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

Запрос.УстановаитьПараметр //переменная не определена

Автор ivangrant, 20 фев 2019, 11:45

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

ivangrant

Все форумы перерыл, но так нигде и нет объъяснения, почему Ссылка и МоментВремени работает, а название ТЧ не хочет цеплять?
____

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

КонецПроцедуры

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

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

   РезультатЗапроса = Запрос.Выполнить();
   
   ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
   
   Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
      
      Если ВыборкаДетальныеЗаписи.Количество > ВыборкаДетальныеЗаписи.КоличествоОстаток Тогда
         Сообщение = Новый СообщениеПользователю;
         Сообщение.Текст = "Недостаточно Товара";
         Сообщение.Сообщить();
          Отказ = Истина;
      ИначеЕсли
         ВыборкаДетальныеЗаписи.Количество = ВыборкаДетальныеЗаписи.КоличествоОстаток Тогда
                Движение = Движения.ОстаткиТовара.Добавить();
      Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
      Движение.Период = Дата;
      Движение.НомерЗаказПокупателя = НомерЗаказПокупателя;
      Движение.Товар = ВыборкаДетальныеЗаписи.Номенклатура;
      Движение.Количество = ВыборкаДетальныеЗаписи.КоличествоОстаток;
      Движение.Сумма = ВыборкаДетальныеЗаписи.СуммаОстаток;
   Иначе
                   Движение = Движения.ОстаткиТовара.Добавить();
      Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
      Движение.Период = Дата;
      Движение.НомерЗаказПокупателя = НомерЗаказПокупателя;
      Движение.Товар = ВыборкаДетальныеЗаписи.Номенклатура;
      Движение.Количество = ВыборкаДетальныеЗаписи.КоличествоОстаток;
      Движение.Сумма = Окр(?(ВыборкаДетальныеЗаписи.КоличествоОстаток=0,0,ВыборкаДетальныеЗаписи.СуммаОстаток/ВыборкаДетальныеЗаписи.КоличествоОстаток*ВыборкаДетальныеЗаписи.Количество),2);
   КонецЕсли;
   КонецЦикла;
   

КонецПроцедуры
______
Пишет ошибку:
{Документ.РасходнаяНакладная.МодульОбъекта(72,52)}: Переменная не определена (НомерЗаказПокупателя)
   Запрос.УстановитьПараметр("НомерЗаказПокупателя", <<?>>НомерЗаказПокупателя); (Проверка: Сервер)
{Документ.РасходнаяНакладная.МодульОбъекта(92,35)}: Переменная не определена (НомерЗаказПокупателя)
      Движение.НомерЗаказПокупателя = <<?>>НомерЗаказПокупателя; (Проверка: Сервер)
{Документ.РасходнаяНакладная.МодульОбъекта(100,35)}: Переменная не определена (НомерЗаказПокупателя)
      Движение.НомерЗаказПокупателя = <<?>>НомерЗаказПокупателя; (Проверка: Сервер)

antoneus

Я знаю, что нужно делать! Нужно определить переменную НомерЗаказПокупателя и присвоить ей значение!

Vit1501

Ну в ошибке написано, что Документе "РасходнаяНакладная" нет Реквизита "НомерЗаказПокупателя" и переменной вы такой не объявили, а использовать пытаетесь использовать ее...

ivangrant

Цитата: Vit1501 от 20 фев 2019, 12:01
Ну в ошибке написано, что Документе "РасходнаяНакладная" нет Реквизита "НомерЗаказПокупателя" и переменной вы такой не объявили, а использовать пытаетесь использовать ее...
Разве при помощи кеонструктора запроса я её не определил?
____
|ИЗ
      |   РегистрНакопления.ОстаткиТовара.Остатки(
      |         &МоментВремени,
      |         НомерЗаказПокупателя = &НомерЗаказПокупателя
_____
Как можно обойти её?
Добавлено: 20 фев 2019, 12:37


НомерЗаказПокупателя - это измерение РН ОстаткиТовара.

antoneus

НомерЗаказПокупателя - это реквизит документа?


ivangrant

Цитата: antoneus от 20 фев 2019, 13:02
НомерЗаказПокупателя - это реквизит документа?
это измерение РН ОстаткиТовара.

antoneus

А можете в коде указать, где вы обращаетесь к РН "ОстаткиТовара"? Или вы думаете, что 1С настолько умная, что понимает - если вы пишете "НомерЗаказПокупателя" - то это из РН "ОстаткиТовара"? Нет, 1С тупая, она выдает только то, что вы ей пишете. Пишете вы ей "НомерЗаказаПокупателя" - она ищет - где вы в коде раньше объявили эту переменную. Если не находит - то так вам и говорит.

ivangrant

Цитата: antoneus от 20 фев 2019, 13:12
А можете в коде указать, где вы обращаетесь к РН "ОстаткиТовара"? Или вы думаете, что 1С настолько умная, что понимает - если вы пишете "НомерЗаказПокупателя" - то это из РН "ОстаткиТовара"? Нет, 1С тупая, она выдает только то, что вы ей пишете. Пишете вы ей "НомерЗаказаПокупателя" - она ищет - где вы в коде раньше объявили эту переменную. Если не находит - то так вам и говорит.
Через УставовитьЗапрос можно обратиться к этому измерению?

Теги:

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

Рейтинг@Mail.ru

Поиск