Работа со списком значений в обработке


// 1c7

// На форме - список значений и пара кнопой (добавить/удалить)
// Обработка вызывается как
// ОткрытьФормуМодально("Обработка.ВыборСпискаАгентов",Контекст)

Перем Конт;

Процедура ДобавитьПолучателя()
    К = СоздатьОбъект("Справочник.Контрагенты");
    Если К.Выбрать("Выберите Контрагента", "ФормаСписка")=1 Тогда
        Если СписокПолучателей.НайтиЗначение(К.ТекущийЭлемент())=0 Тогда
            СписокПолучателей.ДобавитьЗначение(К.ТекущийЭлемент());
            СписокПолучателей.ТекущаяСтрока(СписокПолучателей.РазмерСписка());
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры

Процедура УдалитьПолучателя()
    Если СписокПолучателей.РазмерСписка()>0 Тогда
        СписокПолучателей.УдалитьЗначение(СписокПолучателей.ТекущаяСтрока());
    КонецЕсли;
КонецПроцедуры

Процедура Установить()
    сз = СоздатьОбъект("СписокЗначений");
    стр = "";
    Для й=1 По СписокПолучателей.РазмерСписка() Цикл
        сз.ДобавитьЗначение(СокрЛП(СписокПолучателей.ПолучитьЗначение(й).Код));
        стр = стр +
           ?(стр="",
           СокрЛП(СписокПолучателей.ПолучитьЗначение(й).Наименование),
           РазделительСтрок+СокрЛП(СписокПолучателей.ПолучитьЗначение(й).Наименование))
    КонецЦикла;
    Конт.СписКонтрагентов = сз.ВСтрокуСРазделителями();
    Форма.Закрыть();
КонецПроцедуры

Процедура ОчиститьПоля()
    СписокПолучателей.УдалитьВсе();
КонецПроцедуры

Процедура ПриОткрытии()
    Конт = ПолучитьПустоеЗначение();

    Если ПустоеЗначение(Форма.Параметр)=0 Тогда
        Конт = Форма.Параметр;
        сз = СоздатьОбъект("СписокЗначений");
        К = СоздатьОбъект("Справочник.Контрагенты");
        сз.ИзСтрокиСРазделителями(Конт.текущийДокумент().СписКонтагентов);
        Для й=1 По сз.РазмерСписка() Цикл
            ч = Число(сз.ПолучитьЗначение(й));
            Если (ч>0) и (К.НайтиПоКоду(ч)=1) Тогда
                СписокПолучателей.ДобавитьЗначение(К.ТекущийЭлемент());
            КонецЕсли;
        КонецЦикла;
    Иначе
        Сообщить("Обработку можно вызывать только из контекста!");
        СтатусВозврата(0);
        Возврат;
    КонецЕсли;

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