Задача по СКД на соединение двух таблиц.
Нужно написать пример обработки
Есть две таблицы значений.
В СКД наборы данных - таблицы значений (не запросы):
ТЗ: Колонки: Склад, Сумма
ТЗ2: Колонки: Склад, Номенклатура, Сумма2
Склад, Номенклатура - для простоты тип строка, Сумма - тип число.
ТЗ2 соединено с ТЗ по полю Склад(все записи ТЗ и только имеющиеся записи ТЗ2).
Нужно на 1С81 написать пример отчета по СКД с небольшими демо-данными (десяток тестовых строк в таблицах достаточно).
Отчет должен иметь одну колонку Сумма.
Первая группировка - по Складу. В первой группировке должна выводиться сумма из ТЗ.
Вторая группировка - по Склад + Номенклатура. Должны выводиться записи из ТЗ2 и сумма из ТЗ2.
Хочу заметить, что итог по Складу не равен итогу по детальным записям ТЗ2!!!! В этом вся сложность! И колонка должна быть одна.
Желательно сделать все средтствами СКД, без изменения Макета финальной СКД, если нужно менять Макет, то может быть нужно объяснить мне как это делать.
В помощь код по выводу СКД из макета СКД:
Есть две таблицы значений.
В СКД наборы данных - таблицы значений (не запросы):
ТЗ: Колонки: Склад, Сумма
ТЗ2: Колонки: Склад, Номенклатура, Сумма2
Склад, Номенклатура - для простоты тип строка, Сумма - тип число.
ТЗ2 соединено с ТЗ по полю Склад(все записи ТЗ и только имеющиеся записи ТЗ2).
Нужно на 1С81 написать пример отчета по СКД с небольшими демо-данными (десяток тестовых строк в таблицах достаточно).
Отчет должен иметь одну колонку Сумма.
Первая группировка - по Складу. В первой группировке должна выводиться сумма из ТЗ.
Вторая группировка - по Склад + Номенклатура. Должны выводиться записи из ТЗ2 и сумма из ТЗ2.
Хочу заметить, что итог по Складу не равен итогу по детальным записям ТЗ2!!!! В этом вся сложность! И колонка должна быть одна.
Желательно сделать все средтствами СКД, без изменения Макета финальной СКД, если нужно менять Макет, то может быть нужно объяснить мне как это делать.
В помощь код по выводу СКД из макета СКД:
СКД = ПолучитьМакет("Макет");
Компоновщик = Новый КомпоновщикНастроекКомпоновкиДанных;
Компоновщик.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СКД));
Компоновщик.ЗагрузитьНастройки(СКД.НастройкиПоУмолчанию);
СкомпоноватьВТабличныйДокумент(ТабДок, СКД, Компоновщик, Новый Структура("ТЗ, ТЗ2", ТЗ, ТЗ2));
Функция СкомпоноватьВТабличныйДокумент(ТабДок, СхемаКомпоновкиДанных, КомпоновщикНастроек, ВнешниеНаборыДанных) Экспорт
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки);
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
Если ВнешниеНаборыДанных.Количество() > 0 Тогда
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных);
Иначе
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки);
КонецЕсли;
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ТабДок);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
КонецФункции
ПоказатьПо теме из базы знаний
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
ТЗ: Колонки: Склад, Сумма
ТЗ2: Колонки: Склад, Номенклатура, Сумма2.
ТЗ2 соединено с ТЗ по полю Номенклатура (все записи ТЗ и только имеющиеся записи ТЗ2).
Может быть я чего-то не понимаю, но как их по этому полю связать, если Номенклатура только в ТЗ2 есть?
Можно приложить заполненный пример таблиц еще и ожидаемый результат?
Можно. Все тривиально
ТЗ:
Москва 100
Питер 200
ТЗ2:
Москва Пиво 10
Москва Водка 20
Питер Пиво 30
Питер Квас 40
Результат:
Москва 100
-- Пиво 10
-- Водка 20
Питер 200
-- Пиво 30
-- Квас 40
Т.е. соединение по полю Склад, конечно же. Ошибка в ТЗ, счас поправлю.
ТЗ:
Москва 100
Питер 200
ТЗ2:
Москва Пиво 10
Москва Водка 20
Питер Пиво 30
Питер Квас 40
Результат:
Москва 100
-- Пиво 10
-- Водка 20
Питер 200
-- Пиво 30
-- Квас 40
Т.е. соединение по полю Склад, конечно же. Ошибка в ТЗ, счас поправлю.
Ок, задача выполнена. Че-то я затупил сам в одном месте, ведь так же и хотел решать. ;-)
Ладно, получай заслуженные СМ. ;-)
Ладно, получай заслуженные СМ. ;-)
Прикрепленные файлы:
ОтчетНаСКД.erf
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот