Имя: Пароль:
1C
1С v8
{Документ.ОказаниеУслуги.МодульОбъекта(32,69)}: Неопознанный оператор
0 Doodie
 
07.04.21
12:34
Появилось вот такая ошибка:
{Документ.ОказаниеУслуги.МодульОбъекта(32,69)}: Неопознанный оператор
        |    ОказаниеУслугиПереченьНоменклатуры.Номенклатура.ВидНоменклатуры"<<?>>, (Проверка: Сервер)
{Документ.ОказаниеУслуги.МодульОбъекта(36,38)}: Ошибка в выражении
    РезультатЗапроса = Запрос.Выполнить(<<?>>); (Проверка: Сервер)
{Документ.ОказаниеУслуги.МодульОбъекта(164,18)}: Обнаружено логическое завершение исходного текста модуля
    #КонецОбласти<<?>> (Проверка: Сервер)


Вот код:

Процедура ОбработкаПроведения(Отказ, Режим)

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

КонецПроцедуры
1 Вафель
 
07.04.21
12:36
вот ошибка
      |    ОказаниеУслугиПереченьНоменклатуры.Номенклатура.ВидНоменклатуры",
        |   ОказаниеУслугиПереченьНоменклатуры.НаборСвойств";
2 Dmitrii
 
гуру
07.04.21
12:38
(0) Лишняя ковычка в тексте запроса в строке |    ОказаниеУслугиПереченьНоменклатуры.Номенклатура.ВидНоменклатуры".
3 Doodie
 
07.04.21
12:41
(2) УУ из за одной ковычки столько ошибок было, спасибо, решил
4 Doodie
 
07.04.21
12:44
(1) Спасибо решил