← На главную
При работе с платформой 1С:Предприятие версии 8.3 и расширениями конфигураций разработчики часто сталкиваются с различными нюансами и ошибками. Одна из таких проблем, которая может возникнуть при попытке создать план обмена в расширении и включить в него заимствованные объекты из основной конфигурации, проявляется в виде ошибки "SDBL ожидается имя таблицы (pos=6)". Рассмотрим подробнее причину возникновения этой ошибки и способы ее устранения, а также важные особенности использования планов обмена в расширениях.
Представим ситуацию: у нас есть платформа 8.3.18, конфигурация и расширение работают в режиме совместимости 8.3.14. Мы выполняем следующие шаги:
- Добавляем в расширение справочник из основной конфигурации.
- В расширении создаем новый план обмена.
- В состав этого нового плана обмена добавляем заимствованный справочник.
- Пытаемся выбрать изменения из плана обмена или выполнить другие операции, связанные с регистрацией, и получаем критическую ошибку: "SDBL ожидается имя таблицы (pos=6)".
Выясним причину этой ошибки и разберем пути ее решения.
Причина ошибки и ее исправление путем обновления платформы
Анализируя ситуацию, мы обнаруживаем, что данная ошибка является известной проблемой платформы 1С:Предприятие, которая была официально зарегистрирована и исправлена в определенных версиях. Это означает, что если ваша текущая версия платформы находится ниже той, в которой ошибка была устранена, вы столкнетесь с этим поведением.
Согласно информации из бюллетеней ошибок 1С, проблема, приводящая к ошибке "SDBL ожидается имя таблицы" при работе с планами обмена в расширениях, была исправлена в следующих версиях технологической платформы:
- 8.3.16.1973
- 8.3.17.2127
- 8.3.18.1433 (обратите внимание, что ваша платформа 8.3.18, но возможно, более ранняя сборка)
- 8.3.19.1150
- 8.3.20.1549
Если вы используете платформу 8.3.18, как указано в исходном сообщении, но сборка ниже 8.3.18.1433 (например, 8.3.18.1289), то вы попадаете под действие этой ошибки. Единственным и наиболее эффективным решением в данном случае будет обновление технологической платформы до одной из перечисленных версий или более поздней.
Порядок действий для устранения ошибки:
- Проверьте текущую версию вашей платформы 1С:Предприятие. Это можно сделать в конфигураторе через меню "Справка" -> "О программе".
- Скачайте и установите актуальную версию технологической платформы, которая устраняет данную ошибку. Рекомендуем использовать самую свежую из доступных стабильных версий, чтобы избежать других потенциальных проблем. Убедитесь, что обновляете как клиентскую часть, так и сервер 1С:Предприятие, если используете клиент-серверный вариант.
- После обновления платформы перезапустите 1С:Предприятие и проверьте работоспособность планов обмена в расширении.
Обычно после такого обновления проблема с ошибкой "SDBL ожидается имя таблицы" должна быть устранена.
Особенности использования Планов Обмена в Расширениях
Даже после обновления платформы до версии, где ошибка была исправлена, важно понимать особенности и ограничения работы с планами обмена в расширениях. Разберем некоторые из них:
1. Создание планов обмена непосредственно в расширении
Хотя платформы последних версий позволяют создавать планы обмена непосредственно в расширении, исторически и даже на относительно свежих версиях (до 8.3.19) существовали определенные ограничения и даже нежелательные эффекты. Некоторые разработчики рекомендуют по возможности избегать создания планов обмена непосредственно в расширениях, если это не обусловлено крайней необходимостью. Почему?
- Проблемы с обработкой "Регистрация изменения данных": На некоторых версиях платформы планы обмена, созданные в расширениях, могли некорректно работать с обработкой "Регистрация изменения данных", что затрудняло выбор узлов обмена и управление регистрацией изменений. Хотя в более новых версиях платформы 1С эти проблемы постепенно решаются, следует быть внимательными и тестировать данный функционал.
- Проблемы с консолью запросов: Также могли наблюдаться трудности при работе с такими планами обмена через внешние инструменты, например, консоль запросов.
Однако, как было отмечено в ходе обсуждения, в текущих тестах на более свежих версиях платформы эти проблемы могут быть уже устранены, и функционал работает корректно. Важно всегда проверять поведение на вашей конкретной версии платформы и режима совместимости.
2. Режим совместимости 8.3.14 и планы обмена в расширении
Режим совместимости 8.3.14, указанный в условиях задачи, накладывает дополнительные ограничения на функционал планов обмена в расширениях:
- Работа только с объектами расширения: В режиме совместимости 8.3.14 план обмена, созданный в расширении, может корректно работать только с объектами, которые были созданы непосредственно в этом же расширении. Если вы добавляете в такой план обмена заимствованные объекты из основной конфигурации, вы можете столкнуться с непредсказуемым поведением или ошибками, даже если основная проблема "SDBL ожидается имя таблицы" уже устранена.
- Расширение стандартных реквизитов: Возможность расширить стандартные реквизиты, используемые для планов обмена (например, реквизиты, необходимые для регистрации изменений или для хранения информации об узлах), на заимствованный план обмена в расширении появилась только начиная с версии платформы 8.3.19. Это критически важно, если вам требуется добавить новые поля или изменить поведение стандартных реквизитов для обмена данными заимствованных объектов.
Таким образом, если вы работаете в режиме совместимости 8.3.14 и вам необходимо включать заимствованные справочники в план обмена, созданный в расширении, будьте готовы к возможным ограничениям и рассмотрите вариант обновления режима совместимости или использования других подходов.
3. Общие правила работы с планами обмена в расширениях
Проанализируем общие принципы и возможности, которые предоставляют расширения при работе с планами обмена:
- План обмена, созданный в расширении, не может участвовать в распределенной информационной базе (РИБ). Это ключевое ограничение: если ваша цель — создание РИБ, то план обмена должен быть частью основной конфигурации или заимствован из нее.
- Расширение заимствованных планов обмена: Мы можем заимствовать существующий план обмена из основной конфигурации в расширение. Это позволяет нам:
- Добавлять новые реквизиты к заимствованному плану обмена.
- Добавлять новые табличные части.
- Создавать новые формы и команды для работы с этим планом обмена.
- Включать в состав заимствованного плана обмена как собственные объекты расширения, так и другие объекты из основной конфигурации, которые ранее не были частью этого плана обмена.
Важно отметить, что сузить состав передаваемой информации (то есть исключить объекты, уже включенные в план обмена основной конфигурации) с помощью расширения нельзя.
- Исторические ограничения: До версии платформы 8.3.12 механизм обмена расширениями в распределенных информационных базах на уровне платформы отсутствовал. Это означало, что для синхронизации расширений в РИБ требовались значительные ручные доработки и обходные пути. Современные версии платформы значительно улучшили эту ситуацию.
Таким образом, использование планов обмена в расширениях — мощный инструмент, но требующий глубокого понимания его возможностей и ограничений, особенно с учетом версий платформы и режимов совместимости.
Дополнительные рекомендации по устранению ошибок 1С
Если вы столкнулись с ошибкой "SDBL ожидается имя таблицы" или другими схожими проблемами, и обновление платформы не помогло или вы хотите исключить другие факторы, рассмотрите следующие стандартные действия:
- Очистка кэша: Кэш 1С может быть источником многих труднодиагностируемых ошибок. Мы всегда рекомендуем очищать кэш как на клиентских машинах, так и на сервере 1С (если используется клиент-серверный вариант).
- Для клиентских машин: удалите каталоги кэша, которые обычно находятся в
%LOCALAPPDATA%\1C\1Cv8 или %APPDATA%\1C\1Cv8.
- Для сервера 1С: очистите кэш кластера серверов через консоль администрирования или перезапустите службу сервера 1С.
- Перезапуск служб сервера 1С и SQL-сервера: В клиент-серверном варианте иногда помогает полный перезапуск служб 1С:Предприятия и SQL-сервера. Это может решить проблемы с зависшими соединениями или некорректно загруженными процессами.
- "Тестирование и исправление" информационной базы: Через конфигуратор выполните стандартные процедуры "Тестирование и исправление". Мы рекомендуем использовать все доступные опции, особенно "Проверка логической целостности", "Пересчет итогов" и "Сжатие таблиц ИБ". Перед выполнением обязательно сделайте резервную копию базы данных!
- Очистка служебных таблиц (для опытных специалистов): В некоторых особо сложных случаях, особенно в клиент-серверном варианте, может помочь очистка служебных таблиц
_ConfigChngR и _ConfigChngR_ExtProps напрямую в базе данных. Эти таблицы хранят информацию об изменениях конфигурации и расширений. Этот шаг является крайне рискованным и должен выполняться только квалифицированными специалистами с обязательным предварительным резервным копированием базы данных. Неправильные действия могут привести к неработоспособности базы.
- Убедитесь в актуальности платформы: Всегда проверяйте, что используемая платформа 1С:Предприятие соответствует актуальным требованиям и не является устаревшей. Многие ошибки, особенно связанные с новыми механизмами, такими как расширения, исправляются в новых релизах.
Таким образом, основная причина ошибки "SDBL ожидается имя таблицы" при работе с планами обмена в расширениях кроется в известной проблеме платформы, которая была исправлена в более поздних версиях. Обновление платформы до соответствующей сборки, а также понимание особенностей и ограничений работы с планами обмена в расширениях, являются ключевыми шагами для успешного решения данной задачи.