Устранение косяков с обменом в РИБ

Внимание! Обнаружен подводный камень в организации обмена в распределенной базе 1С:Предприятие 8. Для устранения последствий — эта обработка.

Внимание! Обнаружен подводный камень величиной с хорошую скалу в организации обмена в распределенной базе 1С:Предприятие 8. Если у вас клиент-серверный вариант базы, и обмен между узлами выполняется по расписанию, то вы можете налететь на этот камень на полном ходу. Дело в том, что, создавая копию базы (например, для отладки) в клиент-серверном варианте, мало кто заботится о том, чтобы регламентные задания в копии базы были выключены. Если их принудительно не заблокировать, то получится следующее: ваша копия будет делать обмены по тому же расписанию, что и основная база. К чему это приводит, нетрудно догадаться — пакеты обмена будут «теряться», то есть попадать не по назначению. И объекты, которые в этот день должны были попасть в основную базу, попадут в копию базы.

Чтобы устранить последствия, нужно следующее: моя обработка, (не)много терпения, навыки работы с журналом регистрации.

Порядок работы с обработкой:

1) Скачиваем обработку

2) Заходим в 1С на ДРУГИХ УЗЛАХ БАЗЫ (если копия базы стоит в центральном узле — на всех периферийных), открываем журнал регистрации, вычисляем тот период, когда с обменом был косяк (к примеру, мы знаем, что копию базы поставили 13.07, а спохватились только 20.07, и обмен идет раз в сутки, ночью, тогда нужно поставить период с 12.07 по 20.07), далее через меню «Файл»-«Сохранить как» сохраняем в файл журнал регистрации. Он нам понадобиться в обработке.

3) Стандартными средствами делаем обмен в распределенной базе.

4) Открываем обработку. Подставляем вычисленный период, задаем файл, в который сохранили кусок журнала регистрации, выбираем узел, С КОТОРЫМ выполняется обмен (в нашем примере — центральный узел).

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

6) Снова выполняем обмен. Теперь в обмен попадут и все объекты, которые были пропущены из-за косяка.

12 Comments

  1. DitriX

    Это не косяк… Это так себе, недочет, который элементарно исправляется условием Если этотузелглавный и т.д.

    А вот ОГРОМНАЯ лажа, с которой столкнулся недавно, это ВРЕМЯ…

    Ух как я долго доходил до этого 🙂

    Ситуация следующая — запрещены проведения задним и передним числом и отрицательные остатки. Но какого то … все равно они вылазили.

    База стоит распределенная по 20 городам и с правилами для каждого города.

    И вот вот ситуация — в основной базе строят отчет и видят отрицательные остатки… У всех паника, программиста пинают 🙂

    Пример(очень грубый) у меня стоит дата на основной базе 10.01, и я делаю перемещение товаров на магазин. У магазина стоит 5.01 и он МОЖЕТ продать, так как в 1С стоит проверка по обороту за все время, а не на конкретную дату документа. И теперь он нам присылает обмен, мы формируем например за 7 число, и видим отрицательные остатки 🙂

    Короче, долго лазил в 1С, так и не смог изменить их механизм, так как во многом он себя оправдывал.

    Выход нашел только один — сделал при запуске системы проверку на наличие в регистре «товары на …» на дату, и если дата компьютера меньше, то просто блокирую все панели, пока не изменят дату…

    Если кто сталкивался и знает более гумманое решение прошу отправить меня к нему по линку или отписать…

    Много букв, но для тех кто ранее не сталкивался с распределенными базами, это сэкономит много времени (ну или я такой тугой:)

    Reply
  2. CheBurator

    а с какого будуна если сейчас 10.01, в магазине стоит 5.01…???

    Reply
  3. support

    скриншоты?

    Reply
  4. DitriX

    (2) а вот у них биос сбивается(батарейка села) и у них вечно 01.01.2004 🙂

    короче таких всего 1%, но то что они есть, говорит о том, что блин даже за временем надо следить ….

    Reply
  5. Alex_Sun

    Надо включить их в домен или при запуске делать комманду net time.

    Мега косяк в урбд другой.

    у меня распределенка типа дерево. У центра 2 узла у одного из узлов есть еще 1ин подчиненый узел. Так вот. Если сделать при такой схеме динамическое обновление во-первых центральная база у разных пользователей прекращает операции по блокировкам. И есть 30- 60% вероятность что один из узлов отвяжется. При обмене будет писать ошибку — что конфигурации центра и переферии неодинаковые. Вот это реальный косяк.

    Reply
  6. artmicro

    #5 Ну как бы а что Вы хотели. Динамическое объединение зло. Даже официальные лица 1С на всех форумах и встречях говорят не юзать динамическое обновление 🙂 а тем более если у Вас УРБД и не линейной структуры.

    Reply
  7. ValeriVP

    (6) можно ссылку хотя бы на одно такое сообщение от сотрудника 1С?

    Reply
  8. ValeriVP

    (0) лучше последствия предугадывать чем исправлять.

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

    Если нрег(АЛН_ПолныеПрава.ПолучитьСтрокуСоединенияИнформационнойБазы()) <> нрег(АЛН_Инструментарий.СлужебныеКонстанты_Получить(«АЛН_ОбменДанными.СтрокаСоединенияИнформационнойБазы»)) тогда

    ВызватьИсключение(«Расположение информационной базы изменилось.»);

    КонецЕсли;

    Reply
  9. ValeriVP

    тогда при создании копии, никакой обмен сам не запустится

    Reply
  10. almas

    Rebelx дело говорит. 1с-цы овцы недобитые. Во многом по обменам дебилизмус за эталон продают. Защиты никакой не предусмотрели и ни в одном описалове нет упоминаний.

    Reply
  11. tarroman

    (0) Согласен с Reblex (8), поскольку забыть отключить фоновые задания может каждый.

    А так обработка полезная (если уже прозевал фоновые обмены, то надо ведь исправлять 🙂

    Reply
  12. slavich

    Вопросы очень актуальные по поводу обменов. Например именно такая ситуация была и у меня, очень долго разбирался.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *