![]() |
![]() |
![]() |
|
Можно ли удалить историю периодического реквизита? | ☑ | ||
---|---|---|---|---|
0
gafsa
24.03.09
✎
10:49
|
Можно ли удалить историю периодического реквизита справочника программно?
|
|||
1
andrewalexk
24.03.09
✎
10:49
|
:)
ты удивишься... |
|||
2
Нуф-Нуф
24.03.09
✎
10:49
|
да. но платно
|
|||
3
Восточный Парень
24.03.09
✎
10:49
|
Можно
|
|||
4
Восточный Парень
24.03.09
✎
10:50
|
Только после фотки.
|
|||
5
Нуф-Нуф
24.03.09
✎
10:50
|
могу сделать всего за 1000р без ограничения на количество значений реквизитов
|
|||
6
ДенисЧ
24.03.09
✎
10:50
|
Нельзя. Это нарушение правил информационной безопасности.
|
|||
7
zak555
24.03.09
✎
10:50
|
(0) у всего справочника?
|
|||
8
Попытка1С
24.03.09
✎
10:56
|
Пример:
Процедура ЧисткаКурсов() Вал = СоздатьОбъект("Справочник.Валюты"); // Позиционируем созданный объект Вал по известному коду Вал.НайтиПоКоду(1); Если Вал.Выбран() = 1 Тогда Доллар = Вал.ТекущийЭлемент(); Иначе Предупреждение("Не найдена валюта!"); Возврат; КонецЕсли; ПерВал = СоздатьОбъект("Периодический"); ПерВал.ИспользоватьОбъект("Текущ_курс".Доллар); ПерВал.ВыбратьЗначения(); Пока ПерВал.ПолучитьЗначение() = 1 Цикл Курс = ПерВал.Значение; ДатаКурса = ПерВал.ДатаЗнач; Если Курс < 1000 Тогда ПерВал.Удалить(); КонецЕсли; КонецЦикла; КонецПроцедуры |
|||
9
gafsa
24.03.09
✎
10:56
|
У всего справочника.
|
|||
10
SUA
24.03.09
✎
10:58
|
(9) Просьба обратьть внимание на (4). По многочисленным наблюдениям, после публикации фотографии в личных данных шансы на получение конструктивного (и даже в виде уже готового кода) ответа резко возрастают.
|
|||
11
mikecool
24.03.09
✎
11:00
|
(5) чет подумалось - а установленные документом как убрать? туплю :)
|
|||
12
zak555
24.03.09
✎
11:01
|
(9) можно и проще...
заходим в конфигуратор ищем справочник -> реквизиты, у которых не должно быть истории - снимай галку - сохраняемся - обрабно высталяем - сохраняемся и радуемся! НО останется на последную дату значения - дата будет 1980 г, если изменить дату столетия 2024 - то тогда будут уставнолены реквизиты на новую дату! |
|||
13
zak555
24.03.09
✎
11:01
|
(11) распроводить!
|
|||
14
mikecool
24.03.09
✎
11:01
|
(13) это понятно... вот как без распроведения?
delete from 1sconst не предлагать :) |
|||
15
zak555
24.03.09
✎
11:02
|
+ (12) - делать на копиии!
(14) - (12) |
|||
16
1st
24.03.09
✎
11:03
|
Приведенный выше пример подойдет, но нужно будет учесть моменты: если элемент -группа, или если значение установлено документом? Удаление нужно поместить в блок "Попытка Исключение КонецПопытки;"
Для свертки баз широко используется такая процедура: Процедура УдалениеЗначенийПериодическихРеквизитов(ДатаСвертки) Сообщить(Строка(ТекущееВремя())+" Удаляем значения периодических реквизитов в справочниках до даты свертки"); Периодический = СоздатьОбъект("Периодический"); Для т = 1 По Метаданные.Справочник() Цикл Состояние("Удаление значений периодических реквизитов справочника "+Метаданные.Справочник(т).Идентификатор); // Список периодических реквизитов ПериодическиеРеквизиты = СоздатьОбъект("СписокЗначений"); Для п = 1 По Метаданные.Справочник(т).Реквизит() Цикл Если Метаданные.Справочник(т).Реквизит(п).Периодический = 1 Тогда // Есть периодический реквизит ПериодическиеРеквизиты.ДобавитьЗначение(Метаданные.Справочник(т).Реквизит(п).Идентификатор); КонецЕсли; КонецЦикла; Если ПериодическиеРеквизиты.РазмерСписка() > 0 Тогда Сообщить("Удаление значений периодических реквизитов справочника "+Метаданные.Справочник(т).Идентификатор); Справ = СоздатьОбъект("Справочник."+Метаданные.Справочник(т).Идентификатор); Если Метаданные.Справочник(т).Владелец.Выбран() = 1 Тогда // подчиненный справочник (необходимо сначала выбрать владельца) Владельцы = СоздатьОбъект("Справочник." + Метаданные.Справочник(т).Владелец.Идентификатор); Владельцы.ВыбратьЭлементы(); Пока Владельцы.ПолучитьЭлемент() = 1 Цикл Справ.ИспользоватьВладельца(Владельцы.ТекущийЭлемент()); Справ.ВыбратьЭлементы(); Пока Справ.ПолучитьЭлемент() = 1 Цикл Для СчетчикЦикла = 1 По ПериодическиеРеквизиты.РазмерСписка() Цикл СтрокаСостояния(); ИдРекв = ПериодическиеРеквизиты.ПолучитьЗначение(СчетчикЦикла); //Сообщить("Текщий период. реквизит = "+ИдРекв); Периодический.ИспользоватьОбъект(Строка(ИдРекв), Справ.ТекущийЭлемент()); // оставляем только одно значение периодического реквизита до даты свертки // остальные удаляем Периодический.ОбратныйПорядок(1); Периодический.ВыбратьЗначения(, ДатаСвертки); СчетчикЗначений = 0; Пока Периодический.ПолучитьЗначение() = 1 Цикл Если СчетчикЗначений > 0 Тогда Периодический.Удалить(); КонецЕсли; СчетчикЗначений = СчетчикЗначений + 1; КонецЦикла; КонецЦикла; КонецЦикла; КонецЦикла; Иначе // обычный справочник Справ.ВыбратьЭлементы(); Пока Справ.ПолучитьЭлемент() = 1 Цикл Для СчетчикЦикла = 1 По ПериодическиеРеквизиты.РазмерСписка() Цикл СтрокаСостояния(); ИдРекв = ПериодическиеРеквизиты.ПолучитьЗначение(СчетчикЦикла); //Сообщить("Текщий период. реквизит = "+ИдРекв); Попытка //т.к. для групп многие реквизиты не доступны Периодический.ИспользоватьОбъект(ИдРекв, Справ.ТекущийЭлемент()); Исключение //Сообщить("Невозможно получить реквизит ["+ИдРекв+"] для элемента "+ Справ.Код); Продолжить; КонецПопытки; // оставляем только одно значение периодического реквизита до даты свертки // остальные удаляем Периодический.ОбратныйПорядок(1); Периодический.ВыбратьЗначения(, ДатаСвертки); СчетчикЗначений = 0; Пока Периодический.ПолучитьЗначение() = 1 Цикл Если СчетчикЗначений > 0 Тогда Попытка //нельзя удалить значения, установленные документами Периодический.Удалить(); Исключение //ОписаниеОшибки() КонецПопытки; КонецЕсли; СчетчикЗначений = СчетчикЗначений + 1; КонецЦикла; КонецЦикла; КонецЦикла; КонецЕсли; КонецЕсли; КонецЦикла КонецПроцедуры // УдалениеЗначенийПериодическихРеквизитов() |
|||
17
zak555
24.03.09
✎
11:05
|
(16) а если Спр3 подчинен Спр2, подчиненный Спр1 ???
|
|||
18
1st
24.03.09
✎
11:07
|
(17)
В приведенной процедуре обрабатываются все справочники независимо от подчинености. Да и подчиненность здесь не причем, мы же просто значения периодических реквизитов очищаем. |
|||
19
andrewalexk
24.03.09
✎
11:09
|
:)
ну все прощай база Дарьи.. |
|||
20
mikecool
24.03.09
✎
11:09
|
(15) это не катит для выборочного удаления
|
|||
21
у лю 427
24.03.09
✎
11:11
|
приложил совет zak555 из (13) к Ж.пе соседа - ой, нехорошо будет.... бедный сосед(ка)
|
|||
22
gafsa
24.03.09
✎
11:15
|
спасибо,друзья!
|
|||
23
zak555
24.03.09
✎
11:16
|
(21) в (12) ?
|
|||
24
zak555
24.03.09
✎
11:16
|
(21) а (12) ?
|
|||
25
у лю 427
24.03.09
✎
11:22
|
(12) - фигня, обычная секир-башка....
|
|||
26
FAM
24.03.09
✎
11:24
|
угу, особенно после перепроведения документов
|
|||
27
zak555
24.03.09
✎
11:26
|
(25) почему?
(26) про перепроведение доков ничего не говорил! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |