1с переименовать колонку дерева значений

Изменить название колонки таблицы

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

Мне удалось добиться смены заголовка, как я это вижу в всплывающем сообщении, но визуально название колонок остается прежним по Имени П1 и П2. Что же я делаю не так?

ТЗ = Новый ТаблицаЗначений; ТЗ.Колонки.Добавить("Товар"); ТЗ.Колонки.Добавить("П1"); ТЗ.Колонки.Добавить("П2"); Сообщить(ТЗ.Колонки[1].Имя); //выводится имя П1 Сообщить(ТЗ.Колонки[2].Имя); //выводится имя П2 ТЗ.Колонки[1].Заголовок = "Test1"; ТЗ.Колонки[2].Заголовок = "Test2"; Сообщить(ТЗ.Колонки[1].Заголовок); // выводится Заголовок Test1 Сообщить(ТЗ.Колонки[2].Заголовок); // выводится Заголовок Test2
Элементы.ИмяЭлемента.Заголовок = "бла бла";

(3)Заголовок можно и позже изменить, ошибки нет.

КолонкаТаблицыЗначений (ValueTableColumn)
Заголовок (Title)
Использование:

Тип: Строка.
Содержит заголовок колонки таблицы значений. Используется при визуальном отображении таблицы значений.

Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).

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

Если смотреть весь код при создании таблицы, то он выглядит таким образом при клике по кнопке

&НаСервере Процедура НажатиеКнопкиНаСервере() ИмяРеквизита = Элементы.ГруппаСтраницы.ТекущаяСтраница.ПодчиненныеЭлементы[1].Имя; ПоследниеСимволы = Прав(ИмяРеквизита, 2); //Сообщить(ЭтаФорма["Реквизит" + ПоследниеСимволы][Сч]); //создание таблицы на форме МассивТипаВыбора = Новый Массив; МассивТипаВыбора.Добавить(Тип("ТаблицаЗначений")); ОписаниеТипаВыбора = Новый ОписаниеТипов(МассивТипаВыбора); МассивРеквизитов = Новый Массив; МассивРеквизитов.Добавить(Новый РеквизитФормы("ТаблицаРасписания", ОписаниеТипаВыбора, "", "ТЗН")); //создаем таблицу которая содержит несколько колонок КД = Новый КвалификаторыДаты(ЧастиДаты.Время); МассивКД = Новый Массив; МассивКД.Добавить(Тип("Дата")); ОписаниеТиповВремя = Новый ОписаниеТипов(МассивКД, , ,КД); ТЗ = Новый ТаблицаЗначений; ТЗ.Колонки.Добавить("Товар"); //Для Сч = 0 По ЭтаФорма["Реквизит" + ПоследниеСимволы].Количество()-1 Цикл // НазваниеКолонки = Строка(ЭтаФорма["Реквизит" + ПоследниеСимволы][Сч]); // ТЗ.Колонки.Добавить("П" + Сч); //КонецЦикла; ТЗ.Колонки.Добавить("П1"); ТЗ.Колонки.Добавить("П2"); Сообщить(ТЗ.Колонки[1].Заголовок); Сообщить(ТЗ.Колонки[2].Заголовок); Сообщить(ТЗ.Колонки[1].Имя); Сообщить(ТЗ.Колонки[2].Имя); ТЗ.Колонки[1].Заголовок = "Test1"; ТЗ.Колонки[2].Заголовок = "Test2"; Сообщить(ТЗ.Колонки[1].Заголовок); Сообщить(ТЗ.Колонки[2].Заголовок); //Элементы.ГруппаСтраницы.ТекущаяСтраница.ТЗ.Колонки.П1.ТекстШапки = "Тест"; //ТЗ.Колонки.П1.Заголовок = "Test"; //ТЗ.Колонки.Добавить("П2"); //ТЗ.Колонки.Добавить("П3"); //заполним программную таблицу нужными данными Для Каждого Колонка Из ТЗ.Колонки Цикл МассивРеквизитов.Добавить(Новый РеквизитФормы(Колонка.Имя, Колонка.ТипЗначения,"ТаблицаРасписания")); КонецЦикла; ИзменитьРеквизиты(МассивРеквизитов); ТаблицаПолейВыбора = Элементы.Добавить("ТЗН", Тип("ТаблицаФормы"), Элементы.ГруппаСтраницы.ТекущаяСтраница); ТаблицаПолейВыбора.ПутьКДанным = "ТаблицаРасписания"; ТаблицаПолейВыбора.Отображение = ОтображениеТаблицы.Список; //укажем путь к данным Для Каждого Колонка Из ТЗ.Колонки Цикл НовыйЭлемент = Элементы.Добавить(Колонка.Имя, Тип("ПолеФормы"), ТаблицаПолейВыбора); НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода; НовыйЭлемент.ПутьКДанным = "ТаблицаРасписания." + Колонка.Имя; НовыйЭлемент.Ширина = 10; КонецЦикла; ТаблицаПолейВыбора.УстановитьДействие("Выбор","ТЗНВыбор"); КонецПроцедуры

Источник

Читайте также:  Можно ли определить высоту дерева способом фалеса

Поменять имя колонки в ТаблицеЗначений 82

Если ТабИмен = Неопределено Тогда
ТабИмен = Новый ТаблицаЗначений;
ТабИмен.Колонки.Добавить(«НовИмя», Новый ОписаниеТипов(«Строка»));
ТабИмен.Колонки.Добавить(«ТекИмя», Новый ОписаниеТипов(«Строка»));
КонецЕсли;

ТекКолонка = ТабЗначений.Колонки.Найти(ТекИмяКолонки);
Если ПустаяСтрока(НовоеИмяКолонки) Тогда
// Генерируем новое имя для старой колонки, гарантируя что оно будет уникальным
Индекс = 1;
Пока Истина Цикл
НовоеИмяКолонки = «_» + Строка(Индекс) + «_» + ТекИмяКолонки;
Если ТабЗначений.Колонки.Найти(НовоеИмяКолонки) = Неопределено Тогда
Прервать;
КонецЕсли;
Индекс = Индекс + 1;
КонецЦикла;
// После выхода из цикла в переменной НовоеИмяКолонки должны получить новое имя колонки,
КонецЕсли;

// Переименуем колонку
ТабЗначений.Колонки[ТекИмяКолонки].Имя = НовоеИмяКолонки;

// Сохраним имя колонки в таб. имен
НоваяСтрока = ТабИмен.Добавить();
НоваяСтрока.НовИмя = НовоеИмяКолонки;
НоваяСтрока.ТекИмя = ТекИмяКолонки;

(1)Ты меня уничтожил 🙂
(2)Выгрузил результат запроса по остаткам на регистре, и загружаю его в документ «Корректировка записей регистров накопления», имя колонки из результата запроса называется «*Остаток», а имя на регистре «*».
Треба правильное имя.
(3)Благодарю
ТабЗначений.Колонки[ТекИмяКолонки].Имя = НовоеИмяКолонки;
Этого бы хватило.

Источник

ДеревоЗначений.Колонки Метод Добавить()

Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).

Пример использования

Пример кода с использованием метода Добавить() :

//создание нового дерева значений дз = Новый ДеревоЗначений; //добавляем колонки НоваяКолонка = дз.Колонки.Добавить(, Новый ОписаниеТипов("Строка")); НоваяКолонка.Имя = "Наименование"; НоваяКолонка.Заголовок = "Наименование"; //однако удобнее сразу описывать все свойства колонки за один вызов: НоваяКолонка = дз.Колонки.Добавить("КодТовара", Новый ОписаниеТипов("Строка"), "Код товара"); 

Читайте также:

Источник

Работа с деревом значений в 1С

В последнее время аномально часто мне в работе попадалось дерево значений, поэтому решил написать на эту тему статью.

Попробую рассмотреть способы решения основных задач связанных с деревом значений, при этом постараюсь писать «без воды».

Дерево значений

Из названия объекта понятно, что дерево значений служит для хранения/отображения какой-либо иерархической информации. Каждая строка дерева значений может иметь какое-то количество подчиненных строк, при этом такие операции как поиск, сортировка, подсчет итогов можно проводит с учетом уровня иерархии и подчиненных строк.

Читайте также:  Клевер кулон из дерева

Кроме этого, каждая строка дерева значений имеет свойства «Родитель» и «Строки».

Дерево значений на форме

Визуальное представление дерева значений обеспечивает элемент «Табличное поле».

Дерево значений на обычной форме Дерево значений на управляемой форме

Заполнение дерева значений

При заполнении дерева значений нужно помнить, что сам объект «ДеревоЗначений» и все его строки имеют свойство «Строки»и добавление новых строк на любом уровне дерева осуществляется через это свойство.

Сам же объект «ДеревоЗначений» имеет еще и свойство «Колонки», которое ничем не отличается от аналогичного свойства у таблицы значений.

Небольшой пример программного заполнения таблицы значений для управляемых форм:

Обход дерева значений

Обход всех строк дерева значений делается при помощи рекурсии, вот так будет выглядеть код для обхода дерева созданного в примере выше:

Как свернуть и развернуть дерево значений

Сворачивается и разворачивается дерево значений очень просто.

Привел три примера: для сворачивания текущей строки, для сворачивания строк верхнего уровня, для сворачивания вообще всех строк (рекурсия).

Два примера: для разворачивания текущей строки и для разворачивания всех строк. У метода «Развернуть» есть дополнительный параметр, который позволяет указать нужно ли разворачивать подчиненные строки.

Как удалить строку и очистить дерево значений

Тут опять же все просто, нужно помнить, что при удалении/очистке строки, все подчиненные строки удаляются.

Точно также можно очистить от подчиненных элементов другую другую строку.

Удалить строку дерева значений не сложнее — нужно только знать ее индекс:

Запрос и дерево значений

Результат выполнения запроса очень легко преобразовать в дерево значений, для этого нужно воспользоваться методом «Выгрузить» и указать параметр «ТипОбхода» отличным от того, что стоит по умолчанию, т.е. «ПоГруппировкам» или «ПоГруппировкамСИерархией».

Если на форме имеется реквизит «ДеревоЗначений» и связанный с ним визуальный элемент, то можно сделать примерно так:

Читайте также:  Быстрорастущие деревья для бизнеса

Причем полного совпадения колонок и типов не требуется — лишние колонки будут просто отброшены, а колонки с различными типами будут заполнены пустыми значениями.

Дерево значений в таблицу значений и обратно

Преобразовать дерево значений в таблицу значений и наоборот достаточно просто, ведь дерево значений это та же таблица значений, но с дополнительной колонкой — «Родитель». У меня есть отдельная статья о том как преобразовать дерево значений в таблицу значений и обратно.

Отбор в дереве значений

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

Таким образом, если Вам нужно реализовать отбор в дереве значений, то начать нужно с решения именно этой проблемы. А уже после этого можно придумать несколько способов реализовать задуманное.

Первый способ — накладывать отбор до вывода дерева значений (в запросе например). Это не классический отбор, но в тех случаях когда этот способ применим, то следует применять именно его, так как это почти всегда быстрее и правильнее чем что-либо другое.

Второй способ — перебор всех строк дерева значений. Описывать здесь особенно нечего, нужно просто взять обход дерева значений, проверять каждую строку на соответствие условию отбора и удалять лишние строки.

Еще один способ заключается в том, чтобы преобразовать дерево значений в таблицу значений, сделать отбор в таблице значений, проконтролировать результат (почистить «хвосты» — строки, родитель которых не удовлетворил условию отбора) и выполнить обратное преобразование в дерево значений.

На этом все, рассказал все, что знал, надеюсь мне удалось сэкономить Вам немного времени.

Если Вы нашли ошибку или неточность, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

УжасноПлохоНеплохоХорошо Отлично(оценок: 36, средняя оценка: 4,64 из 5)

Источник

Оцените статью