Ошибка формата представления изменений 1с при обмене

Обновлено: 06.07.2024



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

Итак возникла проблема . Установили на центральном узле РИБ новую платформу версия 8.3.11.2924. Работает на ней конфигурация Комплексная автоматизация 1.1 в режиме совместимости с версией 8.2.13. Кроме этого на этом же сервере 1с расположены и другие базы, для которых новая платформа и нужна. В узлах РИБ платформа пока не обновилась. И при выполнении обмена получили ошибку:

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

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

Сравнив файлы обмена приходящие из узлов на старой и новой платформах выяснилось, что разница идет в одном атрибуте, а именно

Добавил этот атрибут в файл обмена, ошибки при приеме нет.

Обработка в приложении берет указанный zip файл, распаковывает файл обмена, находит узел v8de:Digest2, и добавляет атрибут Extensions="0000000000000000000000000000000000000000", после чего запаковывает обратно в zip, и удаляет временный файл.

Пароль при распаковке, упаковке не использую.

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

Итак, имеется РИБ "1С:Розница 1.0" на платформе 8.1, в которой на данный момент 115 периферийных узлов.

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

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

Заходим в режиме предприятия в периферийный узел и:


4. В текстовом поле вставляем скрипт:
[CODE]
@echo off
set v8exe="C:Program Files (x86)1cv81in1cv8.exe"
set DataBaseName="D:1C_Base"
set DataBase=/F%DataBaseName%

REM Логин администратора системы
set AdminUser=/N"Администратор" /p "пароль" /WA-

echo Завершение работы пользователей и установка блокировки.
start "" /wait %v8exe% ENTERPRISE %DataBase% %AdminUser% /CЗавершитьРаботуПользователей /DisableStartupMessages

echo .
echo Обновляем конфигурацию информационной базы
start "" /wait %v8exe% CONFIG %DataBase% %AdminUser% /UpdateDBCfg /UCКодРазрешения

echo .
echo Разрешение работы пользователей.
start "" /wait %v8exe% ENTERPRISE %DataBase% %AdminUser% /CРазрешитьРаботуПользователей /UCКодРазрешения /DisableStartupMessages
[/CODE]
правим объявленные в скрипте переменные под свои данные.

Есть один момент: если пользователь начал входить в ИБ и остановился на этапе авторизации, то платформа не может заблокировать такого пользователя (он же ещё не вошёл). В итоге конфигурация обновиться не может, т.к. нет монопольного доступа к ИБ.

Читайте также: