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