Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Значения ячеек и элементы управления в табличном документе          
Batchir Подменю пользователя
сообщение 08.02.09, 17:25
Сообщение #1

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1426 раз
Рейтинг: 0

Табличный документ (ТД) состоит из строк и столбцов, которые образуют ячейки. В этой статье рассмотрены возможности 1С:Предприятия 8, позволяющие разместить в ячейках табличного документа элементы управления для редактирования значений.

Ниже рассмотрены следующие темы:
- Свойства "Текст" и "Значение"
- Свойство "Формат"
- Элементы управления
       - Элементы управления, встроенные в ячейку
       - Элементы управления, не встроенные в ячейку
       - Расширение элементов управления, расположенных в поле табличного документа
- Свойство "Защита"

Свойства "Текст" и "Значение" ячейки табличного документа

Основные свойства у каждой ячейки табличного документа — это "Текст" и "Значение", причем по умолчанию доступно свойство "Текст", а свойство "Значение" заблокировано.

ВАЖНО! Свойства "Текст" и "Значение" не могут быть использованы одновременно! Если свойство-признак "СодержитЗначение" установлено в значение Истина, то свойство "Текст" недоступно, и наоборот, если свойство-признак "СодержитЗначение" равно Ложь, то свойство "Значение" недоступно, а также все связанные другие свойства, например, "ТипЗначения" и "ЭлементУправления".


Свойство "Текст" имеет тип "Строка". Если в ячейке необходимо разместить какую-либо текстовую информацию, необходимо использовать именно свойство "Текст", например:


ПолеТабДок = ЭлементыФормы.тдПолеТабличногоДокумента;
ПолеТабДок.Область("R1C2").Текст = спрНоменклатура.Наименование;
ПолеТабДок.Область("R2C2").Текст = "Это Строка"; //указываем явно литерал строки



Обратите внимание, что даже если вы присвоите свойству "Текст" значение другого типа (не строкового), то оно все равно будет интерпретировано как строка. Значения базовых типов преобразуются к строке, а для ссылочных типов данных (элементов справочников, документов и т.д.) берется их представление. Если же необходимо разместить в ячейке значение другого типа, например, число, булево, дату или ссылку, и при этом не преобразовывать это значение к строке, то нужно использовать свойство "Значение".

Для того, чтобы появилась возможность использовать свойство "Значение", необходимо явно присвоить свойству ячейки "СодержитЗначение" значение Истина или установить флажок "Содержит значение" в палитре свойств.

Для ячейки, у которой установлен признак "СодержитЗначение", можно задать тип значения, размещаемого в ячейке.

Следующий фрагмент демонстрирует, как можно управлять этими свойствами из встроенного языка://задаем нужный тип с помощью объекта "ОписаниеТипов"



МассивБулево = Новый Массив;
МассивБулево.Добавить(Тип("Булево"));
ОписаниеТиповБулево = Новый ОписаниеТипов(МассивБулево);
//...
ПолеТабДок = ЭлементыФормы.тдПолеТабличногоДокумента;
ПолеТабДок.Область("R3C3").СодержитЗначение = Истина; //указываем, что в ячейке будет значение
ПолеТабДок.Область("R3C3").ТипЗначения = ОписаниеТиповБулево; //указываем тип значения
ПолеТабДок.Область("R3C3").Значение = СпрНоменклатура.Услуга; //значение, типа "Булево" из справочника


Свойство "Формат" ячейки табличного документа

Для ячейки табличного документа можно задавать формат вывода данных. Для этого используется свойство "Формат", которое содержит форматную строку. Приемы работы с форматной строкой полностью совпадают с функцией Формат() системы 1С:Предприятие 8. Свойство "Формат" может быть установлено как интерактивно — через палитру свойств, так и программно — из встроенного языка, например:


ПолеТабДок = ЭлементыФормы.тдПолеТабличногоДокумента;
ПолеТабДок.Область("R4C3").ТипЗначения = ОписаниеТиповДата; //указываем тип, ранее заданный для Даты
ПолеТабДок.Область("R4C3").Значение = ТекущаяДата();
//указываем форматную строку
//будет выглядеть как "[031120-2315]-", если текущая дата '20-11-2003 23:15:00')
ПолеТабДок.Область("R4C3").Формат = "ДФ=[ггММдд-ЧЧмм]-";


Элемент управления в табличном документе

Для ячейки, у которой установлен признак "СодержитЗначение", можно также задать элемент управления, который будет использоваться для редактирования этого значения.

Элемент управления можно назначить через палитру свойств или из встроенного языка с помощью метода "УстановитьЭлементУправления()". Чтобы проверить в программе, установлен ли элемент управления для конкретной ячейки, можно использовать свойство "ЭлементУправления", которое возвращает элемент управления, назначенный для ячейки.

Элементы управления, встроенные в ячейку, отображаются только при входе в режим редактирования значения. На приведенном ниже рисунке редактируемая ячейка обведена овалом и в ней отображается флажок:

Ниже показан пример установки элемента управления типа "Флажок" из встроенного языка://задаем нужный тип с помощью объекта "ОписаниеТипов"



МассивБулево = Новый Массив;
МассивБулево.Добавить(Тип("Булево"));
ОписаниеТиповБулево = Новый ОписаниеТипов(МассивБулево);
...
ПолеТабДок = ЭлементыФормы.тдПолеТабличногоДокумента;
ПолеТабДок.Область("R5C3").СодержитЗначение = Истина; //указываем, что в ячейке будет значение
ПолеТабДок.Область("R5C3").ТипЗначения = ОписаниеТиповБулево; //указываем ранее заданный тип
ПолеТабДок.Область("R5C3").Значение = СпрНоменклатура.Услуга; //значение, типа "Булево" из справочника
//а теперь указываем, что в ячейке будет отображаться флажок
ПолеТабДок.Область("R5C3").УстановитьЭлементУправления(Тип("Флажок"));



Элементы управления, не встроенные в ячейку

Существует еще один способ размещения элемента управления в ячейке: использование независимого элемента управления и его "привязка" к нужной ячейке. В этому случае сама ячейка не участвует в процессе работы, а ее значения и свойства ни на что не влияют. Значения нужно будет непосредственно получать из элемента управления как обычного элемента формы. Ячейка при этом используется только как область размещения (привязки) элемента управления.
Ниже показано, как могут выглядеть такие элементы управления (не встроенные в ячейку):

В следующем фрагменте приводится пример размещения не встроенного в ячейку элемента управления в табличном документе:


Перем ПолеТабДок;

Процедура УстановитьЭУ(тдОбл, n, ЗначениеЯчейки=Неопределено) //устанавливает элемент управления

ЭлементыФормы.Добавить(Тип("Флажок"), n, Истина, ПолеТабДок);
ЭлементыФормы[n].Заголовок = "флажок"+n; //можно задать заголовок элемента управления
ЭлементыФормы[n].Значение = ?(ЗначениеЯчейки=Неопределено, Ложь, ЗначениеЯчейки); //задаем значение ячейки
ЭлементыФормы[n].ИзменяетДанные = Истина; //устанавливаем различные свойства элемента управления
ЭлементыФормы[n].ПрозрачныйФон = Истина;
ЭлементыФормы[n].Расположить(тдОбл); //привязываем элемент управления к ячейке

КонецПроцедуры
// ...
Процедура ЗаполнитьТаблДок() //процедура, заполняющая табличный документ

n = 1;
СпрНоменклатура = Справочники.Номенклатура.Выбрать();
Пока СпрНоменклатура.Следующий() Цикл
// ...
УстановитьЭУ(ПолеТабДок.Область("R" + n + "C3"), n, СпрНоменклатура.Услуга);
// ...
n = n + 1;
КонецЦикла;

КонецПроцедуры

ПолеТабДок = ЭлементыФормы.тдПолеТабличногоДокумента;



Расширение элементов управления, расположенных в поле табличного документа

Для элементов управления, расположенных в табличном документе, расширяется набор свойств, методов и событий:

Разберем самые важные свойства и методы:
Свойство "ВстроенВЯчейку" имеет тип "булево" и говорит о том, что элемент управления встраивается в ячейку или просто привязывается к ней, о чем было рассказано выше.
Свойство "Видимость" позволяет показать или скрыть элемент управления.
Свойство "Значение" предоставляет доступ к значению, которое редактируется в элементе управления. Оно используется только для элементов управления, поддерживающих связь с данными.
Метод "Расположить" позволяет разместить элемент управления в конкретной области ячеек табличного документа. Именно этот метод был использован в вышеприведенном примере.

Для элементов управления, расположенных в табличном документе, можно обрабатывать события, например, "При изменении". Процедура-обработчик события должен находиться в модуле формы. Вот почему элементы управления имеет смысл располагать в табличном документе, только если он выводится в диалог формы (в поле табличного документа).
Свойство "Защита" ячейки табличного документа

Это свойство имеет тип "Булево" и содержит признак защиты ячейки от редактирования. В режиме просмотра в табличном документе недоступны для редактирования ячейки и рисунки, у которых установлено свойство "Защита".

Устанавливается это свойство так же, как и любое другое:


ПолеТабДок = ЭлементыФормы.тдПолеТабличногоДокумента;
ПолеТабДок.Область("R4C3").Защита = Истина;


Резюме
У ячейки табличного документа есть два альтернативных свойства "Текст" и "Значение".
Ячейке можно задать тип хранимого значения, формат вывода и элемент управления.
Большинство свойств и методов применимы не только для отдельной ячейки, но и для области ячеек табличного документа.
Средства встроенного языка позволяют управлять структурой и внешним видом ячеек и областей табличного документа.

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.03.24, 10:25
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!