К статье
Практический материал

Разработка и Конфигурация · 10 мин

У регистра не определено ни одного ресурса в 1С: причины и исправление

Ошибка «у регистра не определено ни одного ресурса» в 1С: почему возникает, как найти проблемный регистр, добавить ресурс и исправить запросы и движения документов.

Ошибка «У регистра не определено ни одного ресурса» появляется при проведении документа, выполнении запроса или обновлении конфигурации, когда платформа 1С обращается к регистру (накопления, сведений или бухгалтерии), в структуре которого отсутствует хотя бы один ресурс. Платформа не может сформировать таблицу движений или итоговую таблицу, потому что регистр по сути пуст: есть измерения, но нечего хранить в качестве значения.

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

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

Что означает ошибка и где она возникает

Регистр в 1С состоит из измерений (разрезы хранения), ресурсов (хранимые значения) и реквизитов (дополнительные данные). Ресурс — это обязательная часть структуры для регистров накопления и бухгалтерии; для регистра сведений технически можно создать структуру без ресурсов, но тогда обращение к нему как к источнику значений бессмысленно. Когда платформа строит виртуальную таблицу остатков или оборотов, она опирается именно на ресурсы — без них таблица не может быть сформирована.

Типичные места появления сообщения: проведение документа, у которого в движениях указан проблемный регистр; выполнение запроса к виртуальной таблице Остатки или Обороты; обновление конфигурации базы данных, если включена проверка логической целостности; формирование отчёта, построенного на этом регистре.

Как найти проблемный регистр

Текст ошибки обычно содержит имя регистра, но если сообщение обрезано или всплывает внутри пакетного запроса, регистр придётся искать вручную. Самый быстрый способ — открыть конфигуратор и последовательно проверить регистры, по которым делает движения документ, упомянутый в контексте ошибки.

Для массовой проверки можно использовать поиск по конфигурации: в дереве метаданных откройте ветку «Регистры накопления» и «Регистры сведений», и для каждого подозрительного объекта посмотрите вкладку «Данные» — если список ресурсов пуст, регистр и является источником проблемы.

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

Основные причины появления ошибки

Регистр создан, но ресурсы не добавлены

Самая частая ситуация при доработке: разработчик создал регистр накопления, определил измерения (Номенклатура, Склад), подключил его к документам, но забыл добавить ресурс «Количество» или «Сумма». До первого проведения документа ошибка не проявляется — конфигуратор при сохранении метаданных не всегда блокирует такую структуру.

Ресурс удалён при рефакторинге

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

Объединение или загрузка конфигурации

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

Как исправить: добавление ресурса в конфигураторе

Базовое исправление — добавить регистру хотя бы один ресурс. Откройте конфигуратор, найдите регистр, перейдите на вкладку «Данные» и добавьте ресурс с осмысленным именем и типом. Для регистра накопления вида «Остатки» ресурс обычно числовой с достаточной разрядностью, например Количество (15, 3) или Сумма (15, 2). Точные значения длины и точности подбирайте под учётные задачи — платформа не диктует конкретные числа.

После добавления ресурса выполните обновление конфигурации базы данных (F7). Если по регистру уже существуют записи в таблицах, платформа может выполнить реструктуризацию — при большом объёме данных это займёт время, поэтому обновление лучше делать в нерабочие часы.

Затем проверьте модули проведения документов: в процедуре ОбработкаПроведения движения должны заполнять новый ресурс. Типовой фрагмент выглядит так:

Движение = Движения.ТоварыНаСкладах.Добавить();

Движение.Период = Дата;

Движение.ВидДвижения = ВидДвиженияНакопления.Приход;

Движение.Номенклатура = СтрокаТовара.Номенклатура;

Движение.Склад = Склад;

Движение.Количество = СтрокаТовара.Количество;

Проверка запросов и виртуальных таблиц

Если регистр используется в запросах к виртуальным таблицам Остатки, Обороты или ОстаткиИОбороты, убедитесь, что в тексте запроса выбираются существующие ресурсы. Запрос к виртуальной таблице регистра без ресурсов не имеет смысла — именно их платформа агрегирует при расчёте остатков и оборотов.

Пример корректного обращения к остаткам:

ВЫБРАТЬ

Остатки.Номенклатура,

Остатки.КоличествоОстаток КАК Остаток

ИЗ

РегистрНакопления.ТоварыНаСкладах.Остатки(&Период, Склад = &Склад) КАК Остатки

Обратите внимание: к полю ресурса в виртуальной таблице остатков добавляется суффикс «Остаток», в таблице оборотов — «Оборот», «Приход», «Расход». Если ресурс называется Сумма, поля будут СуммаОстаток, СуммаОборот и так далее. После переименования ресурса все такие запросы нужно актуализировать.

Типичные ошибки
01
Добавили ресурс, но забыли обновить конфигурацию базы данных — ошибка сохраняется до реструктуризации
02
Переименовали ресурс и не исправили запросы и модули проведения — обращения к старому имени падают
03
Дали ресурсу слишком маленькую разрядность — при больших оборотах возможно переполнение и ошибки записи
04
Оставили регистр в списке движений документа, хотя учёт по нему отменили — лишние пустые движения и риск повторения ошибки

Что делать, если ресурсы не нужны

Иногда осознанное решение — не добавлять ресурс, а убрать регистр из оборота. Если регистр создали по ошибке или учёт по нему отменили, корректный путь — удалить его из движений всех документов (свойство «Движения» в палитре свойств документа), убрать обращения в запросах и отчётах, после чего удалить сам объект метаданных.

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

Маршрут решения

Как выбрать действие

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

Проверка результата после исправления

После добавления ресурса и обновления конфигурации проверьте исправление на копии базы или в тестовом порядке. Создайте и проведите документ, который делает движения по регистру, — проведение должно завершиться без сообщений об ошибке. Затем откройте записи регистра (через список движений документа или универсальный отчёт) и убедитесь, что ресурс заполнен ожидаемым значением.

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

Контрольные точки

Как проверить результат

Проведение документа
Норма

Документ проводится без сообщений об ошибке

Тревожный признак

Ошибка повторяется или появляется сообщение о необнаруженном поле

Записи регистра
Норма

В движениях видны строки с заполненным ресурсом

Тревожный признак

Движения пустые или ресурс равен нулю при ненулевых данных документа

Отчёты и запросы
Норма

Виртуальные таблицы возвращают остатки и обороты

Тревожный признак

Запрос падает с ошибкой или возвращает пустой результат

Обновление конфигурации
Норма

Реструктуризация завершилась без предупреждений

Тревожный признак

Есть сообщения о потере данных или незавершённых изменениях

Частые вопросы

Можно ли оставить регистр накопления вообще без ресурсов?

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

Пропадут ли данные, если добавить ресурс к существующему регистру?

Существующие записи регистра сохранятся, но в новом ресурсе у них будет пустое (нулевое) значение. Если нужно заполнить ресурс для старых движений, потребуется отдельная обработка или перепроведение документов.

Ошибка появляется только при формировании одного отчёта. В чём дело?

Скорее всего, в запросе отчёта есть обращение к ресурсу, который был переименован или удалён, либо запрос строится к виртуальной таблице регистра без ресурсов. Откройте схему компоновки или текст запроса и сверьте имена полей с метаданными регистра.

Можно ли исправить ошибку без конфигуратора, в режиме предприятия?

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

После объединения конфигураций ошибка появилась сразу у нескольких регистров. Что делать?

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

Итог

Что важно запомнить

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