Как выполнить переход с 1С:Бухгалтерии предприятия 2.0 на 3.0 в распределенной информационной базе (РИБ) и исправить сопутствующие ошибки

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

Переход с редакции 2.0 на редакцию 3.0 в конфигурации «Бухгалтерия предприятия» — это смена архитектуры и переход на управляемые формы с механизмом БСП (Библиотека стандартных подсистем). При наличии распределенной информационной базы (РИБ) этот процесс часто осложняется сбоями при первой синхронизации, блокировками из-за фоновых заданий, а также ошибками конвертации предопределенных данных плана счетов. Разберем по шагам возникающие проблемы и эффективные способы их решения.

Анализ типовых ошибок при первом запуске подчиненного узла

Рассмотрим наиболее распространенные ошибки, с которыми сталкиваются при штатной передаче изменений конфигурации из центральной базы (ЦБ) в периферийную (ПБ):

  1. Ошибка «Каталог не обнаружен» или отсутствие файла сообщения. При первом запуске подчиненной базы механизм БСП инициирует процедуру «Повторная синхронизация перед запуском». Если путь к каталогу обмена недоступен, содержит опечатки или вложенные папки, система генерирует исключение конструктора ДвоичныеДанные.
  2. Конструкция Константы.СообщениеОбменаДаннымиИзГлавногоУзла.Получить().Получить(). Данная запись является штатной для БСП: первый вызов метода Получить() считывает из базы константу с типом ХранилищеЗначения, а второй метод Получить() извлекает сами упакованные двоичные данные. Ошибки в этом месте возникают только в случае отсутствия самих данных в константе или проблем с файловой системой.
  3. Ошибка «Не предопределенные объекты не могут иметь предопределенные записи видов субконто». Начиная с платформы 1С:Предприятие 8.3, связь с предопределенными элементами строится по свойству ИмяПредопределенныхДанных. Если в базе какой-либо счет стал пользовательским, но в его табличной части ВидыСубконто остался флаг Предопределенное = Истина, процедура обновления завершится аварийно при попытке записи плана счетов.

Способ 1. Создание нового начального образа (рекомендуемый для полного обмена)

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

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

Способ 2. Обновление с временным отключением подчиненного узла

Если создание нового образа невозможно из-за специфики обмена или большого объема базы, применим методику автономного обновления периферийного узла. Разберем этот процесс по шагам:

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

    Также отключение можно произвести запуском Конфигуратора с ключом командной строки /ResetMasterNode.

  2. Обновляем конфигурацию периферийной базы файлом конфигурации (.cf) той же версии редакции 3.0, которая уже установлена в центральной базе.
  3. Запускаем периферийную базу в режиме «1С:Предприятие» под пользователем с полными правами и дожидаемся окончания работы обработчиков обновления информационной базы.
  4. Восстанавливаем привязку к главному узлу:
    
    УзелГлавного = ПланыОбмена.Полный.НайтиПоКоду("ЦБ"); // укажите имя плана обмена и код узла
    ПланыОбмена.УстановитьГлавныйУзел(УзелГлавного);
    
  5. При необходимости выравниваем номера отправленных и принятых сообщений в свойствах узла плана обмена.

Способ 3. Устранение ошибки видов субконто и блокировка фоновых заданий

Если обновление выполняется штатно через РИБ и возникает ошибка Не предопределенные объекты не могут иметь предопределенные записи видов субконто, выполним следующие действия:

  1. Запустим в Конфигураторе Тестирование и исправление информационной базы с обязательной установкой флагов:
    • Реструктуризация таблиц информационной базы;
    • Проверка логической целостности.
  2. Если тестирование не устранило ошибку, программно находим некорректные строки и снимаем признак предопределенности в табличной части:
    
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |	ХозрасчетныйВидыСубконто.Ссылка КАК Счет,
        |	ХозрасчетныйВидыСубконто.НомерСтроки КАК НомерСтроки
        |ИЗ
        |	ПланСчетов.Хозрасчетный.ВидыСубконто КАК ХозрасчетныйВидыСубконто
        |ГДЕ
        |	ХозрасчетныйВидыСубконто.Ссылка.Предопределенный = ЛОЖЬ
        |	И ХозрасчетныйВидыСубконто.Предопределенное = ИСТИНА";
    
    Выборка = Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
        ОбъектСчета = Выборка.Счет.ПолучитьОбъект();
        Для Каждого Стр Из ОбъектСчета.ВидыСубконто Цикл
            Если Стр.Предопределенное Тогда
                Стр.Предопределенное = Ложь;
            КонецЕсли;
        КонецЦикла;
        ОбъектСчета.Записать();
    КонецЦикла;
    
  3. Чтобы фоновые задания редакции 3.0 не мешали процессу обновления и не блокировали таблицы, временно отключим их выполнение. В клиент-серверном варианте включаем блокировку регламентных заданий в консоли кластера серверов 1С. В файловом варианте запускаем базу с ключом: /AllowExecuteScheduledJobs -Off.
← На главную