Расширения и РИБ. Что может пойти (пойдет) не так?

08.10.26

Интеграция - Перенос данных 1C

Изменяющие данные расширения конфигурации и распределенная информационная база. Проблемы и способы решения.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Обработка по работе с расширениями
.epf 15,04Kb
0 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

На протяжении всей своей профессиональной деятельности я старался избегать совместного использования расширений и РИБ, потому как работа обоих механизмов по большому счету скрыта за платформой и рано или поздно можно упереться во что-нибудь непредсказуемое. Но появилась задача, в которой база БП с десятками расширений были предоставлены в качестве "Дано:" и тут мои приключения начались.

 

Проблема №1: начальный образ не создается

При создании начального образа из формы узла плана обмена платформа останавливается с ошибкой:

 

Подробно показывает, что падает сам платформенный метод. БСП вызывает его в фоновом задании через ДлительныеОперации:

{ОбщийМодуль.РаботаСФайламиСлужебный.Модуль}: ПланыОбмена.СоздатьНачальныйОбраз(Параметры.Узел, СтрокаСоединения);
{(1)}: РаботаСФайламиСлужебный.СоздатьФайловыйНачальныйОбразНаСервере(Параметры[0], Параметры[1])
{ОбщийМодуль.ДлительныеОперации.Модуль}: ОбщегоНазначения.ВыполнитьМетодКонфигурации(...)
...
Ошибка при вызове метода контекста (СоздатьНачальныйОбраз)

Изменяющие данные — это расширения со своими объектами данных или с реквизитами, добавленными к типовым объектам. Программно их показывает Расширение.ИзменяетСтруктуруДанных(). Исправления, отчеты и печатные формы обычно к ним не относятся, так что под проверку попадает лишь часть списка — у меня четыре из десятков.

Может показаться, что чтобы решить проблему, достаточно тыкнуть галку ИспользуетсяВРаспределеннойИнформационнойБазе в списке расширений для каждого расширения, и это бы сработало, если бы в плане обмена конфигурации тоже стояла галка Включать расширения конфигурации. Но в типовой БП, а также во всем семействе УТ, ERP, КА в плане обмена для РИБ эта галочка не стоит. Снимать конфигурацию с замка ради этой галки не хотелось и пришлось копаться дальше.

 

 

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

  1. В главной базе найти расширения, у которых ИзменяетСтруктуруДанных() = Истина.
  2. Снять у них «Активно». Данные расширений при этом не удаляются, структуры хранения остаются в базе.
  3. Перезапустить сеанс: признак действует со следующего запуска. На время отключения функциональность этих расширений недоступна всем пользователям, поэтому работу лучше планировать на нерабочее время.
  4. Создать начальный образ узла. Ошибки больше нет.
  5. Проверить обмен: главная база с неактивными расширениями и узел без расширений обмениваются без ошибок.
  6. Вернуть «Активно» в главной базе, добавить те же расширения в узел из файлов .cfe, выгруженных из главной базы.

Расширения в узел в этой схеме по РИБ не приходят, их нужно держать синхронными вручную. И далее поджидает новая проблема.

 

Проблема №2: расхождение расширений при одинаковых расширениях

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

 

 

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

Расхождение видно прямо в сообщениях обмена. В заголовке данных каждая сторона пишет свертки своей конфигурации и набора расширений. Сообщение из главной базы:

<v8de:Config xmlns:v8md="http://v8.1c.ru/metadata/2005/08">
	<v8de:Version>216.0</v8de:Version>
	<v8de:Digest1>00000000000000000000000000000000</v8de:Digest1>
	<v8de:Digest2 v2="5fe3caf5c32ff36c6d45d63a34709a3a"
		Extensions="df4bd1c943df824222cfb0b77d74a447b568018c">c8efcd6d962e020951e23b28114bb876</v8de:Digest2>
</v8de:Config>

И ответное сообщение из узла:

<v8de:Digest2 v2="5fe3caf5c32ff36c6d45d63a34709a3a"
	Extensions="7d49be08dd72613ea7401f136ea2dd025ab3e402">c8efcd6d962e020951e23b28114bb876</v8de:Digest2>
  • Значение Digest2 и атрибут v2 — свертки самой конфигурации, они совпадают.
  • Атрибут Extensions — свертка набора расширений, 40 шестнадцатеричных символов. Он разный, и именно он делает узлы несовместимыми.

 

Поиск причин

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

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

 

База Порядок расширений, меняющих данные Прочие отличия от главной базы Extensions Обмен
Главная А → Б → В → Г — df4bd1c9… —
Тестовый узел №1 А → Б → В → Г Другой порядок расширений не меняющих данные df4bd1c9… Работает
Тестовый узел №2 В → А → Б → Г Другой порядок расширений меняющих данные 7d49be08… Не работает

 

Из таблицы видно:

  • лишнее исправление и перестановка расширений без данных ключ не меняют;
  • перестановка расширений с данными — меняет, даже при одинаковых хеш-суммах каждого из них.

 

Решение

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

  1. В узле снять «Активно» у расширений, стоящих не на своем месте, и у всех расширений с данными после них. Активное расширение с данными платформа удалить не даст.
  2. Удалить эти расширения. Их данные в узле будут потеряны!!!
  3. Добавить их по одному в порядке главной базы и перезапустить сеансы.
  4. Выполнить обмен и сравнить Extensions в сообщениях обеих сторон.

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

Во вложении оставил обработку, которую использовал для перегрузки расширений между базами (с сохранением порядка) и массовой установки галочек (активность, использование в РИБ) для расширений. Может, кому пригодится.

Проверено на следующих конфигурациях и релизах:

  • Бухгалтерия предприятия КОРП, редакция 3.0, релизы 3.0.206.19

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Перенос данных 1C Разработчик 1С:Предприятие 8 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос документов, начальных остатков и справочной информации из УПП 1.3 в ERP 2 | из УПП 1.3 в УТ 11 | из УПП в КА 2 | Правила конвертации (КД 2) | Более 360 предприятий выполнили переход с использованием этого продукта! | Сэкономьте время - используйте готовое решение для перехода! | Позволяет перенести из УПП 1.3 в ERP / УТ 11 / КА 2 всю возможную информацию | В переносе есть фильтр по организации и множество других опциональных параметров выгрузки | Есть несколько алгоритмов выгрузки остатков на выбор

58000 руб.

04.08.2015    194835    479    310    

473

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Разработчик 1С:Предприятие 8 1С:Комплексная автоматизация 1.х 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена | Можно выполнить переход с УПП на БП 3 или запускать выгрузку данных за выбранный период времени | Переносятся документы, начальные остатки и вся справочная информация | Есть фильтр по организации и множество других параметров выгрузки | Поддерживается несколько сценариев работы: как первичный полный перенос, так и перенос только новых документов | Перенос данных возможен в "1С: Бухгалтерия 3.0" версии ПРОФ, КОРП или базовую | Переход с "1С: УПП1.3" / "1С:КА 1.1" на "1С:БП3.0" с помощью правил конвертации будет максимально комфортным! | Можно бесплатно проверить перенос на вашем сервере!

50050 руб.

25.02.2015    192578    383    296    

436

Перенос данных 1C Взаиморасчеты Оптовая торговля Логистика, склад и ТМЦ Файловый обмен (TXT, XML, DBF), FTP Системный администратор Разработчик 1С:Предприятие 8 1С:Управление торговлей 10 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Управленческий учет Платные (руб)

Можно проверить до покупки, оставьте заявку! Воспользовались более 268 компаний! Перенос данных из УТ 10.3 в УТ 11 | из УТ 10.3 в КА 2 | из УТ 10.3 в ERP. Решение для перехода с УТ 10.3. Можно перенести начальные остатки, нормативно-справочную информацию и все возможные документы. При выгрузке можно установить отбор по периоду, организациям и складам.

50200 руб.

24.04.2015    211481    186    254    

303

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Разработчик 1С:Предприятие 8 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Переносите справочную информацию, остатки и документы из УПП 1.3 в Бухгалтерию 3.0 с помощью готовых правил. Переносится более 50 видов документов. Простой интерфейс и понятные настройки.

42000 37800 руб.

15.12.2021    37144    268    68    

204

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Разработчик 1С:Предприятие 8 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Управление производственным предприятием Россия Платные (руб)

Регулярный обмен, выгрузка, перенос из КА 1.1, УПП 1.3, УТ 10.3 для обмена с любыми конфигурациями, поддерживающими обмен в формате EnterpriseData (КД3) - БП 3.0, ERP, КА 2, УТ 11, Розница 3, УНФ 3 и другими. Правила для старых и доработанных конфигураций не требуют синхронного обновления и совместимы с новыми и будущими конфигурациями. Обмен по расписанию, через папку, FTP, почту.

27572 руб.

18.02.2016    209311    686    559    

565

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Разработчик 1С:Предприятие 8 1С:Комплексная автоматизация 1.х 1С:Управление производственным предприятием 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Платные (руб)

Правила переноса кадровых и расчетных данных и справочной информации из "1С:УПП1.3" или "1С:КА 1.1" в "1С:ЗУП 3.1 | Разработан в формате КД 2 (правила конвертации данных) | При выгрузке есть фильтр по организациям | Обновляется при выходе новых релизов 1С | Развитие алгоритмов | Расчетные документы переносятся в документ "Перенос данных" | Создаются документы "Начальная штатная расстановка" и "Начальная задолженность по зарплате", переносятся кадровые документы

58000 руб.

29.10.2018    64493    86    137    

83

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Разработчик 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из ERP в ЗУП 3 | из КА 2 в ЗУП | Готовые правила конвертации данных (КД 2) для переноса остатков, документов с движениями и справочной информации 3 | Есть перенос начальной задолженности по зарплате и начальной штатной расстановки на выбранную дату | Обороты за прошлые годы (данные для расчета среднего) переносятся свернуто в документ "Перенос данных" | Есть фильтр по организациям | Документы за текущий период переносятся сразу с движениями, поэтому не потребуется делать перерасчеты | Перенос можно проверить перед покупкой, обращайтесь!

55200 руб.

03.12.2020    47151    135    84    

123
Для отправки сообщения требуется регистрация/авторизация