Массовая загрузка от узлов РИБ, не принявших конфигурацию

Демонстрируются возможности ранее описанной обработки XML-Uniloader для чтения файлов обмена от узлов РИБ, не принявших изменения конфигурации.

Применение метода

Ранее я показывал, как с помощью обработки XML-Uniloader можно прочитать данные от узла, содержащие недопустимые символы XML (у меня, на ИС).

Теперь я расскажу об еще одном применении этой обработки.

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

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

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

Алгоритм действий

  1. Копируем все полученные от периферийных узлов файлы обмена в отдельную папку. Это делается для того, что если будут выгружены новые файлы от узлов, чтобы они повторно не грузились, а то система может зациклиться:
  2. Запускаем код загрузки, он делает следующее:
    1. Перебирает все магазины, смотрит есть для магазина узел плана обмена и файл в каталоге обмена.
    2. Запускает обработку с флагом удаления файла после загрузки.
    3. Пытается загрузить данные, если возникает ошибка, пропускает загрузку.
    4. Пользователь может прервать загрузку.

 

Код загрузки для конфигурации Розница:

       О = ВнешниеОбработки.Создать("E:\1c\Проекты\Обмен данными\ЧтениеВыгрузкиXML.epf");

       З = Новый Запрос(

       "ВЫБРАТЬ РАЗЛИЧНЫЕ

       |      Магазины.Код

       |ИЗ

       |      Справочник.Магазины КАК Магазины");

       ТЗ = З.Выполнить().Выгрузить();

       Для Каждого Строка ИЗ ТЗ Цикл

             ТекКод = СокрЛП(Строка.Код);

             ТекУзел = ПланыОбмена.ПоМагазину.НайтиПоКоду(ТекКод);

             ИмяФайла = "\\server\1c_obmen\load\Message_" + ТекКод + "_Ц01.zip";

             Если НЕ ЗначениеЗаполнено(ТекУзел) Тогда

                    Сообщить("Не найден узел: " + ТекКод);

                    Продолжить;

             КонецЕсли;

             Сообщить("Найден узел: " + ТекКод);

            

             Файл = Новый Файл(ИмяФайла);

             Если НЕ Файл.Существует() Тогда

                    Сообщить("Не найден файл: " + ИмяФайла);

                    Продолжить;

             КонецЕсли;

            

             Сообщить("Найден файл: " + ИмяФайла);

            

             О.УдалятьИсходныйФайл = истина;

             О.ИмяФайла = ИмяФайла;

             О.ПолучениеОтУзла = ТекУзел;

             О.ВыводитьПротокол = ложь;

             Сообщить("Чтение: " + ТекКод);

             ОбработкаПрерыванияПользователя();

             Попытка

                    О.Работа();

             Исключение

                    ОписаниеОшибки = ОписаниеОшибки();

                    Сообщить("  Произошла ошибка: " + ОписаниеОшибки);

             КонецПопытки;

            

       КонецЦикла;

 

Пример протокола загрузки:

Найден узел: М00

Не найден файл: \\server\1c_obmen\load\Message_М00_Ц01.zip

Найден узел: М01

Найден файл: \\server\1c_obmen\load\Message_М01_Ц01.zip

Чтение: М01

Удален файл обмена: \\server\1c_obmen\load\Message_М01_Ц01.zip

Найден узел: М02

Не найден файл: \\server\1c_obmen\load\Message_М02_Ц01.zip

Не найден узел: М03

Не найден узел: М04

Не найден узел: М05

 

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

Скачать