Оформление строк табличной части в 8.2
Разработка - Работа с интерфейсом
1. Для справочник "Склады" необходимо добавить реквизиты: ЦветФонаСтроки, ЦветШрифтаСтроки, ШрифтСтроки, тип - ХранилищеЗначения.

2. Для управляемой формы элемента добавить реквизиты с идентичными названиями, у первых 2 тип "Цвет", у 3 - "Шрифт" и вынести эти реквизиты на управляемую форму.

3. В модуль формы вставить следующий код:
(Системные процедуры не копируются отсюда, а создаются в модуле и там добавляется код, иначе 1с не поймет, что они системные)
&НаСервере
Процедура ЗаполнитьРеквизитыОформленияСтрокНаФорме()
ЭтоНовый = Объект.Ссылка.Пустая();
ОбъектДанные = ДанныеФормыВЗначение(Объект,Тип("СправочникОбъект.Склады"));
ЦветФонаСтрокиХранимый = ОбъектДанные.ЦветФонаСтроки.Получить();
ОформлениеСодержится = ТипЗнч(ЦветФонаСтрокиХранимый) = Тип("Цвет");
Если ЭтоНовый или Не ОформлениеСодержится Тогда
ЦветФонаСтроки = ЦветаСтиля.ЦветФонаПоля;
ЦветШрифтаСтроки = ЦветаСтиля.ЦветТекстаФормы;
ШрифтСтроки = WindowsШрифты.ШрифтДиалоговИМеню;
Иначе
ЦветФонаСтроки = ЦветФонаСтрокиХранимый;
ЦветШрифтаСтроки = ОбъектДанные.ЦветШрифтаСтроки.Получить();
ШрифтСтроки = ОбъектДанные.ШрифтСтроки.Получить();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ЗаполнитьРеквизитыОформленияСтрокНаФорме();
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
ТекущийОбъект.ЦветФонаСтроки = Новый ХранилищеЗначения(ЦветФонаСтроки);
ТекущийОбъект.ЦветШрифтаСтроки = Новый ХранилищеЗначения(ЦветШрифтаСтроки);
ТекущийОбъект.ШрифтСтроки = Новый ХранилищеЗначения(ШрифтСтроки);
КонецПроцедуры
4. В общий модуль, выполняемый на сервере, к примеру ОбщегоНазначенияСервер вставляемся процедура ОформитьСтрокиТЧ:
&НаСервере
Процедура ОформитьСтрокиТЧ(Объект,УсловноеОформление,ТипОбъектаПодробный,ИмяТЧ,ИмяОбъектаСОформлением) Экспорт
ТипОбъектаСтр = СтрЗаменить(ТипОбъектаПодробный,".",Символы.ПС);
ТипОбъектаКраткий = СтрПолучитьСтроку(ТипОбъектаСтр,1);
ИмяОформляемогоМетаданного = СтрПолучитьСтроку(ТипОбъектаСтр,2);
Если ТипОбъектаКраткий = "ДокументОбъект" Тогда
ТипОбъектаКраткий = "Документы";
ИначеЕсли ТипОбъектаКраткий = "СправочникОбъект" Тогда
ТипОбъектаКраткий = "Справочники";
КонецЕсли;
ОбъектДанные = ДанныеФормыВЗначение(Объект,Тип(ТипОбъектаПодробный));
Для каждого СтрТЧ Из ОбъектДанные[ИмяТЧ] Цикл
ОбъектСОформлением = СтрТЧ[ИмяОбъектаСОформлением];
ЦветФонаСтроки = ОбъектСОформлением.ЦветФонаСтроки.Получить();
ЦветШрифтаСтроки = ОбъектСОформлением.ЦветШрифтаСтроки.Получить();
ШрифтСтроки = ОбъектСОформлением.ШрифтСтроки.Получить();
ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
ЭлементУсловногоОформления.Использование = Истина;
ОформлениеУО = ЭлементУсловногоОформления.Оформление;
ОтборУО = ЭлементУсловногоОформления.Отбор;
ОформляемыеПоляУО = ЭлементУсловногоОформления.Поля;
ОформлениеУО.УстановитьЗначениеПараметра("ЦветФона", ЦветФонаСтроки);
ОформлениеУО.УстановитьЗначениеПараметра("ЦветТекста", ЦветШрифтаСтроки);
ОформлениеУО.УстановитьЗначениеПараметра("Шрифт", ШрифтСтроки);
ЭлементОтбора = ОтборУО.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект." + ИмяТЧ + "." + ИмяОбъектаСОформлением);
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = ОбъектСОформлением;
ЭлементОтбора.Использование = Истина;
Для каждого РеквизитТЧ Из Метаданные[ТипОбъектаКраткий][ИмяОформляемогоМетаданного].ТабличныеЧасти[ИмяТЧ].Реквизиты Цикл
НазваниеРеквизита = РеквизитТЧ.Имя;
ОформляемоеПоле = ОформляемыеПоляУО.Элементы.Добавить();
ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных(ИмяТЧ + НазваниеРеквизита);
КонецЦикла;
ОформляемоеПоле = ОформляемыеПоляУО.Элементы.Добавить();
ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных(ИмяТЧ + "НомерСтроки");
КонецЦикла;
КонецПроцедуры
5. В модуль формы элемента документа "Реализация товаров и услуг" вставить процедуру ОформитьСтрокиТЧСервер и вызов ее в процедурах ТоварыСкладПриИзменении и ПриСозданииНаСервере
&НаКлиенте
Процедура ТоварыСкладПриИзменении(Элемент)
ОформитьСтрокиТЧСервер();
КонецПроцедуры
&НаСервере
Процедура ОформитьСтрокиТЧСервер()
ОбщегоНазначенияСервер.ОформитьСтрокиТЧ(Объект,УсловноеОформление,"ДокументОбъект.РеализацияТоваровУслуг","Товары","Склад");
КонецПроцедуры
Результат:

Вступайте в нашу телеграмм-группу Инфостарт
Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
См. также
Работа с интерфейсом Анализ учета Мониторинг 1С:Предприятие 8 1С 8.3 1C:Бухгалтерия 1С:Бухгалтерия 3.0 1С:ERP Управление предприятием 2 1С:Управление холдингом 1С:Зарплата и Управление Персоналом 3.x 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Управление торговлей 11 Платные (руб)
Создайте свой функциональный интерфейс в любой конфигурации 1С с помощью расширения Infostart Dashboard. Настраивайте панели виджетов с метриками, индикаторами и показателями на начальном экране. Узнайте возможность внедрения подсистемы у себя в конфигурации с помощью бесплатной обработки "Анализ внедрения подсистемы 1С Infostart Dashboard"!
31720 руб.
27.03.2025 92226 69 44
Консолидация данных Работа с интерфейсом Разработчик Пользователь 1С:Предприятие 8 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 1C:ERP Узбекистан Беларусь Кыргызстан Россия Казахстан Платные (руб)
Знакомая ситуация? Пользователи, особенно менеджеры, уверены: отборов много не бывает. Идут пожелания добавить в форму списка еще один быстрый фильтр, еще два, еще пять... В итоге интерфейс превращается в нагромождение полей отбора, а потребность в «самом главном» отборе, который «вот прямо сейчас нужен», все равно не закрыта. Универсальное расширение, которое решает эту проблему элегантно и технологично. С его помощью в любую форму списка можно легко добавить панель настраиваемых кнопок-закладок, каждая из которых применяет сложный фильтр-запрос, а так же показывает актуальное количество элементов в реальном времени.
6088 руб.
17.10.2025 3637 3 0
Разработка Инструментарий разработчика Работа с интерфейсом Адаптация типовых решений Нейросети 1C:Бухгалтерия 1C:ERP 1С:ЗУП 1С:КА 1С:УНФ 1С:УТ 1С:Розница 1С:ДО 1С:ERP Управление предприятием 2 Платные (руб)
Разработка "Дизайнер форм 1С" реализована в виде расширения 1С и является универсальным инструментом для разработки прототипа форм с целью демонстраций, технических заданий и т.д. Без участия разработчика с возможностью экспорта в файл внешней обработки и генерации формы используя искусственный интеллект.
36600 руб.
28.08.2025 10311 2 2
Работа с интерфейсом Разработчик Стажер 1С:Предприятие 8 Бесплатно (free)
Это инструкция по дизайну форм в среде 1С. Гайд охватывает рекомендации и стандарты для оптимизации пользовательского интерфейса. В гайде содержатся указания по использованию элементов интерфейса, включая как основные, так и продвинутые аспекты. Предоставляются также примеры и антипримеры для наглядного понимания принципов дизайна
20.08.2024 57344 mrXoxot 44
Работа с интерфейсом Разработчик 1С:Предприятие 8 Бесплатно (free)
Пример простого и симпатичного прогресс-бара в динамическом списке, без картинок, используя редактирование запроса.
27.05.2024 29968 smielka 39
Инструментарий разработчика Работа с интерфейсом Разработчик 1С 8.3 Абонемент ($m)
Подходит для создания web-страниц для замены управляемых форм 1С, красивых отчетов, интерфейса мобильного приложения на платформе 1С и для простых страниц веб-сайтов.
1 стартмани
10.04.2023 19435 190 acces969 31
Работа с интерфейсом Разработчик 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)
Питничная фантазия на возможности в разработке интерфейсов формы с помощью Платформы 1С - делаем свою подсказку. Публикация содержит готовую библиотеку программного формирования данной подсказки.
12.08.2022 16929 top_1c 39
Работа с интерфейсом Разработчик 1С:Предприятие 8 1C:Бухгалтерия Абонемент ($m)
"MVC плохо применима в 1С" - познакомьтесь с моделью состояния и, возможно, ваше мнение поменяется! Представленное решение является эволюционным развитием идеи реализации MVC для 1С. В новой версии добавлены DSL для описания модели состояния, а также параметризация свойств параметров и элементов формы.
1 стартмани
05.07.2022 17938 kalyaka 8
В качестве примера будем использовать, что в документе реализации строки выделялись в зависимости от склада, с которого отгружается номенклатура.
(2) ПриВыводеСтроки и ПриПолученииДанных нет в 8.2.
(4) (5) Смотрите выше. Склад должен быть предопределенным, чтобы можно было оформить на уровне конфигуратора. Как видно вы с этим не знакомы. А под началом такого психованного руководителя мало кто стал бы работать) Со стороны это смотрится, как будто я решил задачу по геометрии за 6 класс, а мне начали втирать таблицу умножения, причем с воплями. Я именно и рабоатю с условным формлением, только программно.
(7) Условное оформление тоже нужно заполнять во всех формах. 5 строчек кода через Ctrl+C, Ctrl+V добавить легче.
(9) Да, дополнительный справочник правильнее.
(10) Именно так и есть)
(11) поорИгинальнее. Я бы не сказал, что решение плохое. Единственное - оформление надо было вынести в дополнительный справочник, за все остальное я готов ответить. И что это лучше, чем в каждой форме залезать в условное оформление, это тоже факт. Залезать в каждую форму - это неуниверсальный бред. Склады могут меняться, цвета тоже могут изменяться. Сначала хотели красный, потом захотели зеленый. Добавили склад или решили изменить цвет. При данном решении выполняется только одно действие. Залезается в склад и изменяются значения там. Причем это может сделать и пользователь. И будет делать. А при вашем решении надо лезть в офигенное количество форм и сделать это может только программист.
(12) Спасибо за понимание)
В общем резюмирую. Иногда нужно что-либо оформлять на уровне конфигуратора, такие задачи возникают. В 8.1 это делалось через процедуры ПриВыводеСтроки и ПриПолученииДанных. В 8.2 их нет, там сделано условное оформление. Забивать его на уровне конфигуратора не получится, для этого нужно, чтобы были предопределенные значения, заносить которые для данной цели неправильно. Поэтому я привел пример, как можно оформлять программно, как форма оформляется кодом на 8.2.
[quote]Она есть только в режиме совместимости с 8.1. Но он по определению временный[/quote]
Вобще-то в 8.2 есть еще режим нормального приложения, безо всяких управляемых форм, в котором эта функция, слава Богу, есть. К тому же многих вполне устраивает этот "временный" режим совместимости, зачем его менять, если все работает.
Если выделяемых складов больше , то мы получим в ТЧ трудночитаемую разноцветную мозаику.
Теперь вопрос : а стоит ли для выделения одного - двух складов огород городить ?
Не проще ли обойтись небольшой вставкой кода в процедуре "ПриВыводеСтроки"
с явным указанием склада и цвета выделения ?
[quote]Я бы уволил программиста который бы начал в справочник добавлять подобные реквизиты.[/quote]
Что плохого в этом решении, например если надо конкретному складу назначить конкретный цвет? И иметь возможность отображать склад этим цветом везде (в т.ч. там где нет условного оформления).
Я бы только цвет числом хранил а не хранилищем значений.
(5)
Ну это же пример. Условное оформление - это ограниченные возможности. В сложных случаях без кода все равно не обойтись.
Да и в простых часто проще один раз сделать этот расчет оформления именно кодом и вынести его в общий модуля, а в конкретные формы вставлять одну строчку - вызов этой процедуры.
[quote]что значит везде? Условное оформление есть ВЕЗДЕ. во всех формах[/quote]
Везде - это везде, откуда может быть доступ к справочнику. В том числе и в запросе, подготоваливающем данные для выгрузки в стороннее приложение и при коннекте по ОЛЕ из стороннего приложения и при коннекте к соответствующей SQL таблице на сервере. Во всех указанных случаях условного оформления нет.
[quote]А если еще что то надо будет разукрашивать. Например номенклатуру. по какому нибудь реквизиту? Это вообще будет жестко. [/quote]
Ну если номенклатура имеет цвет и он имеет важное значение (одежда, обувь, краски, автомобили и т.п.) то раскраска номенклатуры выглядит вполне уместной.
Ведет к формированию дурного вкуса, а он, как говорят французы,ведет к преступлению ;)
Примечание: дурной вкус - это всё. что не нравится мне :D :D
Доктор, - говорит ассистент, - пациент Ларю из второй палаты скверно
себя чувствует.
- Надо говорить: "Пациент Ларю думает, что скверно себя чувствует".
Это новейший взгляд на сущность болезней.
На следующий день ассистент подходит к доктору.
- Доктор, пациент Ларю из второй палаты думает, что он умер.
Чтобы врачи не набивались к тебе в кабинет нужно ЧЕТКО ,ЯВНО указывать в рецепте диагноз и кому он предназначен. Диагноз не должен содержать и намека на двойое толкование .
Например. Указать явно в теме , что рассматривается пример для ТОЛЬКО УПРАВЛЯЕМОГО ПРИЛОЖЕНИЯ , в котором.. Объяснить ЯВНО в теме почему выбран именно такой вариант и в чем его преимущества.
Этого сделано не было.
Поэтому вздохи о тупости и непонимании порождают лишь ответные вежливые вздохи.
Эй, врач, получай камень в свой огород.
Чтобы врачи не набивались к тебе в кабинет нужно ЧЕТКО ,ЯВНО указывать в рецепте диагноз и кому он предназначен. Диагноз не должен содержать и намека на двойое толкование .
Например. Указать явно в теме , что рассматривается пример для ТОЛЬКО УПРАВЛЯЕМОГО ПРИЛОЖЕНИЯ , в котором.. Объяснить ЯВНО в теме почему выбран именно такой вариант и в чем его преимущества.
Этого сделано не было.
Поэтому вздохи о тупости и непонимании порождают лишь ответные вежливые вздохи.
Так там же сриншоты управляемого приложения!
Людей много хороших и разных, по-разному всё понимающих.
Поэтому :
Первое. Область применения указанного примера должна быть указана ЯВНО (в тексте).
Второе. Нужно явно привести (хотя бы простенький ) сравнительный анализ ( сравнить с возможными альтернативами) и показать преимущества на взгляд автора представленного решения.
Это есть - взрослый подход.
И вообще. Цель статьи в самой статье, а не в дискуссии после нее. У меня нет столько времени, чтобы расписывать всё и вся. Я выдал подход, кто надо - воспримет, кому не надо - тому не надо. За это время можно сделать много другого полезного. Судя по тому, что ты не знаешь об отсутсвии в управляемых формах процедуры ПриВыводеСтроки, данная статья не несет для тебя никакой нагрузки, так что я думаю эту дискуссию с тобой надо прекратить.
Не стоит так болезненно реагировать на такой подход и такое описание.
не криви душой, у самого было ведь когда что-то делал не так как по правилам, а так как проще?
Ну скажем перебор, вместо запроса и т.д.
Типовые решения и то такими вещами занимаются.
Получилось такая статья и что? Хуже когда 1С-овцы вообще ничего не делают, а тупо качают раз в день ;)
Указал в начале на то, что статья плохо оформлена и(или) есть альтернативное решение - человек понял и в следующий раз сделает лучше!
Хм.. Хотел бы я посмотреть на человека , который делает сразу все правильно. Ау ..
А про перебор вместо запроса - ты зря написал.
Милости прошу в ту тему. Там я расскажу , что понимается под перебором.
А программная работа с СКД - она в книжках описана, у Хрусталёвой, да на всяких ресурсах, какой смысл за это плюсы ставить?
[quote]хранилища настроек, в частности, заточенные именно для настроек СКД[/quote]
Какие хранилища настроек??? Цвет в 1С - это обычное целое число. Можно его конечно превратить во что угодно, сделать xml файлик потом поместить в хранилище, и т.п. Только потом не надо удивляться, что пользователь на калькуляторе считает быстрее, чем в 1С...
Советую ознакомиться с тем, что такое хранилище настроек, и чем, собственно, 8.2 отличается от 8.1 в части управляемых интерфейсов.
ОбновитьОтображениеДанных();
Элементы.Список.Обновить();
Оповестить("ОбновитьСписок", , ЭтаФорма);
не помогают.
Формирую таблицу на управляемой форме программно, только так и можно задать условное оформление. Тут я ни только правого значения не знаю, так ещё и списка колонок, которые я оформляю..
&НаКлиенте
Процедура ЗаявкиПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
ОформитьСтрокиНаСервере ();
КонецПроцедуры
&НаСервере
Процедура ОформитьСтрокиНаСервере ()
ЭтаФорма.УсловноеОформление.Элементы.Очистить();
ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
ОформляемоеПоле = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("Заявки");
ЭлементОтбора = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Заявки.Закрыть");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = Истина;
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.Киноварь);
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Заявки.Утвердить");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = Истина;
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.ВесеннеЗеленый);
КонецПроцедуры
Если нужно наложить несколько условий - повторить ниж еще раз серверный модуль, но тока без первой строчки по поводу очистки [ЭтаФорма.УсловноеОформление.Элементы.Очистить()]
Рейтинг: 1479
Вы можете заказать платную консультацию или разработку у автора. Будет создан приватный заказ на «Бирже заказов» для автора.
№ 85262
Создание 16.05.11 03:31
Обновление 16.05.11 03:31
Просмотры 86226
Загрузки 0
Рейтинг
81
Комментарии 57
Код открыт Не указано
Рубрики Работа с интерфейсом
Кому Разработчик
Тип файла Нет файла
Платформа 1С:Предприятие 8
Конфигурация 1C:Бухгалтерия
Операционная система Не имеет значения
Страна Россия
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Бесплатно (free)