Почему внешняя обработка не видит документы, созданные в расширении 1С

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

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

Анализ механизмов работы метаданных в расширениях

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

Выясним причину, по которой справочник виден, а документ — нет. Чаще всего это связано не с физическим отсутствием объекта в базе, а с фильтрами, которые накладывает платформа или код самой обработки при построении списка доступных типов данных.

Проблема 1: Права доступа и роли в расширении

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

В расширении необходимо создать собственную роль (например, ДобавленныеОбъекты), включить в неё права на «Чтение», «Просмотр» и «Интерактивное добавление» для нового документа. Затем эту роль нужно назначить пользователю через профили групп доступа или непосредственно в конфигураторе (если это допустимо политикой безопасности). При необходимости проверить права ролей на конкретный объект метаданных можно использовать обработку для быстрой проверки прав доступа.

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

Проблема 2: Безопасный режим работы внешней обработки

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

Проанализируем шаги для исправления:

  1. Перейдем в раздел Администрирование — Печатные формы, отчеты и обработки.
  2. Найдем нашу обработку в списке.
  3. Проверим состояние флага Безопасный режим. Если он включен, обработка может не видеть типы данных, определенные в расширениях.
  4. Попробуем запустить обработку через меню Файл — Открыть (предварительно убедившись, что в настройках пользователя разрешено открытие внешних отчетов и обработок). Если при прямом открытии документ появился — проблема в профиле безопасности БСП.

Проблема 3: Функциональные опции

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

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

Проблема 4: Кэширование метаданных и версия платформы

На платформе 8.3.17 (как в нашем примере) работа с динамическим обновлением расширений иногда дает сбои. Кэш метаданных на стороне сервера или клиента может хранить старую структуру дерева объектов. Посмотрим, как принудительно обновить эти данные. Регламентное техническое обслуживание и корректное обновление баз осуществляется через программу для автоматического архивирования и тестирования 1С, работающую по расписанию.

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


Попытка
    ТипДокумента = Тип("ДокументСсылка.ИмяВашегоДокументаИзРасширения");
    Если ТипДокумента = Неопределено Тогда
        Сообщить("Тип документа не найден в текущем сеансе!");
    Иначе
        Сообщить("Тип документа успешно определен: " + Строка(ТипДокумента));
    КонецЕсли;
Исключение
    Сообщить("Ошибка при определении типа: " + ОписаниеОшибки());
КонецПопытки;

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

Особенности универсальной обработки «Загрузка данных из табличного документа»

Посмотрим на пример работы конкретной обработки ЗагрузкаДанныхИзТабличногоДокумента_УФ_v2.epf. Эта обработка строит дерево доступных объектов для загрузки, перебирая коллекции метаданных. В некоторых версиях кода используется прямое обращение к Метаданные.Документы.

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

Итоговый чек-лист для решения проблемы

Подведем итоги и составим план действий для восстановления видимости документов:

  1. Проверяем активность расширения: Убеждаемся, что в списке расширений у нужного нам стоит галочка «Активно» и отсутствуют ошибки применимости.
  2. Настраиваем роли: Внутри расширения создаем роль, даем права на документ и назначаем её пользователю.
  3. Отключаем безопасный режим: Если обработка внешняя, проверяем её работу с выключенным безопасным режимом.
  4. Проверяем ФО: Убеждаемся, что документ не входит в состав выключенных функциональных опций.
  5. Программный тест: Используем функцию Тип() для проверки доступности метаданных в коде.

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

← На главную