Как восстановить конфигурацию поставщика и вернуть объекты на поддержку под замок

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

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

Анализируем причины некорректного поведения поддержки

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

  1. Ошибки релизов платформы: В линейках 8.3.19.х и 8.3.20.х был зафиксирован баг, при котором визуальное отображение статуса поддержки не соответствовало реальному состоянию БД. Платформа некорректно записывает изменения в служебные таблицы Config или ConfigSave.
  2. Разрыв связи (UUID): Если конфигурация когда-либо обновлялась некорректно (например, через «Загрузить конфигурацию из файла» вместо «Сравнить, объединить с конфигурацией поставщика»), внутренние идентификаторы объектов основной конфигурации могут перестать совпадать с идентификаторами в конфигурации поставщика.
  3. Влияние расширений: В некоторых версиях платформы наличие расширения, затрагивающего объект, может визуально изменять отображение «замка» в дереве метаданных, даже если в основной конфигурации объект не менялся.
  4. Кэширование метаданных: Существует не только локальный кэш пользователя, но и серверный кэш (в папке snccntx), который может хранить устаревшие состояния объектов.

Метод 1. Возврат на поддержку через «Настройку поддержки» (стандартный)

Рассмотрим пошагово наиболее правильный способ восстановления статуса без полной перезаписи всей конфигурации. Посмотрим на примере справочника Валюты.

Выполним следующие действия:

  1. Перейдем в меню Конфигурация — Поддержка — Настройка поддержки.
  2. В открывшемся окне нажмем кнопку Сравнить, объединить.
  3. В окне сравнения установим фильтр «Показывать только неизмененные объекты» (это важно, чтобы найти объекты, которые идентичны поставщику, но лишены «замка»).
  4. Найдем нужный объект в дереве. Обратим внимание на нижнюю часть окна, где указаны свойства Поставщик и Пользователь.
  5. Нажмем кнопку Изменить рядом с правилом поддержки объекта.
  6. В появившемся диалоге выберем «Объект поставщика не редактируется». Если у объекта есть подчиненные элементы (например, реквизиты или формы), установим флаг «Установить для подчиненных объектов».
  7. Нажмем «ОК», но не будем выполнять само объединение (галочки в дереве сравнения можно не ставить), просто закроем окно сравнения.
  8. После этого в основном окне «Настройки поддержки» статус объекта должен измениться. Нажмем «Закрыть» и обязательно выполним Обновить конфигурацию базы данных (F7).

Метод 2. Радикальное восстановление через файл конфигурации (.cf)

Если первый метод не помогает и «замок» упорно слетает, проанализируем ситуацию как повреждение служебных связей. В этом случае нам поможет полная перепостановка на поддержку. Разберем этот алгоритм:

  1. Сначала подготовим эталонный файл. Перейдем в Конфигурация — Поддержка — Настройка поддержки и нажмем кнопку Сохранить в файл. Это создаст .cf файл текущей конфигурации поставщика.
  2. Внимание: Если вы подозреваете, что сама конфигурация поставщика внутри базы повреждена, лучше взять «чистый» .cf того же самого релиза из официального дистрибутива обновления.
  3. Полностью снимем конфигурацию с поддержки. В окне «Настройка поддержки» нажмем Снять с поддержки. Это действие очистит служебные таблицы метаданных.
  4. Теперь выполним Конфигурация — Сравнить, объединить с конфигурацией из файла, выбрав наш сохраненный (или чистый) .cf.
  5. В появившемся окне сравнения снимаем все галочки. Нам не нужно менять сами объекты, нам нужно восстановить связь с поставщиком.
  6. Нажимаем кнопку Выполнить.
  7. Система выдаст вопрос: «Конфигурация поставщика не найдена. Поставить на поддержку?». Отвечаем «Да».
  8. После этого все объекты, которые были идентичны файлу .cf, автоматически встанут «под замок».

Метод 3. Исправление «фантомных» изменений и логической целостности

Иногда объект считается измененным из-за невидимых свойств или ошибок в таблице Config. Рассмотрим, как это исправить с помощью встроенных инструментов тестирования.

Выполним Тестирование и исправление (ТиИ). Нам интересен конкретный пункт: «Проверка логической целостности конфигурации». Проанализируем ситуацию: этот механизм проверяет соответствие метаданных их физической структуре в таблицах базы. Часто после выполнения этой проверки «фантомные» изменения исчезают.

Также полезно выполнить процедуру «фиктивного обновления»:

  1. Зайдем в Конфигурация — Поддержка — Обновить конфигурацию.
  2. Выберем «Выбор файла обновления» и укажем тот же самый релиз .cf (или .cfu), который установлен сейчас.
  3. Платформа проведет полную ревизию всех объектов и восстановит структуру поддержки, если она была нарушена.

Очистка серверного кэша при устойчивых ошибках

Если вы работаете в клиент-серверном варианте и визуальные глюки с поддержкой продолжаются даже после манипуляций с .cf, разберем процедуру очистки серверного кэша. Помните, что обычная очистка папок в %AppData% на компьютере пользователя здесь не поможет.

Пошаговый план для системного администратора:

  1. Остановить службу сервера 1C:Enterprise 8.3.
  2. Перейти в каталог с данными сервера (обычно это C:\Program Files\1cv8\srvinfo).
  3. Найти папку конкретной информационной базы по её UID.
  4. Внутри неё найти и удалить содержимое папок snccntx и config8.
  5. Запустить службу сервера.

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

Рекомендации по дальнейшей работе

Для того чтобы в будущем избежать подобных «поломок», рекомендуем придерживаться следующих правил:

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

← На главную