Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Как оптимизировать код в процедуре,нужно по выбранным сериям из списка создать доки

Добрый день! Как оптимизировать код в процедуре,нужно по выбранным сериям из списка создать доки
вот код
Процедура ДействияФормыРедактировать6(Кнопка)

СпДетал = Новый СписокЗначений;

Для каждого Стр из ЭтотОбъект.Состав Цикл
    ДокСертифНом=Документы.СертификацияНоменклатуры.НайтиПоРеквизиту("СерияНоменклатуры",Стр.СерияНоменклатуры);
    Если ДокСертифНом.Пустая() тогда
        СпДетал.Добавить(Стр.СерияНоменклатуры,,Истина);
    иначе    
        Сообщить("Уже есть документ Сертификация номенклатуры,с такой серией:"+""+Стр.СерияНоменклатуры);
    КонецЕсли;    
КонецЦикла;

Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |    ТЗ.Ссылка.Дата,
    |    ТЗ.СерияНоменклатуры,
    |    ТЗ.Ссылка
    |ПОМЕСТИТЬ ТЗ
    |ИЗ
    |    Справочник.аэсПлавки.Состав КАК ТЗ
    |;
    |
    ////////////////////////////////////////////////////////////////////////////////

    |ВЫБРАТЬ
    |    аэсПлавкиСостав.Ссылка.Дата,
    |    аэсПлавкиСостав.Ссылка,
    |    аэсПлавкиСостав.СерияНоменклатуры,
    |    аэсПлавкиСостав.Номенклатура
    |ИЗ
    |    Справочник.аэсПлавки.Состав КАК аэсПлавкиСостав
    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТЗ КАК ТЗ
    |        ПО аэсПлавкиСостав.СерияНоменклатуры = ТЗ.СерияНоменклатуры
    |ГДЕ
    |    аэсПлавкиСостав.Ссылка <> &Ссылка
    |и    аэсПлавкиСостав.СерияНоменклатуры в (&СпДетал) " ;

Запрос.УстановитьПараметр("Ссылка",Ссылка);
Запрос.УстановитьПараметр("СпДетал",СпДетал);

ТабЗнач = Запрос.Выполнить().Выгрузить();

ВыборПроизведен = СпДетал.ОтметитьЭлементы("Выберите детали");
Если ВыборПроизведен Тогда
   Для Каждого эл Из СпДетал Цикл
          Для каждого Стр из ТабЗнач Цикл
           Если Эл.Пометка И ЭЛ.Значение =Стр.СерияНоменклатуры  ТОГДА
                        Док = Документы.СертификацияНоменклатуры.СоздатьДокумент();
                     Док.Номенклатура=Стр.Номенклатура;
                     Док.Дата=Стр.Дата;
                        Док.СерияНоменклатуры=Стр.СерияНоменклатуры;
                     Док.Записать();
            конецЕсли;
        КонецЦикла;
    КонецЦикла;    
КонецЕсли;
КонецПроцедуры
Ответ: Каждой строке это новая серия соответствует отдельный документ.
Вопрос: Работа с полем со списком

Здравствуйте! Мне нужно выбрать значение поля со списком, которое берется со справочника. И по нему уже фильтровать справочник. Вот только задать значения не выходит...
Код 1C
1
2
3
4
5
6
7
8
  Процедура ПриОткрытии()  
    Факультеты = СоздатьОбъект("Справочник.Факультет");
Факультеты.ВыбратьЭлементы();  
Пока Факультеты.ПолучитьЭлемент() = 1 Цикл      
    Сообщить(Ttt.ТекущийЭлемент().Наименование);
    
конеццикла;
КонецПроцедуры
Выводит ошибку:
Попытка присвоить значение недоступной для записи переменной (Факультеты)
Подскажите как быть тогда?
Ответ: Реализовала иначе с помощью поля ввода. и ему уже дала значения справочника) всем спасибо большое)
Выборку сделала, если кому понадобится:
Код 1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
Процедура Сформировать()
    Перем Запрос, ТекстЗапроса, Таб;
    //Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса = 
    "//{{ЗАПРОС(Печать)
 
    |Факультет1 = Справочник.Проживающие.Факультет;
    |Проживающий = Справочник.Проживающие.Наименование;
    |Группа = Справочник.Проживающие.НомГруппы;
    |НомерКомнаты = Справочник.Проживающие.НомерКомнаты;
    |Функция Сч = Счётчик();
    |Группировка Факультет1;
    |Группировка Проживающий;";
        Если Факультет.Выбран()=1 Тогда   ТекстЗапроса=ТекстЗапроса+"  
        
    |Условие(Факультет = Факультет1);
    |"//}}ЗАПРОС 
    ;         //    сообщить("заппаптап");
        КонецЕсли;
     
    
    Сообщить(Факультет);    
        
        
        
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда  
        сообщить("запрос вообще не прошел");
        Возврат;
    КонецЕсли;    
        ТабЗнач=СоздатьОбъект("ТаблицаЗначений");   //* Показать результат запроса
    Запрос.Выгрузить(ТабЗнач,0,0);              //* ставилось на время отладки
    Парам=ТабЗнач; ОткрытьФорму("Отчет.Диагностика",ТабЗнач);// Возврат;
 
    Спр=СоздатьОбъект("Справочник.Факультет");
    Спр1=СоздатьОбъект("Справочник.Проживающие");
    // Подготовка к заполнению выходных форм данными запроса
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Таблица");
    // Заполнение полей "Заголовок"
    Таб.ВывестиСекцию("Заголовок");
    Состояние("Заполнение выходной таблицы...");
    Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0); 
    Себ=0; Приб=0;
    Пока Запрос.Группировка("Факультет1") = 1 Цикл
        Спр.НайтиПоНаименованию(Запрос.ЗначениеУпорядочивания(1),0);
              Таб.ВывестиСекцию("Факультет");   
    
             Себ1=0; Приб1=0;
        Пока Запрос.Группировка(2) = 1 Цикл  
        
        Спр1.НайтиПоНаименованию(Запрос.ЗначениеУпорядочивания(1),0);
        // Если Запрос.Проживающий.ЭтоГруппа()=0 тогда     Таб.ВывестиСекцию("Проживающий");
         //иначе Таб.ВывестиСекцию("группа");    
         // конецесли;
//Если Запрос.Медикамент.ЭтоГруппа()=0 тогда     
    Таб.ВывестиСекцию("Проживающий");
 
//КонецЕсли;
КонецЦикла; 
 
    КонецЦикла;
 
    Таб.ВывестиСекцию("Итого");
 
    Таб.ТолькоПросмотр(0); 
        Таб.ПараметрыСтраницы(1,100,,3,3,3,3,1,1,,,);
    Таб.Показать("Печать", "");
КонецПроцедуры
Вопрос: Проверка уникальности значения в списке

Всем здравствуйте. Есть СписокЗначений - "СписокИменНастроек" и реквизит "НовоеИмяНастройки". Нужно при изменении реквизита НовоеИмяНастройки проверять, есть ли его значение в списке СписокИменНастроек. И всё бы работало, если бы не нужно было сохранять список при закрытии формы, а восстанавливать - при открытии. Для этого я пользуюсь методами ЗначениеВСтрокуВнутр() и ЗначениеИзСтрокиВнутр() соответственно. А потом видать, при заполнении списка, эти методы как-то незаметно для пользователя карёжат значения сохраняемого списка. Однако уже со второй попытки изменения реквизита НовоеИмяНастройки код отрабатывает как надо. Вот мой код, что не так, прошу помочь, пожалуйста:

Код:
Процедура ПриОткрытии()
    СписокИменНастроекВосстановить=ВосстановитьЗначение("СписокИменНастроекВСтроку");
    СписокИменНастроек=Новый СписокЗначений;
    Если ПустаяСтрока(СписокИменНастроекВосстановить)=ложь Тогда
        //Восстанавливаем из строки элементы списка
        СписокИменНастроекИзСтроки=ЗначениеИзСтрокиВнутр(СписокИменНастроекВосстановить);
        Для каждого н из СписокИменНастроекИзСтроки Цикл
            СписокИменНастроек.Добавить(н);
        КонецЦикла;
        СписокИменНастроек.СортироватьПоЗначению();
    КонецЕсли;
КонецПроцедуры

Процедура НовоеИмяНастройкиПриИзменении(Элемент)
    ИщемЗначение=СписокИменНастроек.НайтиПоЗначению(НовоеИмяНастройки);
    ПроверкаУникальности=истина;
    Если ИщемЗначение<>неопределено Тогда
        ПроверкаУникальности=ложь;
        Сообщить("повтор");
    КонецЕсли;
    Если ИщемЗначение=неопределено Тогда
        СписокИменНастроек.Добавить(НовоеИмяНастройки);
    КонецЕсли;
КонецПроцедуры

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

Код:
Процедура ПриОткрытии()
    СписокИменНастроек=ВосстановитьЗначение("СписокИменНастроек");
    Если СписокИменНастроек=неопределено Тогда
        СписокИменНастроек=Новый СписокЗначений;
    КонецЕсли;
КонецПроцедуры

Процедура НовоеИмяНастройкиПриИзменении(Элемент)
    ИщемЗначение=СписокИменНастроек.НайтиПоЗначению(НовоеИмяНастройки);
    ПроверкаУникальности=истина;
    Если ИщемЗначение<>неопределено Тогда
        ПроверкаУникальности=ложь;
        Сообщить("повтор");
    КонецЕсли;
    Если ИщемЗначение=неопределено Тогда
        СписокИменНастроек.Добавить(НовоеИмяНастройки);
    КонецЕсли;
КонецПроцедуры

Процедура ПриЗакрытии()
    СохранитьЗначение("СписокИменНастроек",СписокИменНастроек);
КонецПроцедуры
Вопрос: как получить ссылку на созданный элемент справочника в управляемых формах 8.2

Добрый день. Вопрос возник следующий. Из процедуры документа я вызываю форму элемента справочника, заполняю ее и записываю и нужно чтоб после записи в процедуру, которое все это вызывало получила ссылку на созданный элемент.

Код процедуры следующий:
Код 1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
&НаКлиенте
Процедура КонтрагентОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, СтандартнаяОбработка)
    
    ВведенныйКонтрагент = ПолучитьВведенногоКонтрагента(Текст);
    Если ВведенныйКонтрагент <> Неопределено Тогда
        Контрагент = ВведенныйКонтрагент;
    Иначе
        Режим = РежимДиалогаВопрос.ДаНет;
        ТекстСообщения = "Клиент не найден! Завести данные нового клиента в справочник?";
        Ответ = Вопрос(ТекстСообщения, Режим, 0);
        Если Ответ = КодВозвратаДиалога.Да Тогда
            ДанныеЗаполнения                            = ПолучитьФорму("Справочник.мфоКонтрагенты.ФормаОбъекта");
            ДанныеЗаполнения.Объект.Наименование        = Текст;
            ДанныеЗаполнения.Объект.НаименованиеПолное  = Текст;
            
            ДанныеЗаполнения.Открыть();
        КонецЕсли;
    КонецЕсли;
 
КонецПроцедуры // КонтрагентОкончаниеВводаТекста()
понятно, что форма объекта справочника открывается в этом участке кода
Код 1C
1
2
3
4
5
6
7
Если Ответ = КодВозвратаДиалога.Да Тогда
            ДанныеЗаполнения                            = ПолучитьФорму("Справочник.мфоКонтрагенты.ФормаОбъекта");
            ДанныеЗаполнения.Объект.Наименование        = Текст;
            ДанныеЗаполнения.Объект.НаименованиеПолное  = Текст;
            
            ДанныеЗаполнения.Открыть();
        КонецЕсли;
вот как в эту процедуру вернуть или получить ссылку созданного элемента?
при условии, что элемент справочника будет заполняться в ручную, а не программно.
Ответ:
Цитата Сообщение от BVladimir2 Посмотреть сообщение
Да помнится, что в некоторых случаях "ТекстРедактирования" не соответствовал тому, что введено в поле на экране. Правда у меня там были програмные "перескоки" с поля на поле, а связано ли это и что конкретно, на что влияло я не докопал..
ну пока вроде все нормально было, в тексте содержалось значение, которое ввел. А подход как сделал я и хорош, но плох тем что лишний раз записывается реквизит Контрагент.

а если без связи делать, то нужно в ручную пилить все обработчики этого поля. Этот подход вроде правильней, но обширней. Мой проще, но наверно не правильный в какой-то мере вообщем не знаю
Вопрос: Отловить активизацию окна у пользователя. Чтоб созданные док-ты при активизации окна отобр

Пользователь, допустим делает РКО, потом переключается в окно, где  эти РКО и др. документы отображаются. Как отловить момент ,когда пользователь переключился с окна создания РКО, в форму где эти РКО  с другими документами отображаются. Может процедура какая-то, которая отлавливает активизацию формы (активной). Надеюсь доступно объяснил...
Зачем это все? Пользователь создавал документов, а в другой форме, они не отображаются, чтоб обновить отображение документов...
Ответ: () Сейчас гляну...
Вопрос: Не сохраняет значение выбранное из списка выбора в поле

Форумчане) помогите ..

Есть формаЭлемента документа. На ней есть таблицаЗначений с полямиВвода Сотрудник, Содержание.

Сотрудник это СписокЗначений.
Программно я выдаю туда массив необходимых мне сотрудников.

Процедура ИсторияПереговоровСотрудникНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

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

    Компан = Объект.Компания;
    Если ПустаяСтрока(Компан) тогда
      Сообщить ("Пусто ");
        Иначе
     СЗ =  ПолучитьСотрудников(Компан);
     ВыводВС = Элемент.СписокВыбора;
     ВыводВС.ЗагрузитьЗначения(СЗ);
КонецПроцедуры

Вот список нужных сотрудников выпадает нормально, но когда я нажимаю на какого то из списка, само поле остается пустым..

СЗ - массив
Ответ: проблема решена
Вопрос: В УТ 12.2 в какой процедуре нужно изменить запрос формы подбора товаров для продажи?

мне нужно было добавить поле в форму подбора. в запросе динамического списка изменил запрос, в режиме конфы поле появляется, но не отображается после обновления. В другом форуме прочитал, что это делается через процедуру в Общий модуль - ПодборТоваровСервер - ТекстЗапросаСпискаФормыПодбора , но в этой процедуре не вижу запроса.
Ответ: () это древняя. Вряд ли кто-то вспомнит, что было 5 лет назад. Ну может какой-нибудь старожил из глухой тайги вдруг объявится. Будем ждать.
Вопрос: v7: Обработка выбранного значения

День добрый, форумчане. Давно не работал с 7.7 и что-то подзабыл, помогите кто чем может.
А проблема следующая, есть форма элемента справочника в нем поле подчиненного справочника. Если ничего не трогать то стандартная обработка при нажатии на ... просит заново выбрать элемент номенклатуры что-бы выбрать подчиненные ему(не передает в открываемую форму сама владельца). Решил исправить:

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

Отлавливаю событие выбора моего реквизита, и открываю уже форму с нужным владельцем, но никак не могу отловить элемент который пользователь выбирает в этой форме, в процедуре ОбработкаВыбораЗначения отладчик просто не останавливается.

Подскажите как либо в стандартную обработку передать владельца, либо поймать выбранный элемент в моём случае
Ответ: () А если делать через ПриНачалеВыбораЗначения, то потом ничего отлавливать не нужно. Выбранный элемент сам подставится.

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

у справочника "ОрганыСертификации1" Создай форму для выбора. В ней при открытии ИспользоватьВладельца(Форма.Параметр)
Вопрос: Открытие формы выбранного документа на редактирование

Здравствуйте. В собственной конфигурации есть документ "НазначенияСотрудникам", отражающие работы сотрудников. Понадобилось следующее: получить по подразделению пользователя(руководителя подразделения) все текущие работы сотрудников этого подразделения списком и реализовать возможность редактировать выбранный из списка документ. Документы я вывел в форме обработки в динамический список. Далее попытался на событии списка "Выбор" реализовать открытие формы выбранного документа:
1C
1
2
3
4
5
6
&НаКлиенте
Процедура ТекущиеРаботыСотрудниковВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
    // Вставить содержимое обработчика.
ТекСтрока=Элементы.ТекущиеРаботыСотрудников.ТекущиеДанные;  
ОткрытьЗначение(ТекСтрока.Ссылка);  
КонецПроцедуры
Ссылка - реквизит строки списка, ссылка на документ. Проблема в том, что мне открывается форма только для чтения, редактировать документ невозможно. Что не так? помогите пожалуйста.
Ответ: все, понял, я в первый раз сделал так же как в обработке планирования, но косанул немного...и потом сделал открыть значение, что и прнивел здесь. Извиняюсь за неточность, спасибо большое за помощь
Вопрос: Связанные списки выбора

Добрый день!
Есть справочник в нем три реквизита:
1)Документ (Тип строка, режим выбора из списка)
2)Реквизит (Тип строка, режим выбора из списка)
3)ТипРеквизита (Тип строка)
Задача - в первом реквизите выбираем документы, во втором реквизит (которые присутствуют в выбранном документе), а третий заполняется типом реквизита.
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
&НаКлиенте
Процедура ДокументНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    ДокументНачалоВыбораНаСервере();
    СЗ = ДокументНачалоВыбораНаСервере();  
    
    Элементы.Документ.СписокВыбора.ЗагрузитьЗначения(СЗ)
 
    
КонецПроцедуры
 
&НаСервереБезКонтекста
Функция ДокументНачалоВыбораНаСервере()
    ТЗ = Новый ТаблицаЗначений;
    КТЗ = Новый ТаблицаЗначений;
    ТЗ.Колонки.Добавить("Справочники"); 
    ТЗ.Колонки.Добавить("Реквизиты");
    ТЗ.Колонки.Добавить("ТипРеквизита");       
 
    Доки = Метаданные.Документы;
 
    Для каждого Док из Доки Цикл
        
        Если Док.Имя = "ПоступлениеТоваров" или Док.Имя = "ПродажаТоваров" Тогда 
            
            Для каждого Рек  Из Док.Реквизиты Цикл
                НоваяСтрока = ТЗ.Добавить();
                НоваяСтрока.Справочники = (Строка(Док));
 
                НоваяСтрока.Реквизиты = (Строка(Рек));
                НоваяСтрока.ТипРеквизита = Рек.Тип;
            КонецЦикла;
            
        КонецЕсли;
    КонецЦикла;
    КТЗ = ТЗ.СкопироватьКолонки();
 
    ТЗ.Свернуть("Справочники");
    
        СЗ = Новый СписокЗначений;
        СЗ = ТЗ.ВыгрузитьКолонку("Справочники");
        Возврат СЗ;
    КонецФункции
Загвоздка в том, как связать два списка выбора?
Ответ: Решил отписаться, может кому пригодиться
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
&НаКлиенте
Процедура ДокументНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    СписокЗначений = ВыборДокумента();  
    Элементы.Наименование.СписокВыбора.ЗагрузитьЗначения(СписокЗначений)    
КонецПроцедуры
 
&НаСервереБезКонтекста
Функция ВыборДокумента(ВозвращатьИменаДокументов = Истина, ВыбранноеЗначение = "")
    
    ТаблицаЗначений = Новый ТаблицаЗначений;
    ТаблицаЗначений.Колонки.Добавить("Документы"); 
    ТаблицаЗначений.Колонки.Добавить("Реквизиты");
    ТаблицаЗначений.Колонки.Добавить("ТипРеквизита");
    Доки = Метаданные.Документы;
 
    Для каждого Док из Доки Цикл        
        Если Док.Имя = "ПеремещениеТоваров" или Док.Имя = "ПоступлениеТоваровУслуг" Тогда               
            Для каждого Рек  Из Док.Реквизиты Цикл
                НоваяСтрока = ТаблицаЗначений.Добавить();
                НоваяСтрока.Документы = (Строка(Док));
                НоваяСтрока.Реквизиты = (Строка(Рек));
                
                СинонимТип = Метаданные.НайтиПоТипу(ТипЗнч(Рек.Тип.ПривестиЗначение()));
                Если Строка(Рек.Тип) = "Строка" или Строка(Рек.Тип) = "Число" или Строка(Рек.Тип) = "Дата" или Строка(Рек.Тип) = "Булево" Тогда
                    НоваяСтрока.ТипРеквизита = Рек.Тип;
                ИначеЕсли Метаданные.Справочники.Найти(СинонимТип.Имя) <> Неопределено Тогда
                    НоваяСтрока.ТипРеквизита = "СправочникСсылка." + СинонимТип.Имя;
                ИначеЕсли Метаданные.Документы.Найти(СинонимТип.Имя) <> Неопределено Тогда
                    НоваяСтрока.ТипРеквизита = "ДокументСсылка." + СинонимТип.Имя;
                ИначеЕсли Метаданные.Перечисления.Найти(СинонимТип.Имя) <> Неопределено Тогда
                    НоваяСтрока.ТипРеквизита = "ПеречислениеСсылка." + СинонимТип.Имя;
                Иначе
                    НоваяСтрока.ТипРеквизита = Рек.Тип;
                КонецЕсли               
            КонецЦикла;             
        КонецЕсли;
    КонецЦикла;
        Адресс = ПоместитьВоВременноеХранилище(ТаблицаЗначений, Новый УникальныйИдентификатор);
        СписокЗначений = Новый СписокЗначений;
    Если ВозвращатьИменаДокументов = Истина Тогда
        ТаблицаЗначений.Свернуть("Документы");
        СписокЗначений = ТаблицаЗначений.ВыгрузитьКолонку("Документы");
        Возврат СписокЗначений;
    Иначе
        Возврат Адресс;
    КонецЕсли;
КонецФункции
 
&НаСервереБезКонтекста
Функция ВыборТипаИРеквизита(ВозвращатьИменаДокументов = Истина, ВыбранноеЗначение = "")
        Адресс = ВыборДокумента(Ложь);
        НоваяСтруктура = Новый Структура;
        СписокЗначенийРеквизита = Новый СписокЗначений;         
        КопияТаблицыЗначений = Новый ТаблицаЗначений;
        КопияТаблицыЗначений = ПолучитьИзВременногоХранилища(Адресс);
        
    Если ВозвращатьИменаДокументов = Истина Тогда
        Массив = Новый Массив;
        Массив2 = Новый Массив;
        НоваяСтруктура.Вставить("Документы", ВыбранноеЗначение);        
        Массив = КопияТаблицыЗначений.НайтиСтроки(НоваяСтруктура);
            Для каждого Строка Из Массив Цикл
                Массив2.Добавить(Строка.Реквизиты);
            КонецЦикла;
        Возврат Массив2;
    Иначе
        Массив3 = Новый Массив;
        НоваяСтруктура.Вставить("Реквизиты", ВыбранноеЗначение);        
        Массив = КопияТаблицыЗначений.НайтиСтроки(НоваяСтруктура);
            Для каждого Строка Из Массив Цикл
                Массив3.Добавить(Строка.ТипРеквизита);
            КонецЦикла;
        Возврат Массив3[0];
    КонецЕсли;  
КонецФункции
 
&НаКлиенте
    Процедура ДокументОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
        Массив = ВыборТипаИРеквизита(Истина, ВыбранноеЗначение);
        Элементы.Реквизит.СписокВыбора.ЗагрузитьЗначения(Массив)
    КонецПроцедуры
 
&НаКлиенте
    Процедура РеквизитОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
        Значение = ВыборТипаИРеквизита(Ложь, ВыбранноеЗначение);        
        
        МассивТипов = Новый Массив();
        МассивТипов.Добавить(Тип(Значение));
        Элементы.Значение.ОграничениеТипа = Новый ОписаниеТипов(МассивТипов);
 
    КонецПроцедуры