Подсветка акционного товара в "ПодборТоваровВДокументПродажи" через расширение
Необходимо через расширение реализовать подсветку товара при подборе в документы продажи.
Реализация:
-Создать дополнительный реквизит у номенклатуры "Акция".
-На форме обработки "ПодборТоваровВДокументПродажи" в таблицу динамического списка добавляю скрытую колонку "Акция"
-Добавляю условие для условного форматирования, подсветки товара.
теперь по куду:
1) Добавить доп реквизит и установить его у необходимых товаров, делает пользователь через саму программу.
2) В расширение добавляю "ПодборТоваровВДокументПродажи", в модуле формы дописываю:
Текст запроса изменяю, отрабатывает нормально.
А вот добавить колонку динамического списка Тут проблемма, чтото не пойму откуда взять путь к данным :( ???
Ну и условное форматирование, то же отрабатывает нормально, там пока другое условие, т.к. колонки Акция нет пока:
Или может быть есть более правильное решение такой задачи ? которое работает быстрее?
Реализация:
-Создать дополнительный реквизит у номенклатуры "Акция".
-На форме обработки "ПодборТоваровВДокументПродажи" в таблицу динамического списка добавляю скрытую колонку "Акция"
-Добавляю условие для условного форматирования, подсветки товара.
теперь по куду:
1) Добавить доп реквизит и установить его у необходимых товаров, делает пользователь через саму программу.
2) В расширение добавляю "ПодборТоваровВДокументПродажи", в модуле формы дописываю:
&После("ПриСозданииНаСервере")
Процедура ПриСозданииНаСервере2(Отказ, СтандартнаяОбработка)
СписокНоменклатура.ТекстЗапроса = СтрЗаменить(СписокНоменклатура.ТекстЗапроса, "ЛОЖЬ КАК СодержитУслуги", "ЛОЖЬ КАК СодержитУслуги," + Символы.ПС + "ДопРеквизит.Значение КАК Значение");
СписокНоменклатура.ТекстЗапроса = СтрЗаменить(СписокНоменклатура.ТекстЗапроса,
"Справочник.Номенклатура КАК СправочникНоменклатура",
"Справочник.Номенклатура КАК СправочникНоменклатура
|ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.ДополнительныеРеквизиты КАК ДопРеквизит
|ПО (СправочникНоменклатура.Ссылка = ДопРеквизит.Ссылка)
|И (ДопРеквизит.Свойство.Заголовок = ""Акция"")");
НовЭлемент = Элементы.Добавить("ВидНоменклатуры", Тип("ПолеФормы"), Элементы.СписокСтандартныйПоискНоменклатура);
НовЭлемент.Вид = ВидПоляФормы.ПолеФлажка;
НовЭлемент.ПутьКДанным = "СписокНоменклатура.Акция";
НовЭлемент.Заголовок = "Акция";
НовЭлемент.ТолькоПросмотр = Ложь;
НовЭлемент.Видимость = Истина;
КонецПроцедуры
ПоказатьТекст запроса изменяю, отрабатывает нормально.
А вот добавить колонку динамического списка Тут проблемма, чтото не пойму откуда взять путь к данным :( ???
НовЭлемент.ПутьКДанным = ;
Ну и условное форматирование, то же отрабатывает нормально, там пока другое условие, т.к. колонки Акция нет пока:
&После("УстановитьУсловноеОформление")
Процедура УстановитьУсловноеОформление2()
Элемент = УсловноеОформление.Элементы.Добавить();
//выбор элемента
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.СписокСтандартныйПоискНоменклатураНаименование.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.СписокРасширенныйПоискНоменклатураНаименование.Имя);
//условие
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
//ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(Элементы.СписокРасширенныйПоискНоменклатураВНаличииОстаток);
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных( "СписокНоменклатура.ВНаличииОстаток" );
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
ОтборЭлемента.ПравоеЗначение = 10;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.БледноЗеленый);
КонецПроцедуры
ПоказатьИли может быть есть более правильное решение такой задачи ? которое работает быстрее?
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Всем спасибо.
Видимо список много раз подменяется, и получается что я текстовую замену делал, а список уже другой.
В обще вот скомпоновал так, работает:
Видимо список много раз подменяется, и получается что я текстовую замену делал, а список уже другой.
В обще вот скомпоновал так, работает:
&После("ПриСозданииНаСервере")
Процедура РА_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
СписокНоменклатура.ТекстЗапроса = СтрЗаменить(СписокНоменклатура.ТекстЗапроса,
"СправочникНоменклатура.Артикул КАК Артикул,",
"СправочникНоменклатура.Артикул КАК Артикул,
|ДопРеквизит.Значение КАК Значение,");
СписокНоменклатура.ТекстЗапроса = СтрЗаменить(СписокНоменклатура.ТекстЗапроса,
"Справочник.Номенклатура КАК СправочникНоменклатура",
"Справочник.Номенклатура КАК СправочникНоменклатура
|ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.ДополнительныеРеквизиты КАК ДопРеквизит
|ПО (СправочникНоменклатура.Ссылка = ДопРеквизит.Ссылка)
|И (ДопРеквизит.Свойство.Заголовок = ""Акция"")");
НовЭлемент = Элементы.Добавить("Акция", Тип("ПолеФормы"), Элементы.СписокСтандартныйПоискНоменклатура);
НовЭлемент.Вид = ВидПоляФормы.ПолеФлажка;
НовЭлемент.ПутьКДанным = "СписокНоменклатура.Значение";
НовЭлемент.Заголовок = "Акция";
НовЭлемент.ТолькоПросмотр = Ложь;
НовЭлемент.Видимость = Ложь;
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.СписокСтандартныйПоискНоменклатура.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СписокНоменклатура.Значение");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.БледноЗеленый);
КонецПроцедуры
Показать
(4)
|ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.ДополнительныеРеквизиты КАК ДопРеквизит
|ПО (СправочникНоменклатура.Ссылка = ДопРеквизит.Ссылка)
|И (ДопРеквизит.Свойство.Заголовок = ""Акция"")")
Отличный метод получить сообщение "Обнаружено дублирование ключевых значений в колонке Ссылка"
|ПО (СправочникНоменклатура.Ссылка = ДопРеквизит.Ссылка)
|И (ДопРеквизит.Свойство.Заголовок = ""Акция"")")
(9)
Синтаксис:
ПриПолученииДанныхНаСервере(<ИмяЭлемента>, <Настройки>, <Строки>)
Параметры:
<ИмяЭлемента>
Тип: Строка.
Содержит имя таблицы формы, из которой вызван обработчик события.
<Настройки>
Тип: НастройкиКомпоновкиДанных.
Содержит копию полных настроек динамического списка.
<Строки>
Тип: СтрокиДинамическогоСписка.
Коллекция содержит данные и оформление всех строк, получаемых в списке, кроме строк группировок.
Описание:
Обработчик события вызывается на сервере после получения данных динамическим списком, только если была получена как минимум одна строка. При этом элемент формы, с которым связано событие, не передается в обработчик.
Обработчик вызывается в режиме совместимости конфигурации Версия8_3_8 и выше.
Если в данном обработчике события изменяются данные строк, то рекомендуется исключать поля, в которых изменяются данные, из списков полей, используемых для группировки, упорядочивания и отбора. Если этого не сделать, группировка, упорядочивание и отбор (включая все виды поиска) будет работать неожиданно для пользователя. Для установки ограничения на использование поля в той или иной операции предназначены методы динамического списка УстановитьОграниченияИспользованияВГруппировке, УстановитьОграниченияИспользованияВПорядке и УстановитьОграниченияИспользованияВОтборе.
Доступность:
Сервер.
Примечание:
Обработчик данного события должен иметь директиву &НаСервереБезКонтекста. Отбор (а также поиск), сортировка, группировка и условное оформление будут применяться к значениям до изменения их обработчиком.
Использование в версии:
Доступен, начиная с версии 8.3.10.
не могли бы
ПриПолученииДанныхНаСервере
Синтаксис:
ПриПолученииДанныхНаСервере(<ИмяЭлемента>, <Настройки>, <Строки>)
Параметры:
<ИмяЭлемента>
Тип: Строка.
Содержит имя таблицы формы, из которой вызван обработчик события.
<Настройки>
Тип: НастройкиКомпоновкиДанных.
Содержит копию полных настроек динамического списка.
<Строки>
Тип: СтрокиДинамическогоСписка.
Коллекция содержит данные и оформление всех строк, получаемых в списке, кроме строк группировок.
Описание:
Обработчик события вызывается на сервере после получения данных динамическим списком, только если была получена как минимум одна строка. При этом элемент формы, с которым связано событие, не передается в обработчик.
Обработчик вызывается в режиме совместимости конфигурации Версия8_3_8 и выше.
Если в данном обработчике события изменяются данные строк, то рекомендуется исключать поля, в которых изменяются данные, из списков полей, используемых для группировки, упорядочивания и отбора. Если этого не сделать, группировка, упорядочивание и отбор (включая все виды поиска) будет работать неожиданно для пользователя. Для установки ограничения на использование поля в той или иной операции предназначены методы динамического списка УстановитьОграниченияИспользованияВГруппировке, УстановитьОграниченияИспользованияВПорядке и УстановитьОграниченияИспользованияВОтборе.
Доступность:
Сервер.
Примечание:
Обработчик данного события должен иметь директиву &НаСервереБезКонтекста. Отбор (а также поиск), сортировка, группировка и условное оформление будут применяться к значениям до изменения их обработчиком.
Использование в версии:
Доступен, начиная с версии 8.3.10.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот