Как вывести итоговый вес и объем на форму документа Заказ клиента. УТ 11.4

16.01.20

Задачи пользователя - Адаптация типовых решений

Всем привет, долго ломал голову, но с помощью тыка и подсказок более опытных программистов, вот что мне удалось достичь и как это я сделал. Открываем конфигуратор - заходим в Документы-Заказ-Клиенту-Формы-ФормаДокумента, все будем делать только здесь, снизу формы две вкладки, в общем сама форма и модуль (как открыть, смотри рисунок - открыть форму).

Создаем два табличных поля, у меня это ТоварВес и ТоварОбъем, указываем путь к данным - Объект.Товары.Номенклатура.Вес(Числитель) и указываем заголовок в свойствах, для более корректного отображения в списке колонок (смотри рисунок Создаем 2 поля)

 

.
Создаем реквизиты итоговых значений у меня это ИтогВес и ИтогОбъем с типом число, характеристики указывайте сами по умолчанию 10,3 (для создания реквизита нажмите на маленький плюсик в области реквизитов (смотри рисунок Реквизиты для итоговых)

 

.


Далее, поочередно цепляем мышкой созданные реквизиты в дерево формы, туда где вам необходимо, я сделал снизу (смотри рисунок Размещаем рисунок на форме)

 

Указываем Заголовок, вид выбираем поле надписи, путь присвоен автоматически. 
После этого в нижней части окна переходим на вкладку модуль и ищем процедуру ТоварыКоличествоУпаковокПриИзменении, и вставляем следующий код

//VID(
      Объем1 = 0;
        Вес1 = 0;
        Для Каждого Строка Из Объект.Товары Цикл
        Объем1 = Объем1 + Строка.Количество * Строка.Номенклатура.ОбъемЧислитель;            
        Вес1 = Вес1 + Строка.Количество * Строка.Номенклатура.ВесЧислитель;    
    КонецЦикла;    
        ИтогоВес = Вес1;
        ИтогоОбъем = Объем1;
//VID)  

 

(смотри рисунок код модуля)

 


После этого обновляем конфигурацию и смотрим что получилось Рисунок в итоге.

 

Т.е. после изменения количества снизу у нас просчитывается общий вес и объем всех товаров, а в колонках прописан вес и объем за 1 единицу товара.

При проверке выяснилось, что при выходе данные автоматически не проставляются, все что для этого нужно, чтобы при открытии заказа клиента, у вас уже были посчитаны данные, это в модуле формы документа найти процедуру ПриОткрытии и вставить в конец, тот же код.

Если Вам не нужны колонки с отображением веса за единицу, то можете их скрыть и создать новые или изменить заголовок для вывода общих построчных значений, ну например вы количество меняете на 4 вес товара у вас при этом 5 кг, и вместо 5 в окне должно писаться 20, т.е. сумма именно этих товаров в зависимости от количества, то нам необходимо, я не стал удалять текущие колонки,  создал новые Вес товара и Объем Товара. Дальше открыл конфигурации раскрыл документ заказ клиента, табличные части, товары и правой кнопкой создал реквизиты табличной части ВесТовара и ОбъемТовара, с типом Число, 15,3, далее как я уже и писал создал 2 поля ВесТовара иОбъем товара и указал путь к этим 2 реквизитам (смотри рисунок подсчет строк)

После этого заходим в модуль объекта формы и дополняем в те места где вставляли первоначальный код, следующий код

Для каждого СтрокаТД из Объект.Товары Цикл
			СтрокаТД.ВесТовара = СтрокаТД.Количество * СтрокаТД.Номенклатура.ВесЧислитель;
			СтрокаТД.ОбъемТовара = СтрокаТД.Количество * СтрокаТД.Номенклатура.ОбъемЧислитель;
	КонецЦикла;

Смотрим что получилось, вес и объем за 1 единицу товара я скрыл убрав в свойствах галочку видимость и теперь у меня построчный расчет веса и объема.

Смотри рисунок что вышло

Ребята при работе выяснилось, что данный код не работает в тонком клиенте, поэтому создайте следующую функцию прямо в модуле документа

//VID( добавляем наши реквизиты для тонкого клиента, без этой функции, код указанный при открытии ипри изменении количества работает только на толстом клиенте
 
&НаСервереБезКонтекста
Функция ПолучитьСведенияНоменклатуры(Номенклатура)
Возврат ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Номенклатура, "ОбъемЧислитель, ВесЧислитель");
КонецФункции
//VID)

и измените предыдущий код, во всех местах куда его вставляли!

//VID(
	  Объем1 = 0; 
      Вес1 = 0; 
      Для Каждого Строка Из Объект.Товары Цикл 

      СведенияНоменклатуры = ПолучитьСведенияНоменклатуры(Строка.Номенклатура); 

      Объем1 = Объем1 + Строка.Количество * СведенияНоменклатуры.ОбъемЧислитель; 
      Вес1 = Вес1 + Строка.Количество * СведенияНоменклатуры.ВесЧислитель; 

     Строка.ВесТовара = Строка.Количество * СведенияНоменклатуры.ВесЧислитель;
	  Строка.ОбъемТовара = Строка.Количество * СведенияНоменклатуры.ОбъемЧислитель;
	  
      КонецЦикла; 
      ИтогоВес = Вес1; 
      ИтогоОбъем = Объем1;     	  
	
//VID)	


Теперь надеюсь, точно все, пока полет нормальный

Спасибо, что прочли эту статью, всем всего хорошего.

VID УТ11.4 УФ

См. также

Табличная часть в доп. реквизитах и формирование таблиц в шаблоне docx для 1С:ДО 3.0

Адаптация типовых решений Платформа 1С v8.3 1С:Документооборот Россия Платные (руб)

Расширение конфигурации для «1С:Документооборот КОРП», редакция 3.0. позволяет: 1.использовать произвольные табличные части в качестве дополнительных реквизитов к документу; 2 использовать произвольные табличные части в шаблонах в формате docx для автоматического заполнения таблиц.

29400 руб.

29.06.2023    4454    9    4    

18

Расширение для 1С:УНФ. Автоматическое снятие резервов в Заказах покупателей

Логистика, склад и ТМЦ Адаптация типовых решений Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Управленческий учет Платные (руб)

Чтобы не допустить путаницы с обещаниями клиентам и для четкого контроля исполнения заказов мы используем резервирование товаров. Мы доработали УНФ, чтобы она автоматически отменяла старые резервы и не мешала эффективно продавать.

7200 руб.

02.08.2023    2957    4    0    

19

Создать на основании - своя кнопка (БСП). Проблема двух подменю Создать на основании

БСП (Библиотека стандартных подсистем) Адаптация типовых решений Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

Понадобилось в подменю "Создать на основании" добавить свою команду, которая открывает обработку. В процессе доработок появилась проблема двух подменю "Создать на основании". В статье о том, как решились проблемы.

01.03.2024    1298    dimanich70    6    

13

Доработка отчета "Связанные документы" (структура подчиненности) для вывода объектов из любого расширения

Адаптация типовых решений Платформа 1С v8.3 1С:Управление торговлей 11 Россия Абонемент ($m)

Доработка типового отчета "Связанные документы" позволяет просто и быстро расширять состав объектов для построения структуры подчиненности документов, используя объекты основной конфигурации и любых расширений.

1 стартмани

27.10.2023    1997    13    avmartynov    10    

43

Печать непроведенных документов для УТ, КА, ERP. Настройка печати по пользователям, документам и печатным формам

Пакетная печать Печатные формы Адаптация типовых решений Универсальные функции Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Абонемент ($m)

Расширение для программ 1С:Управление торговлей, 1С:Комплексная автоматизация, 1С:ERP, которое позволяет распечатывать печатные формы для непроведенных документов. Можно настроить, каким пользователям, какие конкретные формы документов разрешено печатать без проведения документа.

2 стартмани

22.08.2023    2078    21    progmaster    7    

3
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. PowerBoy 3351 24.01.20 08:12 Сейчас в теме
Проще вывести в подвал табличной части. Да и итоговые суммы колонок уже есть подсчитанные в реквизитах таб.части.
Для колонки:
ПутьКДаннымПодвала:Объект.Товары.ИтогКоличествоУпаковок
2. VID1234 108 24.01.20 08:22 Сейчас в теме
(1) Спасибо. Как нибудь попробую!
3. Bamovec 08.06.20 10:47 Сейчас в теме
(2) Вызывать лучше из процедуры ТоварыПриОкончанииРедактирования т.к. могут поменять наименование номенклатуры и вес не пересчитает
4. DanDy 51 13.07.20 17:32 Сейчас в теме
(3)А еще лучше для такого использовать расширения, чтобы при обновлении не затиралось.
7. user1696980 10.11.21 16:28 Сейчас в теме
(4) А есть такое расширение?
5. patimka 11.09.20 04:12 Сейчас в теме
Лично мне непонятно, почему игнорируется весЗнаменатель. Иногда указывают сколько в килограммах грамм. Кроме умножения на вес числитель надо бы разделить на вес знаменатель.
6. VID1234 108 11.09.20 09:21 Сейчас в теме
(5)Здравствуйте. Это уже смотря какие потребности, для меня этого было достаточно, но если Вам этого недостаточно, то почему бы и нет.
8. sasha-asn 24.01.22 12:40 Сейчас в теме
9. VID1234 108 24.01.22 14:34 Сейчас в теме
(8)Здравствуйте. Я рад. Хорошего дня!
10. vkholodnov 7 17.03.22 06:58 Сейчас в теме
Почему именно цикл? Это актуально на малом кол-ве записей. А если их будет 2000? Рекомендую такую схему:

Кол = Объект.Товары.Итог("Количество");
Объект.ОбщийВес = Объект.Товары.Итог("Вес") *Кол;
Объект.ОбщийОбъем = Объект.Товары.Итог("Объем") *Кол;


Всего 3 строчки кода.
11. chuff 26.04.22 09:32 Сейчас в теме
(10) Страшно даже представить, какой получится общий вес, если общее количество единиц товара умножить на сумму всех весов.
Например, первая строка 1 шт 1 кг, вторая 1 шт 10кг, итоговый вес будет (1 + 1) * (1 + 10) = 22кг...
12. user936084 26.04.22 13:11 Сейчас в теме
Верно подмечено , нужно суммировать !
Оставьте свое сообщение