Сразу в карьер.
Собственно все доки можно получить обойдя в цикле Метаданные.Документы, но нельзя отобрать по дате. Запросом можно отобрать по дате, но только определенный документ.
Т.о. мы просто загребем имена доков из метаданных и в цикле будет подставлять в запрос и обрабатывать циклом результат.
Собственно код для УФ:
&НаСервере
Процедура ПометитьВсеДокументыНаУдалениеНаСервере()
МассивДокументов=Метаданные.Документы;
НайденыДоки=Ложь;
Для каждого СтрМас Из МассивДокументов Цикл
ДокТип=СтрМас.Имя;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| "+ДокТип+".Ссылка
|ИЗ
| Документ."+ДокТип+" КАК "+ДокТип+"
|Где
| "+ДокТип+".Дата Между &ДатаНач И &ДатаКон";
Запрос.УстановитьПараметр("ДатаНач", ЭтотОбъект.ДатаНач);
Запрос.УстановитьПараметр("ДатаКон", ЭтотОбъект.ДатаКон);
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();
Если ВыборкаДетальныеЗаписи.Количество() > 0 Тогда
НайденыДоки=Истина;
Иначе
Продолжить;
КонецЕсли;
КолвоДоков=0;
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ТекОб = ВыборкаДетальныеЗаписи.ссылка.ПолучитьОбъект();
Если ТекОб.ПометкаУдаления И ЭтотОбъект.УстановитьПометку Тогда
Продолжить;
ИначеЕсли НЕ ТекОб.ПометкаУдаления И НЕ ЭтотОбъект.УстановитьПометку Тогда
Продолжить;
КонецЕсли;
Попытка
ТекОб.УстановитьПометкуУдаления(ЭтотОбъект.УстановитьПометку);
//Сообщить(""+ТекОб+" "+?(ЭтотОбъект.УстановитьПометку,"был бы помечен на удаление","пометка на удаление была бы снята"))
Исключение
Сообщить("Документ " + ТекОб + " не удалось "+?(ЭтотОбъект.УстановитьПометку,"пометить на удаление","снять пометку на удаление")+", по причине " + ОписаниеОшибки());
КонецПопытки;
КолвоДоков=КолвоДоков+1;
КонецЦикла;
Если КолвоДоков > 0 Тогда
Сообщить(""+ДокТип+" обработанно "+КолвоДоков+" документа(ов)");
КонецЕсли;
КонецЦикла;
Если НЕ НайденыДоки Тогда
Сообщить("Документы за выбранный период не найдены");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПометитьВсеДокументыНаУдаление(Команда)
ОчиститьСообщения();
ПометитьВсеДокументыНаУдалениеНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ЭтотОбъект.ДатаКон=ТекущаяДата();
ЭтотОбъект.УстановитьПометку=Истина;
КонецПроцедуры
Все это в модуле формы. На форме кнопка "ПометитьВсеДокументыНаУдаление" и даты начала/конца. Также, на всякий случай галка снять или поставить пометку.
Комментариев нет:
Отправить комментарий