Тип: Булево. Определяет возможность редактирования ячейки.
Полное описание, параметры и ограничения
ОформлениеЯчейки.ТолькоПросмотр (CellAppearance.ReadOnly)
ОформлениеЯчейки (CellAppearance)
ТолькоПросмотр (ReadOnly)
Доступен, начиная с версии 8.0.
Использование:
Чтение и запись.
Описание:
Тип: Булево.
Определяет возможность редактирования ячейки.
Доступность:
Толстый клиент.
Примечание:
Если свойство ТолькоПросмотр равно Истина, становится невозможным редактирование ячейки табличного поля, однако на остальную работу с ячейкой это не влияет. Например, можно выделить строковое представление содержимого ячейки и скопировать в буфер обмена.
Использование в версии:
Доступен, начиная с версии 8.0.
Методическая информация
Практические примеры
Различить флажок оформления и булево значение строки
Собственная колонка Выбран хранит Ложь. Объект оформления по очереди показывает установленный, снятый и неопределённый флажки; бизнес-значение не меняется.
Где и как запускать
Полный модуль своей обычной формы; толстый клиент. Оформление текущей строки, не обработчик управляемой формы.
Подготовка
Создайте отдельную внешнюю обработку с обычной формой в учебной базе. Запускайте толстым клиентом с обычными формами.
Добавьте реквизит Товары (ТаблицаЗначений), табличное поле ТаблицаТоваров с Данные = Товары и обычную кнопку УчебнаяКоманда вне таблицы.
Событие ПриОткрытии свяжите с одноимённой процедурой. Нажатие кнопки вручную не назначайте: оно устанавливается объектом Действие. Экспортная процедура ПроверитьОформлениеЯчейки(Элемент) получает кнопку формы; это не событие редактора ячейки.
Каждый урок — полный модуль отдельной копии этой формы. Колонки и две строки создаются заново только в своём реквизите. Код нельзя переносить в рабочую таблицу без адаптации.
Процедура ПриОткрытии()
Товары = Новый ТаблицаЗначений;
Товары.Колонки.Добавить("Код", Новый ОписаниеТипов("Строка"));
Товары.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка"));
Товары.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число"));
Товары.Колонки.Добавить("Выбран", Новый ОписаниеТипов("Булево"));
Книга = Товары.Добавить();
Книга.Код = "A-01";
Книга.Наименование = "Книга";
Книга.Количество = 3;
Книга.Выбран = Ложь;
Ручка = Товары.Добавить();
Ручка.Код = "B-02";
Ручка.Наименование = "Ручка";
Ручка.Количество = 1;
Ручка.Выбран = Ложь;
Таблица = ЭтаФорма.ЭлементыФормы.ТаблицаТоваров;
Таблица.СоздатьКолонки();
Таблица.АвтоВводНовойСтроки = Ложь;
Если Товары.Количество() <> 2 Тогда
ВызватьИсключение "Ожидались два собственных учебных товара";
КонецЕсли;
Таблица.ТекущаяСтрока = Товары[0];
Кнопка = ЭтаФорма.ЭлементыФормы.УчебнаяКоманда;
Кнопка.УстановитьДействие("Нажатие", Новый Действие("ПроверитьОформлениеЯчейки"));
КонецПроцедуры
Процедура ПроверитьОформлениеЯчейки(Элемент) Экспорт
Таблица = ЭтаФорма.ЭлементыФормы.ТаблицаТоваров;
Текущая = Таблица.ТекущаяСтрока;
Если Текущая = Неопределено Тогда
Сообщить("Сначала выберите свою книгу или ручку");
Возврат;
КонецЕсли;
Оформление = Таблица.ОформлениеСтроки(Текущая);
Если Оформление = Неопределено Тогда
ВызватьИсключение "Не получено оформление собственной строки";
КонецЕсли;
Ячейка = Оформление.Ячейки["Выбран"];
ИсходныйВыбор = Оформление.ДанныеСтроки.Выбран;
Сообщить(Ячейка.ЗначениеФлажка = ИсходныйВыбор);
Ячейка.ОтображатьТекст = Ложь;
Ячейка.ОтображатьКартинку = Ложь;
Ячейка.ТолькоПросмотр = Истина;
Ячейка.УстановитьФлажок(Истина);
Сообщить(Ячейка.ОтображатьФлажок И Ячейка.Флажок = Истина);
Ячейка.УстановитьФлажок(Ложь);
Сообщить(Ячейка.Флажок = Ложь);
Ячейка.Флажок = 2;
Ячейка.ОтображатьФлажок = Истина;
Сообщить(Ячейка.Флажок = 2);
Сообщить(Оформление.ДанныеСтроки.Выбран = ИсходныйВыбор);
Сообщить(Товары[0].Выбран = Ложь И Товары[1].Выбран = Ложь);
КонецПроцедурыРазбор по шагам
ЗначениеФлажка у связанной колонки читается, не присваивается. Отдельное свойство Флажок управляет изображением.
УстановитьФлажок устанавливает Флажок и автоматически включает ОтображатьФлажок; два первых состояния проверяются непосредственно после вызова.
По локальной справке числовой флажок 0 означает снят, 1 установлен, 2 не определён. Булево допускает только два состояния.
Три установки выполнены подряд в одной команде, поэтому экран может показать только итоговое третье состояние; сравнения проверяют промежуточные значения.
Для реального выбора товара изменяют данные строки и проверяют бизнес-правила. Этот урок намеренно не выбирает товар через оформление.
Как проверить результат
Шесть Истина. В конце Флажок = 2, но обе строки всё ещё хранят Выбран = Ложь.
Откройте форму заново: новый собственный набор снова содержит книгу и ручку без отметок.
Ожидаемый результат
Видимое состояние флажка не перепутано с сохранённым логическим значением.
На что обратить внимание
Не переносите числовую трёхсостоянию модель на произвольное булево поле.
Оформление может измениться после перерисовки; пример не обещает последовательную анимацию трёх состояний.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Выделить количество, не меняя данные товара
Вместо голого числа выводим понятный текст Осталось: 3. Данные своей книги остаются числом 3; оформление не становится способом записи связанной колонки.
Где и как запускать
Полный модуль своей обычной формы; толстый клиент. Оформление текущей строки, не обработчик управляемой формы.
Подготовка
Создайте отдельную внешнюю обработку с обычной формой в учебной базе. Запускайте толстым клиентом с обычными формами.
Добавьте реквизит Товары (ТаблицаЗначений), табличное поле ТаблицаТоваров с Данные = Товары и обычную кнопку УчебнаяКоманда вне таблицы.
Событие ПриОткрытии свяжите с одноимённой процедурой. Нажатие кнопки вручную не назначайте: оно устанавливается объектом Действие. Экспортная процедура ПроверитьОформлениеЯчейки(Элемент) получает кнопку формы; это не событие редактора ячейки.
Каждый урок — полный модуль отдельной копии этой формы. Колонки и две строки создаются заново только в своём реквизите. Код нельзя переносить в рабочую таблицу без адаптации.
Процедура ПриОткрытии()
Товары = Новый ТаблицаЗначений;
Товары.Колонки.Добавить("Код", Новый ОписаниеТипов("Строка"));
Товары.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка"));
Товары.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число"));
Товары.Колонки.Добавить("Выбран", Новый ОписаниеТипов("Булево"));
Книга = Товары.Добавить();
Книга.Код = "A-01";
Книга.Наименование = "Книга";
Книга.Количество = 3;
Книга.Выбран = Ложь;
Ручка = Товары.Добавить();
Ручка.Код = "B-02";
Ручка.Наименование = "Ручка";
Ручка.Количество = 1;
Ручка.Выбран = Ложь;
Таблица = ЭтаФорма.ЭлементыФормы.ТаблицаТоваров;
Таблица.СоздатьКолонки();
Таблица.АвтоВводНовойСтроки = Ложь;
Если Товары.Количество() <> 2 Тогда
ВызватьИсключение "Ожидались два собственных учебных товара";
КонецЕсли;
Таблица.ТекущаяСтрока = Товары[0];
Кнопка = ЭтаФорма.ЭлементыФормы.УчебнаяКоманда;
Кнопка.УстановитьДействие("Нажатие", Новый Действие("ПроверитьОформлениеЯчейки"));
КонецПроцедуры
Процедура ПроверитьОформлениеЯчейки(Элемент) Экспорт
Таблица = ЭтаФорма.ЭлементыФормы.ТаблицаТоваров;
Текущая = Таблица.ТекущаяСтрока;
Если Текущая = Неопределено Тогда
Сообщить("Сначала выберите свою книгу или ручку");
Возврат;
КонецЕсли;
Оформление = Таблица.ОформлениеСтроки(Текущая);
Если Оформление = Неопределено Тогда
ВызватьИсключение "Не получено оформление собственной строки";
КонецЕсли;
Ячейка = Оформление.Ячейки["Количество"];
ИсходноеКоличество = Оформление.ДанныеСтроки.Количество;
Сообщить(Ячейка.Имя = "Количество");
Сообщить(Ячейка.Значение = ИсходноеКоличество);
Ячейка.Видимость = Истина;
Ячейка.Выравнивание = ГоризонтальноеПоложение.Право;
Ячейка.АвтоВысотаЯчейки = Истина;
Ячейка.ВысотаЯчейки = 2;
Ячейка.ТолькоПросмотр = Истина;
Ячейка.ОтметкаНезаполненного = Ложь;
Ячейка.Гиперссылка = Ложь;
Ячейка.ЦветТекста = Новый Цвет(24, 40, 60);
Ячейка.ЦветФона = Новый Цвет(235, 244, 255);
Ячейка.Шрифт = Новый Шрифт(Ячейка.Шрифт, , 12, Истина);
Ячейка.ОтображатьКартинку = Ложь;
Ячейка.ОтображатьФлажок = Ложь;
Ячейка.УстановитьТекст("Осталось: " + Строка(ИсходноеКоличество));
Сообщить(Ячейка.ОтображатьТекст);
Сообщить(Ячейка.Текст = "Осталось: " + Строка(ИсходноеКоличество));
Сообщить(Оформление.ДанныеСтроки.Количество = ИсходноеКоличество);
Сообщить(Товары.Итог("Количество") = 4);
КонецПроцедурыРазбор по шагам
Ячейки индексируются именем существующей колонки. Количество создана в этом же модуле; Имя только читается.
Значение только читаем: у связанной с данными колонки оно недоступно для записи. УстановитьТекст меняет представление, а не число в строке.
УстановитьТекст автоматически включает ОтображатьТекст. Остальные каналы изображения выключены явно.
АвтоВысотаЯчейки включает расчёт высоты; ВысотаЯчейки = 2 ограничивает её двумя строками текста, не двумя пикселями.
ОтметкаНезаполненного = Ложь скрывает визуальную отметку, не делает данные заполненными. ТолькоПросмотр ограничивает редактор этой ячейки, не права пользователя.
Как проверить результат
При первоначально выбранной книге: шесть Истина; текст Осталось: 3. Для ручки — Осталось: 1.
Итог Количество остаётся 4. При перерисовке оформление может пересчитаться.
Ожидаемый результат
Показано понятное представление числа с проверкой неизменности исходных данных.
На что обратить внимание
Для устойчивого оформления используйте событие ПриВыводеСтроки; этот пример исследует оформление текущей строки.
Ограничение АвтоВысотаЯчейки для предопределённой таблицы Ганта здесь не применяется: это собственная таблица значений.
Гиперссылка выключена: обработчик Выбор и переходы в рабочие объекты не требуются.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.