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

Ошибка чтения значения

Автор agusikdeon, 06 апр 2011, 09:45

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

agusikdeon

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

СГРУППИРОВАТЬ ПО
   РасходнаяНакладнаяСписокНоменклатуры.Номенклатура,
   РасходнаяНакладнаяСписокНоменклатуры.Партия
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ОстаткиНоменклатурыОстатки.Номенклатура,
   ОстаткиНоменклатурыОстатки.Партия,
   ОстаткиНоменклатурыОстатки.КоличествоОстаток,
   ОстаткиНоменклатурыОстатки.СтоимостьОстаток
ПОМЕСТИТЬ ВсеОстатки
ИЗ
   РегистрНакопления.ОстаткиНоменклатуры.Остатки(
         &МоментВремени,
         Номенклатура В
            (ВЫБРАТЬ РАЗЛИЧНЫЕ
               РасходнаяНакладная.Номенклатура
            ИЗ
               РасходнаяНакладная)) КАК ОстаткиНоменклатурыОстатки
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   РасходнаяНакладнаяСписокНоменклатуры.Номенклатура,
   РасходнаяНакладнаяСписокНоменклатуры.Партия,
   ВЫБОР
      КОГДА ВсеОстатки.КоличествоОстаток > РасходнаяНакладнаяСписокНоменклатуры.Количество
         ТОГДА РасходнаяНакладнаяСписокНоменклатуры.Количество
      ИНАЧЕ ВсеОстатки.КоличествоОстаток
   КОНЕЦ КАК КоличествоОстаток,
   ВЫБОР
      КОГДА ВсеОстатки.КоличествоОстаток > РасходнаяНакладнаяСписокНоменклатуры.Количество
         ТОГДА РасходнаяНакладнаяСписокНоменклатуры.Количество * ВсеОстатки.СтоимостьОстаток / ВсеОстатки.КоличествоОстаток
      ИНАЧЕ ВсеОстатки.СтоимостьОстаток
   КОНЕЦ КАК СтомостьОстаток
ПОМЕСТИТЬ ПартииДокумента
ИЗ
   Документ.РасходнаяНакладная.СписокНоменклатуры КАК РасходнаяНакладнаяСписокНоменклатуры
      ЛЕВОЕ СОЕДИНЕНИЕ ВсеОстатки КАК ВсеОстатки
      ПО РасходнаяНакладнаяСписокНоменклатуры.Номенклатура = ВсеОстатки.Номенклатура
         И РасходнаяНакладнаяСписокНоменклатуры.Партия = ВсеОстатки.Партия
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ПартииДокумента.Номенклатура,
   ПартииДокумента.Партия,
   ЕСТЬNULL(ПартииДокумента.КоличествоОстаток, 0) КАК КоличествоОстаток,
   ЕСТЬNULL(ПартииДокумента.СтомостьОстаток, 0) КАК СтомостьОстаток,
   0 КАК Порядок
ПОМЕСТИТЬ ВсеПартии
ИЗ
   ПартииДокумента КАК ПартииДокумента

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   ВсеОстатки.Номенклатура,
   ВсеОстатки.Партия,
   ВсеОстатки.КоличествоОстаток - ЕСТЬNULL(ПартииДокумента.КоличествоОстаток, 0),
   ВсеОстатки.СтоимостьОстаток - ЕСТЬNULL(ПартииДокумента.СтомостьОстаток, 0),
   ВсеОстатки.Партия.МоментВремени
ИЗ
   ВсеОстатки КАК ВсеОстатки
      ЛЕВОЕ СОЕДИНЕНИЕ ПартииДокумента КАК ПартииДокумента
      ПО ВсеОстатки.Номенклатура = ПартииДокумента.Номенклатура
         И ВсеОстатки.Партия = ПартииДокумента.Партия
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВложенныйЗапрос.Номенклатура КАК Номенклатура,
   ВложенныйЗапрос.Количество КАК Количество,
   ВложенныйЗапрос.Сумма КАК Сумма,
   ВсеПартии.Партия,
   ВсеПартии.КоличествоОстаток КАК КоличествоОстаток,
   ВсеПартии.СтомостьОстаток,
   ВсеПартии.Порядок КАК Порядок
ИЗ
   (ВЫБРАТЬ
      РасходнаяНакладнаяСписокНоменклатуры.Номенклатура КАК Номенклатура,
      СУММА(РасходнаяНакладнаяСписокНоменклатуры.Количество) КАК Количество,
      СУММА(РасходнаяНакладнаяСписокНоменклатуры.Сумма) КАК Сумма
   ИЗ
      Документ.РасходнаяНакладная.СписокНоменклатуры КАК РасходнаяНакладнаяСписокНоменклатуры
   
   СГРУППИРОВАТЬ ПО
      РасходнаяНакладнаяСписокНоменклатуры.Номенклатура) КАК ВложенныйЗапрос
      ЛЕВОЕ СОЕДИНЕНИЕ ВсеПартии КАК ВсеПартии
      ПО ВложенныйЗапрос.Номенклатура = ВсеПартии.Номенклатура

УПОРЯДОЧИТЬ ПО
   Номенклатура,
   Порядок
ИТОГИ
   МАКСИМУМ(Количество),
   МАКСИМУМ(Сумма),
   СУММА(КоличествоОстаток)
ПО
   Номенклатура



Запрос.УстановитьПараметр("МоментВремени",МоментВремени());
   Запрос.УстановитьПараметр("Ссылка",Ссылка);
   Результат=Запрос.Выполнить();
   ВыборкаИтоги=Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
   
      
      Пока ВыборкаИтоги.Следующий() Цикл
         Стр=Движения.Продажи.Добавить();
         ЗаполнитьЗначенияСвойств(Стр,ВыборкаИтоги);
         Стр.Период=Дата;
         Выборка=ВыборкаИтоги.Выбрать();
Пока Выборка.Следующий() Цикл
         Стр=Движения.ОстаткиНоменклатуры.ДобавитьРасход();
            ЗаполнитьЗначенияСвойств(Стр,Выборка);
            Стр.Период=Дата;

      КонецЦикла;
   КонецЦикла;
   

has

Ошибка тут

ИТОГИ
   МАКСИМУМ(Количество),
   МАКСИМУМ(Сумма),
   СУММА(КоличествоОстаток)
ПО
   Номенклатура

Если у вас только обход по номенклатуре, то как вы можете еще из нее и выбирать?

agusikdeon

Цитата: has от 06 апр 2011, 10:26
Ошибка тут

ИТОГИ
   МАКСИМУМ(Количество),
   МАКСИМУМ(Сумма),
   СУММА(КоличествоОстаток)
ПО
   Номенклатура

Если у вас только обход по номенклатуре, то как вы можете еще из нее и выбирать?
не понимаю, что это значит)
напиши плиз как правильно будет.
я удалил вообще Итоги из запроса та же ошибка.
удалил сортировку по Номенклатуре то же самое.
удалил и то и то все равно то же самое.

has

В зависимости какая задача. Зачем вам тут вторая выборка я не понимаю.

has

Может что-нибудь типо такого?

Пока ВыборкаИтоги.Следующий() Цикл
    Стр=Движения.Продажи.Добавить();
    ЗаполнитьЗначенияСвойств(Стр,ВыборкаИтоги);
    Стр.Период=Дата;

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

agusikdeon

Цитата: has от 06 апр 2011, 12:44
Может что-нибудь типо такого?

Пока ВыборкаИтоги.Следующий() Цикл
    Стр=Движения.Продажи.Добавить();
    ЗаполнитьЗначенияСвойств(Стр,ВыборкаИтоги);
    Стр.Период=Дата;

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

если так, то выдает такую ошибку


при отдаке если вычислить выражение ВыборкаИтоги то вот что показывает

я думаю что из-за того что Партия, порядок и СтоимостьОстаток равны NUll
когда делаешь выборка=выборкаитоги.выбрать(); выдает ошибку чтения значения
а вторая выборка для рассмотрения каждой номенклатуры по партиям(в расходной накладной на каждую номенклатура указывается своя партия списания.

Теги:

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

Рейтинг@Mail.ru

Поиск