Guest User

Untitled

a guest
Dec 12th, 2019
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.52 KB | None | 0 0
  1. Функция ВесДокументаВТоннах(дсДокумент, дсЗаказКлиента = Неопределено) Экспорт
  2.  
  3. Если ТипЗнч(дсДокумент) = Тип("ДокументСсылка.ЗаказКлиента") Тогда
  4. Запрос = Новый Запрос("ВЫБРАТЬ
  5. | ЗаказКлиентаТовары.Номенклатура КАК Номенклатура,
  6. | ЗаказКлиентаТовары.Характеристика КАК Характеристика,
  7. | ЗаказКлиентаТовары.Упаковка КАК Упаковка,
  8. | СУММА(ЗаказКлиентаТовары.КоличествоУпаковок) КАК КоличествоУпаковок,
  9. | СУММА(ЗаказКлиентаТовары.Количество) КАК Количество
  10. |ИЗ
  11. | Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
  12. |ГДЕ
  13. | ЗаказКлиентаТовары.Ссылка = &Ссылка
  14. |
  15. |СГРУППИРОВАТЬ ПО
  16. | ЗаказКлиентаТовары.Номенклатура,
  17. | ЗаказКлиентаТовары.Характеристика,
  18. | ЗаказКлиентаТовары.Упаковка");
  19. Запрос.УстановитьПараметр("Ссылка", дсДокумент);
  20. тзТовары = Запрос.Выполнить().Выгрузить();
  21.  
  22. ИначеЕсли ТипЗнч(дсДокумент) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
  23. Запрос = Новый Запрос("ВЫБРАТЬ
  24. | РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура,
  25. | РеализацияТоваровУслугТовары.Характеристика КАК Характеристика,
  26. | РеализацияТоваровУслугТовары.Упаковка КАК Упаковка,
  27. | СУММА(РеализацияТоваровУслугТовары.КоличествоУпаковок) КАК КоличествоУпаковок,
  28. | СУММА(РеализацияТоваровУслугТовары.Количество) КАК Количество
  29. |ИЗ
  30. | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
  31. |ГДЕ
  32. | РеализацияТоваровУслугТовары.Ссылка = &Ссылка
  33. | И РеализацияТоваровУслугТовары.ЗаказКлиента = &ЗаказКлиента
  34. |
  35. |СГРУППИРОВАТЬ ПО
  36. | РеализацияТоваровУслугТовары.Номенклатура,
  37. | РеализацияТоваровУслугТовары.Характеристика,
  38. | РеализацияТоваровУслугТовары.Упаковка");
  39. Запрос.УстановитьПараметр("Ссылка", дсДокумент);
  40. Если ЗначениеЗаполнено(дсЗаказКлиента) Тогда
  41. Запрос.УстановитьПараметр("ЗаказКлиента", дсЗаказКлиента);
  42. Иначе
  43. Запрос.Текст = СтрЗаменить(Запрос.Текст, "РеализацияТоваровУслугТовары.ЗаказКлиента = &ЗаказКлиента", "ИСТИНА");
  44. КонецЕсли;
  45. тзТовары = Запрос.Выполнить().Выгрузить();
  46.  
  47. Иначе
  48. тзТовары = дсДокумент.Товары.Выгрузить(, "Номенклатура, Характеристика, Упаковка, КоличествоУпаковок, Количество");
  49. тзТовары.Свернуть("Номенклатура, Характеристика, Упаковка", "КоличествоУпаковок, Количество");
  50. КонецЕсли;
  51.  
  52. тзТовары.Колонки.Добавить("НомерСтроки", ОбщегоНазначения.ОписаниеТипаЧисло(10, 0));
  53. тзТовары.Колонки.Добавить("Вес", ОбщегоНазначения.ОписаниеТипаЧисло(15, 3));
  54. тзТовары.Колонки.Добавить("Объем", ОбщегоНазначения.ОписаниеТипаЧисло(15, 3));
  55. тзТовары.Колонки.Добавить("ВесУпаковки", ОбщегоНазначения.ОписаниеТипаЧисло(15, 3));
  56. тзТовары.Колонки.Добавить("ОбъемУпаковки", ОбщегоНазначения.ОписаниеТипаЧисло(15, 3));
  57. тзТовары.Колонки.Добавить("ЕдиницаИзмеренияВеса", Новый ОписаниеТипов("СправочникСсылка.УпаковкиЕдиницыИзмерения"));
  58. тзТовары.Колонки.Добавить("ЕдиницаИзмеренияОбъема", Новый ОписаниеТипов("СправочникСсылка.УпаковкиЕдиницыИзмерения"));
  59.  
  60. ПараметрыЗаполненияРеквизитов = Новый Структура;
  61. ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьВесУпаковки",Новый Структура("Номенклатура, Упаковка", "ВесУпаковки"));
  62. ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьОбъемУпаковки",Новый Структура("Номенклатура, Упаковка", "ОбъемУпаковки"));
  63. ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьЕдиницуИзмеренияВеса",Новый Структура("Номенклатура, Упаковка", "ЕдиницаИзмеренияВеса"));
  64. ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьЕдиницуИзмеренияОбъема",Новый Структура("Номенклатура, Упаковка", "ЕдиницаИзмеренияОбъема"));
  65. ПараметрыЗаполненияРеквизитов.Вставить("ПересчитатьВесОбъем");
  66. НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(тзТовары, ПараметрыЗаполненияРеквизитов);
  67.  
  68. ИтогоВес = 0;
  69. Для Каждого стТовары из тзТовары Цикл
  70. ИтогоВес = ИтогоВес + стТовары.КоличествоУпаковок * стТовары.ВесУпаковки;
  71. КонецЦикла;
  72.  
  73. ИтогоВес = ИтогоВес / 1000; // кг в тонны
  74.  
  75. Возврат ИтогоВес;
  76.  
  77. КонецФункции
Add Comment
Please, Sign In to add comment