Форум программистов, компьютерный форум, киберфорум
Наши страницы
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
Gokusa
Заблокирован
1

выборка из двух схожим регистров накопления

27.11.2013, 02:18. Просмотров 1489. Ответов 9
Метки нет (Все метки)

есть два регистра накопления, у каждого из них примерно одинаковые поля, только в один пишется допустим номенклатура поставленная из-за рубежа, а в другой вся остальная.
номенклатура при этом может быть одна и та же, задача - объединить и сгруппировать данные из этих двух регистров в одном запросе.
что использовать?
полное соединение?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.11.2013, 02:18
Ответы с готовыми решениями:

Сделать запрос на объединение двух регистров накопления
Здравствуйте! Есть 2 регистра накопления: ДвиженияТоваровСЗ и...

Выборка из регистра накопления
Вообщем надо сделать конфигурацию для библиотеки. Надо сделать так чтобы на...

Таблицы итогов регистров накопления в 8.3
Готовлюсь к Профессионалу по платформе 8.3, и в 12-й главе много вопросов,...

Как извлечь Измерение "Номенклатура" из Регистров накопления?
Всем привет! Помогите плиз с извлечением данных из РегистраНакопления. Не до...

Медленно выполняется выборка регистров
Здравствуйте. После установки ядра 8.3 стал ОЧЕНЬ медленно работать отчет у...

9
Dethmontt
Модератор
Эксперт 1С
2643 / 2436 / 415
Регистрация: 10.03.2011
Сообщений: 8,699
Записей в блоге: 1
Завершенные тесты: 1
27.11.2013, 02:57 2
Цитата Сообщение от Gokusa Посмотреть сообщение
что использовать?
полное соединение?
Смотря какая таблица нужна на выходе
0
Gokusa
Заблокирован
27.11.2013, 03:14  [ТС] 3
нужна таблица содержащая всю номенклатуру, содержащуюся в обоих таблицах.
правильной ли будет конструкция типа такой
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
ВЫБРАТЬ
    РегистрыПоПеремещениюТоваров.Номенклатура,
    РегистрыПоПеремещениюТоваров.ТипПодразделения,
    РегистрыПоПеремещениюТоваров.Склады,
    РегистрыПоПеремещениюТоваров.НачальныйОстаток,
    РегистрыПоПеремещениюТоваров.КонечныйОстаток,
    РегистрыПоПеремещениюТоваров.Оборот,
    РегистрыПоПеремещениюТоваров.Приход,
    РегистрыПоПеремещениюТоваров.Расход
ИЗ
    (ВЫБРАТЬ
        ЕСТЬNULL(ТоварыНаСкладах_ЕСОстаткиИОбороты.Номенклатура, ТоварыНаСкладах_Картон_ЕС_С_ПодраздОстаткиИОбороты.Номенклатура) КАК Номенклатура,
        ВЫБОР
            КОГДА ТоварыНаСкладах_ЕСОстаткиИОбороты.Номенклатура = NULL
                ТОГДА ТоварыНаСкладах_Картон_ЕС_С_ПодраздОстаткиИОбороты.ТипПодразделения
            ИНАЧЕ ТоварыНаСкладах_ЕСОстаткиИОбороты.ТипПодразделения
        КОНЕЦ КАК ТипПодразделения,
        ВЫБОР
            КОГДА ТоварыНаСкладах_ЕСОстаткиИОбороты.Номенклатура = NULL
                ТОГДА ТоварыНаСкладах_Картон_ЕС_С_ПодраздОстаткиИОбороты.Склад
            ИНАЧЕ ТоварыНаСкладах_ЕСОстаткиИОбороты.Склад
        КОНЕЦ КАК Склады,
        ВЫБОР
            КОГДА ТоварыНаСкладах_ЕСОстаткиИОбороты.Номенклатура = NULL
                ТОГДА ТоварыНаСкладах_Картон_ЕС_С_ПодраздОстаткиИОбороты.КоличествоНачальныйОстаток
            ИНАЧЕ ТоварыНаСкладах_ЕСОстаткиИОбороты.КоличествоНачальныйОстаток
        КОНЕЦ КАК НачальныйОстаток,
        ВЫБОР
            КОГДА ТоварыНаСкладах_ЕСОстаткиИОбороты.Номенклатура = NULL
                ТОГДА ТоварыНаСкладах_Картон_ЕС_С_ПодраздОстаткиИОбороты.КоличествоКонечныйОстаток
            ИНАЧЕ ТоварыНаСкладах_ЕСОстаткиИОбороты.КоличествоКонечныйОстаток
        КОНЕЦ КАК КонечныйОстаток,
        ВЫБОР
            КОГДА ТоварыНаСкладах_ЕСОстаткиИОбороты.Номенклатура = NULL
                ТОГДА ТоварыНаСкладах_Картон_ЕС_С_ПодраздОстаткиИОбороты.КоличествоОборот
            ИНАЧЕ ТоварыНаСкладах_ЕСОстаткиИОбороты.КоличествоОборот
        КОНЕЦ КАК Оборот,
        ВЫБОР
            КОГДА ТоварыНаСкладах_ЕСОстаткиИОбороты.Номенклатура = NULL
                ТОГДА ТоварыНаСкладах_Картон_ЕС_С_ПодраздОстаткиИОбороты.КоличествоПриход
            ИНАЧЕ ТоварыНаСкладах_ЕСОстаткиИОбороты.КоличествоПриход
        КОНЕЦ КАК Приход,
        ВЫБОР
            КОГДА ТоварыНаСкладах_ЕСОстаткиИОбороты.Номенклатура = NULL
                ТОГДА ТоварыНаСкладах_Картон_ЕС_С_ПодраздОстаткиИОбороты.КоличествоРасход
            ИНАЧЕ ТоварыНаСкладах_ЕСОстаткиИОбороты.КоличествоРасход
        КОНЕЦ КАК Расход
    ИЗ
        РегистрНакопления.ТоварыНаСкладах_Картон_ЕС_С_Подразд.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, , , ) КАК ТоварыНаСкладах_Картон_ЕС_С_ПодраздОстаткиИОбороты
            ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах_ЕС.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, , , ) КАК ТоварыНаСкладах_ЕСОстаткиИОбороты
            ПО ТоварыНаСкладах_Картон_ЕС_С_ПодраздОстаткиИОбороты.Номенклатура = ТоварыНаСкладах_ЕСОстаткиИОбороты.Номенклатура
    
    СГРУППИРОВАТЬ ПО
        ЕСТЬNULL(ТоварыНаСкладах_ЕСОстаткиИОбороты.Номенклатура, ТоварыНаСкладах_Картон_ЕС_С_ПодраздОстаткиИОбороты.Номенклатура),
        ВЫБОР
            КОГДА ТоварыНаСкладах_ЕСОстаткиИОбороты.Номенклатура = NULL
                ТОГДА ТоварыНаСкладах_Картон_ЕС_С_ПодраздОстаткиИОбороты.ТипПодразделения
            ИНАЧЕ ТоварыНаСкладах_ЕСОстаткиИОбороты.ТипПодразделения
        КОНЕЦ,
        ВЫБОР
            КОГДА ТоварыНаСкладах_ЕСОстаткиИОбороты.Номенклатура = NULL
                ТОГДА ТоварыНаСкладах_Картон_ЕС_С_ПодраздОстаткиИОбороты.Склад
            ИНАЧЕ ТоварыНаСкладах_ЕСОстаткиИОбороты.Склад
        КОНЕЦ,
        ВЫБОР
            КОГДА ТоварыНаСкладах_ЕСОстаткиИОбороты.Номенклатура = NULL
                ТОГДА ТоварыНаСкладах_Картон_ЕС_С_ПодраздОстаткиИОбороты.КоличествоНачальныйОстаток
            ИНАЧЕ ТоварыНаСкладах_ЕСОстаткиИОбороты.КоличествоНачальныйОстаток
        КОНЕЦ,
        ВЫБОР
            КОГДА ТоварыНаСкладах_ЕСОстаткиИОбороты.Номенклатура = NULL
                ТОГДА ТоварыНаСкладах_Картон_ЕС_С_ПодраздОстаткиИОбороты.КоличествоКонечныйОстаток
            ИНАЧЕ ТоварыНаСкладах_ЕСОстаткиИОбороты.КоличествоКонечныйОстаток
        КОНЕЦ,
        ВЫБОР
            КОГДА ТоварыНаСкладах_ЕСОстаткиИОбороты.Номенклатура = NULL
                ТОГДА ТоварыНаСкладах_Картон_ЕС_С_ПодраздОстаткиИОбороты.КоличествоОборот
            ИНАЧЕ ТоварыНаСкладах_ЕСОстаткиИОбороты.КоличествоОборот
        КОНЕЦ,
        ВЫБОР
            КОГДА ТоварыНаСкладах_ЕСОстаткиИОбороты.Номенклатура = NULL
                ТОГДА ТоварыНаСкладах_Картон_ЕС_С_ПодраздОстаткиИОбороты.КоличествоПриход
            ИНАЧЕ ТоварыНаСкладах_ЕСОстаткиИОбороты.КоличествоПриход
        КОНЕЦ,
        ВЫБОР
            КОГДА ТоварыНаСкладах_ЕСОстаткиИОбороты.Номенклатура = NULL
                ТОГДА ТоварыНаСкладах_Картон_ЕС_С_ПодраздОстаткиИОбороты.КоличествоРасход
            ИНАЧЕ ТоварыНаСкладах_ЕСОстаткиИОбороты.КоличествоРасход
        КОНЕЦ) КАК РегистрыПоПеремещениюТоваров
Добавлено через 1 минуту
ну т.е. сначала сделали полное соединение, потом проверяем если номенклатура из первой обнулилась, то берем в склад значение второго склада, и так далее с остальными полями.
0
Dethmontt
Модератор
Эксперт 1С
2643 / 2436 / 415
Регистрация: 10.03.2011
Сообщений: 8,699
Записей в блоге: 1
Завершенные тесты: 1
27.11.2013, 03:28 4
бррр.... Ужс

Добавлено через 3 минуты
Примерно как то так
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    РегистрыПоПеремещениюТоваров.Номенклатура КАК Номенклатура,
    РегистрыПоПеремещениюТоваров.ТипПодразделения,
    РегистрыПоПеремещениюТоваров.Склады,
    РегистрыПоПеремещениюТоваров.НачальныйОстаток,
    РегистрыПоПеремещениюТоваров.КонечныйОстаток,
    РегистрыПоПеремещениюТоваров.Оборот,
    РегистрыПоПеремещениюТоваров.Приход,
    РегистрыПоПеремещениюТоваров.Расход
ИЗ
   ТоварыНаСкладах_Картон_ЕС_С_ПодраздОстаткиИОбороты КАК РегистрыПоПеремещениюТоваров
 
ОБЪЕДИНИТЬ ВСЕ
 
    Регистр2.Номенклатура,
    Регистр2.ТипПодразделения,
    Регистр2.Склады,
    Регистр2.НачальныйОстаток,
    Регистр2.КонечныйОстаток,
    Регистр2.Оборот,
    Регистр2.Приход,
    Регистр2.Расход
ИЗ ТоварыНаСкладах_ЕСОстаткиИОбороты КАК Регистр2
Добавлено через 2 минуты
В первом запросе желательно проставить имена полям

Добавлено через 2 минуты
P.S. В первом и втором запросе должно быть одинаковое количество полей!!!
Порядок следования полей во втором запросе должен совпадать с порядком в первом запросе!!!
0
Gokusa
Заблокирован
27.11.2013, 03:29  [ТС] 5
блин ))точно
0
Dethmontt
Модератор
Эксперт 1С
2643 / 2436 / 415
Регистрация: 10.03.2011
Сообщений: 8,699
Записей в блоге: 1
Завершенные тесты: 1
27.11.2013, 03:30 6
З.З.Ы. Читайте про объединения запросов, литературы на этом форуме больше чем предостаточно!
0
Gokusa
Заблокирован
27.11.2013, 03:30  [ТС] 7
если будет разное количество полей, тогда делать через ЕстьNull?
0
Dethmontt
Модератор
Эксперт 1С
2643 / 2436 / 415
Регистрация: 10.03.2011
Сообщений: 8,699
Записей в блоге: 1
Завершенные тесты: 1
27.11.2013, 03:33 8
Спр.Поле1 КАК Поле1,
Спр.Поле2 КАК Поле2,
Спр.Поле3 КАК Поле3
ИЗ Спр

ОБЪЕДЕНИТЬ ВСЕ

Спр1.Поле1,
Спр1.Поле2,
NULL
ИЗ Спр1

Добавлено через 1 минуту
Ну или вместо нула

КАК Поле1,
Спр.Поле2 КАК Поле2,
Спр.Поле3 КАК Поле3
ИЗ Спр

ОБЪЕДЕНИТЬ ВСЕ

Спр1.Поле1,
Спр1.Поле2,
"Абра кадабра"
ИЗ Спр1

на ваш вкус...
1
OrkVasya
о_____О
Эксперт 1С
221 / 221 / 36
Регистрация: 19.11.2010
Сообщений: 1,061
Завершенные тесты: 1
27.11.2013, 09:06 9
И на тему
"КОГДА блаблабла = NULL"

приведу копипасту с другого форума:

" любая операция сравнения (любого вида сравнения) со значением NULL в результате всегда дает логическое значение ЛОЖЬ. Всегда и независимо ни от чего." © Леонов А.

Если интересно, вот эта тема.
0
Dethmontt
Модератор
Эксперт 1С
2643 / 2436 / 415
Регистрация: 10.03.2011
Сообщений: 8,699
Записей в блоге: 1
Завершенные тесты: 1
27.11.2013, 13:27 10
Ну логично наверное, для чего тогда isnull() придумано...
0
27.11.2013, 13:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.11.2013, 13:27

Отчет СКД: получение данных из двух регистров накопления, неверные суммы результата запроса
День добрый, я здесь,так как это последний фронт. Пишу внешний отчетик на...

Выборка по схожим названиям
Нужно вытащить варианты из БД по названию, которое ввел пользователь в поле....

Вывод на экран двоичного содержимого двух регистров (ввести значения этих регистров требуется с клавиатуры)
требуется разработать программу вывода на экран двоичного содержимого двух...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru