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

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

Здравствуйте, уважаемые читатели нашего блога SoftMaker.kz! Сегодня поговорим об
исправлении двух ошибок, которые могут возникнуть при обмене в в распределенной информационной базе (РИБ). Такие ошибки могут возникнуть, если вы изменили конфигурацию вашей базы и пытаетесь передать эти изменения из центральной базы в периферийную. Например, способом, который был описан здесь. Давайте приступим!

Вот такие сообщения могут появиться при попытки сделать обмен при помощи РИБ:

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

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

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

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

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

    Читайте также:  Как объединить две резервные копии iphone

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

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

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

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

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

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

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

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

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

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

    1. Сервис -> Обмен данными -> Настройка выполнения обменов
    2. Выбираем нужную настройку и в пункте меню Действие выбираем подпункт "Настройка обновления конфигурации"
    3. В открывшемся окне ставим галку на "Автоматически обновлять конфигурацию при приеме сообщения от главного узла"

    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

    Читайте также:  Вредоносный файл windows 10 как убрать

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

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

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

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

    Данный способ у меня работает уже с 2010 года.

    Ссылка на основную публикацию
    Охлаждение оперативной памяти своими руками
    Не будем задаваться вопросом «зачем это?» - и так понятно. Многие производители, заложив в свою IT-продукцию широкие возможности, в том...
    Они обычно ходят всюду вместе
    A phrasal verbis usually a two-word verb: get on, go behind, fall off, turn up, run off. The most common...
    Определение задачи использует нерекомендуемый компонент планировщик
    Планировщик задач Windows позволяет пользователю выполнять продвинутую настройку ПК и совершать запуск нужных ему приложений и утилит в конкретное время...
    Охлаждение для телефона своими руками
    Одним из популярных технических решений в смартфонах 2018 года стало использование систем водяного охлаждения — например, трубки с жидкостью стоят...
    Adblock detector