Как правильно подключить внешнюю дополнительную обработку в 1С:Бухгалтерия 3.0 для добавления кнопок на формы документов?

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия IT и автоматизация бизнеса
← На главную

При работе с типовыми конфигурациями 1С, такими как 1С:Бухгалтерия 3.0 (БП 3.0), часто возникает необходимость расширить их функционал, добавив собственные обработки или отчеты. Один из самых гибких и рекомендуемых способов сделать это, не снимая конфигурацию с поддержки, — использование механизма Дополнительные отчеты и обработки (ДОР). Однако этот механизм имеет свои особенности, которые важно знать.

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

Пошаговое подключение внешней обработки в 1С:Бухгалтерия 3.0

Первая и самая частая проблема, с которой сталкиваются разработчики, — это невозможность увидеть или загрузить файл обработки через меню "Дополнительные отчеты и обработки" или появление ошибки при загрузке. Это происходит потому, что обычная внешняя обработка (которую мы открываем через "Файл -> Открыть") отличается от дополнительной обработки, предназначенной для интеграции в подсистемы конфигурации.

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

  1. Создание или модификация файла внешней обработки (.epf):

    Ваша внешняя обработка должна быть сохранена в формате .epf (External Processing File). Убедитесь, что ваш файл имеет именно это расширение, а не устаревший .ert (External Report/Tool), который использовался в 1С:Предприятие 7.7.

  2. Реализация функции СведенияОВнешнейОбработке():

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

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

    Разберем ключевые поля структуры:

    • Вид: Обязательно "ДополнительнаяОбработка". Именно это значение сообщает 1С, что перед ней дополнительная обработка, а не обычная.
    • Назначение: Массив строк с полными именами метаданных, к которым будет привязана обработка.
    • Команды: Таблица значений, описывающая каждую команду. Чтобы лучше понять разницу в реализации, изучите типы использования команд, а для более сложных интерфейсных задач рассмотрите добавление элементов формы без кодирования.
  3. Реализация процедур/функций, соответствующих командам:

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

    
    // Это процедура будет вызвана при нажатии кнопки с Идентификатором "СерверноеДействие"
    Процедура СерверноеДействие(ИдентификаторКоманды) Экспорт на Сервере
        // Здесь ваш код, который будет выполняться на сервере
        Сообщить("Серверное действие '"+ ИдентификаторКоманды +"' выполнено!", СтатусСообщения.Важное);
    КонецПроцедуры
    
    // Для команды с Использование = "ВызовКлиентскогоМетода"
    Процедура МояКлиентскаяКомандаДействие(ИдентификаторКоманды) Экспорт на Клиенте
        // Здесь ваш код, который будет выполняться на клиенте
        Сообщить("Клиентское действие '"+ ИдентификаторКоманды +"' выполнено!");
    КонецПроцедуры
    

    Важно: для серверных процедур указывайте Экспорт на Сервере, для клиентских — Экспорт на Клиенте. Параметры, передаваемые в эти процедуры, зависят от контекста вызова.

  4. Реализация функции ПолучитьФорму() (для команды с Использование = "ОткрытиеФормы"):

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

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

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

  5. Подключение обработки через интерфейс 1С:

    После того как вы подготовили файл .epf с необходимыми функциями, можно переходить к подключению в режиме 1С:Предприятие через раздел "НСИ и администрирование" -> "Печатные формы, отчеты и обработки".

  6. Настройка прав доступа и использования:

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

    1. В списке дополнительных отчетов и обработок выделите вашу обработку.
    2. Нажмите кнопку "Настроить использование".
    3. В открывшейся форме укажите роли или конкретных пользователей, которым будет доступна эта обработка.

Важные аспекты и дополнительные советы

Безопасный режим выполнения

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

Передача параметров в форму обработки

Когда вы открываете форму обработки через функцию ПолучитьФорму(), вы можете передавать в нее необходимые параметры. В этом вам поможет стандартная методика программного взаимодействия обработки с контекстом формы документа, позволяющая эффективно передавать ссылки, а также обновить форму документа программно при необходимости изменения данных.

В самой форме обработки вы сможете получить этот параметр в обработчике события ПриСозданииНаСервере:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Если Параметры.Свойство("ТекущийДокумент") Тогда
        ЭтотОбъект.СсылкаНаОбъектОснование = Параметры.ТекущийДокумент;
    КонецЕсли;
КонецПроцедуры

Обновление и отладка

Если вы внесли изменения в код, вам не нужно удалять её и добавлять заново — достаточно нажать кнопку "Обновить из файла". При этом отладка и обновление внешних обработок в режиме 1С:Предприятие позволяют быстро исправлять ошибки в серверном или клиентском коде без потери текущих настроек прав в базе данных.

Расположение команд

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

Заключение

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

← На главную