Задача по СКД на соединение двух таблиц.

1. fixin 4276 28.11.12 12:26 Сейчас в теме
Нужно написать пример обработки
Есть две таблицы значений.

В СКД наборы данных - таблицы значений (не запросы):

ТЗ: Колонки: Склад, Сумма
ТЗ2: Колонки: Склад, Номенклатура, Сумма2

Склад, Номенклатура - для простоты тип строка, Сумма - тип число.

ТЗ2 соединено с ТЗ по полю Склад(все записи ТЗ и только имеющиеся записи ТЗ2).

Нужно на 1С81 написать пример отчета по СКД с небольшими демо-данными (десяток тестовых строк в таблицах достаточно).

Отчет должен иметь одну колонку Сумма.
Первая группировка - по Складу. В первой группировке должна выводиться сумма из ТЗ.
Вторая группировка - по Склад + Номенклатура. Должны выводиться записи из ТЗ2 и сумма из ТЗ2.
Хочу заметить, что итог по Складу не равен итогу по детальным записям ТЗ2!!!! В этом вся сложность! И колонка должна быть одна.

Желательно сделать все средтствами СКД, без изменения Макета финальной СКД, если нужно менять Макет, то может быть нужно объяснить мне как это делать.


В помощь код по выводу СКД из макета СКД:

	СКД = ПолучитьМакет("Макет");
	Компоновщик = Новый КомпоновщикНастроекКомпоновкиДанных;
	Компоновщик.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СКД));
	Компоновщик.ЗагрузитьНастройки(СКД.НастройкиПоУмолчанию);
	
	СкомпоноватьВТабличныйДокумент(ТабДок, СКД, Компоновщик, Новый Структура("ТЗ, ТЗ2", ТЗ, ТЗ2));


Функция СкомпоноватьВТабличныйДокумент(ТабДок, СхемаКомпоновкиДанных, КомпоновщикНастроек, ВнешниеНаборыДанных) Экспорт
	
	КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
	МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки);
	
	ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
	Если ВнешниеНаборыДанных.Количество() > 0 Тогда
		ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных);
	Иначе
		ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки);
	КонецЕсли;
	
	ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
	ПроцессорВывода.УстановитьДокумент(ТабДок);
	ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);

КонецФункции

Показать
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
4. tolyan_ekb 80 29.11.12 10:30 Сейчас в теме
(3) fixin, отправил в личку
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. tolyan_ekb 80 29.11.12 07:48 Сейчас в теме

ТЗ: Колонки: Склад, Сумма
ТЗ2: Колонки: Склад, Номенклатура, Сумма2.
(1)

ТЗ2 соединено с ТЗ по полю Номенклатура (все записи ТЗ и только имеющиеся записи ТЗ2).
(1)
Может быть я чего-то не понимаю, но как их по этому полю связать, если Номенклатура только в ТЗ2 есть?
Можно приложить заполненный пример таблиц еще и ожидаемый результат?
3. fixin 4276 29.11.12 08:46 Сейчас в теме
Можно. Все тривиально
ТЗ:
Москва 100
Питер 200
ТЗ2:
Москва Пиво 10
Москва Водка 20
Питер Пиво 30
Питер Квас 40

Результат:
Москва 100
-- Пиво 10
-- Водка 20
Питер 200
-- Пиво 30
-- Квас 40

Т.е. соединение по полю Склад, конечно же. Ошибка в ТЗ, счас поправлю.
4. tolyan_ekb 80 29.11.12 10:30 Сейчас в теме
(3) fixin, отправил в личку
5. fixin 4276 29.11.12 12:40 Сейчас в теме
(4) сейчас проверю, если все ок, закрою вопрос и отдам см
6. fixin 4276 29.11.12 13:50 Сейчас в теме
Ок, задача выполнена. Че-то я затупил сам в одном месте, ведь так же и хотел решать. ;-)
Ладно, получай заслуженные СМ. ;-)
Прикрепленные файлы:
ОтчетНаСКД.erf
tolyan_ekb; +1 Ответить
7. tolyan_ekb 80 29.11.12 13:57 Сейчас в теме
(6) fixin, cпасибо за тренировку моих мозгов )) Думал подвох для "гуру" будет, но вроде все обошлось )) Странно что никто другой не взялся. Или были желающие?
8. fixin 4276 29.11.12 14:49 Сейчас в теме
скорее у меня вывих случился. Посмотрел твой код, понял, что все делаю правильно и нашел ошибку у себя в другом месте, не в СКД. Оказывается, некоторых колонок не хватало в исходной ТЗ. ;-)
Спасибо
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот