Имя: Пароль:
1C
 
Помогите исправить "Ошибка при выполнении обработчика - 'ОбработкаПроведения'
0 Jobeba
 
09.02.24
09:01
ОбработкаПроведения
Процедура ОбработкаПроведения(Отказ, Режим)  
    //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

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

        КонецЕсли;
        
    КонецЦикла;

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

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

     #Область КонтрольОстатков
     Если Режим = РежимПроведенияДокумента.Оперативный Тогда
    
         //Проверим отрицательные остатки
        Запрос3 = Новый Запрос;
        Запрос3.МенеджерВременныхТаблиц = МенеджерВТ;
        Запрос3.Текст = "ВЫБРАТЬ
                        |    ОстаткиТоваровОстатки.Материал КАК Материал,
                        |    ОстаткиТоваровОстатки.КоличествоОстаток КАК КоличествоОстаток,
                        |    НоменклатураДокумента.Номенклатура КАК Номенклатура,
                        |    НоменклатураДокумента.ВидыНоменклатуры КАК ВидыНоменклатуры,
                        |    НоменклатураДокумента.КоличествоВДокументе КАК КоличествоВДокументе,
                        |    НоменклатураДокумента.СуммаВДокументе КАК СуммаВДокументе
                        |ИЗ
                        |    РегистрНакопления.ОстаткиТоваров.Остатки КАК ОстаткиТоваровОстатки,
                        |    НоменклатураДокумента КАК НоменклатураДокумента
                        |ГДЕ
                        |    ОстаткиТоваровОстатки.КоличествоОстаток < 0"    
    
     КонецЕсли;
         
     #КонецОбласти
    //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры;


Возникает такая ошибка в 1C:ПРЕДПРИЯТИЯ
1 Jobeba
 
09.02.24
08:25
Вот такая ошибка возникает:
Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
{(14, 2)}: Таблица не найдена "НоменклатураДокумента"
<<?>>НоменклатураДокумента КАК НоменклатураДокумента
по причине:
{(14, 2)}: Таблица не найдена "НоменклатураДокумента"
<<?>>НоменклатураДокумента КАК НоменклатураДокумента
2 uPstart_
 
09.02.24
08:33
(0) В первом запросе таблицы НоменклатураДокумента нету. Убери из запроса таблицу и все реквизиты ее в выборке.
3 Jobeba
 
09.02.24
08:46
Всё сделал, так и заработало. Спасибо большое, а то долго сидел и ломал голову.
4 Волшебник
 
09.02.24
09:01
(3) Балда
5 Ёпрст
 
09.02.24
09:56
(0)

//    Запрос2 = Новый Запрос;
  //  Запрос2.МенеджерВременныхТаблиц = МенеджерВТ;
    //Запрос2.Текст="ВЫБРАТЬ
Запрос.Текст="ВЫБРАТЬ

И ниже везде замени Запрос2 на Запрос.
6 Ёпрст
 
09.02.24
09:56
И аналогично, с запрос3, выкинь создание объекта и МВТ и замени на Запрос.