четверг, 22 мая 2014 г.

УТ11: заполнить цену в строке документа по виду цен

Заполняем табличную часть "Товары" документа по виду цен с расчетом суммы, суммы НДС
Пример функции:
строкаТаблицы - строка табличной части "Товары".



Функция РасчитатьПоВидуЦен(строкаТаблицы,Объект,ИмяВидаЦен)
    стр = строкаТаблицы;
    стр.ВидЦены = Справочники.ВидыЦен.НайтиПоНаименованию(ИмяВидаЦен,Истина);
    МассивСтрок = Новый Массив;
    МассивСтрок.Добавить(стр);
   
    СтруктураПересчетаСуммы = ОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруПересчетаСуммыНДСВСтрокеТЧ(Объект);
    СтруктураДействий = Новый Структура;
    СтруктураДействий.Вставить("ПересчитатьСумму");
    СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
    СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
    СтруктураДействий.Вставить("ПересчитатьСуммуРучнойСкидки");
    СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
    СтруктураДействий.Вставить("ОчиститьАвтоматическуюСкидку");
   
    ЦеныРассчитаны = ПродажиСервер.ЗаполнитьЦены(
    Объект.Товары,
    МассивСтрок, // Массив строк или структура отбора
    Новый Структура( // Параметры заполнения
    "Дата, Валюта, ВидЦены, ПоляЗаполнения",
    Объект.Дата,
    Объект.Валюта,
    стр.ВидЦены,
    "Цена, ВидЦены"
    ),
    СтруктураДействий);
   
    ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, Новый Структура(
    "БезВозвратнойТары,ОтмененоБезВозвратнойТары",
    "Сумма,СуммаНДС,СуммаСНДС,СуммаАвтоматическойСкидки,СуммаРучнойСкидки",
    "Сумма,СуммаНДС,СуммаСНДС,СуммаАвтоматическойСкидки,СуммаРучнойСкидки"));
КонецФункции