Конвертация данных 2. Выгрузка виртуальных объектов (документ Установка цен номенклатуры)
Пример выгрузки цен из конфигурации ТиС 9.2 в БП 2.0
Выгружаются все цены на дату, загрузка происходит в документы Установка цен номенклатуры.
Документы эти — виртуальные, источника в ТиС не имеют.
- Описание
- Подробнее
Описание
- Создать новое ПКО, Источник — пусто, Приемник — документ УстановкаЦенНоменклатуры
- В таблице конвертации свойств добавить свойства ТипЦен, Дата, Комментарий включить у них признак Поиск. У каждого из этих ПКС источник будет пустым. Значение комментария можно задать непосредственно в правиле.
- Там же добавить табличную часть «Товары», в которой есть 3 свойства — Номенклатура, Цена, Валюта.
- Для справочников (Номенклатура, Валюта, ТипыЦен) нужно создать правила конвертации заранее.
- В обработчик «Перед обработкой» табличной части «Товары» пишем код:
КоллекцияОбъектов = СоздатьОбъект("ТаблицаЗначений");
КоллекцияОбъектов.НоваяКолонка("Номенклатура");
КоллекцияОбъектов.НоваяКолонка("Цена");
КоллекцияОбъектов.НоваяКолонка("Валюта");
ТекТип = Источник.Получить("ТипЦен");
Сообщить("выгружаются цены типа "+СокрЛП(ТекТип));
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса = "
|Обрабатывать Все;
|Спр = Справочник.Номенклатура.ТекущийЭлемент;
|Группировка Спр без Групп;
|";
Если Запрос.Выполнить(ТекстЗапроса)=0 Тогда
Сообщить("Не удалось выполнить запрос по номенклатуре для выгрузки цен!");
Возврат 1;//это Отказ
КонецЕсли;
ТЗ = "";
Запрос.Выгрузить(ТЗ);
ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку() = 1 Цикл
Если ПустоеЗначение(ТЗ.Спр)=1 Тогда
Продолжить;
КонецЕсли;
ЦенаЦены = 0;
Рез = глВернутьЦену(ТЗ.Спр, ТекТип, ДатаОкончания, ЦенаЦены);
Если Рез=0 Тогда
Продолжить;
КонецЕсли;
КоллекцияОбъектов.НоваяСтрока();
КоллекцияОбъектов.Номенклатура = ТЗ.Спр;
КоллекцияОбъектов.Цена = ЦенаЦены;
КоллекцияОбъектов.Валюта = "643";//правило принимает строку с кодом валюты в качестве источника
КонецЦикла;
- Создать Правило выгрузки данных для этого Правила конвертации объектов, указать что выборка будет выполняться произвольным алгоритмом
- В обработчике «Перед обработкой» правила выгрузки данных пишем код:
ВыборкаДанных = СоздатьОбъект("СписокЗначений");
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса = "
|Обрабатывать Все;
|Спр = Справочник.ТипыЦен.ТекущийЭлемент;
|Группировка Спр;
|";
Если Запрос.Выполнить(ТекстЗапроса)=0 Тогда
Сообщить("Не удалось выполнить запрос по типам цен для выгрузки цен!");
Возврат 1;//это Отказ
КонецЕсли;
Пока Запрос.Группировка(1)=1 Цикл
Объект = СоздатьОбъект("СписокЗначений");
Объект.ДобавитьЗначение(Запрос.Спр,"ТипЦен");
Объект.ДобавитьЗначение(СокрЛП(Запрос.Спр.Наименование),"Информация");
Объект.ДобавитьЗначение(ДатаОкончания,"Дата");
Объект.ДобавитьЗначение("Выгрузка всех цен","Комментарий");
ВыборкаДанных.ДобавитьЗначение(Объект,"Объект");
КонецЦикла;
- Формируем правила, модуль для обработки выгрузки из 7.7, пользуемся.