![]() |
![]() |
![]() |
|
Обработка выбора | ☑ | ||
---|---|---|---|---|
0
Масянька
21.06.12
✎
11:56
|
Доброе утро!
Есть реквизит - ПлатежныйДокумент. Обрабатывается выбор: Процедура ПлатежныйДокументНачалоВыбора(Элемент, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; Если НЕ ЗначениеЗаполнено(ДокументОснование) Тогда Предупреждение("Сначала выберите счет."); Возврат; Иначе Если ТипЗнч(ДокументОснование) = Тип("ДокументСсылка.элСчетВыставленный") Тогда ОписаниеТипов = Новый ОписаниеТипов("ДокументСсылка.ПоступлениеНаРасчетныйСчет"); ЭлементыФормы.ПлатежныйДокумент.ОграничениеТипа = ОписаниеТипов; ЭлементыФормы.ПлатежныйДокумент.Значение = ОписаниеТипов.ПривестиЗначение(ПлатежныйДокумент); ФормаВыбораПлатежки = Документы.ПоступлениеНаРасчетныйСчет.ПолучитьФормуВыбора(); ИначеЕсли ТипЗнч(ДокументОснование) = Тип("ДокументСсылка.элСчетПолученный") Тогда ОписаниеТипов = Новый ОписаниеТипов("ДокументСсылка.СписаниеСРасчетногоСчета"); ЭлементыФормы.ПлатежныйДокумент.ОграничениеТипа = ОписаниеТипов; ЭлементыФормы.ПлатежныйДокумент.Значение = ОписаниеТипов.ПривестиЗначение(ПлатежныйДокумент); ФормаВыбораПлатежки = Документы.СписаниеСРасчетногоСчета.ПолучитьФормуВыбора(); КонецЕсли; ФормаВыбораПлатежки.Заголовок = "Выберите платежный документ"; ФормаВыбораПлатежки.РежимВыбора = Истина; ФормаВыбораПлатежки.Отбор.Организация.Значение = Организация; ФормаВыбораПлатежки.Отбор.Организация.Использование = Истина; ФормаВыбораПлатежки.Отбор.Контрагент.Значение = Контрагент; ФормаВыбораПлатежки.Отбор.Контрагент.Использование = Истина; ПлатежныйДокумент = ФормаВыбораПлатежки.ОткрытьМодально(); Проверка(); КонецЕсли; КонецПроцедуры Проверка: Процедура Проверка() Если ЗначениеЗаполнено(Контрагент) Тогда СтарыйКонтрагент = Контрагент; КонецЕсли; Если ЗначениеЗаполнено(ДоговорКонтрагента) Тогда СтарыйДоговор = ДоговорКонтрагента; КонецЕсли; Если ЗначениеЗаполнено(ВалютаДокумента) Тогда СтараяВалюта = ВалютаДокумента; КонецЕсли; Если ЗначениеЗаполнено(СтавкаНДС) Тогда СтараяСтавкаНДС = СтавкаНДС; КонецЕсли; Если ЗначениеЗаполнено(ПлатежныйДокумент) Тогда // проверяем контрагента КонтрагентИзПлатежки = ПлатежныйДокумент.Контрагент; Если (КонтрагентИзПлатежки <> СтарыйКонтрагент) Тогда Предупреждение("Выбор не верен: не соответствие контрагента."); ПлатежныйДокумент = ""; Возврат; КонецЕсли; // проверяем договор ДоговорИзПлатежки = ПлатежныйДокумент.ДоговорКонтрагента; Если (ДоговорИзПлатежки <> СтарыйДоговор) Тогда Предупреждение("Выбор не верен: не соответствие договора контрагента."); ПлатежныйДокумент = ""; Возврат; КонецЕсли; // проверяем валюту ВалютаИзПлатежки = ПлатежныйДокумент.ВалютаДокумента; Если (ВалютаИзПлатежки <> СтараяВалюта) Тогда Предупреждение("Выбор не верен: не соответствие валюты."); ПлатежныйДокумент = ""; Возврат; КонецЕсли; // проверяем НДС СтавкаНДСИзПлатежки = ПлатежныйДокумент.РасшифровкаПлатежа.СтавкаНДС; Если (СтавкаНДСИзПлатежки <> СтараяСтавкаНДС) Тогда Предупреждение("Выбор не верен: не соответствие ставки НДС."); ПлатежныйДокумент = ""; Возврат; КонецЕсли; КонецЕсли; КонецПроцедуры Вроде работает, но платежка успевает прорисоваться. Может можно как-то по-другому? Спасибо. |
|||
1
zak555
21.06.12
✎
12:02
|
зачем тебе такие документы, как элСчет ?
|
|||
2
Масянька
21.06.12
✎
12:02
|
А по вопросу?
|
|||
3
kosts
21.06.12
✎
12:04
|
(0) >Может можно как-то по-другому?
Всегда можно сделать по другому. А что хотела то? |
|||
4
Масянька
21.06.12
✎
12:12
|
Платежный документ - фильтруется по данному контрагенту и в зависимости от счета (полученный - списание с расч. счета, выставленный - поступление). Но: фильтр можно отключить, тогда все контрагенты вываливаются - нельзя. потом: в выбранной платежке не та валюта или НДС - тоже нельзя. Вот проверка и проверяет допустимость. Но если "нельзя", то выводится окошко с предупреждением, но в строке "Платежка" уже прописана выбранная платежка. Когда закрывается окно предупреждение - платежка очищается. Но мне хочется, что платежка не прорисовывалась, если нельзя.
"ПриИзменении" не работает. Насколько я понимаю, потому что в обработке выбора стоит СтандартнаяОбработка=Ложь. |
|||
5
kosts
21.06.12
✎
12:16
|
(4) ПлатежныйДокументТМП = ФормаВыбораПлатежки.ОткрытьМодально();
Если ПлатежкаПравильная(ПлатежныйДокументТМП) Тогда ПлатежныйДокумент = ПлатежныйДокументТМП; КонецЕсли; |
|||
6
Масянька
21.06.12
✎
12:22
|
Огромное спасибо!!!!!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |