Каталог решений - Коротко о скриптах в конфигурации 1С:Документооборот

Коротко о скриптах в конфигурации 1С:Документооборот

Коротко о скриптах в конфигурации 1С:Документооборот

В наличии

Краткая информация о том, как писать скрипты в конфигурации 1С:Документооборот.

Категория:

Описание

Приветствую вас, читающие это статью. Раз уж так вышло, что вы попали сюда, значит вас, как и меня, занесла нелегкая познакомиться-таки с конфигурацией 1С:Документооборот. И скорее всего дошло до того, что нужно написать какой-нибудь скрипт, чтобы облегчить кому-то жизнь и что-нибудь автоматизировать. Именно так случилось и со мной пару-тройку дней назад.

Я громко и долго спрашивал гугл, чтобы он выдал хоть какую-нибудь информацию о том, как это делать, но все было тщетно. Далее я нашел книгу по конфигурации, но и там было все очень поверхностно. В итоге мне помогли две вещи:

1) Моя тема на Инфостарте, где я задал вопрос и меня наставили на истинный путь.

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

2) Очень помогла обработка "Эмулятор скриптов". Прям жизнь облегчила и помогла понять, как все это работает.

Взять ее можно тут.

 

Ну что, вводная часть прошла, переходим к практике.

Итак задача стояла следующая:

1) Подставить в форму договора ответственного в родительном падеже

2) Так же подставить его должность в родительном падеже

3) Ну и основание доверенности, которое нужно было взять из связанного с договором документа.

 

Итак реализация:

Заходим в конфигурацию в режиме 1С Документооборот в режиме предприятия. Далее идем в раздел "НСИ", выбираем виды документов и выбираем документ, для которого у вас есть шаблон договора в формате Word. Мой пример на документе договор поставки, поэтому захожу в него и вижу такую картину:

Справа от шаблона есть кнопочка "открыть". Нажимаем.

На вкладке реквизиты, платформа уже сама показывает реквизиты, которые можно вставить в шаблон. То есть отметив галочками нужные и нажав готово, у нас открывается шаблон, где в самом верху появляются отмеченные ранее поля для заполнения. Они выделены серым цветом.(При печати и отправке этот цвет не отображается).

Расставляем параметры в нужные места в документе. Как-то так:

Все бы ничего, но нет нужных мне полей. То есть я могу вытащить ответственного, но он будет в именительном падеже. А вот связанного документа и должности здесь нет совсем.

Вот тут-то и приходят на помощь скрипты.

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

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

Теперь пришло время прописать скрипты и вот тут самое интересное, все это можно писать точно также будто мы пишем в конфигураторе, с одним маленьким НО: нужно использовать конструкцию "Файл.ВладелецФайла", тем самым мы будем обращаться к владельцу шаблона, то есть документу, откуда шаблон будет формировать заполненный договор.

Вот какими скриптами я решил поставленную задачу:

1) Итак:

//Вытащить связь с доком
//Конкретно под доверенность
Запрос = Новый Запрос;
Запрос.Текст = 
"ВЫБРАТЬ
|    СвязиДокументов.СвязанныйДокумент
|ИЗ
|    РегистрСведений.СвязиДокументов КАК СвязиДокументов
|ГДЕ
|    СвязиДокументов.Документ = &Документ";

Запрос.УстановитьПараметр("Документ", Файл.ВладелецФайла); //Файл.ВладелецФайла - ссылка на договор

Результат = Запрос.Выполнить().Выбрать();
Результат.Следующий();

РезультатОбработки = СтрДоверенность;  // РезультатОбработки это как раз переменная, из которой и будет подставляться значение в параметр.

2) А вот тут, что мне особенно понравилось. В конфигурации, в общем модуле есть функция склонения и в скрипте можно к ней обратиться.

//Скрипт склонения 

Результат = "";
Ответственный = Строка(Файл.ВладелецФайла.Ответственный); //Файл.ВладелецФайла.Ответственный - ссылка на ответственного из документа.
Склонение = ФизическиеЛица.Просклонять(Ответственный, 2, Результат); 
РезультатОбработки = Результат;

3) Аналогичным способом используем функцию из общего модуля для того чтобы получить должность пользователя(ответственного).

//Должность
Результат = "";
Ответсвтенный = Файл.ВладелецФайла.Ответственный;
Должность = Строка(РаботаСПользователями.ПолучитьДолжность(Ответственный));
СклДолжность = ФизическиеЛица.Просклонять(Должность, 2, Результат);
РезультатОбработки = Результат;

И вот он результат:

Вот так все просто. Но шел я к этому в течении нескольких часов. Единственное чего еще хотелось бы, так это вызов конструктора запросов в форме написания скриптов, но это уже мои придирки))).

Еще раз скажу, что мне очень помогла обработка "Эмулятор скриптов". Она работает примерно, как консоль запросов, то есть мы вставляем или пишем в нее наш скрипт и она сразу показывает какое значение получится в результате выполнения скрипта.

Благодаря форумчанам, выкладываю ссылку на ресурсы, где можно почитать подробнее о данном механизме:

Информация с ИТС

Официальная группа в facebook, где можно задать вопросы разработчикам

 

Очень надеюсь, что вам, тем кто до сюда дочитали и не уснули, очень поможет данная информация и сэкономит часы жизни и мыслетопливо. 

Живите свободно, но продуктивно.

Спасибо за внимание.

has been added to your cart:
Оформление заказа