[CLEAN] Быстрая очистка ТЗ от ненужных строк

18.08.09

Разработка - Инструментарий разработчика

Зачастую надо очистить ТЗ от "ненужных" строк. Очистку строк проводим просто: не делаем ТЗ.УдалитьСтроку() - это будеть съедать 90% времени обработки, а применяем накопленный опыт и исследования, проведенные хорошими людьми (в частности, на proclub.ru) - и получаем быструю очистку ТЗ.

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

Наименование Файл Версия Размер
очистка ТЗ
.txt 1,76Kb
980
.txt 1,76Kb 980 Скачать бесплатно

Зачастую надо очистить ТЗ от "ненужных" строк. Очистку строк проводим не так просто, как нам сразу хочется: не делаем ТЗ.УдалитьСтроку() - это будет съедать 90% времени обработки, а применяем накопленный опыт и исследования, проведенные хорошими людьми (в частности, на proclub.ru) - и получаем быструю очистку ТЗ.

Порядок действий:
1. Добавляем в ТЗ колонку "НадоУдалить" ( число, 1) - сюда записываем 1 если данную строку следует убрать из ТЗ и 0 - если надо оставить (если такая колонка уже есть, но с другим именем - пойдет и она). Установка данного флажка происходит во время обхода ТЗ в цикле (вопрос быстрой установки данного флажка пока не обсуждаем - в каждом конкретном случае применяем нужный нам алгоритм)
2. вызываем процедуру очистки ТЗ:

глОчисткаТЗ(ТЗ, ОПС="###", "НадоУдалить")


В результате получаем очищенную от ненужных строк ТЗ.
В текстовом файле приведена процедура, которую следует вставить в глобальный модуль. В описании процедуры - подробная информация о составе и назначении передаваемых параметров.

Процедура универсальная, можно использовать в любой конфигурации.
Спасибо всем, кто нас учит/учил.

Сделал давно, практически с малыми изменениями (или без таковых - уже не помню) по материалам http://1c.proclub.ru/modules/mydownloads/personal.php?lid=1419&cid=110 - Конкурс: самый быстрый вариант удаления ненужных строк из Таблицы Значений., автор: mszsuz, http://1c.proclub.ru/userinfo.php?uid=2823


Если понравилось/пригодилось - не забываем плюсовать рейтинг.

См. также

Консоль запросов

Инструментарий разработчика Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Консоль запросов к базе SQL, не требующая внешних компонент

10 стартмани

29.04.2015    21567    54    Gvozdod    8    

14

StartManager 1.4 - Развитие альтернативного стартера

Инструментарий разработчика Платформа 1С v7.7 Платформа 1С v8.3 Абонемент ($m)

Очередная редакция альтернативного стартера, являющегося продолжением StartManager 1.3. Спасибо всем, кто присылал свои замечания и пожелания, и тем, кто перечислял финансы на поддержку проекта. С учетом накопленного опыта, стартер был достаточно сильно переработан в плане архитектуры. В основном сделан упор на масштабируемость, для способности программы быстро адаптироваться к расширению предъявляемых требований (т.к. довольно часто просят добавить ту или иную хотелку). Было пересмотрено внешнее оформление, переработан существующий и добавлен новый функционал. В общем можно сказать, что стартер эволюционировал, по сравнению с предыдущей редакцией. Однако пока не всё реализовано, что планировалось, поэтому еще есть куда развиваться в плане функциональности.

1 стартмани

23.04.2014    165745    1864    Alexoniq    1596    

496

Tray Informer

Инструментарий разработчика Платформа 1С v7.7 Платформа 1С v8.3 Россия Абонемент ($m)

Согласитесь, что окно стандартное сообщений в 1С иногда приносит больше неудобств, чем пользы. И тем более разные "Предупредить"... Что с этим окном только не делают! Его отцепают от формы, делают маленьким, умудряются спрятать за границы экрана. А потом звонят программистам с претензией, что документ почему-то не проводится, отя ничего и не пишет. У вас такого не было? А вот у нас было и не раз )))

1 стартмани

04.09.2013    32890    61    O-Planet    78    

49

Изменение структуры баз 1С 7.7 без долгой реструктуризации. Часть 1. Справочники

Инструментарий разработчика Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

На днях встретил вопрос на форуме про возможность внесения изменений в конфигурацию без долгого сохранения в рабочей базе большого объема. Вот решил поделиться опытом, как это делал я. База у нас была объемом порядка 120 Гб. К базе обращался сайт в режиме 24/7, поэтому важно было быстро сохранять изменения и желательно без последующего монопольного запуска для восстановления индексов и процедур и без отключения пользователей от базы. Это первая часть статьи и посвящена она справочникам. С одной стороны - это самый простой объект, с другой стороны, именно про справочник спрашивалось на форуме. Если статья будет востребована, то я напишу аналогичные про документы, регистры и может еще что.

1 стартмани

13.08.2013    21203    Reptile    5    

35

v7.7 1CDialogControls: Инструмент в помощь разработчику на 7.7.

Инструментарий разработчика Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Давным давно, когда я еще плотно писал на 7.7 работа с формами была мучительной и неудобной. Приходилось каждый элемент выкладывать, выравнивать на форме ручками, прописывать код в модуле. Иногда при разработке очередной формы приходила в голову мысль: "а где-то я уже похожее делал..." и начинался мучительный поиск подходящего кода в своих запасах........

1 стартмани

21.02.2013    18037    35    MarSeN    14    

16

[Разработчику] Любая таблица значений в OLAP

Инструментарий разработчика Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Анализируем различные данные в 1С, используя OLAP-технологии со всеми прелестями. Т.е. наглядное отображение данных, быстрые расчеты, горизонтальные и вертикальные группировки любой вложенности, удобная фильтрация, Drag'n'Drop и ещё много приятных вещей от MS. Обработка на входе принимает практически любую таблицу значений (ТЗ в которой колонкам указаны типы значений, строка, число и т.п.), на выходе имеем на форме 1С сводную таблицу и график по этой ТЗ, с которой работаем, как и в Excel со сводной таблицей и диаграммой. Взял за основу разработку «OLAP Анализ счёта» ( http://infostart.ru/public/14964/ ) от JohnyDeath и переделал под любую ТЗ. Опционально используется «Прогресс бар для 1С 77» (http://infostart.ru/public/14061/ ) от Gmix.

1 стартмани

21.12.2012    36110    51    venger    7    

23

Библиотека кода 1С 7.7 (накопленная за 8 лет)

Инструментарий разработчика Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Весь код на 1С 7.7, собранный для повторного использования за 8 лет работы.

10 стартмани

25.11.2012    34966    248    adhocprog    51    

70
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. mdzen 238 22.06.06 10:36 Сейчас в теме
Просто и со вкусом.
Спасибо автору.
2. 22.06.06 11:00 Сейчас в теме
Вообщем-то это трудно назвать авторством, ибо это не я придумал - это, так сказать, общенациональное достояние, оформленное в процедуру.
Буду выкладывать и впредь мелкие и большие полезные процедуры и приемы программирования.
3. Diamond 1193 18.07.06 20:28 Сейчас в теме
Помню на hippo этот "конкурс". Сколько вариантов было?
4. CheBurator 3119 18.07.06 22:06 Сейчас в теме
Вариантов было много, этот самый быстрый. Обработка с о сравнение разных конкурсных вариантов лежит на проклабе.
Можно еще его чуток ускорить если вместо ТЗ.Выгрузить() использовать ТЗ.Заполнить ()- так, по крайней мере, утверждается в той же конкурсной обработке - смотрите на проклабе.
5. ra9000 8 09.11.06 16:37 Сейчас в теме
У меня Таблица занимает 120'000 строк 15 колонок
Строка "ТЗРаб.Сортировать("+"+КолонкаУдалить);" - работает убийственно долго... :(
Пришлось написать код в 7 строк для удаления ненужной строки, и для удаления всех остальных кроме нужных в 15 строк.
На больших объемах производительность увеличилась в разы...:)
6. ra9000 8 09.11.06 16:40 Сейчас в теме
стр="";
знач1=тзтт.получитьзначение(тзтт.текущаястрока(),тзтт.текущаяколонка());
пока тзтт.НайтиЗначение((знач1),стр,тзтт.текущаяКолонка())=1 цикл
тзтт.удалитьстроку(стр);
стр="";
конеццикла;
7. CheBurator 3119 09.11.06 17:31 Сейчас в теме
Хотелось бы узнать - сколько строк ты удаляешь из своей ТЗ в 120'000 строк?
попробуй удали 100'000 строк и замерь время выполнения по своему алгоритму и по оригинальному.
с интересом жду результата...
8. 12.12.06 13:01 Сейчас в теме
9. CheBurator 3119 12.12.06 22:09 Сейчас в теме
10. MacLEOD 27.02.09 14:19 Сейчас в теме
А вот так:

Для т = -ТЗ.КоличествоСтрок() По -1 Цикл
ТЗ.ПолучитьСтрокуПоНомеру(-т);
Если ТЗ.НеНадо = 1 Тогда
ТЗ.УдалитьСтроку(-т);
КонецЕсли;
КонецЦикла;

И вообще - не надо для этого в ТЗ проставлять "1", сразу условие проверяем и все.
11. Noy 1076 27.02.09 14:24 Сейчас в теме
(10) ты просто не сталкивался с большими ТЗ
12. CheBurator 3119 27.02.09 14:34 Сейчас в теме
13. DarkAn 1079 17.08.09 14:08 Сейчас в теме
(10) Удаление по строкам уже давно доказано что работает МЕДЛЕННО!! надо делать все одним разом. как в примере. Производительность твоей обработки будет тормозить линейным способом и напрямую зависить от количества записей. А предложеннеым алгоритмом при добавлении еще 100 000 строк замедления будут незначительными :)

я сам реализацию этого алгоритма увидел года 3 назад, на проклабе, с тех пор только им и пользуюсь :) чуть геморней, зато работает ух как быстро.

PS(офф топ) Тут столкнулся с такой проблемой, всегда думал что "выгрузить в ТЗ" работает быстро, но в ЗиК понял, что не совсем. В частности выгрузка проводок (2к сотров) делается более 9 часов и весь тормоз именно из-за "Выгрузить", все руки не доходят разобраться с этой бедой, притом проблема точно связана с переходящими отпусками. хотя отчет по проводкам формируется всего 15-20 мин. :(
14. CheBurator 3119 17.08.09 14:52 Сейчас в теме
(13) вместо Откуда.Выгрузить(Куда);
пользуйся Куда.Заполнить(Откуда....)
.
опять же выгрузка проводок откуда куда? в хмлфайл?
2 тыс сотрудников - это прямым перебором построчным выгрузить можно быстро...
17. DarkAn 1079 17.08.09 16:45 Сейчас в теме
(14) Ну то что 2к сотров это еще не значит что в ТЗ 2к строк ;). Ладно попробую через Загрузить, посмотрим что выйдет :)
15. artbear 1448 17.08.09 16:17 Сейчас в теме
(0) 1. Правило хорошего тона - все-таки выкладывать ссылку на исходную разработку :)
ЗЫ или проклаб на ИС во врагах сидит? :)
Если враги, можно в личку ссылку напомнить - за давностью лет ссылку утерял :)

ЗЗЫ интересно, в 8 кто-нибудь подобное тестил?
16. CheBurator 3119 17.08.09 16:26 Сейчас в теме
нет, не во врагах.
в проклабе найти еще сложнее чем на Исе по-моему... кто знает ссылку - сообщите, пристегнй
18. artbear 1448 18.08.09 07:44 Сейчас в теме
(16) Главное - знать, что искать :)
Первый же результат по "конкурс на удаление строк из таблицы значений"
http://1c.proclub.ru/modules/mydownloads/personal.php?lid=1419&cid=110
19. user1147184 23.06.21 08:49 Сейчас в теме
"1. Добавляем в ТЗ колонку "НадоУдалить" ( число, 1) - сюда записываем 1 если данную строку следует убрать из ТЗ и 0 - если надо оставить (если такая колонка уже есть, но с другим именем - пойдет и она). Установка данного флажка происходит во время обхода ТЗ в цикле (вопрос быстрой установки данного флажка пока не обсуждаем - в каждом конкретном случае применяем нужный нам алгоритм)"
Не добавляя колонок и флажков:
В новую созданную ТЗ с той же структурой
новСтр = ТЗ.Добавить();
ЗаполнитьЗначенияСвойств(новСтр, Стр) - на выходе готовая ТЗ с нужными строками
Оставьте свое сообщение