Ниже приведено несколько полезных шаблонов кода по работе с табличным документом:
Код 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 Тогда
Таб.Область(Таб.ВысотаТаблицы(),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").Защита = Истина;
|
|||
moonlight
01.03.16 — 10:58 |
Добрый день! Программно создаю надпись на форме а затем хочу поменять цвет шрифта надписи. Пишу следующее: НовыйЭлемент.ЦветТекста = Новый Цвет(255,0,0); Цвет не меняется Пишу НовыйЭлемент.ЦветФона = Новый Цвет(255,0,0); Цвет фона меняется. Почему не меняется цвет текста? Что делаю не так!? |
||
lubitelxml
1 — 01.03.16 — 11:10 |
УсловноеОформление использовать? |
||
DDwe
2 — 01.03.16 — 11:11 |
(0) Что в надписи? |
||
LordCMEPTb
3 — 01.03.16 — 11:15 |
Возможно, пришло время открыть кусок кода, которым создается НовыйЭлемент? |
||
DDwe
4 — 01.03.16 — 11:21 |
Всё, ушел ТС. |
||
lubitelxml
5 — 01.03.16 — 11:23 |
(4) мда, телепаты зря отработали ) |
||
moonlight
6 — 01.03.16 — 12:29 |
Сорри, отвлекся. Код следующий: НовыйЭлемент=ЭлементыФормы.Создать(Тип(«Надпись»),»Надпись», Истина, ЭлементыФормы.Основнаяпанель); НовыйЭлемент.Заголовок=»бла бла бла»; НовыйЭлемент.ЦветТекста=Новый Цвет(255,0,0); |
||
LordCMEPTb
7 — 01.03.16 — 12:55 |
С семеркой не работал, тут лучше |
||
LordCMEPTb
8 — 01.03.16 — 12:57 |
* к (7) |
||
moonlight
9 — 01.03.16 — 21:53 |
вот точный код: |
||
moonlight
10 — 01.03.16 — 21:53 |
есть идеи? |
||
SiAl-chel
12 — 02.03.16 — 06:52 |
(10) А если элемент формы создать вручную в редакторе форм, то тогда можно будет изменить цвет текста у этого элемента? |
||
LordCMEPTb 13 — 02.03.16 — 13:06 |
(9) А такой цвет вообще есть в конфигурации? Отличается ли он от стандартного? |
Компьютер — устройство разработанное для ускорения и автоматизации человеческих ошибок. |
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку «Обновить» в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
К табличной части справочников, документов и других объектов можно применить такое же условное оформление, как и к динамическому списку. Но в отличие от динамического списка, где настройка списка доступна и в пользовательском режиме, сделать это можно только в режиме конфигуратора или из встроенного языка.
Для этого нужно использовать свойство УсловноеОформление формы.
Например, нужно оформить строки табличной части приходной накладной так, чтобы строки с суммой больше 30000 были выделены желтым фоном, а ячейки Товар и Количество строк табличной части с количеством больше единицы были выделены красным текстом.
Выполним условное оформление интерактивно. Создадим форму документа ПриходнаяНакладная, выделим корень элементов формы (строку Форма) и откроем ее свойства. В строке УсловноеОформление нажмем ссылку Открыть.
В появившемся окне Настройка условного оформления нажмем кнопку Добавить.
Сначала укажем Оформление для выделения полей. Нажмем кнопку выбора в поле Оформление и установим желтый цвет фона.
Затем укажем условие, при наступлении которого будет применяться оформление, то есть когда фон строк табличной части будет желтым.
Нажмем кнопку выбора в поле Условие и в появившемся окне добавим Новый элемент отбора. Для этого нажмем на кнопку Добавить — Новый элемент и укажем:
- в графе Левое значение – поле табличной части Объект.Товары.Сумма,
- в графе Вид сравнения – Больше,
- а в графе Правое значение выберем 30000.
Затем укажем список оформляемых полей. В отличии от оформления динамического списка, построенного на системе компоновки данных, если мы хотим выделить полностью строку, здесь нужно перечислить все поля строки табличной части.
Нажмем кнопку выбора в поле Оформляемые поля, затем нажмем Добавить и добавим поочередно все поля табличной части в список оформляемых полей.
Затем создадим еще одно условие для полей табличной части Товар и Количество, чтобы цвет текста этих полей был красным, в случае если значение в поле Количество больше единицы.
Таким образом, мы добились требуемого оформления табличной части формы документа ПриходнаяНакладная.
Заметим, что подобным образом можно оформить не только строки табличной части, но и все поля документа.
Скачать демонстрационный пример (платформа 8.2.15.310).
По условию можно оформить также и строки списка документов или других объектов конфигурации. Для этого можно использовать УсловноеОформление списка. Подробнее можно прочитать в вопросе Как раскрасить строки списка по некоторому условию?
Внешний вид программы 1С полностью (или почти полностью) настраивается. Например, шрифт, который используется и конфигуратором 1С, и в режиме Предприятие 1С. Шрифтами можно управлять напрямую из языка 1С.
Конечно, кому-то это может показаться «всякими интерфейсными штучками», но для многих важна возможность настроить программу «под себя».
Шрифты 1С для программиста
Большую часть своего рабочего времени программист 1С проводит в написании программ на языке 1С, которые находятся в модулях 1С.
Тексты программ имеют стандартную, сложившуюся исторически расцветку. Некоторым она может показаться странной, особенно тем, кто начал работать с 1С после Microsoft Visual Studio.
Настройка шрифтов 1С для программирования производится в конфигураторе в меню Сервис/Параметры.
На закладке Модули можно выбрать требуемый шрифт 1С и его размер. Цвет текста устанавливается отдельно для различных элементов языка 1С.
Пример 1 настройки цветов.
Пример 2 настройки цветов.
Данные настройки зависят от компьютера/пользователя и не зависят от конкретной конфигурации/базы данных.
Стили конфигурации
Как будет выглядеть программа в режиме Предприятия – задается в конкретной конфигурации. Настройки находятся в списке объектов конфигурации, в ветке Общие/Стили.
Для изменения стилей конфигурации открывается специальный редактор, который позволяет изменить шрифты 1С и цвета для различных элементов форм — подобно, как это делается в Windows.
Пример нестандартных настроек шрифтов 1С.
Шрифт 1С в печатной форме
Печатные формы 1С (документов, отчетов) в конфигураторе называются Макеты. Они находятся или в ветке Общие/Макеты или в конкретном справочнике, документе, отчете, во внутренней ветке Макеты.
Шрифт 1С может быть задан в ячейке. Выделите одну или несколько ячеек, нажмите на них правой кнопкой мыши. В окне свойств можно выбрать свойства Шрифт 1С и Цвет текста.
В конфигурациях тонкого клиента 1С макеты можно редактировать не только в конфигураторе, но и в режиме Предприятие. Рассмотрим на примере конфигурации Управление торговлей редакция 11.
В меню Все функции выберите Регистры сведений/Пользовательские макеты печати. Откроется список макетов в разрезе документов.
Обратите внимание, что некоторые регламентированные макеты, такие как ТОРГ12 вынесены вниз списка в пункт «Печать общих форм».
Выберите нужный макет нажав на него два раза мышкой. Откроется редактор макета, аналогичный конфигуратору. Отредактировав и закрыв окно, не забудьте нажать на кнопку «Завершить редактирование».
Шрифт 1С в форме 1С
Шрифт 1С и цвет можно изменить не только глобально на всю конфигурацию, как это делается в стилях, но и для конкретной формы, конкретного поля.
Для этого выделите нужное поле, нажмите правой кнопкой на нем и выберите пункт меню Свойства. Измените свойства Шрифт 1С и Цвет текста.
Для некоторых полей (например, таблиц), количество таких свойств будет больше – например, шрифт 1С шапки, шрифт 1С строк и т.п.
В тонком клиенте 1С это работает примерно также, только вместо нажатия на само поле – нужно нажать на его имя в списке.
Шрифт 1С в СКД
В отчетах СКД шрифт 1С можно настроить с помощью условного форматирования.
Выберите пункт меню Все действия/Изменить вариант. На закладке Условное форматирование добавьте новую строчку. В колонке Оформление Вы можете настроить шрифт 1С и цвет.
Если требуется эту настройку применить только к некоторым полям – выберите их список в колонке Оформляемые поля. Также можно применить настройку только если выполняется определенные условия – в колонке Условие.
Шрифт 1С в языке 1С
Управление шрифтами 1С на форме доступно из языка 1С.
Распространенный пример (как минимум для толстого клиента, для которого не было реализовано Условное оформление в списках) – изменение цвета и шрифта 1С в списке в зависимости от условия.
Нажмите правой кнопкой на список на форме, в свойствах, в самом низу, в обработчик ПриВыводеСтроки нажмите кнопку Лупа, чтобы создать функцию-обработчик этого события.
Пример такой функции:
Функция ПриВыводеСтроки(ОформлениеСтроки, ДанныеСтроки)
//Проверяем некое условие, «Услуга» - это колонка списка
Если ДанныеСтроки.Услуга = Истина Тогда
//изменяем цвет фона
ОформлениеСтроки.ЦветФона = WebЦвета.Красный;
//делаем цвет текста в ячейке «Услуга» жирным
ОформлениеСтроки.Ячейки.Услуга.Шрифт = Новый Шрифт(ОформлениеСтроки.Ячейки.Услуга.Шрифт,,,Истина);
КонецЕсли;
КонецФункции
Загрузка…