Набор обработок и методов для различных манипуляций с таблицами значений

29.01.08

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

Небольшой, но довольно полезный набор методов для таблиц значений.
Включает в себя следующее:

Внешние обработки
- Интерактивно настраиваемый фильтр по объектам базы данных либо по таблице значений;
- Многоуровневая группировка ТЗ (в результате получается дерево);
- Редактор ТЗ в виде внешнего отчета;
- Печать ТЗ с группировками;

Методы для работы с ТЗ (файл ФункцииТЗ.txt)
- Копирование структуры ТЗ;
- Копирование строки ТЗ;
- Слияние ТЗ;
- Построчное суммирование 2-х ТЗ;
- Примитивный фильтр ТЗ по значению одной колонки;
- Поиск заданной строки в ТЗ;
- Итог по строке ТЗ;
- Мелкие функции, не имеющие отношения к ТЗ, но могущие оказаться полезными.

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

Наименование Файл Версия Размер
VT_Tools
.1201597731 199,27Kb
1992
.1201597731 199,27Kb 1992 Скачать бесплатно
Вот, решил тряхнуть стариной, и выложить здесь набор инструментов, пылящийся где-то в недрах проклуба. Как ни странно, наборчик до сих пор актуален для меня, и думаю будет полезен кому-то ещё. Самое центральное во всём этом - это конечно РедакторТЗ - инструмент, без которого я просте не мыслю себе отладку сложных алгоритмов, оперирующих с данными. Самое главное отличие этого редактора от всех других, виденных мной, это возможность просматривать вложенные ТЗ (СЗ, ИТ).

См. также

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

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

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

10 стартмани

29.04.2015    21560    54    Gvozdod    8    

14

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

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

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

1 стартмани

23.04.2014    165723    1864    Alexoniq    1596    

496

Tray Informer

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

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

1 стартмани

04.09.2013    32881    61    O-Planet    78    

49

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

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

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

1 стартмани

13.08.2013    21200    Reptile    5    

35

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

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

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

1 стартмани

21.02.2013    18030    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    36103    51    venger    7    

23

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

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

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

10 стартмани

25.11.2012    34960    248    adhocprog    51    

70
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. JohnyDeath 301 29.01.08 16:23 Сейчас в теме
После вот таких вот (не сказать простых) манипуляций и родилась ИТЗ? ;)
2. artbear 1448 29.01.08 16:43 Сейчас в теме
Обалденный набор обработок.
Пользуюсь им также очень давно, наверное, был один из первых пользователей/тестеров.
Всем рекомендую.
(1) Ага, это предки ИТЗ.
Кстати, РедакторТЗ работает и с ИТЗ :)
3. CheBurator 3119 29.01.08 21:38 Сейчас в теме
Ок. раз уж (2) советует - то видать и я вооружусь...
4. ADirks 186 30.01.08 08:35 Сейчас в теме
(1) Точно, здесь мы видим дедушку - предка ИТЗ :)
И дедушка до сих пор иногда работает, когда 1С++ нельзя использовать по каким-то причинам. Группировка ТЗ штука конечно не так чтоб резвая, но зато удобно. А учитывая, что получение данных из базы без прямых запросов всё равно тормозит, эта нерезвость просто незаметна.

(3) А ещё (2) советует использовать 1С++! Так что вооружайся! :))

Пользуясь случаем хочу сказать спасибо Артуру. Без его... хмм... [b]тестирования![b] инструментарий был бы совсем не таким. Совсем совсем не таким.
5. Abadonna 3958 14.02.08 10:59 Сейчас в теме
Копирование структуры ТЗ:
пТЗ.Загрузить(ТЗ); пТЗ.УдалитьСтроки() - и готово ;)
6. ADirks 186 14.02.08 11:09 Сейчас в теме
Ага. А если в ТЗ строк эдак скажем 50000?
7. Abadonna 3958 14.02.08 11:49 Сейчас в теме
Если АГА - тогда твоим способом ;) А без АГА - быстро получается...
8. Tiger77 69 19.02.08 15:59 Сейчас в теме
Правильно так:
ТЗ.Выгрузить(пТЗ,1,1); пТЗ.УдалитьСтроки();
9. ADirks 186 19.02.08 16:20 Сейчас в теме
>Правильно так:
>ТЗ.Выгрузить(пТЗ,1,1); пТЗ.УдалитьСтроки();

Ага :) А если в ТЗ 0 строк?
10. Fisherru 78 16.05.08 13:43 Сейчас в теме
Пришлось искать в таблице значений товар по 2-м полям для поиска неуникального товара в накладной уценки,
то есть товар может быть один и тот-же, но % уценки - разный.
Использовал одну из функций автора, особо не вчитываясь в смысл
Функция НайтиСтрокуТЗ(ТЗ, КолонкаПоиска, ЗначПоиска, КолонкаПоиска2="", ЗначПоиска2="") Экспорт
Перем н;
Если ТЗ.НайтиЗначение(ЗначПоиска, н, КолонкаПоиска)=0 Тогда
Возврат 0;
КонецЕсли;
ТЗ.ПолучитьСтрокуПоНомеру(н);
Если КолонкаПоиска2="" Тогда Возврат 1; КонецЕсли;

Пока н<=ТЗ.КоличествоСтрок() Цикл
Если ТЗ.ПолучитьЗначение(н, КолонкаПоиска2) = ЗначПоиска2 Тогда
ТЗ.ПолучитьСтрокуПоНомеру(н);
Возврат 1;
КонецЕсли;
н = н + 1;
КонецЦикла;
Возврат 0;
КонецФункции

Вызываю её из своей функции

Функция ПроверкаДублейСтрокСоСкидкой()
// Эта процедура проверяет спецификацию документа на дубли товара
ТаблицаТоваров=СоздатьОбъект("ТаблицаЗначений");
ТаблицаТоваров.НоваяКолонка("КодТовара", "Число", 5,0);
ТаблицаТоваров.НоваяКолонка("Скидка", "Число", 5,2);

ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл

Если Товар.Выбран()=0 Тогда
Продолжить;
КонецЕсли;

// Проверка товара на совпадение в строках документа
Если НайтиСтрокуТЗ(ТаблицаТоваров,"КодТовара",Число(Товар.Код),"Скидка",ПроцентСкидки)=1 Тогда
// Значит такой товар уже в накладной есть
Предупреждение("Повторение товара и скидки:"+СокрЛП(Товар.Артикул)+" "+СокрП(Товар.Наименование)+" в строке "+НомерСтроки,5);
Сообщить("Повторение товара и скидки:"+СокрЛП(Товар.Артикул)+" "+СокрП(Товар.Наименование)+" в строке "+НомерСтроки);
Возврат 1;
КонецЕсли;

ТаблицаТоваров.НоваяСтрока();
НомСтр = ТаблицаТоваров.НомерСтроки;
ТаблицаТоваров.УстановитьЗначение(НомСтр,"КодТовара", Число(Товар.Код));
ТаблицаТоваров.УстановитьЗначение(НомСтр,"Скидка", ПроцентСкидки);

КонецЦикла;
Возврат 0;
КонецФункции

что по вашему произойдёт если в документе будет?
Товар Скидка
Стол 10
Стол 20
Диван 30
Стол 30
он мне сругается на Стол с 30% так как найдёт Диван с 30%
так как в цикле не прверяется, что первый параметр остаётся = переданному значению,
а просто втупую сравнивает второй - что криво.
Не порядок.
11. Fisherru 78 16.05.08 13:45 Сейчас в теме
Так что, всё-таки, осмысливайте показанные сдесь функции, чтобы не было как со мной
12. oskar 17.06.08 08:45 Сейчас в теме
13. aexeel 73 03.09.09 10:13 Сейчас в теме
В demo.ert при нажатии на кнопку "Печать сгруппированной ТЗ" ошибка:
ИначеЕсли ТЗ_Кол.НачатьГруппу = 1 Тогда
{Z:\DOWNLOADS\VT_TOOLS\ПЕЧАТЬТЗ.ERT(754)}: Поле агрегатного объекта не обнаружено (НачатьГруппу)
14. dobraleks 136 16.06.12 17:24 Сейчас в теме
15. GenTay 27.10.13 16:37 Сейчас в теме
Скачал. После вндрения отпишуся. Спасибо
16. CheBurator 3119 18.03.21 21:40 Сейчас в теме
Взял повторно. Пришло время ;-)
Так как ИТЗ "не подошла" в части отсутствия у меня инструментов для отладки/трассировки ИТЗ, а при выгрузке ИТЗ в штатную ТЗ и использования типовых отладочных ПечатьТЗ(ТЗ..еще куча параметров) - ТЗ получается НЕТИПИЗИРОВАННАЯ и все автосуммирование числовых колонок накрывается тазиком без явного указания.. а всего-то от ИТЗ надо было ИТЗ.Группировать(..). Пришлось взять группировку отсюда.
Спасибо!!!
17. CheBurator 3119 19.03.21 02:20 Сейчас в теме
эх.. не хватает в Группировка.ert нужного...
хотелось чтобы в каждом ТЗ_Потомки была колонка с уникальным значением предыдущего родителя родителя
в итоге на последнем уровне были бы действительно СТРОКИ ИСХОДНОЙ ТЗ,

потому что сейчас

- СворачиватьПоследнийУровень - число 1 или 0. Если 0, то строки на последнем уровне
группировки остаются в том виде, в каком они были в исходной ТЗ. Если 1, то сворачиваются
по колонкам группировки.

- не соответствует описанному, т.к. на последнем уровне отсутствуют колонки всех предыдущих родителей-группировок...
это доставляет определенные неудобства...
для обработки каждой ТЗ_Потомок, если мы не передали конкретное значение родителя+родителя родителя+родителя родителя родителя - понять к
какому значению кортежей родителей относятся значения текущей таблицы потомков - ну никак вообще...
18. ADirks 186 19.03.21 11:39 Сейчас в теме
(17) Забавно :)

Ну, раз надо, то в обработке ГруппировкаТЗ поменяй метод ВыделитьРаздел()
(как раз удалялись колонки вышестоящих группировок, уж не помню зачем)

Функция ВыделитьРаздел(ИсходнаяТЗ, Фильтр, НачалоРаздела, НачалоСледРаздела)
	Перем н1, н2, ТЗ;

	н1 = НачалоРаздела;
	Если н1 = 0 Тогда н1 = 1; КонецЕсли;
	н2 = НачалоСледРаздела;
	
	н2 = ТЗ_НайтиПоКлючу2(ИсходнаяТЗ, Фильтр, н1, н2, 1);
	НачалоРаздела = н2 + 1;
	
	ТЗ = ЗначениеИзСтроки(стрПустаяТЗ);
	ИсходнаяТЗ.Выгрузить(ТЗ, н1, н2);
	
	//Фильтр.ВыбратьСтроки();
	//Пока Фильтр.ПолучитьСтроку()=1 Цикл
	//	ТЗ.УдалитьКолонку(Фильтр.Колонка);
	//КонецЦикла;
	
	Возврат ТЗ;
КонецФункции
Показать
19. CheBurator 3119 19.03.21 11:43 Сейчас в теме
(18) спсб за ответ! попробую, я в код посмотрел, понял что что-то как раз в этом месте мутить надо, но дальше затыкнулся...
21. CheBurator 3119 19.03.21 20:48 Сейчас в теме
(18) Сделал как написано здесь - заремил. Стало лучше - родительские значения стали присутствовать только на самом последнем уровне иерархии. на промежуточных уровнях иерархии колонок а родительскими значениями - нет, а тоже хорошо бы...
20. CheBurator 3119 19.03.21 11:46 Сейчас в теме
и ишшо метод хорошо было бы ;-) чтобы руками не тягать
типа когда стоим в ТЗ_Потомок - даем "команду" и изменения колонок сумм чтобы пробрасоывались назад по иерархии от потомков к самому первому предку по всей цепочке..
Оставьте свое сообщение