Шаблонизатор

Публикация № 1260777

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

Обработка ОП УФ Универсальная Программирование

Создание программного кода для заполнения документа по указанному шаблону.

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

Поэтому была написана данная обработка, ей указывается документ, для которого надо создать Код заполнения и в ответ в Окно сообщений или в Текстовый документ выдается программный код для программного создания и заполнения этого Документа.

Единственное, с чем не хотелось разбираться - это с Хранилищем, поэтому такие поля обработкой игнорируются.

Обратите на это внимание!

 

Сначала выдаются все реквизиты Документа ( на примере документа Авансовый отчет из УТ 10)

Объект = Документы.АвансовыйОтчет.СоздатьДокумент();
Объект.УстановитьНовыйНомер();

Объект.Дата="02.03.2019 16:11:42";
Объект.ВалютаДокумента=XMLЗначение(ИзXMLТипа("CatalogRef.Валюты",""),"0b8cc73b-1c5b-11df-8c7f-0019dbb74c8d");
Объект.Комментарий= "";
Объект.КурсДокумента=1;
Объект.КратностьДокумента=1;
Объект.Организация=XMLЗначение(ИзXMLТипа("CatalogRef.Организации",""),"0b8cc73f-1c5b-11df-8c7f-0019dbb74c8d");
Объект.ОтражатьВУправленческомУчете=true;
Объект.ОтражатьВБухгалтерскомУчете=true;
Объект.ОтражатьВНалоговомУчете=true;
Объект.Подразделение= "";
Объект.СкладОрдер=XMLЗначение(ИзXMLТипа("CatalogRef.Склады",""),"6697310c-1c5d-11df-8c7f-0019dbb74c8d");
Объект.СуммаВключаетНДС=true;
Объект.СуммаДокумента=9994.98;
Объект.ТипЦен= "";


Потом для каждой Табличной части выполняется следующее:

подготавливается Таблица Значений с нужными Типами в колонках

ТЗ = Новый ТаблицаЗначений;
Массив = Новый Массив;
Массив.Добавить(ИзXMLТипа("string",""));
ТипВидДокВходящий=Новый ОписаниеТипов(Массив,,,);
ТЗ.Колонки.Добавить("ВидДокВходящий",ТипВидДокВходящий);

...

в том числе и с составными типами

Массив = Новый Массив;
Массив.Добавить(ИзXMLТипа("DocumentRef.ВозвратТоваровПоставщикуИзНТТ",""));
Массив.Добавить(ИзXMLТипа("DocumentRef.ВозвратТоваровОтПокупателя",""));
Массив.Добавить(ИзXMLТипа("DocumentRef.ЗаказПокупателя",""));
Массив.Добавить(ИзXMLТипа("DocumentRef.ПриходныйКассовыйОрдер",""));
Массив.Добавить(ИзXMLТипа("DocumentRef.ИнкассовоеПоручениеПолученное",""));
Массив.Добавить(ИзXMLТипа("DocumentRef.ПлатежноеПоручениеИсходящее",""));
Массив.Добавить(ИзXMLТипа("DocumentRef.ПоступлениеДопРасходов",""));
Массив.Добавить(ИзXMLТипа("DocumentRef.РасходныйКассовыйОрдер",""));
Массив.Добавить(ИзXMLТипа("DocumentRef.ПлатежноеТребованиеВыставленное",""));
Массив.Добавить(ИзXMLТипа("DocumentRef.ЗаказПоставщику",""));
Массив.Добавить(ИзXMLТипа("DocumentRef.АккредитивПереданный",""));
Массив.Добавить(ИзXMLТипа("DocumentRef.ПоступлениеТоваровУслугВНТТ",""));
Массив.Добавить(ИзXMLТипа("DocumentRef.ОтчетКомитентуОПродажах",""));
Массив.Добавить(ИзXMLТипа("DocumentRef.ИнкассовоеПоручениеПереданное",""));
Массив.Добавить(ИзXMLТипа("DocumentRef.КорректировкаДолгаПоВозвратнойТаре",""));
Массив.Добавить(ИзXMLТипа("DocumentRef.ПлатежныйОрдерСписаниеДенежныхСредств",""));
Массив.Добавить(ИзXMLТипа("DocumentRef.ВозвратТоваровПоставщику",""));
Массив.Добавить(ИзXMLТипа("DocumentRef.ПлатежноеПоручениеВходящее",""));
Массив.Добавить(ИзXMLТипа("DocumentRef.АккредитивПолученный",""));
Массив.Добавить(ИзXMLТипа("DocumentRef.ПоступлениеТоваровУслуг",""));
Массив.Добавить(ИзXMLТипа("DocumentRef.ПлатежноеТребованиеПолученное",""));
Массив.Добавить(ИзXMLТипа("DocumentRef.ОтчетКомиссионераОПродажах",""));
Массив.Добавить(ИзXMLТипа("DocumentRef.РеализацияТоваровУслуг",""));
Массив.Добавить(ИзXMLТипа("DocumentRef.АвансовыйОтчет",""));
Массив.Добавить(ИзXMLТипа("DocumentRef.СчетНаОплатуПоставщика",""));
Массив.Добавить(ИзXMLТипа("DocumentRef.ПлатежныйОрдерПоступлениеДенежныхСредств",""));
Массив.Добавить(ИзXMLТипа("DocumentRef.СчетНаОплатуПокупателю",""));
Массив.Добавить(ИзXMLТипа("DocumentRef.КорректировкаДолга",""));
ТипСделка=Новый ОписаниеТипов(Массив,,,);
ТЗ.Колонки.Добавить("Сделка",ТипСделка);

Далее заполняется эта Таблица Значений данными из документа-шаблона:

НоваяСтрока = ТЗ.Добавить();
НоваяСтрока.ДатаВходящегоДокумента=XMLЗначение(Тип("Дата"),"2019-02-05T00:00:00");
НоваяСтрока.Сумма=105;
НоваяСтрока.Контрагент=XMLЗначение(ИзXMLТипа("CatalogRef.Контрагенты",""),"e92ffee7-50be-11e2-b8ab-5404a6efe539");
НоваяСтрока.ДоговорКонтрагента=XMLЗначение(ИзXMLТипа("CatalogRef.ДоговорыКонтрагентов",""),"e2e49b78-0438-11e5-a57b-1c6f6523ee30");
НоваяСтрока.Содержание="Выезд на место";
НоваяСтрока.СуммаВзаиморасчетов=105;
НоваяСтрока.КурсВзаиморасчетов=1;
НоваяСтрока.КратностьВзаиморасчетов=1;

...

И, наконец, по данным этой Таблицы значений заполняется сама Табличная часть

Для каждого Элем Из ТЗ Цикл
    НоваяСтрока = Объект.ОплатаПоставщикам.Добавить();
    НоваяСтрока.ВидДокВходящий= Элем.ВидДокВходящий;
    НоваяСтрока.ДатаВходящегоДокумента= Элем.ДатаВходящегоДокумента;
    НоваяСтрока.НомерВходящегоДокумента= Элем.НомерВходящегоДокумента;
    НоваяСтрока.Сумма= Элем.Сумма;
    НоваяСтрока.Контрагент= Элем.Контрагент;
    НоваяСтрока.ДоговорКонтрагента= Элем.ДоговорКонтрагента;
    НоваяСтрока.Сделка= Элем.Сделка;
    НоваяСтрока.Содержание= Элем.Содержание;
    НоваяСтрока.СуммаВзаиморасчетов= Элем.СуммаВзаиморасчетов;
    НоваяСтрока.КурсВзаиморасчетов= Элем.КурсВзаиморасчетов;
    НоваяСтрока.КратностьВзаиморасчетов= Элем.КратностьВзаиморасчетов;
    НоваяСтрока.ДокументРасчетовСКонтрагентом= Элем.ДокументРасчетовСКонтрагентом;
    НоваяСтрока.Проект= Элем.Проект;
КонецЦикла;

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

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

Работа обработки проверена в УТ 10.3.10.4 и в ЗУП Базовая 3.1.11.133, а также в демо-базе УНФ от 1С: https://unf.demo.1c.ru/unf/

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

Наименование Файл Версия Размер
Шаблонизатор:

.epf 11,89Kb
06.07.20
2
.epf 11,89Kb 2 Скачать

Специальные предложения

Оставьте свое сообщение

См. также

Внешняя компонента на C# для парсинга страниц через Phantom JS на сервере 1С х32,х64

Прочие инструменты разработчика WEB v8 1cv8.cf Абонемент ($m)

PhantomJS - это браузер без окна, используемый для автоматизации взаимодействия с веб-страницами. PhantomJS предоставляет JavaScript API, обеспечивающий автоматическую навигацию, снимки страницы, эмуляции поведение пользователя, что делает его распространенным инструментом, используемым для запуска модульных тестов на основе браузера в автономной системе, такой как среда непрерывной интеграции . PhantomJS основан на WebKit, что делает его похожей на Safari и Google Chrome средой просмотра. Это программное обеспечение с открытым исходным кодом, выпущенное под лицензией BSD.

1 стартмани

сегодня в 11:33    149    0    DrZombi    3    

Сужающийся поиск различий между базами

Поиск данных Универсальные обработки Прочие инструменты разработчика v8 v8::СКД 1cv8.cf Абонемент ($m)

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

1 стартмани

30.07.2020    624    1    Yashazz    0    

Обозреватель данных подсистем

Администрирование данных 1С БСП (Библиотека стандартных подсистем) Прочие инструменты разработчика v8 v8::УФ 1cv8.cf Абонемент ($m)

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

1 стартмани

15.07.2020    1396    0    sergbsv    1    

Отчёт по содержимому КД 2.0

Обмен данными 1С Обмен через XML Перенос данных из 1C8 в 1C8 Конфигурирование 1С Прочие инструменты разработчика v8 КД Абонемент ($m)

Просто отчёт по правилам конвертации - всё, что в них есть.

1 стартмани

05.06.2020    1536    6    Yashazz    4    

Спасение рядового Райана

Обработка документов Универсальные обработки Обработка справочников Прочие инструменты разработчика v8 1cv8.cf Абонемент ($m)

Бывало, что потратишь полчаса, набьёшь в документ кучу данных, а его потом не записать? И вся работа насмарку? Тогда прошу под кат.

1 стартмани

22.05.2020    2175    3    the1    2    

Метод восстановления битых ссылок в настройках СКД при консольно-конфигураторной разработке отчетов

Практика программирования Прочие инструменты разработчика v8 v8::СКД 1cv8.cf Абонемент ($m)

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

1 стартмани

30.04.2020    2507    0    zaxarovsky    4    

Быстрая функция поиска ссылки по УИД(GUID)

Поиск данных Прочие инструменты разработчика v8 1cv8.cf Россия Абонемент ($m)

Простая, а самое главное быстрая функция поиска ссылки на объект в информационной базе по УИД(GUID) через запрос.

1 стартмани

11.04.2020    6094    20    Kondratenko.as    27    

http сервис, возвращающий печатную форму

Печатные формы документов Прочие инструменты разработчика v8 УТ11 Россия Абонемент ($m)

Расширение, которое по get запросу в виде: http:///hs/WSPrint/Download/?UUID=&IDPF=&format= возвращает указанную печатную форму.

1 стартмани

09.04.2020    2251    4    user1350020    0    

Простая параллельная обработка данных

Производительность и оптимизация (HighLoad) Прочие инструменты разработчика v8 v8::УФ 1cv8.cf Абонемент ($m)

Предлагаю способ быстрой параллельной обработки "неких" данных. Методика проста как дважды два. Предварительно подготовленная обработка запускается вручную в нескольких сеансах, и каждый сеанс занимается обработкой своей части (случайного диапазона). Может пригодиться для ускоренной обработки данных. К примеру, необходимо заполнить реквизит большого справочника, заполнение в один поток идёт долго, а сроки поджимают.

1 стартмани

10.02.2020    3207    1    Amadeus007    8    

Выгрузка любого запроса или таблицы значений в текст JSON

Обработка справочников WEB Универсальные функции Прочие инструменты разработчика v8 v8::УФ 1cv8.cf Россия Абонемент ($m)

Отчет позволяет выгрузить любые данные из 1С в JSON текст, выполнив произвольный запрос к данным.

1 стартмани

07.02.2020    6897    23    user796054    18    

1C и защищенное хранение данных на блокчейне: модуль интеграции от Acryl Platform

Защита и шифрование Блокчейн Расширения Прочие инструменты разработчика v8 1cv8.cf Абонемент ($m)

Модуль интеграция 1С и блокчейн платформы "Acryl Platform" без использования внешних компонент. Под катом реализация механизмов Base58, Blake2b, Keccak, Curv25519 (the elliptic curve Diffie–Hellman) в подсистеме "Crypt", примеры генерации ключей, адресов, подписи транзакций, запись данных в блокчейн, чтение и восстановление данных из блокчейн. Код открыть. Лицензия MIT.

1 стартмани

21.01.2020    5440    2    ArtemSerov    17    

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

Поиск данных Прочие инструменты разработчика v8 1cv8.cf Россия Абонемент ($m)

Зачастую у программиста возникает желание работать с кодом модулей конфигурации средствами встроенного языка: так, как мы сейчас работаем с данными. Как результат реализации данной потребности и родилась данная обработка. Она предназначена для минимизации ручного труда при внесении однотипных изменений в модули конфигурации. Она представляет из себя расширение глобального поиска и замены в конфигураторе. Отличие в предоставлении ряда дополнительных возможностей, таких, как: наложение условий И, ИЛИ, НЕ; поиск только в названии процедуры / функции, либо в теле определенной процедуры / функции; управление поиском в комментариях и др.

1 стартмани

06.01.2020    3103    6    keifaya    0    

Преобразование объекта Отбор компоновки данных в Запрос

Практика программирования Прочие инструменты разработчика v8::УФ v8::Запросы v8::СКД 1cv8.cf Абонемент ($m)

Преобразует объект Отбор компоновки данных в объект Запрос (с заполнением текста и параметров).

1 стартмани

20.12.2019    3045    3    okon-teh    2    

FormEditor - поставляемый модуль программного создания элементов форм

Практика программирования Прочие инструменты разработчика v8 Абонемент ($m)

Упрощенное добавление реквизитов формы, добавление их на форму (в том числе и таблиц), также добавление групп, команд формы и кнопок к ним.

1 стартмани

20.12.2019    4887    11    coolo1    10    

Сборник небольших полезняшек

Универсальные обработки Прочие инструменты разработчика v8 1cv8.cf Абонемент ($m)

Есть такие обработки, которые не тянут на отдельную публикацию, но, как говаривал ослик Иа, иногда оказывается, что кому то они как раз очень нужны. ©Винни-Пух и все все все Если модераторы будут не против, я буду собирать их в отдельной статье.

2 стартмани

11.11.2019    5127    1    capitan    1    

Пакетная выгрузка / загрузка внешних отчетов и обработок

Прочие инструменты разработчика Менеджеры внешних отчетов v8 1cv8.cf Абонемент ($m)

Пакетная выгрузка / загрузка внешних отчетов и обработок для массовый манипуляций с ними.

2 стартмани

04.11.2019    8295    28    YPermitin    22    

Алгоритмы и регламентные задания (расширение)

Математика и алгоритмы Прочие инструменты разработчика v8 v8::УФ 1cv8.cf Абонемент ($m)

Универсальный механизм для создания алгоритмов и регламентных задач.

5 стартмани

28.05.2018    10618    7    pm74    39    

Повелитель регламентных заданий

Сервисные утилиты Прочие инструменты разработчика v8 1cv8.cf Абонемент ($m)

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

3 стартмани

22.11.2016    11786    78    krv2k    21