Переход со старых редакций конфигурации «1С:Управление торговлей» (например, с УТ 11.2 или 11.3) на актуальную версию УТ 11.4/11.5 — это масштабный процесс, который нередко сопровождается техническими сложностями. Одной из наиболее частых и неприятных проблем, с которой сталкиваются как программисты, так и обычные пользователи (бухгалтеры, менеджеры по ценообразованию), является критический сбой при попытке открыть прайс-лист или создать документ УстановкаЦенНоменклатуры.
Система аварийно завершает работу, выдавая длинное техническое сообщение об ошибке инициализации схемы компоновки данных:
«Ошибка при вызове конструктора (ИсточникДоступныхНастроекКомпоновкиДанных) КомпоновщикНастроек.Инициализировать... по причине: Ошибка получения информации набора данных по причине: Ошибка в запросе набора данных по причине: {(26, 2)}: Таблица не найдена "Документ.ПоступлениеТоваровУслуг.Товары"»
В этой статье мы подробно проанализируем ситуацию, выясним глубинную причину сбоя и разберем по шагам, как полностью решить эту проблему самостоятельно, даже если вы не являетесь профессиональным разработчиком 1С.
Рассмотрим подробнее структуру метаданных и пошаговый алгоритм исправления базы данных.
Корни этой проблемы кроются в масштабном рефакторинге метаданных, который разработчики компании «1С» провели при переходе к редакции УТ 11.4. В старых версиях программы (УТ 11.2 и ранее) ключевым документом для отражения закупок был документ ПоступлениеТоваровУслуг (в структуре базы данных — Документ.ПоступлениеТоваровУслуг).
Начиная с версии 11.3 и окончательно в 11.4, этот документ был полностью заменен новым объектом метаданных — ПриобретениеТоваровУслуг (в базе данных — Документ.ПриобретениеТоваровУслуг). Старая таблица Документ.ПоступлениеТоваровУслуг была физически удалена из конфигурации.
При этом алгоритмы расчета цен в 1С построены на механизме Схем компоновки данных (СКД). Эти схемы хранятся внутри справочника ВидыЦен. Если в вашей базе данных существовал хотя бы один вид цены (даже старый, неиспользуемый или помеченный на удаление), который рассчитывался по данным информационной базы (например, «Цены поступления»), его схема компоновки данных до сих пор хранит старый текстовый запрос. В этом запросе фигурирует обращение к несуществующей таблице Документ.ПоступлениеТоваровУслуг.Товары.
Когда вы открываете обработку «Прайс-лист» или создаете документ УстановкаЦенНоменклатуры, платформа инициализирует настройки всех видов цен для построения интерфейса. Программа натыкается на старый запрос, пытается получить структуру несуществующей таблицы закупки и выдает критическую ошибку.
Давайте разберем по шагам, как найти и исправить этот сбой.
Для начала нам нужно локализовать элемент справочника ВидыЦен, который является источником ошибки. Сделать это несложно:
По умолчанию карточки видов цен заблокированы от случайных изменений, особенно если по ним уже вводились документы установки цен. Чтобы внести изменения, выполним следующие действия:
Этот шаг является строго обязательным. Платформа «1С:Предприятие 8» накладывает ограничения на редактирование схем компоновки данных (СКД) в обычном тонком клиенте. Чтобы у нас была возможность открыть конструктор запросов или изменить текст СКД, базу необходимо запустить в режиме «Толстого клиента».
Проанализируем процедуру переключения режима запуска:
Теперь, когда мы запустили программу в режиме толстого клиента и открыли доступ к редактированию карточки вида цены, рассмотрим два варианта решения проблемы.
Если этот вид цены использовал стандартные механизмы закупки (например, заполнялся по ценам поставщиков или по документам поступления), самым простым решением будет сбросить схему на новую, поставляемую разработчиками в обновлении.
Документ.ПриобретениеТоваровУслуг.Если схема компоновки была уникальной, содержала сложные доработки, интеграцию с дополнительными свойствами номенклатуры или нестандартные формулы, сбрасывать ее нельзя. Нам нужно вручную адаптировать текст запроса под метаданные УТ 11.4.
Разберем этот процесс по шагам:
НаборДанныхЗапрос). В правой части экрана отобразится поле с текстом SQL-подобного запроса 1С.Документ.ПоступлениеТоваровУслуг.Товары и заменить их на новые.Проанализируем пример изменения кода запроса. Старый вариант обращения к таблице выглядел так:
ВЫБРАТЬ
ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура,
ПоступлениеТоваровУслугТовары.Характеристика КАК Характеристика,
ПоступлениеТоваровУслугТовары.Цена КАК Цена,
ПоступлениеТоваровУслугТовары.Ссылка.Валюта КАК Валюта
ИЗ
Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
Этот запрос вызывает падение системы. Изменим его, приведя к синтаксису УТ 11.4:
ВЫБРАТЬ
ПриобретениеТоваровУслугТовары.Номенклатура КАК Номенклатура,
ПриобретениеТоваровУслугТовары.Характеристика КАК Характеристика,
ПриобретениеТоваровУслугТовары.Цена КАК Цена,
ПриобретениеТоваровУслугТовары.Ссылка.Валюта КАК Валюта
ИЗ
Документ.ПриобретениеТоваровУслуг.Товары КАК ПриобретениеТоваровУслугТовары
После замены текста запроса выполним следующие действия:
Если сбой вызывал старый, давно заброшенный вид цены, который был помечен на удаление, но не удалялся из базы, рекомендуется полностью очистить базу от этого «мусора»:
Важная рекомендация после обновлений: Обязательно зайдите в раздел НСИ и администрирование -> Обслуживание -> Результаты обновления программы. Убедитесь, что все процедуры отложенного обновления данных успешно завершены. Иногда незавершенное отложенное обновление также может блокировать корректную работу механизмов ценообразования.
После выполнения указанных шагов запуск прайс-листа и создание документов установки цен будут происходить в штатном режиме без каких-либо ошибок!