INFOSTART EVENT 2018 EDUCATION

Второй тур голосования за доклады.
Окончание 5 сентября.

Белозеров Дмитрий | Системный архитектор | LMSoft

«Кодогенерация и метагенерация в 1С»

Примерно год назад жизнь заставила меня задуматься над таким вопросом - а не разработать ли язык (точнее псевдоязык), с помощью которого можно было бы программно работать с метаданными 1С, писать скрипты, которые выполняют те же действия, которые выполняет разработчик в конфигураторе... В этом докладе хочу рассказать о том как мы разрабатывали такой инструмент, с какими сложностями и нюансами столкнулись, и что получилось в итоге. Мы рассмотрим реальные кейсы использования автоматической генерации метаданных 1С, в которых использование такого подхода дает серьёзные преимущества и сильно облегчает жизнь разработчика (иногда настолько облегчает что можно обойтись вообще без него :), увидим как инструмент генерации можно вписать в общий контур continuous integration. А ещё обсудим перспективы использования подобных практик (генерация конфигурации на основе формализованных функциональных моделей, реализация библиотечного подхода к разработке прикладных решений).

Универсальная печать в MS Word

Печать - Универсальные печатные формы

14
Универсальная печать в шаблон документа в формате MS Word

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

Есть документ (договор, например) в формате MS Word

-выделяем в нем "переменные поля";

-берем консоль запроса пишем запрос по получению данных для заполнения документа;

-добавляем текстовый макет в обработку с именем "ТекстЗапроса+Идентификатор документа" из которого будет печататься форма, вставляем в него текст запроса;

-в файле формата MS Word заменяем переменные поля на "параметры" типа %НазваниеОрганизации% и т.д. 

-запускаем обработку указываем путь где лежит наш шаблон и "Печатаем"... 

 

Таким образом основная работа по созданию печатной формы сводится к двум действиям "написать запрос" и "создать шаблон".

 

Обработка подойдет для любой конфигурации, любого документа. Сейчас она была создана для ЗУП, документов Прием на работу и Кадровое перемещение, для использования в других документах, необходимо изменить тип реквизита "СсылкаНаОбъект";

 

В качестве примера с обработкой идет файл шаблон "Дополнительного соглашения" печатается из Кадрового перемещения, ну что бы понятно было, что к чему.

14

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

Наименование Файл Версия Размер
Обработка
.epf 15,32Kb
28.01.13
151
.epf 15,32Kb 151 Скачать
Шаблон
.doc 35,50Kb
28.01.13
44
.doc 35,50Kb 44 Скачать

См. также

Комментарии
Сортировка: Древо
1. ZOMI 110 28.01.13 20:09 Сейчас в теме
2. Ctrl P 195 28.01.13 21:16 Сейчас в теме
(1) ну будет еще одна, с заявкой на "универсальность" - пролистав первые 5 страниц, я так и не нашел ничего подобного. идея этой обработки - сродни идеи СКД - создать печатную форму не написав ни одной строчки кода...
3. Xolli 28.01.13 22:07 Сейчас в теме
4. Angeros 29.01.13 06:41 Сейчас в теме
На универсальность в данном вопросе всегда кладется в угоду особенностей каждой задачи... В целом конечно все ок. А вот чего не хватает так это возможности вставить уникальный штрих код на каждой странице...
5. Crush 30.01.13 10:42 Сейчас в теме
Вместо поиска и замены строк вида %параметр78% можно использовать переменные. Скорость не замерял, но интуиция подсказывает, что будет эффективнее.
Заполнять переменные вот так:
Для каждого кз Из Параметры Цикл
ОбъектВорд.Variables.Add(кз.Ключ).Value = кз.Значение;
КонецЦикла;
ОбъектВорд.Fields.Update();

И тут можно почитать: http://support.microsoft.com/kb/306281
6. Ctrl P 195 30.01.13 13:13 Сейчас в теме
(5)да я рассматривал этот вариант, мне не понравилось то, что один и тот же параметр в разных местах надо называть по разному, т.о. его придется дублировать при заполнении "СтруктурыДанных", т.е. если в договоре встречается 22споловиной раза имя работника, то нужно создать 22споловиной уникальных ключа - мне это показалось излишне геморно... и для создателя "шаблона" и для создателя "набора данных"...
7. Crush 30.01.13 14:46 Сейчас в теме
(6) видать о разных вещах говорим. Сейчас попробовал - вставлять можно сколько угодно.
Вставка - экспрес блок - поле - docVariable. Задаешь имя, например: НаименованиеОрганизации
Потом в еще в нескольких местах такое же проделываешь.
Далее выполняешь макрос:
Sub УстановитьПерем()
Dim fName As String
fName = "прироги и копыта"
ActiveDocument.Variables.Add Name:="НаименованиеОрганизации", Value:=fName
MsgBox ActiveDocument.Variables("ad").Value
End Sub

Если нужно изменить значение, то:
Sub Изменить()
ActiveDocument.Variables("НаименованиеОрганизации").Value = "Рюмашка"
Selection.WholeStory
Selection.Fields.Update
End Sub

Простите за мой VB
8. sevipa 31.01.13 06:49 Сейчас в теме
А зачем выкладывать двумя файлами?
9. Ctrl P 195 31.01.13 20:50 Сейчас в теме
(8) Один файл обработка, один для пимера как "создавать шаблон"...
10. stas1kbob 60 17.07.13 17:40 Сейчас в теме
примерчик выходного документа бы
11. search 81 29.07.13 23:57 Сейчас в теме
Идея отличная. Еще бы в колонтитулах замена работала - было бы совсем хорошо
Оставьте свое сообщение