|
Сбилась нумерация. |
☑ |
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) это проверки на уникальность, но я надеюсь ТС догадался...
|
|