Имя: Пароль:
1C
 
Реквизиты документа
0 avesta
 
19.02.08
12:58
Мне нужно выбрать те реквизиты данного документа, по типу которого существует документ в конфе. Делаю это так:

МетаданныеДокумента = ДокументСсылка.Метаданные();
   
Для Каждого Реквизит ИЗ МетаданныеДокумента.Реквизиты Цикл
   ТипыРеквизита = Реквизит.Тип.Типы();
   Для Каждого ТекущийТип ИЗ ТипыРеквизита Цикл
   МетаданныеРеквизита = Метаданные.НайтиПоТипу(ТекущийТип);
   Если МетаданныеРеквизита<>Неопределено И    
            Метаданные.Документы.Содержит(МетаданныеРеквизита)Тогда
       
              ЗначениеРеквизита = ДокументСсылка[Реквизит.Имя];

       КонецЕсли;            
   КонецЦикла;
КонецЦикла;

Но работает долго, так как перебираются все реквизиты дока, а потом еще по табличной части проверить надо. Подскжите может как ускорить работу алгоритма?
1 zbv
 
19.02.08
13:01
(0) не понял... что надо?
2 Defender aka LINN
 
19.02.08
13:06
Странный алгоритм. Тогда уж так лучше:

Значение = Неопределено;
МетаданныеРеквизита = Метаданные.НайтиПоТипу(ТипЗнч(ДокументСсылка[Реквизит.Имя]));
Если МетаданныеРеквизита <> Неопределено Тогда
   Если Метаданные.Документы.Содержит(МетаданныеРеквизита) Тогда
       Значение = ДокументСсылка[Реквизит.Имя];
   КонецЕсли;
КонецЕсли;
3 avesta
 
19.02.08
14:08
(2)ну можна и так, но проблема в том что он в цикле выбирает поочереди реквезиты дока. А нсли реквизитов будет 1000 это будет долго. Вот а как ускорить работу?
4 avesta
 
19.02.08
14:08
(2) может как то без цикла можна обойтись?
5 Defender aka LINN
 
19.02.08
14:15
(3) А у тебя еще и тыпы перебирает.
Ты лучше скажи - нафига тебе это вообще?
6 avesta
 
19.02.08
14:29
(5) СтруктураПодчиненностиДокумента. Долго работает. Нужно упростить алгоритм. А в голову пока ничего не работает. Ускорит нужно
7 tsr
 
19.02.08
14:31
(6) НайтиПоСсылкам
8 avesta
 
19.02.08
14:36
(7) По каким ссылкам?
9 в_пагонах
 
19.02.08
15:20
НайтиПоСсылкам (FindByRef)
Синтаксис:
НайтиПоСсылкам(<Список ссылок>)
Параметры:
<Список ссылок> (обязательный)
Тип: Массив. Массив со списком ссылок на объекты, ссылки на которые нужно найти.
Возвращаемое значение:
Тип: ТаблицаЗначений. Возвращает ссылки на найденные объекты в виде ТаблицаЗначений, состоящей из колонок с индексами: 0 - искомая ссылка; 1 - ссылка на объект, если найденная ссылка соответствует объектной таблице или значение, идентифицирующее запись необъектной таблицы; 2 - объект метаданных, которому соответствуют данные, в которых найдена ссылка.
Описание:
Осуществляет поиск ссылок на объекты, переданные в параметре <Список ссылок>.
Пример:
Ссылки = НайтиПомеченныеНаУдаление();
ТабСсылок = НайтиПоСсылкам(Ссылки);
Для Каждого Ссылка из ТабСсылок Цикл
   Сообщить ("" + СокрЛП(Ссылка[0]) + " " + СокрЛП(Ссылка[1]));
КонецЦикла;
10 avesta
 
20.02.08
09:46
(9) да здесь это не поможнт. Мне же нужно найти реквизиты документа тип которых ДокументСсылка.