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

Расчет стоимости посредством общего модуля

Автор Дмитрий357, 10 сен 2021, 10:24

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

Дмитрий357

Здравствуйте! Имеется код, позволяющий при создании позиции в табличной части документа Поступление товаров, подставлять значение при выборе позиции номенклатуры Цену поступления из справочника Номенклатура. Также имеется константа, включающая/отключающая автоматический расчет стоимости. Не могу воткнуть сюда общий модуль с расчетом стоимости, выдает ошибку "Слишком много фактических параметров". Подскажите есть возможность как-либо осуществить расчет посредством общего модуля с сохранением всех плюшек. Просьба отразить это в коде.

&НаСервереБезКонтекста
Функция ТоварыНоменклатураПриИзмененииНаСервере(Номенклатура)
   Возврат Номенклатура.ЦенаЗакупочная;
КонецФункции

&НаСервереБезКонтекста
Функция ПолучитьЗначенияКонстанты()
   Возврат Константы.РассчитыватьСтоимостьАвтоматически.Получить();
КонецФункции


&НаКлиенте
Процедура ТоварыНоменклатураКоличествоПриИзменении(Элемент)
   Рассчитывать=ПолучитьЗначенияКонстанты ();
   СтрокаТЧ=Элементы.Товары.ТекущиеДанные;
   СтрокаТЧ.ЦенаЗакупочная=ТоварыНоменклатураПриИзмененииНаСервере (СтрокаТЧ.Номенклатура);
      Если Рассчитывать=Истина Тогда
         СтрокаТЧ.Стоимость=СтрокаТЧ.ЦенаЗакупочная*СтрокаТЧ.Количество;
      КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ТоварыЦенаЗакупочнаяПриИзменении(СтрокаТЧ)
   Рассчитывать=ПолучитьЗначенияКонстанты ();
   СтрокаТЧ=Элементы.Товары.ТекущиеДанные;
   Если Рассчитывать=Истина Тогда
      СтрокаТЧ.Стоимость=СтрокаТЧ.ЦенаЗакупочная*СтрокаТЧ.Количество;
   КонецЕсли;
КонецПроцедуры

Дмитрий357

@Дмитрий357, Создание общего модуля необходимо поскольку имеется еще минимум три документа с такими же арифметическими действиями.
Выше код неправильный. Вот тот, который нужен:

&НаСервереБезКонтекста
Функция ТоварыНоменклатураПриИзмененииНаСервере(Номенклатура)
   Возврат Номенклатура.ЦенаЗакупочная;
КонецФункции

&НаСервереБезКонтекста
Функция ПолучитьЗначенияКонстанты()
   Возврат Константы.РассчитыватьСтоимостьАвтоматически.Получить();
КонецФункции


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

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

И код общего модуля:
&НаКлиенте
Функция РассчитатьСтоимость (СтрокаТЧ) Экспорт
   СтрокаТЧ.Стоимость=СтрокаТЧ.Цена*СтрокаТЧ.Количество;
КонецФункции

LexaK

Вы спрашиваете такую вещь, которую никто не делает.
Поступление - это отражение факта без всяких расчётов. Для автоматизации пишут обработчики по загрузке Поступлений по файлам от Поставщика. Либо используют обмен по Диадоку.
ответ Понравился? (в смысле пригодился?)

alexandr_ll

@Дмитрий357, В общем модуле функция имеет один параметр, а в формуле вы передаете два. Да и тип значения, думаю, неправильный.

Теги:

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

Рейтинг@Mail.ru Rambler's Top100

Поиск