7.7 подчинённый справочник

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем login-l, 24 июл 2006.

  1. TopicStarter Overlay
    login-l
    Offline

    login-l Гость Гость

    Есть справочник СС = СоздатьОбъект("Справочник.СоответствияСистем");
    и связанный с ним справочник СД = СоздатьОбъект("Справочник.СоответствияДоговоров");

    Мне нужно получить значение реквизита "Договор"из связанного справочника "Справочник.СоответствияДоговоров"
    Перебирая элементы основного справочника "Справочник.СоответствияСистем".

    я попытался сделать это таким образом

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

    Tiger Опытный в 1С

    Регистрация:
    12 июл 2006
    Сообщения:
    489
    Симпатии:
    0
    Баллы:
    26
    НайтиПоРеквизиту(<?>,,);
    Синтаксис:
    НайтиПоРеквизиту(<ИмяРеквизита>,<Значение>,<ФлагГлобальногоПоиска>)
    Назначение:
    Найти элемент справочника по значению реквизита.
    Возвращает: 1 - если действие выполнено;
    0 - если действие не выполнено (элемент не найден).
    Параметры:
    <ИмяРеквизита> - строка с наименованием реквизита;
    <Значение> - значение реквизита для поиска;
    <ФлагГлобальногоПоиска> - флаг поиска:
    0 - поиск выполняется в пределах подчинения справочника,
    1 - поиск выполняется по всему справочнику.
    Замечание:
    Метод можно использовать только для реквизитов с установленным признаком ''Сортировка''.
    Метод можно использовать только для объектов, созданных функцией СоздатьОбъект.


    Теперь обратите внимание, что у Вас ФлагГлобальногоПоиска равен 1, а надо 0.
  3. TopicStarter Overlay
    Гость
    Offline

    Гость Гость Гость



    Попробовал.
    с нулём вообще ничего не находит.
  4. Tiger
    Offline

    Tiger Опытный в 1С

    Регистрация:
    12 июл 2006
    Сообщения:
    489
    Симпатии:
    0
    Баллы:
    26
    Вот именно такой вариант не работает?
    Код:
    СС = СоздатьОбъект("Справочник.СоответствияСистем");
    СД = СоздатьОбъект("Справочник.СоответствияДоговоров");  
    Дог="";
    Если СС.НайтиПоРеквизиту("Контрагент",Док.Контрагент,1)=1 Тогда              
    СД.ИспользоватьВладельца(СС.ТекущийЭлемент());  
    Если СД.НайтиПоРеквизиту("Договор","Услуги связи",0)=1 Тогда
    Дог = СД.ПолноеНаименование();    
    КонецЕсли;
    КонецЕсли;
    
    
    
    А поле Договор в справочнике СоответствияДоговоров точно текстовое?
  5. TopicStarter Overlay
    Гость
    Offline

    Гость Гость Гость

    Да, поле текстовое.
    Вариант, который вы предлагаете возвращает одной и то же значение реквизита "Договор".
    Т.е. связка справочников не работает.
  6. TopicStarter Overlay
    Гость
    Offline

    Гость Гость Гость

    получилось. может комуто полезным будет

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

    Tiger Опытный в 1С

    Регистрация:
    12 июл 2006
    Сообщения:
    489
    Симпатии:
    0
    Баллы:
    26
    Тоже приемлемый вариант, но странно следующее:
    1) после
    СД.ВыбратьЭлементы(1);
    Напрашивается
    СД.ПолучитьЭлемент();

    2) а если договоров несколько. В первом варианте по тексту было понятно что требовался не первый, а вполне конкретный договор.

    З.Ы. Всё таки непонятно почему исходный вариант не работает. Может у кого из гуру ещё мысли есть?

Поделиться этой страницей