|
Перехватить формирование номера документа | ☑ | ||
---|---|---|---|---|
0
formista2000
08.11.24
✎
13:20
|
Привет!
Сабж! БП 3.0 КОРП. ПриЗаписи() в модуле объекта префикс уже есть. Перед этим отрабатывает процедура ПрефиксацияОбъектовБПСобытия.УстановитьПрефиксИнформационнойБазыОрганизацииПодразделения() с принудительным кодом Префикс = "";. Потом по F11 прыгает из этой процедуры в ПриЗаписи, а там номер уже сформирован с префиксом. Куда копать? Или как получить последний номер без префикса, чтобы установить его принудительно? Спасибо! |
|||
1
maxab72
08.11.24
✎
13:21
|
Подписка на событие
|
|||
2
Волшебник
08.11.24
✎
13:24
|
в модуле объекта
Процедура ПриУстановкеНовогоНомера(СтандартнаяОбработка, Префикс) Префикс = Организация.Префикс; КонецПроцедуры |
|||
3
formista2000
08.11.24
✎
13:40
|
(2) Процедуры нет.
|
|||
4
Волшебник
08.11.24
✎
13:43
|
(3) Создайте
|
|||
5
formista2000
08.11.24
✎
13:45
|
В ПрефиксацияОбъектовБПСобытия.УстановитьПрефиксИнформационнойБазыОрганизацииПодразделения() написал СтандартнаяОбработка = Ложь, так номер вообще пустой! Соответственно, у следующего документа картина та же и он не записывается.
|
|||
6
Мультук
гуру
08.11.24
✎
13:48
|
(0)
1) Ставим точку останова в УстановитьПрефиксИнформационнойБазыОрганизацииПодразделения 2) Включаем Отладка -> Замер производительности 3) Ставим точку останова в "ПередЗаписью" документа 4) Жмем продолжить 5) В точке остановка "ПередЗаписью" выключаем Отладка -> Замер производительности 6) Смотрим. Думаем (5) Ужас какой. |
|||
7
formista2000
08.11.24
✎
14:02
|
(4) В последующих процедурах префикс устанавливается на пустой, но всё равно при записи документа появляется. ((
|
|||
8
Garykom
гуру
08.11.24
✎
14:08
|
Чтобы жизнь была полной сказкой надо сделать план обмена, при записи регать туда с пустым префиксом
Затем сделать регламентное которое по плану обмена обрабатывает в фоновом и добавляет префиксы в номера :) |
|||
9
Timon1405
08.11.24
✎
15:40
|
https://its.1c.ru/db/v8std/content/465/hdoc
Запрещается в данном обработчике изменять содержимое записываемого объекта, поскольку на момент выполнения обработчика, объект уже записан в БД. |
|||
10
formista2000
08.11.24
✎
15:47
|
Короче, дело так: когда-то был создан документ с префиксом, и далее платформа сама автоматом создавала документы с префиксом, если их создавал пользователь. А для формирования номера документа без префикса была написана функция со следующим запросом:
Запрос.Текст = "ВЫБРАТЬ | МАКСИМУМ(РеализацияТоваровУслуг.Номер) КАК Номер |ИЗ | Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг |ГДЕ | РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНач И &ДатаОкон | И РеализацияТоваровУслуг.Организация = &Организация | И НЕ РеализацияТоваровУслуг.Номер ПОДОБНО ""%П%"""; ...Сказать что я охренел - это ОЧЕНЬ мягко говоря. Мало того, так в зависимости от префикса в данном случае обрабатывалось проведение документа, а именно формирование проводок по НДС. Я хренею, дорогая редакция! 🤦 |
|||
11
Волшебник
08.11.24
✎
15:48
|
(10) Найти виновного и наказать
|
|||
12
formista2000
08.11.24
✎
15:51
|
(11) Это следы большого московского франча. 🤦
|
|||
13
Волшебник
08.11.24
✎
15:53
|
(12) Вот только не надо сваливать вину на внешние обстоятельства. Кто у вас в компании проводит код-ревью программного кода от подрядчиков?
Как же вы это допустили?! |
|||
14
formista2000
08.11.24
✎
15:56
|
(13) ХЗ, это наследство, меня тогда ещё тут не было и никто уже не ответит на этот вопрос. Работу сделали, видимо, "по-бырому", МарьВанна довольна, подписала ЛУРВ и всё. Думаю, так было.
|
|||
15
mikecool
08.11.24
✎
20:23
|
овнокод - это состояние души...
типа Файл.Изменил = РеквизитФормыВЗначение("Объект").ПолучитьТекущегоПользователя(); Файл.Автор = РеквизитФормыВЗначение("Объект").ПолучитьТекущегоПользователя(); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |