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

18.08.09

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Бесплатно
очистка ТЗ
.txt 1,76Kb
980
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    22279    57    Gvozdod    8    

16

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

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

1 стартмани

23.04.2014    168353    1882    Alexoniq    1596    

499

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

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

1 стартмани

04.09.2013    33408    61    O-Planet    78    

49

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

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

1 стартмани

13.08.2013    21799    Reptile    5    

35

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

Встала недавно задача для одной организации, которая все еще на 1С 7.7 немного автоматизировать работу отдела продаж. А именно уйти от ручного заполнения договоров, сделанных юристами в MS Word. Договора от разных фирм и разного назначения отличались. Переводить их в таблицы 1С очень не хотелось и нашел способ прямо в файлах Word сделать небольшие дополнения, чтобы можно было печатать, используя именно эти заготовки юристов.

1 стартмани

14.07.2013    27643    56    adamx    11    

14

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

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

1 стартмани

21.02.2013    18345    36    MarSeN    14    

17

Инструментарий разработчика Программист Платформа 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    36349    51    venger    7    

23
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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 2712 18.07.06 22:06 Сейчас в теме
Вариантов было много, этот самый быстрый. Обработка с о сравнение разных конкурсных вариантов лежит на проклабе.
Можно еще его чуток ускорить если вместо ТЗ.Выгрузить() использовать ТЗ.Заполнить ()- так, по крайней мере, утверждается в той же конкурсной обработке - смотрите на проклабе.
5. ra9000 11 09.11.06 16:37 Сейчас в теме
У меня Таблица занимает 120'000 строк 15 колонок
Строка "ТЗРаб.Сортировать("+"+КолонкаУдалить);" - работает убийственно долго... :(
Пришлось написать код в 7 строк для удаления ненужной строки, и для удаления всех остальных кроме нужных в 15 строк.
На больших объемах производительность увеличилась в разы...:)
6. ra9000 11 09.11.06 16:40 Сейчас в теме
стр="";
знач1=тзтт.получитьзначение(тзтт.текущаястрока(),тзтт.текущаяколонка());
пока тзтт.НайтиЗначение((знач1),стр,тзтт.текущаяКолонка())=1 цикл
тзтт.удалитьстроку(стр);
стр="";
конеццикла;
7. CheBurator 2712 09.11.06 17:31 Сейчас в теме
Хотелось бы узнать - сколько строк ты удаляешь из своей ТЗ в 120'000 строк?
попробуй удали 100'000 строк и замерь время выполнения по своему алгоритму и по оригинальному.
с интересом жду результата...
8. 12.12.06 13:01 Сейчас в теме
9. CheBurator 2712 12.12.06 22:09 Сейчас в теме
10. MacLEOD 27.02.09 14:19 Сейчас в теме
А вот так:

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

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

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

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

ЗЗЫ интересно, в 8 кто-нибудь подобное тестил?
16. CheBurator 2712 17.08.09 16:26 Сейчас в теме
нет, не во врагах.
в проклабе найти еще сложнее чем на Исе по-моему... кто знает ссылку - сообщите, пристегнй
18. artbear 1563 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 - если надо оставить (если такая колонка уже есть, но с другим именем - пойдет и она). Установка данного флажка происходит во время обхода ТЗ в цикле (вопрос быстрой установки данного флажка пока не обсуждаем - в каждом конкретном случае применяем нужный нам алгоритм)"
Не добавляя колонок и флажков:
В новую созданную ТЗ с той же структурой
новСтр = ТЗ.Добавить();
ЗаполнитьЗначенияСвойств(новСтр, Стр) - на выходе готовая ТЗ с нужными строками
Оставьте свое сообщение