Имя: Пароль:
1C
 
поле объекта не обнаружено (стоимость) практическое пособие разработчика
0 serega1977
 
17.10.21
11:35
День добрый.
Учусь программировать по книге М. Радченко "1С:ПРЕДПРИЯТИЕ 8.2 практическое пособие разработчика" Упражнения 14.
В листинге 14.32 (стр.426) возникает ошибка:
Поле объекта не обнаружено (Стоимость)
{Документ.ОказаниеУслуги.МодульОбъекта(76)}:             СтоимостьМатериала = ВыборкаДетальныеЗаписи.Стоимость/ВыборкаДетальныеЗаписи.Количество;

Просьба помочь разобраться где моя ошибка.
Спасибо.

Процедура ОбработкаПроведения(Отказ, Режим)

    // регистр ОстаткиМатериалов Расход
    Движения.ОстаткиМатериалов.Записывать = Истина;      
    Движения.СтоимостьМатериалов.Записывать = Истина;
    Движения.Продажи.Записывать = Истина;    
    
    //Создать менеджер временных таблиц
    МенеджерВТ = Новый МенеджерВременныхТаблиц;
        
    Запрос = Новый Запрос;            
    
    //Укажем, какой менеджер временных таблиц использует этот запрос
    Запрос.МенеджерВременныхТаблиц = МенеджерВТ;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ОказаниеУслугиПереченьНоменклатуры.Номенклатура КАК Номенклатура,
        |    ОказаниеУслугиПереченьНоменклатуры.Номенклатура.ВидНоменклатуры КАК ВидНоменклатуры,
        |    СУММА(ОказаниеУслугиПереченьНоменклатуры.Количество) КАК КоличествоВДокументе,
        |    СУММА(ОказаниеУслугиПереченьНоменклатуры.Сумма) КАК СуммаВДокументе
        |ПОМЕСТИТЬ НоменклатураДокумента
        |ИЗ
        |    Документ.ОказаниеУслуги.ПереченьНоменклатуры КАК ОказаниеУслугиПереченьНоменклатуры
        |ГДЕ
        |    ОказаниеУслугиПереченьНоменклатуры.Ссылка = &Ссылка
        |
        |СГРУППИРОВАТЬ ПО
        |    ОказаниеУслугиПереченьНоменклатуры.Номенклатура,
        |    ОказаниеУслугиПереченьНоменклатуры.Номенклатура.ВидНоменклатуры";
    
    Запрос.УстановитьПараметр("Ссылка", Ссылка);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    Запрос2 = Новый Запрос;
    Запрос2.МенеджерВременныхТаблиц = МенеджерВТ;
    Запрос2.Текст = "ВЫБРАТЬ
                    |    НоменклатураДокумента.Номенклатура КАК Номенклатура,
                    |    НоменклатураДокумента.ВидНоменклатуры КАК ВидНоменклатуры,
                    |    НоменклатураДокумента.КоличествоВДокументе КАК КоличествоВДокументе,
                    |    НоменклатураДокумента.СуммаВДокументе КАК СуммаВДокументе,
                    |    ЕСТЬNULL(СтоимостьМатериаловОстатки.СтоимостьОстаток, 0) КАК Стоимость,
                    |    ЕСТЬNULL(ОстаткиМатериаловОстатки.КоличествоОстаток, 0) КАК Количество
                    |ИЗ
                    |    НоменклатураДокумента КАК НоменклатураДокумента
                    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СтоимостьМатериалов.Остатки(
                    |                ,
                    |                Материал В
                    |                    (ВЫБРАТЬ
                    |                        НоменклатураДокумента.Номенклатура
                    |                    ИЗ
                    |                        НоменклатураДокумента)) КАК СтоимостьМатериаловОстатки
                    |        ПО НоменклатураДокумента.Номенклатура = СтоимостьМатериаловОстатки.СтоимостьОстаток
                    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиМатериалов.Остатки(
                    |                ,
                    |                Материал В
                    |                    (ВЫБРАТЬ
                    |                        НоменклатураДокумента.Номенклатура
                    |                    ИЗ
                    |                        НоменклатураДокумента)) КАК ОстаткиМатериаловОстатки
                    |        ПО НоменклатураДокумента.Номенклатура = ОстаткиМатериаловОстатки.КоличествоОстаток";
      
    //Запишем пустые наборы записей, чтобы читать остатки без учета данных в документе.
    
    Движения.СтоимостьМатериалов.Записать();
    Движения.ОстаткиМатериалов.Записать();
    
    Результат = Запрос2.Выполнить();
       ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
      
       Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
          Если ВыборкаДетальныеЗаписи.Количество = 0 Тогда
             СтоимостьМатериала = 0;
          Иначе
             СтоимостьМатериала = ВыборкаДетальныеЗаписи.Стоимость/ВыборкаДетальныеЗаписи.Количество;
       КонецЕсли;
        Если ВыборкаДетальныеЗаписи.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.Материал Тогда
        // регистр ОстаткиМатериалов Расход
    Движение = Движения.ОстаткиМатериалов.Добавить();
    Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
    Движение.Период = Дата;
    Движение.Материал = ВыборкаДетальныеЗаписи.Номенклатура;
    Движение.Склад = Склад;
    Движение.Количество = ВыборкаДетальныеЗаписи.КоличествоВДокументе;  
        
    // регистр СтоимостьМатериалов Расход
    Движение = Движения.СтоимостьМатериалов.Добавить();
    Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
    Движение.Период = Дата;
    Движение.Материал = ВыборкаДетальныеЗаписи.Номенклатура;
    Движение.Стоимость = ВыборкаДетальныеЗаписи.КоличествоВДокументе*СтоимостьМатериала;
    КонецЕсли;
    
    //Регистр Продажи
    Движение = Движения.Продажи.Добавить();
    Движение.Период = Дата;
    Движение.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
    Движение.Клиент = Клиент;
    Движение.Мастер = Мастер;
    Движение.Количество = ВыборкаДетальныеЗаписи.КоличествоВДокументе;
    Движение.Выручка = ВыборкаДетальныеЗаписи.СуммаВДокументе;
    Движение.Стоимость = СтоимостьМатериала * ВыборкаДетальныеЗаписи.КоличествоВДокументе;
    
    КонецЦикла;
  КонецПроцедуры
1 shuhard
 
17.10.21
11:45
(0) у Радченко свой сайт поддержки
2 serega1977
 
17.10.21
11:50
(1) - да знаю., спасибо, но ответа там не нашёл к сожалению, поэтому и обратился здесь за помощью
3 youalex
 
17.10.21
11:51
Результат = Запрос2.Выполнить();
       ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
4 youalex
 
17.10.21
11:52
У тебя РезультатЗапроса - результат первого запроса(где стоимости нет)
5 serega1977
 
17.10.21
12:00
(4) - спасибо друг!!!
исправил, всё работает.
    Результат = Запрос2.Выполнить();
       ВыборкаДетальныеЗаписи = Результат.Выбрать();
6 Hans
 
17.10.21
13:24
По радченко ничему не научишься.
7 serega1977
 
17.10.21
17:37
(6) подскажите что то лучшее? с удовольствием приму к сведению и другую литературы
8 Prog111
 
17.10.21
18:23
(0) Если ты на сайте ИТС занимаешься по этой книжке - то там есть книга та же самая, но для версии 8.3