Выполнение загрузки данных из узла в 1С

Категория: Учебники по 1С » Технологии интеграции 1С Предприятия 8.2

В обработке выбирается узел обмена. Ссылка на выбранный узел сохраняется в реквизите обработки Узел, имеющем тип ПланОбменаСсылка . УдаленныеСклады. Затем в процедуре выгрузки данных из этой ссылки получается объект ПланОбмена и вызывается метод ПрочитатьСообщенияСИзменениями() этого объекта, реализующий, собственно, сам процесс загрузки данных.

 

Следует отметить, что используется ряд процедур, рассмотренных в разделе «Выполнение выгрузки данных в узел» на стр. 190. В текущем разделе они повторно рассматриваться не будут (это касается функции ПолучитьИмяФайлаОбмена( ) (см. листинг 2.28) и процедуры Вывес- тиДанные() (см. листинг 2.32)).

 

В процедуре ПрочитатьСообщениеСИзменениями() (листинг 2.36), определенной в модуле плана обмена, первоначально получаем имя файла. Это имя будет использоваться для создания временного документа, из которого будет впоследствии производиться считывание данных. Имя складывается из слова Message, кода узла приемника, кода узла-отправителя и постфикса R. Процедура расположена в модуле плана обмена, поэтому для получения ссылки узла-источника используется одноименное свойство (Ссылка).

 

Вызов функции ПолучитьФайлОбмена() (листинг 2.37) в случае уепсшного получения файла записывает данные во временный файл с ранее сформированным именем. Само чтение производится функцией ПрочитатьНовоеСообщение () (листинг 2.38). Данная функция возвращает номер полученного сообщения (он потом используется процедурой УдалитьФай лыОбмена() (листинг 2.41) для удаления сообщений с внешнего ресурса с данным и меньшими номерами).

При получении файла обмена (см. листинг 2.37) считаем, что файл, который мы ожидаем, имеет имя, состоящее из слова Message, кода узла отправителя, кода узла получателя (предопределенного узла (ПланыОбмена.УдаленныеСклады. ЭтотУзел ())) и номера, состоящего из 10 цифр. По сформи-рованной маске ищем сообщения с любым номером. Из всех найденных файлов выбираем тот, который обладает наибольшим номером. Исходя из стратегии очистки журнала регистрации данных «по получению квитанции», в сообщении с большим номером будет находиться наиболее полная порция данных для загрузки.
После того как определились с файлом с помощью метода платформы КопироватьФайл (), копируем файл на локальную машину (в каталог временных файлов).
Чтение полученного сообщения (из временного файла) начинается в функции ПрочитатьНовоеСообщение() (см. листинг 2.38). В качестве парамегра передается имя файла, куда будет произведено копирование сообщения.
После того как создан объект ЧтениеСообщения и чтение начато, производится очистка таблиц регистрации изменений данных (этим реализуется стратегия «ожидание квитанции»).
Проверка возможности чтения очередной порции данных производится в функции ВозможностьЧтенияДанных() (листинг 2.39), непосредственно чтение производится с помощью функции ПрочитатьДанные () 
Когда данные получены, анализируется возможность возникновения коллизий. При обнаружении коллизии принимается решение в пользу узла- приемника (они не принимаются), если в узле-отправителе реквизит Главный установлен в значение Ложь .
В функции ВозможностьЧтенияДанных() (см. листинг 2.39) для данных с различающейся структурой (отрабатываемых по специальным алгоритмам) возвращается значение Истина. Остальные данные проверяются штатным методом платформы «1С: Предприятие». Считается, что конфигурации, участвующие в обмене, отличаются только структурой справочника Номенклатура. Для переноса изменений в данных этого справочника используется специ¬альным образом определенный элемент CatalogObject.Номенклатура.Вручную.
Процедура УдалитьФайлыОбмена() (см. листинг 2.41) производит очистку файлов - сообщений на внешнем ресурсе с номером сообщения, равным принятому или меньшему (получаем все файлы по маске, удаляем по условию).
dle

Помоги проекту! Расскажи друзьям о сайте: