|   |   | 
| 
 | Проблема в 15 занятии. Радченко 1С | ☑ | ||
|---|---|---|---|---|
| 0
    
        zane 13.02.23✎ 16:52 | 
        Прошу помочь решить проблему. После редактирования кода в модулях объекта документов Приходная накладная и Оказание услуг, при проведении документа Оказание услуг появляется следующая ошибка:
 Ошибка при выполнении обработчика - 'ОбработкаПроведения' по причине: Ошибка при вызове метода контекста (Выполнить) {Документ.ОказаниеУслуги.МодульОбъекта(38)}:РезультатЗапроса = Запрос.Выполнить(); [ОшибкаВоВремяВыполненияВстроенногоЯзыка] по причине: {(18, 5)}: Ожидается выражение "ВЫБРАТЬ" <<?>>ОказаниеУслугиПереченьНоменклатуры.НаборСвойств Код модуля объекта Оказание услуг: Процедура ОбработкаПроведения(Отказ, Режим) Движения.ОстаткиМатериалов.Записывать = Истина; Движения.СтоимостьМатериалов.Записывать = Истина; Движения.Продажи.Записывать = Истина; // Создать менеджер временных таблиц МенеджерВТ = Новый МенеджерВременныхТаблиц; #Область НоменклатураДокумента Запрос = Новый Запрос; // Укажем, какой менеджер временных таблиц использует этот запрос Запрос.МенеджерВременныхТаблиц = МенеджерВТ; Запрос.Текст = "ВЫБРАТЬ | ОказаниеУслугиПереченьНоменклатуры.Номенклатура, | ОказаниеУслугиПереченьНоменклатуры.Номенклатура.ВидНоменклатуры | КАК ВидНоменклатуры, | ОказаниеУслугиПереченьНоменклатуры.НаборСвойств, | СУММА(ОказаниеУслугиПереченьНоменклатуры.Количество) | КАК КоличествоВДокументе, | СУММА(ОказаниеУслугиПереченьНоменклатуры.Сумма) КАК СуммаВДокументе |ПОМЕСТИТЬ НоменклатураДокумента |ИЗ | Документ.ОказаниеУслуги.ПереченьНоменклатуры | КАК ОказаниеУслугиПереченьНоменклатуры |ГДЕ | ОказаниеУслугиПереченьНоменклатуры.Ссылка = &Ссылка |СГРУППИРОВАТЬ ПО | ОказаниеУслугиПереченьНоменклатуры.Номенклатура, | ОказаниеУслугиПереченьНоменклатуры.Номенклатура.ВидНоменклатуры; | ОказаниеУслугиПереченьНоменклатуры.НаборСвойств"; Запрос.УстановитьПараметр("Ссылка", Ссылка); РезультатЗапроса = Запрос.Выполнить(); #КонецОбласти #Область ДвиженияДокумента Запрос2 = Новый Запрос; Запрос2.МенеджерВременныхТаблиц = МенеджерВТ; Запрос2.Текст = "ВЫБРАТЬ | НоменклатураДокумента.Номенклатура, | НоменклатураДокумента.ВидНоменклатуры, | НоменклатураДокумента.НаборСвойств, | НоменклатураДокумента.КоличествоВДокументе, | НоменклатураДокумента.СуммаВДокументе, | ЕСТЬNULL(СтоимостьМатериаловОстатки.СтоимостьОстаток, 0) КАК Стоимость, | ЕСТЬNULL(ОстаткиМатериаловОстатки.КоличествоОстаток, 0) КАК Количество |ИЗ | НоменклатураДокумента КАК НоменклатураДокумента | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СтоимостьМатериалов.Остатки( | , | Материал В | (ВЫБРАТЬ | НоменклатураДокумента.Номенклатура | ИЗ | НоменклатураДокумента)) | КАК СтоимостьМатериаловОстатки | ПО НоменклатураДокумента.Номенклатура = | СтоимостьМатериаловОстатки.Материал | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиМатериалов.Остатки( | , | Материал В | (ВЫБРАТЬ | НоменклатураДокумента.Номенклатура | ИЗ | НоменклатураДокумента)) | КАК ОстаткиМатериаловОстатки | ПО НоменклатураДокумента.Номенклатура = | ОстаткиМатериаловОстатки.Материал"; // Установим необходимость блокировки данных в регистрах СтоимостьМатериалов // и ОстаткиМатериалов Движения.СтоимостьМатериалов.БлокироватьДляИзменения = Истина; Движения.ОстаткиМатериалов.БлокироватьДляИзменения = Истина; // Запишем пустые наборы записей, чтобы читать остатки без учета данных в документе Движения.СтоимостьМатериалов.Записать(); Движения.ОстаткиМатериалов.Записать(); РезультатЗапроса = Запрос2.Выполнить(); // ТЗ = РезультатЗапроса.Выгрузить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Если ВыборкаДетальныеЗаписи.Количество = 0 Тогда СтоимостьМатериала = 0; Иначе СтоимостьМатериала = ВыборкаДетальныеЗаписи.Стоимость / ВыборкаДетальныеЗаписи.Количество; КонецЕсли; Если ВыборкаДетальныеЗаписи.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.Материал Тогда // Регистр ОстаткиМатериалов Расход Движение = Движения.ОстаткиМатериалов.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата; Движение.Материал = ВыборкаДетальныеЗаписи.Номенклатура; Движение.НаборСвойств = ВыборкаДетальныеЗаписи.НаборСвойств; Движение.Склад = Склад; Движение.Количество = ВыборкаДетальныеЗаписи.КоличествоВДокументе; // Регистр СтоимостьМатериалов Расход Движение = Движения.СтоимостьМатериалов.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата; Движение.Материал = ВыборкаДетальныеЗаписи.Номенклатура; Движение.Стоимость = ВыборкаДетальныеЗаписи.КоличествоВДокументе * СтоимостьМатериала; КонецЕсли; // Регистр Продажи Движение = Движения.Продажи.Добавить(); Движение.Период = Дата; Движение.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура; Движение.Клиент = Клиент; Движение.Мастер = Мастер; Движение.Количество = ВыборкаДетальныеЗаписи.КоличествоВДокументе; Движение.Выручка = ВыборкаДетальныеЗаписи.СуммаВДокументе; Движение.Стоимость = СтоимостьМатериала * ВыборкаДетальныеЗаписи.КоличествоВДокументе; КонецЦикла; Движения.Записать(); #КонецОбласти #Область КонтрольОстатков Если Режим = РежимПроведенияДокумента.Оперативный Тогда // Проверить отрицательные остатки Запрос3 = Новый Запрос; Запрос3.МенеджерВременныхТаблиц = МенеджерВТ; Запрос3.Текст = "ВЫБРАТЬ | ОстаткиМатериаловОстатки.Материал, | ОстаткиМатериаловОстатки.НаборСвойств, | ОстаткиМатериаловОстатки.КоличествоОстаток |ИЗ | РегистрНакопления.ОстаткиМатериалов.Остатки( , (Материал, НаборСвойств) В | (ВЫБРАТЬ | НоменклатураДокумента.Номенклатура, | НоменклатураДокумента.НаборСвойств | ИЗ | НоменклатураДокумента) И Склад = &Склад) | КАК ОстаткиМатериаловОстатки |ГДЕ | ОстаткиМатериаловОстатки.КоличествоОстаток < 0"; Запрос3.УстановитьПараметр("Склад", Склад); РезультатЗапроса = Запрос3.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Сообщение = Новый СообщениеПользователю(); Сообщение.Текст = "Не хватает " + Строка(- ВыборкаДетальныеЗаписи.КоличествоОстаток) + " единиц материала """ + ВыборкаДетальныеЗаписи.Материал + """" + " из набора свойств """ + ВыборкаДетальныеЗаписи.НаборСвойств + """"; Сообщение.Сообщить(); Отказ = Истина; КонецЦикла; КонецЕсли; #КонецОбласти КонецПроцедуры | |||
| 1
    
        Fedor-1971 13.02.23✎ 16:58 | 
        (0) Тебе написали, что реквизита НаборСвойств там где ты его ищешь нет
 Проверь конструктором запроса (сам сделай запрос, а не копируй из учебника) | |||
| 2
    
        Kassern 13.02.23✎ 17:00 | 
        (0) В ТЧ ПереченьНоменклатуры есть у вас реквизит НаборСвойств? Какой тип реквизита?     | |||
| 3
    
        zane 13.02.23✎ 17:05 | 
        Есть, тип реквизита СправочникСсылка.ВариантыНоменклатуры     | |||
| 4
    
        Kassern 13.02.23✎ 17:12 | 
        (3) В конструктор запроса заходит?     | |||
| 5
    
        zane 13.02.23✎ 17:18 | 
        Нет     | |||
| 6
    
        DrLekter 13.02.23✎ 17:21 | 
        В 18 строке точка с запятой вместо запятой     | |||
| 7
    
        vicof 13.02.23✎ 17:22 | 
        (6) +1     | |||
| 8
    
        zane 13.02.23✎ 17:27 | 
        (6) Не помогло     | |||
| 9
    
        Kassern 13.02.23✎ 17:39 | 
        (8) Покажите как исправили     | |||
| 10
    
        zane 13.02.23✎ 17:40 | 
        (9)  Запрос.Текст = 
 "ВЫБРАТЬ | ОказаниеУслугиПереченьНоменклатуры.Номенклатура; | ОказаниеУслугиПереченьНоменклатуры.Номенклатура.ВидНоменклатуры | КАК ВидНоменклатуры, | ОказаниеУслугиПереченьНоменклатуры.НаборСвойств, | СУММА(ОказаниеУслугиПереченьНоменклатуры.Количество) | КАК КоличествоВДокументе, | СУММА(ОказаниеУслугиПереченьНоменклатуры.Сумма) КАК СуммаВДокументе |ПОМЕСТИТЬ НоменклатураДокумента |ИЗ | Документ.ОказаниеУслуги.ПереченьНоменклатуры | КАК ОказаниеУслугиПереченьНоменклатуры |ГДЕ | ОказаниеУслугиПереченьНоменклатуры.Ссылка = &Ссылка |СГРУППИРОВАТЬ ПО | ОказаниеУслугиПереченьНоменклатуры.Номенклатура, | ОказаниеУслугиПереченьНоменклатуры.Номенклатура.ВидНоменклатуры; | ОказаниеУслугиПереченьНоменклатуры.НаборСвойств"; | |||
| 11
    
        Kassern 13.02.23✎ 17:40 | 
        (10) Ну и где вы ; убрали??
 | ОказаниеУслугиПереченьНоменклатуры.Номенклатура.ВидНоменклатуры; | ОказаниеУслугиПереченьНоменклатуры.НаборСвойств"; | |||
| 12
    
        Kassern 13.02.23✎ 17:41 | 
        Вам же все разжевали в (6) , и 1ска вам даже ругнулась на 18 строчку в модуле, где ошибка. Жмякаете Ctrl+G и вбиваете номер строчки. Будет видно где косяк.     | |||
| 13
    
        OldCondom 13.02.23✎ 17:45 | 
        (12) а ты посмотри внимательнее. Неправильно разжевали!)) ТС все сделал согласно инструкции: в 18 строке МОДУЛЯ поменял запятую на точку с запятой.     | |||
| 14
    
        zane 13.02.23✎ 17:48 | 
        Помогло, спасибо. (12) я не знал, что 18 строка это имеется ввиду строка запроса     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |