Как исправить ошибку "Поле объекта не обнаружено (ДоступенВыводНаДругихЯзыках)" во внешней печатной форме 1С:Бухгалтерии КОРП после обновления?

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

При обновлении конфигурации 1С:Бухгалтерия КОРП до новых релизов, например, до версии 3.0.102.11, пользователи и разработчики часто сталкиваются с ситуацией, когда ранее работавшие внешние печатные формы (ВПФ) перестают запускаться и выдают ошибку вида "Поле объекта не обнаружено (ДоступенВыводНаДругихЯзыках)". Эта проблема указывает на то, что типовая конфигурация была изменена, и в ее коде теперь ожидается наличие определенного реквизита, который отсутствует в структуре данных, формируемых вашей внешней печатной формой. Давайте подробно разберем, почему возникает эта ошибка и как ее эффективно устранить.

Что такое реквизит "ДоступенВыводНаДругихЯзыках" и его назначение?

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

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

Основные причины возникновения ошибки "Поле объекта не обнаружено"

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

  1. Изменение структуры типовой конфигурации: При каждом обновлении 1С разработчики могут вносить изменения в структуру данных и логику работы различных механизмов. В нашем случае, обновление конфигурации 1С:Бухгалтерия КОРП до версии 3.0.102.11, скорее всего, привело к появлению или более активному использованию реквизита ДоступенВыводНаДругихЯзыках в типовом функционале печати. Теперь, когда система пытается сформировать печатную форму, она ожидает, что этот реквизит будет доступен в коллекции параметров.

  2. Интеграция функционала мультиязычности: Появление реквизита ДоступенВыводНаДругихЯзыках является прямым следствием развития или более глубокой интеграции мультиязычного функционала в типовые решения. Этот реквизит позволяет управлять поведением печати в зависимости от выбранного языка интерфейса или необходимости вывода документа на иностранном языке.

  3. Несоответствие версий внешней печатной формы и типовой конфигурации: Внешние печатные формы, в отличие от встроенных в конфигурацию, не обновляются автоматически при обновлении основной базы. Они являются внешними объектами и продолжают работать по своим старым правилам, разработанным для предыдущих версий конфигурации. Если типовой функционал печати начинает ожидать наличие нового реквизита, а внешняя печатная форма его не предоставляет, возникает ошибка "Поле объекта не обнаружено". Это происходит, потому что ваша ВПФ формирует коллекцию параметров для печати по старому шаблону, в котором нет поля ДоступенВыводНаДругихЯзыках, а новый типовой код пытается к нему обратиться.

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

Пошаговое решение проблемы с ошибкой "Поле объекта не обнаружено"

Решение этой проблемы достаточно прямолинейно и заключается в адаптации вашей внешней печатной формы к новым требованиям конфигурации. Нам потребуется внести изменения непосредственно в код ВПФ.

Шаг 1: Идентификация проблемной внешней печатной формы

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

  1. Запустите проблемную печатную форму, чтобы вызвать ошибку.

  2. Внимательно изучите текст ошибки. Если в стеке вызовов или в описании ошибки упоминается путь к внешнему файлу (.epf или .erf) или имя внешней обработки/отчета, это подтверждает, что проблема именно в ВПФ.

Шаг 2: Открытие и анализ модуля объекта внешней печатной формы

Нам необходимо получить доступ к исходному коду вашей внешней печатной формы для внесения изменений.

  1. Откройте конфигуратор 1С:Предприятие.

  2. Перейдите в меню "Файл" -> "Открыть..." и выберите файл вашей внешней печатной формы (файл с расширением .epf для обработок или .erf для отчетов).

  3. После открытия ВПФ в конфигураторе, найдите дерево объектов обработки/отчета. Нам нужен модуль объекта. Обычно это либо "Модуль объекта", либо "Основная схема компоновки данных" (если это отчет) и связанный с ней модуль.

  4. Откройте Модуль объекта (или соответствующий модуль), где содержится логика формирования печатной формы.

