Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Создать общую процедуру из процедуры на форме
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование обычных форм 1С 8.2 и не интерфейсной логики
Constantus
Приветствую, форумчане!
"Управление торговлей 10.3", (Моби-С 5.5). "ABBYY Ukraine", 2003-2014 (2.3.20.1)

Имеется часть кода в форме приОткрытии:

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ПользователиСклады.Склады,
    |    ПользователиСклады.Склады.Ссылка Как сСклад
    |ИЗ
    |    Справочник.Пользователи.Склады КАК ПользователиСклады
    |ГДЕ
    |    ПользователиСклады.Ссылка = &сПользователь";
    
    Запрос.УстановитьПараметр("сПользователь", ПараметрыСеанса.ТекущийПользователь);
    Результат = Запрос.Выполнить().Выгрузить();
    МассивДокументов = Результат.ВыгрузитьКолонку("сСклад");
    СписокДокументов= Новый СписокЗначений;
        сп = Новый СписокЗначений();
        сп.Добавить("Все доступные...");
        
    Для Каждого Стр из МассивДокументов Цикл
        СписокДокументов.Добавить(Стр);
        сп.Добавить(Стр);
    КонецЦикла;    
    
    ЭтаФорма.Отбор.Склад.Использование=Истина;
    ЭлементыФормы.Список.Значение.Отбор.Склад.ВидСравнения = ВидСравнения.ВСписке;
    ЭлементыФормы.Список.НастройкаОтбора.Склад.Доступность = Ложь;
    ЭтаФорма.Отбор.Склад.Значение = СписокДокументов;

    ЭлементыФормы.ПолеВыбора1.СписокВыбора = сп;
    ЭлементыФормы.ПолеВыбора1.Значение = сп.Получить(0).Значение;


Т.е. этот код используется на многих формах, то решил перенести этот кусок кода как процедуру в Общие Модули.
Никак не могу сообразить как трансформировать этот код в процедуре в Общем модуле, чтобы компактно к ней обращаться из модуля формы?
Направьте мысль...
Flexy
Процедура УстановитьДоступностьСкладов(Форма, ИмяСпискаФормы, ПолеВыбораФормы, Пользователь) Экспорт
Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ПользователиСклады.Склады,
    |    ПользователиСклады.Склады.Ссылка Как сСклад
    |ИЗ
    |    Справочник.Пользователи.Склады КАК ПользователиСклады
    |ГДЕ
    |    ПользователиСклады.Ссылка = &сПользователь";
    
    Запрос.УстановитьПараметр("сПользователь", Пользователь);
    Результат = Запрос.Выполнить().Выгрузить();
    МассивДокументов = Результат.ВыгрузитьКолонку("сСклад");
    СписокДокументов= Новый СписокЗначений;
        сп = Новый СписокЗначений();
        сп.Добавить("Все доступные...");
        
    Для Каждого Стр из МассивДокументов Цикл
        СписокДокументов.Добавить(Стр);
        сп.Добавить(Стр);
    КонецЦикла;    
    
    Форма.Отбор.Склад.Использование=Истина;
    Форма.ЭлементыФормы[ИмяСпискаФормы].Значение.Отбор.Склад.ВидСравнения = ВидСравнения.ВСписке;
    Форма.ЭлементыФормы[ИмяСпискаФормы].НастройкаОтбора.Склад.Доступность = Ложь;
    Форма.Отбор.Склад.Значение = СписокДокументов;

    Форма.ЭлементыФормы[ПолеВыбораФормы].СписокВыбора = сп;
    Форма.ЭлементыФормы[ПолеВыбораФормы].Значение = сп.Получить(0).Значение;
КонецПроцедуры
Constantus
Flexy @ Сегодня, 13:49 необходимо зарегистрироваться для просмотра ссылки ,


Мой.УстановитьДоступностьСкладов(ЭтаФорма,ЭлементыФормы.Список,ЭлементыФормы.ПолеВыбора1,ПараметрыСеанса.ТекущийПользователь);


Ругается на ЭлементыФормы.Список и ,ЭлементыФормы.ПолеВыбора1

{ОбщийМодуль.Мой.Модуль(338)}: Получение элемента по индексу для значения не определено
    Форма.ЭлементыФормы[ИмяСпискаФормы].Значение.Отбор.Склад.ВидСравнения = ВидСравнения.ВСписке;


Как правильно передать значения?
Flexy
Цитата(Constantus @ 03.07.17, 11:56) необходимо зарегистрироваться для просмотра ссылки
Как правильно передать значения?

Передавайте туда имена элементов формы строкой.
Мой.УстановитьДоступностьСкладов(ЭтаФорма,"ДокументСписок", "ПолеВыбора1", ПараметрыСеанса.ТекущийПользователь);
Constantus
Flexy @ Сегодня, 14:59 необходимо зарегистрироваться для просмотра ссылки ,


Как сказать "Спасибо" дважды? :-)
cos12
Цитата(Constantus @ 03.07.17, 13:09) необходимо зарегистрироваться для просмотра ссылки
Как сказать "Спасибо" дважды? :-)

под каждым сообщением)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.