Условное оформление табличной части документа по реквизитам номенклатуры

1. fixin 4253 29.05.23 22:05 Сейчас в теме
Клиент хочет выделять номенклатурные позиции с галочкой "Выгодно" красным шрифтом.
Но вот беда - в таблице значений для условного оформления нельзя использовать реквизиты полей таблицы.
Придется создавать под них реквизиты (программно) и заполнять их, отслеживая изменения номенклатуры.
По другому никак?

Вот такой код не работает:

	ЭлементОформления = УсловноеОформление.Элементы.Добавить();
	Элемент = ЭлементОформления.Оформление.Элементы.Найти("ЦветТекста");
	Элемент.Значение = WebЦвета.Красный;
	Элемент.Использование = Истина;
	ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
	ЭлементОтбора.Использование = Истина;
	ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ТЧНоменклатура.Номенклатура.дор_Выгодно");
	ЭлементОтбора.ПравоеЗначение = истина;
	ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
	ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("ТЧНоменклатураНоменклатура");
	ПолеОформления.Использование = Истина;
Показать
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
30. fixin 4253 16.06.23 12:32 Сейчас в теме
В общем тупо добавил реквизиты в табличную часть. Розница, редакция 3.0 (3.0.3.147)

Пересчет реквизитов модуль дор_К:
&НаКлиенте
Процедура ПересчитатьРеквизитыРаскраскиНоменклатурыДокумента(Форма, ТаблицаТоваров, ИмяПоляНоменклатуры) Экспорт

	М = Новый Массив();                           

	Для Каждого Строка ИЗ ТаблицаТоваров Цикл
		ТекНоменклатура = Строка[ИмяПоляНоменклатуры];                     
		М.Добавить(ТекНоменклатура);
	КонецЦикла;

	РеквизитыВсе = дор_С.ЗначенияРеквизитовОбъектов(М, "дор_Выгодно, дор_МинМаксЗаполнено"); 

	Для Каждого Строка ИЗ ТаблицаТоваров Цикл
		ТекНоменклатура = Строка[ИмяПоляНоменклатуры];                     
		РеквизитыТекущие = РеквизитыВсе[ТекНоменклатура];
		Если РеквизитыТекущие <> Неопределено Тогда
			Строка.дор_МинМаксЗаполнено = РеквизитыТекущие.дор_МинМаксЗаполнено;
			Строка.дор_Выгодно = РеквизитыТекущие.дор_Выгодно;
		КонецЕсли;
	КонецЦикла;
	
КонецПроцедуры
Показать

На сервере Дор_С:
Процедура РаскраситьНоменклатуруСписка(Форма, СписокЗапасы, ПутьКТЧНоменклатуры, ИдентификаторПоляНоменклатуры, ИмяПоляРаскраскиНоменклатуры) Экспорт
	Перем УсловноеОформление;     
	
	
	Если ТипЗнч(СписокЗапасы) = Тип("ДинамическийСписок") Тогда
		УсловноеОформление = СписокЗапасы.КомпоновщикНастроек.ФиксированныеНастройки.УсловноеОформление;
		ПутьКНоменклатуре = ИдентификаторПоляНоменклатуры;
	Иначе                                                      
		//Также нужно добавить реквизиты
		УсловноеОформление = Форма.УсловноеОформление;
		НовыеРеквизиты = Новый Массив;
		НовыеРеквизиты.Добавить(Новый РеквизитФормы("дор_МинМаксЗаполнено", Новый ОписаниеТипов("Булево"), ПутьКТЧНоменклатуры, "", ложь));
		НовыеРеквизиты.Добавить(Новый РеквизитФормы("дор_Выгодно", Новый ОписаниеТипов("Булево"), ПутьКТЧНоменклатуры, "", ложь));
		Форма.ИзменитьРеквизиты(НовыеРеквизиты); 
		ПутьКНоменклатуре = ПутьКТЧНоменклатуры; // + ?(ЗначениеЗаполнено(ИдентификаторПоляНоменклатуры), "." +  ИдентификаторПоляНоменклатуры, "");

	КонецЕсли;
	
	
	//=== Оформление поля мин-макс
	ЭлементОформления = УсловноеОформление.Элементы.Добавить();
	Элемент = ЭлементОформления.Оформление.Элементы.Найти("ЦветФона");
	Элемент.Значение = WebЦвета.СеребристоСерый;
	Элемент.Использование = Истина;
	ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
	ЭлементОтбора.Использование = Истина;
	ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ПутьКНоменклатуре + ".дор_МинМаксЗаполнено");
	ЭлементОтбора.ПравоеЗначение = Ложь;
	ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
	ПолеОформления.Поле = Новый ПолеКомпоновкиДанных(ИмяПоляРаскраскиНоменклатуры);
	ПолеОформления.Использование = Истина;

	//=== Оформление поля выгодно      
	
	ЭлементОформления = УсловноеОформление.Элементы.Добавить();
	Элемент = ЭлементОформления.Оформление.Элементы.Найти("ЦветТекста");
	Элемент.Значение = WebЦвета.Красный;
	Элемент.Использование = Истина;
	ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
	ЭлементОтбора.Использование = Истина;
	ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ПутьКНоменклатуре +  ".дор_Выгодно");
	ЭлементОтбора.ПравоеЗначение = истина;
	ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
	ПолеОформления.Поле = Новый ПолеКомпоновкиДанных(ИмяПоляРаскраскиНоменклатуры);
	ПолеОформления.Использование = Истина;

КонецПроцедуры

Показать


В форме списка номенклатуры:
&НаСервере
Процедура M_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)     

	дор_С.РаскраситьНоменклатуруСписка(ЭтаФорма, СписокЗапасы, "СписокЗапасы", "Номенклатура", "Наименование");
	
КонецПроцедуры


Показать




В форме документа установки цен:

&НаСервере
Процедура M_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
	
	дор_С.РаскраситьНоменклатуруСписка(ЭтаФорма, ТЧНоменклатура, "ТЧНоменклатура", "Номенклатура", "ТЧНоменклатураНоменклатура");
	
КонецПроцедуры

&НаКлиенте
Процедура M_ОбновитьНомераСтрок() Экспорт
	Сч = 0;
	Для Каждого Строка ИЗ ТЧНоменклатура Цикл
		Сч = Сч + 1;
		Строка.дор_НомерСтроки = Сч;
	КонецЦикла;            
	//Раскрашиваем
	дор_К.ПересчитатьРеквизитыРаскраскиНоменклатурыДокумента(ЭтаФорма, ТЧНоменклатура, "Номенклатура");
КонецПроцедуры


&НаКлиенте
&После("ОбновитьКоличествоЗаписейПоДокументу")
Процедура M_ОбновитьКоличествоЗаписейПоДокументу()
	M_ОбновитьНомераСтрок();
КонецПроцедуры

&НаКлиенте
Процедура M_ПриОткрытииПосле(Отказ)
	M_ОбновитьНомераСтрок();
КонецПроцедуры


&НаКлиенте
&После("ОбработатьЗаполненияДокументаПриОткрытии")
Процедура M_ОбработатьЗаполненияДокументаПриОткрытии(Результат, ДополнительныеПараметры)
	//Если документ грузится фоновым заданием
	M_ОбновитьНомераСтрок();
КонецПроцедуры


Показать


И в обработке печати ценников:

&НаСервере
Процедура M_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
	дор_С.РаскраситьНоменклатуруСписка(ЭтаФорма, Объект.Товары, "Объект.Товары", "Номенклатура", "ТоварыНоменклатура");
КонецПроцедуры

&НаКлиенте
Процедура ОбновитьРеквизитыТоваров() Экспорт
	дор_К.ПересчитатьРеквизитыРаскраскиНоменклатурыДокумента(ЭтаФорма, Объект.Товары, "Номенклатура");
КонецПроцедуры

&НаКлиенте
&После("ОповещениеПодборПроизведен")
Процедура M_ОповещениеПодборПроизведен(РезультатЗакрытия, ДополнительныеПараметры)
	ОбновитьРеквизитыТоваров();
КонецПроцедуры


&НаКлиенте
Процедура M_ЗаполнитьПоОтборуПосле(Команда)
	ОбновитьРеквизитыТоваров();
КонецПроцедуры

&НаКлиенте
&После("ОповещениеЗаполнитьТаблицуТоваров")
Процедура M_ОповещениеЗаполнитьТаблицуТоваров(Результат, ДополнительныеПараметры)
	ОбновитьРеквизитыТоваров();
КонецПроцедуры

&НаКлиенте
Процедура M_ПриОткрытииПосле(Отказ)
	ОбновитьРеквизитыТоваров();
КонецПроцедуры

&НаКлиенте
&После("ЗаполнитьПоПакетамЦенников")
Процедура M_ЗаполнитьПоПакетамЦенников(СтруктураТоваров, Параметры)
	ОбновитьРеквизитыТоваров();
КонецПроцедуры
Показать


Процедура раскраски используется общая для номенклатуры и документа.
Реквизиты получаются одним типовым запросом по всей номенклатуре документа и обновляются в цикле по строкам.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
7. Sashares 34 30.05.23 11:35 Сейчас в теме
(1)Либо заполнять колонку, либо динамически менять отбор в условном оформлении.
То есть задать отбор по номенклатуре в документе, подходящей под условия.
При изменении состава табличной части/номенклатуры - обновлять отбор в условном оформлении.
21. dvk09 2 01.06.23 08:50 Сейчас в теме
(1)
ТЧНоменклатура
Доброго дня.
Нельзя программно? Просто настройка оформления в режиме клиента позволяет такое настроить ручками.

И тут
Новый ПолеКомпоновкиДанных("ТЧНоменклатураНоменклатура");
точно точка не нужна?


Или я вопрос не понял?
Прикрепленные файлы:
2. user1826630 29.05.23 22:16 Сейчас в теме
Посмотри на сайте у Гения 1С, там должен быть ответ.
PowerBoy; user1880116; +2 Ответить
3. user856012 13 29.05.23 22:54 Сейчас в теме
(2)
у Гения 1С
Думаете, автор знает - кто это такой?
PowerBoy; user1880116; +2 Ответить
4. Kilka_v_Kepke 30.05.23 09:28 Сейчас в теме
условие некорректно
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ТЧНоменклатура.Номенклатура.дор_Выгодно");
    ЭлементОтбора.ПравоеЗначение = истина;

надо что-то вроде
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ТЧНоменклатура.Номенклатура.дор_Выгодно");
    ЭлементОтбора.ПравоеЗначение = Справочники.Номенклатура.НайтиПоКоду("аиваиа");
5. Kilka_v_Kepke 30.05.23 11:19 Сейчас в теме
(4) а не чет я прогнал дор_Выгодно не заметил
6. Kilka_v_Kepke 30.05.23 11:21 Сейчас в теме
(5) создайте список номенклатуры где дор_Выгодно равна истине, и проверяйте на вхождения Новый ПолеКомпоновкиДанных("ТЧНоменклатура.Номенклатура.дор_Выгодно") в этот список
23. fixin 4253 01.06.23 09:44 Сейчас в теме
(6) надо отслеживать состав номенклатуры в исходной ТЧ, формировать этот список. Тоже не прозрачная штука.
24. SlavaKron 01.06.23 10:32 Сейчас в теме +1 $m
(23) Как вариант, получите полный список номенклатуры с флагом дор_Выгодно вне зависимости от наполнения ТЧ.
27. fixin 4253 01.06.23 16:11 Сейчас в теме +1 $m
(24) память не бесконечная на клиенте... но способ рабочий, в принципе. 1 СМ отдаю.
Он рабочий только в принципе, на практике его применять не буду. Все же это изнасилование памяти.
Конечно, акционных товаров менье, чем вся номенклатура, но тоже 1000 элементов держать в памяти...

Упс. Ошибочно отдал 1см себе. Поправил, отдал и автору ответа.
28. user856012 13 01.06.23 16:36 Сейчас в теме
(27)
отдал и автору ответа
Ага!
Прикрепленные файлы:
29. Kilka_v_Kepke 01.06.23 19:54 Сейчас в теме
(27)
Упс. Ошибочно отдал 1см себе. Поправил, отдал и автору ответа.

это называется синхронность.
8. fixin 4253 31.05.23 08:53 Сейчас в теме
(6) (7) там проблема в том, чтобы поддерживать реквизит в актуальном состоянии, потому что у платформы нет событий по изменению таблицы, нужно отслеживать все возможные события по смену номенклатуры в строке и добавлению строк.
9. Kilka_v_Kepke 31.05.23 09:00 Сейчас в теме +0.2 $m
(8) не понял, как это нету(ПриИзменении)? ну как еще один вариант подключить обработчик ожидания и каджую секунду - две перезаполнять)
10. fixin 4253 31.05.23 09:02 Сейчас в теме
(9) нету. там 100500 способов изменения этой ТЧ, в т.ч. и программное добавление. Обработчик - это знатный костыль. Тогда уж для ускорения еще и колонку со значением номенклатуры, для которой посчитан реквизит, чтобы сервер не дергать, но тогда если реквизит номенклатуры обновится, поле не обновится. Но это уж ладно. Возможно, придется так и поступить, хотя я думаю, в типовой есть события пересчета итогов документа, к ним подвязаться.
11. Kilka_v_Kepke 31.05.23 09:07 Сейчас в теме
(10) тогда 2 колонки, во второй записывать что первая обновлена, и на клиенте каждые пару секунд проверять вся ли номенклатура из первой колонки обновлена, чтоб каждый раз на сервер без необходимости не бегать)
12. Kilka_v_Kepke 31.05.23 09:10 Сейчас в теме
(10) че эт вы текст свой изменили и глупцом меня выставили, ну ок
14. fixin 4253 31.05.23 10:56 Сейчас в теме
(12) это называется синхронность.
19. Kilka_v_Kepke 31.05.23 14:14 Сейчас в теме
(14) и часто вы синхронизируете?
13. Kilka_v_Kepke 31.05.23 09:15 Сейчас в теме
(10) за 2 стартмани удавиться готов
brublik; user1880116; +2 1 Ответить
18. user856012 13 31.05.23 12:54 Сейчас в теме
(13)
за 2 стартмани удавиться готов
Вы и этому должны радоваться - в прошлый раз было и того хуже.
user1863362; Kilka_v_Kepke; +2 1 Ответить
15. aka Любитель XML 31.05.23 11:00 Сейчас в теме
(13) это ж Гений ) что с него взять. Рейтинг 4191, а не может с условным оформлением справиться )
user1880116; user1863362; +2 1 Ответить
16. fixin 4253 31.05.23 11:15 Сейчас в теме
(15) А вы можете справиться? Расскажите про способ, который еще тут не озвучивали?
17. пользователь 31.05.23 11:23
Сообщение было скрыто модератором.
...
20. пользователь 31.05.23 17:22
Сообщение было скрыто модератором.
...
22. EVKash 14 01.06.23 09:43 Сейчас в теме
(21) Это ДС на скрине. Реч про ТЧ.
25. dvk09 2 01.06.23 10:44 Сейчас в теме
(22) Ну сделать с ДС. Посмотреть как это выглядит в отладчике, попробовать реализовать тоже для ТЧ.


А вообще на ютуб канале желтого клуба в начале видео "Ошибки в коде 90% программистов", первых минут30-40 как раз что-то подобное описано, но они там условным оформлением отметку обязательности заполнения убирали, ну и да, добавляли колонку без вывода её на форму и заполняли её привязываясь к 4м событиям, если не ошибаюсь...
26. fixin 4253 01.06.23 15:25 Сейчас в теме
(25) с ДС тоже с реквизитами не работает, там работает с компоновщиком настроек.https://geniy1s.ru/koe-chto-vazhnoe-ob-uslovnom-oformlenii/
Но в таблице компоновщика нет.
30. fixin 4253 16.06.23 12:32 Сейчас в теме
В общем тупо добавил реквизиты в табличную часть. Розница, редакция 3.0 (3.0.3.147)

Пересчет реквизитов модуль дор_К:
&НаКлиенте
Процедура ПересчитатьРеквизитыРаскраскиНоменклатурыДокумента(Форма, ТаблицаТоваров, ИмяПоляНоменклатуры) Экспорт

	М = Новый Массив();                           

	Для Каждого Строка ИЗ ТаблицаТоваров Цикл
		ТекНоменклатура = Строка[ИмяПоляНоменклатуры];                     
		М.Добавить(ТекНоменклатура);
	КонецЦикла;

	РеквизитыВсе = дор_С.ЗначенияРеквизитовОбъектов(М, "дор_Выгодно, дор_МинМаксЗаполнено"); 

	Для Каждого Строка ИЗ ТаблицаТоваров Цикл
		ТекНоменклатура = Строка[ИмяПоляНоменклатуры];                     
		РеквизитыТекущие = РеквизитыВсе[ТекНоменклатура];
		Если РеквизитыТекущие <> Неопределено Тогда
			Строка.дор_МинМаксЗаполнено = РеквизитыТекущие.дор_МинМаксЗаполнено;
			Строка.дор_Выгодно = РеквизитыТекущие.дор_Выгодно;
		КонецЕсли;
	КонецЦикла;
	
КонецПроцедуры
Показать

На сервере Дор_С:
Процедура РаскраситьНоменклатуруСписка(Форма, СписокЗапасы, ПутьКТЧНоменклатуры, ИдентификаторПоляНоменклатуры, ИмяПоляРаскраскиНоменклатуры) Экспорт
	Перем УсловноеОформление;     
	
	
	Если ТипЗнч(СписокЗапасы) = Тип("ДинамическийСписок") Тогда
		УсловноеОформление = СписокЗапасы.КомпоновщикНастроек.ФиксированныеНастройки.УсловноеОформление;
		ПутьКНоменклатуре = ИдентификаторПоляНоменклатуры;
	Иначе                                                      
		//Также нужно добавить реквизиты
		УсловноеОформление = Форма.УсловноеОформление;
		НовыеРеквизиты = Новый Массив;
		НовыеРеквизиты.Добавить(Новый РеквизитФормы("дор_МинМаксЗаполнено", Новый ОписаниеТипов("Булево"), ПутьКТЧНоменклатуры, "", ложь));
		НовыеРеквизиты.Добавить(Новый РеквизитФормы("дор_Выгодно", Новый ОписаниеТипов("Булево"), ПутьКТЧНоменклатуры, "", ложь));
		Форма.ИзменитьРеквизиты(НовыеРеквизиты); 
		ПутьКНоменклатуре = ПутьКТЧНоменклатуры; // + ?(ЗначениеЗаполнено(ИдентификаторПоляНоменклатуры), "." +  ИдентификаторПоляНоменклатуры, "");

	КонецЕсли;
	
	
	//=== Оформление поля мин-макс
	ЭлементОформления = УсловноеОформление.Элементы.Добавить();
	Элемент = ЭлементОформления.Оформление.Элементы.Найти("ЦветФона");
	Элемент.Значение = WebЦвета.СеребристоСерый;
	Элемент.Использование = Истина;
	ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
	ЭлементОтбора.Использование = Истина;
	ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ПутьКНоменклатуре + ".дор_МинМаксЗаполнено");
	ЭлементОтбора.ПравоеЗначение = Ложь;
	ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
	ПолеОформления.Поле = Новый ПолеКомпоновкиДанных(ИмяПоляРаскраскиНоменклатуры);
	ПолеОформления.Использование = Истина;

	//=== Оформление поля выгодно      
	
	ЭлементОформления = УсловноеОформление.Элементы.Добавить();
	Элемент = ЭлементОформления.Оформление.Элементы.Найти("ЦветТекста");
	Элемент.Значение = WebЦвета.Красный;
	Элемент.Использование = Истина;
	ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
	ЭлементОтбора.Использование = Истина;
	ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ПутьКНоменклатуре +  ".дор_Выгодно");
	ЭлементОтбора.ПравоеЗначение = истина;
	ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
	ПолеОформления.Поле = Новый ПолеКомпоновкиДанных(ИмяПоляРаскраскиНоменклатуры);
	ПолеОформления.Использование = Истина;

КонецПроцедуры

Показать


В форме списка номенклатуры:
&НаСервере
Процедура M_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)     

	дор_С.РаскраситьНоменклатуруСписка(ЭтаФорма, СписокЗапасы, "СписокЗапасы", "Номенклатура", "Наименование");
	
КонецПроцедуры


Показать




В форме документа установки цен:

&НаСервере
Процедура M_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
	
	дор_С.РаскраситьНоменклатуруСписка(ЭтаФорма, ТЧНоменклатура, "ТЧНоменклатура", "Номенклатура", "ТЧНоменклатураНоменклатура");
	
КонецПроцедуры

&НаКлиенте
Процедура M_ОбновитьНомераСтрок() Экспорт
	Сч = 0;
	Для Каждого Строка ИЗ ТЧНоменклатура Цикл
		Сч = Сч + 1;
		Строка.дор_НомерСтроки = Сч;
	КонецЦикла;            
	//Раскрашиваем
	дор_К.ПересчитатьРеквизитыРаскраскиНоменклатурыДокумента(ЭтаФорма, ТЧНоменклатура, "Номенклатура");
КонецПроцедуры


&НаКлиенте
&После("ОбновитьКоличествоЗаписейПоДокументу")
Процедура M_ОбновитьКоличествоЗаписейПоДокументу()
	M_ОбновитьНомераСтрок();
КонецПроцедуры

&НаКлиенте
Процедура M_ПриОткрытииПосле(Отказ)
	M_ОбновитьНомераСтрок();
КонецПроцедуры


&НаКлиенте
&После("ОбработатьЗаполненияДокументаПриОткрытии")
Процедура M_ОбработатьЗаполненияДокументаПриОткрытии(Результат, ДополнительныеПараметры)
	//Если документ грузится фоновым заданием
	M_ОбновитьНомераСтрок();
КонецПроцедуры


Показать


И в обработке печати ценников:

&НаСервере
Процедура M_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
	дор_С.РаскраситьНоменклатуруСписка(ЭтаФорма, Объект.Товары, "Объект.Товары", "Номенклатура", "ТоварыНоменклатура");
КонецПроцедуры

&НаКлиенте
Процедура ОбновитьРеквизитыТоваров() Экспорт
	дор_К.ПересчитатьРеквизитыРаскраскиНоменклатурыДокумента(ЭтаФорма, Объект.Товары, "Номенклатура");
КонецПроцедуры

&НаКлиенте
&После("ОповещениеПодборПроизведен")
Процедура M_ОповещениеПодборПроизведен(РезультатЗакрытия, ДополнительныеПараметры)
	ОбновитьРеквизитыТоваров();
КонецПроцедуры


&НаКлиенте
Процедура M_ЗаполнитьПоОтборуПосле(Команда)
	ОбновитьРеквизитыТоваров();
КонецПроцедуры

&НаКлиенте
&После("ОповещениеЗаполнитьТаблицуТоваров")
Процедура M_ОповещениеЗаполнитьТаблицуТоваров(Результат, ДополнительныеПараметры)
	ОбновитьРеквизитыТоваров();
КонецПроцедуры

&НаКлиенте
Процедура M_ПриОткрытииПосле(Отказ)
	ОбновитьРеквизитыТоваров();
КонецПроцедуры

&НаКлиенте
&После("ЗаполнитьПоПакетамЦенников")
Процедура M_ЗаполнитьПоПакетамЦенников(СтруктураТоваров, Параметры)
	ОбновитьРеквизитыТоваров();
КонецПроцедуры
Показать


Процедура раскраски используется общая для номенклатуры и документа.
Реквизиты получаются одним типовым запросом по всей номенклатуре документа и обновляются в цикле по строкам.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот