Почему артикул номенклатуры в 1С:Управление торговлей автоматически нумеруется после перехода из старой базы?

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Торговля и дистрибуция
← К списку

При переходе на новую версию конфигурации 1С, например, с более старой 1С:Торговля и Склад 7.7 или Управление торговлей 10.3 на 1С:Управление торговлей 11 (УТ 11.4/11.5), пользователи часто сталкиваются с вопросами по поведению системы. Один из таких вопросов касается автоматического заполнения артикулов номенклатуры. Давайте вместе разберемся, почему это происходит и что с этим делать.

Начнем с того, что автоматическая нумерация артикулов в типовом функционале конфигурации 1С:Управление торговлей отсутствует. Это ключевой момент, который нам предстоит выяснить. Если вы наблюдаете такое поведение, значит, в вашей системе присутствует некий механизм, который его реализует.

Различия между Артикулом и Кодом номенклатуры

Прежде всего, давайте четко разграничим два важных понятия, которые часто путают: Артикул и Код номенклатуры.

  1. Код номенклатуры:
    • Это внутренний системный идентификатор элемента справочника Номенклатура.
    • Как правило, Код присваивается автоматически при создании новой позиции.
    • Может включать в себя префиксы базы данных (например, "УТ-00001") и обеспечивает уникальность в рамках справочника.
    • В типовом функционале 1С:УТ автонумерация Кода присутствует.
  2. Артикул номенклатуры:
    • Это внешний идентификатор товара.
    • Предназначен для ручного заполнения или импорта данных.
    • Может использоваться как код поставщика, внутренний уникальный номер компании, артикул производителя и т.д.
    • В типовом функционале 1С:УТ автоматическая нумерация или присвоение Артикула номенклатуре отсутствует. Поле Артикул изначально предназначено для ручного ввода.

Важно: Не путайте эти два поля. Если вы сталкиваетесь с автоматическим заполнением, речь, скорее всего, идет именно об Артикуле, и это указывает на наличие нетиповых доработок.

Почему же Артикул может автоматически заполняться?

Если в вашей системе 1С:УТ вы наблюдаете автоматическое заполнение поля Артикул при создании новой номенклатурной позиции, это практически всегда является результатом следующих факторов:

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

Сам по себе процесс перехода из старых версий 1С не добавляет функционал автоматической нумерации артикулов в новую базу, если он не был реализован как кастомная доработка в старой базе и не был специфическим образом перенесен или разработан заново в новой конфигурации.

Как работают типовые решения для автоматического формирования Артикулов (на примере доработок)

Доработки или расширения, реализующие автоматическое заполнение артикулов, обычно предлагают гибкие настройки. Давайте рассмотрим, как это может быть реализовано:

  1. Автоматическое заполнение при создании:

    При создании новой позиции номенклатуры система может проверять, пусто ли поле Артикул, и если да, то генерировать его. Например, это может быть реализовано в обработчике события ПриСозданииНаСервере или ПередЗаписью объекта Справочник.Номенклатура.

    
    Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
        Если ЭтоНовый() И ЗначениеЗаполнено(Артикул) = Ложь Тогда
            // Здесь будет логика формирования нового артикула
            Артикул = СформироватьНовыйАртикул();
        КонецЕсли;
    КонецПроцедуры
    
  2. Настройка шаблонов артикулов:

    Разработчики могут предусмотреть регистр сведений, где хранятся правила формирования артикулов. Эти правила могут учитывать:

    • Префиксы: Например, "АР-", "ТВ-", "ОД-".
    • Последовательная нумерация: АР-0001, АР-0002.
    • Ведущие нули: Форматирование номера до определенной длины.
    • Приоритеты: Шаблоны могут быть настроены для всей номенклатуры, для отдельных групп или видов товаров.

    Функция СформироватьНовыйАртикул() из примера выше могла бы выглядеть так:

    
    Функция СформироватьНовыйАртикул()
        // Пример простейшей логики: получаем последний артикул и увеличиваем его
        // В реальной системе это будет более сложная логика с шаблонами
        Запрос = Новый Запрос;
        Запрос.Текст = 
            "ВЫБРАТЬ ПЕРВЫЕ 1
            |    Номенклатура.Артикул КАК Артикул
            |ИЗ
            |    Справочник.Номенклатура КАК Номенклатура
            |ГДЕ
            |    Номенклатура.Артикул ПОДОБНО ""АР-%""
            |УПОРЯДОЧИТЬ ПО
            |    Номенклатура.Артикул УБЫВ";
                
        Результат = Запрос.Выполнить().Выбрать();
                
        Если Результат.Следующий() Тогда
            ПоследнийНомерТекст = СтрЗаменить(Результат.Артикул, "АР-", "");
            Если СтрЧислоВхождений(ПоследнийНомерТекст, Символы.НС) = 0 Тогда // Проверяем, что это число
                ПоследнийНомер = Число(ПоследнийНомерТекст);
                НовыйНомер = ПоследнийНомер + 1;
                Возврат "АР-" + Формат(НовыйНомер, "ЧЦ=5; ЧВН=; ЧНЛ=0"); // АР-00001
            КонецЕсли;
        КонецЕсли;
                
        Возврат "АР-00001"; // Начальный артикул
    КонецФункции
    
  3. Контроль уникальности:

    Доработки могут также включать проверку уникальности сгенерированного артикула, чтобы избежать дублирования.

  4. Групповое перезаполнение/очистка:

    Иногда такие решения предоставляют обработки для массового изменения артикулов для выбранных позиций номенклатуры.

Что делать, если у вас наблюдается автоматическое заполнение Артикула?

Если вы столкнулись с автоматическим заполнением Артикула, и это нежелательное поведение или вы не понимаете его логику, предлагаем вам следующие шаги:

  1. Выясним причину наличия доработки:

    В первую очередь, необходимо определить, каким образом реализован этот функционал. Рассмотрите следующие варианты:

    • Проверьте расширения конфигурации: Откройте раздел "Администрирование" -> "Печатные формы, отчеты и обработки" -> "Расширения". Проанализируйте список активных расширений. Возможно, одно из них отвечает за эту логику.
    • Проанализируйте код конфигурации: Если у вас есть доступ к конфигуратору, вы можете поискать код, который обращается к полю Артикул справочника Номенклатура в модулях объектов или формах. Особое внимание уделите обработчикам событий ПриСозданииНаСервере, ПередЗаписью, ПриЗаписи для объекта Справочник.Номенклатура.
    • Обратитесь к истории изменений: Если велась история изменений конфигурации, она может подсказать, когда и кем были внесены доработки.
  2. Свяжитесь с разработчиками или подрядчиками:

    Если вы обнаружили, что автоматическое заполнение Артикула является результатом доработки, выполненной внешними специалистами или внутренними программистами, настоятельно рекомендуем обратиться к ним. Они смогут объяснить логику работы, настроить ее или отключить при необходимости. Они также смогут подсказать, почему этот функционал был реализован при переходе из старой базы.

  3. Оцените необходимость функционала:

    Возможно, этот функционал был реализован для решения определенной задачи, которая была актуальна в старой системе или при переходе. Проанализируйте, нужен ли вам автоматический Артикул сейчас. Если нет, его можно отключить или изменить логику.

Подводя итог, помните: автоматическая нумерация поля Артикул в 1С:Управление торговлей является не типовой функцией, а реализуется посредством дополнительных средств и доработок. Выявление и анализ этих доработок поможет вам понять причину такого поведения и управлять им.

← К списку