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

Программист 1С v8.3 (Обычные формы) 1С:Управление торговлей Торговля и дистрибуция
← На главную

При работе с платформой 1С:Предприятие 8, особенно при использовании конфигураций на обычных формах, часто возникает необходимость добавить новую внешнюю обработку или другой объект конфигурации в главное меню. Однако этот процесс не всегда интуитивно понятен, особенно когда сталкиваемся с сочетанием обычных и управляемых форм, как в рассматриваемом нами случае с конфигурацией «Управление торговлей 10» (УТ 10) и внешней обработкой, разработанной на тонких (управляемых) формах.

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

Понимание типов форм и приложений в 1С:Предприятии

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

  1. Обычные формы и обычное приложение:

    Конфигурации, разработанные на более ранних версиях платформы (например, УТ 10, УПП 1.3), используют так называемое обычное приложение и обычные формы. В этом режиме интерфейс пользователя строится на основе объектов метаданных Интерфейсы. Меню и панели инструментов жестко определяются в конфигурации и могут быть изменены через Конфигуратор или, в ограниченной степени, пользователем в режиме 1С:Предприятия через меню Сервис - Настройка - Команды, но только для команд, уже включенных в используемый интерфейс.

  2. Управляемые формы и управляемое приложение:

    Современные конфигурации (начиная с 1С:Предприятия 8.2, включая 8.3) используют управляемое приложение и управляемые формы. Их командный интерфейс строится по принципу Подсистем. Здесь внешний вид и состав меню адаптируется под пользователя и устройство (толстый клиент, тонкий клиент, веб-клиент, мобильное приложение). Команды добавляются путем включения объектов конфигурации в подсистемы и настройки командного интерфейса этих подсистем. Внешние обработки для управляемого приложения регистрируются через специальный механизм "Дополнительные отчеты и обработки".

В нашей ситуации автор использует внешнюю обработку на тонких формах (то есть, предназначенную для управляемого приложения), но пытается интегрировать её в конфигурацию Управление торговлей 10, которая работает на обычных формах. Это смешение является ключевым моментом для понимания проблемы.

Механизм добавления команд для конфигураций на обычных формах (1С:Управление торговлей 10)

Если вы работаете с конфигурацией на обычных формах, такой как УТ 10, процесс добавления новой команды в главное меню (например, для запуска внешней обработки) требует внесения изменений в конфигурацию через Конфигуратор. Давайте разберем этот процесс по шагам.

  1. Понимание меню Сервис - Настройка - Команды:

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

  2. Открытие конфигуратора:

    Для добавления команды нам необходимо запустить 1С:Предприятие в режиме Конфигуратора. Это можно сделать через кнопку «Конфигуратор» в окне выбора информационных баз.

  3. Поиск и изменение объекта Интерфейсы:

    В дереве конфигурации найдите ветку Интерфейсы. В конфигурациях на обычных формах обычно существует несколько интерфейсов (например, «Полный», «Бухгалтер», «Менеджер» и т.д.). Ваша задача — определить, какой именно интерфейс используется текущим пользователем или в какой интерфейс вы хотите добавить команду.

    Чаще всего пользователи работают с «Полным» интерфейсом, либо с интерфейсом, назначенным им в настройках пользователя (Сервис - Пользователи - Настройка дополнительных прав пользователя или аналогично, в зависимости от конфигурации).

  4. Добавление команды в выбранный интерфейс:

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

    1. Создание нового пункта меню: Если вы хотите создать новый пункт меню (например, «Мои обработки»), нажмите правой кнопкой мыши на корневом элементе меню и выберите Вставить элемент управления, затем укажите Тип элемента управления: Меню и задайте ему заголовок.
    2. Добавление команды в существующий пункт меню: Выберите существующий пункт меню (например, «Сервис»), нажмите правой кнопкой мыши на нем и выберите Вставить элемент управления.
    3. Настройка элемента управления: В открывшемся окне свойств нового элемента управления:
      • Установите Тип элемента управления: Команда.
      • В поле Действие (Action) необходимо указать имя процедуры, которая будет вызвана при выборе этой команды. Эту процедуру нам предстоит создать.
      • Задайте Заголовок (Caption), который будет отображаться в меню (например, «Моя внешняя обработка»).
  5. Создание процедуры для запуска обработки:

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

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

    
    Процедура ОткрытьМоюВнешнююОбработку() Экспорт
        // Укажите полный путь к вашей внешней обработке
        // Важно: путь должен быть доступен с клиентской машины,
        // либо обработка должна быть предварительно зарегистрирована в справочнике внешних обработок.
        Перем ПутьКФайлуОбработки;
        
        // Пример 1: Открытие по фиксированному пути
        ПутьКФайлуОбработки = "C:\МоиОбработки\МояОбработка.epf";
        
        // Пример 2: Открытие через стандартный механизм внешних обработок
        // Если обработка уже зарегистрирована в справочнике "ВнешниеОбработки"
        // и вы хотите использовать этот механизм.
        // Этот подход предпочтительнее, так как обеспечивает централизованное хранение и обновление.
        // Если обработка на управляемых формах, то прямое открытие "как обычной" может вызвать проблемы.
        // Для УТ 10 (обычные формы) внешние обработки регистрируются в "Сервис - Внешние печатные формы и обработки - Внешние обработки".
        // Предположим, что внешняя обработка уже зарегистрирована.
        
        // Попытка открыть внешнюю обработку через механизм "Внешних обработок"
        Попытка
            // Это более универсальный способ, если обработка зарегистрирована
            ОбъектВнешнейОбработки = ВнешниеОбработки.Создать(ПутьКФайлуОбработки, Ложь, "МояВнешняяОбработка"); // Имя может быть любое, главное чтобы уникальное для сеанса
            ОбъектВнешнейОбработки.Открыть();
        Исключение
            // Если обработка не зарегистрирована или произошла ошибка
            Сообщить("Ошибка при открытии внешней обработки: " + ОписаниеОшибки());
            
            // Альтернативный вариант: прямое создание и открытие,
            // но может не сработать для управляемых форм в обычном приложении.
            Попытка
                // Этот код скорее подходит для обычных форм обработки.
                // Для управляемых форм в обычном приложении может потребоваться
                // более сложный механизм или переработка обработки на обычные формы.
                ВнешняяОбработка = ВнешниеОбработки.Создать(ПутьКФайлуОбработки);
                ВнешняяОбработка.Открыть();
            Исключение
                Сообщить("Не удалось открыть внешнюю обработку '" + ПутьКФайлуОбработки + "'. Проверьте путь и тип формы обработки. " + ОписаниеОшибки());
            КонецПопытки;
        КонецПопытки;
    КонецПроцедуры
    

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

  6. Обновление конфигурации базы данных:

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

  7. Проверка в режиме 1С:Предприятия:

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

Механизм добавления команд для конфигураций на управляемых формах (для понимания контекста обработки)

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

  1. Регистрация внешней обработки:

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

  2. Назначение раздела (подсистемы):

    При регистрации обработки на вкладке Команды вы указываете раздел (подсистему), к которому относится команда. Это определяет, в какой функциональной области она будет отображаться.

  3. Настройка командного интерфейса подсистемы:

    После назначения подсистемы, в Конфигураторе для этой подсистемы (в ветке Подсистемы) можно настроить её командный интерфейс. Через «Настройки – Настройка навигации» или непосредственно в редакторе командного интерфейса подсистемы вы можете добавить команду внешней обработки в список «Выбранные команды».

  4. Видимость подсистемы:

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

Почему этот механизм не сработал для вас: В вашем случае, конфигурация УТ 10 работает в режиме обычного приложения. Меню Сервис - Настройка - Команды относится именно к интерфейсу обычного приложения и не имеет прямого отношения к командному интерфейсу подсистем управляемого приложения. Поэтому попытка настроить видимость через подсистемы (как в сообщениях 11 и 12) не дала результата в контексте обычного приложения.

Анализ ситуации и выявление причины отсутствия команды

Исходя из нашего анализа, мы можем точно определить, почему ваша внешняя обработка не появилась в меню Сервис - Настройка - Команды:

  1. Отсутствие команды в активном интерфейсе:

    Главная причина заключается в том, что команда для запуска вашей обработки не была явно добавлена в объект метаданных Интерфейс, который используется текущим пользователем в конфигурации УТ 10. Как мы выяснили, меню Сервис - Настройка - Команды показывает только те команды, которые уже включены в этот интерфейс.

  2. Смешение типов форм:

    Ваша внешняя обработка использует управляемые (тонкие) формы, тогда как конфигурация УТ 10 работает на обычных формах. Это создаёт методологический конфликт. Даже если вы добавите команду в интерфейс обычного приложения, прямое открытие управляемой формы может вызвать ошибку или быть некорректно обработано платформой, если клиент запущен в режиме обычного приложения. Идеальным решением в такой ситуации было бы переделать внешнюю обработку на обычные формы, чтобы она полностью соответствовала конфигурации-хозяину.

  3. Неправильное применение механизмов:

    Попытки настроить видимость через подсистемы (как в сообщениях 11 и 12) были логичны для управляемого приложения, но не применимы к меню обычного приложения. Это типичная ошибка, возникающая из-за незнания различий между двумя моделями интерфейса 1С.

Заключение

Для успешного добавления внешней обработки или любого другого объекта конфигурации в главное меню 1С:Предприятия на обычных формах (например, в УТ 10), необходимо выполнить следующие ключевые действия:

  1. Определить активный интерфейс пользователя в Конфигураторе.
  2. Внести изменения в структуру этого интерфейса, добавив новую команду.
  3. Назначить этой команде процедуру-обработчик, которая будет отвечать за запуск вашей внешней обработки.
  4. Обновить конфигурацию базы данных.

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

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

← На главную