Универсальный отчет, построитель отчета - установить условное оформление При разработке в универсальном отчете потребовалось установить условное оформление в отчете - подсветку сумм красным при условии больше 0
В конце процедуры УстановитьНачальныеНастройки() добавить:
Код 1C v 8.х // добавим раскрашивание ячеек
УФ = УниверсальныйОтчет.ПостроительОтчета.УсловноеОформление;
УФ.Очистить();
ЭлемУслОформл = УФ.Добавить("ИтогоПросрочено");
ЭлемУслОформл.Использование = Истина;
ЭлемОбласти = ЭлемУслОформл.Область.Добавить("ИтогоПросрочено");
ЭлемОтбора = ЭлемУслОформл.Отбор.Добавить("ИтогоПросрочено");
ЭлемОтбора.ВидСравнения = ВидСравнения.Больше;
ЭлемОтбора.Значение = 0;
ЭлемОтбора.Использование = Истина;
ЭлемУслОформл.Оформление.ЦветФона.Значение = WebЦвета.Лосось;
ЭлемУслОформл.Оформление.ЦветФона.Использование = Истина;
Категория:
Прочие вопросы Как программно изменить текст, цвет, фон ячейки или области табличного документа? Ниже приведено несколько полезных шаблонов кода по работе с табличным документом:
Код 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").Защита = Истина;
Категория:
Табличный документ Универсальный отчет в прикладных решениях фирмы 1С Как настроить Универсальный отчет?
Все настройки
универсального отчета описываются в процедуре
УстановитьНачальныеНастройки :
Код 1C v 8.х Процедура УстановитьНачальныеНастройки(ДополнительныеПараметры = Неопределено) Экспорт
// Настройка общих параметров универсального отчета
//начальный вариант оформления цветовой схемы
УниверсальныйОтчет.ВариантОформления = СтандартноеОформление.Песок;
// Содержит название отчета, которое будет выводиться в шапке.
// Тип: Строка.
// Пример:
// УниверсальныйОтчет.мНазваниеОтчета = "Название отчета";
УниверсальныйОтчет.мНазваниеОтчета = СокрЛП(ЭтотОбъект.Метаданные().Синоним);
// Содержит признак необходимости отображения надписи и поля выбора раздела учета в форме настройки.
// Тип: Булево.
// Значение по умолчанию: Истина.
// Пример:
// УниверсальныйОтчет.мВыбиратьИмяРегистра = Ложь;
УниверсальныйОтчет.мВыбиратьИмяРегистра = Ложь;
// Содержит имя регистра, по метаданным которого будет выполняться заполнение настроек отчета.
// Тип: Строка.
// Пример:
// УниверсальныйОтчет.ИмяРегистра = "ТоварыНаСкладах";
УниверсальныйОтчет.ИмяРегистра = "-";
// Содержит признак необходимости вывода отрицательных значений показателей красным цветом.
// Тип: Булево.
// Значение по умолчанию: Ложь.
// Пример:
// УниверсальныйОтчет.ОтрицательноеКрасным = Истина;
УниверсальныйОтчет.ОтрицательноеКрасным = Истина;
// Содержит признак необходимости вывода в отчет общих итогов.
// Тип: Булево.
// Значение по умолчанию: Истина.
// Пример:
// УниверсальныйОтчет.ВыводитьОбщиеИтоги = Ложь;
УниверсальныйОтчет.ВыводитьОбщиеИтоги = Истина;
// Содержит признак необходимости вывода детальных записей в отчет.
// Тип: Булево.
// Значение по умолчанию: Ложь.
// Пример:
// УниверсальныйОтчет.ВыводитьДетальныеЗаписи = Истина;
УниверсальныйОтчет.ВыводитьДетальныеЗаписи = Ложь;
// Содержит признак необходимости отображения флага использования свойств и категорий в форме настройки.
// Тип: Булево.
// Значение по умолчанию: Истина.
// Пример:
// УниверсальныйОтчет.мВыбиратьИспользованиеСвойств = Ложь;
УниверсальныйОтчет.мВыбиратьИспользованиеСвойств = Истина;
// Содержит признак использования свойств и категорий при заполнении настроек отчета.
// Тип: Булево.
// Значение по умолчанию: Ложь.
// Пример:
// УниверсальныйОтчет.ИспользоватьСвойстваИКатегории = Истина;
//УниверсальныйОтчет.ИспользоватьСвойстваИКатегории = ЛОЖЬ;
// Содержит признак использования простой формы настроек отчета без группировок колонок.
// Тип: Булево.
// Значение по умолчанию: Ложь.
// Пример:
// УниверсальныйОтчет.мРежимФормыНастройкиБезГруппировокКолонок = Истина;
// Дополнительные параметры, переданные из отчета, вызвавшего расшифровку.
// Информация, передаваемая в переменной ДополнительныеПараметры, может быть использована
// для реализации специфичных для данного отчета параметрических настроек.
// Описание исходного текста запроса.
ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
| CRM_ПредложенияОбороты.Номенклатура КАК Номенклатура,
| ПРЕДСТАВЛЕНИЕ(CRM_ПредложенияОбороты.Номенклатура) КАК НоменклатураПредставление,
| CRM_ПредложенияОбороты.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| ПРЕДСТАВЛЕНИЕ(CRM_ПредложенияОбороты.ХарактеристикаНоменклатуры) КАК ХарактеристикаНоменклатурыПредставление,
| CRM_ПредложенияОбороты.Контрагент КАК Контрагент,
| ПРЕДСТАВЛЕНИЕ(CRM_ПредложенияОбороты.Контрагент) КАК КонтрагентПредставление,
| CRM_ПредложенияОбороты.ДокументПредложения КАК Документ,
| ПРЕДСТАВЛЕНИЕ(CRM_ПредложенияОбороты.ДокументПредложения) КАК ДокументПредставление,
| CRM_ПредложенияОбороты.ДокументПредложения.Ответственный КАК Ответственный,
| ПРЕДСТАВЛЕНИЕ(CRM_ПредложенияОбороты.ДокументПредложения.Ответственный) КАК ОтветственныйПредставление,
| CRM_ПредложенияОбороты.КоличествоОборот КАК КоличествоОборот,
| CRM_ПредложенияОбороты.СтоимостьОборот КАК СтоимостьОборот,
| 0 КАК СкидкаОборот,
| 1 КАК Количество,
| CRM_ПредложенияОбороты.СтоимостьБезСкидокОборот КАК СтоимостьБезСкидокОборот
| //ПОЛЯ_СВОЙСТВА
| //ПОЛЯ_КАТЕГОРИИ
|{ВЫБРАТЬ
| Контрагент.*,
| Номенклатура.*,
| ХарактеристикаНоменклатуры.*,
| Ответственный.*,
| Документ.*,
| КоличествоОборот,
| СтоимостьОборот,
| СкидкаОборот,
| Количество,
| (ЕСТЬNULL(ИсточникиИнформацииПриОбращении.ИсточникИнформации,ЗНАЧЕНИЕ(Справочник.ИсточникиИнформацииПриОбращенииПокупателей.ПустаяСсылка))).* КАК ИсточникИнформации
| //ПСЕВДОНИМЫ_СВОЙСТВА
| //ПСЕВДОНИМЫ_КАТЕГОРИИ
|}
|ИЗ
| РегистрНакопления.CRM_Предложения.Обороты(&ДатаНач, &ДатаКон, , ) КАК CRM_ПредложенияОбороты
|{ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИсточникИнформацииПриОбращении.СрезПоследних(&ДатаКон) КАК ИсточникиИнформацииПриОбращении
|ПО CRM_ПредложенияОбороты.Контрагент = ИсточникиИнформацииПриОбращении.Контрагент}
|//СОЕДИНЕНИЯ
|{ГДЕ
| CRM_ПредложенияОбороты.Контрагент.* КАК Контрагент,
| CRM_ПредложенияОбороты.Номенклатура.* КАК Номенклатура,
| CRM_ПредложенияОбороты.ХарактеристикаНоменклатуры.* КАК ХарактеристикаНоменклатуры,
| CRM_ПредложенияОбороты.ДокументПредложения.Ответственный.* КАК Ответственный,
| CRM_ПредложенияОбороты.ДокументПредложения.* КАК Документ,
| (ЕСТЬNULL(ИсточникиИнформацииПриОбращении.ИсточникИнформации,ЗНАЧЕНИЕ(Справочник.ИсточникиИнформацииПриОбращенииПокупателей.ПустаяСсылка))).* КАК ИсточникИнформации
| //УСЛОВИЯ_СВОЙСТВА
| //УСЛОВИЯ_КАТЕГОРИИ
|}
|{УПОРЯДОЧИТЬ ПО
| Контрагент.*,
| Номенклатура.*,
| ХарактеристикаНоменклатуры.*,
| Ответственный.*,
| Документ.*,
| (ЕСТЬNULL(ИсточникиИнформацииПриОбращении.ИсточникИнформации,ЗНАЧЕНИЕ(Справочник.ИсточникиИнформацииПриОбращенииПокупателей.ПустаяСсылка))).* КАК ИсточникИнформации
| //ПСЕВДОНИМЫ_СВОЙСТВА
| //ПСЕВДОНИМЫ_КАТЕГОРИИ
|}
|
|ИТОГИ
| СУММА(КоличествоОборот),
| СУММА(СтоимостьОборот),
| СУММА(СтоимостьБезСкидокОборот - СтоимостьОборот) КАК СкидкаОборот,
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ(Документ)) КАК Количество
|ПО
| ОБЩИЕ
|{ИТОГИ ПО
| Контрагент.*,
| Номенклатура.*,
| ХарактеристикаНоменклатуры.*,
| Ответственный.*,
| Документ.*,
| (ЕСТЬNULL(ИсточникиИнформацииПриОбращении.ИсточникИнформации,ЗНАЧЕНИЕ(Справочник.ИсточникиИнформацииПриОбращенииПокупателей.ПустаяСсылка))).* КАК ИсточникИнформации,
| НАЧАЛОПЕРИОДА(CRM_ПредложенияОбороты.ДокументПредложения.Дата, ДЕНЬ) КАК ПериодДень,
| НАЧАЛОПЕРИОДА(CRM_ПредложенияОбороты.ДокументПредложения.Дата, НЕДЕЛЯ) КАК ПериодНеделя,
| НАЧАЛОПЕРИОДА(CRM_ПредложенияОбороты.ДокументПредложения.Дата, МЕСЯЦ) КАК ПериодМесяц,
| НАЧАЛОПЕРИОДА(CRM_ПредложенияОбороты.ДокументПредложения.Дата, КВАРТАЛ) КАК ПериодКвартал,
| НАЧАЛОПЕРИОДА(CRM_ПредложенияОбороты.ДокументПредложения.Дата, ГОД) КАК ПериодГод
| //ПСЕВДОНИМЫ_СВОЙСТВА
| //ПСЕВДОНИМЫ_КАТЕГОРИИ
|}";
// В универсальном отчете включен флаг использования свойств и категорий.
Если УниверсальныйОтчет.ИспользоватьСвойстваИКатегории Тогда
// Добавление свойств и категорий поля запроса в таблицу полей.
// Необходимо вызывать для каждого поля запроса, предоставляющего возможность использования свойств и категорий.
// УниверсальныйОтчет.ДобавитьСвойстваИКатегорииДляПоля(<ПсевдонимТаблицы>.<Поле> , <ПсевдонимПоля>, <Представление>, <Назначение>);
УниверсальныйОтчет.ДобавитьСвойстваИКатегорииДляПоля("CRM_ПредложенияОбороты.Номенклатура" , "Номенклатура", "Номенклатура", ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Номенклатура);
УниверсальныйОтчет.ДобавитьСвойстваИКатегорииДляПоля("CRM_ПредложенияОбороты.ХарактеристикаНоменклатуры" , "ХарактеристикаНоменклатуры", "Характеристика номенклатуры", ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Номенклатура);
УниверсальныйОтчет.ДобавитьСвойстваИКатегорииДляПоля("CRM_ПредложенияОбороты.Контрагент" , "Контрагент", "Контрагент", ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Номенклатура);
УниверсальныйОтчет.ДобавитьСвойстваИКатегорииДляПоля("CRM_ПредложенияОбороты.ДокументПредложения" , "Документ", "Коммерческое предложение", ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Документ_CRM_КоммерческоеПредложение);
// Добавление свойств и категорий в исходный текст запроса.
УниверсальныйОтчет.ДобавитьВТекстЗапросаСвойстваИКатегории(ТекстЗапроса);
КонецЕсли;
// Инициализация текста запроса построителя отчета
УниверсальныйОтчет.ПостроительОтчета.Текст = ТекстЗапроса;
// Представления полей отчета.
// Необходимо вызывать для каждого поля запроса.
// УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить(<ИмяПоля>, <ПредставлениеПоля>);
УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("ХарактеристикаНоменклатуры", "Характеристика номенклатуры");
УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("Документ", "Коммерческое предложение");
УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить("ИсточникИнформации", "Источник информации при обращении покупателя");
// Добавление показателей
// Необходимо вызывать для каждого добавляемого показателя.
// УниверсальныйОтчет.ДобавитьПоказатель(<ИмяПоказателя>, <ПредставлениеПоказателя>, <ВключенПоУмолчанию>, <Формат>, <ИмяГруппы>, <ПредставлениеГруппы>);
//УниверсальныйОтчет.ДобавитьПоказатель("Задача", "Задача", Истина,);
УниверсальныйОтчет.ДобавитьПоказатель("Количество", "Количество документов", Истина, "ЧЦ = 15 ; ЧДЦ = 3");
УниверсальныйОтчет.ДобавитьПоказатель("КоличествоОборот", "Количество номенклатуры", Истина, "ЧЦ = 15 ; ЧДЦ = 3",,);
УниверсальныйОтчет.ДобавитьПоказатель("СтоимостьОборот", "Сумма", Истина, "ЧЦ = 15 ; ЧДЦ = 2");
УниверсальныйОтчет.ДобавитьПоказатель("СкидкаОборот", "Скидка", Истина, "ЧЦ = 15 ; ЧДЦ = 2",,);
// Добавление предопределенных группировок строк отчета.
// Необходимо вызывать для каждой добавляемой группировки строки.
// УниверсальныйОтчет.ДобавитьИзмерениеСтроки(<ПутьКДанным>);
УниверсальныйОтчет.ДобавитьИзмерениеСтроки("Контрагент");
УниверсальныйОтчет.ДобавитьИзмерениеСтроки("Номенклатура");
// Добавление предопределенных группировок колонок отчета.
// Необходимо вызывать для каждой добавляемой группировки колонки.
// УниверсальныйОтчет.ДобавитьИзмерениеКолонки(<ПутьКДанным>);
// Добавление предопределенных отборов отчета.
// Необходимо вызывать для каждого добавляемого отбора.
// УниверсальныйОтчет.ДобавитьОтбор(<ПутьКДанным>);
УниверсальныйОтчет.ДобавитьОтбор("Контрагент");
УниверсальныйОтчет.ДобавитьОтбор("Номенклатура");
УниверсальныйОтчет.ДобавитьОтбор("Ответственный");
УниверсальныйОтчет.ДобавитьОтбор("Документ");
// Добавление предопределенных полей порядка отчета.
// Необходимо вызывать для каждого добавляемого поля порядка.
// УниверсальныйОтчет.ДобавитьПорядок(<ПутьКДанным>);
// Установка связи подчиненных и родительских полей
// УниверсальныйОтчет.УстановитьСвязьПолей(<ПутьКДанным>, <ПутьКДаннымРодитель>);
//УниверсальныйОтчет.УстановитьСвязьПолей("ТочкаМаршрута","Задача");
// Установка связи полей и измерений
// УниверсальныйОтчет.УстановитьСвязьПоляИИзмерения(<ИмяПоля>, <ИмяИзмерения>);
// Установка представлений полей
УниверсальныйОтчет.УстановитьПредставленияПолей(УниверсальныйОтчет.мСтруктураПредставлениеПолей, УниверсальныйОтчет.ПостроительОтчета);
// Установка типов значений свойств в отборах отчета
УниверсальныйОтчет.УстановитьТипыЗначенийСвойствДляОтбора();
// Заполнение начальных настроек универсального отчета
УниверсальныйОтчет.УстановитьНачальныеНастройки(Ложь);
// Добавление предопределенных отборов отчета.
// Необходимо вызывать для каждого добавляемого отбора.
// УниверсальныйОтчет.ДобавитьОтбор(<ПутьКДанным>);
УниверсальныйОтчет.ДобавитьОтбор("Контрагент");
УниверсальныйОтчет.ДобавитьОтбор("Номенклатура");
УниверсальныйОтчет.ДобавитьОтбор("Ответственный");
УниверсальныйОтчет.ДобавитьОтбор("Документ");
// Добавление дополнительных полей
// Необходимо вызывать для каждого добавляемого дополнительного поля.
// УниверсальныйОтчет.ДобавитьДополнительноеПоле(<ПутьКДанным>, <Размещение>, <Положение>);
УниверсальныйОтчет.мСтруктураФорматаПолей.Вставить("ДатаВыполнения", "ДЛФ=DDT");
УниверсальныйОтчет.мСтруктураФорматаПолей.Вставить("ДатаФактическогоВыполнения", "ДЛФ=DDT");
УниверсальныйОтчет.мМинимальнаяШиринаКолонкиПоказатель = 10;
УниверсальныйОтчет.мМаксимальнаяШиринаКолонки = 80;
КонецПроцедуры // УстановитьНачальныеНастройки()
Как настроить условное оформление в Универсальном отчете?
Выравнивание значений влево :
Код 1C v 8.х ЭлементОформления = УниверсальныйОтчет.ПостроительОтчета.УсловноеОформление.Добавить("Номенклатура", "Номенклатура");
ЭлементОформления.Область.Добавить("Номенклатура", "Номенклатура", ТипОбластиОформления.Поле);
ЭлементОформления.Оформление.ГоризонтальноеПоложение.Значение = ГоризонтальноеПоложение.Лево;
ЭлементОформления.Оформление.ГоризонтальноеПоложение.Использование = Истина;
ЭлементОформления.Использование = Истина;
ЭлементОформления = УниверсальныйОтчет.ПостроительОтчета.УсловноеОформление.Добавить("ХарактеристикаНоменклатуры", "ХарактеристикаНоменклатуры");
ЭлементОформления.Область.Добавить("ХарактеристикаНоменклатуры", "ХарактеристикаНоменклатуры", ТипОбластиОформления.Поле);
ЭлементОформления.Оформление.ГоризонтальноеПоложение.Значение = ГоризонтальноеПоложение.Лево;
ЭлементОформления.Оформление.ГоризонтальноеПоложение.Использование = Истина;
ЭлементОформления.Использование = Истина;
УниверсальныйОтчет.мМинимальнаяШиринаКолонкиПоказатель = 7;
УниверсальныйОтчет.мМаксимальнаяШиринаКолонки = 50;
Изменение цвета текста и т.д.
Код 1C v 8.х // Условное оформление поля "Состояние"
ЭлементОформления = УниверсальныйОтчет.ПостроительОтчета.УсловноеОформление.Добавить("ТребуетсяЗаказать", "Требуется заказать");
ЭлементОформления.Область.Добавить("Состояние", "Состояние", ТипОбластиОформления.Поле);
ЭлементОтбора = ЭлементОформления.Отбор.Добавить("Состояние");
ЭлементОтбора.ВидСравнения = ВидСравнения.Равно;
ЭлементОтбора.Значение = 0;
ЭлементОтбора.Использование = Истина;
ЭлементОформления.Оформление.ЦветТекста.Значение = WebЦвета.Красный;
ЭлементОформления.Оформление.ЦветТекста.Использование = Истина;
ЭлементОформления.Оформление.Текст.Значение = "Требуется заказать";
ЭлементОформления.Оформление.Текст.Использование = Истина;
ЭлементОформления.Использование = Истина;
ЭлементОформления = УниверсальныйОтчет.ПостроительОтчета.УсловноеОформление.Добавить("РекомендуетсяЗаказать", "Рекомендуется заказать");
ЭлементОформления.Область.Добавить("Состояние", "Состояние", ТипОбластиОформления.Поле);
ЭлементОтбора = ЭлементОформления.Отбор.Добавить("Состояние");
ЭлементОтбора.ВидСравнения = ВидСравнения.Равно;
ЭлементОтбора.Значение = 1;
ЭлементОтбора.Использование = Истина;
ЭлементОформления.Оформление.ЦветТекста.Значение = WebЦвета.Коричневый;
ЭлементОформления.Оформление.ЦветТекста.Использование = Истина;
ЭлементОформления.Оформление.Текст.Значение = "Рекомендуется заказать";
ЭлементОформления.Оформление.Текст.Использование = Истина;
ЭлементОформления.Использование = Истина;
ЭлементОформления = УниверсальныйОтчет.ПостроительОтчета.УсловноеОформление.Добавить("НеТребуетсяЗаказывать", "Не требуется заказывать");
ЭлементОформления.Область.Добавить("Состояние", "Состояние", ТипОбластиОформления.Поле);
ЭлементОтбора = ЭлементОформления.Отбор.Добавить("Состояние");
ЭлементОтбора.ВидСравнения = ВидСравнения.Равно;
ЭлементОтбора.Значение = 2;
ЭлементОтбора.Использование = Истина;
ЭлементОформления.Оформление.ЦветТекста.Значение = WebЦвета.Зеленый;
ЭлементОформления.Оформление.ЦветТекста.Использование = Истина;
ЭлементОформления.Оформление.Текст.Значение = "Не требуется заказывать";
ЭлементОформления.Оформление.Текст.Использование = Истина;
ЭлементОформления.Использование = Истина;
ЭлементОформления = УниверсальныйОтчет.ПостроительОтчета.УсловноеОформление.Добавить("ЗонаПоСумме", "Зона По Сумме");
ЭлементОформления.Область.Добавить("ЗонаПоСумме", "ЗонаПоСумме", ТипОбластиОформления.Поле);
ЭлементОтбора = ЭлементОформления.Отбор.Добавить("ЗонаПоСумме");
ЭлементОтбора.ВидСравнения = ВидСравнения.Равно;
ЭлементОтбора.Значение = "крас";
ЭлементОтбора.Использование = Истина;
ЭлементОформления.Оформление.ЦветФона.Значение = WebЦвета.Красный;
ЭлементОформления.Оформление.ЦветФона.Использование = Истина;
ЭлементОформления.Оформление.Текст.Значение = "";
ЭлементОформления.Оформление.Текст.Использование = Истина;
ЭлементОформления.Использование = Истина;
ЭлементОформления = УниверсальныйОтчет.ПостроительОтчета.УсловноеОформление.Добавить("ЗонаПоСумме", "Зона По Сумме");
ЭлементОформления.Область.Добавить("ЗонаПоСумме", "ЗонаПоСумме", ТипОбластиОформления.Поле);
ЭлементОтбора = ЭлементОформления.Отбор.Добавить("ЗонаПоСумме");
ЭлементОтбора.ВидСравнения = ВидСравнения.Равно;
ЭлементОтбора.Значение = "зелн";
ЭлементОтбора.Использование = Истина;
ЭлементОформления.Оформление.ЦветТекста.Значение = WebЦвета.Зеленый;
ЭлементОформления.Оформление.ЦветТекста.Использование = Истина;
ЭлементОформления.Оформление.Шрифт.Значение = Новый Шрифт(,,Истина);
ЭлементОформления.Оформление.Шрифт.Использование = Истина;
ЭлементОформления.Оформление.Текст.Значение = "|||||||||||||||||";
ЭлементОформления.Оформление.Текст.Использование = Истина;
ЭлементОформления.Использование = Истина;
Для типа «Дата»:
Код 1C v 8.х ЭлементОформления = УниверсальныйОтчет.ПостроительОтчета.УсловноеОформление.Добавить("ДатаЗаписи", "Дата записи");
ЭлементОформления.Область.Добавить("ДатаЗаписи", "Дата записи", ТипОбластиОформления.Поле);
ЭлементОформления.Оформление.Формат.Значение = "ДФ=dd.MM.yyyy";
ЭлементОформления.Оформление.Формат.Использование = Истина;
ЭлементОформления.Использование = Истина;
Для типа «Булево»:
Код 1C v 8.х ЭлементОформления = УниверсальныйОтчет.ПостроительОтчета.УсловноеОформление.Добавить("Печать", "Печать");
ЭлементОформления.Область.Добавить("Печать", "Печать", ТипОбластиОформления.Поле);
ЭлементОформления.Оформление.ГоризонтальноеПоложение.Значение = ГоризонтальноеПоложение.Центр;
ЭлементОформления.Оформление.Формат.Значение = «БЛ=Нет; БИ=Напечатан»;
ЭлементОформления.Оформление.ГоризонтальноеПоложение.Использование = Истина;
ЭлементОформления.Использование = Истина;
Категория:
Прочие вопросы ФорматированнаяСтрока тип данных
ФорматированнаяСтрока - доступен с версии 8.3!
Форматированные строки можно использовать в следующих случаях:
В качестве данных для элементов формы поле надписи
В качестве заголовка поля формы типа декорация;
В качестве параметра ТекстПредупреждения метода Предупреждение();
В качестве параметра ТекстВопроса метода Вопрос().
Пример1:
Код 1C v 8.2 УП Реквизит1 = Новый ФорматированнаяСтрока("Товар ", Новый ФорматированнаяСтрока(" Телевизор", , WebЦвета.Красный), " отсутствует на складе");
Предупреждение(Реквизит1);
В результате предупреждении выглядит следующим образом:
Пример 2:
Код 1C v 8.2 УП &НаКлиенте
Процедура ПроверкаФорматированнойСтроки(Команда)
Строка1 = Новый ФорматированнаяСтрока("Этот тест будет жирный и наклонный", Новый Шрифт(,,Истина, Истина));
Строка2 = Новый ФорматированнаяСтрока("Оранжевый текст",,Новый Цвет(255,140,0));
ОбщаяСтрока = Новый ФорматированнаяСтрока(Строка1, "-", Строка2);
Режим = РежимДиалогаВопрос.ДаНет;
Ответ = Вопрос(ОбщаяСтрока, Режим, 40);
Если Ответ = КодВозвратаДиалога.Нет Тогда
Возврат;
КонецЕсли;
КонецПроцедуры
В результате вы увидете:
Этот тест будет жирный и наклонный -
Оранжевый текст Категория:
Встроенные Функции Форма ~ Программное создание таблицы значений с условным оформлением Как создать на форме таблицу и сделать для неё подсветку содержимого колонки в строке по условию?
Итак для начала нам надо добавить реквизиты в форму. Для этого у нас есть метод: ИзменитьРеквизиты(). Перед тем как его использовать мы сформируем массив добавляемых реквизитов, который будет называться МассивДобавляемыхРеквизитов.
Код 1C v 8.2 УП МассивДобавляемыхРеквизитов = Новый Массив;
МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы("План", Новый ОписаниеТипов("ТаблицаЗначений")));
Обратите внимание, что элементы массива у нас типа РеквизитФормы. Дальше помимо таблицы значений, нам надо добавить колонки таблицы, например будем добавлять три колонки:
Код 1C v 8.2 УП МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы("Номенклатура", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"),"План" ,"Номенклатура"));
МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы("Регион", Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(10,2)),"План" , "Регион"));
МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы("Разница", Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(10,2)),"План" , "Осталось распределить"));
Во время добавления колонок в МассивДобавляемыхРеквизитов обязательно надо указать путь к создаваемому реквизиту, в нашем случае это «План», который был добавлен в массив ранее. Обратите внимание, что путь к создаваемому реквизиту не включает в себя сам реквизит. После того, как массив сформирован, можно вызывать изменение реквизитов:
Код 1C v 8.2 УП ИзменитьРеквизиты(МассивДобавляемыхРеквизитов);
После изменения реквизитов у нас уже есть нужный нам реквизит формы «План» типа ТаблицаЗначений с тремя колонками. Если вам надо будет обратиться к значению реквизита, то вы можете это сделать используя ЭтаФорма["План"]. Можно приступать к созданию элементов формы, для отображения данных. Сначала создадим элемент формы типа ТаблицаФормы.
Код 1C v 8.2 УП ТаблицаФормы = Элементы.Добавить("План", Тип("ТаблицаФормы"));
ТаблицаФормы.ПутьКДанным = "План";
ТаблицаФормы.ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиЭлементаФормы.Нет;
ТаблицаФормы.ФиксацияСлева = 3;
ТаблицаФормы.УстановитьДействие("ПередУдалением", "ПланПередУдалением");
ТаблицаФормы.УстановитьДействие("ПередНачаломДобавления", "ПланПередНачаломДобавления");
Как вы видите из приведенного когда, во время создания элемента мы тут же определяем действия на события. После создания элемента План типа ТаблицаФормы создадим подчиненные ему элементы типа ПолеФормы, которые будут отвечать у нас за вывод данных в колонки таблицы. Для этого в цикле перебора колонок таблицы необходимо выполнить следующий код (на примере одной из итераций цикла):
Код 1C v 8.2 УП НоваяКолонка = Элементы.Добавить("ПланНоменклатура", Тип("ПолеФормы"), Элементы.План);
НоваяКолонка.Заголовок = "Номенклатура";
НоваяКолонка.ПутьКДанным = "План.Номенклатура";
НоваяКолонка.Вид = ВидПоляФормы.ПолеВвода;
НоваяКолонка.РежимРедактирования = РежимРедактированияКолонки.ВходПриВводе;
Обратите внимание, что во время добавления элемента мы указываем родителя Элементы.План. Так же путь к данным у нас состоит из наименования реквизита типа ТаблицаЗначений и имени колонки, разделенные точкой. После того, как вы в цикле создадите все элементы для колонок форма будет готова к выводу и вводу данных в таблицу.
Теперь можно перейти ко второй части задачи про подсветку цветом колонки Номенклатура. Например условие у нас будет накладываться на колонку Разница и когда она будет равно 100 строку надо будет подсвечивать колонку Номенклатуры серым цветом.
Для реализации этой части задачи мы будем использовать объект УсловноеОформление, который доступен на стороне сервера. Сначала в элементы условного оформления необходимо добавить новый элемент. Затем мы добавляем оформляемые поля. Если надо подсвечивать всю строку, то можно обойти в цикле колонки и добавить все их поля ввода в оформляемые. Так же необходимо потом добавить отбор. В левом значении отбора указываем поле, по которому будет идти сравнение. Поле указывает с точкой, как путь к данным во время добавления колонки.
Код 1C v 8.2 УП ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
ОформляемоеПоле = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("ПланНоменклатура");
ЭлементОтбора = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("План.Разница");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = 100;
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.СеребристоСерый);
Внешняя обработка, демонстрирующая создание таблицы значений программно -
Скачивать файлы может только зарегистрированный пользователь!
Андрей Данилюк Категория:
Работа с Формой (Диалог) и её элементами Диаграмма Ганта - Как выделить выходные другим цветом? Код 1C v 8.х Неделя = 3600 * 24 * 7;
Выходные = 3600 * 48;
МаксимальнаяДата =ДатаД1; // + Неделя * 4;
ТекущаяДата = ДатаД;
Пока ТекущаяДата <= МаксимальнаяДата Цикл
Конец = НачалоНедели(ТекущаяДата);
Начало = Конец - Выходные;
ИнтФ=ДГ.ИнтервалыФона.Добавить(Начало, Конец);
ИнтФ.Цвет = WebЦвета.Красный;
ТекущаяДата = ТекущаяДата + Неделя;
КонецЦикла;
Категория:
Диаграмма Табличное поле ~ Оформление строк, ячеек табличного поля (цвет, текст) Одним из полезных свойств элемента управления Табличное поле является возможность настройки оформления его строк программным способом.
Для иллюстрации этой возможности мы снова воспользуемся формой справочника Номенклатура и придадим ей «нестандартный» вид.
Откроем в конфигураторе форму списка справочника Номенклатура и создадим обработчик события формы ПриОткрытии со следующим текстом:
Код 1C v 8.х Процедура ПриОткрытии()
СписокСправочника = ЭлементыФормы.СправочникСписок;
// Задать режим чередования цветов строк
СписокСправочника.ЦветФонаЧередованияСтрок = WEBЦвета.Бежевый;
СписокСправочника.ЧередованиеЦветовСтрок = Истина;
// Скрыть линии сетки
СписокСправочника.ВертикальныеЛинии = Ложь;
СписокСправочника.ГоризонтальныеЛинии = Ложь;
КонецПроцедуры
Вначале мы задаем режим чередования цветов фона строк списка. Первая строка будет выводиться на бежевом фоне, вторая на белом, третья снова на бежевом и т. д.
Затем мы скрываем линии, разделяющие колонки и строки.
Теперь откроем обработчик события ПриВыводеСтроки табличного поля списка справочника и добавим в него следующие строки:
Код 1C v 8.х Процедура СправочникСписокПриВыводеСтроки(Элемент, ОформлениеСтроки,ДанныеСтроки)
// Для элементов отобразить цену и...
Если Не ДанныеСтроки.ЭтоГруппа Тогда
ОтборНоменклатуры = Новый Структура;
ОтборНоменклатуры.Вставить("Номенклатура", ДанныеСтроки.Ссылка);
ОформлениеСтроки.Ячейки.Цена.ОтображатьТекст = Истина;
АктуальнаяЦена = РегистрыСведений.Цены.ПолучитьПоследнее( , ОтборНоменклатуры).Цена;
ОформлениеСтроки.Ячейки.Цена.Текст = АктуальнаяЦена;
// низкие цены выделим другим цветом
Если АктуальнаяЦена<500 Тогда
ОформлениеСтроки.Ячейки.Цена.ЦветТекста = WEBЦвета.Васильковый;
КонецЕсли;
// Раздвинуть строку, если длинное наименование
Если СтрДлина(СокрЛП(ДанныеСтроки.Наименование))>30 Тогда
ОформлениеСтроки.Ячейки.Наименование.АвтоВысотаЯчейки = Истина;
ОформлениеСтроки.Ячейки.Наименование.ВысотаЯчейки = 3;
КонецЕсли;
// Пример Оформления ВСЕЙ СТРОКИ
// ОформлениеСтроки.Шрифт = Новый Шрифт(ОформлениеСтроки.Шрифт , , , Истина, Ложь);
// ОформлениеСтроки.ЦветФона = Новый Цвет(255, 245, 207);
КонецЕсли;
КонецПроцедуры
Здесь в случае вывода элемента справочника мы анализируем длину его наименования. Если оно более 30 символов, устанавливаем автоматическое определение высоты ячейки, ограничивая ее максимальную высоту тремя строками.
Категория:
Работа с Формой (Диалог) и её элементами Заполним диаграмму Ганта данными Код 1C v 8.х ДГ = ЭлементыФормы.ДГ;
// Установить заголовок диаграммы.
ДГ.ОбластьЗаголовка.Текст = "График дежурств";
// Интервал будем определять самостоятельно.
ДГ.АвтоОпределениеПолногоИнтервала = Ложь;
// Установить интервал.
ДГ.УстановитьПолныйИнтервал(НачалоМесяца(ТекущаяДата()), КонецМесяца(ТекущаяДата()));
// В диаграмме будет две точки - сотрудники Петров и Сидоров...
ТочкаП = ДГ.УстановитьТочку("Петров");
ТочкаС = ДГ.УстановитьТочку("Сидоров");
// и две серии - дежурство на вахте и дежурство в центральном офисе.
СерияНаВахте = ДГ.УстановитьСерию("На вахте");
СерияВЦентре = ДГ.УстановитьСерию("В центральном офисе");
// Задать цвета серий, отличные от цвета по умолчанию.
СерияНаВахте.Цвет = WebЦвета.Синий;
СерияВЦентре.Цвет = WebЦвета.СветлоЖелтый;
ПервыйДень = НачалоМесяца(ТекущаяДата());
// Получить значение диаграммы - дежурство Петрова на вахте.
Значение = ДГ.ПолучитьЗначение(ТочкаП, СерияНаВахте);
// В значении определить новый интервал.
Интервал = Значение.Добавить();
Интервал.Текст = "Работает на вахте";
// Определить границы интервала.
Интервал.Начало = ПервыйДень;
Интервал.Конец = ПервыйДень + 10 * 24 * 60 * 60;
// Получить значение диаграммы - дежурство Петрова в центральном офисе.
Значение = ДГ.ПолучитьЗначение(ТочкаП, СерияВЦентре);
Интервал = Значение.Добавить();
Интервал.Текст = "Работает в центральном офисе";
Интервал.Начало = ПервыйДень + 14 * 24 * 60 * 60;
Интервал.Конец = ПервыйДень + 24 * 24 * 60 * 60;
// Получить значение диаграммы - дежурство Сидорова на вахте.
Значение = ДГ.ПолучитьЗначение(ТочкаС, СерияНаВахте);
Интервал = Значение.Добавить();
Интервал.Текст = "Работает на вахте";
Интервал.Начало = ПервыйДень + 5 * 24 * 60 * 60;
Интервал.Конец = ПервыйДень + 15 * 24 * 60 * 60;
// Получить значение диаграммы - дежурство Сидорова в центральном офисе.
Значение = ДГ.ПолучитьЗначение(ТочкаС, СерияВЦентре);
Интервал = Значение.Добавить();
Интервал.Текст = "Работает в центральном офисе";
Интервал.Начало = ПервыйДень + 21 * 24 * 60 * 60;
Интервал.Конец = ПервыйДень + 25 * 24 * 60 * 60;
Категория:
Диаграмма Заполнить данными измерительную диаграмму Код 1C v 8.х // Настроить свойства диаграммы.
Диаграмма = ЭлементыФормы.ДиаграммаПродажи;
Диаграмма.ТипДиаграммы = ТипДиаграммы.Измерительная;
Диаграмма.АвтоМаксимальноеЗначение = Ложь;
Диаграмма.МаксимальноеЗначение = 20000;
Диаграмма.АвтоМинимальноеЗначение = Ложь;
Диаграмма.МинимальноеЗначение = 0;
// Создать три полосы.
Полосы = Диаграмма.ПолосыИзмерительнойДиаграммы;
НоваяПолоса = Полосы.Добавить();
НоваяПолоса.Начало = 0;
НоваяПолоса.Конец = 1000;
НоваяПолоса.ЦветФона = WebЦвета.Красный;
НоваяПолоса = Полосы.Добавить();
НоваяПолоса.Начало = 1000;
НоваяПолоса.Конец = 5000;
НоваяПолоса.ЦветФона = WebЦвета.Желтый;
НоваяПолоса = Полосы.Добавить();
НоваяПолоса.Начало = 5000;
НоваяПолоса.Конец = 20000;
НоваяПолоса.ЦветФона = WebЦвета.Зеленый;
Запрос = Новый Запрос("
|ВЫБРАТЬ
| ПродажиОбороты.Период,
| ПродажиОбороты.СтоимостьОборот
|ИЗ
| РегистрНакопления.Продажи.Обороты(&ДатаНачала, &ДатаОкончания, День, ) КАК ПродажиОбороты");
Запрос.УстановитьПараметр("ДатаНачала", '2004.08.10 00:00:00');
Запрос.УстановитьПараметр("ДатаОкончания", '2004.08.30 23:59:59');
ЭлементыФормы.ДиаграммаПродажи.ИсточникДанных = Запрос.Выполнить().Выгрузить();
Категория:
Диаграмма Структура ~ Установка значения для элемента структуры с определенным ключом Код 1C v 8.х
Структура = Новый Структура;
// Добавить новый элемент.
Структура.Вставить("Цвет", WebЦвета.Белый);
// Установить значение для элемента с ключом "Цвет".
Структура.Вставить("Цвет", WebЦвета.Синий);
Категория:
Работа с Массивом, Структурой, Соответств…