Изменить движение

1. G_113118945373616266603 17.08.22 08:12 Сейчас в теме
Есть такое движение СформироватьДвиженияПоСкладам - мне нужно что бы Движение.Сумма = ТекСтрокаТовары.Сумма ; Превратить в Движение.Сумма = ТекСтрокаТовары.Количество * Себестоимотсь ; а себестоимость я достаю из функции ниже как это сделать? Новичек в 1с

/////////////////////////////

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



////////////////////////////////////////
////// и вот функция

Функция Себестоимость ()
    
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    ЕСТЬNULL(ОстаткиНаСкладахОстатки.СуммаОстаток / ОстаткиНаСкладахОстатки.КоличествоОстаток, 0) КАК Себестоимость
                   |ИЗ
                   |    РегистрНакопления.ОстаткиНаСкладах.Остатки(, Организация = &Организация) КАК ОстаткиНаСкладахОстатки";
    Запрос.УстановитьПараметр("Организация", Организация);
    
    
    Себестоимость = Запрос.Выполнить();
    
    
    Возврат Себестоимость;    
    
    КонецФункции
Показать
По теме из базы знаний
Найденные решения
3. shira84 223 17.08.22 09:03 Сейчас в теме
Вернее даже

Движение.Сумма = ТекСтрокаТовары.Количество * Себестоимотсь(ТекСтрокаТовары.Номенклатура);

Функция Себестоимость (МойТовар)

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ЕСТЬNULL(ОстаткиНаСкладахОстатки.СуммаОстаток / ОстаткиНаСкладахОстатки.КоличествоОстаток, 0) КАК Себестоимость
|ИЗ
| РегистрНакопления.ОстаткиНаСкладах.Остатки(, Организация = &Организация И Номенклатура=&МойТовар) КАК ОстаткиНаСкладахОстатки";
Запрос.УстановитьПараметр("Организация", Организация);
Запрос.УстановитьПараметр("МойТовар", МойТовар);

Себестоимость = 0;
РезультатЗапроса = Запрос.Выполнить();
	
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
	Себестоимость = ВыборкаДетальныеЗаписи.Себестоимость;
КонецЦикла;


Возврат Себестоимость;

КонецФункции
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. shira84 223 17.08.22 08:58 Сейчас в теме
Движение.Сумма = ТекСтрокаТовары.Количество * Себестоимотсь();
3. shira84 223 17.08.22 09:03 Сейчас в теме
Вернее даже

Движение.Сумма = ТекСтрокаТовары.Количество * Себестоимотсь(ТекСтрокаТовары.Номенклатура);

Функция Себестоимость (МойТовар)

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ЕСТЬNULL(ОстаткиНаСкладахОстатки.СуммаОстаток / ОстаткиНаСкладахОстатки.КоличествоОстаток, 0) КАК Себестоимость
|ИЗ
| РегистрНакопления.ОстаткиНаСкладах.Остатки(, Организация = &Организация И Номенклатура=&МойТовар) КАК ОстаткиНаСкладахОстатки";
Запрос.УстановитьПараметр("Организация", Организация);
Запрос.УстановитьПараметр("МойТовар", МойТовар);

Себестоимость = 0;
РезультатЗапроса = Запрос.Выполнить();
	
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
	Себестоимость = ВыборкаДетальныеЗаписи.Себестоимость;
КонецЦикла;


Возврат Себестоимость;

КонецФункции
Показать
4. G_113118945373616266603 17.08.22 09:42 Сейчас в теме
(3)
(3)

Запрос.УстановитьПараметр("МойТовар", МойТовар);

Себестоимость = 0;


Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
Деление на 0 значения типа Numeric
{Документ.Реализация.МодульОбъекта(85)}: РезультатЗапроса = Запрос.Выполнить();
{Документ.Реализация.МодульОбъекта(58)}: Движение.Сумма = ТекСтрокаТовары.Количество * Себестоимость(ТекСтрокаТовары.Номенклатура);
{Документ.Реализация.МодульОбъекта(10)}: СформироватьДвиженияПоСкладам(Отказ);

по причине:
Ошибка выполнения запроса
по причине:

/////
при проводке выходит вот такая ошибка
5. shira84 223 17.08.22 10:23 Сейчас в теме
(4) Значин количество нулевое
6. shira84 223 17.08.22 10:24 Сейчас в теме
(4) Делай через | Выбор когда ОстаткиНаСкладахОстатки.КоличествоОстаток<>0 Тогда ЕСТЬNULL(ОстаткиНаСкладахОстатки.СуммаОстаток / ОстаткиНаСкладахОстатки.КоличествоОстаток, 0) Иначе 0 Конец Как Себестоимость
7. laperuz 46 17.08.22 10:26 Сейчас в теме
(3)Ммм, запрос в цикле...-3 балла, экзамен не сдан))
8. shira84 223 17.08.22 10:29 Сейчас в теме
(7) )) я лишь поправил то что было уже написано, оптимизирует пусть уже сам, когда время придет
9. G_113118945373616266603 17.08.22 10:37 Сейчас в теме
10. Prikum 3 17.08.22 10:48 Сейчас в теме
(8)да не придет время, автор просто тупо все перепишет и сдаст заказчику. А потом все будут говорит, что ваша 1С гавно, тормозит безбожно.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот