gifts2017

Проверка использования помеченных на удаление элементов справочников

Опубликовал Александр Булейко (big60) в раздел Администрирование - Чистка базы

Обработка для администраторов "семёрошных" баз. Позволяет в заданном периоде выявить, в каких документах используются помеченные на удаление элементы справочников.

Часто бывает, что заводится лишний элемент справочника. Потом он помечается на удаление, но наши "белые и пушистые" бухгалтеры продолжают использовать его в документах. То ли им лень искать правильный элемент, то ли просто вводят документы копированием... В конце квартала я запускаю эту обработку и заставляю бухов исправлять документы.

Алгоритм далёк от оптимальности, работает медленно, но раз в квартал можно и потерпеть

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
UseDeleted.ert
.ert 48,50Kb
10.10.14
167
.ert 48,50Kb 167 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Владислав Чинючин (vcv) 22.06.10 14:38
Воспитывать себя надо, что бы такие неоптимальные алгоритмы не писать автоматически, на инстинктах. Не касательно алгоритма как такового:

за вот такое:
Пока док.Получитьдокумент() = 1 Цикл
	//Сообщить(глПредставлениеДокумента(док.ТекущийДокумент()));
	Для ёё = 1 по Метаданные.Документ(док.Вид()).РеквизитШапки() Цикл
		имяРекв = Метаданные.Документ(док.Вид()).РеквизитШапки(ёё);

нужно бить канделябром по морде и линейкой по пальцам. Посмотри замером производительности, сколько времени тратится на бесполезные вызовы док.Вид() и Метаданные.Документ(док.Вид()), которые нужно было вынести вне цикла по реквизитам документа. А еще лучше подготовить и запомнить в таблице значений до перебора документов. И при количестве документов больше полусотни за месяц это уже принесет выигрыш в быстродействии. А уж аналогичная конструкция в переборе всех реквизитов всех строк всех документов....
Я уж помолчу про то, что после того, как ты обратился для каждого реквизита документа к его виду, к метаданным документа, получил значение реквизита, проверил его на заполненность и только после всего этого проверяешь тип реквизита на то, что он документ/справочник и его вообще стоило проверять.
2. Александр Булейко (big60) 22.06.10 15:20
(1) мдяяяяяяяяя Жаль, нет уже у нас НКВД. Цены б тебе не было...
А теперь представь бухгалтера, который, практически на общественных началах, админит базу. Есть у него время думать об эффективности алгоритма? Да я лучше лишние 5 минут подожду, пока машина работает (хоть передохну), чем сам поработаю эти 5 минут.
А замечание, тем не менее, дельное. Учту, спасибо
3. Александр Булейко (big60) 22.06.10 16:25
(1) И кстати, за квартал у нас вводится что-то порядка 5-6 тыс. документов. Обработка крутится 4-5 минут.
4. Владислав Чинючин (vcv) 22.06.10 17:45
(2) Вот они, последствия "доступно и всерьез", последствия 100% уровня пиратства прошлого века... Почему-то представить терапевта, который "практически на общественных началах" скальпелем машет в операционной, ни кто не может. А бухгалтера на админстве базы с мелким программежом - легко.
(3) А у меня порядка 25-28 тысяч документов в месяц. Но дело не в "пиписькомерстве" количеством документов, а в том, что описанные в (1) ошибки бухгалтеру простительны, а "1Снику" и тем более "программисту" - категорически нет.
5. Дмитрий Дрейцер (MadDAD) 23.06.10 02:27
Обработке, действительно, далеко до идеала, но идея хорошая.
6. Dmitry Po (DMon) 23.06.10 05:31
Что-то я не пойму.
А чем плохо НайтиСсылки(<Объекты>,<Ссылки>), перед этим создав список помеченных объектов за период? Или это предложен альтернативный вариант?

(сорри, не качал, не смотрел. Вывод сделал по первому посту)
7. Владислав Чинючин (vcv) 23.06.10 07:23
(6) А что такое "список помеченных объектов за период", когда помеченным объектом обычно бывает элемент справочника, к которому понятие "период" не применимо. Или помеченный на удаление документ произвольной даты, использованный в реквизите документы интересующего периода.
К тому же, в произвольной конфигурации, структуры которой ты не знаешь, придется для создания списка помеченных на удаление объектов перебирать все справочники конфигурации и все документы. А это даже в относительно небольшой базе может быть много и долго.
8. Александр Булейко (big60) 23.06.10 08:02
(4) Сделай лучше, и будет тебе мой низкий поклон
9. Dmitry Po (DMon) 23.06.10 08:25
(7) 1. "помеченным объектом обычно бывает элемент справочника, к которому понятие "период" не применимо". Ха! Ещё как применимо. К примеру, есть периодический реквизит, который поменялся за указанный период. Так вот, нам надо именно указать этот элемент справочника, а те, которые не имеют никакого влияния - оставить в покое. Конечно согласен с тобой что за мегауниверсольность не сработает. Хотя знаешь, если посидеть поковыряться, то можно: 1) сделать структуру из метаданных в табличку; 2) пройтись по этой структуре и сделать список объектов; 3) НайтиСсылки и вывести отчет/удалить.

p.s. Считаю это всё не нужным извращением. Да и вообще такой функционал не нужен. Лучше сразу контролировать на "пометку" при создании/копировании объектов.
10. Юрий Юрий (myamya) 23.06.10 10:16
я скачал, попользовался, значит от меня +
11. Алексей (buhinfo) 02.09.10 18:55
Большое спасибо.
Очень нужный инструмент
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа