Код из 12 знаков в поле на 11: анализатор длин кодов для 1С
Анализатор длин кодов для 1С — обработка, которая сверяет заданную в конфигурации длину кода справочников и номера документов с реальными значениями в базе. Она находит места, где код или номер уже упирается в предел или не поместится при обмене и загрузке. Исправлять длину после сбоя дороже, чем найти проблему заранее.
Почему возникает ошибка с длиной кода в 1С 🔍
Пятница, последний рабочий день месяца. Бухгалтерия ждёт реализации из торговой базы, но обмен остановился. В журнале регистрации — ошибка записи элемента справочника «Номенклатура». Час поисков, и причина найдена: менеджер завёл позицию с кодом из 12 знаков по правилам нового поставщика, а в базе бухгалтерии поле кода рассчитано на 11.
Так бывает, потому что длину кода выбирают один раз, при создании конфигурации, под тогдашние объёмы. Потом подключают маркетплейс, сайт, филиал, нового поставщика с длинными артикулами. Номенклатура растёт, но поле остаётся прежним. Если же базы обмениваются данными, хватит и того, что длина различается в одной из двух.
У числовых кодов своя ловушка. Код длиной 5 знаков вмещает 99 999 элементов, и автонумерация, дойдя до предела, перестаёт выдавать новые номера. Справочник контрагентов с долгой историей и массовыми загрузками из файлов выбирает такой запас незаметно.
С номерами документов своя история. Префикс входит в длину номера и забирает знаки у счётчика, а периодичность номера (в пределах года, квартала или месяца) определяет, когда счётчик начнёт с единицы. Удлинили префикс — на счётчик осталось меньше разрядов, и нумерация закончится раньше, чем рассчитывали.
Хуже всего, когда ошибки нет. Загрузчик, который молча обрезает строку до длины поля, делает два разных кода одинаковыми. Либо срабатывает контроль уникальности, либо две разные позиции сливаются в одну, и разбирать это приходится руками.
Обмен, остановленный в день закрытия месяца, оставляет бухгалтерию без части реализаций: отчётность уходит по неполным данным или опаздывает, пока программист ищет причину. Склад ждёт документы, которые не доехали. А слитые позиции всплывают на инвентаризации: остатки не сходятся, и непонятно, на какой из двух карточек они числятся.
Что проверяет анализатор длин кодов и как он устроен 🧮
Обработка обходит метаданные конфигурации и для каждого справочника и документа читает свойства: тип и длину кода (у документов — номера), способ автонумерации, контроль уникальности, периодичность номера. Затем запросом находит самое длинное значение, которое уже записано в базе. Разница между заданным пределом и фактическим максимумом показывает запас.
В итоговой таблице по каждому объекту видно:
- ✓вид объекта и его имя в конфигурации;
- ✓тип и заданную длину кода или номера;
- ✓максимальную длину значений, которые уже есть в базе;
- ✓запас в знаках, а для числовых кодов ещё и последний выданный номер;
- ✓способ нумерации и наличие контроля уникальности.
Главная польза — сравнение баз. Анализатор запускают в каждой базе цепочки обмена, например в торговой, бухгалтерской и розничной, а результаты сопоставляют по одноимённым объектам. Если у справочника «Номенклатура» в одной базе код на 11 знаков, а в другой на 9, эта пара попадёт в список расхождений, и обмен не упадёт неожиданно.
Запрос по каждому справочнику читает всю таблицу, поэтому на базе с миллионами записей анализатор запускают на копии или вне рабочего времени. Рабочие данные он не меняет, только читает.
Как исправить ошибку длины кода в 1С: четыре способа 🔧
Начните с самого дешёвого и переходите к дорогому, только когда дешёвое не подходит. Менять длину поля в конфигурации стоит в последнюю очередь, и вот почему.
| Способ | Что меняется | Когда подходит | Чем платите |
|---|---|---|---|
| Длинное значение уходит в другой реквизит | Код остаётся коротким, внешний идентификатор хранится в артикуле или отдельном реквизите | Длинные значения приходят от поставщика, маркетплейса или сайта | Правятся загрузка и отчёты, где использовался код |
| Поиск по уникальному идентификатору в обмене | Длина кода перестаёт влиять на сопоставление объектов | В базах разная длина, а коды вручную не сверяют | Правила обмена правятся один раз и проверяются на копии |
| Увеличение длины кода в конфигурации | Поле вмещает новые значения, платформа перестраивает таблицу | Значения не сократить, запаса нет | Типовая конфигурация снимается с поддержки, релизы обновляются с объединением |
| Замена числового кода на строковый | Снимается предел вроде 99 999 | Числовая нумерация исчерпана | Меняются сортировка и сравнения, проверка только на копии |
Если код пришёл снаружи
Внешнее обозначение товара не должно жить в поле «Код». Код создаёт сама 1С для внутреннего учёта, а артикул поставщика или номер на маркетплейсе лучше хранить в отдельном реквизите. Тогда новый поставщик с длинными артикулами не заденет ни одну связанную базу.
Если упирается именно длина
Тогда в конфигураторе меняют свойство Длина кода или Длина номера. Увеличение платформа проводит при обновлении конфигурации базы данных, и записи остаются на месте. Уменьшать длину опасно: более длинные значения обрежутся. Всё делайте на копии и после полного бэкапа.
Для типовых конфигураций вроде УТ или ERP есть оговорка. Свойство меняется только после снятия объекта с поддержки, и с этого момента каждый релиз приходится обновлять с ручным объединением изменений. Мы ведём такие базы и переносим доработки при каждом релизе: обновление 1С идёт по отработанной схеме, без остановки работы пользователей.
Что делать, если ошибка повторяется 🔁
Вы увеличили поле, обмен ожил, а через месяц ошибка вернулась. Типичных причин две: проверили не всю цепочку баз или источник длинных значений остался открытым. Порядок действий такой:
- ✓Откройте журнал регистрации за время сбоя и отберите ошибки записи по объекту, на котором упал обмен.
- ✓Выясните, откуда пришло значение: ввели руками, загрузили из файла, получили из другой базы.
- ✓Запустите анализатор во всех базах цепочки, а не только там, где упало.
- ✓Сравните длины одноимённых объектов между базами и найдите пары, где они разные.
- ✓Закройте источник: ограничьте ввод или добавьте в загрузку проверку, чтобы длинные значения попадали в протокол ошибок, а не обрезались молча.
Если после этого ошибка возвращается, ищите причину в коде. Типичная находка: самописная загрузка, которая обрезает значение через Лев() или собирает номер документа из префикса и счётчика без проверки длины. Такие места правятся только программно, это задача для доработки 1С.
Как предотвратить проблемы с длиной кодов 🛡️
Анализатор окупается, когда его запускают по плану, а не после сбоя.
- ✓Запускайте проверку перед любым изменением состава обмена: новый филиал, сайт, маркетплейс, смена префикса номеров.
- ✓Раз в квартал пересчитывайте запас у числовых кодов и у справочников с массовой загрузкой.
- ✓Сохраняйте результат анализатора в файл и сравнивайте с прошлым: рост максимума виден задолго до предела.
- ✓Создавая новый справочник или документ, выбирайте длину с запасом на рост и на префиксы.
При переходе на новую конфигурацию
Самый дорогой момент для ошибки длины — перенос данных. При переезде со старой версии на 1С:ERP или 1С:Управление торговлей коды из старой базы грузятся в новую структуру целиком, и расхождение вылезает на загрузке, когда времени на перенос мало. Если сравнить длины до начала работ, вы решаете, что менять, заранее, а не в день переноса.
Как мы проверяем длины кодов при внедрении 1С и сколько это стоит
При внедрении 1С мы начинаем с копий всех баз, которые участвуют в обмене. Запускаем анализатор в каждой, сопоставляем результаты и отдаём таблицу расхождений. Для каждой строки там написано, что делать: поправить данные, изменить правило обмена или менять длину в конфигурации.
Отличие от обычного аудита в том, что мы не останавливаемся на отчёте. Правки делаем на тестовой копии, прогоняем на ней обмен и только потом переносим в рабочую базу. Если нужна доработка конфигурации, её делает та же команда.
Стоимость считается по часам: специалист по сопровождению 1С стоит 3800 руб/час. Сколько часов займёт проверка, зависит от числа баз в обмене и размера справочников, поэтому оценку называем после просмотра конфигурации.
Напишите нам название конфигурации и список баз в обмене. По ним мы скажем, нужна ли вам проверка и сколько часов она займёт.
❓ Частые вопросы
Что такое анализатор длин кодов в 1С?
Это обработка для 1С, которая читает из метаданных заданную длину кода справочников и номера документов и сравнивает её с максимальной длиной значений, записанных в базе. Результат — таблица с запасом по каждому объекту. Если запустить её в нескольких базах обмена, видны расхождения длин между ними.
Можно ли увеличить длину кода справочника в типовой конфигурации?
Можно, но только после снятия объекта с поддержки. Увеличение длины платформа применяет при обновлении конфигурации базы данных, данные сохраняются. Дальше каждый релиз типовой конфигурации придётся обновлять с объединением изменений. Поэтому сначала проверьте обходные варианты: перенос длинного значения в отдельный реквизит или поиск по уникальному идентификатору в обмене.
Что будет, если код длиннее поля при загрузке или обмене?
Результат зависит от способа загрузки. Одни загрузки завершаются ошибкой записи, и обмен останавливается. Другие, например самописные, обрезают значение до длины поля, и два разных кода становятся одинаковыми: срабатывает контроль уникальности или позиции сливаются. Второй исход опаснее, его замечают поздно. Поэтому проверяйте длины до загрузки.
Как часто запускать анализатор длин кодов?
Раз в квартал и обязательно перед изменением состава обмена: новый филиал, сайт, маркетплейс, смена префикса номеров. Для справочников с массовой загрузкой и числовыми кодами проверку лучше не откладывать до квартала, если нумерация приближается к пределу. На больших базах запускайте на копии или вне рабочего времени.
Сколько стоит проверка длин кодов в базах 1С?
Работа специалиста по сопровождению 1С стоит 3800 руб/час. Число часов зависит от количества баз в обмене и объёма справочников, поэтому оценку мы даём после просмотра конфигурации. Пришлите название конфигурации и список баз, и мы скажем, сколько времени займёт проверка и нужна ли доработка.
Или позвоните: +7 906 045-28-27 — в рабочее время с 9:00 до 19:00
Остались вопросы? Нужна помощь?
Менеджеры компании с радостью ответят на ваши вопросы, произведут расчет стоимости услуг и подготовят индивидуальное коммерческое предложение.
Бесплатная консультация

