Имя: Пароль:
1C
1С v8
Процедура ПередЗаписью() Как обойти?
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) Спасибо!