Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Функция ВесДокументаВТоннах(дсДокумент, дсЗаказКлиента = Неопределено) Экспорт
- Если ТипЗнч(дсДокумент) = Тип("ДокументСсылка.ЗаказКлиента") Тогда
- Запрос = Новый Запрос("ВЫБРАТЬ
- | ЗаказКлиентаТовары.Номенклатура КАК Номенклатура,
- | ЗаказКлиентаТовары.Характеристика КАК Характеристика,
- | ЗаказКлиентаТовары.Упаковка КАК Упаковка,
- | СУММА(ЗаказКлиентаТовары.КоличествоУпаковок) КАК КоличествоУпаковок,
- | СУММА(ЗаказКлиентаТовары.Количество) КАК Количество
- |ИЗ
- | Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
- |ГДЕ
- | ЗаказКлиентаТовары.Ссылка = &Ссылка
- |
- |СГРУППИРОВАТЬ ПО
- | ЗаказКлиентаТовары.Номенклатура,
- | ЗаказКлиентаТовары.Характеристика,
- | ЗаказКлиентаТовары.Упаковка");
- Запрос.УстановитьПараметр("Ссылка", дсДокумент);
- тзТовары = Запрос.Выполнить().Выгрузить();
- ИначеЕсли ТипЗнч(дсДокумент) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
- Запрос = Новый Запрос("ВЫБРАТЬ
- | РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура,
- | РеализацияТоваровУслугТовары.Характеристика КАК Характеристика,
- | РеализацияТоваровУслугТовары.Упаковка КАК Упаковка,
- | СУММА(РеализацияТоваровУслугТовары.КоличествоУпаковок) КАК КоличествоУпаковок,
- | СУММА(РеализацияТоваровУслугТовары.Количество) КАК Количество
- |ИЗ
- | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
- |ГДЕ
- | РеализацияТоваровУслугТовары.Ссылка = &Ссылка
- | И РеализацияТоваровУслугТовары.ЗаказКлиента = &ЗаказКлиента
- |
- |СГРУППИРОВАТЬ ПО
- | РеализацияТоваровУслугТовары.Номенклатура,
- | РеализацияТоваровУслугТовары.Характеристика,
- | РеализацияТоваровУслугТовары.Упаковка");
- Запрос.УстановитьПараметр("Ссылка", дсДокумент);
- Если ЗначениеЗаполнено(дсЗаказКлиента) Тогда
- Запрос.УстановитьПараметр("ЗаказКлиента", дсЗаказКлиента);
- Иначе
- Запрос.Текст = СтрЗаменить(Запрос.Текст, "РеализацияТоваровУслугТовары.ЗаказКлиента = &ЗаказКлиента", "ИСТИНА");
- КонецЕсли;
- тзТовары = Запрос.Выполнить().Выгрузить();
- Иначе
- тзТовары = дсДокумент.Товары.Выгрузить(, "Номенклатура, Характеристика, Упаковка, КоличествоУпаковок, Количество");
- тзТовары.Свернуть("Номенклатура, Характеристика, Упаковка", "КоличествоУпаковок, Количество");
- КонецЕсли;
- тзТовары.Колонки.Добавить("НомерСтроки", ОбщегоНазначения.ОписаниеТипаЧисло(10, 0));
- тзТовары.Колонки.Добавить("Вес", ОбщегоНазначения.ОписаниеТипаЧисло(15, 3));
- тзТовары.Колонки.Добавить("Объем", ОбщегоНазначения.ОписаниеТипаЧисло(15, 3));
- тзТовары.Колонки.Добавить("ВесУпаковки", ОбщегоНазначения.ОписаниеТипаЧисло(15, 3));
- тзТовары.Колонки.Добавить("ОбъемУпаковки", ОбщегоНазначения.ОписаниеТипаЧисло(15, 3));
- тзТовары.Колонки.Добавить("ЕдиницаИзмеренияВеса", Новый ОписаниеТипов("СправочникСсылка.УпаковкиЕдиницыИзмерения"));
- тзТовары.Колонки.Добавить("ЕдиницаИзмеренияОбъема", Новый ОписаниеТипов("СправочникСсылка.УпаковкиЕдиницыИзмерения"));
- ПараметрыЗаполненияРеквизитов = Новый Структура;
- ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьВесУпаковки",Новый Структура("Номенклатура, Упаковка", "ВесУпаковки"));
- ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьОбъемУпаковки",Новый Структура("Номенклатура, Упаковка", "ОбъемУпаковки"));
- ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьЕдиницуИзмеренияВеса",Новый Структура("Номенклатура, Упаковка", "ЕдиницаИзмеренияВеса"));
- ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьЕдиницуИзмеренияОбъема",Новый Структура("Номенклатура, Упаковка", "ЕдиницаИзмеренияОбъема"));
- ПараметрыЗаполненияРеквизитов.Вставить("ПересчитатьВесОбъем");
- НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(тзТовары, ПараметрыЗаполненияРеквизитов);
- ИтогоВес = 0;
- Для Каждого стТовары из тзТовары Цикл
- ИтогоВес = ИтогоВес + стТовары.КоличествоУпаковок * стТовары.ВесУпаковки;
- КонецЦикла;
- ИтогоВес = ИтогоВес / 1000; // кг в тонны
- Возврат ИтогоВес;
- КонецФункции
Add Comment
Please, Sign In to add comment