Имя: Пароль:
1C
1С v8
исправление некорректной нумерации
0 PiotrLoginov
 
26.04.13
00:10
Здравствуйте всем. Описываю проблемку, вынудившую меня вновь просить помощи у форумчан. В базе некоторые из создаваемых сторонним ПО документов имеют некорректные номера - префикс не такой, как обычно, и нумерация другой длины, не продолжающая сложившуюся нумерацию. Вот наваял я обработку, в начале которой создается выборка "неправильных" документов. Теперь надо найти номер последнего "правильного" документа и поменять номера в некорректных доках, продолжив "правильную" нумерацию.

Пусть обычный префикс АБВГ. И последние созданные документы имеют номера

...
АБВГ-000566
АБВГ-000567
АБВГ-000566
АБВГ-000569
АА002400030
АБВГ-000568
АА002400031
АА002400032

Повторюсь, готова выборка со ссылками на АА-шные доки. Как теперь найти "правильный" документ с самым большим номером (в данном случае АБВГ-000569)? Неужели брать все 500 с лишним номеров этого года, отрезать от каждого префикс и потом выбирать самый большой? Просто наудачу задействовать МАКСИМУМ кажется опасным - запросто в наибольшие может попасть АА002400032 .

Буду очень признателен поделившемуся обычными приемами, используемыми в таких случаях.
1 Jonny_Khomich
 
26.04.13
06:30
Тот кто сделал сторонний софт, пусть исправляет.
А вообще выбрать максимум я делал так: выбирал все записи за период, сортировал по убыванию и брал первый - это будет максимум.
А новый номер можно присвоить встроенной процедурой ЭтотОбъект.УстановитьНовыйНомер(ПараметрыСеанса.ПрефиксУзлаРаспределеннойИнформационнойБазы);
2 Godofsin
 
26.04.13
06:34
(0) а чо бы не воспользоваться обработкой с диска ИТС?
3 Rie
 
26.04.13
06:38
(0) Создать новый документ, УстановитьНовыйНомер("АБВГ-") - и посмотреть, что получится?
4 PiotrLoginov
 
26.04.13
09:58
(1) > Выбирал все записи, сортировал...

Ближе к лету это будут уже тысячи штук. И прежде чем сортировать нужно префикс отрезать, проверять, что номер "правильный" и "достоин" участвовать в сортировке. По-хорошему надо каждый из тысяч номеров обрабатывать и проверять. Неужели нет другого пути?

(2) Умоляю, подскажите, как называется. Чтобы отбрасывала последние АА-шные и (если будут) другие (например, полученные в результате обмена с префиксом другой базы и нумерацией той базы), а затем среди "своих" находила самый большой. Если есть такая обработка, мне большего счастья и не надо было бы.

(3) Пардон, не понял... Зачем создавать новый номер? Мне несколько уже имеющихся перенумеровать надо.
5 Godofsin
 
26.04.13
10:00
(4) УниверсальныйПодорИобработкаСправочниковИДокументов.епф
Там есть обработка перенумерации, выставляешь нач. номер и префикс и она все делает в ажуре
6 PiotrLoginov
 
26.04.13
10:15
(5) Т.е. пользователь должен сам находить каждый раз, с какого документа начинать и с какого номера? Не. Спасибо Вам конечно за участие, но мне бы организовать полностью автоматический процесс. И потом разве такие обработки не перенумеровывают ВСЕ документы за указанный период - и "правильные", и "неправильные"? Этак в базе "правильные" доки поменяют свои номера, что будет уже совсем нехорошо.
7 PiotrLoginov
 
26.04.13
12:13
(1) (3) Попробовал использовать УстановитьНовыйНомер для "неправильных" документов. Если писать УстановитьНовыйНомер("АБВГ"), создает АБВГ-АБВГ01, а вот если не указывать префикс, получается то, что надо. Еще раз благодарю за подсказку прекрасного готового решения.
8 Rie
 
26.04.13
13:07
(4) Ты же хотел узнать, с какого номера начинать? Создай новый номер - и с него начинай (сохранять документ, естественно, не надо).
9 PiotrLoginov
 
26.04.13
13:15
(8) Да не, все норм, при перенумерации уже существующих документов метод сам находит, с какого номера надо продолжить. В лучшем виде. Спасибо.