Проблема с кодом 1с

Рейтинг: 0Ответов: 1Опубликовано: 08.05.2023

Есть 2 документа расходная накладная и приходная накладная суть запроса в том что необходимо вывести сообщение о нехватке товара на складе. Но он выдаёт ошибку

введите сюда описание изображения

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

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

    Движения.ОстаткиТоваров.Записывать = Ложь;
    Движения.Продажи.Записывать = Ложь;

КонецПроцедуры

Ответы

▲ 0
// Необходимо спозиционировать Выборку для получения соответствующих значений
// .Количество .КоличествоОстаток .СтоимостьОстаток

// Пример
СтруктураПоиска = Новый Структура("Товар, Контрагент");
СтруктураПоиска.Товар = НужныйТовар;
СтруктураПоиска.Контрагент = НужныйКонтрагент;
ВыборкаДетальныеЗаписи.Сбросить();
Если ВыборкаДетальныеЗаписи.НайтиСледующий(СтруктураПоиска) Тогда
   //    ...
КонецЕсли;

Движение.Стоимость = ВыборкаДетальныеЗаписи.Количество / ВыборкаДетальныеЗаписи.КоличествоОстаток * ВыборкаДетальныеЗаписи.СтоимостьОстаток;