Удаляет старые колонки и загружает новые колонки из источника данных.
Синтаксис
СоздатьКолонки()Примеры платформы
ЭлементыФормы.ТабличноеПоле1.Значение = ТаблицаДанных;
ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();Полное описание, параметры и ограничения
ТабличноеПоле.СоздатьКолонки (TableBox.CreateColumns)
ТабличноеПоле (TableBox)
СоздатьКолонки (CreateColumns)
Доступен, начиная с версии 8.0.
Синтаксис:
СоздатьКолонки()
Описание:
Удаляет старые колонки и загружает новые колонки из источника данных.
Доступность:
Толстый клиент.
Пример:
ЭлементыФормы.ТабличноеПоле1.Значение = ТаблицаДанных;
ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();
Использование в версии:
Доступен, начиная с версии 8.0.
Методическая информация
Практические примеры
Различить флажок оформления и булево значение строки
Собственная колонка Выбран хранит Ложь. Объект оформления по очереди показывает установленный, снятый и неопределённый флажки; бизнес-значение не меняется.
Где и как запускать
Полный модуль своей обычной формы; толстый клиент. Оформление текущей строки, не обработчик управляемой формы.
Подготовка
Создайте отдельную внешнюю обработку с обычной формой в учебной базе. Запускайте толстым клиентом с обычными формами.
Добавьте реквизит Товары (ТаблицаЗначений), табличное поле ТаблицаТоваров с Данные = Товары и обычную кнопку УчебнаяКоманда вне таблицы.
Событие ПриОткрытии свяжите с одноимённой процедурой. Нажатие кнопки вручную не назначайте: оно устанавливается объектом Действие. Экспортная процедура ПроверитьОформлениеЯчейки(Элемент) получает кнопку формы; это не событие редактора ячейки.
Каждый урок — полный модуль отдельной копии этой формы. Колонки и две строки создаются заново только в своём реквизите. Код нельзя переносить в рабочую таблицу без адаптации.
Процедура ПриОткрытии()
Товары = Новый ТаблицаЗначений;
Товары.Колонки.Добавить("Код", Новый ОписаниеТипов("Строка"));
Товары.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка"));
Товары.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число"));
Товары.Колонки.Добавить("Выбран", Новый ОписаниеТипов("Булево"));
Книга = Товары.Добавить();
Книга.Код = "A-01";
Книга.Наименование = "Книга";
Книга.Количество = 3;
Книга.Выбран = Ложь;
Ручка = Товары.Добавить();
Ручка.Код = "B-02";
Ручка.Наименование = "Ручка";
Ручка.Количество = 1;
Ручка.Выбран = Ложь;
Таблица = ЭтаФорма.ЭлементыФормы.ТаблицаТоваров;
Таблица.СоздатьКолонки();
Таблица.АвтоВводНовойСтроки = Ложь;
Если Товары.Количество() <> 2 Тогда
ВызватьИсключение "Ожидались два собственных учебных товара";
КонецЕсли;
Таблица.ТекущаяСтрока = Товары[0];
Кнопка = ЭтаФорма.ЭлементыФормы.УчебнаяКоманда;
Кнопка.УстановитьДействие("Нажатие", Новый Действие("ПроверитьОформлениеЯчейки"));
КонецПроцедуры
Процедура ПроверитьОформлениеЯчейки(Элемент) Экспорт
Таблица = ЭтаФорма.ЭлементыФормы.ТаблицаТоваров;
Текущая = Таблица.ТекущаяСтрока;
Если Текущая = Неопределено Тогда
Сообщить("Сначала выберите свою книгу или ручку");
Возврат;
КонецЕсли;
Оформление = Таблица.ОформлениеСтроки(Текущая);
Если Оформление = Неопределено Тогда
ВызватьИсключение "Не получено оформление собственной строки";
КонецЕсли;
Ячейка = Оформление.Ячейки["Выбран"];
ИсходныйВыбор = Оформление.ДанныеСтроки.Выбран;
Сообщить(Ячейка.ЗначениеФлажка = ИсходныйВыбор);
Ячейка.ОтображатьТекст = Ложь;
Ячейка.ОтображатьКартинку = Ложь;
Ячейка.ТолькоПросмотр = Истина;
Ячейка.УстановитьФлажок(Истина);
Сообщить(Ячейка.ОтображатьФлажок И Ячейка.Флажок = Истина);
Ячейка.УстановитьФлажок(Ложь);
Сообщить(Ячейка.Флажок = Ложь);
Ячейка.Флажок = 2;
Ячейка.ОтображатьФлажок = Истина;
Сообщить(Ячейка.Флажок = 2);
Сообщить(Оформление.ДанныеСтроки.Выбран = ИсходныйВыбор);
Сообщить(Товары[0].Выбран = Ложь И Товары[1].Выбран = Ложь);
КонецПроцедурыРазбор по шагам
ЗначениеФлажка у связанной колонки читается, не присваивается. Отдельное свойство Флажок управляет изображением.
УстановитьФлажок устанавливает Флажок и автоматически включает ОтображатьФлажок; два первых состояния проверяются непосредственно после вызова.
По локальной справке числовой флажок 0 означает снят, 1 установлен, 2 не определён. Булево допускает только два состояния.
Три установки выполнены подряд в одной команде, поэтому экран может показать только итоговое третье состояние; сравнения проверяют промежуточные значения.
Для реального выбора товара изменяют данные строки и проверяют бизнес-правила. Этот урок намеренно не выбирает товар через оформление.
Как проверить результат
Шесть Истина. В конце Флажок = 2, но обе строки всё ещё хранят Выбран = Ложь.
Откройте форму заново: новый собственный набор снова содержит книгу и ручку без отметок.
Ожидаемый результат
Видимое состояние флажка не перепутано с сохранённым логическим значением.
На что обратить внимание
Не переносите числовую трёхсостоянию модель на произвольное булево поле.
Оформление может измениться после перерисовки; пример не обещает последовательную анимацию трёх состояний.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Отделить картинку данных от картинки оформления
В отдельной колонке хранится собственная PNG 32×32. Считываем её как ЗначениеКартинки и назначаем пустую картинку оформлению, не стирая двоичный ресурс из строки.
Где и как запускать
Полный модуль своей обычной формы; толстый клиент. Оформление текущей строки, не обработчик управляемой формы.
Подготовка
Создайте отдельную внешнюю обработку с обычной формой в учебной базе. Запускайте толстым клиентом с обычными формами.
Добавьте реквизит Товары (ТаблицаЗначений), табличное поле ТаблицаТоваров с Данные = Товары и обычную кнопку УчебнаяКоманда вне таблицы.
Событие ПриОткрытии свяжите с одноимённой процедурой. Нажатие кнопки вручную не назначайте: оно устанавливается объектом Действие. Экспортная процедура ПроверитьОформлениеЯчейки(Элемент) получает кнопку формы; это не событие редактора ячейки.
Каждый урок — полный модуль отдельной копии этой формы. Колонки и две строки создаются заново только в своём реквизите. Код нельзя переносить в рабочую таблицу без адаптации.
Процедура ПриОткрытии()
Товары = Новый ТаблицаЗначений;
Товары.Колонки.Добавить("Код", Новый ОписаниеТипов("Строка"));
Товары.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка"));
Товары.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число"));
Товары.Колонки.Добавить("Выбран", Новый ОписаниеТипов("Булево"));
Книга = Товары.Добавить();
Книга.Код = "A-01";
Книга.Наименование = "Книга";
Книга.Количество = 3;
Книга.Выбран = Ложь;
Ручка = Товары.Добавить();
Ручка.Код = "B-02";
Ручка.Наименование = "Ручка";
Ручка.Количество = 1;
Ручка.Выбран = Ложь;
Товары.Колонки.Добавить("УчебнаяКартинка", Новый ОписаниеТипов("Картинка"));
Байты = Base64Значение("iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAArklEQVR4nO3VOxKAIAxF0SzEtbgk99/FRhuE8F4+0lCkc3LPCDOIqsrKWRrfADfguE7tTSlgFI1iSuIMoiyOIkrjD8BE/BE3/0R5/AWMEFXn/om7Ae0SbxwGWOcYiY8QMGCGIL7jAMhyNO4GTC4We0w+QC/GxsOANsrGIQCLiMTDACaeDmDjFCDrPZjFTUAmwmqYgKSHSUKACALZDQE8CHQvDEAwnl0uQOZsgKwG3AxgSxA9ZssYAAAAAElFTkSuQmCC");
Книга.УчебнаяКартинка = Новый Картинка(Байты);
Ручка.УчебнаяКартинка = Новый Картинка(Байты);
Таблица = ЭтаФорма.ЭлементыФормы.ТаблицаТоваров;
Таблица.СоздатьКолонки();
Таблица.АвтоВводНовойСтроки = Ложь;
Если Товары.Количество() <> 2 Тогда
ВызватьИсключение "Ожидались два собственных учебных товара";
КонецЕсли;
Таблица.ТекущаяСтрока = Товары[0];
Кнопка = ЭтаФорма.ЭлементыФормы.УчебнаяКоманда;
Кнопка.УстановитьДействие("Нажатие", Новый Действие("ПроверитьОформлениеЯчейки"));
КонецПроцедуры
Процедура ПроверитьОформлениеЯчейки(Элемент) Экспорт
Таблица = ЭтаФорма.ЭлементыФормы.ТаблицаТоваров;
Текущая = Таблица.ТекущаяСтрока;
Если Текущая = Неопределено Тогда
Сообщить("Сначала выберите свою книгу или ручку");
Возврат;
КонецЕсли;
Оформление = Таблица.ОформлениеСтроки(Текущая);
Если Оформление = Неопределено Тогда
ВызватьИсключение "Не получено оформление собственной строки";
КонецЕсли;
Ячейка = Оформление.Ячейки["УчебнаяКартинка"];
КартинкаДанных = Ячейка.ЗначениеКартинки;
Если ТипЗнч(КартинкаДанных) <> Тип("Картинка") Тогда
ВызватьИсключение "Ожидалась собственная картинка данных";
КонецЕсли;
Сообщить(КартинкаДанных.Ширина() = 32 И КартинкаДанных.Высота() = 32);
Ячейка.ОтображатьТекст = Ложь;
Ячейка.ОтображатьФлажок = Ложь;
Ячейка.Картинка = Новый Картинка;
Ячейка.ИндексКартинки = 0;
Ячейка.ОтображатьКартинку = Ложь;
Сообщить(НЕ Ячейка.ОтображатьКартинку);
Ячейка.УстановитьКартинку(Новый Картинка);
Сообщить(Ячейка.ОтображатьКартинку);
Сообщить(Оформление.ДанныеСтроки.УчебнаяКартинка.Ширина() = 32);
Сообщить(Оформление.ДанныеСтроки.УчебнаяКартинка.Высота() = 32);
Сообщить(Товары.Итог("Количество") = 4);
КонецПроцедурыРазбор по шагам
Колонка УчебнаяКартинка создаётся до СоздатьКолонки, имеет тип Картинка и связана с собственными данными. Base64 содержит ресурс, не путь или URL.
ЗначениеКартинки только читается; перед чтением размеров проверяется тип. Данные строки действительно содержат PNG 32×32.
Картинка оформления программно допускает Пустая или ИзБиблиотеки. Поэтому туда не присваивается Новый Картинка(Байты). В этом уроке используется допустимая пустая картинка.
ИндексКартинки = 0 не означает наличие картинки с нулевым индексом: собственная картинка оформления пустая, а не коллекция бизнес-значков.
УстановитьКартинку автоматически включает ОтображатьКартинку, но пустой ресурс от этого не становится видимым значком. Последние проверки читают исходный ресурс строки.
Как проверить результат
Шесть Истина; ресурс в строке остаётся 32×32 и общий итог количества 4.
Здесь нет обещания показать пиктограмму после назначения пустой картинки. Сравниваются канал оформления и сохранность данных.
Ожидаемый результат
Показан безопасный сброс декоративной картинки без очистки собственной картинки данных.
На что обратить внимание
ЗначениеКартинки связанной колонки не используйте как точку записи.
Рекомендованный размер декоративной картинки 14×14; PNG 32×32 здесь является проверяемым значением данных, не рекомендованной иконкой.
Результат перерисовки и приоритет каналов оформления следует проверить в толстом клиенте; автоматической проверки 1С здесь нет.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.