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

1. user712426 21.03.17 08:39 Сейчас в теме
Доброго дня! необходимо чтобы формировался список численности по подразделениям.
Создаю внешний отчет. 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 недели. Почему ругается на текущее подразделение?
По теме из базы знаний
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. Sokar 21.03.17 08:50 Сейчас в теме
Запрос1.УстановитьПараметр("ТекущееПодразделение",ПодразделениеПоКоторомуДелаетсяЗапрос);
3. Sokar 21.03.17 08:52 Сейчас в теме
вставить перед строкой
РезультатЗапроса = Запрос1.Выполнить();
4. user712426 21.03.17 09:29 Сейчас в теме
добавляла строку уже
Запрос1.УстановитьПараметр("ТекущееПодразделение",ТекущееПодразделение);


ругается:
{ВнешнийОтчет.Список.Форма.ФормаОтчета.Форма(156,52)}: Переменная не определена (ТекущееПодразделение)
Запрос1.УстановитьПараметр("ТекущееПодразделение",<<?>>ТекущееПодразделение); (Проверка: Сервер)

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

в начале запроса вы указали поле для результирующей таблицы, с отборами никак не связанную... По вашей логике: я получаю подразделение по подразделению, но не понятно какому.

установите параметр для какого подразделения вы хотите получить данные.
7. petrik 21.03.17 09:50 Сейчас в теме
+(5) так же в запросе у вас еще есть параметры:
&состояние, &Возраст, &Пол, &Период - для них тоже необходимо установить параметр
9. user712426 21.03.17 10:10 Сейчас в теме
6. Sokar 21.03.17 09:38 Сейчас в теме
сделаем скидку на трехнедельный "опыт"...

вам нужно в запрос передать значение "ПодразделениеПоКоторомуДелаетсяЗапрос" - т.е. это ссылка на элемент справочника "Подразделения"... соответственно вам нужно присвоить (или получить) переменной "ПодразделениеПоКоторомуДелаетсяЗапрос" значение

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

Извините,надо делать срочно, а мозгов не хватает+каша в голове. => Поэтому
1)т.к. все подразделения хранятся в Справочник.ПодразделенияОрганизаций
наверное надо так указать значение переменной. чтобы оттуда брались данные. так?
но по идее надо брать данные из регистра сведений ТекущиеКадровыеДанныеСотр
2)
ПодразделениеПоКоторомуДелаетсяЗапрос = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ОсновноеПодразделение");

что есть УправлениеПользователями у вас??
Еще раз извиняюсь за детсадовские вопросы. Хотя возможно кому-то будет интересна темка.
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)