Шаг 3: Поиск места формирования коллекции печатных форм

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

Мы ищем процедуру или функцию, которая отвечает за инициализацию этой коллекции и добавление в нее колонок. Чаще всего это одна из следующих процедур:

Используйте поиск по модулю (Ctrl+F) по словам "КоллекцияПечатныхФорм", "Колонки.Добавить". Нам нужно найти место, где уже добавляются колонки в эту коллекцию.

Шаг 4: Внесение изменений в код внешней печатной формы

После того как мы нашли подходящее место, где инициализируется КоллекцияПечатныхФорм и добавляются ее колонки, мы должны добавить новую колонку с именем ДоступенВыводНаДругихЯзыках.

Пример типичной структуры процедуры Печать и место для вставки кода:


Процедура Печать(МассивОбъектов, ОбъектыПечати, ПараметрыПечати, КоллекцияПечатныхФорм, АдресаФайловПечати, ДополнительныеПараметры) Экспорт

    // Проверяем, существует ли уже колонка, чтобы избежать повторного добавления
    Если КоллекцияПечатныхФорм.Колонки.Найти("ДоступенВыводНаДругихЯзыках") = Неопределено Тогда
        КоллекцияПечатныхФорм.Колонки.Добавить("ДоступенВыводНаДругихЯзыках");
    КонецЕсли;

    // Далее идет основной код формирования строк коллекции и вывода макета
    // ...
    // Пример добавления строки в коллекцию
    // НоваяСтрока = КоллекцияПечатныхФорм.Добавить();
    // НоваяСтрока.ИмяМакета = "МойМакет";
    // НоваяСтрока.ДоступенВыводНаДругихЯзыках = Ложь; // Или Истина, в зависимости от логики
    // ...

КонецПроцедуры

Критически важная строка, которую мы добавляем или ищем, если она уже есть, выглядит так:

КоллекцияПечатныхФорм.Колонки.Добавить("ДоступенВыводНаДругихЯзыках");

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

Разберем работу кода:

Мы рекомендуем добавить проверку на существование колонки (как в примере выше: Если КоллекцияПечатныхФорм.Колонки.Найти("ДоступенВыводНаДругихЯзыках") = Неопределено Тогда), чтобы избежать ошибок при повторном добавлении, если код ВПФ будет вызываться несколько раз или если колонка уже была добавлена в другом месте.

Шаг 5: Сохранение и тестирование

  1. После внесения изменений сохраните внешнюю печатную форму (Ctrl+S).

  2. Закройте конфигуратор.

  3. Запустите 1С:Предприятие в пользовательском режиме и проверьте работу исправленной внешней печатной формы. Ошибка "Поле объекта не обнаружено (ДоступенВыводНаДругихЯзыках)" должна исчезнуть, и форма должна сформироваться корректно.

Дополнительные рекомендации по решению и предотвращению подобных ошибок

Помимо прямого исправления кода, существуют общие рекомендации, которые помогают управлять внешними печатными формами и предотвращать подобные проблемы в будущем:

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

  2. Проверка целостности базы и очистка кэша: Иногда кажущиеся "поле объекта не обнаружено" ошибки могут быть вызваны проблемами с кэшем 1С или повреждением информационной базы. Мы советуем регулярно выполнять следующие действия:

    • Очистка кэша: Удалите содержимое папок кэша 1С. Эти папки обычно находятся по путям, аналогичным C:\Users\[ИмяПользователя]\AppData\Roaming\1C\1CE\ и C:\Users\[ИмяПользователя]\AppData\Local\1C\1CE\. Закройте все сеансы 1С перед очисткой кэша.

    • Тестирование и исправление информационной базы: В конфигураторе используйте меню "Администрирование" -> "Тестирование и исправление". Запустите проверку физической целостности базы данных и другие рекомендуемые проверки.

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

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

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

← На главную