|   |   | 
| 
 | Нумерация Платежных поручений УПП 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") - это потенциально конфликтные префиксы.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |