Имя: Пароль:
1C
1C 7.7
v7: Не срабатывает ОбработкаПодбора()
0 kathleen
 
26.12.11
09:38
В обработчике выбора значения реквизита ставлю флагстандартнойобработки=0, использую ОткрытьПодбор(), но почему-то значение выбранное подставляется в реквизит, а ОбработкаПодбора() не срабатывает. Что не так?
1 Tatitutu
 
26.12.11
09:39
форма подбора появляется ? код в студию
2 kathleen
 
26.12.11
09:40
Ага появляется, счас
3 Ёпрст
 
гуру
26.12.11
09:40
Лови в ОбработкаВыбораЗначения
4 kathleen
 
26.12.11
09:42
Процедура ПриНачалеВыбораЗначения(ИдентЭлементаДиалога, ФлагСтандартнойОбработки)
   
   ...        
   ИначеЕсли ИдентЭлементаДиалога = "Договор" Тогда

       Если (ПустоеЗначение(ВидЗадолженности) = 1) и (ВидКорректировки = 0) Тогда

           Предупреждение("Необходимо выбрать вид задолженности.",60);
           Активизировать("ВидЗадолженности");
           ФлагСтандартнойОбработки = 0;
           Возврат;

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

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

КонецПроцедуры // ПриНачалеВыбораЗначения()
//******************************************************************************
Процедура ОбработкаПодбора(Дог, Конт)
    Договор=Дог;
    СуммаКред=Конт.Задолженность;
КонецПроцедуры    
//******************************************************************************
5 kathleen
 
26.12.11
09:43
(3)Мне нужен контекст формы подбора, там остатки расчитываются.
6 1Сергей
 
26.12.11
09:44
(5) он у тебя есть в ПриНачалеВыбораЗначения
7 Ёпрст
 
гуру
26.12.11
09:45
(4) любое открытие формы (хоть ОткрытьФорму, хоть ОткрытьПодбор) в ПриНачалеВыбораЗначения будет открыто в режиме Выбора значения => обработка выбора значения будет всегда в ОбработкаВыбораЗначения

И.. это [:]|||||||[:]
8 kathleen
 
26.12.11
09:50
(7)Все равно не понимаю как мне сделать:(
9 Ёпрст
 
гуру
26.12.11
09:51
(8) перенести код из обработки подбора в обработку выбора значения вестимо.
10 Ёпрст
 
гуру
26.12.11
09:52
или вызвать обработку подбора в обработка выбора значения
11 kathleen
 
26.12.11
10:25
(9)В обработку выбора значения не передадутся остатки
12 ДенисЧ
 
26.12.11
10:29
бредишь...
открывай нужную форму и...
13 kathleen
 
26.12.11
10:38
Блин, я не понимаю, как к ним обратиться?
14 1Сергей
 
26.12.11
10:42
(13)

Процедура ПриНачалеВыбораЗначения(ИдентЭлементаДиалога, ФлагСтандартнойОбработки)
   
   ...        
   ИначеЕсли ИдентЭлементаДиалога = "Договор" Тогда
       ...
       ИначеЕсли (СокрЛП(ВидЗадолженности) = "Дебиторская") или (ВидКорректировки = 1)
           ....
       Если (Счет.ПринадлежитГруппе(СчетПоКоду("60"))=1) ИЛИ (Счет.ПринадлежитГруппе(СчетПоКоду("62"))=1) Тогда
           ФлагСтандартнойОбработки = 0;
           КонтекстФормыПодбора = СоздатьОбъект("СписокЗначений");
           КонтекстФормыПодбора.ДобавитьЗначение(Контекст, "Контекст");
           КонтекстФормыПодбора.ДобавитьЗначение(Контр, "Контрагент");
           КонтекстФормыПодбора.ДобавитьЗначение(Счет, "Счет");
           ОткрытьПодбор("Справочник.Договоры", "СОстатками", КонтекстФормыПодбора,0);
           //** тут можешь с КонтекстФормыПодбора делать всё, что нужно
15 kathleen
 
26.12.11
10:49
(14)
ОткрытьПодбор("Справочник.Договоры", "СОстатками", КонтекстФормыПодбора,0);
           СуммаКред=КонтекстФормыПодбора.Контекст.Задолженность;
Так ругается
ОткрытьПодбор("Справочник.Договоры", "СОстатками", КонтекстФормыПодбора,0);
           СуммаКред=КонтекстФормыПодбора.Задолженность;
Так тожи
16 1Сергей
 
26.12.11
10:52
(15) чего? тебе контекстом управлять или всё-таки вытаскивать оттуда значения?
17 kathleen
 
26.12.11
10:55
значение мне надо подставить в документ, остаток нужен
18 1Сергей
 
26.12.11
10:56
(17) объясни мне смысл этого шаманства. в подборе выбираются элементы справочника. На кой ляд тянуть остатки из формы подбора? Их можно посчитать и тут
19 kathleen
 
26.12.11
10:57
Сделала вот так
СуммаКред=КонтекстФормыПодбора.Форма.Задолженность;
не ругается, но в отладчике показывает пусто и соответственно ниче не подставляет
20 kathleen
 
26.12.11
10:58
(18)Ну думала, что проще будет, зачем два раза считать))
21 kathleen
 
26.12.11
10:58
придется считать?
22 1Сергей
 
26.12.11
11:00
(19) в форме списка делай Форма.ВыполнитьВыбор(<Знач>);
и запихивай всё что нужно в Знач
23 kathleen
 
26.12.11
12:01
Короче посчитала второй раз, спасибочки)))
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn