[РЕШЕНО] Ошибка "Поле объекта не обнаружено (Материал)

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Danonya, 4 мар 2015.

  1. TopicStarter Overlay
    Danonya
    Offline

    Danonya

    Регистрация:
    4 мар 2015
    Сообщения:
    2
    Симпатии:
    0
    Баллы:
    1
    Здравствуйте. При выполнении оптимизации процедуры проведения документа "Оказание услуги" (по книге Радченко), написав код в модуле документа (он находится ниже) в режиме откладка при проведении документов выходит ошибка "Поле объекта не обнаружено (Материал)". Уже все перерыла,2 дня парюсь незнаю что делать. Кто может помогите:(
    Базу тоже подкрепила.
    Код:
    Процедура ОбработкаПроведения(Отказ, Режим)
       
         Запрос = Новый Запрос;
         Если Режим = РежимПроведенияДокумента.Оперативный Тогда
             Запрос.Текст  =
             "ВЫБРАТЬ
             |    ОказаниеУслугиПереченьНоменклатуры.Номенклатура,
             |    ОказаниеУслугиПереченьНоменклатуры.Количество,
             |    ОказаниеУслугиПереченьНоменклатуры.Номенклатура.ВидНоменклатуры КАК ВидНоменклатуры,
             |    ОказаниеУслугиПереченьНоменклатуры.Сумма,
             |    ОстаткиМатериаловОстатки.КоличествоОстаток,
             |    СтоимостьМатериаловОстатки.СтоимостьОстаток,
             |    ОстаткиМатериаловОстаткиНаСкладе.КоличествоОстаток КАК КоличествоНаСкладе
             |ИЗ
             |    Документ.ОказаниеУслуги.ПереченьНоменклатуры КАК ОказаниеУслугиПереченьНоменклатуры
             |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиМатериалов.Остатки(
             |                &МоментВремени,
             |                Материал В (&СписокНоменклатурыДокумента)
             |                    И Склад = &СкладВДокументе) КАК ОстаткиМатериаловОстаткиНаСкладе
             |        ПО ОказаниеУслугиПереченьНоменклатуры.Номенклатура = ОстаткиМатериаловОстаткиНаСкладе.Материал
             |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СтоимостьМатериалов.Остатки(&МоментВремени, Материал В (&СписокНоменклатурыДокумента)) КАК СтоимостьМатериаловОстатки
             |        ПО ОказаниеУслугиПереченьНоменклатуры.Номенклатура = СтоимостьМатериаловОстатки.Материал
             |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиМатериалов.Остатки(&МоментВремени, Материал В (&СписокНоменклатурыДокумента)) КАК ОстаткиМатериаловОстатки
             |        ПО ОказаниеУслугиПереченьНоменклатуры.Номенклатура = ОстаткиМатериаловОстатки.Материал
             |ГДЕ
             |    ОказаниеУслугиПереченьНоменклатуры.Ссылка = &Ссылка
             |
             |ДЛЯ ИЗМЕНЕНИЯ
             |    РегистрНакопления.ОстаткиМатериалов.Остатки,
             |    РегистрНакопления.СтоимостьМатериалов.Остатки";
           
             Запрос.УстановитьПараметр("СкладВДокументе", Склад);
         Иначе
             Запрос.Текст  =
             "ВЫБРАТЬ
             |    ОказаниеУслугиПереченьНоменклатуры.Номенклатура,
             |    ОказаниеУслугиПереченьНоменклатуры.Количество,
             |    ОказаниеУслугиПереченьНоменклатуры.Номенклатура.ВидНоменклатуры КАК ВидНоменклатуры,
             |    ОказаниеУслугиПереченьНоменклатуры.Сумма,
             |    ОстаткиМатериаловОстатки.КоличествоОстаток,
             |    СтоимостьМатериаловОстатки.СтоимостьОстаток
             |ИЗ
             |    Документ.ОказаниеУслуги.ПереченьНоменклатуры КАК ОказаниеУслугиПереченьНоменклатуры
             |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиМатериалов.Остатки(&МоментВремени, Материал В (&СписокНоменклатурыДокумента)) КАК ОстаткиМатериаловОстатки
             |        ПО ОказаниеУслугиПереченьНоменклатуры.Номенклатура = ОстаткиМатериаловОстатки.Материал
             |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СтоимостьМатериалов.Остатки(&МоментВремени, Материал В (&СписокНоменклатурыДокумента)) КАК СтоимостьМатериаловОстатки
             |        ПО ОказаниеУслугиПереченьНоменклатуры.Номенклатура = СтоимостьМатериаловОстатки.Материал
             |ГДЕ
             |    ОказаниеУслугиПереченьНоменклатуры.Ссылка = &Ссылка
             |
             |ДЛЯ ИЗМЕНЕНИЯ
             |    РегистрНакопления.ОстаткиМатериалов.Остатки,
             |    РегистрНакопления.СтоимостьМатериалов.Остатки" ;
       КонецЕсли;
                      
       Запрос.УстановитьПараметр("МоментВремени", МоментВремени());
       Запрос.УстановитьПараметр("СписокНоменклатурыДокумента", ПереченьНоменклатуры.ВыгрузитьКолонку("Номенклатура"));
       Запрос.УстановитьПараметр("Ссылка", Ссылка);
              
       ВыборкаРезультатаЗапроса = Запрос.Выполнить().Выбрать();
       
       Пока ВыборкаРезультатаЗапроса.Следующий() Цикл
       
           // Проверить остаток при оперативном проведении.
           Если Режим = РежимПроведенияДокумента.Оперативный Тогда
              Если ВыборкаРезультатаЗапроса.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.Материал Тогда
              Остаток = ?(ВыборкаРезультатаЗапроса.КоличествоОстатокНаСкладе = Null, 0, ВыборкаРезультатаЗапроса.КоличествоОстатокНаСкладе);
                 Если Остаток < ВыборкаРезультатаЗапроса.Количество
                 Тогда
                    Сообщить("Материала " + СокрЛП(ВыборкаРезультатаЗапроса.Номенклатура)
                        + " имеется только " + Остаток);
                     Отказ = Истина;
                     Возврат;
                 КонецЕсли;
              КонецЕсли;
           КонецЕсли;
       
           // Сформировать движения.
           Если ВыборкаРезультатаЗапроса.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.Материал Тогда
       
               // Регистр ОстаткиМатериалов Расход.
               Движение             = Движения.ОстаткиМатериалов.Добавить();
               Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
               Движение.Период      = Дата;
               Движение.Материал    = ВыборкаРезультатаЗапроса.Номенклатура;
               Движение.Склад       = Склад;
               Движение.Количество  = ВыборкаРезультатаЗапроса.Количество;
               
               // Регистр СтоимостьМатериалов Расход.
               Движение             = Движения.СтоимостьМатериалов.Добавить();
               Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
               Движение.Период      = Дата;
               Движение.Материал    = ВыборкаРезультатаЗапроса.Номенклатура;
      
               // Расчитать стоимость материала.
               СтоимостьМатериала = ?(ВыборкаРезультатаЗапроса.КоличествоОстаток = Null,
                                      0,
                                      ВыборкаРезультатаЗапроса.СтоимостьОстаток / ВыборкаРезультатаЗапроса.КоличествоОстаток);
               Движение.Стоимость = СтоимостьМатериала * ВыборкаРезультатаЗапроса.Количество;
              
               // По регистру Управленческий.    
    
               // Первая проводка: Д 62(ДебиторскаяЗадолженность) - К 90 (Капитал) - розничная сумма.
               Движение        = Движения.Управленческий.Добавить();
               Движение.СчетДт =  ПланыСчетов.Основной.ДебиторскаяЗадолженность;
               Движение.СчетКт = ПланыСчетов.Основной.Капитал;
               Движение.Период = Дата;
               Движение.Сумма  = ВыборкаРезультатаЗапроса.Сумма;
               Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Клиенты] = Клиент;
    
               // Вторая проводка: Д 90 (Капитал) - К 41 (Товары) - себестоимость.
               Движение = Движения.Управленческий.Добавить();
               Движение.СчетДт       = ПланыСчетов.Основной.Капитал;
               Движение.СчетКт       = ПланыСчетов.Основной.Товары;
               Движение.Период       = Дата;
               Движение.Сумма        = СтоимостьМатериала * ВыборкаРезультатаЗапроса.Количество;
               Движение.КоличествоКт = ВыборкаРезультатаЗапроса.Количество;
               Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Материалы] =
                                               ВыборкаРезультатаЗапроса.Номенклатура;
               
    
            КонецЕсли;
    
                // Регистр Продажи.
                Движение = Движения.Продажи.Добавить();
                Движение.Период = Дата;
                Движение.Номенклатура = ВыборкаРезультатаЗапроса.Номенклатура;
                Движение.Клиент = Клиент;
                Движение.Мастер = Мастер;
                Движение.Количество = ВыборкаРезультатаЗапроса.Количество;
                Движение.Выручка = ВыборкаРезультатаЗапроса.Сумма;
                Если ВыборкаРезультатаЗапроса.ВидНоменклатуры  =
                                   Перечисления.ВидыНоменклатуры.Материал Тогда
                                   Движение.Стоимость = СтоимостьМатериала * ВыборкаРезультатаЗапроса.Количество;
                Иначе
                   Движение.Стоимость = 0;
                КонецЕсли;
              
            КонецЦикла;
    
            // Записать движения регистров
            Движения.ОстаткиМатериалов.Записать();
            Движения.СтоимостьМатериалов.Записать();
            Движения.Продажи.Записать();
    
    КонецПроцедуры
    

    Вложения:

  2. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    В запросе ошибка ?
  3. TopicStarter Overlay
    Danonya
    Offline

    Danonya

    Регистрация:
    4 мар 2015
    Сообщения:
    2
    Симпатии:
    0
    Баллы:
    1
    Вроде да. Вот такая ошибка выходит
    --- Объединение сообщений, 4 мар 2015 ---
    Всем спасибо. Ошибка найдена!

    Вложения:

    • 1.jpg
      1.jpg
      Размер файла:
      174,8 КБ
      Просмотров:
      24
    • 2.jpg
      2.jpg
      Размер файла:
      167,9 КБ
      Просмотров:
      24
    Последнее редактирование: 4 мар 2015
Похожие темы
  1. LedyOwl
    Ответов:
    5
    Просмотров:
    3.564
  2. Алёна
    Ответов:
    3
    Просмотров:
    1.232
  3. Прохор Кочерга
    Ответов:
    5
    Просмотров:
    2.620
  4. Ildar Ziganshin
    Ответов:
    3
    Просмотров:
    798
  5. Семен Сосницкий
    Ответов:
    3
    Просмотров:
    512
Загрузка...

Поделиться этой страницей