Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Объединение двух отчетов СКД
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Система компоновки данных
bizisoft
Здравствуйте.
1С:Предприятие 8.2 (8.2.19.130) "Альфа-Авто: Автосервис+Автозапчасти, украинская версия 4.1" (4.1.14.01)

Ранее в замен штатного отчета ОстаткиИОбороты товаров (построитель отчетов), сделал свой внешний отчет, но на СКД.
Попробовал на базе полученного отчета, путем замены таблицы на ПартииОстаткиИОбороты - получилось тоже работает как надо.

Встал вопрос объединение этих двух отчетов в один, чтобы при меньших телодвижениях, пользователь мог сопоставить результаты по двум регистрам Остатки и Партии.
Попробовал сделать объединение в самом запросе в ОсновнойСхемеКомпоновкиДанных - не вышло, корежит результирующую таблицу и ерунду выводит.
Тогда решил добавить два набора данных в первом запрос по Остаткам, во втором по Партиям, в закладке связи наборов данных думаю настроить связь между этими наборами, выбрал:
Источник связи: НаборДанных1;
Приемник связи: НаборДанных2
Выражение источник: Регистратор
Выражение приемник: Регистратор

Дальше что делать не знаю, результат выводящийся в работе такой же как если запустить первый отчет.

Нужно помимо данных первого отчета, дополнительно получить данные приход-расход по партиям, это связано с тем, что в процессе работы бывает что документ (пока замечен только Перемещение) по регистру Остатки проводит одно количество, а по регистру Партии проводит другое количество.
Как следствие при проведении последующих документов (перемещения, продаж) выдает ошибку что не распределено по партиям и не проводит.
Причину таких казусов пока выяснить не удалось, единственное на данный момент решение это поиск кривого документа, ручное редактирование количества и перепроведение.
Раньше приходилось искать все перемещения по "проблемному" товару и в каждом смотреть ДвижениеДокумента и сравнивать количество по Остаткам и Партиям.

Подскажите пожалуйста в чем я заблуждаюсь.


 ! 

необходимо зарегистрироваться для просмотра ссылки: 3
 
Bernet
bizisoft @ Сегодня, 16:44 необходимо зарегистрироваться для просмотра ссылки ,
как объединять пробовали? покажите может запрос чтобы было нагляднее. Я бы скорее всего использовал в запросе конструкцию "ОБЪЕДИНИТЬ ВСЕ", получил бы колонки с количеством по партиям и вывел бы их. Для чего играться с объединением наборов данных - это лишние телодвижения, как по мне
bizisoft
Bernet @ Сегодня, 16:52 необходимо зарегистрироваться для просмотра ссылки ,
ВЫБРАТЬ
    ОстаткиТоваровКомпанииОстаткиИОбороты.Период,
    ОстаткиТоваровКомпанииОстаткиИОбороты.Номенклатура,
    ОстаткиТоваровКомпанииОстаткиИОбороты.СкладКомпании,
    ОстаткиТоваровКомпанииОстаткиИОбороты.ХарактеристикаНоменклатуры,
    ОстаткиТоваровКомпанииОстаткиИОбороты.КоличествоНачальныйОстаток,
    ОстаткиТоваровКомпанииОстаткиИОбороты.КоличествоКонечныйОстаток,
    ОстаткиТоваровКомпанииОстаткиИОбороты.КоличествоОборот,
    ОстаткиТоваровКомпанииОстаткиИОбороты.КоличествоПриход,
    ОстаткиТоваровКомпанииОстаткиИОбороты.КоличествоРасход,
    ОстаткиТоваровКомпанииОстаткиИОбороты.Регистратор
ИЗ
    РегистрНакопления.ОстаткиТоваровКомпании.ОстаткиИОбороты(, , Регистратор, Движения, ) КАК ОстаткиТоваровКомпанииОстаткиИОбороты
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровКомпании.ОстаткиИОбороты КАК ПартииТоваровКомпанииОстаткиИОбороты
        ПО ОстаткиТоваровКомпанииОстаткиИОбороты.Номенклатура = ПартииТоваровКомпанииОстаткиИОбороты.Номенклатура

и так пробовал
...
РегистрНакопления.ОстаткиТоваровКомпании.ОстаткиИОбороты(, , Регистратор, Движения, ) КАК ОстаткиТоваровКомпанииОстаткиИОбороты
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровКомпании.ОстаткиИОбороты(, , Регистратор, Движения, ) КАК ПартииТоваровКомпанииОстаткиИОбороты
        ПО ОстаткиТоваровКомпанииОстаткиИОбороты.Номенклатура = ПартииТоваровКомпанииОстаткиИОбороты.Номенклатура
Bernet
bizisoft @ Сегодня, 17:01 необходимо зарегистрироваться для просмотра ссылки ,
Внутреннее соединение вам оставит только те строки, которые есть и в регистре Остатков и в регистре Партий и соответствуют вашему условию соединения (т.е. в данном случае по вашему запросу останутся строки где есть одинаковая номенклатура), остальные в выборку не попадут. Кроме того не вижу чтобы вы в выборку выбирали количество по партиям, раз уж вы хотите их сравнивать то это должны быть отдельные колонки.
попробуйте запрос вида (только замените регистры на ваши):
ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ВложЗапрос.Период КАК Период,
    ВложЗапрос.Регистратор КАК Регистратор,
    ВложЗапрос.Склад,
    ВложЗапрос.Номенклатура,
    ВложЗапрос.ХарактеристикаНоменклатуры,
    СУММА(ВложЗапрос.КоличествоНачальныйОстаток) КАК КоличествоНачальныйОстаток,
    СУММА(ВложЗапрос.КоличествоПриход) КАК КоличествоПриход,
    СУММА(ВложЗапрос.КоличествоРасход) КАК КоличествоРасход,
    СУММА(ВложЗапрос.КоличествоОборот) КАК КоличествоОборот,
    СУММА(ВложЗапрос.КоличествоКонечныйОстаток) КАК КоличествоКонечныйОстаток,
    СУММА(ВложЗапрос.КоличествоНачальныйОстатокПартии) КАК КоличествоНачальныйОстатокПартии,
    СУММА(ВложЗапрос.КоличествоПриходПартии) КАК КоличествоПриходПартии,
    СУММА(ВложЗапрос.КоличествоРасходПартии) КАК КоличествоРасходПартии,
    СУММА(ВложЗапрос.КоличествоОборотПартии) КАК КоличествоОборотПартии,
    СУММА(ВложЗапрос.КоличествоКонечныйОстатокПартии) КАК КоличествоКонечныйОстатокПартии
ИЗ
    (ВЫБРАТЬ
        ТоварыНаСкладахОстаткиИОбороты.Период КАК Период,
        ТоварыНаСкладахОстаткиИОбороты.Регистратор КАК Регистратор,
        ТоварыНаСкладахОстаткиИОбороты.Склад КАК Склад,
        ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
        ТоварыНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
        ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток,
        ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход КАК КоличествоПриход,
        ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход КАК КоличествоРасход,
        ТоварыНаСкладахОстаткиИОбороты.КоличествоОборот КАК КоличествоОборот,
        ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток,
        0 КАК КоличествоНачальныйОстатокПартии,
        0 КАК КоличествоПриходПартии,
        0 КАК КоличествоРасходПартии,
        0 КАК КоличествоОборотПартии,
        0 КАК КоличествоКонечныйОстатокПартии
    ИЗ
        РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Регистратор, , ) КАК ТоварыНаСкладахОстаткиИОбороты
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
        ПартииТоваровНаСкладахОстаткиИОбороты.Период,
        ПартииТоваровНаСкладахОстаткиИОбороты.Регистратор,
        ПартииТоваровНаСкладахОстаткиИОбороты.Склад,
        ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура,
        ПартииТоваровНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры,
        0,
        0,
        0,
        0,
        0,
        ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток,
        ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоПриход,
        ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоРасход,
        ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоОборот,
        ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток
    ИЗ
        РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Регистратор, , ) КАК ПартииТоваровНаСкладахОстаткиИОбороты) КАК ВложЗапрос

СГРУППИРОВАТЬ ПО
    ВложЗапрос.Период,
    ВложЗапрос.Регистратор,
    ВложЗапрос.Склад,
    ВложЗапрос.ХарактеристикаНоменклатуры,
    ВложЗапрос.Номенклатура
sava1
А просто в партиях поставить верхней группировку по Номенклатуре не пробовали - Вы ж получите те-же остатки и обороты.

Пардон. не прочитал до конца.
bizisoft
Благодарю за помощь, вроде работает.
Проверить правильно-ли пока не могу, пока не всплывет косяк распределением по партиям.

Единственно не совсем понял, как возможно обращение к
...
СУММА(ВложЗапрос.КоличествоПриходПартии) КАК КоличествоПриходПартии,
...

если в самом запросе нигде не объявляется
ВложЗапрос.КоличествоПриходПартии

а реквизиты только в таком виде
ВложЗапрос.КоличествоПриход

433.gif
Bernet
bizisoft @ Сегодня, 11:43 необходимо зарегистрироваться для просмотра ссылки ,
он берется из вложенного запроса, все объявления происходят тут:
ВЫБРАТЬ
        ТоварыНаСкладахОстаткиИОбороты.Период КАК Период,
        ТоварыНаСкладахОстаткиИОбороты.Регистратор КАК Регистратор,
        ТоварыНаСкладахОстаткиИОбороты.Склад КАК Склад,
        ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
        ТоварыНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
        ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток,
        ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход КАК КоличествоПриход,
        ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход КАК КоличествоРасход,
        ТоварыНаСкладахОстаткиИОбороты.КоличествоОборот КАК КоличествоОборот,
        ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток,
        0 КАК КоличествоНачальныйОстатокПартии,
        0 КАК КоличествоПриходПартии,
        0 КАК КоличествоРасходПартии,
        0 КАК КоличествоОборотПартии,
        0 КАК КоличествоКонечныйОстатокПартии
    ИЗ
        РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Регистратор, , ) КАК ТоварыНаСкладахОстаткиИОбороты
    
    ОБЪЕДИНИТЬ ВСЕ

Отсюда и берет "КоличествоПриходПартии"
bizisoft
Удалось проверить, как только возникла вышеописанная проблема.
Отчет работает как и было задумано, то что надо.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.