Вход | Регистрация

Форумы на Кубань.Ру


1С:Предприятие ::

Метки: 

Обработка для истории значения реквизита

Ø
Я
   G
16.02.01 - 11:26
А есть ли у кого обработка для очистки истории значения реквизита до определенной даты
 
  Рекламное место пустует
   Борхес
1 - 16.02.01 - 11:48
СПР=СоздатьОбъект("Справочник.МойСправочник");
СПР.ВыбратьЭлементы();
Пока СПР.ПолучитьЭлемент()=1 Цикл
    СПР.ПерРекв.ВыбратьЗначения(,ДатаДо);
    Пока СПР.ПерРекв.ПолучитьЗначение()=1 Цикл
        Спр.ПерРекв.Удалить();
    КонецЦикла;
КонецЦикла;
----
5 минут по матрице трудозатрат от Пуделя.
   G
2 - 16.02.01 - 11:50
Я имел ввиду готовую УНИВЕРСАЛЬНУЮ обработку наподобие SETATTRS.ERT с ИТС
   Dag
3 - 16.02.01 - 11:51
и что, это будет работать? без объекта Периодический?
   Борхес
4 - 16.02.01 - 11:53
2(3) Сорри, конечно с объектом "Периодический".
   Dag
5 - 16.02.01 - 12:00
2(4) А жаль
   Пудель
6 - 16.02.01 - 12:06
G, какой Вы ленивый...
   Camino
7 - 16.02.01 - 12:07
Обработки нет, но можешь ее сам написать, используя объект "Периодический" см. доку.
   G
8 - 16.02.01 - 12:08
Написать могу, не хочу изобретать велосипед
   Пудель
9 - 16.02.01 - 12:14
G, ну даже если через метаданные выбирать справочник, который надо очистить, ну это, скажем, 10 минут вместо 1 пишется. Почта дольше идти будет. И потренируешься, это полезно.
А ещё я хам. Девочек сегодня двух обидел.
   Хоменко Валерий
10 - 16.02.01 - 12:36
2G
Когда-то я это дело рисовал, вот процедура:
Сделано по принципу "Работает - не трогай", так что просьба не бить :)
-
// Очищает значения всех периодических реквизитов справочников.
Процедура УдалитьИсториюСправочников()
Для i = 1 По Метаданные.Справочник() Цикл
ТекСправ = Метаданные.Справочник(i);
ЧислоРеквСправочника=Метаданные.Справочник(i).Реквизит();
Если ЧислоРеквСправочника > 0 Тогда
Для j = 1 По ЧислоРеквСправочника Цикл
Если	ТекСправ.Реквизит(j).Периодический=1 Тогда
СправИмя=""+ТекСправ.Идентификатор;
РеквИмя=""+ТекСправ.Реквизит(j).Идентификатор;
Сообщить("В справочнике: "+СправИмя+" обнаружен периодический реквизит: "+РеквИмя);
Спр=СоздатьОбъект("Справочник."+ТекСправ.Идентификатор);
Спр.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлемент()=1 Цикл
ТекРекв=Спр.ТекущийЭлемент();
ТекРеквНаДень = СоздатьОбъект("Периодический");
ТекРеквНаДень.ИспользоватьОбъект(РеквИмя,ТекРекв);
ТекРеквНаДень.ВыбратьЗначения(Дата1,Дата2);
ТекРеквВКонце=ЗначениеИзСтрокиВнутр(Шаблон("[ЗначениеВСтрокуВнутр("+"ТекРекв."+ТекСправ.Реквизит(j).Идентификатор+".Получить(Дата2)"+")]"));
Пока ТекРеквНаДень.ПолучитьЗначение() = 1 Цикл
ТекРеквНаДень.Удалить();
Сообщить("В справочнике "+СправИмя+" удаляется значение истории элемента "+ТекРекв.Наименование+" "+ТекРеквНаДень.Значение+" за дату "+ТекРеквНаДень.ДатаЗнач);
КонецЦикла;
ТекРеквНаДень.ДатаЗнач = Дата2 //Сохранить последнее значение периода с последней датой
ТекРеквНаДень.Значение = ТекРеквВКонце ;
ТекРеквНаДень.Записать();
ТекРеквНаДень = 0;
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
 
  Рекламное место пустует
   G
11 - 16.02.01 - 12:46
To Хоменко Валерий
Спасибо
   SergVK
12 - 16.02.01 - 13:31
2(10): Вот ответил чел четко и по существу, без всяких разглагольствований. Спасибо, уже второй раз получаю ценную информацию.



Список тем форума

Форум Территория 1С

Рекламное место пустует   Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует