Имя: Пароль:
1C
 
УФ Открытие форм в цикле
0 spiller26
 
13.11.15
15:23
На клиенте пытаюсь обработать Табличную часть обработки, в некоторых обрабатываемых строках необходимо чтобы открывалась форма выбора из таблицы.
Но получается так, что формы открываются все.

&НаКлиенте
Процедура ОбработкаТЧ()
Для Каждого СтрокаДокумента Из ДокументыКИмпорту Цикл
  СтруктураПП = СфоормироватьСтруктуруНайденныхПлатежныхПоручений(СтруктураДанных);
Если СтруктураПП.ЕстьПП Тогда  
   ТекстИнформации = СтрокаДокумента.НазначениеПлатежа;
   СтруктураПараметров = Новый Структура;
   СтруктураПараметров.Вставить("АдресТЗ", СтруктураПП.АдресТЗ);
   СтруктураПараметров.Вставить("ТипДокументов", "ПлатежноеПоручение");
   СтруктураПараметров.Вставить("Информация", ТекстИнформации);
   СтруктураПараметров.Вставить("СуммаИзБанка", СтрокаДокумента.Сумма);
  СтруктураПараметров.Вставить("ЗаголовокФормы", "Выбор документа ""Платежное поручение"" по которому будет идти Списание с расч.счета");
  СтруктураПараметров.Вставить("ПлатежноеПоручениеСсылка", ПредопределенноеЗначение("Документ.ПлатежноеПоручение.ПустаяСсылка")); //для возврата
  ФормаВыбораДокументаПП = ПолучитьФорму("ВнешняяОбработка.КлиентБанк.Форма.ФормаВыбораДокумента", СтруктураПараметров, ЭтотОбъект);
  ФормаВыбораДокументаПП.Открыть();    
КонецЕсли;
КонецЦикла;    
КонецПроцедуры

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

//--------------------------------------------
//---------- В форме "ФормаВыбораДокумента" --
//Режим открытия = Блокировать весь интерфейс

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
АдресТЗ = Параметры.АдресТЗ;
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
Попытка
  ТЗ = ПолучитьИзВременногоХранилища(Параметры.АдресТЗ);    
Исключение
  ТЗ = Неопределено;
КонецПопытки;    
КонецПроцедуры
1 VikingKosmo
 
13.11.15
15:26
Что бы все формы не открывались в цикле, прекрати открывать их в цикле и попробуй объяснить, что ты вообще хочешь сделать
2 Горогуля
 
13.11.15
15:27
(1) да он просто похвастаться зашёл
3 VikingKosmo
 
13.11.15
15:27
(2) а, ну тогда расходимся
4 aleks_default
 
13.11.15
15:28
хвастун - находка для бандита
5 spiller26
 
13.11.15
15:32
(1)
загрузка из банка, платежки.
Некоторые входящие номера платежек не соответствуют номерам в базе.
По каждой строке идет проверка документов ПП (выбирается запросом).
Далее если есть платежки, то должно выводиться окно, в котором пользователь (операционист) выбирает нужную ему платежку из таблицы.
6 spiller26
 
13.11.15
15:33
И так до конца табличной части
7 VikingKosmo
 
13.11.15
15:34
и нафига при этом открывать в цикле формы документов?
8 spiller26
 
13.11.15
15:36
(7) Какие формы документов, там список документов, из которого должны выбрать.
9 Горогуля
 
13.11.15
15:39
(8) это у тебя такие фантазии, расходящиеся с реальностью?
10 VikingKosmo
 
13.11.15
15:39
(8) это ты так думаешь. По факту там в цикле открывается форма
11 spiller26
 
13.11.15
15:40
(10) Я понимаю "пятница", тем более 13, но все же.
12 VikingKosmo
 
13.11.15
15:42
(11) все же прекрати открывать форму в цикле и заставь себя сделать то, что ты хочешь
13 Горогуля
 
13.11.15
15:43
(11) завтра похмелись, в воскресенье отойди, а в понедельник приступай к задаче
14 aleks_default
 
13.11.15
15:44
(10)Вроде же даже программный код уже русским языком написан... Просто даже понять что написано не могут.
15 VikingKosmo
 
13.11.15
15:45
(14) ну тут два варианта: или не могут, или не хотят. Можно голосовалку прикрутить
16 spiller26
 
13.11.15
15:59
Короче никому такое не попадалось
17 Горогуля
 
13.11.15
16:00
(16) сколько раз видел. человек пишет одно, думает другое, говорит третье
18 Любопытная
 
13.11.15
16:07
(16) В УФ код не останавливается в момент открытия чего-либо в ожидании действий юзера. Он полностью отрабатывается. Поэтому лучшим вариантом будет - сделать пост обработку. На каждый неправильный документ сделать сообщение пользователю, переходя по этим сообщениям, пользователь может поочередно обработать каждый документ. но уже после проверки, а не во время.
19 VikingKosmo
 
13.11.15
16:08
ТАКОЕ точно не попадалось
20 aleks_default
 
13.11.15
16:11
(16) дык форма ж не модально открывается, причем тут УФ  не УФ...
21 Alex unde
 
13.11.15
16:17
в УФ можно модально открывать, в чем проблема? это же не веб клиент через браузер...
22 VikingKosmo
 
13.11.15
16:17
(21) в УФ может быть режим использования модальности Не использовать, внезапно?
23 Alex unde
 
13.11.15
16:19
(22) Внезапно) Недостаточно исходных данных

ФормаРедактирования = ПолучитьФорму("Документ.ЗаказПокупателя.Форма.ФормаРедактирования", , ,Новый Структура("Ключ", Объект.Ссылка));

ФормаРедактирования.ОткрытьМодально();

это если можно использовать - примерчик
24 VikingKosmo
 
13.11.15
16:20
(23) вообще в УФ за
ПолучитьФорму("Документ.ЗаказПокупателя.Форма.ФормаРедактирования", , ,Новый Структура("Ключ", Объект.Ссылка));

ФормаРедактирования.ОткрытьМодально();

руки отрывают по колено
25 Любопытная
 
13.11.15
16:21
(23) А если нельзя использовать? Нашел чем хвалиться
26 Alex unde
 
13.11.15
16:23
(24) та что ты говоришь?
27 VikingKosmo
 
13.11.15
16:25
(26) кури ОткрытьФорму()
28 Alex unde
 
13.11.15
16:26
(25) Если можно - то я дал пример, если нельзя - то достаточно умников, типа вас, которые могут написать подобный комментарий "по теме", благодаря которым, поиск полезной инфы на форуме = прочитать простыню бредовых комментов, и может потом что-то и найдется..
29 Alex unde
 
13.11.15
16:27
(0) человек, подкинь инфы к размышлению!)
30 Любопытная
 
13.11.15
16:31
(28) Что найдется? ОткрытьМодально()? Вроде как все эти танцы с управляемыми формами и заводились для отказа от модальности, разве нет? И с чего это мой комментарий не "по теме"?
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс