Имя: Пароль:
1C
1С v8
регистр
🠗 (Волшебник 28.01.2019 13:06)
0 bebibo
 
28.01.19
12:19
Так Я и не пойму, почему сумма не пишется в регистр..Может вы поймете?
Весь код расходной накладной:

Движения.Продажи.Записывать = Истина;
    Движения.ОстаткиНоменклатуры.Записывать = Истина;
        
    Движения.ОстаткиНоменклатуры.Записать();
    
    
    Блокировка = Новый БлокировкаДанных;
    ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.ОстаткиНоменклатуры");
    ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
    ЭлементБлокировки.ИсточникДанных = СписокНоменклатуры;
    ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Номенклатура", "Номенклатура");
    ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Партия", "Партия");
    Блокировка.Заблокировать();

    Запрос = Новый Запрос;
    Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    РасходнаяНакладнаяСписокНоменклатуры.Номенклатура КАК Номенклатура,
        |    РасходнаяНакладнаяСписокНоменклатуры.Партия КАК Партия,
        |    СУММА(РасходнаяНакладнаяСписокНоменклатуры.Количество) КАК Количество,
        |    СУММА(РасходнаяНакладнаяСписокНоменклатуры.Сумма) КАК Сумма
        |ПОМЕСТИТЬ ДокТЧ
        |ИЗ
        |    Документ.РасходнаяНакладная.СписокНоменклатуры КАК РасходнаяНакладнаяСписокНоменклатуры
        |ГДЕ
        |    РасходнаяНакладнаяСписокНоменклатуры.Ссылка = &Ссылка
        |
        |СГРУППИРОВАТЬ ПО
        |    РасходнаяНакладнаяСписокНоменклатуры.Партия,
        |    РасходнаяНакладнаяСписокНоменклатуры.Номенклатура
        |
        |ИНДЕКСИРОВАТЬ ПО
        |    Номенклатура,
        |    Партия
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    ДокТЧ.Номенклатура КАК Номенклатура,
        |    ДокТЧ.Партия,
        |    ДокТЧ.Количество КАК Количество,
        |    ДокТЧ.Сумма КАК Сумма,
        |    ЕСТЬNULL(ОстаткиНоменклатурыОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток,
        |    ЕСТЬNULL(ОстаткиНоменклатурыОстатки.СуммаОстаток, 0) КАК СуммаОстаток,
        |    ДокТЧ.Номенклатура.Представление,
        |    ДокТЧ.Партия.Представление,
        |    ДокТЧ.Номенклатура.Услуга
        |ИЗ
        |    ДокТЧ КАК ДокТЧ
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатуры.Остатки(
        |                &МоментВремени,
        |                (Номенклатура, Партия) В
        |                    (ВЫБРАТЬ
        |                        ДокТЧ.Номенклатура,
        |                        ДокТЧ.Партия
        |                    ИЗ
        |                        ДокТЧ КАК ДокТЧ)) КАК ОстаткиНоменклатурыОстатки
        |        ПО ДокТЧ.Номенклатура = ОстаткиНоменклатурыОстатки.Номенклатура
        |            И ДокТЧ.Партия = ОстаткиНоменклатурыОстатки.Партия
        |ИТОГИ
        |    СУММА(Количество),
        |    СУММА(Сумма)
        |ПО
        |    Номенклатура";
    
    Запрос.УстановитьПараметр("МоментВремени", МоментВремени());
    Запрос.УстановитьПараметр("Ссылка", Ссылка);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаНоменклатура = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    
    Пока ВыборкаНоменклатура.Следующий() Цикл
    
        ВыборкаДетальныеЗаписи = ВыборкаНоменклатура.Выбрать();
        
        ОбщаяСтоимость = 0;
        
        Если  НЕ ВыборкаНоменклатура.Номенклатура.услуга Тогда
        
            Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
                
                Если ВыборкаДетальныеЗаписи.Количество > ВыборкаДетальныеЗаписи.КоличествоОстаток Тогда
                    Отказ = Истина;
                    Сообщение = Новый СообщениеПользователю;
                    Сообщение.Текст = "Недостаточно товара " + ВыборкаДетальныеЗаписи.НоменклатураПредставление +
                        " из партии " + ВыборкаДетальныеЗаписи.ПартияПредставление + " есть только " + ВыборкаДетальныеЗаписи.КоличествоОстаток;
                    Сообщение.Сообщить();
                КонецЕсли;
                
                Если Отказ Тогда
                    Продолжить;
                КонецЕсли;
                
                // регистр ОстаткиНоменклатуры Расход
                Движение = Движения.ОстаткиНоменклатуры.Добавить();
                Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
                Движение.Период = Дата;
                Движение.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
                Движение.Партия = ВыборкаДетальныеЗаписи.Партия;
                Движение.Количество = ВыборкаДетальныеЗаписи.Количество;
                Движение.Сумма = Движение.Количество / ВыборкаДетальныеЗаписи.КоличествоОстаток * ВыборкаДетальныеЗаписи.СуммаОстаток;
                
                ОбщаяСтоимость = ОбщаяСтоимость + Движение.Сумма;
                
            КонецЦикла;    
        
        КонецЕсли;
        
        
        Если Отказ Тогда
            Продолжить;
        КонецЕсли;
            
        // регистр Продажи
        Движение = Движения.Продажи.Добавить();
        Движение.Период = Дата;
        Движение.Номенклатура = ВыборкаНоменклатура.Номенклатура;
        Движение.Количество = ВыборкаНоменклатура.Количество;
        Движение.Себестоимость = ОбщаяСтоимость;
        Движение.Сумма = ВыборкаНоменклатура.Сумма;
        
    КонецЦикла;
1 Ёпрст
 
гуру
28.01.19
12:30
Движение.Сумма = Движение.Количество / ВыборкаДетальныеЗаписи.КоличествоОстаток * ВыборкаДетальныеЗаписи.СуммаОстаток

норм че..
2 bebibo
 
28.01.19
12:36
(1) Я знаю что нужно писать так:
СуммаСписания = ?(КоличествоСписания = КоличествоОстаток, СуммаОстаток, СуммаОстаток/КоличествоОстаток * КоличествоСписания)
3 DrWatson
 
28.01.19
13:06
(0) МоментВремени пустой.
4 Волшебник
 
28.01.19
13:06
Тема не отражает суть сообщения.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший