Регистр без ресурсов: почему Конфигуратор не сохраняет изменения и как это исправить
Содержание
Ошибка У регистра не определено ни одного ресурса значит, что в конфигурации есть регистр накопления (или бухгалтерии), у которого на вкладке «Данные» пуст список «Ресурсы». Решение — открыть этот регистр в Конфигураторе, добавить хотя бы один числовой ресурс или вернуть удалённый из поставки, а затем выполнить Конфигурация → Обновить конфигурацию базы данных (F7).
Пока ресурса нет, платформа не даст обновить структуру базы: регистр без ресурсов не может хранить ни остатков, ни оборотов. Ниже — как быстро найти виновника, какой способ исправления выбрать и что проверить после реструктуризации.
Почему регистру обязательно нужен ресурс
Регистр в 1С состоит из трёх групп полей. Измерения отвечают на вопрос «в разрезе чего» (склад, номенклатура, контрагент). Ресурсы — «сколько» (количество, сумма). Реквизиты — дополнительная справка к записи.
У регистра накопления смысл именно в ресурсах: по ним платформа считает остатки и обороты, строит таблицы итогов. Регистр без ресурсов — это таблица, в которой нечего складывать. Поэтому проверка конфигурации считает такой объект некорректным.
Как ведут себя разные виды регистров:
| Вид регистра | Ресурс обязателен | Тип ресурса |
|---|---|---|
| Регистр накопления (остатки и обороты) | да | только Число |
| Регистр бухгалтерии | да | Число |
| Регистр сведений | нет, пустой список допустим | любой |
Отсюда первый вывод: если сообщение указывает на регистр сведений , перечитайте текст ещё раз — скорее всего, речь о другом объекте в той же строке.
Откуда в конфигурации берётся регистр без ресурсов
- 🛠️ Новый регистр не доделан. Разработчик создал объект, заполнил измерения и попытался сохранить конфигурацию , не дойдя до ресурсов.
- ✂️ Ресурс удалили вручную. Например, переименовывали или меняли тип и вместо правки удалили старое поле.
- 🔀 Неудачное объединение. При сравнении и объединении с другой конфигурацией или при обновлении доработанной типовой у ресурсов сняли флажки, и в основную конфигурацию регистр попал «пустым».
- 📂 Загрузка из файлов. Конфигурацию собирали из XML (выгрузка в файлы, Git, EDT), и описание ресурсов потерялось при слиянии веток.
- 🧩 Повреждение конфигурации. Редкий случай: сбой при сохранении, после которого часть метаданных не читается.
Как найти проблемный регистр в Конфигураторе
Текст ошибки почти всегда содержит полное имя объекта, например РегистрНакопления.ТоварыНаСкладах. Этого достаточно, чтобы перейти к регистру.
- Откройте базу в режиме Конфигуратора и откройте дерево:
Конфигурация → Открыть конфигурацию. - Запустите проверку:
Конфигурация → Проверка конфигурации.... В окне отметьте «Проверка логической целостности конфигурации» и нажмите «Выполнить». - В окне служебных сообщений найдите строку с ошибкой. Двойной щелчок по ней обычно переводит к объекту в дереве.
- Если перехода нет, введите имя регистра в строку поиска над деревом конфигурации.
- Откройте регистр двойным щелчком и перейдите на вкладку «Данные». Пустой список «Ресурсы» подтверждает диагноз.
Если в базе несколько регистров с такой ошибкой, проверка выдаст отдельную строку на каждый. Выпишите все имена сразу — исправлять их нужно за одно обновление конфигурации.
Конфигурация или конфигурация базы данных
В Конфигураторе две конфигурации. Основная — та, которую вы правите. Конфигурация базы данных — та, по которой сейчас реально работают пользователи.
Ошибка возникает в основной конфигурации. Чтобы понять, был ли ресурс раньше, откройте Конфигурация → Конфигурация базы данных → Открыть конфигурацию БД и найдите тот же регистр. Если там ресурс есть, значит, его потеряли при последних изменениях, и исправление займёт минуту.
Если регистр новый и в конфигурации БД его нет — ресурс просто не успели добавить.
Где искать следы ошибки: окно сообщений, лог пакетного запуска, журнал регистрации
Ошибка структуры метаданных возникает в Конфигураторе, а не у пользователя в документе. Поэтому основной источник — окно служебных сообщений. Но бывают случаи, когда Конфигуратор никто не открывал руками.
Обновление в пакетном режиме
Если базу обновляет скрипт или планировщик, сообщения пишутся в файл, заданный параметром /Out. Проверку можно запустить из командной строки и получить тот же список ошибок:
"C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" DESIGNER /F"D:\Bases\Trade" /N"Администратор" /P"пароль" /CheckConfig -ConfigLogIntegrity /Out"D:\Logs\check.txt"
Путь к платформе и номер версии подставьте свои. Для серверной базы вместо /F используется /S"сервер\имя_базы".
Откройте check.txt и найдите строки с именем регистра. Если скрипт сразу выполнял /UpdateDBCfg, ошибка будет там же, а обновление базы не состоится.
Журнал регистрации
В журнале регистрации (Администрирование → Обслуживание → Журнал регистрации в типовых конфигурациях или Администрирование → Журнал регистрации в Конфигураторе) ищите события, связанные с изменением и обновлением конфигурации. Поставьте отбор по периоду, когда последний раз меняли конфигурацию, и по пользователю, который это делал.
Журнал не покажет, какой ресурс удалили. Зато он ответит на два вопроса: кто и когда сохранял конфигурацию и прошло ли после этого успешное обновление базы.
Способы исправить регистр без ресурсов
Выбор зависит от того, был ли ресурс раньше и находится ли конфигурация на поддержке. Начинайте с самого безопасного варианта.
| Способ | Когда подходит | Риск |
|---|---|---|
| Вернуться к конфигурации БД | изменения ещё не применены к базе, ресурс был | теряются все несохранённые в БД правки, не только регистр |
| Перенести ресурс из конфигурации БД или поставки | ресурс был, остальные правки нужно сохранить | минимальный |
| Добавить ресурс вручную | регистр новый, ресурса не было | нужно поправить код движений |
| Загрузить конфигурацию из файла .cf | есть свежая копия до сбоя | теряются правки после копии |
| Удалить регистр | регистр не нужен и на него нет ссылок | ломает код, который к нему обращается |
Перед любым из способов сохраните текущую конфигурацию в файл: Конфигурация → Сохранить конфигурацию в файл.... Это занимает минуту и даёт точку отката.
Способ 1. Вернуться к конфигурации базы данных
Если кроме злополучного регистра вы ничего ценного не меняли, выполните Конфигурация → Конфигурация базы данных → Вернуться к конфигурации БД. Основная конфигурация станет такой же, как рабочая, ресурс вернётся.
Команда откатывает ВСЕ изменения основной конфигурации, которые ещё не попали в базу. Если там лежат доработки за неделю, выберите способ 2.
Способ 2. Вернуть ресурс сравнением конфигураций
- Откройте
Конфигурация → Сравнить конфигурации.... - Сравните основную конфигурацию с конфигурацией базы данных (или с конфигурацией поставщика, если регистр типовой).
- Включите режим показа только различий и найдите регистр.
- Разверните его до ресурсов, отметьте отсутствующий ресурс и выполните объединение только по нему.
Для типовой конфигурации на поддержке этот способ лучший: ресурс вернётся с исходным именем, типом и свойствами, и код движений в документах заработает без правок.
Способ 3. Добавить ресурс вручную
Подходит для нового регистра собственной разработки.
- Откройте регистр, вкладка «Данные».
- В группе «Ресурсы» нажмите «Добавить».
- Задайте имя (например,
КоличествоилиСумма) и тип Число с нужной длиной и точностью: для количества часто берут 15 знаков и 3 после запятой, для суммы — 15 и 2. - Проверьте, что документы, которые делают движения по регистру, заполняют новый ресурс.
Пример кода движений в модуле документа после добавления ресурса:
Процедура ОбработкаПроведения(Отказ, Режим)
Движения.ТоварыНаСкладах.Записывать = Истина;
Для Каждого СтрокаТЧ Из Товары Цикл
Движение = Движения.ТоварыНаСкладах.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Склад = Склад;
Движение.Номенклатура = СтрокаТЧ.Номенклатура;
Движение.Количество = СтрокаТЧ.Количество;
КонецЦикла;
КонецПроцедуры
Если конфигурация на поддержке и редактирование запрещено, сначала включите возможность изменения: Конфигурация → Поддержка → Настройка поддержки. Для типового регистра лучше вернуть ресурс способом 2, чем придумывать свой.
Способ 4. Загрузить конфигурацию из файла
Когда ресурс потерялся вместе с другими объектами или конфигурация повреждена, загрузите последнюю рабочую копию: Конфигурация → Загрузить конфигурацию из файла... и выберите .cf. Если базу собирали из XML, откатите ветку в системе контроля версий и загрузите файлы заново.
Способ 5. Удалить ненужный регистр
Иногда регистр завели «на будущее» и бросили. Перед удалением щёлкните по нему правой кнопкой и выберите «Поиск ссылок на объект». Если ссылок нет — удаляйте. Если есть — сначала уберите обращения в коде и формах.
Обновление конфигурации базы данных после исправления
Когда ресурс на месте, повторите Конфигурация → Проверка конфигурации.... Ошибок по регистру быть не должно. Затем нажмите F7 или выполните Конфигурация → Обновить конфигурацию базы данных.
Что происходит на этом шаге:
- 🔄 Платформа покажет окно «Реорганизация информации» со списком изменённых объектов. Прочитайте его: там должен быть ваш регистр и ничего неожиданного.
- 🔒 Для реструктуризации нужен монопольный доступ к базе. Пользователей придётся попросить выйти — сеансы, которые не закрыть, оборвутся при принудительном завершении. Делайте это в нерабочее время.
- 📊 У добавленного ресурса в уже существующих записях будет 0. Если регистр содержал данные, перепроведите документы, которые по нему двигались, за нужный период.
Пересчёт итогов
Для регистра остатков после восстановления ресурса и перепроведения документов пересчитайте итоги. В Конфигураторе: Администрирование → Тестирование и исправление, флажок «Пересчёт итогов». В типовых конфигурациях на БСП то же доступно из режима Предприятия через управление итогами в разделе Администрирование → Обслуживание.
Сверьте остатки до и после: сформируйте отчёт по регистру на текущую дату. Если цифры совпадают с ожидаемыми, исправление прошло чисто.
Как не допустить повторения
- 💾 Сохраняйте конфигурацию в
.cfперед каждым объединением и обновлением доработанной типовой. - ✅ Запускайте проверку логической целостности до F7, а не после ошибки. В пакетных скриптах ставьте
/CheckConfigперед/UpdateDBCfgи прерывайте сценарий, если в логе есть ошибки. - 🔍 При сравнении и объединении разворачивайте регистры до уровня ресурсов. Снятый флажок на одном ресурсе и есть типичная причина «пустого» регистра.
- 👥 В групповой разработке работайте через хранилище конфигурации: захват объекта и история версий покажут, кто и когда менял регистр.
- 🧾 Для собственных регистров заводите ресурс сразу при создании, ещё до измерений, — тогда сохранить «пустой» объект не получится.
Частые ошибки при исправлении
- ❌ Ресурс другого типа. У регистра накопления ресурс может быть только числом. Строку или ссылку платформа не примет — для этого есть измерения и реквизиты.
- ❌ Новое имя вместо старого. Если в коде документов стоит
Движение.Количество, а вы назвали ресурсКол, проверка пройдёт, но проведение упадёт с ошибкой обращения к полю. - ❌ Обновление в рабочее время. Реструктуризация регистра с миллионами записей идёт долго. Пользователи видят зависшую базу и перезапускают клиент.
- ❌ Забыли про итоги. Ресурс вернули, документы не перепровели — отчёты показывают нули.