Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Отбор по реквизиту.

v7: Отбор по реквизиту.
Я
   progaoff
 
30.05.18 - 16:47
Делаю выборку элементов :
Спр.ВыбратьЭлементыПоРеквизиту("ВидОбъекта", Значение);
Возвращает 0. Хотя три элемента с значением в реквизите есть.
 
 
   progaoff
 
1 - 30.05.18 - 16:47
Что я мог упустить?
   progaoff
 
2 - 30.05.18 - 16:48
СпрОбъекты = СоздатьОбъект("Справочник.БП_ОбъектыНаОбслуживании");
            СпрОбъекты.ИспользоватьВладельца(ТекущийЭлемент());
            СправочникВидов = СоздатьОбъект("Справочник.БП_ВидыОбслуживаемыхОбъектов");
            РеквизитПоиска = СправочникВидов.НайтиПоНаименованию("Банковское оборудование");
            СпрОбъекты.ВыбратьЭлементыПоРеквизиту("ВидОбъекта",РеквизитПоиска,0,0);
            Пока СпрОбъекты.ПолучитьЭлемент() = 1 Цикл          
                Если СпрОбъекты.НаОбслуживании.Получить(ИспользоватьДату()) = 1 Тогда
                    ТабОбъектыБанк.НоваяСтрока();
                    Объектов = Объектов+1;
                    ТабОбъектыБанк.Ном = Объектов;
                    ТабОбъектыБанк.Объект = СпрОбъекты.ТекущийЭлемент();
                    ТабОбъектыБанк.СерийныйНомер = СпрОбъекты.СерийныйНомер.ЗаводскойНомер;
                    ТабОбъектыБанк.ДатаЗаменыЭКЛЗ =  СпрОбъекты.ДатаЗаменыЭКЛЗ.Получить(ТекущаяДата());
                    ТабОбъектыБанк.Подразделение  =  СпрОбъекты.Подразделение;
                    ОбслуживаемоеКоличество = ОбслуживаемоеКоличество + 1;
                    
                КонецЕсли;
               КонецЦикла;
   bolder
 
3 - 30.05.18 - 16:48
(1) Реквизит должен индексироваться.
   progaoff
 
4 - 30.05.18 - 16:49
(3) Сортировка включена на нем
   bolder
 
5 - 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 - если действие не выполнено (элемент не найден).
   bolder
 
9 - 30.05.18 - 16:56
(6) Учитывает,однозначно.Поэтому в первую очередь надо проверить установку Владельца.
   bolder
 
10 - 30.05.18 - 16:57
(8) А, ну конечно же)
 
 Рекламное место пустует
   Злопчинский
 
11 - 30.05.18 - 16:58
и даже не то быдлокод что РеквизитОбъекта - вообще то число (результат поиска успех=1, неуспех=0), а не объект/ссылка, а то быдлокод, что нигде после поиска не проверяется - найдено или нет.
гнать за такое ссаными тряпками из клюшечников в восьмерочники - галочки там расставлять
   progaoff
 
12 - 30.05.18 - 16:59
Да это уже понял) убрал (7)
   progaoff
 
13 - 30.05.18 - 17:00
и владельца исключил
   bolder
 
14 - 30.05.18 - 17:00
(11) Там скорее наоборот,навыки 8-ки мешают писать правильный код на клюшках.
   Злопчинский
 
15 - 30.05.18 - 17:00
Почему бы написать не мудачно, а нормально, по типу

            СправочникВидов = СоздатьОбъект("Справочник.БП_ВидыОбслуживаемыхОбъектов");
            РеквизитПоиска = СправочникВидов.НайтиПоНаименованию("Банковское оборудование");
//

СпрОбъекты = СоздатьОбъект("Справочник.БП_ОбъектыНаОбслуживании");
СпрОбъекты.ИспользоватьВладельца(ТекущийЭлемент());
СпрОбъекты.ВыбратьЭлементыПоРеквизиту("ВидОбъекта",РеквизитПоиска,0,0);
   Злопчинский
 
16 - 30.05.18 - 17:01
(13) и каков результат..?
давай текущий код
   bolder
 
17 - 30.05.18 - 17:01
(13) И?Не заработало?
   progaoff
 
18 - 30.05.18 - 17:01
СпрОбъекты = СоздатьОбъект("Справочник.БП_ОбъектыНаОбслуживании");
            СпрОбъекты.ИспользоватьВладельца(ТекущийЭлемент());
            СправочникВидов = СоздатьОбъект("Справочник.БП_ВидыОбслуживаемыхОбъектов");
            РеквизитПоиска = СправочникВидов.НайтиПоНаименованию("Банковское оборудование");
            СпрОбъекты.ВыбратьЭлементыПоРеквизиту("ВидОбъекта",РеквизитПоиска,0,0);
   progaoff
 
19 - 30.05.18 - 17:02
СпрОбъекты = СоздатьОбъект("Справочник.БП_ОбъектыНаОбслуживании");
            СправочникВидов = СоздатьОбъект("Справочник.БП_ВидыОбслуживаемыхОбъектов");
            РеквизитПоиска = СправочникВидов.НайтиПоНаименованию("Банковское оборудование");
            СпрОбъекты.ВыбратьЭлементыПоРеквизиту("ВидОбъекта",РеквизитПоиска,0,0);
            Пока СпрОбъекты.ПолучитьЭлемент() = 1 Цикл          
                Если СпрОбъекты.НаОбслуживании.Получить(ИспользоватьДату()) = 1 Тогда
                    ТабОбъектыБанк.НоваяСтрока();
                    Объектов = Объектов+1;
                    ТабОбъектыБанк.Ном = Объектов;
                    ТабОбъектыБанк.Объект = СпрОбъекты.ТекущийЭлемент();
                    ТабОбъектыБанк.СерийныйНомер = СпрОбъекты.СерийныйНомер.ЗаводскойНомер;
                    ТабОбъектыБанк.ДатаЗаменыЭКЛЗ =  СпрОбъекты.ДатаЗаменыЭКЛЗ.Получить(ТекущаяДата());
                    ТабОбъектыБанк.Подразделение  =  СпрОбъекты.Подразделение;
                    ОбслуживаемоеКоличество = ОбслуживаемоеКоличество + 1;
                    
                КонецЕсли;
               КонецЦикла;
   bolder
 
20 - 30.05.18 - 17:02
(18) !!!! Ты ничего не понял, похоже...
   bolder
 
21 - 30.05.18 - 17:04
(20) Реквизит поиска у тебя число будет!
   progaoff
 
22 - 30.05.18 - 17:05
ВыбратьЭлементыПоРеквизиту - "Строка с именем реквизита" -так?
   Злопчинский
 
23 - 30.05.18 - 17:05
(21) они ж - как дети...
   progaoff
 
24 - 30.05.18 - 17:06
ВыбратьЭлементыПоРеквизиту("ИмяРеквизита", "Значение"); ?
   bolder
 
25 - 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) ЧИТАТЬ СП! ВНИМАТЕЛЬНО!
   progaoff
 
28 - 30.05.18 - 17:10
Моя все поняла, работает) Спасибо


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует