Приведу пример, как это делается в форме списка документов "Заказы клиентов".
Для начала в реквизитах формы находим "Список", который имеет тип "ДинамическийСписок". В его свойствах рядом с "Настройка списка" нажимаем "Открыть"
и добавляем в запрос перед "ИЗ" строку:
",
Выбор Когда ДокументЗаказКлиента.Ссылка В (&МассивВыбранныхСсылок) ТОГДА ИСТИНА Иначе ЛОЖЬ КОНЕЦ КАК Отмечено".
После этого у вас в списке появится реквизит "Отмечено", который можете отразить на форме.
Затем правим модуль формы.
Добавляем переменные (у меня на основании выделенных будут создаваться реализации, отсюда переменная СоздаетсяРеализация, для себя сделаете что-то другое):
&НаКлиенте
Перем МассивВыбранныхСсылок;
&НаКлиенте
Перем ПерваяАктивизация;
&НаКлиенте
Перем СоздаетсяРеализация;
В процедуру ПриОткрытии() добавляем инициацию:
ПерваяАктивизация = Истина;
СоздаетсяРеализация = Ложь;
МассивВыбранныхСсылок=Новый Массив;
Список.Параметры.УстановитьЗначениеПараметра("МассивВыбранныхСсылок",МассивВыбранныхСсылок);
Затем для таблицы формы "Список" в процедуру СписокПриАктивизацииСтроки добавляем:
&НаКлиенте
Процедура СписокПриАктивизацииСтроки(Элемент)
Если НЕ СоздаетсяРеализация Тогда
ДокСсылка = Элемент.ТекущиеДанные.Ссылка;
ИндексСтрокиМассива=МассивВыбранныхСсылок.Найти(ДокСсылка);
Если ИндексСтрокиМассива=Неопределено Тогда
Если НЕ ПерваяАктивизация Тогда
МассивВыбранныхСсылок.Добавить(ДокСсылка);
КонецЕсли;
Иначе
МассивВыбранныхСсылок.Удалить(ИндексСтрокиМассива);
КонецЕсли;
ПерваяАктивизация = Ложь;
Список.Параметры.УстановитьЗначениеПараметра("МассивВыбранныхСсылок",МассивВыбранныхСсылок);
КонецЕсли
КонецПроцедуры
Собственно все, но я знаю вам еще захочется сделать кнопки "Отметить все" и "Снять все отметки" :-). Ок, код ниже:
&НаКлиенте
Процедура СнятьВсеОтметки(Команда)
МассивВыбранныхСсылок.Очистить();
Список.Параметры.УстановитьЗначениеПараметра("МассивВыбранныхСсылок",МассивВыбранныхСсылок);
КонецПроцедуры
&НаКлиенте
Процедура ОтметитьВсе(Команда)
МассивВыбранныхСсылок = ОтметитьВсеНаСервере(МассивВыбранныхСсылок);
Список.Параметры.УстановитьЗначениеПараметра("МассивВыбранныхСсылок",МассивВыбранныхСсылок);
КонецПроцедуры
&НаСервере
Функция ОтметитьВсеНаСервере(МассивВыбранныхСсылок)
//продублируем получение данных в динамический список
ТекстЗапроса = ПолучитьТекстЗапросаСписка();
СхемаКомпоновки = Новый СхемаКомпоновкиДанных();
Источник = СхемаКомпоновки.ИсточникиДанных.Добавить();
Источник.Имя = "Исток";
Источник.СтрокаСоединения="";
Источник.ТипИсточникаДанных = "local";
НаборДанных = СхемаКомпоновки.НаборыДанных.Добавить(Тип("НаборДанныхЗапросСхемыКомпоновкиДанных"));
НаборДанных.Запрос = ТекстЗапроса;
НаборДанных.Имя = "Запрос";
НаборДанных.АвтоЗаполнениеДоступныхПолей = Истина;
НаборДанных.ИсточникДанных = "Исток";
НастройкиКомпоновки = МобильныеПриложения.СкомпоноватьНастройки(СхемаКомпоновки);
ОбщегоНазначенияУТКлиентСервер.СкопироватьЭлементы(НастройкиКомпоновки.Отбор, Список.Отбор);
ОбщегоНазначенияУТКлиентСервер.СкопироватьЭлементы(НастройкиКомпоновки.Порядок, Список.Порядок);
ОбщегоНазначенияУТКлиентСервер.ЗаполнитьЭлементы(НастройкиКомпоновки.ПараметрыДанных, Список.Параметры);
МакетКомпоновки = ОбщегоНазначенияУТ.ПолучитьМакетКомпоновки(СхемаКомпоновки, НастройкиКомпоновки);
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки);
ТЗ = Новый ТаблицаЗначений;
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ПроцессорВывода.УстановитьОбъект(ТЗ);
ПроцессорВывода.НачатьВывод();
Пока Истина Цикл
ЭлементРезультатаКомпоновкиДанных = ПроцессорКомпоновкиДанных.Следующий();
Если ЭлементРезультатаКомпоновкиДанных = Неопределено Тогда
Прервать;
КонецЕсли;
ПроцессорВывода.ВывестиЭлемент(ЭлементРезультатаКомпоновкиДанных);
КонецЦикла;
ПроцессорВывода.ЗакончитьВывод();
//теперь по полученной копии списка пометим все
Для каждого стр из ТЗ Цикл
ДокСсылка = стр.Ссылка;
ИндексСтрокиМассива=МассивВыбранныхСсылок.Найти(ДокСсылка);
Если ИндексСтрокиМассива=Неопределено Тогда
МассивВыбранныхСсылок.Добавить(ДокСсылка);
КонецЕсли;
КонецЦикла;
Возврат МассивВыбранныхСсылок;
КонецФункции
&НаСервере
Функция ПолучитьТекстЗапросаСписка()
Возврат Список.ТекстЗапроса;
КонецФункции
Ну и для примера создаем реализацию:
&НаКлиенте
Процедура СоздатьРеализацииДляОтмеченных(Команда)
СоздаетсяРеализация = Истина;
Для каждого стр из МассивВыбранныхСсылок цикл
//чо то делаем с ссылками
КонецЦикла;
СоздаетсяРеализация = Ложь;
КонецПроцедуры
Спасибо всем за внимание!