Имя: Пароль:
1C
1С v8
как мне сделать выбор параметра в иерархии
,
0 desaint08
 
15.04.16
09:57
доброе утро!!! я как бы учусь,поэтому прошу Вас мне помочь, у меня 1с 8.2 есть текст запроса,


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

и вот подразделение это справочник,иерархия элементов,и если значится в каком то подразделении нет записей,значит они есть у родителя,как мне в параметре указать это?что если мол по этому "коду" нет ищи в "коде" родителя итд. итд?
1 FIXXXL
 
15.04.16
09:58
ВИерархии
2 Pro-tone
 
15.04.16
09:58
(0) НЕ В ИЕРАРХИИ (&Родитель)
3 desaint08
 
15.04.16
09:59
а поконкретней где писать это в условии вот в этом? НормыВыдачиСпецодеждыСрезПоследних.ПодразделениеОрганизации  =  &подразделение
4 FIXXXL
 
15.04.16
10:00
(3) конструктором открой запрос, посмотри варианты сравнения
5 desaint08
 
15.04.16
10:01
в параметре параметра это указать можно или нужно отдельное условие?
6 desaint08
 
15.04.16
10:02
не работает(
7 FIXXXL
 
15.04.16
10:07
(6) вместо "=" нужно ВИерархии
8 desaint08
 
15.04.16
10:08
я сделал (4)  но не работает
9 FIXXXL
 
15.04.16
10:10
(8) текст запроса покажи и чего не работает
10 desaint08
 
15.04.16
10:14
ЗапросНорм = Новый Запрос;
                ЗапросНорм.Текст =
                "ВЫБРАТЬ
                |    НормыВыдачиСпецодеждыСрезПоследних.ПодразделениеОрганизации,
                |    НормыВыдачиСпецодеждыСрезПоследних.КодРабочегоМеста,
                |    НормыВыдачиСпецодеждыСрезПоследних.Спецодежда,
                |    НормыВыдачиСпецодеждыСрезПоследних.Актуальность,
                |    НормыВыдачиСпецодеждыСрезПоследних.ВидНормыВыдачи,
                |    НормыВыдачиСпецодеждыСрезПоследних.СсылкаНаНорму,
                |    НормыВыдачиСпецодеждыСрезПоследних.Количество,
                |    НормыВыдачиСпецодеждыСрезПоследних.СрокИспользования,
                |    НормыВыдачиСпецодеждыСрезПоследних.КодЗащита,
                |    НормыВыдачиСпецодеждыСрезПоследних.ШифрЗатрат
                |ИЗ
                |    РегистрСведений.НормыВыдачиСпецодежды.СрезПоследних(&НаДату, ) КАК НормыВыдачиСпецодеждыСрезПоследних
                |ГДЕ
                |    НормыВыдачиСпецодеждыСрезПоследних.ПодразделениеОрганизации В ИЕРАРХИИ(&подразделение)
                |    И НормыВыдачиСпецодеждыСрезПоследних.КодРабочегоМеста = &КодРабочегоМестаНов "
                ;
                
                                 ЗапросНорм.УстановитьПараметр("НаДату", НачалоДня(Дата));
                ЗапросНорм.УстановитьПараметр("подразделение", Подразделение);
                ЗапросНорм.УстановитьПараметр("КодРабочегоМестаНов",строка(РабочееМестоКод));
                ВыборкаНорм = ЗапросНорм.Выполнить().Выгрузить();

и в параметр передается 2207031
в этом подразделении ничего нет,тогда нужно передать код родителя 220703  и если в нем ничего нет тогда 2207 в нем есть точно,но у меня выбирается только 22070301,это решаемо?или как повторить запрос с новым параметром?
11 FIXXXL
 
15.04.16
10:20
(10) а все эти 220.... подчинены иерархически друг другу? или программа сама должна угадывать твои хотелки?
12 desaint08
 
15.04.16
10:24
да подчинены ,это один справочник иерархия элементов.
13 FIXXXL
 
15.04.16
10:30
(12) это ниачом
точно ли связаны все вышеуказанные подразделения между собой?
14 desaint08
 
15.04.16
10:34
погоди сейчас все перепроверю,я понял о чем ты спросил.
15 desaint08
 
15.04.16
10:38
да один справочник, Элемент.Значение.ТекущееПодразделениеКомпании.Родитель.Родитель значение"2207"
СправочникСсылка.Подразделения
16 FIXXXL
 
15.04.16
10:40
передавай в параметр "2207"
17 desaint08
 
15.04.16
10:47
бред в консоли запросов значения возвращает,а в запросе в работе нет!!!это как-так то?
18 FIXXXL
 
15.04.16
10:56
(17) проверь текст запроса в коде
проверь параметр, который в запрос попадает, в коде

в общем - отладчик в руки :)
19 salvator
 
15.04.16
10:59
(17) Даты и время у параметра &НаДату совпадают?
20 desaint08
 
15.04.16
11:05
так ,подозреваю что,в консоли запросов параметр передаваемый это справочник.ПодразделениеОрганизации,и все находится,а в моем запросе передается СправочникСсылка.Подразделения и вот как то их нужно сопоставить,в запросе и тогда будет норм.как это сделать по умному?
21 FIXXXL
 
15.04.16
11:13
(20) надо понимать как они связаны
22 desaint08
 
15.04.16
11:15
код один и тот же
23 FIXXXL
 
15.04.16
11:16
(22) а если завтра поменяется код? :)
или у каких то подразделений он разный?

как ты подразделение получаешь в коде и отправляешь параметром в запрос?
24 desaint08
 
15.04.16
11:20
я получаю подразделение ссылкой и так отправляю в запрос,то есть
"свойство"                                       "начение"
Элемент.Значение.ТекущееПодразделениеКомпании    22070301

          "тип"
    СправочникСсылка.Подразделения
25 FIXXXL
 
15.04.16
11:24
(24) там, где получаешь ПодразделениеОрганизации  есть?
или мож связь какая есть?
в идеале нужно сопоставление иметь Подразделение - ПодразделениеОрганизации , регистр сведений к примеру
и из него брать данные
26 desaint08
 
15.04.16
11:26
так я кажется порешал только сделал это коряво,нужно как то сделать это красиво что-ле , итак я

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

и потом если  ВыборкаНорм=0 тогда --тот же запрос но
ЗапросНорм.УстановитьПараметр("подразделение", Подразделение.Родитель.Код); и если там "0" тогда ЗапросНорм.УстановитьПараметр("подразделение", Подразделение.Родитель.родитель.Код); это можно как то лучше написать?потому как попой чувствую это не провильно так использовать?
27 FIXXXL
 
15.04.16
11:48
(26) ну если так уверен в кодах, сделай параметром
ПодразделениеОрганизации.НайтиПоКоду(Подразделение.код)
и верни ВИерархии в запрос

твой вариант - запрос в цикле, жуткая бяка
28 desaint08
 
15.04.16
11:51
это как? я еще не сильно разбираюсь что куда.
29 FIXXXL
 
15.04.16
11:59
(28) запрос переделай обратно на ВИерархии, который в консоли работал нормально
и в параметрах запроса напиши поиск в справочнике, который в запросе, по коду (НайтиПоКоду), код - из другого справочника
30 FIXXXL
 
15.04.16
12:00
НормыВыдачиСпецодеждыСрезПоследних.ПодразделениеОрганизацииВИерархии &подразделение

ЗапросНорм.УстановитьПараметр("подразделение", Справочники.ПодразделениеОрганизации.НайтиПоКоду(Подразделение.код));

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

вернуло "0",он находит организацию в справочнике,но по иерархии ничего
32 desaint08
 
15.04.16
12:34
мож я запрос неправильно сформировал?
33 desaint08
 
15.04.16
12:36
в смысле находит подразделение,значение 22070301 тип значения ссылка подразделенияОрганизаций
34 FIXXXL
 
15.04.16
12:48
(33) а в консоли что запрос даст с таким параметром?
35 desaint08
 
15.04.16
13:43
и в рабочем запросе не работает(
36 FIXXXL
 
15.04.16
13:45
(35) значит по этому коду ничего нет и ему подчиненных нет с остатками

тебе логику надо сначала в порядок привести, "кто на ком стоит"
37 desaint08
 
15.04.16
13:49
ясно попробую и отпишусь
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.