Решил расширить функционал ТаблицыЗначений с помощью класса.
Для начала хотел изменить метод Свернуть так, чтобы можно было оставлять колонки, которые не участвуют в свертке. Знаю, что ИТЗ умеет такое, но решил попробовать сделать класс.
По идее всё просто.
Запуск класса:
класс ТаблицаЗначений=РасширениеТаблицыЗначений.ert : ValueTable {}
Т.е. он будет наследовать все методы внутреннего объекта ТаблицаЗначений (она же ValueTable).
Класс назван ТаблицаЗначений для того, чтобы в коде нигде не менять объявление переменных ТЗ.
И собственно содержимое класса
Функция Сам(Конт) Возврат Конт; КонецФункции
Функция БазоваяТаблица()
Перем ОбъектТабл;
ОбъектТабл = Сам(Контекст).ПолучитьБазовыйКласс("ТаблицаЗначений");
Возврат ОбъектТабл;
КонецФункции
Функция Свернуть(ГруппКолонки="",СуммКолонки="",СохранитьСтруктуру=0) Экспорт //+Al 2018-04-02 11:31:06 Переопределение стандартного метода для ТаблицыЗначений. Добавлен новый параметр СохранитьСтруктуру
Перем ОбъектТабл,Структура_ТЗ,КакиеКолонкиЕсть;
ОбъектТабл = БазоваяТаблица();
Если СохранитьСтруктуру=1 Тогда
Структура_ТЗ=СтруктураТЗ(ОбъектТабл);
КонецЕсли;
ОбъектТабл.GroupBy(ГруппКолонки,СуммКолонки);//Здесь используется только Англ имя метода, чтобы класс не зациклился, перехватив самого себя!!!
Если СохранитьСтруктуру=1 Тогда
КакиеКолонкиЕсть=","+ГруппКолонки+","+СуммКолонки+",";
Структура_ТЗ.ВыбратьСтроки();
Пока Структура_ТЗ.ПолучитьСтроку()=1 Цикл
ИДКолонки =Структура_ТЗ.ИДКолонки;
Если Найти(КакиеКолонкиЕсть,","+ИДКолонки+",")>0 Тогда
Продолжить;
КонецЕсли;
Тип =Структура_ТЗ.Тип;
Длина =Структура_ТЗ.Длина;
Точн =Структура_ТЗ.Точн;
Заголовок =Структура_ТЗ.Заголовок;
Ширина =Структура_ТЗ.Ширина;
ФорматКол =Структура_ТЗ.ФорматКол;
Положение =Структура_ТЗ.Положение;
ОбъектТабл.ВставитьКолонку(ИДКолонки, Структура_ТЗ.НомерСтроки, Тип, Длина, Точн, Заголовок, Ширина, ФорматКол, Положение);
КонецЦикла;
КонецЕсли;
КонецФункции
Здесь только есть вызов СтруктураТЗ() - это функция прописана в глобальнике. Она возвращает ТЗ с описанием всех колонок и их параметров.
Вот, собственно, и всё. Вроде как работает. Но при выходе из 1С - Предприятие падает!
И не понятно почему. Есть какие идеи - почему падение может происходить?