Версия для печати темы (https://pro1c.org.ua/index.php?s=fd8bf218a1c45d987276247fe2b88ae8&showtopic=5316)
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование обычных форм 1С 8.2 и не интерфейсной логики _ Как хранить в справочнике реквизит "НастройкаОформления"
Автор: awp 08.11.11, 8:13
1С 8.2 УТП
Ув. Знатоки. Есть справочник каждому элемента которого необходимо подвязать реквизит с типом "НастройкаОформления". Но этот тип доступен только в форме в конфигураторе его нет. Может кто сталкивался с решением данной проблемы? Может както преобразовывать?
Сразу отвечу для чего - Есть отчет "Упр. баланс" написан под заказчика. Разделы и статьи баланса хранятся в справочнике. Заказчик хочет "разукрасить" этот отчет, причем как и настраивать его он хочет сам. Использовать "ПосторительОтчетов" не могу - куча преобразований и тп.
За ранее благодарен.
Автор: Vofka 08.11.11, 8:59
Добавьте 3 числовых реквизита в справочник: R, G, B. И в зависимости от этих реквизитов создавайте цвета.
Автор: awp 08.11.11, 9:07
Цитата(Vofka @ 08.11.11, 8:59)
Добавьте 3 числовых реквизита в справочник: R, G, B. И в зависимости от этих реквизитов создавайте цвета.
Такой вариант я бы предложил для любимой бухгалтерии
Для левой разработки это не как то ....
Настройка оформления
Автор: Batchir 08.11.11, 9:40
Может так можно?
ЗначениеСтр = ЗначениеВСтрокуВнутр(ЭлементыФормы.НастройкаОформления.Значение);
ЗначениеСтр хранить в реквизите типа Текст
При необходимости получения оформления выполнять
ЗначениеОформления = ЗначениеИзСтрокиВнутр(ЗначениеСтр);
Но это предположение, не проверял
Автор: awp 08.11.11, 11:24
Цитата(Batchir @ 08.11.11, 9:40)
Может так можно?
ЗначениеСтр = ЗначениеВСтрокуВнутр(ЭлементыФормы.НастройкаОформления.Значение);
ЗначениеСтр хранить в реквизите типа Текст
При необходимости получения оформления выполнять
ЗначениеОформления = ЗначениеИзСтрокиВнутр(ЗначениеСтр);
Но это предположение, не проверял
Цитата
{Справочник.РазделыУпрБаланса.Форма.ФормаЭлемента.Форма(3)}: Ошибка при вызове метода контекста (ЗначениеИзСтрокиВнутр)
ФормаОформление = ЗначениеИзСтрокиВнутр(Оформление);
по причине:
Ошибка преобразования
по причине:
Ошибка формата потока
Автор: Batchir 08.11.11, 14:49
На 1С:Предприятие 8.2 (8.2.14.537) проблем не возникло.
Цитата
Ошибка формата потока
Это вообще страшная ошибка и прежде чем идти дальше - тестирование и исправление, chdbfl.exe
Автор: awp 08.11.11, 20:29
Цитата(Batchir @ 08.11.11, 14:49)
На 1С:Предприятие 8.2 (8.2.14.537) проблем не возникло.
Это вообще страшная ошибка и прежде чем идти дальше - тестирование и исправление, chdbfl.exe
То есть у Вас получилось? У меня релиз 8.2.14.519. Попробую установить поновее.
Автор: Batchir 09.11.11, 8:36
Цитата(awp @ 08.11.11, 21:29)
То есть у Вас получилось? У меня релиз 8.2.14.519. Попробую установить поновее.
т.е. да получилось.
Создал обработку. На форму кинул поле ввода, дал ему имя НастройкаОформления и установил тип НастройкаОформления
Выполнил
ЗначениеСтр = ЗначениеВСтрокуВнутр(ЭлементыФормы.НастройкаОформления.Значение);
ЗначениеОформления = ЗначениеИзСтрокиВнутр(ЗначениеСтр);
Ошибок не получил и переменная ЗначениеОформления хранила настройку оформления (смотрел в отладчике)
Но перед эти советую на копии выполнить "Тестирование и исправление", "chdbfl.exe, потому что "Ошибка формата потока" чаще всего связана с поломанным файлом конфигурации и если это так - то СРОЧНО принять меры, иначе можно потерять базу НАВСЕГДА, что даже фирма 1С не сможет помочь
Автор: awp 09.11.11, 9:23
Спасибо всем за помощь.
ФормаОформление = ЗначениеИзСтрокиВнутр(Оформление);
Если "Оформление" пустая строка - то возникает ошибка.
Решил проблему просто
Попытка
ФормаОформление = ЗначениеИзСтрокиВнутр(Оформление);
Исключение
КонецПопытки
Автор: Batchir 09.11.11, 9:58
Правильнее наверно было бы проверять на заполненное значение а не помещать в попытку, раз известна причина возникновения ошибки.
Если ЗначениеЗаполнено(Оформление) Тогда
ФормаОформление = ЗначениеИзСтрокиВнутр(Оформление);
КонецЕсли;
Автор: kivals 10.11.11, 7:08
ИМХО более правильно через ХранилищеЗначений сделать. Хотя суть остается та же (даже предполагаю что на внутреннем уровне произойдет то же самое преобразование)...
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua