Зачастую многие, кто использует интернет магазин на CMS Битрикс, просят реализовать выгрузку старой цены на сайт. В свою очередь это порождает работу для отдела маркетинга в рамках фиксации старых цен или же побуждает отдел разработки придумывать какой-то алгоритм для автоматической фиксации старой цены, что бывает намного чаще. Вот и мне пришлось придумать механизм для решения этой задачи. Я предлагаю поступить следующим образом:
На борту имеем:
- 1С Управление торговлей ред. 11.2.2.119
- Модуль обмена с сайтом Битрикс 6.0.3.4
(см. https://1c.1c-bitrix.ru/ecommerce/download.php - тут доступные модули обмена)
Сначала идем ОбщиеМодули. Б_ОбменССайтомСерверВыгрузкаДанных и находим следующую функцию:
«СформироватьВременныеТаблицыПоИнформацииОТоварахПакета»
В ней ищем следующий текст запроса:
ЗапросПоЦенам = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
| СоглашениеШапка.Ссылка КАК Соглашение,
| СоглашениеШапка.ИдентификаторСоглашения,
| СоглашениеТовары.Упаковка КАК Упаковка,
| ВЫБОР
| КОГДА СоглашениеТовары.Упаковка.Б_Идентификатор = """"
| ТОГДА СоглашениеТовары.Упаковка.Ссылка
| ИНАЧЕ СоглашениеТовары.Упаковка.Б_Идентификатор
| КОНЕЦ КАК ИдентификаторУпаковки,
| СоглашениеТовары.Упаковка.Числитель КАК
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|////////////////////////////////////////////////////////////////////////////////
|УНИЧТОЖИТЬ ВремЦеныПоСоглашениям
|;
|
|////////////////////////////////////////////////////////////////////////////////
|УНИЧТОЖИТЬ ВремЦеныСрезПоследних";
И меняем его на запрос который позволит нам получить информацию по старой цене в рамках одного вида цен который используется в типовом соглашении для интеграции с Битрикс:
ЗапросПоЦенам = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
| СоглашениеШапка.Ссылка КАК Соглашение,
| СоглашениеШапка.ИдентификаторСоглашения,
| СоглашениеТовары.Упаковка КАК Упаковка,
| ВЫБОР
| КОГДА СоглашениеТовары.Упаковка.Б_Идентификатор = """"
| ТОГДА СоглашениеТовары.Упаковка.Ссылка
| ИНАЧЕ СоглашениеТовары.Упаковка.Б_Идентификатор
| КОНЕЦ КАК ИдентификаторУпаковки,
| СоглашениеТовары.Упаковка.Числитель КАК КоэффициентУпаковкиСоглашения,
| СоглашениеШапка.НалогообложениеНДС КАК НалогообложениеНДС,
| СоглашениеШапка.ЦенаВключаетНДС КАК ЦенаВключаетНДС,
| СоглашениеШапка.Валюта КАК ВалютаСоглашения,
| ВЫБОР
| КОГДА ЕСТЬNULL(СоглашениеТовары.Цена, 0) > 0
| ТОГДА ЗНАЧЕНИЕ(Справочник.ВидыЦен.ПустаяСсылка)
| КОГДА СоглашениеТовары.ВидЦены <> ЗНАЧЕНИЕ(Справочник.ВидыЦен.ПустаяСсылка)
| И СоглашениеТовары.ВидЦены ЕСТЬ НЕ NULL
| ТОГДА СоглашениеТовары.ВидЦены
| КОГДА (СоглашениеТовары.ВидЦены = ЗНАЧЕНИЕ(Справочник.ВидыЦен.ПустаяСсылка)
| ИЛИ СоглашениеТовары.ВидЦены ЕСТЬ NULL)
| И СоглашениеЦеновыеГруппы.ВидЦен ЕСТЬ НЕ NULL
| И СоглашениеЦеновыеГруппы.ВидЦен <> ЗНАЧЕНИЕ(Справочник.ВидыЦен.ПустаяСсылка)
| ТОГДА СоглашениеЦеновыеГруппы.ВидЦен
| КОГДА (СоглашениеТовары.ВидЦены = ЗНАЧЕНИЕ(Справочник.ВидыЦен.ПустаяСсылка)
| ИЛИ СоглашениеТовары.ВидЦены ЕСТЬ NULL)
| И (СоглашениеЦеновыеГруппы.ВидЦен ЕСТЬ NULL
| ИЛИ СоглашениеЦеновыеГруппы.ВидЦен = ЗНАЧЕНИЕ(Справочник.ВидыЦен.ПустаяСсылка))
| И СоглашениеШапка.ВидЦен <> ЗНАЧЕНИЕ(Справочник.ВидыЦен.ПустаяСсылка)
| ТОГДА СоглашениеШапка.ВидЦен
| КОНЕЦ КАК ВидЦены,
| СоглашениеШапка.ИдентификаторВидаЦены,
| ЕСТЬNULL(СоглашениеТовары.Цена, 0) КАК Цена,
| ВремНоменклатураСХарактеристиками.Номенклатура,
| ВремНоменклатураСХарактеристиками.ИдентификаторНоменклатуры,
| ВремНоменклатураСХарактеристиками.Характеристика,
| ВремНоменклатураСХарактеристиками.ИдентификаторХарактеристики,
| ВремНоменклатураСХарактеристиками.ЕдиницаИзмерения
|ПОМЕСТИТЬ ВремЦеныПоСоглашениям
|ИЗ
| ВремНоменклатураСХарактеристиками КАК ВремНоменклатураСХарактеристиками
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВремСоглашения КАК СоглашениеШапка
| ПО (ИСТИНА)
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СоглашенияСКлиентами.Товары КАК СоглашениеТовары
| ПО (СоглашениеШапка.Ссылка = СоглашениеТовары.Ссылка)
| И ВремНоменклатураСХарактеристиками.Номенклатура = СоглашениеТовары.Номенклатура
| И ВремНоменклатураСХарактеристиками.Характеристика = СоглашениеТовары.Характеристика
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СоглашенияСКлиентами.ЦеновыеГруппы КАК СоглашениеЦеновыеГруппы
| ПО ВремНоменклатураСХарактеристиками.ЦеноваяГруппа = СоглашениеЦеновыеГруппы.ЦеноваяГруппа
| И (СоглашениеШапка.Ссылка = СоглашениеЦеновыеГруппы.Ссылка)
|
|ИНДЕКСИРОВАТЬ ПО
| ВидЦены
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ЦеныСрезПоследних.Номенклатура,
| ЦеныСрезПоследних.ВидЦены,
| ЦеныСрезПоследних.Характеристика,
| ЦеныСрезПоследних.Цена,
| ЦеныСрезПоследних.Упаковка,
| ЦеныСрезПоследних.Валюта
|ПОМЕСТИТЬ ВремЦеныСрезПоследних
|ИЗ
| РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
| ,
| (Номенклатура, Характеристика) В
| (ВЫБРАТЬ
| ВремНоменклатураСХарактеристиками.Номенклатура,
| ВремНоменклатураСХарактеристиками.Характеристика
| ИЗ
| ВремНоменклатураСХарактеристиками КАК ВремНоменклатураСХарактеристиками)) КАК ЦеныСрезПоследних
|
|ИНДЕКСИРОВАТЬ ПО
| ЦеныСрезПоследних.Номенклатура,
| ЦеныСрезПоследних.Характеристика,
| ЦеныСрезПоследних.ВидЦены
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| МАКСИМУМ(ЦеныНоменклатуры.Период) КАК Период,
| ЦеныНоменклатуры.Номенклатура,
| ЦеныНоменклатуры.ВидЦены,
| ЦеныНоменклатуры.Характеристика
|ПОМЕСТИТЬ ВремПериодПрошлыхУстановокЦен
|ИЗ
| РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
| ЦеныНоменклатурыСрезПоследних.Период КАК Период,
| ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
| ЦеныНоменклатурыСрезПоследних.ВидЦены КАК ВидЦены,
| ЦеныНоменклатурыСрезПоследних.Характеристика КАК Характеристика
| ИЗ
| РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
| ,
| (Номенклатура, Характеристика) В
| (ВЫБРАТЬ
| ВремНоменклатураСХарактеристиками.Номенклатура,
| ВремНоменклатураСХарактеристиками.Характеристика
| ИЗ
| ВремНоменклатураСХарактеристиками КАК ВремНоменклатураСХарактеристиками)) КАК ЦеныНоменклатурыСрезПоследних) КАК ЦеныНоменклатурыАктуальные
| ПО ЦеныНоменклатуры.Период <> ЦеныНоменклатурыАктуальные.Период
| И ЦеныНоменклатуры.Номенклатура = ЦеныНоменклатурыАктуальные.Номенклатура
| И ЦеныНоменклатуры.ВидЦены = ЦеныНоменклатурыАктуальные.ВидЦены
| И ЦеныНоменклатуры.Характеристика = ЦеныНоменклатурыАктуальные.Характеристика
|ГДЕ
| (ЦеныНоменклатуры.Номенклатура, ЦеныНоменклатуры.Характеристика) В
| (ВЫБРАТЬ
| ВремНоменклатураСХарактеристиками.Номенклатура,
| ВремНоменклатураСХарактеристиками.Характеристика
| ИЗ
| ВремНоменклатураСХарактеристиками КАК ВремНоменклатураСХарактеристиками)
|
|СГРУППИРОВАТЬ ПО
| ЦеныНоменклатуры.Номенклатура,
| ЦеныНоменклатуры.ВидЦены,
| ЦеныНоменклатуры.Характеристика
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ЦеныНоменклатуры.Номенклатура,
| ЦеныНоменклатуры.ВидЦены,
| ЦеныНоменклатуры.Характеристика,
| МАКСИМУМ(ЦеныНоменклатуры.Цена) КАК Цена
|ПОМЕСТИТЬ ВремСтараяЦена
|ИЗ
| РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВремПериодПрошлыхУстановокЦен КАК ВремПериодПрошлыхУстановокЦен
| ПО ЦеныНоменклатуры.Период = ВремПериодПрошлыхУстановокЦен.Период
| И ЦеныНоменклатуры.Номенклатура = ВремПериодПрошлыхУстановокЦен.Номенклатура
| И ЦеныНоменклатуры.ВидЦены = ВремПериодПрошлыхУстановокЦен.ВидЦены
| И ЦеныНоменклатуры.Характеристика = ВремПериодПрошлыхУстановокЦен.Характеристика
|ГДЕ
| (ЦеныНоменклатуры.Номенклатура, ЦеныНоменклатуры.Характеристика) В
| (ВЫБРАТЬ
| ВремНоменклатураСХарактеристиками.Номенклатура,
| ВремНоменклатураСХарактеристиками.Характеристика
| ИЗ
| ВремНоменклатураСХарактеристиками КАК ВремНоменклатураСХарактеристиками)
|
|СГРУППИРОВАТЬ ПО
| ЦеныНоменклатуры.Номенклатура,
| ЦеныНоменклатуры.ВидЦены,
| ЦеныНоменклатуры.Характеристика
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
| ВремЦеныПоСоглашениям.Соглашение КАК Соглашение,
| ВремЦеныПоСоглашениям.ИдентификаторСоглашения,
| ВремЦеныПоСоглашениям.ЦенаВключаетНДС КАК ЦенаВключаетНДС,
| ВремЦеныПоСоглашениям.ВидЦены КАК ВидЦены,
| ВремЦеныПоСоглашениям.ИдентификаторВидаЦены,
| ВремЦеныПоСоглашениям.ВалютаСоглашения КАК ВалютаСоглашения,
| ВЫБОР
| КОГДА ВремЦеныПоСоглашениям.Цена > 0
| ТОГДА ВремЦеныПоСоглашениям.Упаковка
| КОГДА ВремЦеныПоСоглашениям.ВидЦены <> ЗНАЧЕНИЕ(Справочник.ВидыЦен.ПустаяСсылка)
| И ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) > 0
| ТОГДА ЦеныНоменклатурыСрезПоследних.Упаковка
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| КОНЕЦ КАК Упаковка,
| ВЫБОР
| КОГДА ВремЦеныПоСоглашениям.Цена > 0
| ТОГДА ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)
| КОГДА ВремЦеныПоСоглашениям.ВидЦены <> ЗНАЧЕНИЕ(Справочник.ВидыЦен.ПустаяСсылка)
| И ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) > 0
| ТОГДА ЦеныНоменклатурыСрезПоследних.Валюта
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)
| КОНЕЦ КАК ВалютаЦены,
| ВЫБОР
| КОГДА ВремЦеныПоСоглашениям.Цена > 0
| ТОГДА ВремЦеныПоСоглашениям.Цена
| КОГДА ВремЦеныПоСоглашениям.ВидЦены <> ЗНАЧЕНИЕ(Справочник.ВидыЦен.ПустаяСсылка)
| И ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) > 0
| ТОГДА ЦеныНоменклатурыСрезПоследних.Цена
| ИНАЧЕ 0
| КОНЕЦ КАК Цена,
| ВремЦеныПоСоглашениям.Номенклатура,
| ВремЦеныПоСоглашениям.ИдентификаторНоменклатуры,
| ВремЦеныПоСоглашениям.Характеристика,
| ВремЦеныПоСоглашениям.ИдентификаторХарактеристики,
| ВЫБОР
| КОГДА ВремЦеныПоСоглашениям.Цена > 0
| ТОГДА ВремЦеныПоСоглашениям.Упаковка.Числитель
| КОГДА ВремЦеныПоСоглашениям.ВидЦены <> ЗНАЧЕНИЕ(Справочник.ВидыЦен.ПустаяСсылка)
| И ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) > 0
| ТОГДА ЦеныНоменклатурыСрезПоследних.Упаковка.Числитель
| ИНАЧЕ 1
| КОНЕЦ КАК УпаковкаКоэффициент,
| ВремЦеныПоСоглашениям.ЕдиницаИзмерения,
| ЕСТЬNULL(ВремСтараяЦена.Цена, 0) КАК CЦена
|ПОМЕСТИТЬ ВремЦены
|ИЗ
| ВремЦеныПоСоглашениям КАК ВремЦеныПоСоглашениям
| ЛЕВОЕ СОЕДИНЕНИЕ ВремЦеныСрезПоследних КАК ЦеныНоменклатурыСрезПоследних
| ПО ВремЦеныПоСоглашениям.ВидЦены = ЦеныНоменклатурыСрезПоследних.ВидЦены
| И ВремЦеныПоСоглашениям.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
| И ВремЦеныПоСоглашениям.Характеристика = ЦеныНоменклатурыСрезПоследних.Характеристика
| ЛЕВОЕ СОЕДИНЕНИЕ ВремСтараяЦена КАК ВремСтараяЦена
| ПО ВремЦеныПоСоглашениям.Характеристика = ВремСтараяЦена.Характеристика
| И ВремЦеныПоСоглашениям.Номенклатура = ВремСтараяЦена.Номенклатура
| И ВремЦеныПоСоглашениям.ВидЦены = ВремСтараяЦена.ВидЦены
|ГДЕ
| ВЫБОР
| КОГДА ВремЦеныПоСоглашениям.Цена > 0
| ТОГДА ВремЦеныПоСоглашениям.Цена
| КОГДА ВремЦеныПоСоглашениям.ВидЦены <> ЗНАЧЕНИЕ(Справочник.ВидыЦен.ПустаяСсылка)
| И ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) > 0
| ТОГДА ЦеныНоменклатурыСрезПоследних.Цена
| ИНАЧЕ 0
| КОНЕЦ > 0
|;
|
|////////////////////////////////////////////////////////////////////////////////
|УНИЧТОЖИТЬ ВремЦеныПоСоглашениям
|;
|
|////////////////////////////////////////////////////////////////////////////////
|УНИЧТОЖИТЬ ВремЦеныСрезПоследних";
Далее ищем функцию «ВыгрузитьПрайсы» в ней находим следующий код:
Для НомерСтроки = 0 по КоличествоСтрок Цикл
ТекЦена = ТзнЦен[НомерСтроки];
Если ПараметрыОбмена.ИспользоватьУпаковкиНоменклатуры И ЗначениеЗаполнено(ТекЦена.Упаковка) Тогда
Единица = ТекЦена.Упаковка;
Коэффициент = ТекЦена.УпаковкаКоэффициент;
Иначе
Единица = ТекЦена.ЕдиницаИзмерения;
Коэффициент = 1;
КонецЕсли;
ИдПредложения = ?(ЗначениеЗаполнено(ТекЦена.Характеристика), XMLСтрока(ТекЦена.ИдентификаторНоменклатуры) + "#" + XMLСтрока(ТекЦена.ИдентификаторХарактеристики), XMLСтрока(ТекЦена.ИдентификаторНоменклатуры));
Если НомерСтроки = КоличествоСтрок тогда
ИдПредложенияСлед = "";
Иначе
ТекЦенаСлед = ТзнЦен[НомерСтроки + 1];
ИдПредложенияСлед = ?(ЗначениеЗаполнено(ТекЦенаСлед.Характеристика), XMLСтрока(ТекЦенаСлед.ИдентификаторНоменклатуры) + "#" + XMLСтрока(ТекЦенаСлед.ИдентификаторХарактеристики), XMLСтрока(ТекЦенаСлед.ИдентификаторНоменклатуры));
КонецЕсли;
Если НомерСтроки = 0 или ИдПредложения <> ИдПредложенияПре тогда
XDTOПредложение = ПараметрыОбмена.МояФабрикаXDTO.Создать(XDTOПредложениеТип);
XDTOПредложение.Ид = ИдПредложения;
XDTOЦены = ПараметрыОбмена.МояФабрикаXDTO.Создать(XDTOЦеныТип);
КонецЕсли;
XDTOЦена = ПараметрыОбмена.МояФабрикаXDTO.Создать(XDTOЦенаТип);
ЦенаТовара = ТекЦена.Цена/Коэффициент;
ПредставлениеЦены = СокрЛП(ТекЦена.Цена) + " " + СокрЛП(ТекЦена.ВалютаЦены) + " за " + СокрЛП(Единица);
XDTOЦена.Представление = ПредставлениеЦены;
XDTOЦена.ИдТипаЦены = XMLСтрока(ТекЦена.ИдентификаторСоглашения);
XDTOЦена.ЦенаЗаЕдиницу = Формат(ЦенаТовара, ПараметрыОбмена.ФорматСуммы);
XDTOЦена.Валюта = Лев(ТекЦена.ВалютаЦены, 3);
//XDTOЦена.ИдЕдиницыИзмерения = XMLСтрока(ТекЦена.БазоваяЕдиницаИзмеренияИдентификатор);
Если ТекЦена.Цена > 0 тогда
XDTOЦены.Цена.Добавить(XDTOЦена);
КонецЕсли;
Если ИдПредложения <> ИдПредложенияСлед тогда
XDTOПредложение.Цены = XDTOЦены;
Владелец.Предложение.Добавить(XDTOПредложение);
КонецЕсли;
ИдПредложенияПре = ИдПредложения;
Итератор = Итератор + 1;
КонецЦикла;
И меняем его на следующий:
Для НомерСтроки = 0 по КоличествоСтрок Цикл
ТекЦена = ТзнЦен[НомерСтроки];
Если ПараметрыОбмена.ИспользоватьУпаковкиНоменклатуры И ЗначениеЗаполнено(ТекЦена.Упаковка) Тогда
Единица = ТекЦена.Упаковка;
Коэффициент = ТекЦена.УпаковкаКоэффициент;
Иначе
Единица = ТекЦена.ЕдиницаИзмерения;
Коэффициент = 1;
КонецЕсли;
ИдПредложения = ?(ЗначениеЗаполнено(ТекЦена.Характеристика), XMLСтрока(ТекЦена.ИдентификаторНоменклатуры) + "#" + XMLСтрока(ТекЦена.ИдентификаторХарактеристики), XMLСтрока(ТекЦена.ИдентификаторНоменклатуры));
Если НомерСтроки = КоличествоСтрок тогда
ИдПредложенияСлед = "";
Иначе
ТекЦенаСлед = ТзнЦен[НомерСтроки + 1];
ИдПредложенияСлед = ?(ЗначениеЗаполнено(ТекЦенаСлед.Характеристика), XMLСтрока(ТекЦенаСлед.ИдентификаторНоменклатуры) + "#" + XMLСтрока(ТекЦенаСлед.ИдентификаторХарактеристики), XMLСтрока(ТекЦенаСлед.ИдентификаторНоменклатуры));
КонецЕсли;
Если НомерСтроки = 0 или ИдПредложения <> ИдПредложенияПре тогда
XDTOПредложение = ПараметрыОбмена.МояФабрикаXDTO.Создать(XDTOПредложениеТип);
XDTOПредложение.Ид = ИдПредложения;
XDTOЦены = ПараметрыОбмена.МояФабрикаXDTO.Создать(XDTOЦеныТип);
КонецЕсли;
XDTOЦена = ПараметрыОбмена.МояФабрикаXDTO.Создать(XDTOЦенаТип);
ЦенаТовара = ТекЦена.Цена/Коэффициент;
ПредставлениеЦены = СокрЛП(ТекЦена.Цена) + " " + СокрЛП(ТекЦена.ВалютаЦены) + " за " + СокрЛП(Единица);
XDTOЦена.Представление = ПредставлениеЦены;
XDTOЦена.ИдТипаЦены = XMLСтрока(ТекЦена.ИдентификаторСоглашения);
XDTOЦена.ЦенаЗаЕдиницу = Формат(ЦенаТовара, ПараметрыОбмена.ФорматСуммы);
XDTOЦена.Валюта = Лев(ТекЦена.ВалютаЦены, 3);
//XDTOЦена.ИдЕдиницыИзмерения = XMLСтрока(ТекЦена.БазоваяЕдиницаИзмеренияИдентификатор);
Если ТекЦена.Цена > 0 тогда
XDTOЦены.Цена.Добавить(XDTOЦена);
КонецЕсли;
// Формируем запись о старой цене на товар
XDTOЦена = ПараметрыОбмена.МояФабрикаXDTO.Создать(XDTOЦенаТип);
ЦенаТовара = ТекЦена.CЦена/Коэффициент;
ПредставлениеЦены = СокрЛП(ТекЦена.CЦена) + " " + СокрЛП(ТекЦена.ВалютаЦены) + " за " + СокрЛП(Единица);
XDTOЦена.Представление = ПредставлениеЦены;
XDTOЦена.ИдТипаЦены = XMLСтрока("old_price");
XDTOЦена.ЦенаЗаЕдиницу = Формат(ЦенаТовара, ПараметрыОбмена.ФорматСуммы);
XDTOЦена.Валюта = Лев(ТекЦена.ВалютаЦены, 3);
//XDTOЦена.ИдЕдиницыИзмерения = XMLСтрока(ТекЦена.БазоваяЕдиницаИзмеренияИдентификатор);
Если ТекЦена.CЦена > 0 тогда
XDTOЦены.Цена.Добавить(XDTOЦена);
КонецЕсли;
Если ИдПредложения <> ИдПредложенияСлед тогда
XDTOПредложение.Цены = XDTOЦены;
Владелец.Предложение.Добавить(XDTOПредложение);
КонецЕсли;
ИдПредложенияПре = ИдПредложения;
Итератор = Итератор + 1;
КонецЦикла;
Все после этого для каждого товара добавлена информация по двум типам цен. Первая запись это текущая актуальная цена, а вторая старая цена, если она есть. Но на этом еще не все нужно также описать наш новый тип цен который будет выгружаться в общей информации. Идем в процедуру «ВыгрузитьСоглашенияXDTO» и после цикла который обходит выборку «ВыборкаСоглашений» добавляем следующие строчки кода:
XDTOТипЦены = ПараметрыОбмена.МояФабрикаXDTO.Создать(XDTOТипЦеныТип);
XDTOТипЦены.Ид = XMLСтрока("old_price");
XDTOТипЦены.НомерВерсии = Б_ОбменССайтомСервер.ПолучитьВерсиюОбъекта(ПараметрыОбмена, ВыборкаСоглашений.ВерсияДанных, "Типов цен");
XDTOТипЦены.Наименование = "old_price";
XDTOТипЦены.ПометкаУдаления = XMLСтрока(ВыборкаСоглашений.ПометкаУдаления);
XDTOТипЦены.Валюта = Лев(ВыборкаСоглашений.ВалютаКод, 3 );
XDTOНалог = ПараметрыОбмена.МояФабрикаXDTO.Создать(XDTOНалогТип);
XDTOНалог.Наименование = ПараметрыОбмена.НаименованиеНалога;
XDTOНалог.УчтеноВСумме = XMLСтрока(ВыборкаСоглашений.ЦенаВключаетНДС);
XDTOТипЦены.Налог.Добавить(XDTOНалог);
XDTOТипыЦен.ТипЦены.Добавить(XDTOТипЦены);
Итератор = Итератор + 1;
Ну вот и все. Решение работает и нас полностью устраивает за 7 дней отладки ошибок вроде нет. Удачи!!! Ну и не забудьте поставить задачу web программисту чтоб он реализовал вывод этой информации в карточку товара на самом сайте.