Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
16 апр 2024, 07:53

Как посчитать стоимость всех работ в форме?

Автор keramik, 03 окт 2014, 16:54

0 Пользователей и 1 гость просматривают эту тему.

keramik

Появился ещё один вопрос.
В формах вызывается стоимость работы, но не могу понять, как найти общую сумму стоимости работ.
Я указал для поля "Цена Работы" данные, выбрав ЭлементыФормы.Работы.ТекущиеДанные.Сумма, но в таком случае показывается только текущая позиция, плюс, при открытии формы в этом поле ничего нет. Надо перейти на закладку "Работы", лишь тогда появляются значения.
Плюс, вызывается событие ПриИзменении
Процедура РаботыСуммаПриИзменении(Элемент)
    ОбработкаРеквизита("Работы.Сумма",ЭлементыФормы.Работы.ТекущаяСтрока,Этаформа);
КонецПроцедуры


Пример в приложении. На нём видно, что выбирая первую позицию, показывается стоимость работы для неё, а выбирая вторуюу - для второй.
Мне же надо, чтобы при открытии карточки заказа сразу появлялась стоимость работ общая и стоимость запчастей, тоже общая.

Версия конфигурации "Управление торговлей", редакция 10.3(10.3.7.9)

LexaK

в документе добавить реквизит, СуммаРабот. Этот реквизит вывести на форму,
при любом изменении табличной части - Работы, выполнить код:

СуммаРабот = Работы.Итог("Сумма");
если помогло нажмите: Спасибо!

keramik

Создал новый элемент в реквизитах, назвал его СуммаРабот.
Добавил в форме поле Цена Работы (тип TextBox) и добавил в условие ПриИзменении вызов процедуры
Процедура СуммаРабот(Элемент)
СуммаРабот = Работы.Итог("Сумма");
КонецПроцедуры

Но в поле не выводится стоимость работ. Оно остаётся пустым.

cska-fanat-kz

Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

keramik

Спасибо! Понял, добавлял к полю, а надо было ко всей вкладке заказа.
Добавлено: 06 окт 2014, 16:02


Продолжаю изменять форму. Столкнулся со следующим.

Необходимо подставить в таблицу, находящуюся в форме значение "Цена", заданное по-умолчанию, так, чтобы автоматически появлялось, когда пользователь начинает заполнение работы. Это значениедолжно быть равно 20 (Евро), плюс, значение пользователь может менять на другое (просто по-умолчанию ему подставляется 20).

В похожем случае для части формы я задавал значение поля Состояние заказа, используя код:
Если ЭтоНовый() Тогда
Состояние = Перечисления.СостояниеЗаказНаряда.ВРаботе;
...
КонецЕсли;

В этом случае при начале работы с формой заказ сразу был со статусом "В работе".

Но как подставить значение для таблицы, которая встроена в форму? Что отвечает за передачу значений в таблицу? Мой код, который не работает:
Если ЭтоНовый() Тогда
Работы.Цена = ЭлементыФормы.Работы.Цена("20");
КонецЕсли;


TreeDogNight

Цитата: keramik от 06 окт 2014, 12:44Если ЭтоНовый() Тогда
Работы.Цена = ЭлементыФормы.Работы.Цена("20");
КонецЕсли;

Что вы хотите добиться этим кодом? "Работы" это Табличная часть? Тогда для присваивания значений, обращайтесь к отдельным строчкам по индексу: Работы[0].Цена = ...


Cегодня не все могут провести завтрашним числом. Вернее, не только лишь все - мало кто может это сделать.

LexaK

если просто подставлять 20-ку
там же на форме в событии при начале редактирования, вставить код

а вообще цена должна браться из регистра цен на работу, тогда надо на событие выбора/изменение поля работы, и при этом пытаться пересчитывать сумму, соответственно можно и нужно если не задано количество, сразу ставить 1.

Процедура ТабличнаяРаботПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
лкТек = Элемент.ТекущиеДанные;
Если лкТек.Цена = 0 Тогда
лкТек.Цена  = 20;
КонецЕсли;
КонецПроцедуры


если помогло нажмите: Спасибо!

keramik

Спасибо, значение подставляется.

Похожие темы (5)

Рейтинг@Mail.ru

Поиск