Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
16 окт 2021, 05:31

Модуль Объекта не получается установить параметры

Автор Сергей Федоров, 20 апр 2017, 12:50

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

Сергей Федоров

Здраствуйте, помоги пожалуйста. Вот текст запроса.выскакивает ошибка.
Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
{Документ.ЗаявкаНаТранспорт.МодульОбъекта(55)}: Поле объекта не обнаружено (Ссылка)
   СостояниеЗаказа.Ссылка = Перечисления.СостояниеЗаказа;

Запрос = Новый Запрос;
   Запрос.Текст =
   
   "ВЫБРАТЬ
   |   СформированныеБригадыСрезПоследних.ТранспортноеСредство,
   |   СостояниеЗаказа.Ссылка,
   |   СформированныеБригадыСрезПоследних.Водитель,
   |   СформированныеБригадыСрезПоследних.Грузчик1,
   |   СформированныеБригадыСрезПоследних.Грузчик2
   |ИЗ
   |   РегистрСведений.СформированныеБригады.СрезПоследних КАК СформированныеБригадыСрезПоследних,
   |   Перечисление.СостояниеЗаказа КАК СостояниеЗаказа
   |ГДЕ
   |   СформированныеБригадыСрезПоследних.ТранспортноеСредство = &ТранспортноеСредство
   |   И СостояниеЗаказа.Ссылка = &СостояниеЗаказа";
   
   Запрос.УстановитьПараметр("ТранспортноеСредство", ТранспортноеСредство);
   Запрос.УстановитьПараметр("СостояниеЗаказа.Ссылка", СостояниеЗаказа);
   СостояниеЗаказа = Перечисления.СостояниеЗаказа;
   СостояниеЗаказа.Ссылка = Перечисления.СостояниеЗаказа;

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

alex0402

Цитата: Сергей Федоров от 20 апр 2017, 12:50Запрос.УстановитьПараметр("СостояниеЗаказа.Ссылка", СостояниеЗаказа);
здесь, наверное, опечатка.

Цитата: Сергей Федоров от 20 апр 2017, 12:50СостояниеЗаказа = Перечисления.СостояниеЗаказа;
   СостояниеЗаказа.Ссылка = Перечисления.СостояниеЗаказа;

1) у перечисления нет ссылки,
2) ссылке нельзя ничего присвоить
Спасибо за Сказать спасибо

ilyay

эти три строчки посмотрите:
   Запрос.УстановитьПараметр("СостояниеЗаказа.Ссылка", СостояниеЗаказа);
   СостояниеЗаказа = Перечисления.СостояниеЗаказа;
   СостояниеЗаказа.Ссылка = Перечисления.СостояниеЗаказа;
параметр должен быть без ".ссылка", а последние две строки - непонятно, что хотите сделать.

Сергей Федоров

Цитата: ilyay от 20 апр 2017, 13:06
эти три строчки посмотрите:
   Запрос.УстановитьПараметр("СостояниеЗаказа.Ссылка", СостояниеЗаказа);
   СостояниеЗаказа = Перечисления.СостояниеЗаказа;
   СостояниеЗаказа.Ссылка = Перечисления.СостояниеЗаказа;
параметр должен быть без ".ссылка", а последние две строки - непонятно, что хотите сделать.
изменил на .я хочу чтобы при проведении  документа, чтобы значения которые указаны в условии "Если", не выполнялись
   
   Запрос = Новый Запрос;
   Запрос.Текст =
   
   "ВЫБРАТЬ
   |   СформированныеБригадыСрезПоследних.ТранспортноеСредство,
   |   СостояниеЗаказа.Ссылка,
   |   СформированныеБригадыСрезПоследних.Водитель,
   |   СформированныеБригадыСрезПоследних.Грузчик1,
   |   СформированныеБригадыСрезПоследних.Грузчик2
   |ИЗ
   |   РегистрСведений.СформированныеБригады.СрезПоследних КАК СформированныеБригадыСрезПоследних,
   |   Перечисление.СостояниеЗаказа КАК СостояниеЗаказа
   |ГДЕ
   |   СформированныеБригадыСрезПоследних.ТранспортноеСредство = &ТранспортноеСредство
   |   И СостояниеЗаказа.Ссылка = &СостояниеЗаказа";
   
   Запрос.УстановитьПараметр("ТранспортноеСредство", ТранспортноеСредство);
   Запрос.УстановитьПараметр("СостояниеЗаказа", СостояниеЗаказа);
   
   Результат = Запрос.Выполнить();
   ВыборкаДетальныеЗаписи = Результат.Выбрать();
   Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
      Если Перечисления.СостояниеЗаказа = Перечисления.СостояниеЗаказа.ВДорогеККлиенту
         Тогда Сообщить ("Данное транспортное средство уже задействовано")
      КонецЕсли;
      Если Перечисления.СостояниеЗаказа = Перечисления.СостояниеЗаказа.ВДорогеККлиенту
         
         
         Тогда Сообщить ("Данное транспортное средство уже задействовано")
      КонецЕсли;
      Если Перечисления.СостояниеЗаказа = Перечисления.СостояниеЗаказа.ВДорогеККлиенту
         
         Тогда Сообщить ("Данное транспортное средство уже задействовано")
      КонецЕсли;
      Если Перечисления.СостояниеЗаказа =Перечисления.СостояниеЗаказа.ВДорогеККлиенту
         
         Тогда Сообщить ("Данное транспортное средство уже задействовано")
      КонецЕсли;

alex0402

Цитата: Сергей Федоров от 20 апр 2017, 13:19Если Перечисления.СостояниеЗаказа = Перечисления.СостояниеЗаказа.ВДорогеККлиенту

это условие всегда ложь
Спасибо за Сказать спасибо

ilyay

код в цикле вообще к запросу не относится. И вместо склейки в запросе достаточно было параметр поставить в секцию "выбрать".

Сергей Федоров

Цитата: ilyay от 20 апр 2017, 13:24
код в цикле вообще к запросу не относится. И вместо склейки в запросе достаточно было параметр поставить в секцию "выбрать".
вот так вот:?
Запрос = Новый Запрос;
   Запрос.Текст =
   
   "ВЫБРАТЬ
   |   СформированныеБригадыСрезПоследних.ТранспортноеСредство,
   |   СостояниеЗаказа.Ссылка,
   |   СформированныеБригадыСрезПоследних.Водитель,
   |   СформированныеБригадыСрезПоследних.Грузчик1,
   |   СформированныеБригадыСрезПоследних.Грузчик2
   |ИЗ
   |   РегистрСведений.СформированныеБригады.СрезПоследних КАК СформированныеБригадыСрезПоследних,
   |   Перечисление.СостояниеЗаказа КАК СостояниеЗаказа
   |ГДЕ
   |   СформированныеБригадыСрезПоследних.ТранспортноеСредство = &ТранспортноеСредство
   |   И СостояниеЗаказа.Ссылка = &СостояниеЗаказа";
   
   Запрос.УстановитьПараметр("ТранспортноеСредство", ТранспортноеСредство);
   Запрос.УстановитьПараметр("СостояниеЗаказа", СостояниеЗаказа);
   
   Результат = Запрос.Выполнить();
   ВыборкаДетальныеЗаписи = Результат.Выбрать();
   Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
      Если СостояниеЗаказа = "ВДорогеККлиенту"
         Тогда Сообщить ("Данное транспортное средство уже задействовано")  ;
         Отказ = Истина ;
      КонецЕсли;
      Если СостояниеЗаказа = "ВДорогеККлиенту"
         
         
         Тогда Сообщить ("Данное транспортное средство уже задействовано");
         Отказ = Истина;
      КонецЕсли;
      Если СостояниеЗаказа = "ВДорогеККлиенту"
         
         Тогда Сообщить ("Данное транспортное средство уже задействовано") ;
         Отказ = Истина ;
      КонецЕсли;
      Если СостояниеЗаказа ="ВДорогеККлиенту"
         
         Тогда Сообщить ("Данное транспортное средство уже задействовано");
         Отказ = Истина;
      КонецЕсли;
      
      
   КонецЦикла;
Добавлено: 20 апр 2017, 17:58


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

Теги:

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

Рейтинг@Mail.ru Rambler's Top100

Поиск