Приветствую, Форумчане!
ЕРП 2.5

В динамический список журнала "Журнал продаж" добавил числовое поле "Метка" (поле картинки, картинка значений)

На событие списка "Выбор" повесил простой код:

```1c
    &НаКлиенте
    Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)

    СтандартнаяОбработка = Ложь;

    Если Поле.Имя = "Метка" Тогда
    Сообщить("ваповап");//(Элемент.ТекущиеДанные.Метка);

    Если Элемент.ТекущиеДанные.Метка = 1 Тогда
    Ответ = 0;
    Иначе
    Ответ = 1;
    КонецЕсли;

    ВыделенныеСтроки = Элементы.СписокДокументыПродажи.ВыделенныеСтроки; //
    ТекущиеДанные = Элементы.СписокДокументыПродажи.ТекущиеДанные;
    ТекущиеДанные.Метка = Ответ;
    //СписокВыборНаСервере(ВыделенныеСтроки, ТекущиеДанные, Ответ);
    //Элементы.СписокДокументыПродажи.Обновить();
    //Возврат;
    Иначе
    СтандартнаяОбработка = Истина;
    КонецЕсли;

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

Как ни странно код сработал и галочка проставляется. (см. картинку)

Но весь парадокс (для меня) заключается в том, что если я заремачу

```1c
    Сообщить("ваповап");
```

То ничего не изменяется. Складывается впечатление, что "Сообщить()" выполняет своего рода обновлением списка.

Никак не могу понять какую роль выполняет вывод этого сообщения, что происходит обновление списка с изменением поля "Метка".

Что сделано не так. Как сделать это обновление формы без этого "Сообщить()"?
---
Не правильно, имхо.
В динамический список добавляется поле:

```1c
    Выбор Когда Ссылка В (&СписокОтмеченных) Тогда 1 Иначе 0 Конец КАК Метка
```

Добавляется реквизит формы - список значений - СписокОтмеченных.
Для ячейки устанавливается свойство ГиперссылкаЯчейки - чтобы по одному клику работало.

При создании на сервере устанавливается параметр.

По событию выбор - добавлять/удалять ссылки из выделенных строк в список/из списка, соответственно, и устанавливать параметр ДС еще раз.

Также я добавляю процедуру актуализации списка - чтобы при изменении отбора в списке, поиске и подобных, реквизит формы - список значений содержал только выводимые строки.

Например, если надо как-то обработать отмеченные документы, то перед обработкой надо актуализировать список отмеченных по выводимым строкам, чтобы в списке значений не было ссылок, скрытых отбором или поиском.

```1c
    &НаСервере
    Процедура АктуализироватьСписокОтмеченных()

    Схема = Элементы.МойДС.ПолучитьИсполняемуюСхемуКомпоновкиДанных();
    НастройкиСхемы = Элементы.МойДС.ПолучитьИсполняемыеНастройкиКомпоновкиДанных();

    КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
    КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(Схема));
    КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиСхемы);
    КомпоновщикНастроек.Восстановить();

    КомпоновщикНастроек.Настройки.Структура.Очистить();

    ДетальныеЗаписи = КомпоновщикНастроек.Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
    ДетальныеЗаписи.Имя = "ДетальныеЗаписи";
    ДетальныеЗаписи.Использование = Истина;

    ПолеОтчет = ДетальныеЗаписи.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
    ПолеОтчет.Поле = Новый ПолеКомпоновкиДанных("Ссылка");
    ПолеОтчет.Использование = Истина;

    ОбщегоНазначенияКлиентСервер.ИзменитьЭлементыОтбора(КомпоновщикНастроек.Настройки.Отбор,,"Метка",1,,Истина);

    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(Схема, КомпоновщикНастроек.ПолучитьНастройки(), , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных);
    ПроцессорВыводаРезультатаОтчета = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;

    РезультатСхемы = ПроцессорВыводаРезультатаОтчета.Вывести(ПроцессорКомпоновкиДанных);

    МассивСсылок = РезультатСхемы.Выгрузить("Ссылка");
    СписокОтмеченных.Очистить();
    СписокОтмеченных.ЗагрузитьЗначения(МассивСсылок );
    КонецПроцедуры
```
---
```1c
    ЭтаФорма.ОбновитьОтображениеДанных();
```
---
Не правильно, имхо.
В динамический список добавляется поле:

```1c
    Выбор Когда Ссылка В (&СписокОтмеченных) Тогда 1 Иначе 0 Конец КАК Метка
```

Добавляется реквизит формы - список значений - СписокОтмеченных.
Для ячейки устанавливается свойство ГиперссылкаЯчейки - чтобы по одному клику работало.

При создании на сервере устанавливается параметр.

По событию выбор - добавлять/удалять ссылки из выделенных строк в список/из списка, соответственно, и устанавливать параметр ДС еще раз.

Также я добавляю процедуру актуализации списка - чтобы при изменении отбора в списке, поиске и подобных, реквизит формы - список значений содержал только выводимые строки.

Например, если надо как-то обработать отмеченные документы, то перед обработкой надо актуализировать список отмеченных по выводимым строкам, чтобы в списке значений не было ссылок, скрытых отбором или поиском.

```1c
    &НаСервере
    Процедура АктуализироватьСписокОтмеченных()

    Схема = Элементы.МойДС.ПолучитьИсполняемуюСхемуКомпоновкиДанных();
    НастройкиСхемы = Элементы.МойДС.ПолучитьИсполняемыеНастройкиКомпоновкиДанных();

    КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
    КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(Схема));
    КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиСхемы);
    КомпоновщикНастроек.Восстановить();

    КомпоновщикНастроек.Настройки.Структура.Очистить();

    ДетальныеЗаписи = КомпоновщикНастроек.Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
    ДетальныеЗаписи.Имя = "ДетальныеЗаписи";
    ДетальныеЗаписи.Использование = Истина;

    ПолеОтчет = ДетальныеЗаписи.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
    ПолеОтчет.Поле = Новый ПолеКомпоновкиДанных("Ссылка");
    ПолеОтчет.Использование = Истина;

    ОбщегоНазначенияКлиентСервер.ИзменитьЭлементыОтбора(КомпоновщикНастроек.Настройки.Отбор,,"Метка",1,,Истина);

    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(Схема, КомпоновщикНастроек.ПолучитьНастройки(), , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных);
    ПроцессорВыводаРезультатаОтчета = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;

    РезультатСхемы = ПроцессорВыводаРезультатаОтчета.Вывести(ПроцессорКомпоновкиДанных);

    МассивСсылок = РезультатСхемы.Выгрузить("Ссылка");
    СписокОтмеченных.Очистить();
    СписокОтмеченных.ЗагрузитьЗначения(МассивСсылок );
    КонецПроцедуры
```
---
Спасибо, вроде сработало. Но очень медленно. У меня сейчас всего 300 записей, а что будет когда 30000 записей даже представить боюсь...
---
Что именно медленно? Покажите код.
У меня работает почти мгновенно на достаточно большом списке документов.
---
чтобы в списке значений не было ссылок, скрытых отбором или поиском. Сомнительная функциональность, если она автоматическая. То есть я потеряю своё кропотливое протыкивание галочек из-за шального быстрого поиска.
---
То есть я потеряю своё кропотливое протыкивание галочек из-за шального быстрого поиска.
Если пользователь протыкал условно 100 документов, потом изменил отбор - указал другую организацию/контрагента, в списке будут уже другие документы, и прошлые 100 отмеченных, определенно не нужны. Далее если пользователь протыкал еще 10 и нажал обработать, то обработать надо эти 10, а не 110.
С поиском, имхо, также стоит поступать, потому что отделить поиск от отбора мы не можем.
Обрабатываем только те отмеченные строки, которые выводятся в списке.
---
К сожалению не помогло. Но обратил внимание, что если прокрутить экран, то обновление происходит.
Может это связано с особенностями ДС, который работает с "подкачкой" данных при прокрутке?
---
```1c
    Элементы.Список.Обновить();
```

возможно что-то из этих двух вариантов поможет

```1c
    ОповеститьОбИзменении(Ссылка)
```