|   |   | 
| 
 | Как изменить номер документа при сохранении автонумерации? | ☑ | ||
|---|---|---|---|---|
| 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" Тогда Источник.дополнительныеСвойства.Вставить("ПринудительноИзменитьНомер",ЛОЖЬ); Источник.УстановитьНовыйНомер(); Источник.записать(); КонецЕсли; КонецПроцедуры но это пздц | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |