Универсальное регламентное задание. Универсальное регламентное задание Запуск внешней обработки 1с 8.3 по расписанию

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

Что такое внешние отчёты и обработки

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

По функциональности обработки делятся на те, которые могут изменять данные и те, которые просто анализируют информацию и выводят результат в удобной для пользователя форме (отчёты). Чтобы не менять стандартные макеты печати документов, разрабатываются внешние печатные формы. Также внешние обработки могут выполняться по заданному расписанию на сервере приложений 1С - это регламентные задания.

В Кнопке разработано несколько десятков обработок, позволяющих использовать нашим бухгалтерам “практическую магию“. Например, для анализа правильности бухгалтерского учёта в Кнопке используется внешний отчёт “Автоаудит баз“. В удобных для восприятия таблицах выводится анализ по 120 критериям остатков и оборотов по счетам, соответствие данных из налоговых деклараций и информации по бухгалтерскому учёту, анализ основных средств и прочее.

Пример внешней печатной формы “договор займа“ по форме, разработанной нашими юристами. Бывают случаи, когда предприниматель берёт беспроцентный займ у своей фирмы как физическое лицо, или наоборот, перечисляет собственные средства фирме, тогда есть возможность сразу же распечатать договор.

Открывается форма для заполнения необходимых реквизитов:

И выводится печатная форма договора:

Обработки по расписанию (регламентные задания) используем, например, для исправления выписки. У Кнопки настроены интеграции с основными банками и специальные роботы загружают выписку напрямую в 1С. Благодаря технологии машинного обучения, процент ошибок при проведении выписки удалось снизить до 3%. Но как всегда есть исключения, например клиенты, которые используют агентскую схему реализации товаров, в этом случае правила проведения банковской выписки индивидуальные. Чтобы не перепрограммировать робота для частного случая, до появления расширений конфигурации использовали регламентное задание, чтобы раз в 10 минут исправлять выписку за роботом.

Что такое расширения конфигурации

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

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

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

Все файлы с обработками загружаются в специальный каталог менеджера сервиса. Но перед тем, как загрузить файл в каталог, другими словами “опубликовать в сервисе“, его надо специальным образом подготовить.

Подготовка внешних отчётов и обработок к публикации в модели сервиса

Дополнительный отчёт или обработка создаются в конфигураторе “1С: Предприятие 8“ как стандартные внешние отчёты и обработки и сохраняются в файл с расширением - .epf (для дополнительных обработок) или.erf (для дополнительных отчётов).

В модуле объекта должны быть процедуры и функции для определения параметров регистрации.

Обратите внимание, что важным параметром является “Версия“. Если вы внесли изменения в обработку, которая уже была ранее загружена в каталог менеджера сервиса, обязательно измените номер версии, иначе менеджер сервиса откажется загружать этот файл. При разработке отчёта или обработки надо учитывать, что пользователи работают в модели сервиса через web-клиент (хорошая статья в блоге 1С). Если обработка содержит формы, то они должны работать в web-клиенте под всеми web-браузерами, которые поддерживаются технологической платформой «1С: Предприятие 8».

По стандартам сервиса 1cfresh.com , дополнительный отчёт или обработка должны быть полностью работоспособны при исполнении в безопасном режиме, то есть работать без обращения к внешним для конфигурации объектам.

Дополнительный отчёт или обработка должны быть подготовлены для загрузки в сервис в виде комплекта поставки. Комплект поставки является архивом (zip-файлом), содержащим:

  • файл дополнительного отчета или обработки;
  • xml-файл манифеста, в котором находится дополнительная метаинформация, необходимая менеджеру сервиса для публикации дополнительного отчёта или обработки в сервисе.
Подготовка выполняется в локально развернутой информационной базе той конфигурации, для которой предназначается дополнительный отчёт или обработка. Используем специальный помощник создания комплекта поставки, внешнюю обработку ПодготовкаДополнительныхОтчетовИОбработокКПубликацииВМоделиСервиса.epf. Подробнее можно почитать в документации по Технологии публикаций решений 1С Fresh.

Установка дополнительных отчётов и обработок в модели сервиса

Отличительной чертой технологии 1С Fresh является то, что внешний отчёт или обработку нельзя загрузить напрямую в область данных. Добавление происходит только администратором сервиса через менеджер сервиса. После того, как zip-архив с файлом обработки подготовлен, его надо загрузить в каталог менеджера сервиса и установить для конкретного абонента сервиса.

Абонент сервиса - это группа пользователей, объединённых по какому-либо принципу. Соответственно, информационные базы, доступные для определённой группы пользователей, называются приложениями абонента.

Приложения могут иметь различные конфигурации 1С (Бухгалтерия предприятия, Зарплата и управление персоналом, Управление нашей фирмой и т.д.), для которых возможно использование в модели сервиса. Дополнительный отчёт или обработка могут быть установлены только в приложения абонента, который указан при загрузке файла.

Вот так выглядит форма свойств дополнительного отчёта с версиями. По гиперссылке “Установка/удаление“, попадаем в список приложений и выбираем нужные базы.

После того, как обработка загружена и выбрано приложение, менеджер сервиса обращается по адресу приложения и даёт команду установить её в информационную базу.

Запускаем обработки по расписанию

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

Обработки, которые будут выполняться по расписанию не имеют формы. Вся логика прописывается в модуле объекта и выглядит следующим образом.



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

Подробнее про расширения конфигурации

Параллельно с внешними отчётами и обработками, которые нужно подготавливать и администрировать “по-старинке“, мы начали активно использовать механизм расширений конфигурации. Начиная с платформы 1С Предприятия 8.3.10, этот механизм достаточно облегчил нашу жизнь и позволил упростить адаптацию конфигураций под особенности Кнопки.

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

Новое расширение подготовить достаточно просто. Давайте рассмотрим процесс создания расширений на конкретных примерах.
По опыту работы, лидером по запросам на внесение корректировок является печатная форма ТОРГ-12. Например, нам надо сделать расширение для возможности печатать товарную накладную в валюте (по умолчанию она может формироваться только в рублях).
Открываем Меню → Конфигурация → Расширения конфигурации
Создаём новое расширение с назначением “Адаптация“.

Расширение выглядит как привычное дерево конфигурации, но пока без объектов. Первым делом добавим новый макет ТОРГ-12, в который вставили колонки с суммами в валюте.

Поскольку товарная накладная распечатывается из документа “Реализация товаров услуг“, добавим этот документ в наше расширение из основной конфигурации и внесём нужные нам изменения в модуль менеджера. Для этого в контекстном меню реализации выбираем «добавить в расширение».

Теперь можно доработать модуль менеджера реализации. Нам нужно добавить новую форму в список печатных форм и заполнить суммы в валюте.

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

Давайте остановимся подробнее на аннотациях. В расширениях можно использовать: &Перед, &После, &Вместо (очень аккуратно). Принцип действия простой: хотим, чтобы сначала выполнялись наши алгоритмы из расширения, ставим аннотацию &Перед и в скобках указываем имя процедуры из типовой конфигурации. Если сначала отрабатывает типовой модуль, а потом наш, используем &После.

Аннотации &Перед и &После нельзя применять для функций. Поэтому, если нам необходимо изменить алгоритм функции из основной конфигурации, используем аннотацию &Вместо.

Аннотацию &Вместо надо применять как можно реже, поскольку она полностью замещает выполнение процедуры и функции из основной конфигурации на процедуру/функцию расширения. При этом способе перехвата процедура/функция из основной конфигурации вообще перестанут выполняться пока установлено расширение, даже обновление версий не поможет.

Заключение

Существует много различных мнений про использование расширений и внешних отчётов/обработок. Опираясь на наш опыт, мы двумя руками “за“ расширения. Это современная и более адаптивная технология, у нее гораздо больше возможностей, и их публикация в разы проще. В расширение помещается только необходимая часть кода, также отсутствует необходимость дополнительно прописывать процедуры и функции для определения параметров регистрации, следить за версиями и создавать комплект поставки.

Можно использовать несколько расширений для одной области данных.
Для специфики работы 1С Fresh в режиме разделения данных (одна конфигурация, много независимых областей), метод расширений отличный выход.

Создаем регламентное задание

Создадим регламентное задание «Выполнение обработки».

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

Назначим процедуру, которая будет срабатывать при запуске регламентного задания: МодульРегламентныхЗаданий.РегламентноеЗаданиеВыполнениеОбработки .

Сама процедура имеет вид:

Процедура РегламентноеЗаданиеВыполнениеОбработки(Ключ) Экспорт

ПараметрыРегламентныхЗаданий.ВыполнитьОбработкуСПараметрами(Ключ);

КонецПроцедуры

Создаем справочник для регламентных заданий

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

Справочник «Параметры регламентных заданий» :

Реквизиты :

· КодПередЗапуском - неограниченная строка - код на языке 1С, который нужно выполнить перед запуском.

· Обработка из конфигурации - строка (100) - идентификатор обработки из конфигурации

· Обработка из справочника - строка (100) - ссылка на элемент справочника «Внешние обработки», если такой имеется в конфигурации

· Выполнять через приложение 1С - булево - будет создано отдельное приложение 1С и в нем будет запущено регламентное задание. Создано для 8.1, где не все методы приложения доступны на сервере, где работает регламентное задание.

· КодЗапуска - - неограниченная строка - код на языке 1С, который будет выполняться при запуске регламентного задания.

Создадим форму элемента :

По нажатию на кнопку «Создать регл. задание» программно создается регламентное задание с ключом-кодом:

Процедура ОсновныеДействияФормыСоздатьРеглЗадание(Кнопка)

Перем Задание;

Ключ = СокрЛП(Код);

Задание = РегламентныеЗадания.СоздатьРегламентноеЗадание("ВыполнениеОбработки");

Задание.Наименование = Ключ;

Задание.Ключ = Ключ;

Параметры = Новый Массив();

Параметры.Добавить(Ключ);

Задание.Параметры = Параметры;

Задание.Записать();

КонецПроцедуры

Запуск регламентного задания

Каждое созданное нами регламентное задание имеет ключ:

Этот ключ соответствует коду справочника «Параметры регламентных заданий», по нему осуществляется поиск при старте задания. Если элемент справочника не найдено, задание не выполняется.

Далее, если задан код КодПередЗапуском то будет выполнен этот код. Далее, если переменная Выполнять примет значение ложь, то задание не будет выполнено. При анализе доступна переменная Параметры , где хранится ссылка на найденный элемент справочника «Параметры регламентных заданий».

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

Для 1С81 предусмотрено выполнение в новом приложении - чтобы можно было использовать код, доступный только на клиенте, в том числе и использование внешних обработок. Для этого нужно установить галочку «Выполнять через приложение 1С». Иначе регламентное задание будет выполняться на сервере.

Рекомендую устанавливать пользователя в поле «Пользователь» у вновь созданного регламентного задания, чтобы задание выполнялось под определенными правами. Рекомендую такому пользователю давать полные права. У меня используется пользователь « robot ».

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

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

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

Следующий шаг, делаем автоматическое закрытие программы после выполнения внешней обработки, которую мы создали и она у нас уже работает. Для этого в процедуре ПриОткрытии() в самом конце вставляем следующую команду: ЗавершитьРаботуСистемы(Ложь); в данном случае параметру ЗапрашиватьВозможность мы передаем значение «Ложь», что бы отсечь различные варианты дополнительных вопросов системы при закрытии, тем самым инициируем безусловное завершение работы 1С после выполнения данной внешней обработки. Для верности опять запускаем программу и выполняем обработку и убеждаемся, что она отработала и программа сама закрылась.

«C:\Program Files (x86)\1cv8\8.3.5.хххх\bin\1cv8.exe» ENTERPRISE /DisableStartupMessages /FС:\путь к базе /N»ИмяПользователя» /P»ПарольПользователя» /Execute с:\путь к обработке\самаобработка.epf

Расшифруем:

1. «C:\Program Files (x86)\1cv8\8.3.5.хххх\bin\1cv8.exe» ENTERPRISE — сам движок 1С в данном случае 8.3, проверьте путь с себя сами, он отличается в зависимости от версии и движка в том числе и не забываем править его после обновления последнего.

2. /DisableStartupMessages — отключаем все сообщения при старте системы.

4. /N»ИмяПользователя» /P»ПарольПользователя» — соответственно /N имя пользователя, также сразу без пробела и /P пароль.

5. /Execute с:\путь к обработке\самаобработка.epf — /Execute запускает нашу обработку, путь и название должно следовать после этого ключа.

Теперь все, остается только добавить в планировщик заданий наш cmd файл: avtozapusk1c.cmd , указав расписание его запуска.

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

Вот такие не хитрые инструменты помогают автоматизировать каждодневные рутинные операции, успехов Вам!

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

Создаем внешнюю обработку в 1С 8.3

Чтобы создать новую внешнюю обработку, используем конфигуратор. Через меню «Файл» выбираем команду создания «Новый…» и определяемся, что мы будем создавать внешнюю обработку. В открывшемся окне задаем имя, и при нажатии «Enter» оно заполняется автоматически. Также это имя вам предложит система в качестве названия файла при сохранении.

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

  • Реквизит – поле для установки номенклатуры;
  • Кнопку, которая выполнит вызов кода.

Добавляем реквизит «Номенклатура» с типом данных «СправочникСсылка.Номенклатура» в соответствующем разделе и кнопку «Показать» в меню «Команды» -> «Команды формы».

Чтобы на форме отразились добавленные данные, их необходимо перетащить в элементы формы, расположенные в левой верхней части. Есть возможность поменять местами элементы с помощью синих стрелок. Чтобы созданная нами кнопка выполняла задуманное, ей нужно назначить процедуру. Через контекстное меню выберем «Действие команды», и на вопрос, где нужен обработчик, ответим: «Создать на клиенте и процедуру на сервере».


Фрагмент 1

&НаКлиенте Процедура Показать(Команда) ПоказатьНаСервере(); КонецПроцедуры &НаСервере Процедура ПоказатьНаСервере() //Вставить содержимое обработчика. КонецПроцедуры

Мы выбрали создание процедуры на сервере, так как хотим в качестве результата получить выборку из базы данных. На клиенте у нас нет такой возможности, поэтому потребуется подключение к серверу, который и обменивается с БД данными. Теперь нам необходимо написать код, который реализует задуманное нами. Будет использоваться запрос и вывод всех документов через функцию «Сообщить()».


Фрагмент 2

&НаКлиенте Процедура Показать(Команда) ПоказатьНаСервере(Номенклатура); КонецПроцедуры &НаСервере Процедура ПоказатьНаСервере(Номенклатура) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | ЗаказКлиентаСостав.Ссылка КАК Ссылка | ИЗ | Документ.ЗаказКлиента.Состав КАК ЗаказКлиентаСостав | ГДЕ | ЗаказКлиентаСостав.Номенклатура = &Номенклатура"; Запрос.УстановитьПараметр("Номенклатура", Номенклатура); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Сообщить(ВыборкаДетальныеЗаписи.Ссылка); КонецЦикла; КонецПроцедуры

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

Чтобы разместить внешнюю обработку в разделе 1С, необходимо ей в модуле объекта прописать процедуру «СведенияОВнешнейОбработке». В основном меню обработки нажмите «Действия» и выберите «Модуль объекта». Здесь необходимо прописать все нужные для 1С настройки, чтобы система поняла, что от нее требуется и что за файл перед ней. На скриншоте изображен код функции «СведенияОВнешнейОбработке».

Функция СведенияОВнешнейОбработке() Экспорт ДанныеДляРег = Новый Структура(); ДанныеДляРег.Вставить("Наименование","Новая внешняя обработка"); ДанныеДляРег.Вставить("БезопасныйРежим", Истина); ДанныеДляРег.Вставить("Версия", "ver.: 1.001"); ДанныеДляРег.Вставить("Вид", "ДополнительнаяОбработка"); ТабЗнКоманды = Новый ТаблицаЗначений; ТабЗнКоманды.Колонки.Добавить("Идентификатор"); ТабЗнКоманды.Колонки.Добавить("Использование"); ТабЗнКоманды.Колонки.Добавить("Представление"); НовСтрока = ТабЗнКоманды.Добавить(); НовСтрока.Идентификатор = "НоваяВнешняяОбработка"; НовСтрока.Использование = "ОткрытиеФормы"; НовСтрока.Представление = "Новая внешняя обработка"; ДанныеДляРег.Вставить("Команды", ТабЗнКоманды); Возврат ДанныеДляРег; КонецФункции

Фрагмент 3

Подключение внешней обработки в 1С

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


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

  • Указать размещение объекта. Нажатием на «Не определено» мы открываем окно разделов и укажем, в каких разделах будет доступна операция;
  • Выбрать пользователей, у которых данная команда появится в меню «Дополнительные обработки» выбранных разделов без лишних настроек. Для этого в табличной части нужно выбрать пункт «Быстрый доступ» и добавить в правую половину ответственных пользователей;
  • На вкладке «Дополнительная информация» вы можете указать папку, в которой будет находиться загруженная обработка;
  • После нажатия клавиши «Записать» в выбранном разделе в меню «Дополнительные обработки» пользователи обнаружат нашу команду и смогут ею воспользоваться.

Если мы хотим внести изменения в нашу обработку, необходимо сначала выгрузить ее из базы. Для этого в справочнике «Дополнительные обработки и отчеты» найдите нужную строчку и воспользуйтесь командой «Выгрузить в файл…». Внесите изменения, сохраните обработку и через клавишу «Загрузить из файла…» найдите измененный файл epf, не меняя параметры. После записи все пользователи увидят внесенные изменения.

Если вы используете не типовую или снятую с поддержки базу 1С, то воспользуйтесь возможностью загрузить обработку через конфигуратор. В дереве объектов в разделе «Обработки» создайте новую обработку и через контекстное меню выберите «Заменить на внешнюю обработку, отчет…». Останется лишь настроить запуск внешней обработки из нужного раздела, включив добавленную обработку в нужную подсистему.


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