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

04.02.21

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

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

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

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

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

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

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

 

 

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

 

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

 
 Схема XML

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

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

 

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

 

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

См. также

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

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

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

12000 руб.

02.09.2020    101630    563    385    

608

Онлайн-интенсив "DevOps для 1С". с 5 февраля по 19 марта 2024 г.

Инструментарий разработчика DevOps и автоматизация разработки DevOps для 1С Платные (руб)

Данный онлайн-курс (интенсив) предусматривает изучение процессов, инструментов и методик DevOps, их применение при разработке на платформе 1С. 

25000 руб.

20.06.2023    11479    3    2    

142

PowerTools

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

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

3600 руб.

14.01.2013    172917    1042    0    

815

Infostart PrintWizard

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

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

18000 руб.

06.10.2023    3485    3    0    

17

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

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

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

10000 руб.

10.11.2023    1376    3    1    

20

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

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

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

5000 руб.

07.02.2018    97570    237    97    

287

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

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

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

2400 руб.

24.09.2019    22372    14    15    

27

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

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

Программист - это человек, непрерывно принимающий решения. Написание кода не является процессом принятия решения - это всего лишь трансляция ваших желаний. Если вас периодически тяготит написание сотен строк кода ради решения задач, то прошу обратить внимание. Данный продукт позволит существенно сократить время на рутинные операции при разработке. За счет библиотечной реализации сокращается объём кода, а его читаемость повышается. К библиотеке прилагается документация API и шаблоны кода для наиболее популярных методов.

4200 руб.

16.04.2021    13832    5    9    

12
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. DitriX 2083 04.02.21 13:23 Сейчас в теме
А на инглише пишет код?
2. Sergspectr 127 04.02.21 13:38 Сейчас в теме
(1) Добрый день. Пока нет, данная опция в планах развития обработки
3. DitriX 2083 04.02.21 15:03 Сейчас в теме
поля кода и хмл можно переделать на monaco, где то тут статья была про это.
4. Sergspectr 127 04.02.21 15:34 Сейчас в теме
(3) Спасибо за идею
5. Dzenn 845 04.02.21 16:57 Сейчас в теме
круто, только не очень понятно зачем ;-)
red80; NoRazum; +2 Ответить
6. Sergspectr 127 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 127 04.02.21 18:40 Сейчас в теме
(7) Честно говоря, ранее не смотрел данную обработку. Сейчас бегло изучил, и сложилось первоначальное сугубо личное мнение. Первое что попадает в глаза, это частичная обфускация кода, что соответственно мешает дальнейшим доработкам под свои интересы. Второе это не очень удобная читабельность итогового кода.
Относительно предварительной генерации xml схемы, да в данной обработке нет возможности выбора отчета, а требуется подгружать xml схему, но так же в ней имеется возможность в пользовательском режиме в толстом клиенте создать свою схему и произвести генерацию кода по ней.
9. infosoft-v 769 04.02.21 22:21 Сейчас в теме
Добрый день. Подскажите пожалуйста адрес этого проекта на GitHub?
10. Sergspectr 127 05.02.21 07:08 Сейчас в теме
(9) Добрый день. На данный момент проект не опубликован на GitHub, возможно в ближайшее время ситуация изменится.
11. sapervodichka 6599 05.02.21 12:57 Сейчас в теме
Спасибо автору!
12. Sergspectr 127 05.02.21 13:05 Сейчас в теме
(11) Пожалуйста. Надеюсь будет полезна в работе.
user1346935; +1 Ответить
13. John_d 4784 07.02.21 19:58 Сейчас в теме
Плюс однозначно!
14. Sergspectr 127 08.02.21 07:39 Сейчас в теме
(13) Спасибо!
15. Бубузяка 62 08.02.21 10:17 Сейчас в теме
Конечно, плюс. Делать такие операции приходится не часто, а писать инструмент лениво.
16. Бубузяка 62 08.02.21 10:37 Сейчас в теме
Ошибка при генерации кода:
Поле объекта не обнаружено (СвязиНаборовДанных)
{ВнешняяОбработка.ГенераторКодаСКД.Форма.Форма.Форма(824)}:		СтруктураКода.СвязиНаборовДанных.Добавить(КодРазбора.ПолучитьТекст());
{ВнешняяОбработка.ГенераторКодаСКД.Форма.Форма.Форма(113)}:	СгенерироватьКодНаСервере();

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

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


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

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


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