Как обновить нетиповую конфигурацию 1С и не потерять проводки в доработанных документах?

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

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

Разберем причину проблемы: магия внутренних идентификаторов (GUID)

Для начала проанализируем внутреннюю структуру платформы 1С. Каждый объект метаданных (будь то справочник Номенклатура или ваш уникальный Документ.ПеремещениеИнвентаряЗабалансом) обладает уникальным внутренним идентификатором — UUID (или GUID). Этот идентификатор скрыт от глаз пользователя и даже разработчика в обычном интерфейсе, но именно на нем держится вся ссылочная целостность базы данных.

Выясним, как это работает на уровне таблиц БД: когда документ делает проводки, в регистре бухгалтерии Хозрасчетный создаются записи. В поле Регистратор этих записей записывается не текстовое название документа, а его GUID. Если вы удаляете документ из конфигурации и создаете его заново (даже с тем же именем и структурой), платформа присваивает ему новый GUID. В результате старые записи в регистре становятся «сиротами»: они по-прежнему ссылаются на старый идентификатор, которого больше нет в дереве метаданных. В пользовательском интерфейсе это выглядит как отсутствие проводок или появление надписей «Объект не найден».

Именно поэтому использование Ctrl-C / Ctrl-V для переноса объектов между конфигурациями при обновлении — это фатальная ошибка. Копирование создает новый объект с новым идентификатором.

Рассмотрим правильный алгоритм обновления нетиповой конфигурации

Чтобы избежать потери данных, мы должны использовать штатные механизмы сравнения и объединения, которые позволяют сохранить существующие объекты метаданных «как есть». Проанализируем пошагово процесс правильного обновления на примере «1С:Бухгалтерия предприятия 2.0».

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

Что делать, если ошибка уже совершена и проводки пропали?

Если вы уже обновились «грязным» способом (удалили и добавили объект заново) и обнаружили пропажу данных, рассмотрим методы восстановления связи. Ситуация сложная, но решаемая.

Способ 1: Использование тестирования и исправления (ТиИ)

Посмотрим, как нам поможет стандартный механизм диагностики. Запустите базу в режиме «Конфигуратор» и выберите Администрирование — Тестирование и исправление.

Установите флажки:

После выполнения система создаст пустые документы в тех местах, где раньше были ваши данные. Теперь у вас будет старый GUID в виде пустого документа и новый документ с новым GUID. Вам останется программно перенести данные из пустых объектов в новые и перепривязать регистратор в записях регистров.

Способ 2: Программное восстановление регистратора

Проанализируем пример кода, который поможет перепривязать записи регистра к новому документу. Допустим, мы нашли старые записи регистра бухгалтерии, где регистратор имеет тип «Объект не найден». Нам нужно заменить его на ссылку на новый документ с тем же номером и датой.


НаборЗаписей = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(СсылкаНаБитуюСсылку);
НаборЗаписей.Прочитать();

Для Каждого Запись Из НаборЗаписей Цикл
    // Здесь логика поиска нового документа по номеру и дате
    Запись.Регистратор = НовыйДокументСсылка;
КонецЦикла;

НаборЗаписей.Записать();

Этот метод требует аккуратности и понимания того, что в SQL-таблицах 1С идентификатор типа объекта также может измениться, что потребует более глубокой обработки данных.

Выясним, как проверить корректность регистраторов в конфигурации

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

Рассмотрим порядок проверки:

  1. Откройте дерево метаданных, перейдите к разделу Регистры бухгалтерии (или Регистры накопления).
  2. Найдите нужный регистр и откройте его свойства.
  3. Перейдите на вкладку Регистраторы.
  4. Убедитесь, что ваш документ отмечен галочкой. При неправильном обновлении (через удаление/добавление) эта галочка часто слетает, даже если объект называется так же.

Резюме и рекомендации

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

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

← На главную