|
Перехватить формирование номера документа
b_ru, Garykom, Мультук, mikecool, e053nk, Franchiser, lexushka, Timon1405, Вадим33, p-soft, kubik_live, maxab72, palsergeich, okmail, Gun47, boozin, formista2000, Crusher, Builder, John D, программистище, Климов Сергей, nemo1966, bmitkin, PR, Волшебник, СвинТуз, Kongo2019, Звездец, dedmoroz777, Доминошник, lucbak, Буковка, Hawk_1c, Prog_man, nick86, Amra, 2S, МаксимНижегородец, U4Me2, ivanov-i-i, denk, Александр111, osa1C, Ногаминебить, lEvGl, orakool, PuhUfa, RVN, yurikmellon2, Джордж1, furchia, butterbean, AlexKimp
| ☑ |
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
|
овнокод - это состояние души...
типа
Файл.Изменил = РеквизитФормыВЗначение("Объект").ПолучитьТекущегоПользователя();
Файл.Автор = РеквизитФормыВЗначение("Объект").ПолучитьТекущегоПользователя();
|
|