Имя: Пароль:
1C
1С v8
Как правильно создать обработчик события?
,
0 WhiteDragon93
 
27.09.13
01:43
КА 1.1, Документ - РКО. Есть у него таблица - ВыплатаДепонентов, но на форме ее нет. Нужно создать для нее обработчик события ПослеУдаления, в общем при изменении кол-ва строк нужно что-то делать.
Как создать данный обработчик? Пробовал просто

Процедура ВыплатаДепонентовПослеУдаления(Элемент)
    
..............................................
    
КонецПроцедуры

Не получилось, не отрабатывает. Нашел здесь статью, но больно туго дается с моими знаниями. Подскажите пожалуйста.
1 grayshadow
 
27.09.13
01:46
"Есть у него таблица - ВыплатаДепонентов, но на форме ее нет. Нужно создать для нее обработчик события ПослеУдаления"
после удаления, простите, чего, если таблицы нет на форме?:)
2 grayshadow
 
27.09.13
01:50
ну и читаем код, таблица таки появляется на форме

ИначеЕсли ВидОперации = Перечисления.ВидыОперацийРКО.ВыплатаДепонентов Тогда

        Для Каждого Страница Из ЭлементыФормы.ОсновнаяПанель.Страницы Цикл
            Если Страница.Имя="ВыплатаДепонентов" ИЛИ Страница.Имя="Депоненты_РасшифровкаПоСтатьям" Тогда
                Страница.Видимость=Истина;
            Иначе
                Страница.Видимость=Ложь;
            КонецЕсли;
        КонецЦикла;
    
        ЭлементыФормы.ОсновнаяПанель.ТекущаяСтраница=ЭлементыФормы.ОсновнаяПанель.Страницы["ВыплатаДепонентов"];

        ЭлементыФормы.СтавкаНДС.Доступность = Ложь;
    КонецЕсли;
3 WhiteDragon93
 
27.09.13
01:51
(1) она добавляется на форму, в зависимости от операции. Мне нужно отловить изменение кол-ва строк :) пардон, туплю
4 grayshadow
 
27.09.13
01:52
таки на элементы можно программно вешать обработчики...
5 grayshadow
 
27.09.13
01:55
6 WhiteDragon93
 
27.09.13
02:05
Вот на такой код ругается

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

    
КонецПроцедуры // ВыплатаДепонентовПослеУдаления
7 WhiteDragon93
 
27.09.13
02:09
{Документ.РасходныйКассовыйОрдер.Форма.ФормаДокумента.Форма(2195,1)}: Определения процедур и функций должны размещаться перед операторами тела модуля
<<?>>Процедура ВыплатаДепонентовПослеУдаления(Элемент)   (Проверка: Толстый клиент (обычное приложение))
8 grayshadow
 
27.09.13
02:10
ДобавитьОбработчик
определись в какой момент эта хрень происходит?
при открытии формы, при смене страницы...?
9 grayshadow
 
27.09.13
02:11
и запихни в соответствующее событие:)
10 vicof
 
27.09.13
02:15
(7) Читаем ошибку 50 раз, думаем, читаем ртфм, наступает просветеление, все счастливы
11 PaulBC
 
27.09.13
04:24
>>  но на форме ее нет
Неправда, плохо искал
12 maxibon
 
27.09.13
04:30
Меню  Форма-Список элементов управления формы
13 craxx
 
27.09.13
05:48
(0) Есть она на форме, на одной из страниц панельки вида операций.
14 WhiteDragon93
 
27.09.13
11:24
Спасибо большое всем, нашел, точнее я оказывается видел эту процедуру, но меня смутило ее название, т.к. в названии была написана другая таблица, а к чему она привязана увидеть не мог :)
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший