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

Ошибка в проведении документа "Оказание Услуг"

Автор Nolla, 30 сен 2017, 09:33

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

Nolla

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

Процедура ОбработкаПроведения(Отказ, Режим)
   //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
   // Данный фрагмент построен конструктором.
   // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

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

oleg-x

Тут явно пишет, что "КоличетсвоВДокументе" нет такого реквизита. Руками писали запрос?
Помог, нажми спасибо. Не помог, нажми спасибо :-)
Если у Вас есть проблема, то её уже кто то решил @Yandex, @Google

pavl_vs

Nolla, добавлю к сказанному oleg-x'ом: обратите внимание на написание КоличетсвоВДокументе - возможно должно быть КоличествоВДокументе.

Nolla

Цитата: oleg-x от 30 сен 2017, 11:36
Тут явно пишет, что "КоличетсвоВДокументе" нет такого реквизита. Руками писали запрос?
нет, не руками, исправила, теперь на стоимость ругается
Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
{Документ.ОказаниеУслуги.МодульОбъекта(75)}: Поле объекта не обнаружено (Стоимость)
         СтоимостьМатериала = ВыборкаДетальныеЗаписи.Стоимость*ВыборкаДетальныеЗаписи.Количество;

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

Рейтинг@Mail.ru

Поиск