Конвертация данных 2. Выгрузка виртуальных объектов (документ Установка цен номенклатуры)

Публикация № 81147

Обработки - Ценообразование, прайсы

37
Пример выгрузки цен из конфигурации ТиС 9.2 в БП 2.0
Выгружаются все цены на дату, загрузка происходит в документы Установка цен номенклатуры.
Документы эти - виртуальные, источника в ТиС не имеют.
  1. Создать новое ПКО, Источник - пусто, Приемник - документ УстановкаЦенНоменклатуры
  2. В таблице конвертации свойств добавить свойства ТипЦен, Дата, Комментарий  включить у них признак Поиск. У каждого из этих ПКС источник будет пустым. Значение комментария можно задать непосредственно в правиле.
  3. Там же добавить табличную часть "Товары", в которой есть 3 свойства - Номенклатура, Цена, Валюта.
  4. Для справочников (Номенклатура, Валюта, ТипыЦен) нужно создать правила конвертации заранее.
  5. В обработчик "Перед обработкой" табличной части "Товары" пишем код:
КоллекцияОбъектов = СоздатьОбъект("ТаблицаЗначений");
КоллекцияОбъектов.НоваяКолонка("Номенклатура");
КоллекцияОбъектов.НоваяКолонка("Цена");
КоллекцияОбъектов.НоваяКолонка("Валюта");

ТекТип = Источник.Получить("ТипЦен");
Сообщить("выгружаются цены типа "+СокрЛП(ТекТип));

    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса = "
    |Обрабатывать Все;
    |Спр   = Справочник.Номенклатура.ТекущийЭлемент;
    |Группировка Спр без Групп;
    |";

    Если Запрос.Выполнить(ТекстЗапроса)=0 Тогда
        Сообщить("Не удалось выполнить запрос по номенклатуре для выгрузки цен!");
        Возврат 1;//это Отказ
    КонецЕсли;

    ТЗ = "";
    Запрос.Выгрузить(ТЗ);

ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку() = 1 Цикл

    Если ПустоеЗначение(ТЗ.Спр)=1 Тогда
        Продолжить;
    КонецЕсли;

    ЦенаЦены = 0;

    Рез = глВернутьЦену(ТЗ.Спр, ТекТип, ДатаОкончания, ЦенаЦены);

    Если Рез=0 Тогда
        Продолжить;
    КонецЕсли;

    КоллекцияОбъектов.НоваяСтрока();
    КоллекцияОбъектов.Номенклатура = ТЗ.Спр;
    КоллекцияОбъектов.Цена         = ЦенаЦены;
    КоллекцияОбъектов.Валюта       = "643";//правило принимает строку с кодом валюты в качестве источника

КонецЦикла;
  1. Создать Правило выгрузки данных для этого Правила конвертации объектов, указать что выборка будет выполняться произвольным алгоритмом
  2. В обработчике "Перед обработкой" правила выгрузки данных пишем код:
ВыборкаДанных = СоздатьОбъект("СписокЗначений");
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса = "
|Обрабатывать Все;
|Спр   = Справочник.ТипыЦен.ТекущийЭлемент;
|Группировка Спр;
|";

Если Запрос.Выполнить(ТекстЗапроса)=0 Тогда
    Сообщить("Не удалось выполнить запрос по типам цен для выгрузки цен!");
    Возврат 1;//это Отказ
КонецЕсли;

Пока Запрос.Группировка(1)=1 Цикл
    Объект = СоздатьОбъект("СписокЗначений");
    Объект.ДобавитьЗначение(Запрос.Спр,"ТипЦен");
    Объект.ДобавитьЗначение(СокрЛП(Запрос.Спр.Наименование),"Информация");
    Объект.ДобавитьЗначение(ДатаОкончания,"Дата");
    Объект.ДобавитьЗначение("Выгрузка всех цен","Комментарий");
    ВыборкаДанных.ДобавитьЗначение(Объект,"Объект");
КонецЦикла;
  1. Формируем правила, модуль для обработки выгрузки из 7.7, пользуемся.
37

См. также

Специальные предложения