8.х ОБМЕН Применение настроек построителя отчета в универсальном обмене данных

Тема в разделе "Обмен данными в "1С:Предприятие 8"", создана пользователем JVN, 30 окт 2012.

  1. TopicStarter Overlay
    JVN
    Offline

    JVN Опытный в 1С

    Регистрация:
    25 июн 2009
    Сообщения:
    95
    Симпатии:
    0
    Баллы:
    26
    Доброго времени суток, коллеги!

    Написал упрощенную обработку по выгрузке данных из УТ 10.2, которая создает стандартную обработку Универсальный обмен данными в формате XML, заложил в ней некий отбор через ПостроительОтчета, при этом этот отбор никак не хочет накладываться при выгрузке данных, как это происходит например при выгрузке через Универсальный обмен данными в формате XML. Возможно кто-нибудь знает (сталкивался) с этим, как применить настройки ПостроителяОтчета в этом случае?

    так я инициализирую ПостроительОтчета:

    Код:
    Процедура ПриОткрытии()
    
    //Построитель.Текст = "ВЫБРАТЬ Разрешенные _.* ИЗ Справочник.Номенклатура КАК _ {ГДЕ _.Ссылка.* КАК Справочник_Номенклатура}";
    Построитель.Текст = "ВЫБРАТЬ  РАЗРЕШЕННЫЕ  Объект.Ссылка КАК Ссылка ИЗ Справочник.Номенклатура КАК Объект {ГДЕ Объект.Ссылка.* КАК Справочник_Номенклатура}";
    
    Построитель.Отбор.Добавить("Справочник_Номенклатура.Родитель");
    Построитель.Отбор[0].ВидСравнения = ВидСравнения.ВСпискеПоИерархии;
    
    СЗ = Новый СписокЗначений;
    СЗ.Вставить(0, Справочники.Номенклатура.НайтиПоКоду("0001752"));
    СЗ.Вставить(1, Справочники.Номенклатура.НайтиПоКоду("0001746"));
    
    Построитель.Отбор[0].Значение = СЗ;
    Построитель.Отбор[0].Использование = Истина;
    
    Построитель.Отбор.Добавить("Справочник_Номенклатура.Код");
    
    Построитель.Отбор[1].ВидСравнения = ВидСравнения.Больше;
    Построитель.Отбор[1].Значение = НачальныйКод;
    Построитель.Отбор[1].Использование = Истина;
    
    Построитель.Выполнить();
    
    КонецПроцедуры
    
    так я создаю универсальную обработку, передаю ей настройки ПостроителяОтчета и запускаю ее на исполнение

    Код:
    Процедура КнопкаВыполнитьНажатие(Элемент)
    
    Если СокрЛП(НачальныйКод) = "" Тогда
    Сообщить("Не заполнен начальный код!");
    Возврат;
    КонецЕсли;
    Если ПустаяСтрока(ФайлВыгрузки) Тогда
    Предупреждение("Не указано имя файла данных.");
    Возврат;
    КонецЕсли;
    
    мУниверсальнаяВыгрузкаДанных = Обработки.УниверсальныйОбменДаннымиXML.Создать();
    
    Состояние("Выполняется загрузка правил обмена...");
    УникальныйИдентификатор	    = Новый УникальныйИдентификатор();
    ИмяВременногоФайлаПравилОбмена = КаталогВременныхФайлов() + УникальныйИдентификатор + ".xml";
    МакетПравилОбмена = ПолучитьМакет("ПравилаОбменаТекст");
    МакетПравилОбмена.Записать(ИмяВременногоФайлаПравилОбмена);
    мУниверсальнаяВыгрузкаДанных.ИмяФайлаПравилОбмена = ИмяВременногоФайлаПравилОбмена;
    мУниверсальнаяВыгрузкаДанных.ЗагрузитьПравилаОбмена();
    УдалитьФайлы(ИмяВременногоФайлаПравилОбмена);
    // Установка параметров выгрузки
    
    мУниверсальнаяВыгрузкаДанных.ИмяФайлаОбмена		    = ФайлВыгрузки;
    
    //мУниверсальнаяВыгрузкаДанных.ДатаНачала			    = ДатаНач;
    //мУниверсальнаяВыгрузкаДанных.ДатаОкончания			 = ?(ЗначениеНеЗаполнено(ДатаКон), ДатаКон, КонецДня(ДатаКон));
    
    мУниверсальнаяВыгрузкаДанных.РежимОбмена			   = "Выгрузка";
    мУниверсальнаяВыгрузкаДанных.ЭтоИнтерактивныйРежим	 = Истина;
    мУниверсальнаяВыгрузкаДанных.ПараметрыИнициализированы = Истина;
    
    //мУниверсальнаяВыгрузкаДанных.Параметры.Вставить("НеЗамещатьДокументыПриЗагрузке",	  НеЗамещатьДокументыПриЗагрузке);
    //мУниверсальнаяВыгрузкаДанных.Параметры.Вставить("НеЗамещатьСправочникиПриЗагрузке",    НеЗамещатьСправочникиПриЗагрузке);
    
    мУниверсальнаяВыгрузкаДанных.Параметры.Вставить("НачальныйКод",    НачальныйКод);
    
    мУниверсальнаяВыгрузкаДанных.ФлагРежимОтладки = Истина;
    //мУниверсальнаяВыгрузкаДанных.ФлагКомментироватьВыгрузкуОбъектов = Истина;
    //мУниверсальнаяВыгрузкаДанных.ТаблицаПравилВыгрузки = ТаблицаПравилВыгрузки.Скопировать();
    
    // Выгружаем данные
    
    мУниверсальнаяВыгрузкаДанных.ПостроительОтчета = Построитель;
    
    мУниверсальнаяВыгрузкаДанных.ВыполнитьВыгрузку();
    
    КонецПроцедуры // КнопкаВыполнитьНажатие()
    
  2. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    JVN я не знаю в чем у вас проблема. Привожу кусок кода. Рабочий 100% (под КА, т.е. равносильно УТ 10.3, не знаю менялось ли что-нибудь в обработке Универсального обмена при переходе от 10.2 к 10.3). Посмотрите, не то? Параметры точно используются.


    Код:
     //Перенос движений товаров. В будущем переделать всю эту хрень на план обмена
    Обработка = Обработки.УниверсальныйОбменДаннымиXML.Создать();
    Обработка.РежимОбмена = "Выгрузка";
    Обработка.ВыводВОкноСообщенийИнформационныхСообщений = Ложь;
    
    Обработка.ДатаНачала = НачалоДня(ТекущаяДата() - 60 * 60 * 24 * 3);
    Обработка.ДатаОкончания = КонецДня(ТекущаяДата());
    Обработка.ТипИнформационнойБазыДляПодключения = Ложь;
    Обработка.ВерсияПлатформыИнформационнойБазыДляПодключения = "V82";
    Обработка.НепосредственноеЧтениеВИБПриемнике = Истина;
    
    Обработка.ИмяСервераИнформационнойБазыДляПодключения = "***";
    Обработка.ИмяИнформационнойБазыНаСервереДляПодключения = "***";
    Обработка.ПользовательИнформационнойБазыДляПодключения = "***";
    Обработка.ПарольИнформационнойБазыДляПодключения = "***";
    
    Обработка.ИмяФайлаПравилОбмена = "ПравилаОбменаДаннымиДвижения.xml";
    Обработка.ЗагрузитьПравилаОбмена();
    НоваяСтрока = Обработка.ТаблицаНастройкиПараметров.Добавить();
    НоваяСтрока.Имя = "ДатаНачала";
    НоваяСтрока.Наименование = "Дата начала";
    НоваяСтрока.Значение = Обработка.ДатаНачала;
    НоваяСтрока.ПередаватьПараметрПриВыгрузке = Ложь;
    НоваяСтрока.ПравилоКонвертации = "";
    НоваяСтрока = Обработка.ТаблицаНастройкиПараметров.Добавить();
    НоваяСтрока.Имя = "ДатаОкончания";
    НоваяСтрока.Наименование = "ДатаОкончания";
    НоваяСтрока.Значение = Обработка.ДатаОкончания;
    НоваяСтрока.ПередаватьПараметрПриВыгрузке = Ложь;
    НоваяСтрока.ПравилоКонвертации = "";
    НоваяСтрока = Обработка.ТаблицаНастройкиПараметров.Добавить();
    НоваяСтрока.Имя = "СкладВозврат";
    НоваяСтрока.Наименование = "СкладВозврат";
    НоваяСтрока.Значение = Справочники.Склады.НайтиПоКоду("000000002");
    НоваяСтрока.ПередаватьПараметрПриВыгрузке = Ложь;
    НоваяСтрока.ПравилоКонвертации = "";
    НоваяСтрока = Обработка.ТаблицаНастройкиПараметров.Добавить();
    НоваяСтрока.Имя = "СкладДополнительный";
    НоваяСтрока.Наименование = "СкладДополнительный";
    НоваяСтрока.Значение = Справочники.Склады.НайтиПоКоду("000000006");
    НоваяСтрока.ПередаватьПараметрПриВыгрузке = Ложь;
    НоваяСтрока.ПравилоКонвертации = "";
    НоваяСтрока = Обработка.ТаблицаНастройкиПараметров.Добавить();
    НоваяСтрока.Имя = "СкладРеализация";
    НоваяСтрока.Наименование = "СкладРеализация";
    НоваяСтрока.Значение = Справочники.Склады.НайтиПоКоду("000000001");
    НоваяСтрока.ПередаватьПараметрПриВыгрузке = Ложь;
    НоваяСтрока.ПравилоКонвертации = "";
    
    Обработка.ВыполнитьВыгрузку();
    
    Обработка = Неопределено;
    //Перенос движений товаров. В будущем переделать всю эту хрень на план обмена
    
  3. TopicStarter Overlay
    JVN
    Offline

    JVN Опытный в 1С

    Регистрация:
    25 июн 2009
    Сообщения:
    95
    Симпатии:
    0
    Баллы:
    26
    хм... т. е. Вы предлагаете вместо ПостроительОтчета использовать ТаблицаНастройкиПараметров, попробуем...
  4. TopicStarter Overlay
    JVN
    Offline

    JVN Опытный в 1С

    Регистрация:
    25 июн 2009
    Сообщения:
    95
    Симпатии:
    0
    Баллы:
    26
    Коллеги, немного разобравшись, нашел решение:

    Код:
    мУниверсальнаяВыгрузкаДанных.ТаблицаПравилВыгрузки.Строки[0].Строки[0].НастройкиПостроителя = мУниверсальнаяВыгрузкаДанных.ПостроительОтчета.ПолучитьНастройки();
    мУниверсальнаяВыгрузкаДанных.ТаблицаПравилВыгрузки.Строки[0].Строки[0].ИспользоватьОтбор = Истина;
    надеюсь помог не только себе
  5. TopicStarter Overlay
    JVN
    Offline

    JVN Опытный в 1С

    Регистрация:
    25 июн 2009
    Сообщения:
    95
    Симпатии:
    0
    Баллы:
    26
    приведу для наглядности полный листинг кода:

    Код:
    Процедура КнопкаВыполнитьНажатие(Элемент)
    
    Если СокрЛП(НачальныйКод) = "" Тогда
    Сообщить("Не заполнен начальный код!");
    Возврат;
    КонецЕсли;
    Если ПустаяСтрока(ФайлВыгрузки) Тогда
    Предупреждение("Не указано имя файла данных.");
    Возврат;
    КонецЕсли;
    
    мУниверсальнаяВыгрузкаДанных.ИмяФайлаОбмена			    = ФайлВыгрузки;
    мУниверсальнаяВыгрузкаДанных.ПостроительОтчета.Отбор[1].Значение = НачальныйКод;
    
    мУниверсальнаяВыгрузкаДанных.ТаблицаПравилВыгрузки.Строки[0].Строки[0].НастройкиПостроителя = мУниверсальнаяВыгрузкаДанных.ПостроительОтчета.ПолучитьНастройки();
    мУниверсальнаяВыгрузкаДанных.ТаблицаПравилВыгрузки.Строки[0].Строки[0].ИспользоватьОтбор = Истина;
    
    мУниверсальнаяВыгрузкаДанных.РежимОбмена			   = "Выгрузка";
    мУниверсальнаяВыгрузкаДанных.ЭтоИнтерактивныйРежим	 = Истина;
    мУниверсальнаяВыгрузкаДанных.ПараметрыИнициализированы = Истина;
    
    мУниверсальнаяВыгрузкаДанных.ФлагРежимОтладки = Истина;
    
    мУниверсальнаяВыгрузкаДанных.ВыполнитьВыгрузку();
    
    КонецПроцедуры // КнопкаВыполнитьНажатие()
    Процедура ПриОткрытии()
    
    мУниверсальнаяВыгрузкаДанных = Обработки.УниверсальныйОбменДаннымиXML.Создать();
    
    Состояние("Выполняется загрузка правил обмена...");
    
    УникальныйИдентификатор	    = Новый УникальныйИдентификатор();
    ИмяВременногоФайлаПравилОбмена = КаталогВременныхФайлов() + УникальныйИдентификатор + ".xml";
    МакетПравилОбмена = ПолучитьМакет("ПравилаОбменаТекст");
    МакетПравилОбмена.Записать(ИмяВременногоФайлаПравилОбмена);
    мУниверсальнаяВыгрузкаДанных.ИмяФайлаПравилОбмена = ИмяВременногоФайлаПравилОбмена;
    мУниверсальнаяВыгрузкаДанных.ЗагрузитьПравилаОбмена();
    УдалитьФайлы(ИмяВременногоФайлаПравилОбмена);
    
    мУниверсальнаяВыгрузкаДанных.ПостроительОтчета.Текст = "ВЫБРАТЬ  РАЗРЕШЕННЫЕ  Объект.Ссылка КАК Ссылка ИЗ Справочник.Номенклатура КАК Объект {ГДЕ Объект.Ссылка.* КАК Справочник_Номенклатура}";
    мУниверсальнаяВыгрузкаДанных.ПостроительОтчета.ЗаполнитьНастройки();
    
    мУниверсальнаяВыгрузкаДанных.ПостроительОтчета.Отбор.Добавить("Справочник_Номенклатура.Родитель");
    мУниверсальнаяВыгрузкаДанных.ПостроительОтчета.Отбор[0].ВидСравнения = ВидСравнения.ВСпискеПоИерархии;
    
    СЗ = Новый СписокЗначений;
    СЗ.Вставить(0, Справочники.Номенклатура.НайтиПоКоду("0001752"));
    СЗ.Вставить(1, Справочники.Номенклатура.НайтиПоКоду("0001746"));
    
    мУниверсальнаяВыгрузкаДанных.ПостроительОтчета.Отбор[0].Значение = СЗ;
    мУниверсальнаяВыгрузкаДанных.ПостроительОтчета.Отбор[0].Использование = Истина;
    
    мУниверсальнаяВыгрузкаДанных.ПостроительОтчета.Отбор.Добавить("Справочник_Номенклатура.Код");
    
    мУниверсальнаяВыгрузкаДанных.ПостроительОтчета.Отбор[1].ВидСравнения = ВидСравнения.Больше;
    мУниверсальнаяВыгрузкаДанных.ПостроительОтчета.Отбор[1].Значение = "0";
    мУниверсальнаяВыгрузкаДанных.ПостроительОтчета.Отбор[1].Использование = Истина;
    
    КонецПроцедуры
Похожие темы
  1. dponomarchuk
    Ответов:
    2
    Просмотров:
    381
  2. Alive
    Ответов:
    1
    Просмотров:
    1.695
  3. Numb
    Ответов:
    9
    Просмотров:
    1.088
  4. barsuchechechek
    Ответов:
    0
    Просмотров:
    621
  5. ESP Forest GT
    Ответов:
    2
    Просмотров:
    1.759
Загрузка...

Поделиться этой страницей