Ошибка в листинге по книге Радченко

1. mikkijon 06.10.19 17:50 Сейчас в теме
[center]Здравствуйте многоуважаемые форумчане!!![/center]
Помогите пожалуйста новичку. Изучаю "1С Предприятия" версии "8.3". И застрял на 14 занятии. А именно оптимизации документа "Оказание услуги". Там нужно было составить запрос с временной таблицей, листинг ниже.
Код
Процедура ОбработкаПроведения(Отказ, Режим)
   //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
   // Данный фрагмент построен конструктором.
   // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

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

      

   //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры
Показать полностью

Она мне постоянно пишет что поле "Сумма не найдено". Я уже не знаю куда смотреть и что еще можно проверить вроде у меня все правильно как сказано в Книге Радченко .....
Подскажите пожалуйста что я не правильно делаю
Заранее благодарю!!!
Также выкладываю выгрузку самой БД "ООО На все руки мастер".
Прикрепленные файлы:
1Cv8.rar
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Sapiens_bru 4 06.10.19 18:02 Сейчас в теме
(1)
Подскажите пожалуйста что я не правильно делаю

Неправильно пренебрегаешь отладчиком. Отладчик это первый инструмент в разработке, его уже нужно знать.

Например если отладчиком посмотреть на значение переменной ВыборкаДетальныеЗаписи внутри цикла обхода, то можно увидеть, что среди полей выборки из результата запроса нет поля СуммаВДокументе, зато есть поле Сумма.
3. leosoft 166 06.10.19 18:08 Сейчас в теме
(2) К книге вроде было приложение в виде конфигурации, где все
примеры реализованы
6. botsmanov_aleksandr 16.01.24 23:23 Сейчас в теме
(1)
МенеджеВТ

"МенеджеВТ" это не тоже самое, что и "МенеджерВТ"...
Прикрепленные файлы:
7. user856012 13 17.01.24 00:24 Сейчас в теме
(6)
"МенеджеВТ" это не тоже самое, что и "МенеджерВТ"...
Если далее в коде ВЕЗДЕ используется "МенеджеВТ" - то же самое.
Прикрепленные файлы:
8. botsmanov_aleksandr 17.01.24 01:04 Сейчас в теме
(7)
(7)
Угу...
Прикрепленные файлы:
4. Merkalov 9 07.10.19 04:53 Сейчас в теме
Ты не задал синонимы выбираемым полям, в конструкторе запросов вкладка - "Объединения/Псевдонимы", вот этим двум полям нужно дать имена
|    ЕСТЬNULL(СтоимостьМатериаловОстатки.СтоимостьОстаток, 0) КАК Стоимость,
|    НоменклатураВДокументе.Сумма КАК Сумма


Должно получится так:
|    ЕСТЬNULL(СтоимостьМатериаловОстатки.СтоимостьОстаток, 0) КАК СтоимостьМатериала,
|    НоменклатураВДокументе.Сумма КАК СуммаВДокументе
aezdakov; +1 Ответить
5. pasha_2001 07.10.19 11:41 Сейчас в теме
во таблице НоменклатураВДокументе нет поля сумма, в первом запросе надо добавить строку
| СУММА(ОказаниеУслугиПереченьНомеклатуры.Сумма) КАК Сумма
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот