Имя: Пароль:
1C
 
Подскажите простой способ как перебрать все документы базы?
0 Капюшон
 
23.06.09
13:08
В базе документы разных видов. Как в список значений засунуть абсолютно все?
1 bvn13
 
23.06.09
13:09
есть решение
2 IronDemon
 
23.06.09
13:09
Зачем?
3 Капюшон
 
23.06.09
13:09
(1)Я знаю как через объект метаданные это сделать. Перебрать все виды доков и для каждого из них выборку сделать. А может както запросом можно?
4 Живой Ископаемый
 
23.06.09
13:10
гы...
5 mikecool
 
23.06.09
13:10
(3) можно, циклом по метаданным собрать текст запроса
6 Капюшон
 
23.06.09
13:11
(2)У меня есть две базы - живая и бекап 2 дневной давности. в свежей базе нечайно сделали групповое проведение доков так, Что даже непроведённые документы провели. ,Я хочу  через ОЛЕ подсоединиться к старой базе и пройтись по всем документам. чтобы те, что стали проведёнными в новой базе, снять с проведения
7 Живой Ископаемый
 
23.06.09
13:12
Может лучше универсальныой выгурзкой-азгрузкой через ХМЛ по каждому виду?
8 Капюшон
 
23.06.09
13:14
(7)может. боюсь только. потомучто они задним числом правят документы нередко. а отследить их сложно. поскольку они по сети из разных городов сидят.
9 bvn13
 
23.06.09
13:41
(5) я же говорю - (1)

   Запрос=новый Запрос;
   Запрос.Текст="";
   
   ТЗ_выборкаДок = "
   |ВЫБРАТЬ Ссылка, Дата, ПометкаУдаления, Проведен
   |ИЗ Документ.";
   
   ТЗ_объединение = "
   |
   |ОБЪЕДИНИТЬ ВСЕ
   |";
   
       н=0;
       для каждого документ из метаданные.документы цикл    
           н=н+1;
           если н<>1 тогда
               Запрос.Текст=Запрос.Текст + ТЗ_объединение + ТЗ_выборкаДок + документ.имя;
           иначе
               Запрос.Текст=Запрос.Текст + ТЗ_выборкаДок + документ.имя;
           конецЕсли;
           
       конецЦикла;

       док = Запрос.Выполнить().Выбрать();
       пока док.Следующий() цикл


ну и так далее...
10 Живой Ископаемый
 
23.06.09
13:47
ну... при некоторых услових это решение может и не работать... :)
11 bvn13
 
23.06.09
13:48
(10) например? не соображу..
12 Живой Ископаемый
 
23.06.09
13:48
например если в этом запросе в итоге будет больше 256 таблиц, а база клиент-серверная...
13 bvn13
 
23.06.09
13:51
(12) :) ну это еще надо постараться....:) у меня не доходило до этого.
14 SMakcik
 
23.06.09
13:52
Можно создать общий журнал и по нему пройтись.
15 Капюшон
 
23.06.09
13:54
(14)тоже вариант. спасибо )
16 Капюшон
 
23.06.09
13:54
(13)Ваш пример быстрее работает, чем

   СписокВидовДокументов = Новый СписокЗначений;
   Для Каждого ДокументКонфигурации из Метаданные.Документы Цикл
       СписокВидовДокументов.Добавить(ДокументКонфигурации.Имя);
   КонецЦикла;
   СписДок=Новый СписокЗначений;
   Для Инд=0 По СписокВидовДокументов.Количество()-1 Цикл
       ТекВид=СписокВидовДокументов.Получить(Инд).Значение;
       ТекДок=Документы[ТекВид].Выбрать(,);
       Пока ТекДок.Следующий() Цикл
           СписДок.Добавить(ТекДок.Ссылка);
       КонецЦикла;
   КонецЦикла;
17 SMakcik
 
23.06.09
14:24
(16) естно что запрос быстрей будет работать