вторник, 19 апреля 2011 г.

Как бороться со сбитой автоматической нумерацией в 1С

Как вообще можно сбить автоматическую нумерацию? Достаточно убрать ведущие нули и/или добавить нечисловые символы, как встроенный в 1С алгоритм автоматической нумерации перестанет работать. Чтобы относительно быстро всё поправить (не прибегая к помощи обработок), можно в ручную пробежаться по списку товаров (у меня нумерация сбита именно там, поэтому я буду рассказывать на примере справочника номенклатуры) и «почистить» отбившихся от стада овец. Потом можно поиграться с типом кода, и всё вернется на круги свои.

Изменение типа кода


1. Открываем Справочники -> Номенклатура (двойной клик):
2. Ставим переключатель на числовое значение и сохраняем.
На экране появится ряд сообщений, на которые надо ответить утвердительно. Это первое сообщение о том, что будет произведен анализ необходимости изменений методанных (на этой стадии ваша база не меняется)
Потом появится сообщение о том, что если вы примените введенное изменение, то будет изменена база (без этого нельзя, ведь мы хотим изменить тип кода товара):
И в завершении появится статусное сообщение об успехе этой операции:
3. Давайте откроем 1С в режиме Предприятия и посмотрим, что же мы сделали при помощи этого изменения:
Выбираем в меню Справочники -> Номенклатура и видим, что все коды у товаров числовые без ведущих нулей.
Попробуем добавить новый элемент:
Видим, что код уже начал опять генерироваться автоматически.
4. Для "красоты игры" и по канонам 1С с ведущими нулями можно повторить шаг 2, выбрав строковой тип кода.

Проблемы, которые могут возникнуть

И которые возникли в моем случае :) Все мы успели заметить, что 1С требует от пользователя уникальности кода. Но на самом деле эта крашеная сучка сама за ней не следит. К примеру, у меня были товары, у которых различались коды количеством ведущих нулей. И после преобразования кода в число у них получились одинаковые номера:
И 1С замечает это только при редактировании описания элемента, когда не дает сохранить изменения, оправдываясь тем, что элемент с таким кодом уже существует (неужели?!). Так что для пущей красоты приходится применять обработку, которая заново проставляет уникальные коды для товара.

На будущее, чтобы вообще не сталкивается с этой проблемой

Ставим запрет на редактирование поля ввода кода. Покажу на примере своей проблемы (справочника номенклатуры):
1. Открываем Справочники -> Номенклатура (двойной клик) -> Форма элемента:
2. Выбираем у поля ввода для кода свойства (или два раза кликаем по элементу):
3. Ставим галочку у запрета на редактирование:
Finish. Теперь с восстановленной автонумерацией код при вставке нового товара будет генерироваться автоматически и пользователь не сможет его изменить.

2 комментария:

  1. Всё таки решила обойтись без костылей? :)
    И кстати да, прочитал пост и ужоснулся, программистам 1С черви явно весь мосх скушали =DD

    ОтветитьУдалить
  2. Ох как я не люблю всякий мануалы со скринами интерфейса...
    И спасибо господи, что я не имею дел с 1С))

    ОтветитьУдалить