Имя: Пароль:
1C
 
Перебор элеменотв справочника или запрос
0 Anast_I
 
31.10.06
14:13
Надо заполнить табличную часть документа (Фирмы, Фактические адреса и Контакты) информацией из справочников Фирмы, Фактические адреса и контакты. Контакты подчинен справочнику ФактическиеАдреса, ФактическиеАдреса подчине справочнику Фирмы.
1 Anast_I
 
31.10.06
14:13
Что лучше использовать Запрос или перебор справочник и ИспользоватьВладельца()?
2 povar
 
31.10.06
14:14
перебор
3 Anast_I
 
31.10.06
14:14
Почему?
4 povar
 
31.10.06
14:15
(3) потому, что лучше
5 CrecerRu
 
31.10.06
14:15
запросом быстрее будет
6 Конь в пальто
 
31.10.06
14:16
не слушай печенье, перебирай ))
7 Паладин
 
31.10.06
14:17
перебор
8 Omega
 
31.10.06
14:20
а расскажите мне, как это сделать запросом?
9 Темный Эльф
 
31.10.06
14:20
запросу больше памяти надо, перебор больше проц и винт грузит. Если машина хорошая, запрос быстрее будет.
10 Ёпрст2
 
31.10.06
14:25
(8) Дык .. как обычно ...Ты всю иерархию хошь видеть?
11 Anast_I
 
01.11.06
09:54
Подскажите, как это сделать, у меня лишние строчки получаются
12 Dark_Omen
 
01.11.06
09:55
(0) запрос
13 Подпол
 
01.11.06
09:56
убери лишнии
14 Ёпрст2
 
01.11.06
09:57
(11) Код в студию!
15 Эльниньо
 
01.11.06
10:05
(5)(12) Докажите.
16 povar
 
01.11.06
10:08
+(14) код с фото
17 Fynjy
 
01.11.06
10:36
На dbf - перебор с любыми условиями
На sql - запрос если со сложными условиями ... перебор если с простыми
А ваще счас гламурно с 1С++ работать!
18 Anast_I
 
01.11.06
11:51
Процедура Заполнить()  
   
СпрК=СоздатьОбъект ("Справочник.Контакты");
СпрА=СоздатьОбъект ("Справочник.ФактическиеАдреса");
СпрФ=СоздатьОбъект ("Справочник.Фирмы");  
                                           

     СпрФ.ВыбратьЭлементы();
             
     Пока СпрФ.ПолучитьЭлемент()=1 Цикл
            НоваяСтрока();
         Фирма=СпрФ.ТекущийЭлемент();
         
         СпрА.ИспользоватьВладельца(Фирма);
         СпрА.ВыбратьЭлементы();
            Пока СпрА.ПолучитьЭлемент()=1 Цикл
                  НоваяСтрока();
              ФактическийАдрес=СпрА.ТекущийЭлемент();
             
         СпрК.ИспользоватьВладельца(ФактическийАдрес);    
             СпрК.ВыбратьЭлементы();
            Пока СпрК.ПолучитьЭлемент()=1 Цикл
                  НоваяСтрока();
              Контакт=СпрК.ТекущийЭлемент();  
             
      КонецЦикла;
     КонецЦикла;
    КонецЦикла;
   
КонецПроцедуры
19 zbv
 
01.11.06
11:58
(18) а зачем каждый раз НоваяСтрока()?
20 Эльниньо
 
01.11.06
11:58
(18) И что получилось? :)
21 Ёпрст2
 
01.11.06
11:59
(18) Ну и ? И чего не нравится ?
22 Simod
 
01.11.06
12:04
(18) При условии, что нет проверок, все это можно заменить на:

СпрК=СоздатьОбъект ("Справочник.Контакты");
СпрК.ВыбратьЭлементы(0); // Смотрим Синтаксис помошник
Пока СпрК.ПолучитьЭлемент() = 1 Цикл
   //...
КонецЦикла;
23 Ёпрст2
 
01.11.06
12:08
(22) Дык.. она еще и другие реквизиты, с других справочников тащит ... вот только задача её не ясна ... :)
24 КонецЦикла
 
01.11.06
12:10
На СКЛ может быть и запрос, хз
25 Simod
 
01.11.06
12:14
(23) Их можно получить через Владелец.

А вообще-то информации от автора мало.
26 Anast_I
 
01.11.06
12:38
Справочник Контакты подчинен справочнику ФактическиеАдреса, Фактические Адреса подчинен справочнику Фирмы. Надо Заполнить документ имеющейся информацией в этих справочниках. Информация в табличную часть документа должна быть выбрана полностью, т.е. должны быть выбраны все комбинации элементов
27 Эльниньо
 
01.11.06
12:39
Процедура Заполнить()  
   
СпрК=СоздатьОбъект ("Справочник.Контакты");
СпрА=СоздатьОбъект ("Справочник.ФактическиеАдреса");
СпрФ=СоздатьОбъект ("Справочник.Фирмы");  
СпрФ.ВыбратьЭлементы();
Пока СпрФ.ПолучитьЭлемент()=1 Цикл
    СпрА.ИспользоватьВладельца(СпрФ.ТекущийЭлемент());
    СпрА.ВыбратьЭлементы();
    Пока СпрА.ПолучитьЭлемент()=1 Цикл
        СпрК.ИспользоватьВладельца(СпрА.ТекущийЭлемент());    
        СпрК.ВыбратьЭлементы();
        Пока СпрК.ПолучитьЭлемент()=1 Цикл
              НоваяСтрока();
              Фирма=СпрФ.ТекущийЭлемент();
              Контакт=СпрК.ТекущийЭлемент();  
              ФактическийАдрес=СпрА.ТекущийЭлемент();                
      КонецЦикла;
     КонецЦикла;
    КонецЦикла;
КонецПроцедуры
28 Anast_I
 
01.11.06
12:50
(27) Спасибо
29 Ёпрст2
 
01.11.06
12:51
(25),(27) при таком раскладе не попадут комбинации, где нету подчиненных элементов...так что, с учетом (26) в (18) и есть решение ..
30 Ёпрст2
 
01.11.06
12:55
+29 только мальца подправить надо ...либо запросом сделать, чтоб сразу видеть структуру вида:

Владелец-Владелец-Подчиненный
Владелец-Владелец-пусто
Владелец-пусто-пусто ....