|
Проблема в 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 строка это имеется ввиду строка запроса
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |