- Изменить название колонки таблицы
- Поменять имя колонки в ТаблицеЗначений 82
- ДеревоЗначений.Колонки Метод Добавить()
- Пример использования
- Читайте также:
- Работа с деревом значений в 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)
Источник