Часто разработчики и администраторы 1С сталкиваются с ситуацией: внешняя обработка успешно написана, зарегистрирована в справочнике «Дополнительные отчеты и обработки», указаны все необходимые разделы и права, но заветная кнопка в интерфейсе пользователя так и не появляется. Проблема может крыться как в программном коде, так и в особенностях настройки самой платформы «1С:Предприятие 8.3» на базе Библиотеки стандартных подсистем (БСП). Рассмотрим подробно и пошагово, как выявить и устранить причину этой неисправности.
Для того чтобы система распознала обработку как «дополнительную» и смогла вывести её команды в интерфейс, в модуле объекта должна присутствовать экспортная функция СведенияОВнешнейОбработке. Проведем анализ обработки на наличие ошибок и структуры регистрационных данных. Важно не только наличие функции, но и правильное заполнение таблицы команд.
Разберем пример кода, который должен быть в модуле объекта (также вы можете использовать готовый шаблон дополнительной обработки):
Функция СведенияОВнешнейОбработке() Экспорт
РегистрационныеДанные = Новый Структура;
РегистрационныеДанные.Вставить("Наименование", "Моя обработка");
РегистрационныеДанные.Вставить("Вид", "ДополнительнаяОбработка");
РегистрационныеДанные.Вставить("Версия", "1.0");
РегистрационныеДанные.Вставить("БезопасныйРежим", Ложь);
// Определение команд
тзКоманд = Новый ТаблицаЗначений;
тзКоманд.Колонки.Добавить("Представление");
тзКоманд.Колонки.Добавить("Идентификатор");
тзКоманд.Колонки.Добавить("Использование");
тзКоманд.Колонки.Добавить("ПоказыватьОповещение");
тзКоманд.Колонки.Добавить("Модификатор");
НоваяКоманда = тзКоманд.Добавить();
НоваяКоманда.Представление = "Открыть мою обработку";
НоваяКоманда.Идентификатор = "ОткрытьОбработку";
НоваяКоманда.Использование = "ОткрытиеФормы"; // Важно: для открытия формы
НоваяКоманда.ПоказыватьОповещение = Истина;
РегистрационныеДанные.Вставить("Команды", тзКоманд);
Возврат РегистрационныеДанные;
КонецФункции
Обратите внимание на поле Вид. Если вы укажете ЗаполнениеОбъекта или ПечатнаяФорма, обработка не появится в общем меню «Сервис» или «Дополнительные обработки», а будет доступна только внутри конкретных документов. Также проверьте, что в поле Использование указано ОткрытиеФормы, если вы хотите вызвать именно форму обработки.
В управляемых формах для корректной работы БСП рекомендуется добавить вызов стандартных процедур в модуле формы, что упрощает отладку внешних обработок. Проанализируем код процедуры ПриСозданииНаСервере:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Стандартный вызов для работы дополнительных отчетов и обработок
ДополнительныеОтчетыИОбработки.ПриСозданииНаСервере(ЭтаФорма);
КонецПроцедуры
Хотя этот шаг чаще влияет на работоспособность уже открытой обработки, в некоторых версиях конфигураций без этой привязки механизмы регистрации команд могут отрабатывать некорректно, что требует навыков программного изменения форм.
Выясним, включена ли вообще возможность использования внешних обработок в вашей базе. Если общая настройка отключена, никакие программные манипуляции не помогут. Пройдем по следующему пути:
Важно: если этот флажок снят, команды дополнительных обработок исчезнут из всех разделов интерфейса для всех пользователей без исключения. Убедитесь, что галочка установлена.
После загрузки файла в справочник «Дополнительные отчеты и обработки» необходимо выполнить ручную настройку видимости:
Если в справочнике всё настроено, но в разделе «Продажи» всё равно нет пункта «Дополнительные обработки», значит, эта команда скрыта в настройках самой панели действий. Разберем, как её вывести:
Теперь в разделе появится гиперссылка Дополнительные обработки. Однако, нажав на неё, пользователь может увидеть пустое окно. Это подводит нас к следующему шагу.
В современных конфигурациях 1С реализован механизм персональной настройки. Даже если администратор разрешил использование обработки, пользователь должен сам добавить её в свой рабочий список (если она не добавлена в «Быстрый доступ» принудительно). Рассмотрим действия пользователя:
После этого команда появится в списке и будет доступна для запуска.
Если под администратором всё работает, а под обычным пользователем (например, менеджером) — нет, проанализируем роли (поможет отчет диагностики прав и ролей в 1С). Для работы с внешними обработками у пользователя должны быть назначены следующие права:
Если в конфигурации включен механизм RLS (Ограничение доступа на уровне записей) (удобно анализировать через отчет по анализу профилей и ограничений RLS), проверьте, не входит ли обработка в группу доступа, которая закрыта для данного пользователя. Также в некоторых версиях БСП необходимо, чтобы у пользователя была роль ИнтерактивноеОткрытиеВнешнихОбработок, если метод использования подразумевает прямое открытие файла.
Иногда система «запоминает» старое состояние интерфейса. Если вы внесли изменения в код или настройки, но они не применились, попробуйте следующие действия:
%AppData%\1C\1cv8).Проанализировав все вышеперечисленные шаги, мы видим, что проблема чаще всего кроется не в ошибке кода, а в многоуровневой системе фильтрации интерфейса БСП: Функциональная опция -> Справочник (Размещение) -> Настройка панели действий -> Настройка списка пользователя. Последовательная проверка каждого уровня гарантированно вернет вашу обработку в пользовательский интерфейс.