При работе в современных конфигурациях 1С, таких как Бухгалтерия предприятия 3.0, Зарплата и управление персоналом 3.1 или ERP 2, специалисты часто сталкиваются с необходимостью массового изменения данных. Одной из самых популярных внешних утилит для этих целей является «Универсальные подбор и обработка объектов (с возможностью обработки табличных частей)» версии 1.9.13. Однако при попытке её запуска на платформе 8.3 (особенно версий 8.3.15 и выше) пользователи часто получают критическую ошибку: Поле объекта не обнаружено (ФормаОтмена). В этой статье мы подробно разберем, почему возникает эта проблема и как её решить несколькими способами.
Для начала проанализируем ситуацию и выясним корень проблемы. Обработка версии 1.9.13 была разработана в эпоху платформы 1С 8.2 и базируется на технологии обычных форм. Современные же конфигурации работают на управляемых формах.
Ошибка ФормаОтмена возникает по следующим причинам:
Форма существенно изменился.Как показывает практика и сообщения на форумах, наиболее простым способом заставить старую обработку работать является принудительная смена режима запуска системы. Разберем по шагам, как это сделать через конфигуратор:
В этом режиме 1С создает среду, максимально приближенную к старым версиям платформы, что позволяет коду обработки 1.9.13 корректно инициализировать все элементы формы, включая злополучную кнопку ФормаОтмена.
Если вам необходимо работать в обычном тонком клиенте и вы не хотите каждый раз переключать режимы запуска, мы можем рассмотреть вариант внесения небольших изменений в сам код внешней обработки. Рассмотрим подробнее, что нужно сделать:
Откроем внешнюю обработку в конфигураторе (Файл -> Открыть), перейдем в модуль формы и найдем процедуру, где происходит инициализация кнопок или закрытие формы. Обычно проблемная строка выглядит так:
// Пример проблемного кода
ЭтаФорма.ЭлементыФормы.ФормаОтмена.Доступность = Ложь;
Чтобы исправить ошибку, мы можем использовать конструкцию Попытка...Исключение или просто закомментировать обращение к элементу, который не критичен для логики обработки данных:
Попытка
ЭтаФорма.ЭлементыФормы.ФормаОтмена.Доступность = Ложь;
Исключение
// Если поле не найдено, просто игнорируем ошибку
Сообщить("Предупреждение: Элемент ФормаОтмена не найден, работа продолжается.");
КонецПопытки;
Важно: Если вы не являетесь программистом, будьте осторожны при редактировании кода. Любая синтаксическая ошибка может привести к полной неработоспособности инструмента.
Проанализируем ситуацию: стоит ли вообще использовать устаревшую обработку 1.9.13? Основная причина её популярности — работа с табличными частями. Однако в последних релизах 1С:Бухгалтерия 3.0 встроенный механизм «Групповое изменение реквизитов» уже получил этот функционал.
Рассмотрим, как добраться до этой функции:
Это штатный и безопасный способ, который гарантированно не вызовет ошибок типа Поле объекта не обнаружено, так как он полностью адаптирован под управляемый интерфейс и актуальную версию платформы 8.3.
Независимо от того, какой способ запуска вы выбрали, помните о безопасности данных. Использование инструментов типа «Универсальный подбор и обработка» на конфигурациях уровня КОРП требует особого внимания:
ПолныеПрава или АдминистраторСистемы.Подводя итог, можно сказать, что ошибка ФормаОтмена — это классический симптом «конфликта поколений» в 1С. Мы выяснили, что запуск через Толстый клиент является самым надежным решением для этой конкретной версии обработки, но в долгосрочной перспективе рекомендуем переходить на встроенные средства платформы или искать адаптированные версии обработки для управляемых форм (версии 2.0 и выше).