Как просто запомнить алгоритм программного вывода в СКД

Программирование - Практика программирования

Порой нужно быстро вывести на экран таблицу значений, используя СКД \ получить данные отчета в таблицу значений.. Несмотря на очевидность алгоритма - раньше мне проще было загуглить программный вывод, благо эта инфа есть везде. Но постепенно понял как его можно быстро вспомнить, и лишний раз ничего не искать. Конечно эта статья не для Гуру :) Но я думаю - что любой неопытный в СКД программист сделает для себя небольшое открытие...

Весь секрет - в том чтобы помнить два слова, и идти с конца. Ну, надо еще чуть-чуть логики..)

1. Прежде всего вспоминаем что СКД выводится каким-то процессором.. Подсказка поможет, если начать набирать "Новый Проц.." и нажать ctrl + Пробел:

2. Процессор вывода соответственно выводит... Но выводит он во что-то и ему надо обяснять во что:

3. При этом для вывода ему также понадобится некий процессор компоновки:

4. Определяем переменную с процессором выше. И уже из подскази процессора компоновки логично что его надо инициализировать:

5. Вот тут запара - нужен некий макет компоновки... Здесь надо вспомнить второе слово - Это КомпоновщикМакетаКомпоновкиДанных, через СП до него не дороешься - по крайней мере я так и не постиг логики - как до этого можно дойти самостоятельно. Идем дальше:

6. В общем-то и все. По всплывающим подсказкам легко догадаться чего-куда подсовывать. Настройки - это либо настройки компоновщика настроек отчета, полученные с помощью метода ПолучитьНастройки(), либо настройки самой схемы - Схема.НастройкиПоУмолчанию... Надо еще помнить про тип генератора - если выводим не в табличный документ, а в коллекцию значений - его надо обязательно указывать (при этом процессор вывода тоже должен быть другой - для коллекции значений). Ну и при инициализации процессора компоновки надо помнить про внешние наборы данных - структуру, содержащую объект в том случае если отчет у нас строится по объекту. Вот что в итоге получилось у меня:

КомпМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпМакета.Выполнить(Схема, Схема.НастройкиПоУмолчанию);

ПроцКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцКомпоновки.Инициализировать(МакетКомпоновки);

ПроцВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;

ТабДок = Новый ТабличныйДокумент;
ПроцВывода.УстановитьДокумент(ТабДок);

ПроцВывода.Вывести(ПроцКомпоновки);

Помню как сам все никак не мог запомнить эту последовательность, и вообще "боялся" компоновки, потому что трудно нахрапом "въехать" в этого зверя... Надеюсь кому-нибудь поможет эта запоминалка и на экзамене на спеца можно будет щегольнуть не просто печатной формой, а выведенной через этот замечательный и удобный механизм.

См. также

Комментарии
1. Сергей Лесовой (Synoecium) 268 01.09.17 11:15 Сейчас в теме
Проще затолкать в шаблон текст формирования СКД и подставлять на CTRL+Q в нужное место, пользы от этих знаний мало, имхо.
может кому пригодится:
СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ВнешниеНаборыДанных = Новый Структура;
ВнешниеНаборыДанных.Вставить("ВнешнийНаборДанных1",ВнешнийНаборДанных1);
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки);
Результат = ЭлементыФормы.Результат;
Результат.Очистить();
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(Результат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
Показать
myr4ik07; Serdgio; sergelemon; mrDSide; Бубузяка; monkbest; nytlenc; Infector; Irwin; amoarok; EMelihoff; jeyrico; echo77; rayastar; Designer1C; bubus; CyberCerber; корум; +18 Ответить
2. Евгений Смирнов (smirnov.es) 14 01.09.17 11:35 Сейчас в теме
Запоминание может пригодиться разве что на собеседованиях, и то в очень редких случаях.
Скопировать из заметки или вообще из шаблона, как (1) предлагает, еще и быстрее в несколько раз, чем руками набивать
jeyrico; корум; +2 Ответить
7. Дмитрий Иванов (kambl) 167 01.09.17 15:04 Сейчас в теме
(1) А если нет макета СКД и его тоже нужно создать программно на основании текста запроса или таблицы значений, тогда стоит добавить в шаблон программное формирование схемы компоновки данных https://infostart.ru/public/575659/
sergelemon; Светлый ум; +2 Ответить
8. Роман Уничкин (unichkin) 578 01.09.17 16:03 Сейчас в теме
(1) А по мне польза самая что ни на есть очевидная.. Сам механизм становится более прозрачен, когда все это в голове укладываешь. Принципиально для СКД шаблоны не пользую - алгоритм небольшой и простенький, и егшо воспроизведение помогает держать себя "в форме".
TreeDogNight; lmm; Batman; monkbest; +4 Ответить
3. Альтаир (Altair777) 639 01.09.17 11:36 Сейчас в теме
А зачем вообще что-то запоминать?
Создай в Гуглдоке файлик и пиши туда свою собственную энциклопедию :-)
А быстрее просто похухлить, или по ключевому слову в типовой найти.
4. Brr (brr) 179 01.09.17 12:23 Сейчас в теме
Зачем шаблон, функцию в общий модуль
zqzq; jeyrico; +2 Ответить
6. Андрей (user623969_dusa) 01.09.17 13:03 Сейчас в теме
"что любой неопытный в СКД программист" боишься такие статья открывать и признаваться что ты неопытный в СКД программист))
10. Александр Крынецкий (echo77) 744 01.09.17 20:35 Сейчас в теме
Вот в этой публикации https://infostart.ru/public/80164/ приведена процедура(которую надо немного подправить), которая все делает, плюс она универсальная, т.е. может заполнять ТабличныйДокумент, ТаблицуЗначений, ДеревоЗначений
lmm; Светлый ум; zqzq; +3 Ответить
11. Бубузяка (Бубузяка) 62 06.09.17 08:47 Сейчас в теме
Плюсанул за оригинальность, но использую шаблоны.
12. Е. Д. (debova) 06.09.17 11:55 Сейчас в теме
Подскажите пожалуйста, может кто сталкивался.
В 8.3 вывожу макет через данный код на сервере, при попытке "расшифровать" данные на клиенте, отображается только "индекс" (цифра). Получается что "ДанныеРасшифровки" сохраняются только на сервере. И как их тогда получить кликнув мышкой на форме в Результате?
Оставьте свое сообщение