Имя: Пароль:
1C
1С v8
Множественный выбор документов
,
0 Анка_Пивовар
 
29.01.15
11:45
Есть самописный документ, он должен заполняться по кнопке Подбор.
Когда кликаешь подбор- открывается форма выбора "Заказы покупателя", и при двойном нажатии данные из ТЧ должны попасть в ТЧ  самописного документа, при этом Форма выбора должна быть открытой, чтобы пользователь мог опять выбрать другой заказ, и так далеее пока форму сам пользователь не закроет.

При показанном коде, выбирается один документ, форма выбора закрывется.

Процедура ЗаполнитьТабличнуюЧастьПоЗаказуПокупателю(ТабличнаяЧасть, ЗаказПокупателя = Неопределено, Очистить = Истина, ТипДокумента = Неопределено)

    Если НЕ ЗначениеЗаполнено(ЗаказПокупателя) Тогда
    
        ФормаЗаказы = Документы[ТипДокумента].ПолучитьФормуВыбора(,ЭтаФорма);
        ФормаЗаказы.Заголовок = "Выберите заказ покупателя для заполнения заказа на производство";
        ФормаЗаказы.РежимВыбора = Истина;
        ФормаЗаказы.ЗакрыватьПриВыборе  = Ложь;
        ЗаказПокупателя  = ФормаЗаказы.ОткрытьМодально();
                
    КонецЕсли;

    ЗаполнитьПродукциюПоЗаказуПокупателю(ЗаказПокупателя);

КонецПроцедуры // ЗаполнитьТабличнуюЧастьПоЗаказуПокупателю()

Процедура ЗаполнитьПродукциюПоЗаказуПокупателю(ТабличнаяЧасть, ЗаказПокупателя = Неопределено,ЗаполнятьПодразделение=ложь)

    Запрос = Новый Запрос;

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

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

    КонецЦикла;
    
КонецПроцедуры
1 Fragster
 
гуру
29.01.15
11:49
ЗакрыватьПриВыборе = Ложь
ОповеститьОВыборе при необходимости
ОбработкаВыбора
2 Fragster
 
гуру
29.01.15
11:49
ОткрытьМодально - не нужно
3 Анка_Пивовар
 
29.01.15
11:52
(1) - куда писать обработку"оповеститьовыборе"?
если убрать открыть модально, пишет обращение к процедуре как к функции.
4 Fragster
 
гуру
29.01.15
11:53
ФормаЗаказы = Документы[ТипДокумента].ПолучитьФормуВыбора(,ЭтаФорма);
        ФормаЗаказы.Заголовок = "Выберите заказ покупателя для заполнения заказа на производство";
        ФормаЗаказы.РежимВыбора = Истина;
        ФормаЗаказы.ЗакрыватьПриВыборе  = Ложь;
        ФормаЗаказы.Открыть();
5 Анка_Пивовар
 
29.01.15
11:53
(1) ЗакрыватьПриВыборе = Ложь и так написано!
6 Fragster
 
гуру
29.01.15
11:54
В родительской форме - в событии ОбработкаВыбора обрабатывай всё, что нужно.

ОповеститьОВыборе - это если у тебя, например, какие-то левые кнопки событие "выбора" инициируют
7 Анка_Пивовар
 
29.01.15
11:55
(6)- в родителькой форме, значит в форме "выбор заказа покупателя", прописать процедуру обработка выбора и туда что добавить???
8 Fragster
 
гуру
29.01.15
11:58
(7) в форме, из которой ты всё это открываешь
9 Fragster
 
гуру
29.01.15
11:58
Добавь туда Сообщить(ВыбранноеЗначение);
10 Анка_Пивовар
 
29.01.15
12:02
(7) в форму документа, куда мне нужно добавить значения, создать процедуру "обработкавыбора" и туда перенести все что написано в процедуре "ЗаполнитьПродукциюПоЗаказуПокупателю" , верно я понимаю?
11 Рэйв
 
29.01.15
12:05
МножественныйВыбор (MultipleChoice)
Использование:

Чтение и запись.
Описание:

Тип: Булево.
Разрешает или запрещает выбор нескольких строк из табличных полей.
Истина - разрешено.

Доступность:

Толстый клиент.
12 Анка_Пивовар
 
29.01.15
12:14
(9) сделала все как сказал, заработало. спасибо огромное!