Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Событие ПослеЗаписи независимо от ГК (число прочтений - 3634 )
Электроник
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 57
Зарегистрирован: 24. Июля 2009
Событие ПослеЗаписи независимо от ГК
17. Февраля 2011 :: 12:26
Печать  
Здравствуйте. Пишу логирование изменений доков для 1С 7.7. И встала проблема - когда записывать изменения? Идеально было бы в ПослеЗаписи(), но такое событие только для форм. Можно ли его прикрутить и для программной записи/проведения? База SQL. 1C++ v3.2.3.10.
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Событие ПослеЗаписи независимо от ГК
Ответ #1 - 17. Февраля 2011 :: 13:20
Печать  
Программно для программного изменения - никак  Улыбка
Но т.к. у тебя SQL, то можешь повесить тригеры на таблички.
  
Наверх
 
IP записан
 
Электроник
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 57
Зарегистрирован: 24. Июля 2009
Re: Событие ПослеЗаписи независимо от ГК
Ответ #2 - 17. Февраля 2011 :: 13:20
Печать  
Т.е. требуется перехватить программную запись. А идеально - ПослеЗаписи.
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Событие ПослеЗаписи независимо от ГК
Ответ #3 - 17. Февраля 2011 :: 13:22
Печать  
Или как-нибудь исхитриться и задействовать УРБД
  
Наверх
 
IP записан
 
Электроник
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 57
Зарегистрирован: 24. Июля 2009
Re: Событие ПослеЗаписи независимо от ГК
Ответ #4 - 17. Февраля 2011 :: 13:23
Печать  
JohnyDeath писал(а) 17. Февраля 2011 :: 13:20:
Программно для программного изменения - никак  Улыбка
Но т.к. у тебя SQL, то можешь повесить тригеры на таблички.

Совсем-совсем никак?  Печаль
А через триггеры - можно как-то передать в 1С-ку какое-нибудь сообщение из триггера?
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Событие ПослеЗаписи независимо от ГК
Ответ #5 - 17. Февраля 2011 :: 13:27
Печать  
Ну можно попробовать переопределить методы "Записать" классов "Документ", "справочник".. ("как" можно найти на этом форуме) но я бы не советовал.
Про тригеры тебе лучше объяснят гуру SQL.
  
Наверх
 
IP записан
 
Электроник
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 57
Зарегистрирован: 24. Июля 2009
Re: Событие ПослеЗаписи независимо от ГК
Ответ #6 - 17. Февраля 2011 :: 13:33
Печать  
ОЧЕНЬ жаль. Но, может, кто-то уже делал такое и обошел ограничение программного изменения доков?
  
Наверх
 
IP записан
 
zk96
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 320
Местоположение: Киев
Зарегистрирован: 15. Ноября 2009
Пол: Мужской
Re: Событие ПослеЗаписи независимо от ГК
Ответ #7 - 17. Февраля 2011 :: 14:46
Печать  
Я у себя создал классы-наследники от разных видов документов и переопределил метод Записать. В конфигурации где била програмная запись документов переделал на свои классы
То есть:
Счет=создатьОбъект("Документ_Счет");
Счет.НайтиДокумент(Ссылка);
Счет.Записать();
А в классе в методе Записать:
Процедура Записать() Экспорт
...Какие-то действия
БазовыйКласс.Записать();
КонецПроцедуры
Но в своей конфигурации я могу менять все-что хочу.Если у тебя нет такой возможности, то толко тригеры.
  
Наверх
 
IP записан
 
Электроник
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 57
Зарегистрирован: 24. Июля 2009
Re: Событие ПослеЗаписи независимо от ГК
Ответ #8 - 18. Февраля 2011 :: 06:57
Печать  
Я тут вот что сделал. Вроде работает, но что-то смущает.
1С после процедуры ПриЗаписи() начинает режим неявной транзакции: "set implicit_transactions on". Потом после записи (или после проведения) транзакция либо фиксируется "IF @@TRANCOUNT > 0 COMMIT TRAN", либо откатывается "IF @@TRANCOUNT > 0 ROLLBACK TRAN". Я в своей процедурке анализа изменений документа просто выполняю команду set implicit_transactions on, тем самым сдвигая начало скл-ной транзакции на нужное мне место. Т.е. те записи, которые я помещаю в базу, пишутся вместе с системными 1С-ными записями в одной транзакции. Следовательно, в случае неудачной записи (не важно, по каким причинам) мои записи не запишутся в базу. Что и нужно. Осталось только отвязать мой алгоритм от ПриЗаписи().
И вот я думаю, на какие грабли я наступлю? Печаль
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать