Имя: Пароль:
1C
1С v8
Перехватить формирование номера документа
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
овнокод - это состояние души...
типа
    Файл.Изменил                      = РеквизитФормыВЗначение("Объект").ПолучитьТекущегоПользователя();
    Файл.Автор                          = РеквизитФормыВЗначение("Объект").ПолучитьТекущегоПользователя();
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.