Имя: Пароль:
1C
1С v8
Нумерация Платежных поручений УПП 1.2
0 Droning1C
 
20.02.19
10:19
Ситуация следующая- в базе за текущий год накопилось 600 платежек. Последний номер КТ000000600. Дальнейшую нумерацию хотелось бы продолжить, исходя из этого. Тоесть следующий номер должен сформироваться 601. НО при обмене с клиент-банком залились счета с номерами КТ000008266 например. Платформа нумерует новые документы соответственно совсем не так, как надо. Как исправлять такую ситуацию, не исправляя ошибочные номера? Направьте на путь истинный плз.
1 Droning1C
 
20.02.19
10:27
Тоесть мне нужно получить запросом последний созданный документ, вытянуть его номер, дальше обработать его, прибавив 1 и запписать в документ?
2 catena
 
20.02.19
10:27
(0)Не исправляя ошибочные - это только программировать.
3 Droning1C
 
20.02.19
10:37
ВЫБРАТЬ ПЕРВЫЕ 1
    ПлатежноеПоручениеИсходящее.Номер КАК Номер
ИЗ
    Документ.ПлатежноеПоручениеИсходящее КАК ПлатежноеПоручениеИсходящее

УПОРЯДОЧИТЬ ПО
    ПлатежноеПоручениеИсходящее.Дата УБЫВ
4 Droning1C
 
20.02.19
10:38
я получаю номер. например КТ000000600. Как грамотно прибавить 1 к номеру, учитывая, что номер типа строка
5 catena
 
20.02.19
10:52
(4)Отрезать префикс, преобразовать в число, увеличить, форматнуть в номер с префиксом.
6 Droning1C
 
20.02.19
11:00
(5) Процедура ПриЗаписи(Отказ)
    
    Если ЭтоНовый() Тогда        
        Запрос = Новый Запрос;
        Запрос.Текст =
        "ВЫБРАТЬ ПЕРВЫЕ 1
        |    ПлатежноеПоручениеИсходящее.Номер КАК Номер
        |ИЗ
        |    Документ.ПлатежноеПоручениеИсходящее КАК ПлатежноеПоручениеИсходящее
        |
        |УПОРЯДОЧИТЬ ПО
        |    ПлатежноеПоручениеИсходящее.Дата УБЫВ";
        
        
        Результат = Запрос.Выполнить();
        
        ВыборкаДетальныеЗаписи = Результат.Выбрать();
        
        Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
            Номер = ВыборкаДетальныеЗаписи.Номер;
        КонецЦикла;
        Если  Организация.Префикс = "КТ" Тогда
            Строка1 =Строка(Число(Прав(Номер,9)) + 1);
            ДлиннаСтроки1 = СтрДлина(Строка1);
            Разница = 9 - ДлиннаСтроки1;
            Для р = 1 По Разница Цикл
                Строка1 = "0" + Строка1;
            КонецЦикла;
            Строка1 = Организация.Префикс + Строка1;
            
            Номер = Строка1;
        КонецЕсли;
    КонецЕсли;
        
КонецПроцедуры






а есали так? Учитывая, что мне нужно это делать только по префиксу КТ
7 catena
 
20.02.19
11:18
(6)Строка(Число( будет работать до 999 номера. А потом сюприз.
8 Droning1C
 
20.02.19
11:34
(7) а почему? вместо 1000 получу 1?
9 DrWatson
 
20.02.19
11:43
(8) Вместо 1000 получишь 1 000. Надо использовать Формат().
10 catena
 
20.02.19
11:45
(8)Ну открой таблу и посмотри на Строка(Число(1000))
11 Droning1C
 
05.03.19
13:12
(9) вот и настал тот час, когда перевалило за 1000))) Ввиду отсутствия времени в тот раз оставил как было. А куда цеплять Формат()?
12 Droning1C
 
05.03.19
13:13
(9) И как конкретно им пользваться в данном случае?
13 Droning1C
 
05.03.19
13:15
я так понимаю в конструкторе форматной строки группировку в 0 поставить?
14 catena
 
05.03.19
13:19
(13)Там ведь, в конструкторе, даже увидеть можно результат всех галочек.
15 Александр Б
 
05.03.19
13:38
(0) плохой алгоритм решения проблемы.
Когда твоя нумерация дойдет до этих "ошибочных" с номером "КТ000008266" (например), у тебя перестанут записываться документы из-за дублей номеров и придётся заново всё переписывать.
16 Флориан
 
05.03.19
14:16
"НО при обмене с клиент-банком залились счета с номерами КТ000008266 например." - правьте обработку клиент-банк, что бы загруженные шли с другим префиксом
17 Serg_1960
 
05.03.19
14:39
Угу. Тем более что вместо русских "К" и "Т" в префиксе всегда можно использовать другой префикс с их "английскими аналогами".

А как по мне, так договорись с юзверями, перенумеруй счета с "неправильными" номерами и не парься.
18 Serg_1960
 
05.03.19
14:46
*(17) Тьфу :) Не "перенумеруй", а "перепрефиксуй" (если так можно выразиться) - предлагаю изменить префикс номерам типа "КТ000008266" - они попадут в другое пространство автонумерации и уже не будут мешать ТС продолжать вести нумерацию с 601 и далее.
19 dmpl
 
05.03.19
14:49
(17) А еще 0 можно поменять на О или O :)
20 Serg_1960
 
05.03.19
15:56
(19) Можно... но не нужно. Автонумерацию заключит на префиксах, которые являются подмножеством другого префикса. Префиксы типа "К", "КТ", "КТО" (вместо "КТ0") - это потенциально конфликтные префиксы.