|   |   | 
| 
 | Процедура ПередЗаписью() Как обойти? | ☑ | ||
|---|---|---|---|---|
| 0
    
        yanikolay 05.01.12✎ 16:14 | 
        Конфигурация БП 2.0. Справочник "Организации". Необходимо стандартную процедуру ПередЗаписью() модуля объекта, через подписку на события, заменить на собственную. Кроме как "ОбменДанными.Загрузка = Истина" в подписке на события "ОбработкаПроверкиЗаполнения" не придумал. Но как-то не красиво. Есть ли другие решения?     | |||
| 1
    
        Guk 05.01.12✎ 16:14 | 
        а почему не красиво?...     | |||
| 2
    
        Amiralnar 05.01.12✎ 16:17 | 
        Есть простое и красивое решение - переименовать стандартную процедуру.     | |||
| 3
    
        palpetrovich 05.01.12✎ 16:19 | 
        (2) с Новым Годом! и чЁ?     | |||
| 4
    
        sanja26 05.01.12✎ 16:19 | 
        а в чем проблема? делай подписку на ПередЗаписью()... или этой процедуры нет в модуле объекта?     | |||
| 5
    
        vmv 05.01.12✎ 16:22 | 
        1. Создать свой Подписчик в дереве метаданных "подписки на события", например Мае_ОрганизациПередЗаписью
  2. Создать общий серверный модуль Мае_Подписки 3. Создать в этом модуле метод Мае_ОрганизациПередЗаписью(Источник, Отказ) 3. В указанном методе переопределить все свойства как вам нужно перед записью, не трогая и не обращая внимание на подписчики модуля объекта и типовой подписчик(если он был) 4. Связать свой метод со своим подписчиком 5. Без проблем обновляться с типовых обновлений 6. Поатить мне 500К раз в квартал. все | |||
| 6
    
        sanja26 05.01.12✎ 16:24 | 
        (5)все типовые проверки будут производиться все равно перед записью     | |||
| 7
    
        vmv 05.01.12✎ 16:28 | 
        (6) отлично, так и должно быть.
  если же нужно записать объект без проверок, то при думать о подписчике в этом случае - это думать через попу. Для этого есть обработка в две три строки кода Мае_Подписки.Мае_ЗаполнитьСвойстваИПлеватьНаПроверки(Объект); Объект.ОбменДанными.Загрузка = Истина; Объект.Записать(); отделяй зерна от плевел) | |||
| 8
    
        yanikolay 05.01.12✎ 16:41 | 
        (7) Необходимо стандартную процедуру ПередЗаписью() модуля объекта, через подписку на события, заменить на собственную, т.е. стандартная процедура ПередЗаписью() модуля объекта не должна исполнятся. Это связано с локализацией. ИНН, КПП, ОГРН у нас другие.     | |||
| 9
    
        vmv 05.01.12✎ 16:47 | 
        (8) если вам нужно переопределить ИНН, КПП, ОГРН и другие свойства, то метод в (5) самое то, если предпочитаете потом секс с обновления изобретайте свой, разве ж я против - секс это чудесно)     | |||
| 10
    
        vmv 05.01.12✎ 16:57 | 
        (8) если уж так претит стандарный обработчик по вначале обработчика метода объекта ПередЗаписью() пишешь
  Возвврат; и метод в (5) не забывать тогда две вещи, еще может быть обраточник в метаданных, том тоже находишь метод и Возврат; при обновлениях Возврат; нужно будет проставить опять | |||
| 11
    
        yanikolay 05.01.12✎ 17:14 | 
        (10) Спасибо, но это понятно. Я спросил, есть ли способ обойти исполнение процедуры ПередЗаписью(), кроме как в (0). Ваше предложение понятно, но оно не катит, т.к. сначала исполняется процедура ПередЗаписью() в модуле объекта, а потом событие подписки. Проверка ИНН уже не прходит на этапе процедуры ПередЗаписью() модуля объекта. Не хотелось бы изменять типовую конфигураци по таким мелочам.     | |||
| 12
    
        vmv 05.01.12✎ 17:34 | 
        (11) если обработчик ПередЗаписью() существует, то игнорировать его исполнение можно только тремя способами
  1. Объект.ОбменДанными.Загрузка = Истина; 2. "Глушить", т.е. Вовзрат в начале метода 3. ТАК ДЕЛАТЬ НЕЗАКОННО. декомпилировать платформу, запрограммировать свой механизм начала выполнения этого метода и скомпилить новый релиз платформы. все) | |||
| 13
    
        yanikolay 05.01.12✎ 18:22 | 
        (12) Спасибо!     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |