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

23.11.24

Разработка - СКД

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

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

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

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

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

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

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

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

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

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

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

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

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

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

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

12000 руб.

02.09.2020    169339    937    403    

905

СКД Программист Платформа 1С v8.3 Система компоновки данных Бесплатно (free)

СКД – инструмент, на базе которого в современных конфигурациях реализованы практически все отчеты. СКД используется в динамических списках, печатных формах и универсальных механизмах. Если построить простейший отчет может каждый разработчик, то с нюансами знакомы далеко не все. Расскажем о неочевидных на первый взгляд приемах, способных значительно повысить качество отчетов.

24.12.2024    5431    Akcium    13    

40

Запросы СКД Программист Стажер Система компоновки данных Россия Бесплатно (free)

Часто при разработке отчетов в СКД возникает ситуация, когда не совсем понятно, почему отчет выводит не те данные, которые нужны, либо не выводит вовсе. Возникает потребность увидеть конечный запрос, который формирует СКД. Как это сделать, рассмотрим в этой статье.

15.05.2024    10224    implecs_team    6    

48

Инструментарий разработчика СКД Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

По выбранной схеме компоновки данных генерирует программный код, который генерирует СКД, аналогичную исходной схеме. Есть дополнительные инструменты для просмотра дерева схемы, сравнение исходной схемы и полученной по коду, а также сравнение изменений в сгенерированном коде для исходной схемы и для измененной.

3 стартмани

05.02.2024    7854    57    obmailok    21    

80

Запросы СКД Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Есть список полей в виде текста, или запрос - закидываем в набор СКД.

1 стартмани

31.01.2024    3330    6    Yashazz    1    

34

СКД WEB-интеграция Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Долгое время поддерживаю web-портал, в котором появилась необходимость создавать отчеты. Просмотрев различные фреймворки на js, я решил сделать свое решение, которое позволяло бы быстро разрабатывать и добавлять новые отчеты на web-портал.

2 стартмани

11.12.2023    11464    25    John_d    25    

125

СКД Программист Платформа 1С v8.3 Система компоновки данных Конфигурации 1cv8 Бесплатно (free)

Рассмотрим еще не получивший широкого распространения способ работы с внешними данным в СКД. В процессе обсуждения работы с СКД выяснилось, что многие не знакомы со способом помещения туда временной таблицы, полученной предварительно. Статья будет полезна разработчикам, знакомым с программным созданием СКД.

05.12.2023    8891    PROSTO-1C    15    

69
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Synoecium 786 01.09.17 11:15 Сейчас в теме
Проще затолкать в шаблон текст формирования СКД и подставлять на CTRL+Q в нужное место, пользы от этих знаний мало, имхо.
может кому пригодится:
СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ВнешниеНаборыДанных = Новый Структура;
ВнешниеНаборыДанных.Вставить("ВнешнийНаборДанных1",ВнешнийНаборДанных1);
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки);
Результат = ЭлементыФормы.Результат;
Результат.Очистить();
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(Результат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
Показать
OzzY; HAMMER_59; SagittariusA; bondaleksey; ZdorovieIT; sansys; user712426; ipoluhin; Screabes; TeMochkiN; Светлый ум; Артано; Fatenm; dabu-dabu; MonteCriZto; Merkalov; zhenianik; talych; scp00002; maxst22; Serg O.; Gadzhalik; purgin; Marxxx; RodinMax; Drivingblind; vz1987; Denis S; AneJIbcuH; akR00b; torbeev; docerman; RailMen; ice-net; rpgshnik; frkbvfnjh; user705522_constantin_h; portwein; igormiro; vano-ekt; Natain14; allga383; Denis211990; Deslime; jaroslav.h; Serdgio; sergelemon; emakei; Бубузяка; monkbest; Infector; Irwin; amoarok; EMelihoff; jeyrico; echo77; rayastar; Designer1C; bubus; CyberCerber; корум; +61 Ответить
2. smirnov.es 21 01.09.17 11:35 Сейчас в теме
Запоминание может пригодиться разве что на собеседованиях, и то в очень редких случаях.
Скопировать из заметки или вообще из шаблона, как (1) предлагает, еще и быстрее в несколько раз, чем руками набивать
rpgshnik; jeyrico; корум; +3 Ответить
7. dbachinsky 354 01.09.17 15:04 Сейчас в теме
(1) А если нет макета СКД и его тоже нужно создать программно на основании текста запроса или таблицы значений, тогда стоит добавить в шаблон программное формирование схемы компоновки данных https://infostart.ru/public/575659/
ipoluhin; sergelemon; Светлый ум; +3 Ответить
8. unichkin 1583 01.09.17 16:03 Сейчас в теме
(1) А по мне польза самая что ни на есть очевидная.. Сам механизм становится более прозрачен, когда все это в голове укладываешь. Принципиально для СКД шаблоны не пользую - алгоритм небольшой и простенький, и егшо воспроизведение помогает держать себя "в форме".
VoVo; Disly; kyzen1c; IngaBal13; serverstar; denis83; maxst22; tinkerbell; broo; Makushimo; docerman; TreeDogNight; lmm; Batman; monkbest; +15 Ответить
3. Altair777 647 01.09.17 11:36 Сейчас в теме
А зачем вообще что-то запоминать?
Создай в Гуглдоке файлик и пиши туда свою собственную энциклопедию :-)
А быстрее просто похухлить, или по ключевому слову в типовой найти.
sapervodichka; +1 1 Ответить
4. brr 184 01.09.17 12:23 Сейчас в теме
Зачем шаблон, функцию в общий модуль
rpgshnik; zqzq; jeyrico; +3 Ответить
5. пользователь 01.09.17 12:35
Сообщение было скрыто модератором.
...
6. user623969_dusa 01.09.17 13:03 Сейчас в теме
"что любой неопытный в СКД программист" боишься такие статья открывать и признаваться что ты неопытный в СКД программист))
serverstar; +1 Ответить
21. serverstar 69 10.02.22 15:19 Сейчас в теме
9. пользователь 01.09.17 19:52
Сообщение было скрыто модератором.
...
10. echo77 1913 01.09.17 20:35 Сейчас в теме
Вот в этой публикации https://infostart.ru/public/80164/ приведена процедура(которую надо немного подправить), которая все делает, плюс она универсальная, т.е. может заполнять ТабличныйДокумент, ТаблицуЗначений, ДеревоЗначений
serverstar; frkbvfnjh; lmm; Светлый ум; zqzq; +5 Ответить
11. Бубузяка 62 06.09.17 08:47 Сейчас в теме
Плюсанул за оригинальность, но использую шаблоны.
serverstar; Артано; +2 Ответить
12. debova 06.09.17 11:55 Сейчас в теме
Подскажите пожалуйста, может кто сталкивался.
В 8.3 вывожу макет через данный код на сервере, при попытке "расшифровать" данные на клиенте, отображается только "индекс" (цифра). Получается что "ДанныеРасшифровки" сохраняются только на сервере. И как их тогда получить кликнув мышкой на форме в Результате?
13. pasha_2001 27.12.17 09:36 Сейчас в теме
Для получения расшифровки необходимо прописать код в событии ОбработкаРасшифровки
14. acsent 1204 09.01.18 10:39 Сейчас в теме
на гисте сохранил кусок кода и когда нужно подглядываешь
https://gist.github.com/a-sitnikov/0be8665d52bfc18f563d4d77a827034d
IvanGorbunov; agdam_m; +2 Ответить
15. AlX0id 11.01.18 08:23 Сейчас в теме
А еще лучше - сделать функцию-обертку - ВыполнитьКомпоновку - туда передать схему, структуру параметров и отборов (ну или настроенный компоновщик сразу). И ее из обработки дергать. Или из шаблона - на вкус и цвет.
16. tinkerbell 06.03.18 14:32 Сейчас в теме
17. kudim 07.05.18 15:37 Сейчас в теме
Респект за старания. про схему не упомянул. что и откуда
18. timeforlive 16 10.07.21 13:50 Сейчас в теме
Способ полезен на экзамене 1С специалист. Спасибо, автор.
п.5 можно не запоминать, в синтакс-помощнике легко находится (платформа 8.3.18)

в п.6 я бы поставил такой код:
	КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
	КомпоновщикНастроек.ЗагрузитьНастройки(Макет.НастройкиПоУмолчанию);
	КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Документ", Документ);
		
	КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
	МакетКомпоновки = КомпоновщикМакета.Выполнить(Макет, КомпоновщикНастроек);
Прикрепленные файлы:
19. unichkin 1583 10.07.21 17:36 Сейчас в теме
(18)
КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Документ", Документ);

- а это зачем?
20. unichkin 1583 10.07.21 17:42 Сейчас в теме
(18)
КомпоновщикНастроек.ЗагрузитьНастройки(Макет.НастройкиПоУмолчанию);


В компоновщик имеет смысл загружать только модифицированные настройки. Эта строка лишь может ввести кого-то в лишние поиски на тему "а зачем так было сделано?".
user1835472; +1 Ответить
Оставьте свое сообщение