Имя: Пароль:
1C
1C 7.7
v7: Контрагент + БанковскиеСчета
,
0 dkdimon
 
22.07.13
23:01
Всем привет!

Простая форма, на которой 2 поля ввода, первое типа "Справочник.Контрагенты", второе - "Справочник.БанковскиеСчета".

Код:
Перем СтарыйКонтрагент;

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

Процедура ПриИзмененииКонтрагента()
   
   Если СтарыйКонтрагент <> Контрагент Тогда
       СтарыйКонтрагент    = Контрагент;
       Счет = "";

       Если Контрагент.ЮрФизЛицо.Выбран() = 1 Тогда
           Счет = Контрагент.ОсновнойСчет;
       КонецЕсли;

   КонецЕсли;
   
КонецПроцедуры

Процедура ОбработкаВыбораЗначения(Значение, ЭлементДиалога, ФлагПродолжения)
   Если ЭлементДиалога = "Контрагент" Тогда
       Если Контрагент <> Значение Тогда
           Контрагент = Значение;
           ПриИзмененииКонтрагента();
           ФлагПродолжения = 0;
       КонецЕсли;
   
   ИначеЕсли ЭлементДиалога = "Счет" Тогда
       Если Контрагент.ЮрФизЛицо <> Значение.ЮрФизЛицо Тогда
           СпрКонтрагенты = СоздатьОбъект("Справочник.Контрагенты");
           Если СпрКонтрагенты.НайтиПоРеквизиту("ЮрФизЛицо", Значение.ЮрФизЛицо, 1) = 1 Тогда
               Контрагент = СпрКонтрагенты.ТекущийЭлемент();
           Иначе
               Контрагент = "";
           КонецЕсли;
           
           ПриИзмененииКонтрагента();
       КонецЕсли;
   КонецЕсли
КонецПроцедуры

Т.е. при открытии счетов открываются счета выбранного Контрагента, все ок. Но если нажать на Esc в выборе счета, то сбрасывается Контрагент. Никак не могу понять где взаимосвязь! Я по сути скопировал кусок кода из документа "Платежное поручение" - там при нажатии на Esc в счетах контрагент не пропадает. Помогите, куда копать?
1 Хряк
 
22.07.13
23:33
пройдись отладчиком здесь
ИначеЕсли ЭлементДиалога = "Счет" Тогда
       Если Контрагент.ЮрФизЛицо <> Значение.ЮрФизЛицо Тогда
           СпрКонтрагенты = СоздатьОбъект("Справочник.Контрагенты");
           Если СпрКонтрагенты.НайтиПоРеквизиту("ЮрФизЛицо", Значение.ЮрФизЛицо, 1) = 1 Тогда
               Контрагент = СпрКонтрагенты.ТекущийЭлемент();
           Иначе
               Контрагент = "";
           КонецЕсли;
2 cw014
 
23.07.13
07:34
Я так думаю, тебе нужно операться на "ФлагПродолжения"