Имя: Пароль:
1C
 
Может у кого то есть пример обработки обмена
0 Tarlich
 
29.09.20
11:48
Хочу сделать обмен (Из УТ 10,3), на КД 2 что бы пользователь в начале сам мог выбрать условия , заполнилось ТЗ , выбрал что надо ,
(как я понимаю) из макета подтянуться правила ....
Прошу какой нибудь примерчик
1 Avalone2010
 
29.09.20
11:54
(0)Лови!    
//1. Так как для инормационной базы может быть указано несколько правил конвертации мы все сконвертированные файлы будем помещать в массив
    МассивФайлов = Новый Массив;
    
    //2. Процедемся по правилам выгрузки для нашей обрабатываемой базу
    Для Каждого СтрокаПравилВыгрузки Из ИнформационнаяБаза.ПравилаВыгрузкиДанных Цикл
        
        Если СтрокаПравилВыгрузки.Состояние = Перечисления.ОБМ_СостоянияИспользования.НеИспользуется Тогда Продолжить; КонецЕсли;
        
        //3. Получим правила конвертации
        ПравилоВыгрузки     = СтрокаПравилВыгрузки.Правило;
        ПравилоКонвертацииДД= ПравилоВыгрузки.ПравилаКонвертации.Получить();// двоичные данные
        
        //4. Сохранаяем правила конвертации
        ПутьКПравиламКД = ПолучитьИмяВременногоФайла("xml");
        ПравилоКонвертацииДД.Записать(ПутьКПравиламКД); // Записываем правила на диск    
        
        //5. Создаем файл выгрузки данных, в него будут записаны выгружаемые данные    
        ПутьКФайлуДанных = ПолучитьИмяВременногоФайла("xml");
        ТекстовыйДокумент= Новый ТекстовыйДокумент;
        ТекстовыйДокумент.Записать(ПутьКФайлуДанных);
        
        //6. Инициализируем обработку обмена
        ОбработкаОбмена = Обработки.УниверсальныйОбменДаннымиXML.Создать();
        
        //6.1 Загружаем макет правил конвертации
        ОбработкаОбмена.ЗагрузитьПравилаОбмена(ПутьКПравиламКД, "XMLФайл");
        
        //6.2 Устанавливаем файл выгрузки данных
        ОбработкаОбмена.ИмяФайлаПравилОбмена = ПутьКПравиламКД;
        ОбработкаОбмена.ИмяФайлаОбмена         = ПутьКФайлуДанных;
        
        //6.3 Заполнение параметров
        Для Каждого СтрокаПараметра Из ОбработкаОбмена.Параметры Цикл
            
            ИмяПараметра     = СтрокаПараметра.Ключ;
            СтруктураПоиска = Новый Структура("ИмяПараметра", ИмяПараметра);
            МассивСтрок        = СтрокаПравилВыгрузки.Правило.ПараметрыКонвертации.НайтиСтроки(СтруктураПоиска);
            
            Если МассивСтрок.Количество() > 0 Тогда
                
                ОпределяемыйПараметр = МассивСтрок[0];
                Если ЗначениеЗаполнено(ОпределяемыйПараметр.Значение) Тогда
                    
                    ОбработкаОбмена.Параметры[ИмяПараметра] = ОпределяемыйПараметр.Значение;
                Иначе
                    Рез = Неопределено;
                    Выполнить(ОпределяемыйПараметр.Алгоритм);
                    ОбработкаОбмена.Параметры[ИмяПараметра]  = Рез;
                КонецЕсли;    
            КонецЕсли;    
        КонецЦикла;
        
        //7.4 Инициализация параметров и выгрузка данных
        ОбработкаОбмена.ИнициализироватьПервоначальныеЗначенияПараметров();
        ОбработкаОбмена.ВыполнитьВыгрузку();
        
        //8. Запись данных обмена в массив файлов значения
        //8.1 Получим имя файла
        Рез = "";
        Выполнить(СтрокаПравилВыгрузки.ШаблонИмениФайла);
        
        ИмяФайла         = ?(ЗначениеЗаполнено(Рез), Рез, "Файл данных") + ".xml";
        ДвоичныеДанные     = Новый ДвоичныеДанные(ПутьКФайлуДанных);
        
        МассивФайлов.Добавить(Новый Структура("ИмяФайла, ДвоичныеДанные", ИмяФайла, ДвоичныеДанные));        
    КонецЦикла;    
    
    //Данные получены, выполним их отправку транспортом сообщения
    ВыполнитьОтправкуДанныхОбмена(ИнформационнаяБаза, МассивФайлов);
2 Ёпрст
 
29.09.20
11:54
УниверсальныйОбменДаннымиXML
3 Avalone2010
 
29.09.20
11:54
к(1) смотри с п.3
4 Tarlich
 
29.09.20
12:05
(1) Спасибо ! направление понятно
5 Tarlich
 
29.09.20
12:05
С Этим я все понял

ПутьКПравиламКД = ПолучитьИмяВременногоФайла("xml");
        ПравилоКонвертацииДД.Записать(ПутьКПравиламКД);// Записываем правила на диск    

        
        //5. Создаем файл выгрузки данных, в него будут записаны выгружаемые данные    

        ПутьКФайлуДанных = ПолучитьИмяВременногоФайла("xml");
        ТекстовыйДокумент= Новый ТекстовыйДокумент;
        ТекстовыйДокумент.Записать(ПутьКФайлуДанных);
        
        //6. Инициализируем обработку обмена

        ОбработкаОбмена = Обработки.УниверсальныйОбменДаннымиXML.Создать();
        
        //6.1 Загружаем макет правил конвертации

        ОбработкаОбмена.ЗагрузитьПравилаОбмена(ПутьКПравиламКД, "XMLФайл");
        
        //6.2 Устанавливаем файл выгрузки данных

        ОбработкаОбмена.ИмяФайлаПравилОбмена = ПутьКПравиламКД;
        ОбработкаОбмена.ИмяФайлаОбмена         = ПутьКФайлуДанных;
6 Tarlich
 
29.09.20
12:09
Я думаю что в Обработке будет табличнаячасть со списком документов (они могут быть разные по виду) - вот я и думаю как ее передать в обработку - параметром ?
7 Avalone2010
 
29.09.20
13:45
(6) загрузи вот этим макаром правила твои и смотри свойства объекта "ОбработкаОбмена". Там по свойствам поковыряешься и сообразишь что и куда передавать.
8 ДНН
 
29.09.20
13:57