При обслуживании большого количества однотипных информационных баз (например, 20 и более узлов для разных юридических лиц) ручное обновление внешних отчетов и обработок становится крайне трудозатратным процессом. Если все базы построены на базе Библиотеки стандартных подсистем (БСП) актуальных версий, мы можем автоматизировать этот процесс, используя встроенные механизмы платформы и сторонние инструменты. В данной статье мы разберем основные подходы к решению этой задачи: от использования расширений до написания сценариев автоматизации.
Один из самых простых и надежных способов — перенос логики внешних отчетов в расширения конфигурации. Рассмотрим, почему это удобно. Во-первых, расширения позволяют централизованно управлять кодом. Во-вторых, современные версии платформы позволяют обновлять расширения «на лету», если они не содержат изменений структуры данных (метаданных).
Проанализируем связку расширений с инструментом «Обновлятор-1С». Этот программный комплекс позволяет выполнять пакетные операции над списком баз. Мы можем подготовить одно расширение, содержащее все необходимые дополнительные отчеты, и через «Обновлятор» запустить задачу «Установить расширение» для всех 20 баз одновременно. Это занимает считанные минуты.
Важный нюанс: если вы решите перенести внешние печатные формы в расширение, вам придется программно добавлять команды в модули менеджеров соответствующих документов. Однако, если отчеты реализованы на базе СКД, их перенос в расширение потребует лишь копирования схемы и настройки макетов.
Разберем классический способ автоматизации через скрипты. Мы можем запустить сеанс 1С в режиме предприятия с параметром /execute, указав путь к специально подготовленной «служебной» обработке. Эта обработка при запуске будет выполнять следующие действия:
ДополнительныеОтчетыИОбработки.ЗавершитьРаботуСистемы().Посмотрим на пример кода, который может использоваться внутри такой «обновляющей» обработки для регистрации объекта в БСП:
// Пример программного обновления внешней обработки в справочнике БСП
ОбъектСправочника = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию("МояПечатнаяФорма");
Если Не ОбъектСправочника.Пустая() Тогда
Объект = ОбъектСправочника.ПолучитьОбъект();
ДвоичныеДанныеФайла = Новый ДвоичныеДанные("C:\Updates\NewReport.epf");
Объект.ХранилищеОбработки = Новый ХранилищеЗначения(ДвоичныеДанныеФайла);
Объект.Версия = "1.0.0.5";
// Вызов метода БСП для корректной регистрации изменений
ДополнительныеОтчетыИОбработки.ЗаписатьОбъектВТранзакции(Объект);
Сообщить("Объект успешно обновлен");
КонецЕсли;
Для администраторов и разработчиков, предпочитающих современные методы DevOps, рекомендуется обратить внимание на утилиту ibcmd и интерпретатор OneScript (oscript.io). Выясним, в чем их преимущество.
Утилита ibcmd позволяет взаимодействовать с базой данных без запуска тяжелого графического клиента. С ее помощью можно выполнять импорт и экспорт данных. В свою очередь, OneScript позволяет написать сценарий на языке 1С, который будет перебирать список ваших баз и выполнять в них код через COM-соединение или HTTP-сервисы.
Существуют готовые библиотеки для OneScript, такие как v8runner, которые упрощают запуск задач в нескольких информационных базах. Это позволяет исключить человеческий фактор и автоматизировать добавление отчетов, даже если их еще нет в базе-приемнике.
Если ваши базы доступны по сети, проанализируем архитектуру с центральной «эталонной» базой. В каждой базе-клиенте можно опубликовать небольшой HTTP-сервис, принимающий POST-запросы.
Алгоритм работы будет следующим:
ДополнительныеОтчетыИОбработки.Этот метод считается наиболее стабильным в современных реалиях, так как он не зависит от настроек COM-соединения и разрядности сервера 1С (32/64 бит), которые часто становятся причиной ошибок при пакетной обработке баз.
Независимо от выбранного способа доставки файла (будь то скрипт или HTTP), крайне важно правильно зарегистрировать отчет в логике БСП. Рассмотрим, какие методы следует использовать для корректной работы механизмов безопасности и прав доступа.
При программном создании нового элемента справочника необходимо вызвать метод регистрации, чтобы система проставила настройки публикации и создала необходимые записи в регистрах сведений:
// Регистрация объекта через интерфейс БСП
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.ПараметрыРегистрацииДляОбновления() ;
ПараметрыРегистрации.ЗаписатьВТранзакции = Истина;
ДополнительныеОтчетыИОбработки.ЗарегистрироватьОбъект(СсылкаНаОбъект, ПараметрыРегистрации);
Использование этого метода гарантирует, что 1С правильно определит Безопасный режим для вашей обработки и она появится в нужных разделах интерфейса у пользователей.
Подводя итоги, выберем оптимальный путь развития:
Помните, что при автоматизации массового обновления всегда следует сначала протестировать скрипт на одной копии базы, чтобы убедиться в корректности заполнения всех реквизитов справочника ДополнительныеОтчетыИОбработки, таких как Размещение и Команды.