25 апреля 2017 г.

Область Табличного Документа в 1С

Как программно изменить текст, цвет, фон ячейки или области табличного документа?
Ниже приведено несколько полезных шаблонов кода по работе с табличным документом:
Код 1C v 8.х
 //Пример получения текста ячейки
ПолеТабДок = ЭлементыФормы.тдПолеТабличногоДокумента; 
ПолеТабДок.Область("R1C2").Текст = спрНоменклатура.Наименование;
ПолеТабДок.Область("R2C2").Текст = "Это Строка"; //указываем явно литерал строки
   
Код 1C v 8.х
 // Изменение текста в области или ячейке

Для а = 11 по ТабличныйДокумент.ВысотаТаблицы Цикл
  //Ячейка = ТабличныйДокумент.Область(а,1,а,1).Текст; 
  текстЯчейка = ТабличныйДокумент.Область("R"+а+"C2").Текст; 
  Если Строка(ТабличныйДокумент.Область("R"+а+"C2").ЦветФона)="стиль: Фон кнопки" Тогда
   ТабличныйДокумент.Область("R"+а+"C7").Текст="";
   ТабличныйДокумент.Область("R"+а+"C11").Текст=""; 
   ТабличныйДокумент.Область("R"+а+"C8").Текст="";   
   ТабличныйДокумент.Область("R"+а+"C9").Текст="";   
   ТабличныйДокумент.Область("R"+а+"C10").Текст="";  
   
  КонецЕсли;
  
 КонецЦикла;
   
Код 1C v 8.х
 // Как раскрасить ячейку или область табличного документа в зависимости от условия
ТабДок = ЭлементыФормы.ПолеТабличногоДокумента; // Получаем табличный документ из формы 
ТабДок.Очистить(); // Очищаем табличный документ 
Макет = ПолучитьМакет("Макет"); // Получаем макет с именем "Макет" из текущего объекта 
ОбластьСтрокаТаб = Макет.ПолучитьОбласть("СтрокаТаб"); // Получаем область из макета 
ОбластьСтрокаТаб.Параметры.НашПараметр = 1; // Устанавливаем значение 1 параметру "НашПараметр" 
ОбластьОформления = ТабДок.Вывести(ОбластьСтрокаТаб); 
// Вот собственно и само оформление ячейки 
ТабДок.Область(ОбластьОформления.Верх, ОбластьОформления.Лево, ОбластьОформления.Низ, ОбластьОформления.Лево).ЦветФона = WebЦвета.Красный;
   
Код 1C v 8.х
 //Пример изменения цвета текста при выводе данных в табличный документ

        Таб.ВывестиСекцию("Контрагент");

        // Изменим Текст ячейки, имя которой заранее задали как "ТекстОСостоянии"

        Таб.Область("ТекстОСостоянии").Текст = "Хорошо";

        // В зависимости от условия изменим Цвет Текста

        Если Раз<0 br="">
          Таб.Область(Таб.ВысотаТаблицы(),9,Таб.ВысотаТаблицы(),9).ЦветТекста(255,0,0); 

           ИначеЕсли Раз>0 Тогда

          Таб.Область(Таб.ВысотаТаблицы(),9,Таб.ВысотаТаблицы(),9).ЦветТекста(0,0,255);

       КонецЕсли;   
Для того, чтобы появилась возможность использовать свойство "Значение", необходимо явно присвоить свойству ячейки "СодержитЗначение" значение Истина или установить флажок "Содержит значение" в палитре свойств.
Для ячейки, у которой установлен признак "СодержитЗначение", можно задать тип значения, размещаемого в ячейке.
Следующий фрагмент демонстрирует, как можно управлять этими свойствами из встроенного языка://задаем нужный тип с помощью объекта "ОписаниеТипов"
Код 1C v 8.х
 МассивБулево = Новый Массив; 
МассивБулево.Добавить(Тип("Булево"));
ОписаниеТиповБулево = Новый ОписаниеТипов(МассивБулево);
//...
ПолеТабДок = ЭлементыФормы.тдПолеТабличногоДокумента; 
ПолеТабДок.Область("R3C3").СодержитЗначение = Истина; //указываем, что в ячейке будет значение
ПолеТабДок.Область("R3C3").ТипЗначения = ОписаниеТиповБулево; //указываем тип значения
ПолеТабДок.Область("R3C3").Значение = СпрНоменклатура.Услуга; //значение, типа "Булево" из справочника   
Для ячейки табличного документа можно задавать формат вывода данных. Для этого используется свойство "Формат", которое содержит форматную строку. Приемы работы с форматной строкой полностью совпадают с функцией Формат()
Код 1C v 8.х
 ПолеТабДок = ЭлементыФормы.тдПолеТабличногоДокумента; 
ПолеТабДок.Область("R4C3").ТипЗначения = ОписаниеТиповДата; //указываем тип, ранее заданный для Даты
ПолеТабДок.Область("R4C3").Значение = ТекущаяДата();
//указываем форматную строку 
//будет выглядеть как "[031120-2315]-", если текущая дата '20-11-2003 23:15:00') 
ПолеТабДок.Область("R4C3").Формат = "ДФ=[ггММдд-ЧЧмм]-";   
Элемент управления в табличном документе
Для ячейки, у которой установлен признак "СодержитЗначение", можно также задать элемент управления, который будет использоваться для редактирования этого значения.
Элемент управления можно назначить через палитру свойств или из встроенного языка с помощью метода "УстановитьЭлементУправления()". Чтобы проверить в программе, установлен ли элемент управления для конкретной ячейки, можно использовать свойство "ЭлементУправления", которое возвращает элемент управления, назначенный для ячейки.
Элементы управления, встроенные в ячейку, отображаются только при входе в режим редактирования значения. На приведенном ниже рисунке редактируемая ячейка обведена овалом и в ней отображается флажок:
Ниже показан пример установки элемента управления типа "Флажок" из встроенного языка://задаем нужный тип с помощью объекта "ОписаниеТипов"
Код 1C v 8.х
 МассивБулево = Новый Массив; 
МассивБулево.Добавить(Тип("Булево"));
ОписаниеТиповБулево = Новый ОписаниеТипов(МассивБулево);
...
ПолеТабДок = ЭлементыФормы.тдПолеТабличногоДокумента; 
ПолеТабДок.Область("R5C3").СодержитЗначение = Истина; //указываем, что в ячейке будет значение
ПолеТабДок.Область("R5C3").ТипЗначения = ОписаниеТиповБулево; //указываем ранее заданный тип
ПолеТабДок.Область("R5C3").Значение = СпрНоменклатура.Услуга; //значение, типа "Булево" из справочника
//а теперь указываем, что в ячейке будет отображаться флажок
ПолеТабДок.Область("R5C3").УстановитьЭлементУправления(Тип("Флажок"));   
Для элементов управления, расположенных в табличном документе, расширяется набор свойств, методов и событий:
Разберем самые важные свойства и методы:
Свойство "ВстроенВЯчейку" имеет тип "булево" и говорит о том, что элемент управления встраивается в ячейку или просто привязывается к ней, о чем было рассказано выше.
Свойство "Видимость" позволяет показать или скрыть элемент управления.
Свойство "Значение" предоставляет доступ к значению, которое редактируется в элементе управления. Оно используется только для элементов управления, поддерживающих связь с данными.
Метод "Расположить" позволяет разместить элемент управления в конкретной области ячеек табличного документа. Именно этот метод был использован в вышеприведенном примере.
Код 1C v 8.х
ПолеТабДок = ЭлементыФормы.тдПолеТабличногоДокумента;
ПолеТабДок.Область("R4C3").Защита = Истина;
   

Комментариев нет:

Популярное: