![]() |
|
Сбилась нумерация. | ☑ | ||
---|---|---|---|---|
0
ErrorEd88
15.12.11
✎
15:51
|
В базе клиент стал вручную править номера документов, сбилась нумерация. Типовыми средствами исправить не удалось. В обработчик при записи добавил:
Если ЭтоНовый() Тогда Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ |ПлатежноеПоручение.Номер Как Номер |ИЗ |Документ.ПлатежноеПоручение КАК ПлатежноеПоручение"; Выборка = Запрос.Выполнить().Выбрать(); НомерМакс = 0; Пока Выборка.Следующий() Цикл Если НомерМакс < Число(Выборка.Номер) Тогда НомерМакс = Число(Выборка.Номер); Если СтрДлина(НомерМакс) = 3 Тогда НомерДок ="00000000" + Строка(Число(Число(Выборка.Номер) + 1)); ИначеЕсли СтрДлина(НомерМакс) = 4 Тогда НомерДок ="0000000" + Строка(Число(Число(Выборка.Номер) + 1)); ИначеЕсли СтрДлина(НомерМакс) = 5 Тогда НомерДок ="000000" + Строка(Число(Число(Выборка.Номер) + 1)); ИначеЕсли СтрДлина(НомерМакс) = 6 Тогда НомерДок ="00000" + Строка(Число(Число(Выборка.Номер) + 1)); КонецЕсли; КонецЕсли; КонецЦикла; ЭтотОбъект.Номер = НомерДок; КонецЕсли; Теперь все работает, как именно мне необходимо. Префиксов и СтрДлина(Число(ЭтотОбъект.Номер))<3 не будет. Но есть подозрения, что все можно было сделать проще (подозрения на г..код). Кто как, обычно это обходит (сбитую нумерацию). |
|||
1
Irbis
15.12.11
✎
15:53
|
Зря вы так, проще было один раз перенумеровать. И заставить виновника это делать вручную во внеурочное время.
|
|||
2
Lama12
15.12.11
✎
15:55
|
(1) +100
Особенно про виновника. |
|||
3
rutony
15.12.11
✎
16:01
|
(0) Ох ты ж ежик...
Пишу не залазя в конфигуратор... Выборка = Документы.ПлатежноеПоручение.Выбрать(); Пока Выборка.Следующий() Цикл Объект = Выборка.ПолучитьОбъект(); Объект.Номер = Формат(Выборка.Номер, "ЧЦ=11; ЧВН=; ЧГ="); Объект.Записать(); КонецЦикла; В итоге все перенуменровано, и не пишу никаких велосипедов... |
|||
4
ErrorEd88
15.12.11
✎
16:07
|
(3) Теперь номер - 07.
|
|||
5
ErrorEd88
15.12.11
✎
16:07
|
(4) и дальше - 08, 09 и т.д.
|
|||
6
sda553
15.12.11
✎
16:09
|
(3) У меня уже скоро полгода как конфигуратора вообще на компе нет, но я еще помню семерочное
Объект.Номер = Прав("000000000000"+Выборка.Номер,12); А вообще перенумеровать все и вызвать после этого ОбновитьНумерациюОбъектов() |
|||
7
ErrorEd88
15.12.11
✎
16:10
|
(3), (6) Ветераны)
|
|||
8
rutony
15.12.11
✎
16:10
|
(5)(6) читаем справку ппц...
ЧЦ=11 - длинна кода ЧГ= - нет группировки ЧВН= - вывод лидирующих нулей В итоге имеем: Было: 123 стало 00000000123 Было: 0101 стало 00000000101 |
|||
9
rutony
15.12.11
✎
16:12
|
(4) Едиственно что нет в (3) это проверки на уникальность, но я надеюсь ТС догадался...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |