Имя: Пароль:
1C
1С v8
Как перебрать в цикле все документы ?
0 aptomilov
 
05.03.12
07:56
Как перебрать в цикле все документы ?
1 kortun
 
05.03.12
07:58
Выборка = Документы.Реализация.Выбрать();
2 Amra
 
05.03.12
07:58
Метаданные+Выбрать+Следующий
3 kortun
 
05.03.12
07:58
Выборка = Документы.Реализация.Выбрать();
Пока Выборка.Следующий() Цикл

КонецЦикла;

так вернее будет
4 Rie
 
05.03.12
07:59
(0) Судя по ответам (1) и (2), существует более одной версии того, что же имел в виду топикстартер под "все документы".
5 aptomilov
 
05.03.12
08:08
все это все интересно про метаданные
6 aptomilov
 
05.03.12
08:19
имелись ввиду все виды документов
7 golden-pack
 
05.03.12
08:20
(5) лол
8 Fragster
 
гуру
05.03.12
08:22
Запрос = Новый Запрос;
ТЗ = "Выбрать Док.Ссылка Из Документ.&ВидДок";

Для каждого метадок из метаданные.докуметы Цикл
 Запрос.Текст = СтрЗаменить(ТЗ,"&ВидДок",МетаДок.Имя);
 Выборка = Запрос.Выполнить().Выбрать();
 Пока Выборка.Следующий() Цикл
   Док = Выборка.Ссылка.ПолучитьОбъект;
   Док.Удалить(Истина);
 КонецЦикла;
КонецЦикла;
9 Fragster
 
гуру
05.03.12
08:22
ну там синтаксические ошибки поправить надо, да
10 Мимохожий Однако
 
05.03.12
08:27
хорошая бомба (8)
11 Ээйч
 
05.03.12
08:29
>>>хорошая бомба (8)
Не, ну а чо? ТС - суровый Челябинец ))
12 aptomilov
 
05.03.12
08:37
бомба шекарная спасибо всем щас запущу гы гы
13 aptomilov
 
05.03.12
08:59
вот полностью раб вариант, но медленно блин
   Запрос = Новый Запрос;
   ТЗ = "Выбрать Док.Ссылка Из Документ.&ВидДок КАК Док";
   Для каждого метадок из метаданные.документы Цикл
       Запрос.Текст = СтрЗаменить(ТЗ,"&ВидДок",МетаДок.Имя);
       Выборка = Запрос.Выполнить().Выбрать();
       Пока Выборка.Следующий() Цикл
           Док = Выборка.Ссылка.ПолучитьОбъект();
           Сообщить("Удаляем документ " + Строка(Док));
           Док.Удалить();
       КонецЦикла;
   КонецЦикла;
14 Stim
 
05.03.12
09:01
быстрее будет только удалить МД в конфигураторе хD
15 Serg_1960
 
05.03.12
09:05
(13) "Запрос в цикле - есть зло"(с) Ща, посмотрю что у меня есть...
16 Maxus43
 
05.03.12
09:08
(13) не запускай пока работу другую не найдёш, запускай в последний день только
17 Serg_1960
 
05.03.12
09:11
(0) Ничего не нашёл, кроме вот этого ("срез последних" для справочника спецификаций по упоминанию в документах):

   ТекстЗапроса =
   "ВЫБРАТЬ
   |    ВсеСпецификации.Ссылка КАК Спецификация,
   |    ВсеСпецификации.ПометкаУдаления КАК ПометкаУдаления,
   |    СрезПоследних.Дата КАК Дата
   |ИЗ
   |    Справочник.СпецификацииНоменклатуры КАК ВсеСпецификации
   |        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
   |            Спецификации.Спецификация КАК Спецификация,
   |            МАКСИМУМ(Спецификации.Дата) КАК Дата
   |        ИЗ
   |";
   
   ЭтоНачало = Истина;
   Начало = "            (";
   Продолжение = "
   |    
   |            ОБЪЕДИНИТЬ
   |    
   |            ";
   
   ИщуТип = Тип("СправочникСсылка.СпецификацииНоменклатуры");
   
   Для Каждого Документ Из Метаданные.Документы Цикл
       Для Каждого Реквизит Из Документ.Реквизиты Цикл
           Если Реквизит.Тип.СодержитТип(ИщуТип) Тогда
               ТекстЗапроса = ТекстЗапроса + ?(ЭтоНачало,Начало,Продолжение) +
               "ВЫБРАТЬ
               |                ТекОбъект." + Реквизит.Имя + " КАК Спецификация,
               |                МАКСИМУМ(ТекОбъект.Дата) КАК Дата
               |            ИЗ
               |                Документ." + Документ.Имя + " КАК ТекОбъект
               |            ГДЕ
               |                ТекОбъект." + Реквизит.Имя + " ССЫЛКА Справочник.СпецификацииНоменклатуры
               |                И ТекОбъект." + Реквизит.Имя + " <> &ПустаяСсылка
               |            
               |            СГРУППИРОВАТЬ ПО
               |                ТекОбъект." + Реквизит.Имя;
               ЭтоНачало = Ложь;
           КонецЕсли;
       КонецЦикла;
       
       Для Каждого Таблица Из Документ.ТабличныеЧасти Цикл
           Для Каждого Реквизит Из Таблица.Реквизиты Цикл
               Если Реквизит.Тип.СодержитТип(ИщуТип) Тогда
                   ТекстЗапроса = ТекстЗапроса + ?(ЭтоНачало,Начало,Продолжение) +
                   "ВЫБРАТЬ
                   |                ТекОбъект." + Реквизит.Имя + " КАК Спецификация,
                   |                МАКСИМУМ(ТекОбъект.Ссылка.Дата) КАК Дата
                   |            ИЗ
                   |                Документ." + Документ.Имя + "." + Таблица.Имя + " КАК ТекОбъект
                   |            ГДЕ
                   |                ТекОбъект." + Реквизит.Имя + " ССЫЛКА Справочник.СпецификацииНоменклатуры
                   |                И ТекОбъект." + Реквизит.Имя + " <> &ПустаяСсылка
                   |            
                   |            СГРУППИРОВАТЬ ПО
                   |                ТекОбъект." + Реквизит.Имя;
                   ЭтоНачало = Ложь;
               КонецЕсли;
           КонецЦикла;
       КонецЦикла;
   КонецЦикла;
   
   ТекстЗапроса = ТекстЗапроса + ") КАК Спецификации
   |        
   |        СГРУППИРОВАТЬ ПО
   |            Спецификации.Спецификация) КАК СрезПоследних
   |        ПО (СрезПоследних.Спецификация = ВсеСпецификации.Ссылка)
   |
   |УПОРЯДОЧИТЬ ПО
   |    ВсеСпецификации.Ссылка.Наименование";
   
   //Сообщить(ТекстЗапроса);
   
   Запрос = Новый Запрос(ТекстЗапроса);
   Запрос.УстановитьПараметр("ПустаяСсылка", Справочники.СпецификацииНоменклатуры.ПустаяСсылка());
18 Maxus43
 
05.03.12
09:13
(17) в типовой УПП есть запросы в цикле, 2 места видел точно) бывает оправданно
19 NcSteel
 
05.03.12
09:14
(17) У тебя нет УДАЛИТЬ. Исправься пожалуйста. )
20 Serg_1960
 
05.03.12
09:39
(19) "Удалить"? Что удалить? Расшифруй :(
21 Serg_1960
 
05.03.12
09:40
+ Пятница, однако ведь, закончилась :(
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.