Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
24 ноя 2024, 01:56

Поле объекта не обнаружено

Автор Lopol, 16 ноя 2021, 16:07

0 Пользователей и 1 гость просматривают эту тему.

Lopol

Здраствуйте!Делаю лабораторную работу , после того как приближался к концу, было задание перепровести документы "ОказаниеУслуг"
Выходит ошибка
Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
Поле объекта не обнаружено (Стоимость)
{Документ.ОказаниеУслуги.МодульОбъекта(80)}:СтоимостьМатериала = ВыборкаДетальныеЗаписи.Стоимость/ВыборкаДетальныеЗаписи.Количество;
Помогите пожалуйста, я не могу понять в чем дело , уже весь день
Процедура ОбработкаПроведения(Отказ, Режим)
//{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

// регистр ОстаткиМатериалов Расход
Движения.ОстаткиМатериалов.Записывать = Истина;
Движения.СтоимостьМатериалов.Записывать = Истина;
Движения.Продажи.Записывать = Истина;
//Создать менеджер временных таблиц.
МенеджерВТ = Новый МенеджерВременныхТаблиц;

//Для Каждого ТекСтрокаПереченьНоменклатуры Из ПереченьНоменклатуры Цикл
//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

Запрос = Новый Запрос;
//Укажем, какой менеджер временных таблиц использует этот запрос
Запрос.МенеджерВременныхТаблиц = МенеджерВТ;

Запрос.Текст =
"ВЫБРАТЬ
| ОказаниеУслугиПереченьНоменклатуры.Номенклатура,
| ОказаниеУслугиПереченьНоменклатуры.Номенклатура.ВидНоменклатуры КАК ВидНоменклатуры,
| СУММА(ОказаниеУслугиПереченьНоменклатуры.Количество) КАК КоличествоВДокументе,
| МАКСИМУМ(ОказаниеУслугиПереченьНоменклатуры.Сумма) КАК СуммаВДокументе,
| СУММА(ОказаниеУслугиПереченьНоменклатуры.Стоимость) КАК Стоимость
|ПОМЕСТИТЬ НоменклатураДокумента
|ИЗ
| Документ.ОказаниеУслуги.ПереченьНоменклатуры КАК ОказаниеУслугиПереченьНоменклатуры
|ГДЕ
| ОказаниеУслугиПереченьНоменклатуры.Ссылка = &Ссылка
|
|СГРУППИРОВАТЬ ПО
| ОказаниеУслугиПереченьНоменклатуры.Номенклатура,
| ОказаниеУслугиПереченьНоменклатуры.Номенклатура.ВидНоменклатуры";

Запрос.УстановитьПараметр("Ссылка", Ссылка);

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

Результат = Запрос2.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Если ВыборкаДетальныеЗаписи.Количество = 0 Тогда
СтоимостьМатериала = 0;
Иначе
СтоимостьМатериала = ВыборкаДетальныеЗаписи.Стоимость/ВыборкаДетальныеЗаписи.Количество;
КонецЕсли;

// Вставить обработку выборки ВыборкаДетальныеЗаписи
Если ВыборкаДетальныеЗаписи.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.Материал Тогда
// регистр ОстаткиМатериалов Расход
Движение = Движения.ОстаткиМатериалов.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Материал = ВыборкаДетальныеЗаписи.Номенклатура;
Движение.Склад = Склад;
Движение.Количество = ВыборкаДетальныеЗаписи.КоличествоВДокументе; 
// регистр СтоимостьМатериалов Расход
Движение = Движения.СтоимостьМатериалов.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Материал = ВыборкаДетальныеЗаписи.Номенклатура;
Движение.Стоимость = ВыборкаДетальныеЗаписи.КоличествоВДокументе*СтоимостьМатериала;
КонецЕсли;
// Регистр Продажи
Движение = Движения.Продажи.Добавить();
Движение.Период = Дата;
Движение.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
Движение.Клиент = Клиент;
Движение.Мастер = Мастер;
Движение.Количество = ВыборкаДетальныеЗаписи.КоличествоВДокументе; 
Движение.Выручка = ВыборкаДетальныеЗаписи.СуммаВДокументе; 
Движение.Стоимость = СтоимостьМатериала * ВыборкаДетальныеЗаписи.КоличествоВДокументе;

КонецЦикла;
КонецПроцедуры


ef0din

Гляньте свой запрос. Выбирается ли там поле "Стоимость" ?

LexaK

Lopol, а вообще отладчиком умеете пользоваться? классная вещь!
можно проверить/посмотреть все данные, все результаты запросов, где, что, чему, как присваивается и многое другое
читаните по нему что нибудь! посмотрите пару видеоуроков  хотя бы как запустить его, поставить точку остановки, как посмотреть содержимое переменной
если освоите работу с отладчиком, у вас пропадут 90%  теперешних ваших вопросов/проблем
если помогло нажмите: Спасибо!

Ивашка

возможно стоимость по другому называется у вас, я могу ошибаться, лучше конечно отладчиком, как посоветовал LexaK

Ивашка

Цитата: Lopol от 16 ноя 2021, 16:07Результат = Запрос2.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
может
Результат = Запрос2.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();



Lopol

LexaK, пробую , но он тоже не всегда помогает ((

Lopol

Ивашка, Спасибо большое!Помогло!!!

Теги: помощь 

Похожие темы (5)

Рейтинг@Mail.ru

Поиск