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

04.02.21

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

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

Скачать файлы

Наименование Файл Версия Размер
Генератор кода схемы компоновки данных (СКД):
.epf 20,48Kb
87
.epf 1.1 20,48Kb 87 Скачать

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

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

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

 

 

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

 

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

 
 Схема XML

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

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

 

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

 

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

См. также

SALE! 20%

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

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

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 8000 руб.

02.09.2020    122390    673    389    

716

SALE! 25%

Infostart PrintWizard

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

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

18000 15300 руб.

06.10.2023    7342    22    6    

39

SALE! 20%

Infostart УДиФ: Управление данными и формами

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

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

10000 8000 руб.

10.11.2023    3638    11    1    

34

SALE! 30%

PowerTools

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

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

3600 2520 руб.

14.01.2013    177835    1074    0    

852

Многопоточность. Универсальный «Менеджер потоков» 2.1

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

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    99379    239    97    

296

[ЕХТ] Фреймворк для Расширений 1С

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

"Фреймворк для Расширений 1С" это универсальное и многофункциональное решение, упрощающее разработку и поддержку создаваемых Расширений. Поставляется в виде комплекта из нескольких Расширений с открытым исходным кодом. Работает в любых Конфигурациях в режиме Управляемого приложения с режимом совместимости 8.3.12 и выше без необходимости внесения изменений в Конфигурацию.

3000 руб.

27.08.2019    18138    6    8    

40

1С HTML Шаблоны / HTML Templates

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

Быстрая и удобная обработка для работы с шаблонами HTML. Позволяет легко и быстро формировать код HTML.

2040 руб.

27.12.2017    28121    3    10    

15

Выполнение произвольного кода или запроса с параметрами через Web-сервис (замена COM-подключений)

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

В процессе работы в 1С часто возникает потребность получить данные из другой базы.  Обычно это делается через COM-соединение, и время выполнения запроса при этом оставляет желать лучшего. В данной публикации представлено универсальное решение, позволяющее практически моментально выполнить произвольный код или запрос с параметрами в другой информационной базе через Web-сервис.

2400 руб.

24.09.2019    23610    15    15    

32
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. DitriX 2091 04.02.21 13:23 Сейчас в теме
А на инглише пишет код?
2. Sergspectr 128 04.02.21 13:38 Сейчас в теме
(1) Добрый день. Пока нет, данная опция в планах развития обработки
3. DitriX 2091 04.02.21 15:03 Сейчас в теме
поля кода и хмл можно переделать на monaco, где то тут статья была про это.
4. Sergspectr 128 04.02.21 15:34 Сейчас в теме
5. Dzenn 870 04.02.21 16:57 Сейчас в теме
круто, только не очень понятно зачем ;-)
red80; NoRazum; +2 Ответить
6. Sergspectr 128 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 128 04.02.21 18:40 Сейчас в теме
(7) Честно говоря, ранее не смотрел данную обработку. Сейчас бегло изучил, и сложилось первоначальное сугубо личное мнение. Первое что попадает в глаза, это частичная обфускация кода, что соответственно мешает дальнейшим доработкам под свои интересы. Второе это не очень удобная читабельность итогового кода.
Относительно предварительной генерации xml схемы, да в данной обработке нет возможности выбора отчета, а требуется подгружать xml схему, но так же в ней имеется возможность в пользовательском режиме в толстом клиенте создать свою схему и произвести генерацию кода по ней.
9. infosoft-v 871 04.02.21 22:21 Сейчас в теме
Добрый день. Подскажите пожалуйста адрес этого проекта на GitHub?
10. Sergspectr 128 05.02.21 07:08 Сейчас в теме
(9) Добрый день. На данный момент проект не опубликован на GitHub, возможно в ближайшее время ситуация изменится.
11. sapervodichka 6754 05.02.21 12:57 Сейчас в теме
12. Sergspectr 128 05.02.21 13:05 Сейчас в теме
(11) Пожалуйста. Надеюсь будет полезна в работе.
user1346935; +1 Ответить
13. John_d 5284 07.02.21 19:58 Сейчас в теме
14. Sergspectr 128 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 128 08.02.21 11:13 Сейчас в теме
(16) Спасибо за сообщение.
Закомментируйте пожалуйста строку 824 в модуле формы.
18. kirill_sh 1 12.02.21 19:28 Сейчас в теме
У вас вся схема разбирается или только часть?
19. Sergspectr 128 13.02.21 14:52 Сейчас в теме
(18) Не затрагиваются макеты и вложенные схемы. Как вариант можете выслать xml схему отчета, созданную в демо базе БСП, в ответ вышлю код сформированный обработкой.
20. kirill_sh 1 15.02.21 10:24 Сейчас в теме
(19) я спрашиваю вот из-за этого
1 - скрин со схемой, где есть параметры
2 - обработка по кнопке "сгенерировать код"

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


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

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


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