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

18.08.09

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

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

Бесплатные

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

Узнавайте о новых бесплатных решениях в нашей телеграм-группе Инфостарт БЕСПЛАТНО

Наименование Скачано Бесплатно
очистка ТЗ
.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С:Предприятие 7.7 1C77 Абонемент ($m)

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

10 стартмани

29.04.2015    23575    59    Gvozdod    8    

17

Инструментарий разработчика Системный администратор Программист 1С:Предприятие 7.7 1С:Предприятие 8 Абонемент ($m)

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

1 стартмани

23.04.2014    176375    1908    Alexoniq    1654    

503

Инструментарий разработчика Программист 1С:Предприятие 7.7 1С:Предприятие 8 Россия Абонемент ($m)

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

1 стартмани

04.09.2013    34683    61    O-Planet    78    

49

Инструментарий разработчика Программист 1С:Предприятие 7.7 1C77 Абонемент ($m)

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

1 стартмани

13.08.2013    23162    Reptile    5    

36

Инструментарий разработчика Программист 1С:Предприятие 7.7 1C77 Абонемент ($m)

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

1 стартмани

14.07.2013    28843    56    adamx    11    

14

Инструментарий разработчика Программист 1С:Предприятие 7.7 1C77 Абонемент ($m)

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

1 стартмани

21.02.2013    19438    36    MarSeN    14    

17

Инструментарий разработчика Программист 1С:Предприятие 7.7 1C77 Абонемент ($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    37329    51    venger    7    

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

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

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

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