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

Не задано значение параметра 1с

Автор katod, 21 мар 2017, 08:23

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

katod

Доброго дня! необходимо чтобы формировался список численности по подразделениям.
Создаю внешний отчет. 1С8.3
Выдает ошибку: {ВнешнийОтчет.Список.Форма.ФормаОтчета.Форма(158)}: Ошибка при вызове метода контекста (Выполнить)
   РезультатЗапроса = Запрос1.Выполнить();
по причине:
{(37, 59)}: Не задано значение параметра "ТекущееПодразделение"
(ТекущиеКадровыеДанныеСотрудников.ТекущееПодразделение = <<?>>&ТекущееПодразделение


Листинг(часть):
ТабДок=Новый ТабличныйДокумент();
ТЗ = Новый ТаблицаЗначений;
   ТЗ.Колонки.Добавить("Подразделение");
   ТЗ.Колонки.Добавить("РШ");
   ТЗ.Колонки.Добавить("РФ");
   ТЗ.Колонки.Добавить("РП");
   ТЗ.Колонки.Добавить("РС");
   ТЗ.Колонки.Добавить("РВР");
   ТЗ.Колонки.Добавить("РВД");
   
   Запрос1=Новый Запрос;
   Запрос1.Текст=
   "ВЫБРАТЬ
   |   ТекущиеКадровыеДанныеСотрудников.ТекущееПодразделение КАК ТекущееПодразделение,
   |   КВ_ДополнительныеРеквизитыСрезПоследних.Категория КАК Категория,
   |   ВЫБОР
   |      КОГДА СостоянияСотрудниковСрезПоследних.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияСотрудника.ОтпускПоУходуЗаРебенком)
   |         ТОГДА 1
   |      ИНАЧЕ 0
   |   КОНЕЦ КАК ВД,
   |   ВЫБОР
   |      КОГДА КВ_ДополнительныеРеквизитыСрезПоследних.ХарактерРаботы = ЗНАЧЕНИЕ(Перечисление.КВ_ХарактерРаботы.РаботающийНаВременнойРаботе)
   |         ТОГДА 1
   |      ИНАЧЕ 0
   |   КОНЕЦ КАК ВР,
   |   ВЫБОР
   |      КОГДА КадроваяИсторияСотрудниковСрезПоследних.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Совместительство)
   |            ИЛИ КадроваяИсторияСотрудниковСрезПоследних.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ВнутреннееСовместительство)
   |         ТОГДА 1
   |      ИНАЧЕ 0
   |   КОНЕЦ КАК Сов,
   |   ВЫБОР
   |      КОГДА КВ_ДополнительныеРеквизитыСрезПоследних.ХарактерРаботы = ЗНАЧЕНИЕ(Перечисление.КВ_ХарактерРаботы.РаботающийНаПостояннойРаботе)
   |            И СостоянияСотрудниковСрезПоследних.Состояние <> ЗНАЧЕНИЕ(Перечисление.СостоянияСотрудника.ОтпускПоУходуЗаРебенком)
   |            И КадроваяИсторияСотрудниковСрезПоследних.ВидЗанятости <> ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Совместительство)
   |            И КадроваяИсторияСотрудниковСрезПоследних.ВидЗанятости <> ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ВнутреннееСовместительство)
   |         ТОГДА 1
   |      ИНАЧЕ 0
   |   КОНЕЦ КАК Пост
   |ИЗ
   |   РегистрСведений.СостоянияСотрудников.СрезПоследних(&Период, ) КАК СостоянияСотрудниковСрезПоследних
   |      ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ТекущиеКадровыеДанныеСотрудников КАК ТекущиеКадровыеДанныеСотрудников
   |      ПО СостоянияСотрудниковСрезПоследних.Сотрудник = ТекущиеКадровыеДанныеСотрудников.Сотрудник
   |      ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КВ_ДополнительныеРеквизиты.СрезПоследних КАК КВ_ДополнительныеРеквизитыСрезПоследних
   |      ПО СостоянияСотрудниковСрезПоследних.Сотрудник = КВ_ДополнительныеРеквизитыСрезПоследних.Сотрудник
   |      ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних КАК КадроваяИсторияСотрудниковСрезПоследних
   |      ПО СостоянияСотрудниковСрезПоследних.Сотрудник = КадроваяИсторияСотрудниковСрезПоследних.Сотрудник
   |ГДЕ
   |   (ТекущиеКадровыеДанныеСотрудников.ТекущееПодразделение = &ТекущееПодразделение
   |         ИЛИ ТекущиеКадровыеДанныеСотрудников.ТекущееПодразделение.Родитель = &ТекущееПодразделение
   |         ИЛИ ТекущиеКадровыеДанныеСотрудников.ТекущееПодразделение.Родитель.Родитель = &ТекущееПодразделение
   |         ИЛИ ТекущиеКадровыеДанныеСотрудников.ТекущееПодразделение.Родитель.Родитель.Родитель = &ТекущееПодразделение)
   |   И СостоянияСотрудниковСрезПоследних.Состояние <> &состояние
   |   И РАЗНОСТЬДАТ(СостоянияСотрудниковСрезПоследних.Сотрудник.ФизическоеЛицо.ДатаРождения, СостоянияСотрудниковСрезПоследних.Период, ГОД) <= &Возраст
   |   И СостоянияСотрудниковСрезПоследних.Сотрудник.ФизическоеЛицо.Пол = &Пол
   |
   |СГРУППИРОВАТЬ ПО
   |   КВ_ДополнительныеРеквизитыСрезПоследних.Категория,
   |   ТекущиеКадровыеДанныеСотрудников.ТекущееПодразделение,
   |   ВЫБОР
   |      КОГДА КадроваяИсторияСотрудниковСрезПоследних.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Совместительство)
   |            ИЛИ КадроваяИсторияСотрудниковСрезПоследних.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ВнутреннееСовместительство)
   |         ТОГДА 1
   |      ИНАЧЕ 0
   |   КОНЕЦ,
   |   ВЫБОР
   |      КОГДА КВ_ДополнительныеРеквизитыСрезПоследних.ХарактерРаботы = ЗНАЧЕНИЕ(Перечисление.КВ_ХарактерРаботы.РаботающийНаПостояннойРаботе)
   |            И СостоянияСотрудниковСрезПоследних.Состояние <> ЗНАЧЕНИЕ(Перечисление.СостоянияСотрудника.ОтпускПоУходуЗаРебенком)
   |            И КадроваяИсторияСотрудниковСрезПоследних.ВидЗанятости <> ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Совместительство)
   |            И КадроваяИсторияСотрудниковСрезПоследних.ВидЗанятости <> ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ВнутреннееСовместительство)
   |         ТОГДА 1
   |      ИНАЧЕ 0
   |   КОНЕЦ,
   |   ВЫБОР
   |      КОГДА СостоянияСотрудниковСрезПоследних.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияСотрудника.ОтпускПоУходуЗаРебенком)
   |         ТОГДА 1
   |      ИНАЧЕ 0
   |   КОНЕЦ,
   |   ВЫБОР
   |      КОГДА КВ_ДополнительныеРеквизитыСрезПоследних.ХарактерРаботы = ЗНАЧЕНИЕ(Перечисление.КВ_ХарактерРаботы.РаботающийНаВременнойРаботе)
   |         ТОГДА 1
   |      ИНАЧЕ 0
   |   КОНЕЦ";
   
   РезультатЗапроса = Запрос1.Выполнить();
   Выборка = РезультатЗапроса.Выбрать();
   Пока Выборка.Следующий() Цикл
      Стр = ТЗ.Добавить();
      Стр.Подразделение=Выборка.Подразделение;
      Если Выборка.Категория= Справочники.КВ_КатегорииСотрудников.НайтиПоКоду("000000001") Тогда   
         Стр.РП=Выборка.Пост;
         Стр.РС= Выборка.Сов;
         Стр.РВР= Выборка.ВР;
         Стр.РВД= Выборка.ВД;
      КонецЕсли;
   КонецЦикла;
   тз.ВыбратьСтроку();   

Прошу учесть, что опыт программиста у меня без малого 3 недели. Почему ругается на текущее подразделение?

alex0402

перед
Цитата: katod от 21 мар 2017, 08:23РезультатЗапроса = Запрос1.Выполнить();

Запрос.УстановитьПараметр("ТекущееПодразделение",что-то);
Спасибо за Сказать спасибо

katod

что-то -- это что?

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

т.к. все подразделения хранятся в Справочник.ПодразделенияОрганизаций
наверное надо так указать значение переменной. чтобы оттуда брались данные. так?

AsadRoman

ГДЕ
   |   (ТекущиеКадровыеДанныеСотрудников.ТекущееПодразделение = &ТекущееПодразделение
   |         ИЛИ ТекущиеКадровыеДанныеСотрудников.ТекущееПодразделение.Родитель = &ТекущееПодразделение
   |         ИЛИ ТекущиеКадровыеДанныеСотрудников.ТекущееПодразделение.Родитель.Родитель = &ТекущееПодразделение
   |         ИЛИ ТекущиеКадровыеДанныеСотрудников.ТекущееПодразделение.Родитель.Родитель.Родитель = &ТекущееПодразделение

1. Для подразделений в "верхних" уровнях иерархии выражения ТекущиеКадровыеДанныеСотрудников.ТекущееПодразделение.Родитель, ТекущиеКадровыеДанныеСотрудников.ТекущееПодразделение.Родитель.Родитель и т.д. некорректны.

Правильно писать ТекущиеКадровыеДанныеСотрудников.ТекущееПодразделение в Иерархии (&ТекущееПодразделение)

2. Что-то в приведенном листинге не вижу вот такой строчки:

    Запрос.УстановитьПараметр("ТекущееПодразделение", ИнтересующееВсПодразделение);
Добавлено: 21 мар 2017, 15:17


Ну по всем остальным параметрам то же самое. Параметры, это все слова, начинающиеся с символа &.

katod

Большое спасибо! С заданными параметрами разобралась и так все работает!

Теги:

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

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

Поиск