Имя: Пароль:
1C
1С v8
Проблемы с запросом, потерялся в нем
0 saaaty
 
01.03.23
12:28
База выдает ошибку при попытке заполнить табличную часть, ниже скину код запроса и ошибку, возникающая в базе. Помогите, кто видит проблему или знает как разобраться
1 saaaty
 
01.03.23
12:29
заполнение тч не произведено ошибка при вызове метода контекста (выполнить): {(17, 66)}: не задано значение параметра "ВидРесурса" и _КТС_ПоказанияСчетчиков.ПриборУчета.ОбластьУчета.ВидРесурса = <<?>>&ВидРесурса

Процедура ЗаполнитьПоСправочникуПодразделений()

Если ЭтаФорма.ЭлементыФормы.ВидОперации.Значение=Перечисления.КТС_ВидыРесурсов.Электроэнергия тогда
  // все счетчики в один документ
  Запрос = Новый Запрос;
  Запрос.Текст="ВЫБРАТЬ
               | Подразделения.Ссылка КАК Ссылка
               |ИЗ
               | Справочник.Подразделения КАК Подразделения
               |ГДЕ
               | Подразделения.Район <> &Район
               |
               |УПОРЯДОЧИТЬ ПО
               | Подразделения.Наименование";
      
  Запрос.УстановитьПараметр("Район", Справочники._КТС_Районы.ПустаяСсылка());
  
  СписокПодразделений=Запрос.Выполнить().Выгрузить();
  
Иначе

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

Запрос.Текст="ВЫБРАТЬ
              | _КТС_ПриборыУчета.Ссылка
              |ИЗ
              | Справочник._КТС_ПриборыУчета КАК _КТС_ПриборыУчета
              |ГДЕ
              | _КТС_ПриборыУчета.Подразделение В(&СписокПодразделений)
              | И _КТС_ПриборыУчета.ОбластьУчета.ВидРесурса = &ВидРесурса
              | И (_КТС_ПриборыУчета.ДатаСнятия >= &ДатаОтчета
              |   ИЛИ _КТС_ПриборыУчета.ДатаСнятия = ДАТАВРЕМЯ(1, 1, 1))";
    
Запрос.УстановитьПараметр("СписокПодразделений", СписокПодразделений);
Запрос.УстановитьПараметр("ВидРесурса"         , ЭтаФорма.ЭлементыФормы.ВидОперации.Значение);
Запрос.УстановитьПараметр("ДатаОтчета"         , НачалоМесяца(ЭтотОбъект.Дата));

СписокСчетчиков = Запрос.Выполнить().Выгрузить();

Если СписокСчетчиков.Количество()>0 тогда
  // Теперь надо выбрать счетчики по этим котельным
  Для каждого Строка из СписокСчетчиков цикл
  
   НоваяСтрока= ПоказанияПУ.Добавить();
   НоваяСтрока.Подразделение   = Строка.Ссылка.Подразделение;
         НоваяСтрока.ПриборУчета     = Строка.Ссылка;
         НоваяСтрока.Коэффициент     = Строка.Ссылка.Коэффициент;
  КонецЦикла;
  
  ЗаполнитьПоказанияСчетчиковНаНачалоМесяца();
Иначе
  // Теперь надо выбрать счетчики по этим котельным
  Для каждого Строка из СписокПодразделений цикл
  
   НоваяСтрока= ПоказанияПУ.Добавить();
   НоваяСтрока.Подразделение   = Строка.Ссылка;
  
  КонецЦикла;
  
КонецЕсли;

КонецПроцедуры
2 Garykom
 
гуру
01.03.23
12:34
> Запрос.УстановитьПараметр("ВидРесурса"         , ЭтаФорма.ЭлементыФормы.ВидОперации.Значение);

зачем ты с формы тянешь?
3 АгентБезопасной Нацио
 
01.03.23
12:36
+(2) и вообще, зачем тут _столько_ запросов?