Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   Подписка на событие. На какое событие прикрутить? (http://forums.kuban.ru/f1040/podpiska_na_sobytie_na_kakoe_sobytie_prikrutit--3228010.html)

Сли то 26.10.2012 13:31

Подписка на событие. На какое событие прикрутить?
 
Бухгалтерия предприятия КОРП, редакция 2.0

Есть документ "Регламентная операция" в свойстве "Проведение" установлено значение "Запретить". Т.е. документ не проводится. Но при нажатии кнопки ОК вызывается процедура, которая делает движения. Так вот мне хочется прикрутить подписку на событие, чтоб после создания движений (псевдо проведения) вызывалась некая обработка.
Думал в сторону события "ПриЗаписи". Но косяк весь в том, что по нажатию кнопки ОК этот документ записывается 4 раза, соответственно и моя подписка срабатывает 4 раза, что не есть гуд.

Собственно вопрос: Как и куда мне прилепить эту подписку? Совсем не портя типовые модули!!!

roma n 26.10.2012 13:42

Событие определяют инициируемые действия.
Что сделать хочешь?
Если модифицируешь данные самого объекта - в ПередЗаписью.
ЗЫ но, в любом случае, обработать один раз несмотря на повторную запись довольно просто...

Сли то 26.10.2012 13:53

Обработка в подписки делает дополнительные движения по регистрам, сам документ не модифицирует.
Перед записью не канает, т.к. неизвестно еще нормально ли прошло "псевдо проведение". Вот при записи - нормально в принципе. Но нужно чтоб вызвалась при ПОСЛЕДНЕЙ записи. т.к. только после нее можно быть уверенным, что документ "провелся" успешно.

roma n 26.10.2012 13:56

2-Сли то > вызвалась при ПОСЛЕДНЕЙ записи - это гораздо сложнеее :)
дополнительные движения делаются по тем же регистрам, в которых и так движения уже есть?

Сли то 26.10.2012 14:01

Да, в том числе и по ним. НО, может быть ситуация (правда маловероятная), когда в эти регистры типовой механизм ничего не запишет, а вот моей обработке необходимо сделать движения.

Вообще это операция списание расходов будущих периодов, если это поможет

roma n 26.10.2012 14:19

Запись в этом виде операции всегда вызывается 4 раза?

Сли то 26.10.2012 14:36

Да, всегда. Хоть это и не совсем красиво, но можно и в эту сторону подумать.

Сли то 26.10.2012 14:58

Вообще документ "чудесный"

Записать();

ВыявлениеУчетныхОшибок(СтруктураШапкиДокумента, Отказ, Заголовок);
Если Отказ Тогда
Возврат Истина;
КонецЕсли;

Если ЭтоНовый() Тогда
Записать();
КонецЕсли;

Интересно в каких случаях может отработать этот кусок?

Если ЭтоНовый() Тогда
Записать();
КонецЕсли;

roma n 26.10.2012 15:02

6-Сли то > совсем не красиво, но на ДополнительныеСвойства можно построить счетчик итераций который увеличивать/анализировать в своей подписке.

angro 26.10.2012 15:15

делать свою проводку в ней счётчик.
если конечно он всегда 4 раза вызывается
потом её искать

Сли то 26.10.2012 15:22

Вообще не понимаю я такие документы, которые не проводятся, но делают движения и в качестве регистратора себя указывают. В чем логика?

По поводу счетчика - блин, совсем не красиво. При обновлении конфы вдруг 1Сники "оптимизируют" этот говнокод и будет он вызываться не 4, а 3 раза. И усе, приехали.

angro 26.10.2012 15:25

может там на 4 раз какие-то проводки добавляются? смотреть если они есть значит можно своё делать

roma n 26.10.2012 15:28

10-Сли то > а есть причины, по которым следует делать это при последней, а не при первой записи?

roma n 26.10.2012 15:45

кроме записи документа производится
- запись набора в регистр бухгалтерии (всегда)
- запись в РС (если кол строк расчета >0)
- запись в регистры ИП/УСН (в случае необходимости)
===
Может имеет смысл перехватить запись/передзаписью регистра бухгалтерии?

EarlyBird 28.10.2012 02:17

м-да...
вот уж воистину говнокод

angro 28.10.2012 09:06

(14) а что не говнокод? тут смотришь на своё годовой давности и иногда думаешь как оно вобще работало.
а если франч так вобще в соответствии с известной формулой 20% кода приносит 80% прибыли. так стоит ли заморачиваться на мелочах?


Текущее время: 06:02. Часовой пояс GMT +3.