Динамический список: проставление галочки по двойному клику (странное поведение)
Приветствую, Форумчане!
ЕРП 2.5
В динамический список журнала "Журнал продаж" добавил числовое поле "Метка" (поле картинки, картинка значений)
На событие списка "Выбор" повесил простой код:
Как ни странно код сработал и галочка проставляется. (см. картинку)
Но весь парадокс (для меня) заключается в том, что если я заремачу
То ничего не изменяется. Складывается впечатление, что "Сообщить()" выполняет своего рода обновлением списка.
Никак не могу понять какую роль выполняет вывод этого сообщения, что происходит обновление списка с изменением поля "Метка".
Что сделано не так. Как сделать это обновление формы без этого "Сообщить()"?
ЕРП 2.5
В динамический список журнала "Журнал продаж" добавил числовое поле "Метка" (поле картинки, картинка значений)
На событие списка "Выбор" повесил простой код:
&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если Поле.Имя = "Метка" Тогда
Сообщить("ваповап");//(Элемент.ТекущиеДанные.Метка);
Если Элемент.ТекущиеДанные.Метка = 1 Тогда
Ответ = 0;
Иначе
Ответ = 1;
КонецЕсли;
ВыделенныеСтроки = Элементы.СписокДокументыПродажи.ВыделенныеСтроки; //
ТекущиеДанные = Элементы.СписокДокументыПродажи.ТекущиеДанные;
ТекущиеДанные.Метка = Ответ;
//СписокВыборНаСервере(ВыделенныеСтроки, ТекущиеДанные, Ответ);
//Элементы.СписокДокументыПродажи.Обновить();
//Возврат;
Иначе
СтандартнаяОбработка = Истина;
КонецЕсли;
КонецПроцедуры
ПоказатьКак ни странно код сработал и галочка проставляется. (см. картинку)
Но весь парадокс (для меня) заключается в том, что если я заремачу
Сообщить("ваповап");
То ничего не изменяется. Складывается впечатление, что "Сообщить()" выполняет своего рода обновлением списка.
Никак не могу понять какую роль выполняет вывод этого сообщения, что происходит обновление списка с изменением поля "Метка".
Что сделано не так. Как сделать это обновление формы без этого "Сообщить()"?
Прикрепленные файлы:
Найденные решения
(1) Не правильно, имхо.
В динамический список добавляется поле:
Добавляется реквизит формы - список значений - СписокОтмеченных.
Для ячейки устанавливается свойство ГиперссылкаЯчейки - чтобы по одному клику работало.
При создании на сервере устанавливается параметр.
По событию выбор - добавлять/удалять ссылки из выделенных строк в список/из списка, соответственно, и устанавливать параметр ДС еще раз.
Также я добавляю процедуру актуализации списка - чтобы при изменении отбора в списке, поиске и подобных, реквизит формы - список значений содержал только выводимые строки.
Например, если надо как-то обработать отмеченные документы, то перед обработкой надо актуализировать список отмеченных по выводимым строкам, чтобы в списке значений не было ссылок, скрытых отбором или поиском.
В динамический список добавляется поле:
Выбор Когда Ссылка В (&СписокОтмеченных) Тогда 1 Иначе 0 Конец КАК Метка
Добавляется реквизит формы - список значений - СписокОтмеченных.
Для ячейки устанавливается свойство ГиперссылкаЯчейки - чтобы по одному клику работало.
При создании на сервере устанавливается параметр.
По событию выбор - добавлять/удалять ссылки из выделенных строк в список/из списка, соответственно, и устанавливать параметр ДС еще раз.
Также я добавляю процедуру актуализации списка - чтобы при изменении отбора в списке, поиске и подобных, реквизит формы - список значений содержал только выводимые строки.
Например, если надо как-то обработать отмеченные документы, то перед обработкой надо актуализировать список отмеченных по выводимым строкам, чтобы в списке значений не было ссылок, скрытых отбором или поиском.
&НаСервере
Процедура АктуализироватьСписокОтмеченных()
Схема = Элементы.МойДС.ПолучитьИсполняемуюСхемуКомпоновкиДанных();
НастройкиСхемы = Элементы.МойДС.ПолучитьИсполняемыеНастройкиКомпоновкиДанных();
КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(Схема));
КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиСхемы);
КомпоновщикНастроек.Восстановить();
КомпоновщикНастроек.Настройки.Структура.Очистить();
ДетальныеЗаписи = КомпоновщикНастроек.Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
ДетальныеЗаписи.Имя = "ДетальныеЗаписи";
ДетальныеЗаписи.Использование = Истина;
ПолеОтчет = ДетальныеЗаписи.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ПолеОтчет.Поле = Новый ПолеКомпоновкиДанных("Ссылка");
ПолеОтчет.Использование = Истина;
ОбщегоНазначенияКлиентСервер.ИзменитьЭлементыОтбора(КомпоновщикНастроек.Настройки.Отбор,,"Метка",1,,Истина);
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(Схема, КомпоновщикНастроек.ПолучитьНастройки(), , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных);
ПроцессорВыводаРезультатаОтчета = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
РезультатСхемы = ПроцессорВыводаРезультатаОтчета.Вывести(ПроцессорКомпоновкиДанных);
МассивСсылок = РезультатСхемы.Выгрузить("Ссылка");
СписокОтмеченных.Очистить();
СписокОтмеченных.ЗагрузитьЗначения(МассивСсылок );
КонецПроцедуры
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Не правильно, имхо.
В динамический список добавляется поле:
Добавляется реквизит формы - список значений - СписокОтмеченных.
Для ячейки устанавливается свойство ГиперссылкаЯчейки - чтобы по одному клику работало.
При создании на сервере устанавливается параметр.
По событию выбор - добавлять/удалять ссылки из выделенных строк в список/из списка, соответственно, и устанавливать параметр ДС еще раз.
Также я добавляю процедуру актуализации списка - чтобы при изменении отбора в списке, поиске и подобных, реквизит формы - список значений содержал только выводимые строки.
Например, если надо как-то обработать отмеченные документы, то перед обработкой надо актуализировать список отмеченных по выводимым строкам, чтобы в списке значений не было ссылок, скрытых отбором или поиском.
В динамический список добавляется поле:
Выбор Когда Ссылка В (&СписокОтмеченных) Тогда 1 Иначе 0 Конец КАК Метка
Добавляется реквизит формы - список значений - СписокОтмеченных.
Для ячейки устанавливается свойство ГиперссылкаЯчейки - чтобы по одному клику работало.
При создании на сервере устанавливается параметр.
По событию выбор - добавлять/удалять ссылки из выделенных строк в список/из списка, соответственно, и устанавливать параметр ДС еще раз.
Также я добавляю процедуру актуализации списка - чтобы при изменении отбора в списке, поиске и подобных, реквизит формы - список значений содержал только выводимые строки.
Например, если надо как-то обработать отмеченные документы, то перед обработкой надо актуализировать список отмеченных по выводимым строкам, чтобы в списке значений не было ссылок, скрытых отбором или поиском.
&НаСервере
Процедура АктуализироватьСписокОтмеченных()
Схема = Элементы.МойДС.ПолучитьИсполняемуюСхемуКомпоновкиДанных();
НастройкиСхемы = Элементы.МойДС.ПолучитьИсполняемыеНастройкиКомпоновкиДанных();
КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(Схема));
КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиСхемы);
КомпоновщикНастроек.Восстановить();
КомпоновщикНастроек.Настройки.Структура.Очистить();
ДетальныеЗаписи = КомпоновщикНастроек.Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
ДетальныеЗаписи.Имя = "ДетальныеЗаписи";
ДетальныеЗаписи.Использование = Истина;
ПолеОтчет = ДетальныеЗаписи.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ПолеОтчет.Поле = Новый ПолеКомпоновкиДанных("Ссылка");
ПолеОтчет.Использование = Истина;
ОбщегоНазначенияКлиентСервер.ИзменитьЭлементыОтбора(КомпоновщикНастроек.Настройки.Отбор,,"Метка",1,,Истина);
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(Схема, КомпоновщикНастроек.ПолучитьНастройки(), , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных);
ПроцессорВыводаРезультатаОтчета = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
РезультатСхемы = ПроцессорВыводаРезультатаОтчета.Вывести(ПроцессорКомпоновкиДанных);
МассивСсылок = РезультатСхемы.Выгрузить("Ссылка");
СписокОтмеченных.Очистить();
СписокОтмеченных.ЗагрузитьЗначения(МассивСсылок );
КонецПроцедуры
Показать
(8)
Если пользователь протыкал условно 100 документов, потом изменил отбор - указал другую организацию/контрагента, в списке будут уже другие документы, и прошлые 100 отмеченных, определенно не нужны. Далее если пользователь протыкал еще 10 и нажал обработать, то обработать надо эти 10, а не 110.
С поиском, имхо, также стоит поступать, потому что отделить поиск от отбора мы не можем.
Обрабатываем только те отмеченные строки, которые выводятся в списке.
То есть я потеряю своё кропотливое протыкивание галочек из-за шального быстрого поиска.
Если пользователь протыкал условно 100 документов, потом изменил отбор - указал другую организацию/контрагента, в списке будут уже другие документы, и прошлые 100 отмеченных, определенно не нужны. Далее если пользователь протыкал еще 10 и нажал обработать, то обработать надо эти 10, а не 110.
С поиском, имхо, также стоит поступать, потому что отделить поиск от отбора мы не можем.
Обрабатываем только те отмеченные строки, которые выводятся в списке.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот