|
Нужна помощь (ошибка при проведении) 1С:Предприятие 8.3, учебная версия (8.3.8.1933) | ☑ | ||
---|---|---|---|---|
0
TooKTooK
11.11.23
✎
18:47
|
Делаяю по книге (пару дней, не судите строго
М.Г. Радченко, Е.Ю. Хрусталева 1С:Предприятие 8.3.22 Практическое пособие разработчика Примеры и типовые приемы стр. в книге 518 Ошибка при выполнении обработчика - 'ОбработкаПроведения' по причине: {Документ.ОказаниеУслуги.МодульОбъекта(124)}: Поле объекта не обнаружено (НаборСвойств) Движение.НаборСвойств = ВыборкаДетальныеЗаписи.НаборСвойств; Вот весь мой запрос (Помагите пожалуйста. P.S Я пока полный ноль т.ч можно поподробнее. БОЛЬШОЕ СПАСИБО!) Процедура ОбработкаПроведения(Отказ, Режим) Движения.ОстаткиМатериалов.Записывать = Истина; Движения.СтоимостьМатериалов.Записывать = Истина; Движения.Продажи.Записывать = Истина; //Создать менеджер временных таблиц МенеджерВТ = Новый МенеджерВременныхТаблиц; #Область НоменклатураДокумента Запрос = Новый Запрос; //Укажем, какой менеджер временных таблиц использует этот запрос Запрос.МенеджерВременныхТаблиц = МенеджерВТ; Запрос.Текст = "ВЫБРАТЬ | ОказаниеУслугиПереченьНоменклатуры.Номенклатура, | ОказаниеУслугиПереченьНоменклатуры.Номенклатура.ВидНоменклатуры КАК ВидНоменклатуры, | ОказаниеУслугиПереченьНоменклатуры.НаборСвойств, | СУММА(ОказаниеУслугиПереченьНоменклатуры.Количество) КАК КоличествоВДокументе, | СУММА(ОказаниеУслугиПереченьНоменклатуры.Сумма) КАК СуммаВДокументе |ПОМЕСТИТЬ НоменклатураДокумента |ИЗ | Документ.ОказаниеУслуги.ПереченьНоменклатуры КАК ОказаниеУслугиПереченьНоменклатуры |ГДЕ | ОказаниеУслугиПереченьНоменклатуры.Ссылка = &Ссылка | |СГРУППИРОВАТЬ ПО | ОказаниеУслугиПереченьНоменклатуры.Номенклатура, | ОказаниеУслугиПереченьНоменклатуры.Номенклатура.ВидНоменклатуры, | ОказаниеУслугиПереченьНоменклатуры.НаборСвойств, | ОказаниеУслугиПереченьНоменклатуры.Количество, | ОказаниеУслугиПереченьНоменклатуры.Сумма"; Запрос.УстановитьПараметр("Ссылка", Ссылка); РезультатЗапроса = Запрос.Выполнить(); #КонецОбласти #Область ДвиженияДокумента Запрос2=Новый Запрос; Запрос2.МенеджерВременныхТаблиц=МенеджерВТ; Запрос2.Текст="ВЫБРАТЬ | НоменклатураДокумента.Номенклатура, | НоменклатураДокумента.ВидНоменклатуры, | НоменклатураДокумента.НаборСвойств, | НоменклатураДокумента.КоличествоВДокументе, | НоменклатураДокумента.СуммаВДокументе, | ЕСТЬNULL(СтоимостьМатериаловОстатки.СтоимостьОстаток, 0) КАК Стоимость, | ЕСТЬNULL(ОстаткиМатериаловОстатки.КоличествоОстаток, 0) КАК Количество |ИЗ | НоменклатураДокумента КАК НоменклатураДокумента | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СтоимостьМатериалов.Остатки( | , | Материал В | (ВЫБРАТЬ | НоменклатураДокумента.Номенклатура | ИЗ | НоменклатураДокумента)) КАК СтоимостьМатериаловОстатки | ПО НоменклатураДокумента.Номенклатура = СтоимостьМатериаловОстатки.Материал | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиМатериалов.Остатки( | , | Материал В | (ВЫБРАТЬ | НоменклатураДокумента.Номенклатура | ИЗ | НоменклатураДокумента)) КАК ОстаткиМатериаловОстатки | ПО НоменклатураДокумента.Номенклатура = ОстаткиМатериаловОстатки.Материал"; // Установим необходимость блокировки данных в регистрах СтоимостьМатериалов // и ОстаткиМатериалов Движения.СтоимостьМатериалов.БлокироватьДляИзменения = Истина; Движения.ОстаткиМатериалов.БлокироватьДляИзменения = Истина; // Запишем пустые наборы записей, чтобы читать остатки без учета данных в документе Движения.СтоимостьМатериалов.Записать(); Движения.ОстаткиМатериалов.Записать(); РезультатЗапроса=Запрос2.Выполнить(); //ТЗ=РезультатЗапросаВыгрузить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Если ВыборкаДетальныеЗаписи.Количество = 0 Тогда СтоимостьМатериала = 0; Иначе СтоимостьМатериала = ВыборкаДетальныеЗаписи.Стоимость / ВыборкаДетальныеЗаписи.Количество; КонецЕсли; //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА Запрос.Текст ="ВЫБРАТЬ | ОказаниеУслугиПереченьНоменклатуры.Номенклатура, | ОказаниеУслугиПереченьНоменклатуры.Номенклатура.ВидНоменклатуры КАК ВидНоменклатуры, | СУММА(ОказаниеУслугиПереченьНоменклатуры.Количество) КАК КоличествоВДокументе, | СУММА(ОказаниеУслугиПереченьНоменклатуры.Сумма) КАК СуммаВДокументе | |ИЗ | Документ.ОказаниеУслуги.ПереченьНоменклатуры КАК ОказаниеУслугиПереченьНоменклатуры |ГДЕ | ОказаниеУслугиПереченьНоменклатуры.Ссылка = &Ссылка | |СГРУППИРОВАТЬ ПО | ОказаниеУслугиПереченьНоменклатуры.Номенклатура, | ОказаниеУслугиПереченьНоменклатуры.Номенклатура.ВидНоменклатуры"; Запрос.УстановитьПараметр("Ссылка", Ссылка); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Если ВыборкаДетальныеЗаписи.ВидНоменклатуры=Перечисления.ВидыНоменклатуры.Материал Тогда //Регистр ОстаткиМатериалов Расход Движение = Движения.ОстаткиМатериалов.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата; Движение.Материал = ВыборкаДетальныеЗаписи.Номенклатура; Движение.НаборСвойств = ВыборкаДетальныеЗаписи.НаборСвойств; Движение.Склад = Склад; Движение.Количество = ВыборкаДетальныеЗаписи.КоличествоВДокументе; //Регистр СтоимостьМатериалов Расход Движение = Движения.СтоимостьМатериалов.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата; Движение.Материал = ВыборкаДетальныеЗаписи.Номенклатура; Движение.Стоимость = ВыборкаДетальныеЗаписи.КоличествоВДокументе*СтоимостьМатериала; КонецЕсли; // Регистр Продажи Движение = Движения.Продажи.Добавить(); Движение.Период = Дата; Движение.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура; Движение.Клиент = Клиент; Движение.Мастер = Мастер; Движение.Количество = ВыборкаДетальныеЗаписи.КоличествоВДокументе; Движение.Выручка = ВыборкаДетальныеЗаписи.СуммаВДокументе; Движение.Стоимость = СтоимостьМатериала * ВыборкаДетальныеЗаписи.КоличествоВДокументе; КонецЦикла; Движения.Записать(); #КонецОбласти #Область КонтрольОстатков Если Режим = РежимПроведенияДокумента.Оперативный Тогда // Проверить отрицательные остатки Запрос3 = Новый Запрос; Запрос3.МенеджерВременныхТаблиц = МенеджерВТ; Запрос3.Текст = "ВЫБРАТЬ | ОстаткиМатериаловОстатки.Материал, | ОстаткиМатериаловОстатки.НаборСвойств, | ОстаткиМатериаловОстатки.КоличествоОстаток |ИЗ | РегистрНакопления.ОстаткиМатериалов.Остатки( | , | (Материал, НаборСвойств) В | (ВЫБРАТЬ | НоменклатураДокумента.Номенклатура, | НоменклатураДокумента.НаборСвойств | ИЗ | НоменклатураДокумента) | И Склад = &Склад) КАК ОстаткиМатериаловОстатки |ГДЕ | ОстаткиМатериаловОстатки.КоличествоОстаток < 0"; Запрос3.УстановитьПараметр("Склад", Склад); РезультатЗапроса = Запрос3.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Сообщение = Новый СообщениеПользователю(); Сообщение.Текст = "Не хватает " + Строка(- ВыборкаДетальныеЗаписи .КоличествоОстаток) + " единиц материала """ + ВыборкаДетальныеЗаписи.Материал + """"+" из набора свойств """ + ВыборкаДетальныеЗаписи .НаборСвойств + """"; Сообщение.Сообщить(); Отказ = Истина; КонецЦикла; КонецЕсли; #КонецОбласти КонецЦикла; КонецПроцедуры |
|||
1
Волшебник
11.11.23
✎
18:53
|
В запросе к документу Документ.ОказаниеУслуги.ПереченьНоменклатуры нет поля НаборСвойств
//}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
Запрос.Текст ="ВЫБРАТЬ |
|||
2
TooKTooK
11.11.23
✎
18:53
|
//Регистр ОстаткиМатериалов Расход
Движение = Движения.ОстаткиМатериалов.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата; Движение.Материал = ВыборкаДетальныеЗаписи.Номенклатура; Движение.НаборСвойств = ВыборкаДетальныеЗаписи.НаборСвойств; ОШИБКУ ВЫДАЁТ НА ЭТОЙ СТРОКЕ Движение.Склад = Склад; Движение.Количество = ВыборкаДетальныеЗаписи.КоличествоВДокументе; |
|||
3
Волшебник
11.11.23
✎
18:54
|
(2) Гляньте отладчиком, какие поля есть в ВыборкаДетальныеЗаписи, и Вы не найдёте там НаборСвойств
|
|||
4
TooKTooK
11.11.23
✎
19:08
|
Волшебник, Большое тебе СПАСИБО!
|
|||
5
TooKTooK
11.11.23
✎
19:20
|
СПАСИБО! Я разобрался. У меня там ещё были 2 ошибки
ДЛЯ ТЕХ У КОГО ТОЖЕ ПРОБЛЕМЫ ИНФОРМАЦИЯ В ПОМОЩЬ //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА Запрос.Текст ="ВЫБРАТЬ | ОказаниеУслугиПереченьНоменклатуры.Номенклатура, | ОказаниеУслугиПереченьНоменклатуры.Номенклатура.ВидНоменклатуры КАК ВидНоменклатуры, | ОказаниеУслугиПереченьНоменклатуры.НаборСвойств, 1 ОШИБКА БЫЛА (СТРОЧКИ НЕ БЫЛО) | ОказаниеУслугиПереченьНоменклатуры.Количество КАК КоличествоВДокументе, 2 ОШИБКА БЫЛА (ПСЕВДОНИМА НЕ БЫЛО) | ОказаниеУслугиПереченьНоменклатуры.Сумма КАК СуммаВДокументе 3 ОШИБКА БЫЛА (ПСЕВДОНИМА НЕ БЫЛО) |ИЗ | Документ.ОказаниеУслуги.ПереченьНоменклатуры КАК ОказаниеУслугиПереченьНоменклатуры |ГДЕ | ОказаниеУслугиПереченьНоменклатуры.Ссылка = &Ссылка | |СГРУППИРОВАТЬ ПО | ОказаниеУслугиПереченьНоменклатуры.Номенклатура, | ОказаниеУслугиПереченьНоменклатуры.Номенклатура.ВидНоменклатуры, | ОказаниеУслугиПереченьНоменклатуры.НаборСвойств, | ОказаниеУслугиПереченьНоменклатуры.Количество, | ОказаниеУслугиПереченьНоменклатуры.Сумма"; Запрос.УстановитьПараметр("Ссылка", Ссылка); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Если ВыборкаДетальныеЗаписи.ВидНоменклатуры=Перечисления.ВидыНоменклатуры.Материал Тогда //Регистр ОстаткиМатериалов Расход Движение = Движения.ОстаткиМатериалов.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата; Движение.Материал = ВыборкаДетальныеЗаписи.Номенклатура; Движение.НаборСвойств = ВыборкаДетальныеЗаписи.НаборСвойств; Движение.Склад = Склад; Движение.Количество = ВыборкаДетальныеЗаписи.КоличествоВДокументе; |
|||
6
TooKTooK
11.11.23
✎
19:34
|
Волшебник, как глянуть отладчиком что-либо? Спасибо!
|
|||
7
Волшебник
11.11.23
✎
20:11
|
(6) А может в Радченко написано?
|
|||
8
Волшебник
11.11.23
✎
20:27
|
стр 195 "Анализ кода с помощью отладчика"
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |