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

23.11.24

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Вступайте в нашу телеграмм-группу Инфостарт

См. также

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

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

16500 руб.

02.09.2020    248224    1374    421    

1134

Инструментарий разработчика СКД Программист 1С 8.3 Бесплатно (free)

В этой статье представлен СКДБилдер — общий модуль-обёртка над объектной моделью СКД, который сокращает код в 3-4 раза и делает его читаемым.

29.01.2026    5426    297    shapa_pro    25    

66

СКД Программист 1С:Предприятие 8 Бесплатно (free)

Статья написана по результатам проведенного внутреннего обучающего вебинара для разработчиков ГК «СофтБаланс». Если осилить 25 000 знаков - задача для вас непосильная, где-то на бескрайних просторах интернета видео есть (или будет). Но здесь информация точнее. Разберем, чем запрос для СКД принципиально отличается от обычного запроса и как модифицируется в зависимости от настроек. Изучим «базовый рецепт» написания запроса для СКД, сформируем чек-лист. Полезно будет всем – от стажеров до тех. лидов. Всем, кто не снимает галку «автозаполнение» и пишет запросы для отчетов в консоли запросов – читать (вдумчиво) обязательно.

29.10.2025    16521    ovetgana    112    

106

СКД Программист 1С:Предприятие 8 Бесплатно (free)

Описан способ заполнения списка доступных значений для полей наборов данных и параметров в схеме компоновки данных для любых конфигураций (с использованием БСП или без).

01.07.2025    9539    krasnoshchekovpavel    5    

67

СКД Программист Стажер 1С:Предприятие 8 Россия Бесплатно (free)

Несколько способов управления формами выбора параметров и отборов СКД.

10.04.2025    8770    Neti    0    

41

СКД Программист 1С:Предприятие 8 Бесплатно (free)

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

27.02.2025    15772    ovetgana    50    

93

СКД Программист 1С:Предприятие 8 Бесплатно (free)

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

24.12.2024    13353    Akcium    17    

46

СКД Механизмы типовых конфигураций Запросы Программист 1С:Предприятие 8 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x Россия Бесплатно (free)

Работая с типовыми отчетами в конфигурациях «Зарплата и управление персоналом, редакция 3», «Зарплата и кадры государственного учреждения, редакция 3» и подобных, в схемах компоновки данных можно встретить конструкции запросов, которые обращаются к некоторым виртуальным таблицам.

20.08.2024    9879    AlexeyPROSTO_1C    1    

32
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Synoecium 793 01.09.17 11:15 Сейчас в теме
Проще затолкать в шаблон текст формирования СКД и подставлять на CTRL+Q в нужное место, пользы от этих знаний мало, имхо.
может кому пригодится:
СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ВнешниеНаборыДанных = Новый Структура;
ВнешниеНаборыДанных.Вставить("ВнешнийНаборДанных1",ВнешнийНаборДанных1);
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки);
Результат = ЭлементыФормы.Результат;
Результат.Очистить();
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(Результат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
Показать
aairt; OzzY; HAMMER_59; SagittariusA; bondaleksey; ZdorovieIT; sansys; katod1985; 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; top_1c; 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; корум; +62 Ответить
2. smirnov.es 21 01.09.17 11:35 Сейчас в теме
Запоминание может пригодиться разве что на собеседованиях, и то в очень редких случаях.
Скопировать из заметки или вообще из шаблона, как (1) предлагает, еще и быстрее в несколько раз, чем руками набивать
top_1c; jeyrico; корум; +3 Ответить
7. dbachinsky 358 01.09.17 15:04 Сейчас в теме
(1) А если нет макета СКД и его тоже нужно создать программно на основании текста запроса или таблицы значений, тогда стоит добавить в шаблон программное формирование схемы компоновки данных https://infostart.ru/public/575659/
ipoluhin; sergelemon; Светлый ум; +3 Ответить
8. unichkin 1622 01.09.17 16:03 Сейчас в теме
(1) А по мне польза самая что ни на есть очевидная.. Сам механизм становится более прозрачен, когда все это в голове укладываешь. Принципиально для СКД шаблоны не пользую - алгоритм небольшой и простенький, и егшо воспроизведение помогает держать себя "в форме".
user2122965; VoVo; Disly; kyzen1c; IngaBal13; serverstar; denis83; maxst22; tinkerbell; broo; Makushimo; docerman; TreeDogNight; lmm; Batman; monkbest; +16 Ответить
3. Altair777 649 01.09.17 11:36 Сейчас в теме
А зачем вообще что-то запоминать?
Создай в Гуглдоке файлик и пиши туда свою собственную энциклопедию :-)
А быстрее просто похухлить, или по ключевому слову в типовой найти.
sapervodichka; +1 1 Ответить
4. brr 184 01.09.17 12:23 Сейчас в теме
Зачем шаблон, функцию в общий модуль
top_1c; zqzq; jeyrico; +3 Ответить
5. пользователь 01.09.17 12:35
Сообщение было скрыто модератором.
...
6. user623969_dusa 01.09.17 13:03 Сейчас в теме
"что любой неопытный в СКД программист" боишься такие статья открывать и признаваться что ты неопытный в СКД программист))
user659124_s.kostina; serverstar; +2 Ответить
21. serverstar 71 10.02.22 15:19 Сейчас в теме
9. пользователь 01.09.17 19:52
Сообщение было скрыто модератором.
...
10. echo77 1938 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 1207 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 17 10.07.21 13:50 Сейчас в теме
Способ полезен на экзамене 1С специалист. Спасибо, автор.
п.5 можно не запоминать, в синтакс-помощнике легко находится (платформа 8.3.18)

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

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


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