gifts2017

Порядок выполнения подписок на события и опасности с ними при обновлении

Опубликовал Денис Аграновский (de0nis) в раздел Программирование - Практика программирования

Коротко по сути: подписки на события для одинаковых источников и действия выполняются в порядке размещения подписок в конфигураторе сверху вниз. Т.е. если для документа Реализация товаров в конфигурации есть две подписки на событие ПриЗаписи, то в начале выполнится та, которая расположена выше. При этом если в типовой конфигурации есть добавленные свои подписки, то при обновлении конфигурации на новый релиз поставщика, может измениться порядок размещения объектов и добавленные подписки могут "съехать" выше типовых. Если в конфигурации есть типовая подписка на это же событие с этим же источником, то может измениться и порядок вызова типовой и добавленной подписки, что может привести к изменению логики работы.

Собственно сабж, обновил доработанную базу Бухгалтерия 3.0, всё проверил, пересмотрел, всё правильно. Порадовался и спать. Добавленные модули и подписки даже не посмотрел, что там может случиться? :)

А случиться, оказывается, может, слетела доработанная нумерация счетов-фактур и реализаций. (Префиксы должны формироваться по дате, что б  была сквозная нумерация за каждый день: 161011-0001, 161011-0002 и тд,)

Начал разбираться, оказалось, что добавленная подписка на событие ПриУстановкеНовогоНомера съехала вверх и оказалась выше типовой подписки ПриУстановкеНовогоНомера, которая формирует префикс по узлу обмена и организации. В итоге в начале запускалась доработанная подписка, а потом типовая добавляла стандартный префикс, получался номер типа ОРИБ-161011, дальше не хватает символов, ошибка не уникального номера и тд.

Вывод: Если в конфигурации есть добавленные подписки на события, то надо после обновления проверять порядок следования подписок и возвращать добавленные подписки на своё место, что б порядок их выполнения не повлиял на алгоритм работы. 

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Павел Алексеенко (qwinter) 12.10.16 09:40
Коротко по сути: подписки на события для одинаковых источников и действия выполняются в порядке размещения подписок в конфигураторе сверху в низ.
Серьезное заблуждение. Подписки могут выполняться в любом порядке.
Ali1976; theshadowco; dgolovanov; +3 1 Ответить 3
2. борян петров (TODD22) 12.10.16 10:50
А случиться, оказывается, может, слетела доработанная нумерация счетов-фактур и реализаций. (Префиксы должны формироваться по дате, что б была сквозная нумерация за каждый день: 161011-0001, 161011-0002 и тд,)

И как налоговая относится к такой нумерации? Бухи какую только ерунду не придумывают :)
3. Иван Петров (dgolovanov) 12.10.16 11:05
(1) qwinter, на практике выполняются сверху вниз, я не встречал ситуации, чтобы было иначе. Но разработчики однозначно говорят, что ориентироваться на этот порядок нельзя и что "Подписки могут выполняться в любом порядке".
4. Денис Аграновский (de0nis) 12.10.16 11:40
(1) qwinter, где-то для 8.2 видел видел информацию, что по порядку, сейчас говорят, что в любом порядке, но на деле ни разу не сталкивался, что б не в порядке в конфигурации вызывались. Видимо не хотят отвечать, в случае изменений в алгоритмах платформы. :)) Описанная ошибка в частности это подтверждает, изменение порядка в конфигураторе, приводит к изменению порядка вызова. (платформа 8.3.8.2054)
Еще момент, что подписки с источником общего типа ДокументОбъект, СправочникОбъект выполняются позже, чем с источником конкретного типа, даже если он составной.
mike1970; +1 Ответить
5. Armando Armando (Armando) 12.10.16 18:53
Приложения должны быть устойчивы к такого рода изменениям. Разрабатывать на так, будто не существует никакой зависимости
6. Денис Аграновский (de0nis) 12.10.16 19:04
(5) Armando, ну для разработок с "нуля" - однозначно, а при доработке типовых конфигураций, не всегда целесообразно ради небольших доработок вносить изменения в типовой функционал, особенно в Бухгалтерии, которая требует регулярного обновления.
7. Роман Осадченко (cleaner_it) 19.10.16 13:19
(1) qwinter, раньше, может, выполнялись в произвольном порядке. Проблему, решенную автором, подтверждаю - месяц назад подобную исправил. Решил точно переносом своей подписки в конец всех подписок.
de0nis; swiss-garant; +2 Ответить
8. Виктор Левченко (lvictor58) 20.10.16 10:24
А не проще ли не нужные подписки просто отключать?. Ну и естественно при обновлении прослеживать "новинки".
И если честно такая нумерация меня тоже удивила: вроде как она должна быть сквозной в пределах года.
9. Денис Аграновский (de0nis) 20.10.16 13:56
(8) lvictor58, А как их отключать без внесения изменений в типовой функционал? Если типовой документ вызывает типовую подписку? И в данной конкретной задаче типовая тоже нужна, только для всех остальных документов кроме реализации и СФ. Если отключить эти два документа из составного типа, то ОЧЕНЬ не удобно будет обновлять..
Про нумерацию точно не скажу, не юрист, но уже не первый раз сталкиваюсь с такой. Очень удобно когда заносятся документы и текущим и задним числом. Что налоговая про это говорит, не знаю, но по моей информации это допустимо, нужно оформить только соответствующий приказ и возможно в учетной политике внести изменения.
10. Ruslan (rus128) 20.10.16 17:33
все хорошо, но немного смущают описки ("сверху в низ" - правильно писать слитно) и опечатки ("получадлся").
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа