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

Конвертация данных + запрос 7.7

Конвертация данных + запрос 7.7
Я
   Wefast
 
15.05.19 - 08:29
Есть справочник Номенклатура, есть справочник НормыТруда(спецификация)

В справочнике нормы труда есть реквизит Ном(НОМЕНКЛАТУРА)

Мне известна эта номенклатура и ном

Мне нужно узнать найти спецификацию у которой ном = моя ном, и подчинена моей номенклатуре
Она точно есть

Пишу:

                            Запрос = СоздатьОбъект("Запрос");
                            ТекстЗапроса =
                            "//{{ЗАПРОС(Сформировать)
                            |Родитель = Справочник.НормыРасходов.Родитель;
                            |НормыРасходов = Справочник.НормыРасходов.ТекущийЭлемент;
                            |Элемент = Справочник.НормыРасходов.Элемент;
                            |Группировка НормыРасходов;
                            |Условие(НормыРасходов.Владелец= ВхИзд);
                            |Условие(Элемент = Источник);
                            |";
                            ;

                                


Источник - моя номенклатура, владелец справочника
ВхИзд - моя Ном, реквизит справочника нормы расходов

Запрос выдает пустой результат.

Пишу
                        НР2 = СоздатьОбъект("Справочник.НормыРасходов");
                        НР2.ИспользоватьВладельца(НР.ТекущийЭлемент().Элемент);
                        Если НР2.НайтиПоРеквизиту("Элемент",ВхИзд,0) = 1 Тогда
                            я=0;
                        КонецЕсли;
И тут тоже ничего не находится.

Может я пишу что не так?

Запрос кстати вечность выполняется.
 
 
   Wefast
 
1 - 15.05.19 - 08:39
НР2 = СоздатьОбъект("Справочник.НормыРасходов");
                        НР2.ИспользоватьВладельца(НР.ТекущийЭлемент().Элемент);
                        Если НР2.НайтиПоРеквизиту("Элемент",ВхИзд,0) = 1 Тогда
                            я=0;
                        КонецЕсли; 

тут я перепутал на самом деле ВхИзд и НР.ТекущийЭлемент().Элемент
Но сути это не поменяло
   Wefast
 
2 - 15.05.19 - 09:11
https://is.gd/obbB91

вот скрин справочников.
слева справочник Номенклатура. По нажатию кнопки "Нормативы" открывается справочник Нормы расходов с отбором по владельцу(Номенклатура)

Там есть реквизит Элемент. Тип Номенклатура

Вот у меня есть этот Элемент и владелец-номенклатура

Мне нужно получить элемент справочника Нормы расходов по этим 2 реквизитам
   Ёпрст
 
3 - 15.05.19 - 09:22
(0) выкинуть из кода везде текущийэлемент()
(2) п..ц, даже из картинки видно, что реквизит Элемент имеет тип НЕ справочник.номенклатура
   Wefast
 
4 - 15.05.19 - 09:29
(3) по второму пункту https://is.gd/YiqF8F
   Wefast
 
5 - 15.05.19 - 10:00
"//{{ЗАПРОС(Сформировать1)

    |Без итогов;
    |НормыРасходов = Справочник.НормыРасходов.ТекущийЭлемент;
    |Владелец = Справочник.НормыРасходов.Владелец;
    |Элемент = Справочник.НормыРасходов.Элемент;
    |Группировка Элемент;
    |Условие(Элемент = Элем);
    |Условие(Владелец = Ном);
    |"//}}ЗАПРОС

     
Вот собрал такой вариант, работает, но очень долго

Куда быстрее сделать выборку по реквизиту, без учета владельца, а потом условие сделать

Вот так работает раз в 10 быстрее:
    НР2 = СоздатьОбъект("Справочник.НормыРасходов");
    НР2.ВыбратьЭлементыПоРеквизиту("Элемент",Элем,0,0);
    
    Пока НР2.ПолучитьЭлемент()=1 Цикл
        Если НР2.Владелец = Ном Тогда
            Сообщить("ок");
        КонецЕсли;
    КонецЦикла;
   Ёпрст
 
6 - 15.05.19 - 10:24
(4) биомать а ? Открой ты пофигуратор и посмотри тип реквизита.
   Ёпрст
 
7 - 15.05.19 - 10:26
(5) есть найтиПоРеквизиту, будет еще быстрее, чем выборка
   Wefast
 
8 - 15.05.19 - 10:31
(6) (7) Я в условие после выборки подсовываю НОМЕНКЛАТУРУ и оно срабатывает.
в конфигураторе, просто тип "справочник"
НайтиПоРеквезиту без указания владельца выдает не то что надо, а с владельцем не работает - о чем я писал в (0)
   Ёпрст
 
9 - 15.05.19 - 10:45
(8) в (0) вообще г..о код
   Ёпрст
 
10 - 15.05.19 - 10:45
где вас учат писать так ?
НР.ТекущийЭлемент().Элемент ?
   Ёпрст
 
11 - 15.05.19 - 10:47
И так, чего, не работает у вас, разве ?


 НР2 = СоздатьОбъект("Справочник.НормыРасходов");
 НР2.ИспользоватьВладельца(Ном); 
 Если НР2.НайтиПоРеквизиту("Элемент",Элем,0,0) =1 Тогда
      Сообщить("ок");
 КонецЕсли;


   Ёпрст
 
12 - 15.05.19 - 10:49
точнее, так:


 НР2 = СоздатьОбъект("Справочник.НормыРасходов");
 НР2.ИспользоватьВладельца(Ном); 
 Если НР2.НайтиПоРеквизиту("Элемент",Элем,0) =1 Тогда
      Сообщить("ок");
 КонецЕсли;

   Wefast
 
13 - 16.05.19 - 13:09
(9) (10) на 7 никто не учил. Приходится код писать на нем раз в год.

(12) так не работает. Не знаю почему

А вот так работает:
    НР2 = СоздатьОбъект("Справочник.НормыРасходов");
    НР2.ВыбратьЭлементыПоРеквизиту("Элемент",Элем,0,0);              
    
    Пока НР2.ПолучитьЭлемент()=1 Цикл
        Если НР2.Владелец = Ном Тогда
            Сообщить("ок");
        КонецЕсли;
    КонецЦикла;

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