Генератор кода схемы компоновки данных (СКД)

04.02.21

Разработка - Инструментарий разработчика

Формирование кода для программного создания схемы компоновки данных (СКД)

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Генератор кода схемы компоновки данных (СКД):
.epf 20,48Kb ver:1.1
97 1 850 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Иногда встречаются случаи, когда приходится описывать схему компоновки данных при помощи встроенного языка.

Данная обработка позволяет сформировать код по уже имеющейся схеме.

В тонком клиенте доступна загрузка схемы только из файла.

 

 

В толстом клиенте появляется возможность ещё использовать конструктор схемы компоновки данных.

 

В качестве примера генерации кода возьмем схему отчета «_ДемоДинамикаИзмененийФайлов» из демо базы БСП  3.1.3.331

 
 Схема XML

После загрузки схемы в обработку и нажатии кнопки «Сгенерировать код», генерируется код для конфигуратора, который в дальнейшем можно применить при разработке.

 
 Код для конфигуратора

 

Работоспособность обработки проверена на платформе 1С:Предприятие 8.3 (8.3.16.1814), БСП  3.1.3.331

 

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

СКД программное создание генератор кода

См. также

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

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

15500 руб.

02.09.2020    221032    1207    413    

1063

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку одновременно в несколько потоков. А так же автоматически, без непосредственного участия пользователя. Решение в Реестре отечественного ПО

14400 руб.

20.08.2024    45098    248    127    

229

Пакетная печать Печатные формы Инструментарий разработчика Программист 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Библиотека стандартных подсистем Платные (руб)

Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм.

22200 руб.

06.10.2023    28179    74    30    

101

Инструментарий разработчика Нейросети Платные (руб)

Первые попытки разработки на 1С с использованием больших языковых моделей (LLM) могут разочаровать. LLMки сильно галлюцинируют, потому что не знают устройства конфигураций 1С, не знают нюансов синтаксиса. Но если дать им подсказки с помощью MCP, то результат получается кардинально лучше. Далее в публикации: MCP для поиска по метаданым 1С, справке синтакс-помошника и проверки синтаксиса.

9900 руб.

25.08.2025    17028    27    7    

40

Инструментарий разработчика Программист 1С v8.3 Платные (руб)

Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки.

9500 руб.

17.05.2024    40158    146    57    

183

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

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

16000 руб.

10.11.2023    19954    76    39    

92

Инструментарий разработчика WEB-интеграция 1С v8.3 1C v8.2 1C:Бухгалтерия 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x Платные (руб)

Инструмент для генерации OpenApi (Swagger) спецификаций на основании файлов конфигураций 1С. Это консольное и десктопное приложение на языке Rust с полноценным редактором кода, содержащим автозамену и подсвечивание ошибок для быстрого и безошибочного написания документирующего комментария.

18000 руб.

22.11.2024    2734    2    0    

8
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. DitriX 2111 04.02.21 13:23 Сейчас в теме
А на инглише пишет код?
2. Sergspectr 132 04.02.21 13:38 Сейчас в теме
(1) Добрый день. Пока нет, данная опция в планах развития обработки
3. DitriX 2111 04.02.21 15:03 Сейчас в теме
поля кода и хмл можно переделать на monaco, где то тут статья была про это.
4. Sergspectr 132 04.02.21 15:34 Сейчас в теме
5. Dzenn 923 04.02.21 16:57 Сейчас в теме
круто, только не очень понятно зачем ;-)
red80; NoRazum; +2 Ответить
6. Sergspectr 132 04.02.21 17:56 Сейчас в теме
(5) ) Можно использовать как инструмент-помощник для программного создания настроек компоновки данных, условного оформления и т.д.
7. МихаилМ 04.02.21 18:03 Сейчас в теме
чем Ваше решение лучше convertskd
http://1cskd.ru/2013/02/avtomaticheskoe-preobrazovanie-sxemy-skd-v-programmnyj-kod/ ?

похоже она хуже , тк требует предварительной генерации xml схемы
8. Sergspectr 132 04.02.21 18:40 Сейчас в теме
(7) Честно говоря, ранее не смотрел данную обработку. Сейчас бегло изучил, и сложилось первоначальное сугубо личное мнение. Первое что попадает в глаза, это частичная обфускация кода, что соответственно мешает дальнейшим доработкам под свои интересы. Второе это не очень удобная читабельность итогового кода.
Относительно предварительной генерации xml схемы, да в данной обработке нет возможности выбора отчета, а требуется подгружать xml схему, но так же в ней имеется возможность в пользовательском режиме в толстом клиенте создать свою схему и произвести генерацию кода по ней.
9. infosoft-v 1024 04.02.21 22:21 Сейчас в теме
Добрый день. Подскажите пожалуйста адрес этого проекта на GitHub?
10. Sergspectr 132 05.02.21 07:08 Сейчас в теме
(9) Добрый день. На данный момент проект не опубликован на GitHub, возможно в ближайшее время ситуация изменится.
11. sapervodichka 7217 05.02.21 12:57 Сейчас в теме
12. Sergspectr 132 05.02.21 13:05 Сейчас в теме
(11) Пожалуйста. Надеюсь будет полезна в работе.
user1346935; +1 Ответить
13. John_d 6044 07.02.21 19:58 Сейчас в теме
14. Sergspectr 132 08.02.21 07:39 Сейчас в теме
15. Бубузяка 62 08.02.21 10:17 Сейчас в теме
Конечно, плюс. Делать такие операции приходится не часто, а писать инструмент лениво.
16. Бубузяка 62 08.02.21 10:37 Сейчас в теме
Ошибка при генерации кода:
Поле объекта не обнаружено (СвязиНаборовДанных)
{ВнешняяОбработка.ГенераторКодаСКД.Форма.Форма.Форма(824)}:		СтруктураКода.СвязиНаборовДанных.Добавить(КодРазбора.ПолучитьТекст());
{ВнешняяОбработка.ГенераторКодаСКД.Форма.Форма.Форма(113)}:	СгенерироватьКодНаСервере();

Видимо, иногда, в "СтруктураКода.СвязиНаборовДанных" СвязиНаборовДанных - структура.
Схема, вызывающая ошибку в файле.
Прикрепленные файлы:
1.xml
17. Sergspectr 132 08.02.21 11:13 Сейчас в теме
(16) Спасибо за сообщение.
Закомментируйте пожалуйста строку 824 в модуле формы.
18. kirill_sh 2 12.02.21 19:28 Сейчас в теме
У вас вся схема разбирается или только часть?
19. Sergspectr 132 13.02.21 14:52 Сейчас в теме
(18) Не затрагиваются макеты и вложенные схемы. Как вариант можете выслать xml схему отчета, созданную в демо базе БСП, в ответ вышлю код сформированный обработкой.
20. kirill_sh 2 15.02.21 10:24 Сейчас в теме
(19) я спрашиваю вот из-за этого
1 - скрин со схемой, где есть параметры
2 - обработка по кнопке "сгенерировать код"

кусок схемы на 1 скрине не преобразуется в код?
Прикрепленные файлы:
21. Sergspectr 132 15.02.21 12:35 Сейчас в теме
(20) Спасибо что нашли данный нюанс. На данный момент не производиться заполнение доступных значений параметра. Данная возможность добавлена в план разработки.
22. Sergspectr 132 15.02.21 13:17 Сейчас в теме
(20) Можно добавить требуемый функционал (не дожидаясь новой версии) добавив следующий код:
1. В цикл процедуры РазборПараметров (строка 1100) добавляем следующий код:
		
		ДоступныеЗначенияПараметра = СтрокаПараметра.ПолучитьДоступныеЗначения(); 
		
		Если Не ДоступныеЗначенияПараметра = Неопределено Тогда
			
			КодРазбора.ДобавитьСтроку("");
			КодРазбора.ДобавитьСтроку("//Доступные значения для параметра - "+СтрокаПараметра.Имя);
			
			КодРазбора.ДобавитьСтроку("ДоступныеЗначенияПараметра = Новый СписокЗначений;");
			
			Для каждого ЗначениеПараметра Из ДоступныеЗначенияПараметра Цикл
				КодРазбора.ДобавитьСтроку("ДоступныеЗначенияПараметра.Добавить("+ПолучитьЗначениеДляКонфигуратора(ЗначениеПараметра.Значение)+","+СформироватьТекстДляКонфигуратора(ЗначениеПараметра.Представление)+");");
			КонецЦикла;
			
			КодРазбора.ДобавитьСтроку("ПараметрСхемы.УстановитьДоступныеЗначения(ДоступныеЗначенияПараметра);");
			
		КонецЕсли;
		
		СтруктураМассива.Вставить("Параметры_ДоступныеЗначения",КодРазбора.ПолучитьТекст());
		КодРазбора.Очистить();
		
Показать


2. В процедуру ЗаполнитьСтруктуруСКД (строка 416) добавляем следующий код:
	
	НоваяСтрока = СтруктураСКД.Добавить();
	НоваяСтрока.НазваниеСтруктуры = "Параметры_ДоступныеЗначения";
	НоваяСтрока.Родитель = "Параметры_Состав";
	НоваяСтрока.Синоним = "Доступные значения";
	НоваяСтрока.Обязательная = Ложь;
23. Summer_13 16.02.21 11:45 Сейчас в теме
Всё отработало, шикарная штука. Молодец!
24. Sergspectr 132 16.02.21 11:59 Сейчас в теме
25. Dinochka 13 24.02.21 17:22 Сейчас в теме
Здравствуйте. Приобрела Вашу обработку. Загрузила схему. При попытке сгенерировать код выдает ошибку:
{ВнешняяОбработка.ГенераторКодаСКД.Форма.Форма.Форма(921)}: Поле объекта не обнаружено (ИспользоватьГруппировкиЗапросаЕслиВозможно)
КодРазбора.ДобавитьСтроку("НаборДанныхЗапросСхемыКомпоновкиДанных.ИспользоватьГруппировкиЗапросаЕслиВозможно = "+Формат(СтрокаНабора.ИспользоватьГруппировкиЗапросаЕслиВозможно, "БЛ=Ложь; БИ=Истина")+";");

В чем может быть проблема?
26. Sergspectr 132 24.02.21 17:52 Сейчас в теме
(25) Добрый день. Один из вариантов возникновения данной ошибки, это использование платформы до релиза 8.3.14, если это так, то закомментируйте пожалуйста строку 921.
27. Dinochka 13 25.02.21 09:09 Сейчас в теме
(26) Добрый день. Да, платформа 8.3.12.
Заработало. Спасибо!
28. Sergspectr 132 25.02.21 09:42 Сейчас в теме
(27) Пожалуйста! Рад, что помогло.
29. Cujoko 5 15.03.21 21:45 Сейчас в теме
Это полезнейшая вещь. Гениально.
30. Sergspectr 132 16.03.21 07:16 Сейчас в теме
31. Cujoko 5 16.03.21 10:55 Сейчас в теме
(30) Там с отборами небольшая трабла. Все группы элементов отбора нызываются "ГруппаЭлементовОтбора" или что-то подобное. Даже если группа находится в другой группе, обе они называются одинаково. Их надобно переименовывать: типа "ГруппаЭлементовОтбора1" и "ГруппаЭлементовОтбора2".
32. Sergspectr 132 19.03.21 08:57 Сейчас в теме
(31) Спасибо за комментарий. Учту при обновлении.
33. Cujoko 5 21.03.21 19:02 Сейчас в теме
(32) Ещё, если у группы отбора есть представление, то оно тоже не попадает в код. Ещё у параметров "ВключатьВДоступныеПоля" не попадает в код.
34. WI_IL 126 26.04.21 08:48 Сейчас в теме
Добрый день! А можете рассказать примеры когда тогда случаи бывают, что необходимо формировать код СКД програмно на основе макета?
35. Sergspectr 132 02.05.21 18:00 Сейчас в теме
(34) Добрый день! Один из вариантов - это подмена схемы под различные условия, пример подобных реализаций можно посмотреть в типовых конфигурациях, например, БП 3.0 отчеты ОСВ и Карточка счета. В большинстве случаев использую при программном формировании условного оформления.
36. Yashazz 4882 01.08.21 20:39 Сейчас в теме
Адский труд, который автор всё-таки рискнул проделать. Энное количество подводных камней, которые выявляются только опытно-промышленной эксплуатацией. Неочевидности. Нетривиальности. Однако ж, сделано. В любом случае респект и плюс.
38. Sergspectr 132 14.09.21 19:40 Сейчас в теме
37. JohnConnor 59 14.09.21 16:07 Сейчас в теме
39. Sergspectr 132 14.09.21 19:40 Сейчас в теме
40. ubnkfl 15.11.21 22:06 Сейчас в теме
Спасибо за обработку.
У меня вылезла ошибка в функции формы ПолучитьЗначениеДляКонфигуратора()
Добавил заглушку
ИначеЕсли ПроверяемыйТип = Тип("Неопределено") Тогда


Т.е. у меня в качестве параметра - список значений составного типа, поэтому пустое значение - неопределено, а не пустая ссылка.
Прикрепленные файлы:
41. Sergspectr 132 15.11.21 22:49 Сейчас в теме
(40) Добрый день. Спасибо за комментарий.
Если имеется возможность, вышлите пожалуйста исходную схему и название конфигурации.
42. CratosX 115 20.11.24 16:15 Сейчас в теме
(41) Человек довольно подробно описал - в параметрах список значений, а список пустой. Простая вставка заглушки помогла. Можно и вашу обработку обновить.
Для отправки сообщения требуется регистрация/авторизация