Персональная страница Федора Езеева
Главная
Download
Ссылки
MS SQL
Обмен данными
Новости
Статьи
О себе
Крупные разделы...
Коллективная разработка
1С++, OOP, XP
FuncTest
FAQ
Структура 1cv7.md
Дальше Назад Содержание

Вопросы, связанные с нумерацией документов и справочников.

Q. Нумерация документов (справочника) дошла до Пр-99, следующий номер получается Пр-10 (вместо Пр-100), и дальше не нумеруется.
A. Создай руками документ с номером Пр-100 и нумерация пойдет дальше. Если не помогает - обработкой ко всем номерам добавь нули перед номером (Пр-099).
Чтобы изначально предотвратить эту ситуацию - не убивай лидирующие нули в номерах документов. С самого начала их обычно с запасом.

Q1. Сначала документы нумеровались с префиксом. Потом префикс надоел, решили его убрать. Однако 1С упорно продолжает нумеровать документы со старым префиксом. Что делать?
Q2. Пытаемся программно присвоить документу номер с одним префиксом, а присваивается с другим.
Q3. Сбилась нумерация документов (появилась дырка), как ее теперь заполнить?
A. Кто виноват? Сперва небольшое теоретическое отступление на тему "Как 1С нумерует объекты."
Так вот: среди документов с первыми символами, совпадающими с префиксом, 1С ищет документ с максимальным номером, затем в конце номера ищет числовую часть, затем к найденному числу прибавляет единицу, образованную числовую часть объединяет с текстовой, и сформированный таким образом номер присваивается новому объекту.
На примере: Есть документы с номерами А-001, А-002, АБ-01 и 00001.
Если мы хотим присвоить номер следующему документу с префиксом "А-", то все в порядке: ищутся все документы с таким префиксом, (номера А-001 и А-002), выбирается из них наибольший (А-002), берется числовая часть (002), прибавляется единица (003), объединяется с текстом (А-003) - номер готов.
Другой пример: Присваиваем номер с префиксом "А". Так вот, отличие от предыдущего пункта в том, что в первичную выборку попадет еще и номер АБ-01. И что самое для нас плохое - он-то и будет наибольшим. Просто потому, что символ "Б" в таблице символов идет после символа "-". В результате, номер получится АБ-02.
Теперь уже должно быть ясно, что произойдет, когда мы захотим сформировать номер без префикса. "Без префикса" - то же самое, что и с пустым префиксом "". В выборку номеров попадут все номера. И поскольку символы, обозначающие числа, стоят в таблице раньше символов-букв, то самым большим окажется номер с буквой в начале, то есть с каким-то префиксом.
Что делать? Либо плюнуть, и нумеровать, как нумеруется. Либо перенумеровать все неправильно занумерованные документы. В свое время я решил задачу нумерации без префиксов следующим образом: была написана обработка, которая всем документам с префиксами добавляла первым символом "!". Тонкость здесь в том, что этот символ идет перед символами-цифрами, чем и достигалось, с одной стороны преемственность номеров (важно не убить номера у старых документов), а с другой стороны гладкое использование механизма автонумерации от 1С.

Дальше Назад Содержание
Rambler's Top100 1C:TOP-100

© 1998-2004 Fedor Ezeev.

Last updated: 2005-09-05