Как адаптировать расширение 1С:Бухгалтерия после обновления: исправление ошибок объектов ЭДО

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

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

В чем причина ошибки «Таблица не найдена»?

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

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

Шаг 1. Сопоставление старых и новых объектов ЭДО

Первым делом нам необходимо понять, на что заменять отсутствующие объекты. Рассмотрим таблицу соответствия, актуальную для перехода на БЭД версии 1.9 и выше:

  1. Перечисление.СостоянияВерсийЭД — заменено на Перечисление.СостоянияДокументовЭДО.
  2. Перечисление.ВидыЭД — заменено на Перечисление.ТипыДокументовЭДО.
  3. РегистрСведений.СостоянияЭД — заменен на основной регистр РегистрСведений.СостоянияДокументовЭДО.

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

Шаг 2. Поиск скрытых ссылок в расширении

Разберем, где именно в коде и метаданных могут прятаться ссылки на старые объекты. Обычный поиск по конфигурации (Ctrl+Shift+F) в пределах расширения часто не дает результатов, так как ссылки могут находиться внутри динамических списков или схем компоновки данных (СКД), которые хранятся в бинарном или XML-виде.

Для эффективного поиска выполним следующие действия:

  1. Откроем расширение в Конфигураторе.
  2. Если поиск не находит текст СостоянияЭД, перейдем к проверке форм, добавленных в расширение.
  3. Особое внимание уделим формам списков документов (Реализации, Поступления, Акты).

Шаг 3. Исправление запроса динамического списка

Посмотрим на пример типичной ошибки в запросе динамического списка. Часто разработчики расширений заимствуют форму и модифицируют ее. В свойствах реквизита Список (тип ДинамическийСписок) хранится текст запроса, содержащий ЛЕВОЕ СОЕДИНЕНИЕ. Рассмотрим, как выглядит проблемный участок:


// Старый вариант запроса, вызывающий ошибку
ВЫБРАТЬ
    ДокументРеализация.Ссылка,
    СостоянияЭД.Состояние КАК СостояниеЭДО
ИЗ
    Документ.РеализацияТоваровУслуг КАК ДокументРеализация
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияЭД КАК СостоянияЭД
        ПО ДокументРеализация.Ссылка = СостоянияЭД.Ссылка

Чтобы исправить это, нам необходимо вручную отредактировать запрос. Нажмем на гиперссылку «Открыть» в свойстве «Настройка списка» или «Текст запроса». Нам нужно заменить старый регистр на новый. Проанализируем обновленный синтаксис:


// Исправленный вариант запроса
ВЫБРАТЬ
    ДокументРеализация.Ссылка,
    СостоянияЭДО.Состояние КАК СостояниеЭДО
ИЗ
    Документ.РеализацияТоваровУслуг КАК ДокументРеализация
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияДокументовЭДО КАК СостоянияЭДО
        ПО ДокументРеализация.Ссылка = СостоянияЭДО.Документ

Обратите внимание: в новом регистре СостоянияДокументовЭДО ключевое поле называется Документ, а не Ссылка. Это критически важное изменение, без которого соединение таблиц не будет работать корректно.

Шаг 4. Обновление перечислений и типов данных

Если в вашем коде или в реквизитах расширения используются ссылки на старые перечисления, их нужно переподключить. Разберем алгоритм:

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

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

Шаг 5. Работа с «фантомными» ошибками

Бывают ситуации, когда вы исправили все запросы и модули, но ошибка {(62, 21)}: Таблица не найдена сохраняется. Это происходит из-за механизма условного оформления динамического списка. Рассмотрим по шагам, как это исправить:

  1. Откроем форму списка в расширении.
  2. Перейдем на закладку «Реквизиты» и выберем Список.
  3. В окне свойств найдем пункт «Условное оформление».
  4. Проверим все элементы оформления. Если в условиях отбора используются поля старого регистра или старые значения перечислений, система выдаст ошибку еще до выполнения основного запроса.
  5. Удалим или скорректируем эти правила оформления.

Советы для опытных разработчиков

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

Воспользуемся функцией выгрузки конфигурации в файлы. Для этого выберем пункт меню «Конфигурация» — «Разработка конфигурации» — «Выгрузить конфигурацию в файлы». После этого мы сможем использовать любой текстовый редактор с поддержкой поиска по всей папке (например, VS Code). Ищем все вхождения СостоянияЭД и СостоянияВерсийЭД во всех XML-файлах форм. Это позволит быстро найти забытые привязки в схемах компоновки данных или настройках отчетов.

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

Подводя итог, адаптация расширения при глобальном обновлении БЭД — это не просто поиск и замена текста, а работа с архитектурными изменениями. Понимая, как связаны новые регистры и как динамические списки хранят свои запросы, мы можем оперативно восстановить работоспособность системы без привлечения сторонних специалистов.

← На главную