Имя: Пароль:
1C
 
Как изменить номер документа при сохранении автонумерации?
,
0 Stim
 
14.12.15
12:15
В связи с некоторыми особенностями работы клиент-банка, нужно изменить номер платежных поручений, заканчивающихся на "000" - на "001".
т.е. документов пп с номерами типа 0000-018000 не должно быть.

У документа указан признак автонумерации и контроля уникальности номера.
Изменяю номер при записи в модуле объекта,ПриУстановкеНовогоНомера() в модуле объекта, в подписке при записи, в подписке ПриУстановкеНовогоНомера

ЭтотОбъект.номер = "12345678900";
и
Источник.номер = "12345678900";

- ничего не помогает, номер инкрементируется стандартным образом.


Как изменить номер в транзакции записи документа, при этом не отключая автонумерацию?
1 aleks_default
 
14.12.15
12:27
ОбменДанными.Загрузка = истина не прокатит?
2 Timon1405
 
14.12.15
12:29
ПриУстановкеНовогоНомера(<СтандартнаяОбработка>, <Префикс>)
1й параметр какбы намекает...
3 Stim
 
14.12.15
17:51
(2) а я там не узнаю, что номер заканчивается на "000", потому что самого номера еще нет
и УстановитьНовыйНомер() я тоже не смогу, вызову бесконечный цикл
4 AntonyFO
 
14.12.15
17:59
В 2 верно сказали, отключить СтандартнуюОбработку и устанавливать номер в ПередЗаписью
5 Stim
 
21.12.15
17:01
ап
6 Stim
 
21.12.15
17:01
какая-то фигня.
уже как только не пробовал
7 hhhh
 
21.12.15
17:08
(6) при записи уже поздно что-то менять. Всё уже записано в базу. Пересиль себя, делай ПередЗаписью()
8 Stim
 
21.12.15
17:13
Процедура ПодпискаНаСобытие3ПриЗаписи(Источник, Отказ) Экспорт
    // Вставить содержимое обработчика.
Номер = Источник.Номер;
    ДлинаНомера =   стрДлина(Номер);
    Если Сред(Номер,ДлинаНомера -2) = "000" Тогда    
        Источник.установитьНовыйНомер();        
    Конецесли;
    
    

КонецПроцедуры


не работает
9 Stim
 
21.12.15
17:14
(7) перед записью номера еще нет. и я не могу его изменить никак, потому что не знаю, какой номер будет присвоен
10 Stim
 
21.12.15
17:15
+ причем, если я пишу

Процедура ПодпискаНаСобытие3ПриЗаписи(Источник, Отказ) Экспорт
  
        Источник.установитьНовыйНомер();            
  
КонецПроцедуры


то номера остаются только четные. а (8) не срабатывает
11 Stim
 
21.12.15
17:16
в подписке при установке нового номера я тоже не могу узнать, какой номер будет иметь документ
12 Масянька
 
21.12.15
17:17
(10) Освобождать нумерация (как-то так) в конфигурации (свойства, по-моему) - истина?
13 rabbidX
 
21.12.15
17:21
После записи документа с номером на 999 генерировать новый документ и сразу помечать на удаление.
14 rabbidX
 
21.12.15
17:23
Кстати, почему не можешь узнать какой-номер? Построй запрос по нужным условиям, возьми последний док, и прикинь какой будет следующий.
15 Stim
 
21.12.15
17:24
(13) мимо
16 Stim
 
21.12.15
17:26
(14) платформа может по-другому отработать номер.
17 Stim
 
21.12.15
17:27
млин, ну почему такая конструкция не работает(((

Процедура ПодпискаНаСобытие1ПриУстановкеНовогоНомера1(Источник, СтандартнаяОбработка, Префикс) Экспорт
    Если Источник.дополнительныеСвойства.Свойство("ПринудительноИзменитьНомер")     Тогда
        СтандартнаяОбработка = ЛОЖЬ;
        Номер = Источник.Номер;
        ДлинаНомера =   стрДлина(Номер);        
        Номер = Сред(Номер,1,ДлинаНомера -1 )+"1";
        Источник.Номер = Номер;        
    КонецЕсли;
    
КонецПроцедуры

Процедура ПодпискаНаСобытие3ПриЗаписи(Источник, Отказ) Экспорт
    Номер = Источник.Номер;
    ДлинаНомера =   стрДлина(Номер);
    Если Сред(Номер,ДлинаНомера -2) = "000" Тогда    
        Источник.дополнительныеСвойства.Вставить("ПринудительноИзменитьНомер",ЛОЖЬ);
        Источник.установитьНовыйНомер();    
    Конецесли;
КонецПроцедуры


и отладчик заходит во все модули, как положено..
18 Stim
 
21.12.15
17:30
Отладчег говорит, что в ПодпискаНаСобытие1ПриУстановкеНовогоНомера1
Источник.Номер = 00001001

а док все равно записывается с номером 00001000
19 Гёдза
 
21.12.15
17:42
А гле записать в ПриЗаписи?
20 hhhh
 
21.12.15
17:45
(18) еще раз: при записи документ УЖЕ записан в базу, второй раз он не будет записан, тхоть головой об стенку бейся. Смотри перед записью, там уже должен быть номер.
21 Stim
 
21.12.15
17:47
(20) нету там!
22 Гёдза
 
21.12.15
17:49
без записи нет номера. Поэтому двойной записи не избежать
23 Stim
 
21.12.15
17:51
(22) да, а вот как её сделать.. желательно в подписке
24 Cyberhawk
 
21.12.15
17:52
(23) В шары долбишься? Подписка у тебя ПриЗаписи в (17), а ключевое замечание - в (19)
25 Гёдза
 
21.12.15
17:52
Записать(), только нужно подумать чтоб не зациклилось
26 Stim
 
21.12.15
17:57
(25)  оно в любом случае зациклится, если выполнять записать() в подписке на запись
27 Stim
 
21.12.15
17:58
+ зацикливается:

Процедура ПодпискаНаСобытие1ПриУстановкеНовогоНомера1(Источник, СтандартнаяОбработка, Префикс) Экспорт
    Если Источник.дополнительныеСвойства.Свойство("ПринудительноИзменитьНомер")     Тогда
        СтандартнаяОбработка = ЛОЖЬ;
        Номер = Источник.Номер;
        ДлинаНомера =   стрДлина(Номер);        
        Номер = Сред(Номер,1,ДлинаНомера -1 )+"1";
        Источник.Номер = Номер;        
    КонецЕсли;
КонецПроцедуры

Процедура ПодпискаНаСобытие3ПриЗаписи(Источник, Отказ) Экспорт
    Номер = Источник.Номер;
    ДлинаНомера =   стрДлина(Номер);
    Если Сред(Номер,ДлинаНомера -2) = "000" Тогда    
Источник.дополнительныеСвойства.Вставить("ПринудительноИзменитьНомер",ЛОЖЬ);
    Источник.записать();    
    КонецЕсли;
КонецПроцедуры
28 Гёдза
 
21.12.15
18:00
(26) ты программист или кто???
29 Stim
 
21.12.15
18:01
ура. вроде такое работает:

Процедура ПодпискаНаСобытие1ПриУстановкеНовогоНомера1(Источник, СтандартнаяОбработка, Префикс) Экспорт
    Если Источник.дополнительныеСвойства.Свойство("ПринудительноИзменитьНомер")     Тогда
        СтандартнаяОбработка = ЛОЖЬ;
        Номер = Источник.Номер;
        ДлинаНомера =   стрДлина(Номер);        
        Номер = Сред(Номер,1,ДлинаНомера -1 )+"1";
        Источник.Номер = Номер;        
    КонецЕсли;
КонецПроцедуры

Процедура ПодпискаНаСобытие3ПриЗаписи(Источник, Отказ) Экспорт
    Номер = Источник.Номер;
    ДлинаНомера =   стрДлина(Номер);
    Если Сред(Номер,ДлинаНомера -2) = "000" Тогда    
        Источник.дополнительныеСвойства.Вставить("ПринудительноИзменитьНомер",ЛОЖЬ);
        Источник.УстановитьНовыйНомер();
        Источник.записать();    
    КонецЕсли;
КонецПроцедуры


но это пздц
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой