На УФ есть табличная часть. Она раскрашена условным оформлением.
Хочу вывести данные в табличный документ, сохранив цвет фона/текста.
Где можно найти текущее оформление текущей строки или текущей ячейки, если задано условное оформление.
И вообще возможно ли? Или это на уровне платформы работает?
---
Возможно, не актуально. Вот откопал таки код из той темы. Он немного дикий и наверно может быть улучшен:

```1c
    Функция ТаблицуФормыВТабличныйДокумент(Форма, ИмяТаблицы)

    ТЗ = РеквизитФормыВЗначение(ИмяТаблицы);
    Схема = Новый СхемаКомпоновкиДанных;

    Источник = Схема.ИсточникиДанных.Добавить();
    Источник.Имя = "ИсточникДанных1";
    Источник.ТипИсточникаДанных = "Local";

    НовыйНаборДанных = Схема.НаборыДанных.Добавить(Тип("НаборДанныхОбъектСхемыКомпоновкиДанных"));
    НовыйНаборДанных.Имя = "НаборДанных1";
    НовыйНаборДанных.ИмяОбъекта = "ТЗ";
    НовыйНаборДанных.ИсточникДанных = Источник.Имя;

    ВыбранныеПоля = Схема.НастройкиПоУмолчанию.Выбор.Элементы;

    Для Каждого Колонка Из ТЗ.Колонки Цикл
    НовоеПоле = НовыйНаборДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
    НовоеПоле.Поле = Колонка.Имя;
    НовоеПоле.ПутьКДанным = Колонка.Имя;

    НовоеВыбранноеПоле = ВыбранныеПоля.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
    НовоеВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных(Колонка.Имя);
    КонецЦикла;

    НоваяСтруктура = Схема.НастройкиПоУмолчанию.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
    НовыйЭлементСтруктуры = НоваяСтруктура.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));

    Для Каждого ЭлементОформления Из Форма.УсловноеОформление.Элементы Цикл

    Если ЭлементОформления.Отбор.Элементы.Количество() = 0 Тогда
    Продолжить
    КонецЕсли;

    НовыйЭлементОформления = Схема.НастройкиПоУмолчанию.УсловноеОформление.Элементы.Добавить();
    ЗаполнитьЗначенияСвойств(НовыйЭлементОформления, ЭлементОформления);

    Для Каждого Элемент Из ЭлементОформления.Отбор.Элементы Цикл
    НовыйЭлемент = НовыйЭлементОформления.Отбор.Элементы.Добавить(ТипЗнч(Элемент));
    ЗаполнитьЗначенияСвойств(НовыйЭлемент, Элемент);

    Если ТипЗнч(НовыйЭлемент.ЛевоеЗначение) = Тип("ПолеКомпоновкиДанных") Тогда
    ИмяПоля = Строка(НовыйЭлемент.ЛевоеЗначение);
    Если СтрНайти(ИмяПоля, ИмяТаблицы) = 1 Тогда
    ИмяПоля = Сред(ИмяПоля, СтрДлина(ИмяТаблицы) + 1);
    КонецЕсли;

    Если Лев(ИмяПоля, 1) = "." Тогда
    ИмяПоля = Сред(ИмяПоля, 2);
    КонецЕсли;
    НовыйЭлемент.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ИмяПоля);
    КонецЕсли;

    Если ТипЗнч(НовыйЭлемент.ПравоеЗначение) = Тип("ПолеКомпоновкиДанных") Тогда
    ИмяПоля = Строка(НовыйЭлемент.ПравоеЗначение);
    Если СтрНайти(ИмяПоля, ИмяТаблицы) = 1 Тогда
    ИмяПоля = Сред(ИмяПоля, СтрДлина(ИмяТаблицы) + 1);
    КонецЕсли;

    Если Лев(ИмяПоля, 1) = "." Тогда
    ИмяПоля = Сред(ИмяПоля, 2);
    КонецЕсли;
    НовыйЭлемент.ПравоеЗначение = Новый ПолеКомпоновкиДанных(ИмяПоля);
    КонецЕсли;

    КонецЦикла;

    Для Каждого Элемент Из ЭлементОформления.Оформление.Элементы Цикл
    Если Элемент.Использование Тогда
    НовыйЭлементОформления.Оформление.УстановитьЗначениеПараметра(Элемент.Параметр, Элемент.Значение);
    КонецЕсли;
    КонецЦикла;

    Для Каждого Элемент Из ЭлементОформления.Поля.Элементы Цикл
    ИмяПоля = Строка(Элемент.Поле);
    Если ИмяПоля = ИмяТаблицы Тогда
    Продолжить
    КонецЕсли;

    Если СтрНайти(ИмяПоля, ИмяТаблицы) = 1 Тогда
    ИмяПоля = Сред(ИмяПоля, СтрДлина(ИмяТаблицы) + 1);
    КонецЕсли;

    Если Лев(ИмяПоля, 1) = "." Тогда
    ИмяПоля = Сред(ИмяПоля, 2);
    КонецЕсли;

    НовыйЭлемент = НовыйЭлементОформления.Поля.Элементы.Добавить();
    НовыйЭлемент.Поле = Новый ПолеКомпоновкиДанных(ИмяПоля);
    КонецЦикла;

    КонецЦикла;

    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(Схема, Схема.НастройкиПоУмолчанию);

    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, Новый Структура("ТЗ", ТЗ));

    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;

    Возврат ПроцессорВывода.Вывести(ПроцессорКомпоновки);
    КонецФункции
```
---
посмотрите в форме , там должен быть КомпоновщикНастроек.
---
чем мне поможет КомпоновщикНастроек? тем более, что у меня табличная часть, а не дин.список.
---
и что, в УФ нет УсловноеОформление ?
или доступа в конфигуратор нет?
---
и что, в УФ нет УсловноеОформление ?
Есть в УФ условное оформление. И я его успешно использую.
На форме создаю таблицу значений с динамическим количеством колонок. Для каких-то из них, я программно добавляю условное оформление. Все как надо.
Теперь я хочу вывести эту таблицу в табдок. Вот и хочу узнать можно ли где-то посмотреть для элементов оформление, которое отображается на форме? Повторно не проверяя условия.

(4) или доступа в конфигуратор нет?
Откуда столько пафоса?
---
прочитайте в СП про табдок. там есть всё.
---
прочитайте в СП про табдок. там есть всё.
вопрос не про ТабДок. я понял, что вы не поняли вопроса. просьба больше не писать не по делу...
---
В отладчике надо смотреть, зависит от версии платформы. Системная функция по правой кнопке мыши -вывести в табличный документ имхо сохраняет условное оформление, но если требуется обрамление макета добавить, то программно поймать системный результат вывода не знаю как.
Такую обработку видела в сети или на ИТС, давно уже. Найти как не помню.
---
смотрел. не нашел.
в контекстном нет. есть в еще - вывести список. и он не сохраняет условное оформление к сожалению. да и вопроса бы тогда просто не было)))
---
Была подобная тема: https://forum.infostart.ru/forum9/topic226075/
---
а кстати вариант через СКД... спасибо!
---
Возможно, не актуально. Вот откопал таки код из той темы. Он немного дикий и наверно может быть улучшен:

```1c
    Функция ТаблицуФормыВТабличныйДокумент(Форма, ИмяТаблицы)

    ТЗ = РеквизитФормыВЗначение(ИмяТаблицы);
    Схема = Новый СхемаКомпоновкиДанных;

    Источник = Схема.ИсточникиДанных.Добавить();
    Источник.Имя = "ИсточникДанных1";
    Источник.ТипИсточникаДанных = "Local";

    НовыйНаборДанных = Схема.НаборыДанных.Добавить(Тип("НаборДанныхОбъектСхемыКомпоновкиДанных"));
    НовыйНаборДанных.Имя = "НаборДанных1";
    НовыйНаборДанных.ИмяОбъекта = "ТЗ";
    НовыйНаборДанных.ИсточникДанных = Источник.Имя;

    ВыбранныеПоля = Схема.НастройкиПоУмолчанию.Выбор.Элементы;

    Для Каждого Колонка Из ТЗ.Колонки Цикл
    НовоеПоле = НовыйНаборДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
    НовоеПоле.Поле = Колонка.Имя;
    НовоеПоле.ПутьКДанным = Колонка.Имя;

    НовоеВыбранноеПоле = ВыбранныеПоля.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
    НовоеВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных(Колонка.Имя);
    КонецЦикла;

    НоваяСтруктура = Схема.НастройкиПоУмолчанию.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
    НовыйЭлементСтруктуры = НоваяСтруктура.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));

    Для Каждого ЭлементОформления Из Форма.УсловноеОформление.Элементы Цикл

    Если ЭлементОформления.Отбор.Элементы.Количество() = 0 Тогда
    Продолжить
    КонецЕсли;

    НовыйЭлементОформления = Схема.НастройкиПоУмолчанию.УсловноеОформление.Элементы.Добавить();
    ЗаполнитьЗначенияСвойств(НовыйЭлементОформления, ЭлементОформления);

    Для Каждого Элемент Из ЭлементОформления.Отбор.Элементы Цикл
    НовыйЭлемент = НовыйЭлементОформления.Отбор.Элементы.Добавить(ТипЗнч(Элемент));
    ЗаполнитьЗначенияСвойств(НовыйЭлемент, Элемент);

    Если ТипЗнч(НовыйЭлемент.ЛевоеЗначение) = Тип("ПолеКомпоновкиДанных") Тогда
    ИмяПоля = Строка(НовыйЭлемент.ЛевоеЗначение);
    Если СтрНайти(ИмяПоля, ИмяТаблицы) = 1 Тогда
    ИмяПоля = Сред(ИмяПоля, СтрДлина(ИмяТаблицы) + 1);
    КонецЕсли;

    Если Лев(ИмяПоля, 1) = "." Тогда
    ИмяПоля = Сред(ИмяПоля, 2);
    КонецЕсли;
    НовыйЭлемент.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ИмяПоля);
    КонецЕсли;

    Если ТипЗнч(НовыйЭлемент.ПравоеЗначение) = Тип("ПолеКомпоновкиДанных") Тогда
    ИмяПоля = Строка(НовыйЭлемент.ПравоеЗначение);
    Если СтрНайти(ИмяПоля, ИмяТаблицы) = 1 Тогда
    ИмяПоля = Сред(ИмяПоля, СтрДлина(ИмяТаблицы) + 1);
    КонецЕсли;

    Если Лев(ИмяПоля, 1) = "." Тогда
    ИмяПоля = Сред(ИмяПоля, 2);
    КонецЕсли;
    НовыйЭлемент.ПравоеЗначение = Новый ПолеКомпоновкиДанных(ИмяПоля);
    КонецЕсли;

    КонецЦикла;

    Для Каждого Элемент Из ЭлементОформления.Оформление.Элементы Цикл
    Если Элемент.Использование Тогда
    НовыйЭлементОформления.Оформление.УстановитьЗначениеПараметра(Элемент.Параметр, Элемент.Значение);
    КонецЕсли;
    КонецЦикла;

    Для Каждого Элемент Из ЭлементОформления.Поля.Элементы Цикл
    ИмяПоля = Строка(Элемент.Поле);
    Если ИмяПоля = ИмяТаблицы Тогда
    Продолжить
    КонецЕсли;

    Если СтрНайти(ИмяПоля, ИмяТаблицы) = 1 Тогда
    ИмяПоля = Сред(ИмяПоля, СтрДлина(ИмяТаблицы) + 1);
    КонецЕсли;

    Если Лев(ИмяПоля, 1) = "." Тогда
    ИмяПоля = Сред(ИмяПоля, 2);
    КонецЕсли;

    НовыйЭлемент = НовыйЭлементОформления.Поля.Элементы.Добавить();
    НовыйЭлемент.Поле = Новый ПолеКомпоновкиДанных(ИмяПоля);
    КонецЦикла;

    КонецЦикла;

    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(Схема, Схема.НастройкиПоУмолчанию);

    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, Новый Структура("ТЗ", ТЗ));

    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;

    Возврат ПроцессорВывода.Вывести(ПроцессорКомпоновки);
    КонецФункции
```
---
Актуально. Спасибо! То, что надо.
Задача в долгом ящике лежала. Как раз руки добрались. Чуть под себя допилить остается. У меня не все колонки нужны в табдок - какие-то совсем лишние, какие-то вспомогательные (скрыть)...
---
Уточнение по коду выше - группы условий он не обрабатывает.
Под группы код нужно дописывать. Я в итоге обошелся без групп.