1С 8.3 Флажок в динамическом списке
Данные > Примеры кода 1С > 1С 8.3 Динамический список
Перейти в раздел примеры кода 1С 8.3:
Реализован режим множественного и единичного выбора флажков динамического списка. Изменение значения пометки строки происходит по двойному клику мышки (событие "Выбор"). Также, можно помечать только выделенные строки (кнопками: [v] "Установить пометки" или [ ] "Снять пометки"). Метод работает начиная с версии 8.3.10.2168. Автор: mr_sаv (https://infostart.ru/public/1584125/)
Код формы подбора (для реализации флажка в ДС) в 1С 8.3:
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
Если Параметры.Свойство("РежимЕдиничногоВыбора") Тогда
РежимЕдиничногоВыбора = Параметры.РежимЕдиничногоВыбора;
КонецЕсли;
Если Параметры.Свойство("ИсключаемыеДокументы") Тогда
ИсключаемыеДокументы.ЗагрузитьЗначения(Параметры.ИсключаемыеДокументы);
КонецЕсли;
Список.Параметры.УстановитьЗначениеПараметра("ИсключаемыеДокументы", ИсключаемыеДокументы);
Список.Параметры.УстановитьЗначениеПараметра("ОбщаяПометка", Истина);
Список.Параметры.УстановитьЗначениеПараметра("ВыбранныеДокументы", Новый СписокЗначений);
Список.Параметры.УстановитьЗначениеПараметра("НевыбранныеДокументы", Новый СписокЗначений);
АдресХранилищаВыбранныхДокументов = ПоместитьВоВременноеХранилище(Новый СписокЗначений, УникальныйИдентификатор);
Список.КомпоновщикНастроек.Настройки.ДополнительныеСвойства.Вставить("АдресХранилищаВыбранныхДокументов", АдресХранилищаВыбранныхДокументов);
Список.КомпоновщикНастроек.Настройки.ДополнительныеСвойства.Вставить("РежимЕдиничногоВыбора", РежимЕдиничногоВыбора);
Если Параметры.Свойство("ТекущийДокумент") Тогда
Элементы.Список.ТекущаяСтрока = Параметры.ТекущийДокумент;
КонецЕсли;
Если РежимЕдиничногоВыбора Тогда
Элементы.Список.МножественныйВыбор = Ложь;
Элементы.ГруппаПометки.Видимость = Ложь;
Элементы.СписокПометка.Видимость = Ложь;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовФормы
&НаСервереБезКонтекста
Процедура СписокПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки)
Если Настройки.ДополнительныеСвойства.РежимЕдиничногоВыбора Тогда
Возврат;
КонецЕсли;
ВыбранныеДокументы = ПолучитьИзВременногоХранилища(Настройки.ДополнительныеСвойства.АдресХранилищаВыбранныхДокументов);
Для Каждого СтрокаСписка Из Строки Цикл
Если СтрокаСписка.Значение.Данные.Пометка И ВыбранныеДокументы.НайтиПоЗначению(СтрокаСписка.Ключ) = Неопределено Тогда
ВыбранныеДокументы.Добавить(СтрокаСписка.Ключ);
КонецЕсли;
КонецЦикла;
ПоместитьВоВременноеХранилище(ВыбранныеДокументы, Настройки.ДополнительныеСвойства.АдресХранилищаВыбранныхДокументов);
КонецПроцедуры
&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
Если РежимЕдиничногоВыбора Тогда
Выбрать(Неопределено);
Возврат;
КонецЕсли;
ТекущиеДанные = Элементы.Список.ТекущиеДанные;
ВыбранныеДокументы = ПолучитьИзВременногоХранилища(АдресХранилищаВыбранныхДокументов);
Если ТекущиеДанные.Пометка Тогда
СтрокаСписка = ВыбранныеДокументы.НайтиПоЗначению(Элементы.Список.ТекущаяСтрока);
Если СтрокаСписка <> Неопределено Тогда
ВыбранныеДокументы.Удалить(СтрокаСписка);
КонецЕсли;
НевыбранныеДокументы.Добавить(Элементы.Список.ТекущаяСтрока);
Иначе
СтрокаСписка = НевыбранныеДокументы.НайтиПоЗначению(Элементы.Список.ТекущаяСтрока);
Если СтрокаСписка <> Неопределено Тогда
НевыбранныеДокументы.Удалить(СтрокаСписка);
КонецЕсли;
ВыбранныеДокументы.Добавить(Элементы.Список.ТекущаяСтрока);
КонецЕсли;
ПоместитьВоВременноеХранилище(ВыбранныеДокументы, АдресХранилищаВыбранныхДокументов);
Список.Параметры.УстановитьЗначениеПараметра("ВыбранныеДокументы", ВыбранныеДокументы);
Список.Параметры.УстановитьЗначениеПараметра("НевыбранныеДокументы", НевыбранныеДокументы);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура УстановитьПометки(Команда)
ИзменитьПометки(Истина);
КонецПроцедуры
&НаКлиенте
Процедура СнятьПометки(Команда)
ИзменитьПометки(Ложь);
КонецПроцедуры
&НаКлиенте
Процедура ИзменитьПометки(Значение)
Если Элементы.Список.ВыделенныеСтроки.Количество() > 1 Тогда
ВыбранныеДокументы = ПолучитьИзВременногоХранилища(АдресХранилищаВыбранныхДокументов);
Для Каждого СтрокаСписка Из Элементы.Список.ВыделенныеСтроки Цикл
СтрокаВыбранных = ВыбранныеДокументы.НайтиПоЗначению(СтрокаСписка);
Если Значение Тогда
Если СтрокаВыбранных = Неопределено Тогда
ВыбранныеДокументы.Добавить(СтрокаСписка);
КонецЕсли;
Иначе
Если СтрокаВыбранных <> Неопределено Тогда
ВыбранныеДокументы.Удалить(СтрокаВыбранных);
КонецЕсли;
КонецЕсли;
КонецЦикла;
ПоместитьВоВременноеХранилище(ВыбранныеДокументы, АдресХранилищаВыбранныхДокументов);
Список.Параметры.УстановитьЗначениеПараметра("ОбщаяПометка", Ложь);
Список.Параметры.УстановитьЗначениеПараметра("ВыбранныеДокументы", ВыбранныеДокументы);
Иначе
ПоместитьВоВременноеХранилище(Новый СписокЗначений, АдресХранилищаВыбранныхДокументов);
Список.Параметры.УстановитьЗначениеПараметра("ОбщаяПометка", Значение);
Список.Параметры.УстановитьЗначениеПараметра("ВыбранныеДокументы", Новый СписокЗначений);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Выбрать(Команда)
Если РежимЕдиничногоВыбора Тогда
ВыбранныйДокумент = Элементы.Список.ТекущаяСтрока;
Если ВыбранныйДокумент = Неопределено Тогда
Возврат;
КонецЕсли;
ВыбранныеДокументы = Новый СписокЗначений;
ВыбранныеДокументы.Добавить(ВыбранныйДокумент);
Список.Параметры.УстановитьЗначениеПараметра("ОбщаяПометка", Ложь);
Список.Параметры.УстановитьЗначениеПараметра("ВыбранныеДокументы", ВыбранныеДокументы);
КонецЕсли;
ПараметрыВыбора = Новый Структура;
ПолучитьДанныеИЗаполнитьПараметры(ПараметрыВыбора);
ОповеститьОВыборе(ПараметрыВыбора);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Функция ПолучитьСписокТаблицойЗначений()
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список, "Пометка", Истина);
СКД = Элементы.Список.ПолучитьИсполняемуюСхемуКомпоновкиДанных();
Настройки = Элементы.Список.ПолучитьИсполняемыеНастройкиКомпоновкиДанных();
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных();
МакетКомпоновки = КомпоновщикМакета.Выполнить(СКД, Настройки , , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
Возврат ПроцессорВывода.Вывести(ПроцессорКомпоновки);
КонецФункции
&НаСервере
Процедура ПолучитьДанныеИЗаполнитьПараметры(СтруктураПараметров)
Результат = ПолучитьСписокТаблицойЗначений();
СтруктураПараметров.Вставить("ВыбранныеДокументы", ОбщегоНазначения.ТаблицаЗначенийВМассив(Результат));
КонецПроцедуры
#КонецОбласти
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
Если Параметры.Свойство("РежимЕдиничногоВыбора") Тогда
РежимЕдиничногоВыбора = Параметры.РежимЕдиничногоВыбора;
КонецЕсли;
Если Параметры.Свойство("ИсключаемыеДокументы") Тогда
ИсключаемыеДокументы.ЗагрузитьЗначения(Параметры.ИсключаемыеДокументы);
КонецЕсли;
Список.Параметры.УстановитьЗначениеПараметра("ИсключаемыеДокументы", ИсключаемыеДокументы);
Список.Параметры.УстановитьЗначениеПараметра("ОбщаяПометка", Истина);
Список.Параметры.УстановитьЗначениеПараметра("ВыбранныеДокументы", Новый СписокЗначений);
Список.Параметры.УстановитьЗначениеПараметра("НевыбранныеДокументы", Новый СписокЗначений);
АдресХранилищаВыбранныхДокументов = ПоместитьВоВременноеХранилище(Новый СписокЗначений, УникальныйИдентификатор);
Список.КомпоновщикНастроек.Настройки.ДополнительныеСвойства.Вставить("АдресХранилищаВыбранныхДокументов", АдресХранилищаВыбранныхДокументов);
Список.КомпоновщикНастроек.Настройки.ДополнительныеСвойства.Вставить("РежимЕдиничногоВыбора", РежимЕдиничногоВыбора);
Если Параметры.Свойство("ТекущийДокумент") Тогда
Элементы.Список.ТекущаяСтрока = Параметры.ТекущийДокумент;
КонецЕсли;
Если РежимЕдиничногоВыбора Тогда
Элементы.Список.МножественныйВыбор = Ложь;
Элементы.ГруппаПометки.Видимость = Ложь;
Элементы.СписокПометка.Видимость = Ложь;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовФормы
&НаСервереБезКонтекста
Процедура СписокПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки)
Если Настройки.ДополнительныеСвойства.РежимЕдиничногоВыбора Тогда
Возврат;
КонецЕсли;
ВыбранныеДокументы = ПолучитьИзВременногоХранилища(Настройки.ДополнительныеСвойства.АдресХранилищаВыбранныхДокументов);
Для Каждого СтрокаСписка Из Строки Цикл
Если СтрокаСписка.Значение.Данные.Пометка И ВыбранныеДокументы.НайтиПоЗначению(СтрокаСписка.Ключ) = Неопределено Тогда
ВыбранныеДокументы.Добавить(СтрокаСписка.Ключ);
КонецЕсли;
КонецЦикла;
ПоместитьВоВременноеХранилище(ВыбранныеДокументы, Настройки.ДополнительныеСвойства.АдресХранилищаВыбранныхДокументов);
КонецПроцедуры
&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
Если РежимЕдиничногоВыбора Тогда
Выбрать(Неопределено);
Возврат;
КонецЕсли;
ТекущиеДанные = Элементы.Список.ТекущиеДанные;
ВыбранныеДокументы = ПолучитьИзВременногоХранилища(АдресХранилищаВыбранныхДокументов);
Если ТекущиеДанные.Пометка Тогда
СтрокаСписка = ВыбранныеДокументы.НайтиПоЗначению(Элементы.Список.ТекущаяСтрока);
Если СтрокаСписка <> Неопределено Тогда
ВыбранныеДокументы.Удалить(СтрокаСписка);
КонецЕсли;
НевыбранныеДокументы.Добавить(Элементы.Список.ТекущаяСтрока);
Иначе
СтрокаСписка = НевыбранныеДокументы.НайтиПоЗначению(Элементы.Список.ТекущаяСтрока);
Если СтрокаСписка <> Неопределено Тогда
НевыбранныеДокументы.Удалить(СтрокаСписка);
КонецЕсли;
ВыбранныеДокументы.Добавить(Элементы.Список.ТекущаяСтрока);
КонецЕсли;
ПоместитьВоВременноеХранилище(ВыбранныеДокументы, АдресХранилищаВыбранныхДокументов);
Список.Параметры.УстановитьЗначениеПараметра("ВыбранныеДокументы", ВыбранныеДокументы);
Список.Параметры.УстановитьЗначениеПараметра("НевыбранныеДокументы", НевыбранныеДокументы);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура УстановитьПометки(Команда)
ИзменитьПометки(Истина);
КонецПроцедуры
&НаКлиенте
Процедура СнятьПометки(Команда)
ИзменитьПометки(Ложь);
КонецПроцедуры
&НаКлиенте
Процедура ИзменитьПометки(Значение)
Если Элементы.Список.ВыделенныеСтроки.Количество() > 1 Тогда
ВыбранныеДокументы = ПолучитьИзВременногоХранилища(АдресХранилищаВыбранныхДокументов);
Для Каждого СтрокаСписка Из Элементы.Список.ВыделенныеСтроки Цикл
СтрокаВыбранных = ВыбранныеДокументы.НайтиПоЗначению(СтрокаСписка);
Если Значение Тогда
Если СтрокаВыбранных = Неопределено Тогда
ВыбранныеДокументы.Добавить(СтрокаСписка);
КонецЕсли;
Иначе
Если СтрокаВыбранных <> Неопределено Тогда
ВыбранныеДокументы.Удалить(СтрокаВыбранных);
КонецЕсли;
КонецЕсли;
КонецЦикла;
ПоместитьВоВременноеХранилище(ВыбранныеДокументы, АдресХранилищаВыбранныхДокументов);
Список.Параметры.УстановитьЗначениеПараметра("ОбщаяПометка", Ложь);
Список.Параметры.УстановитьЗначениеПараметра("ВыбранныеДокументы", ВыбранныеДокументы);
Иначе
ПоместитьВоВременноеХранилище(Новый СписокЗначений, АдресХранилищаВыбранныхДокументов);
Список.Параметры.УстановитьЗначениеПараметра("ОбщаяПометка", Значение);
Список.Параметры.УстановитьЗначениеПараметра("ВыбранныеДокументы", Новый СписокЗначений);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Выбрать(Команда)
Если РежимЕдиничногоВыбора Тогда
ВыбранныйДокумент = Элементы.Список.ТекущаяСтрока;
Если ВыбранныйДокумент = Неопределено Тогда
Возврат;
КонецЕсли;
ВыбранныеДокументы = Новый СписокЗначений;
ВыбранныеДокументы.Добавить(ВыбранныйДокумент);
Список.Параметры.УстановитьЗначениеПараметра("ОбщаяПометка", Ложь);
Список.Параметры.УстановитьЗначениеПараметра("ВыбранныеДокументы", ВыбранныеДокументы);
КонецЕсли;
ПараметрыВыбора = Новый Структура;
ПолучитьДанныеИЗаполнитьПараметры(ПараметрыВыбора);
ОповеститьОВыборе(ПараметрыВыбора);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Функция ПолучитьСписокТаблицойЗначений()
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список, "Пометка", Истина);
СКД = Элементы.Список.ПолучитьИсполняемуюСхемуКомпоновкиДанных();
Настройки = Элементы.Список.ПолучитьИсполняемыеНастройкиКомпоновкиДанных();
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных();
МакетКомпоновки = КомпоновщикМакета.Выполнить(СКД, Настройки , , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
Возврат ПроцессорВывода.Вывести(ПроцессорКомпоновки);
КонецФункции
&НаСервере
Процедура ПолучитьДанныеИЗаполнитьПараметры(СтруктураПараметров)
Результат = ПолучитьСписокТаблицойЗначений();
СтруктураПараметров.Вставить("ВыбранныеДокументы", ОбщегоНазначения.ТаблицаЗначенийВМассив(Результат));
КонецПроцедуры
#КонецОбласти
Код интеграции для работы с формой подбора (для реализации флажка в ДС) в 1С 8.3:
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура Подобрать(Команда)
Если Объект.ДокументыЗаказов.Количество() Тогда
КнопкиДиалога = Новый СписокЗначений;
КнопкиДиалога.Добавить(КодВозвратаДиалога.Да, "Очистить и Заполнить");
КнопкиДиалога.Добавить(КодВозвратаДиалога.Нет, "Добавить");
КнопкиДиалога.Добавить(КодВозвратаДиалога.Отмена, "Отмена");
ОписаниеОповещения = Новый ОписаниеОповещения("ПодобратьПослеВопроса", ЭтотОбъект);
ПоказатьВопрос(ОписаниеОповещения, "В таблице имеются строки, как поступить?", КнопкиДиалога,,, "Заполнение по заказам");
Иначе
ПодобратьПослеВопроса(КодВозвратаДиалога.Нет, Неопределено);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовФормы
&НаКлиенте
Процедура ПодобратьПослеВопроса(Результат, ДополнительныеПараметеры) Экспорт
Если Результат = КодВозвратаДиалога.Да Тогда
Объект.ДокументыЗаказов.Очистить();
КонецЕсли;
Если Результат <> КодВозвратаДиалога.Отмена Тогда
ОткрытьФормуПодбора();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
Если ВыбранноеЗначение = Неопределено Тогда
Возврат;
КонецЕсли;
Если ИсточникВыбора.ИмяФормы = "ВнешняяОбработка.ДинамическийСписокСПометками.Форма.ФормаПодбора" Тогда
Для Каждого ВыбранныйДокумент Из ВыбранноеЗначение.ВыбранныеДокументы Цикл
НоваяСтрока = Объект.ДокументыЗаказов.Добавить();
НоваяСтрока.Документ = ВыбранныйДокумент.Документ;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДокументНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекущаяСтрока = Элементы.ДокументыЗаказов.ТекущиеДанные;
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("РежимЕдиничногоВыбора", Истина);
ПараметрыОткрытия.Вставить("ТекущийДокумент", ТекущаяСтрока.Документ);
ОткрытьФормуПодбора(ПараметрыОткрытия);
КонецПроцедуры
&НаКлиенте
Процедура ДокументОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если ВыбранноеЗначение = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущаяСтрока = Элементы.ДокументыЗаказов.ТекущиеДанные;
ТекущаяСтрока.Документ = ВыбранноеЗначение.ВыбранныеДокументы[0].Документ;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаКлиенте
Процедура ОткрытьФормуПодбора(ПараметрыОткрытия = Неопределено)
Если ПараметрыОткрытия = Неопределено Тогда
ПараметрыОткрытия = Новый Структура;
КонецЕсли;
//++ Необязательное: для случаев когда нужно исключить уже подобранные
ИсключаемыеДокументы = Новый Массив;
Для Каждого СтрокаТаблицы Из Объект.ДокументыЗаказов Цикл
Если ЗначениеЗаполнено(СтрокаТаблицы.Документ) Тогда
ИсключаемыеДокументы.Добавить(СтрокаТаблицы.Документ);
КонецЕсли;
КонецЦикла;
ПараметрыОткрытия.Вставить("ИсключаемыеДокументы", ИсключаемыеДокументы);
//--
ОткрытьФорму("ВнешняяОбработка.ДинамическийСписокСПометками.Форма.ФормаПодбора",
ПараметрыОткрытия, ЭтаФорма, УникальныйИдентификатор,,,, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
#КонецОбласти
&НаКлиенте
Процедура Подобрать(Команда)
Если Объект.ДокументыЗаказов.Количество() Тогда
КнопкиДиалога = Новый СписокЗначений;
КнопкиДиалога.Добавить(КодВозвратаДиалога.Да, "Очистить и Заполнить");
КнопкиДиалога.Добавить(КодВозвратаДиалога.Нет, "Добавить");
КнопкиДиалога.Добавить(КодВозвратаДиалога.Отмена, "Отмена");
ОписаниеОповещения = Новый ОписаниеОповещения("ПодобратьПослеВопроса", ЭтотОбъект);
ПоказатьВопрос(ОписаниеОповещения, "В таблице имеются строки, как поступить?", КнопкиДиалога,,, "Заполнение по заказам");
Иначе
ПодобратьПослеВопроса(КодВозвратаДиалога.Нет, Неопределено);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовФормы
&НаКлиенте
Процедура ПодобратьПослеВопроса(Результат, ДополнительныеПараметеры) Экспорт
Если Результат = КодВозвратаДиалога.Да Тогда
Объект.ДокументыЗаказов.Очистить();
КонецЕсли;
Если Результат <> КодВозвратаДиалога.Отмена Тогда
ОткрытьФормуПодбора();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
Если ВыбранноеЗначение = Неопределено Тогда
Возврат;
КонецЕсли;
Если ИсточникВыбора.ИмяФормы = "ВнешняяОбработка.ДинамическийСписокСПометками.Форма.ФормаПодбора" Тогда
Для Каждого ВыбранныйДокумент Из ВыбранноеЗначение.ВыбранныеДокументы Цикл
НоваяСтрока = Объект.ДокументыЗаказов.Добавить();
НоваяСтрока.Документ = ВыбранныйДокумент.Документ;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДокументНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекущаяСтрока = Элементы.ДокументыЗаказов.ТекущиеДанные;
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("РежимЕдиничногоВыбора", Истина);
ПараметрыОткрытия.Вставить("ТекущийДокумент", ТекущаяСтрока.Документ);
ОткрытьФормуПодбора(ПараметрыОткрытия);
КонецПроцедуры
&НаКлиенте
Процедура ДокументОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если ВыбранноеЗначение = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущаяСтрока = Элементы.ДокументыЗаказов.ТекущиеДанные;
ТекущаяСтрока.Документ = ВыбранноеЗначение.ВыбранныеДокументы[0].Документ;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаКлиенте
Процедура ОткрытьФормуПодбора(ПараметрыОткрытия = Неопределено)
Если ПараметрыОткрытия = Неопределено Тогда
ПараметрыОткрытия = Новый Структура;
КонецЕсли;
//++ Необязательное: для случаев когда нужно исключить уже подобранные
ИсключаемыеДокументы = Новый Массив;
Для Каждого СтрокаТаблицы Из Объект.ДокументыЗаказов Цикл
Если ЗначениеЗаполнено(СтрокаТаблицы.Документ) Тогда
ИсключаемыеДокументы.Добавить(СтрокаТаблицы.Документ);
КонецЕсли;
КонецЦикла;
ПараметрыОткрытия.Вставить("ИсключаемыеДокументы", ИсключаемыеДокументы);
//--
ОткрытьФорму("ВнешняяОбработка.ДинамическийСписокСПометками.Форма.ФормаПодбора",
ПараметрыОткрытия, ЭтаФорма, УникальныйИдентификатор,,,, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
#КонецОбласти
0
комментарии
____________________
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник