| 
    
            
         
         | 
    
  | 
v7: Отбор по реквизиту. | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        progaoff    
     30.05.18 
            ✎
    16:47 
 | 
         
        Делаю выборку элементов : 
 
        Спр.ВыбратьЭлементыПоРеквизиту("ВидОбъекта", Значение); Возвращает 0. Хотя три элемента с значением в реквизите есть.  | 
|||
| 
    1
    
        progaoff    
     30.05.18 
            ✎
    16:47 
 | 
         
        Что я мог упустить?     
         | 
|||
| 
    2
    
        progaoff    
     30.05.18 
            ✎
    16:48 
 | 
         
        СпрОбъекты = СоздатьОбъект("Справочник.БП_ОбъектыНаОбслуживании");
 
        СпрОбъекты.ИспользоватьВладельца(ТекущийЭлемент()); СправочникВидов = СоздатьОбъект("Справочник.БП_ВидыОбслуживаемыхОбъектов"); РеквизитПоиска = СправочникВидов.НайтиПоНаименованию("Банковское оборудование"); СпрОбъекты.ВыбратьЭлементыПоРеквизиту("ВидОбъекта",РеквизитПоиска,0,0); Пока СпрОбъекты.ПолучитьЭлемент() = 1 Цикл Если СпрОбъекты.НаОбслуживании.Получить(ИспользоватьДату()) = 1 Тогда ТабОбъектыБанк.НоваяСтрока(); Объектов = Объектов+1; ТабОбъектыБанк.Ном = Объектов; ТабОбъектыБанк.Объект = СпрОбъекты.ТекущийЭлемент(); ТабОбъектыБанк.СерийныйНомер = СпрОбъекты.СерийныйНомер.ЗаводскойНомер; ТабОбъектыБанк.ДатаЗаменыЭКЛЗ = СпрОбъекты.ДатаЗаменыЭКЛЗ.Получить(ТекущаяДата()); ТабОбъектыБанк.Подразделение = СпрОбъекты.Подразделение; ОбслуживаемоеКоличество = ОбслуживаемоеКоличество + 1; КонецЕсли; КонецЦикла;  | 
|||
| 
    3
    
        bolder    
     30.05.18 
            ✎
    16:48 
 | 
         
        (1) Реквизит должен индексироваться.     
         | 
|||
| 
    4
    
        progaoff    
     30.05.18 
            ✎
    16:49 
 | 
         
        (3) Сортировка включена на нем     
         | 
|||
| 
    5
    
        bolder    
     30.05.18 
            ✎
    16:53 
 | 
         
        (4) Значит что-то с Владельцем не так.     
         | 
|||
| 
    6
    
        Злопчинский    
     30.05.18 
            ✎
    16:55 
 | 
         
        попутно:  вот даже навскидку не скажу учитывает ли ВыбратьПоРеквизиту ограничение, установленное по ИспользоватьВладельца()...?     
         | 
|||
| 
    7
    
        Злопчинский    
     30.05.18 
            ✎
    16:56 
 | 
         
        Быдлокод детектед
 
        РеквизитПоиска = СправочникВидов.НайтиПоНаименованию("Банковское оборудование");  | 
|||
| 
    8
    
        Злопчинский    
     30.05.18 
            ✎
    16:56 
 | 
         
        НайтиПоНаименованию(<Наименование>,<Режим>,<ФлагПоиска>)
 
        Назначение: Найти элемент справочника по наименованию. Возвращает: 1 - если действие выполнено; 0 - если действие не выполнено (элемент не найден).  | 
|||
| 
    9
    
        bolder    
     30.05.18 
            ✎
    16:56 
 | 
         
        (6) Учитывает,однозначно.Поэтому в первую очередь надо проверить установку Владельца.     
         | 
|||
| 
    10
    
        bolder    
     30.05.18 
            ✎
    16:57 
 | 
         
        (8) А, ну конечно же)     
         | 
|||
| 
    11
    
        Злопчинский    
     30.05.18 
            ✎
    16:58 
 | 
         
        и даже не то быдлокод что РеквизитОбъекта - вообще то число (результат поиска успех=1, неуспех=0), а не объект/ссылка, а то быдлокод, что нигде после поиска не проверяется - найдено или нет.
 
        гнать за такое ссаными тряпками из клюшечников в восьмерочники - галочки там расставлять  | 
|||
| 
    12
    
        progaoff    
     30.05.18 
            ✎
    16:59 
 | 
         
        Да это уже понял) убрал (7)     
         | 
|||
| 
    13
    
        progaoff    
     30.05.18 
            ✎
    17:00 
 | 
         
        и владельца исключил     
         | 
|||
| 
    14
    
        bolder    
     30.05.18 
            ✎
    17:00 
 | 
         
        (11) Там скорее наоборот,навыки 8-ки мешают писать правильный код на клюшках.     
         | 
|||
| 
    15
    
        Злопчинский    
     30.05.18 
            ✎
    17:00 
 | 
         
        Почему бы написать не мудачно, а нормально, по типу
 
        СправочникВидов = СоздатьОбъект("Справочник.БП_ВидыОбслуживаемыхОбъектов"); РеквизитПоиска = СправочникВидов.НайтиПоНаименованию("Банковское оборудование"); // СпрОбъекты = СоздатьОбъект("Справочник.БП_ОбъектыНаОбслуживании"); СпрОбъекты.ИспользоватьВладельца(ТекущийЭлемент()); СпрОбъекты.ВыбратьЭлементыПоРеквизиту("ВидОбъекта",РеквизитПоиска,0,0);  | 
|||
| 
    16
    
        Злопчинский    
     30.05.18 
            ✎
    17:01 
 | 
         
        (13) и каков результат..?
 
        давай текущий код  | 
|||
| 
    17
    
        bolder    
     30.05.18 
            ✎
    17:01 
 | 
         
        (13) И?Не заработало?     
         | 
|||
| 
    18
    
        progaoff    
     30.05.18 
            ✎
    17:01 
 | 
         
        СпрОбъекты = СоздатьОбъект("Справочник.БП_ОбъектыНаОбслуживании");
 
        СпрОбъекты.ИспользоватьВладельца(ТекущийЭлемент()); СправочникВидов = СоздатьОбъект("Справочник.БП_ВидыОбслуживаемыхОбъектов"); РеквизитПоиска = СправочникВидов.НайтиПоНаименованию("Банковское оборудование"); СпрОбъекты.ВыбратьЭлементыПоРеквизиту("ВидОбъекта",РеквизитПоиска,0,0);  | 
|||
| 
    19
    
        progaoff    
     30.05.18 
            ✎
    17:02 
 | 
         
        СпрОбъекты = СоздатьОбъект("Справочник.БП_ОбъектыНаОбслуживании");
 
        СправочникВидов = СоздатьОбъект("Справочник.БП_ВидыОбслуживаемыхОбъектов"); РеквизитПоиска = СправочникВидов.НайтиПоНаименованию("Банковское оборудование"); СпрОбъекты.ВыбратьЭлементыПоРеквизиту("ВидОбъекта",РеквизитПоиска,0,0); Пока СпрОбъекты.ПолучитьЭлемент() = 1 Цикл Если СпрОбъекты.НаОбслуживании.Получить(ИспользоватьДату()) = 1 Тогда ТабОбъектыБанк.НоваяСтрока(); Объектов = Объектов+1; ТабОбъектыБанк.Ном = Объектов; ТабОбъектыБанк.Объект = СпрОбъекты.ТекущийЭлемент(); ТабОбъектыБанк.СерийныйНомер = СпрОбъекты.СерийныйНомер.ЗаводскойНомер; ТабОбъектыБанк.ДатаЗаменыЭКЛЗ = СпрОбъекты.ДатаЗаменыЭКЛЗ.Получить(ТекущаяДата()); ТабОбъектыБанк.Подразделение = СпрОбъекты.Подразделение; ОбслуживаемоеКоличество = ОбслуживаемоеКоличество + 1; КонецЕсли; КонецЦикла;  | 
|||
| 
    20
    
        bolder    
     30.05.18 
            ✎
    17:02 
 | 
         
        (18) !!!! Ты ничего не понял, похоже...     
         | 
|||
| 
    21
    
        bolder    
     30.05.18 
            ✎
    17:04 
 | 
         
        (20) Реквизит поиска у тебя число будет!     
         | 
|||
| 
    22
    
        progaoff    
     30.05.18 
            ✎
    17:05 
 | 
         
        ВыбратьЭлементыПоРеквизиту - "Строка с именем реквизита" -так?     
         | 
|||
| 
    23
    
        Злопчинский    
     30.05.18 
            ✎
    17:05 
 | 
         
        (21) они ж - как дети...     
         | 
|||
| 
    24
    
        progaoff    
     30.05.18 
            ✎
    17:06 
 | 
         
        ВыбратьЭлементыПоРеквизиту("ИмяРеквизита", "Значение"); ?     
         | 
|||
| 
    25
    
        bolder    
     30.05.18 
            ✎
    17:08 
 | 
         
        (22) Злоп же уже все разжевал...Наитий по наименованию вернёт 1 если есть.А Рекизит поиска надо уже по текущему объекту выставить СправочникВидов.Текщийэлемент().     
         | 
|||
| 
    26
    
        Злопчинский    
     30.05.18 
            ✎
    17:10 
 | 
         
        как-то так
 
        СправочникВидов = СоздатьОбъект("Справочник.БП_ВидыОбслуживаемыхОбъектов"); Если СправочникВидов.НайтиПоНаименованию("Банковское оборудование")=0 Тогда Возврат; КонецЕсли; РеквизитПоиска = СправочникВидов.ТекущийЭлемент(); СпрОбъекты = СоздатьОбъект("Справочник.БП_ОбъектыНаОбслуживании"); СпрОбъекты.ИспользоватьВладельца(ТекущийЭлемент()); СпрОбъекты.ВыбратьЭлементыПоРеквизиту("ВидОбъекта",РеквизитПоиска,0,0); Пока СпрОбъекты.ПолучитьЭлемент() = 1 Цикл Если СпрОбъекты.НаОбслуживании.Получить(ИспользоватьДату()) = 0 Тогда Продолжить; КонецЕсли; ТабОбъектыБанк.НоваяСтрока(); Объектов = Объектов+1; ТабОбъектыБанк.Ном = Объектов; //мутный смысл нумерации ТабОбъектыБанк.Объект = СпрОбъекты.ТекущийЭлемент(); ТабОбъектыБанк.СерийныйНомер = СпрОбъекты.СерийныйНомер.ЗаводскойНомер; ТабОбъектыБанк.ДатаЗаменыЭКЛЗ = СпрОбъекты.ДатаЗаменыЭКЛЗ.Получить(ТекущаяДата()); ТабОбъектыБанк.Подразделение = СпрОбъекты.Подразделение; ОбслуживаемоеКоличество = ОбслуживаемоеКоличество + 1; КонецЦикла;  | 
|||
| 
    27
    
        Злопчинский    
     30.05.18 
            ✎
    17:10 
 | 
         
        (22) ЧИТАТЬ СП! ВНИМАТЕЛЬНО!     
         | 
|||
| 
    28
    
        progaoff    
     30.05.18 
            ✎
    17:10 
 | 
         
        Моя все поняла, работает) Спасибо     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |