конфигурация учебная
в расходной накладной сделал что бы уч цена (формула остатокСумма / остатокКоличество) рассчитывалась в модуле формы мне сказали что это не правильно нужно обязательно при проведении вот я не пойму как это реализовать
в модуле формы у меня был вот такой запрос
&НаКлиенте
Процедура РасходТМЦПриИзменении(Элемент)
стр = Элементы.Расход.ТекущиеДанные;
стр.Цена = ПолучитьЦену.ПолучитьЦену(стр.ТМЦ,объект.Дата);
стр.УчЦена = ПолучитьУчЦену(стр.ТМЦ,объект.Дата,объект.Склад);
РаботаСдокументами.РассчитатьУчСумму(стр);
РаботаСдокументами.РассчитатьСумму(стр);
РаботаСдокументами.РассчитатьСуммуСНДС(стр,объект);
КонецПроцедуры
&НаСервере
Функция ПолучитьУчЦену(тмц,дата,склад)
Запрос = Новый Запрос;
Запрос.Текст ="ВЫБРАТЬ
| ТМЦОстатки.ТМЦ,
| ТМЦОстатки.Склад,
| ТМЦОстатки.КоличествоОстаток,
| ТМЦОстатки.СуммаОстаток
|ИЗ
| РегистрНакопления.ТМЦ.Остатки(
| &Дата,
| Склад = &Склад
| И ТМЦ = &ТМЦ) КАК ТМЦОстатки";
Запрос.УстановитьПараметр("Дата", Дата);
Запрос.УстановитьПараметр("ТМЦ", ТМЦ);
Запрос.УстановитьПараметр("Склад",Склад);
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Если Выборка.Следующий() Тогда
УчЦена = Выборка.СуммаОстаток/Выборка.КоличествоОстаток;
Возврат УчЦена;
КонецЕсли;
КонецФункции
Правильный ответ
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
СуммаСНДС=Расход.Итог("СуммаСНДС");
Для каждого ТекСтрокаРасход из Расход цикл
ТекСтрокаРасход.УчЦена = ПолучитьУчЦену(ТекСтрокаРасход.ТМЦ,Дата,Склад);
ТекСтрокаРасход.УчСумма = ТекСтрокаРасход.УчЦена * ТекСтрокаРасход.Количество;
КонецЦикла;
КонецПроцедуры
Функция ПолучитьУчЦену(тмц,дата,склад)
Запрос = Новый Запрос;
Запрос.Текст ="ВЫБРАТЬ
| ТМЦОстатки.ТМЦ,
| ТМЦОстатки.Склад,
| ТМЦОстатки.КоличествоОстаток,
| ТМЦОстатки.СуммаОстаток
|ИЗ
| РегистрНакопления.ТМЦ.Остатки(
| &Дата,
| Склад = &Склад
| И ТМЦ = &ТМЦ) КАК ТМЦОстатки";
Запрос.УстановитьПараметр("Дата", Дата);
Запрос.УстановитьПараметр("ТМЦ", ТМЦ);
Запрос.УстановитьПараметр("Склад",Склад);
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Если Выборка.Следующий() Тогда
УчЦена = Выборка.СуммаОстаток/Выборка.КоличествоОстаток;
Возврат УчЦена;
КонецЕсли;
КонецФункции
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua