Помогите с ошибкой

Версия для печатиPDF-версия

Платформа:

Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
{Документ.ОказаниеУслуги.МодульОбъекта(42)}: Ошибка при вызове метода контекста (Выполнить)
РезультатЗапроса = Запрос.Выполнить();
по причине:
{(19, 4)}: Синтаксическая ошибка "ОказаниеУслугиПереченьНоменклатуры.НаборСвойств"
<<?>>ОказаниеУслугиПереченьНоменклатуры.НаборСвойств

Какая конфигурация?

Выложите текст запроса и структуру документа ОказаниеУслуги.

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

Если можно, объясните поподробнее, а то в 1с всего пару дней

 ава

В первом запросе в конце строки

| ОказаниеУслугиПереченьНоменклатуры.Номенклатура.ВидНоменклатуры

отсутствует запятая.

Сами запрос писали?

А разве она там нужна? там же дальше идет присвоение ей именни, через ключевое слово КАК перед ней же не нужна запятая

| ОказаниеУслугиПереченьНоменклатуры.Номенклатура.ВидНоменклатуры 
|                                                      КАК ВидНоменклатуры,
 
P.S Я по книги делаю, Радченко, 100 раз все проверил, все сделал как там.
Изначально запрос строился в конструкторе, но после добавление Плана видов характеристик, в документ Оказание услуг добавили поля НаборСвойств  и запрос дополнил в ручную этой строкой!
 

Запятой не хватает не в строке выбора поля, а в строке группировки в конце запроса.

А вообще, надо всегда пробовать открыть запрос в конструкторе. Если есть ошибки в запросе, то программа сразу выдаст сообщение об этом.