При работе в среде 1С часто возникают ситуации, когда необходимо массово скорректировать данные в уже существующих документах. Одной из наиболее распространенных задач является изменение нумерации, например, добавление определенного префикса (допустим, «РП-») к номерам реализаций или счетов. В этой статье мы подробно разберем, как реализовать эту задачу безопасно и эффективно, используя стандартные инструменты платформы.
Для решения нашей задачи мы воспользуемся универсальной обработкой Групповое изменение реквизитов. Этот инструмент доступен в большинстве современных конфигураций на базе 1С:Предприятие 8.3 (таких как УТ 11, БП 3.0, ERP). Прежде чем приступать к изменениям, критически важно создать резервную копию информационной базы. Любая ошибка в алгоритме при массовом изменении может привести к порче данных, которую будет сложно исправить вручную.
Рассмотрим последовательность действий:
Реализация товаров и услуг.Стандартный функционал обработки позволяет просто заменить одно значение на другое. Однако, чтобы добавить префикс к уже существующему номеру, сохранив его уникальную часть, нам потребуется написать небольшую строку кода. Проанализируем, как это работает.
Перейдем на вкладку «Произвольный алгоритм». В текстовом поле нам нужно прописать логику изменения реквизита Номер. Рассмотрим пример кода, который решает поставленную задачу:
// Добавляем префикс РП- к существующему номеру
Объект.Номер = "РП-" + СокрЛП(Объект.Номер);
Разберем подробнее, что происходит в этой строке:
Объект — это ссылка на конкретный документ, который обрабатывается системой в данный момент.Объект.Номер — обращение к реквизиту номера документа.СокрЛП() — важная функция, которая удаляет лишние пробелы слева и справа от строки. Это предотвращает появление неожиданных разрывов в номере.+ выполняет конкатенацию (склеивание) строк.При изменении номеров мы должны проанализировать структуру строкового поля в метаданных. В 1С поле Номер обычно имеет фиксированную длину (например, 11 символов). Если текущий номер документа уже занимает все доступное пространство, добавление префикса приведет к тому, что символы в конце номера будут «отрезаны» платформой. Это может привести к потере значимой части номера и появлению дублей.
Также важно обратить внимание на ведущие нули. Если номер документа выглядел как 00000000213, то после выполнения кода он может превратиться в РП-000000213. Если же в коде не учесть формат, можно случайно получить некорректную последовательность, которая нарушит автоматическую сортировку в списках. Проанализируем ситуацию: компьютер сортирует строки посимвольно. Это значит, что номер РП-2 окажется в списке ниже, чем РП-10, что логично, но если префиксы будут разной длины, порядок может нарушиться.
Выясним причину, по которой после массового изменения номеров новые документы могут создаваться с ошибками. Платформа 1С хранит в памяти последний использованный номер для каждого типа документов. Когда мы программно меняем номера через Объект.Записать(), система не всегда мгновенно пересчитывает «следующий» номер в очереди.
Для того чтобы система корректно подхватила новый префикс и продолжила нумерацию (например, после РП-213 создала РП-214), рекомендуется выполнить процедуру обновления нумерации. Это можно сделать программно следующей командой:
ОбновитьНумерациюОбъектов(Метаданные.Документы.РеализацияТоваровУслуг);
Этот метод заставляет 1С заново проанализировать все существующие номера в базе и определить актуальный максимум для будущих записей.
Часто после массового изменения пользователям требуется найти документы по новому шаблону. Разберем, как использовать шаблоны в отборах 1С (оператор ПОДОБНО в запросах или стандартные фильтры в списках).
Для гибкого поиска используются специальные символы:
РП% найдет все документы, номера которых начинаются на этот префикс.РП-_13, система найдет и РП-213, и РП-913.Посмотрим на пример ситуации: нам нужно найти все документы, где префикс «РП» ошибочно добавился дважды. В этом случае мы можем задать фильтр %РП%РП%.
Рассмотрим ситуацию с точки зрения документооборота. Изменение номера в базе 1С — это чисто техническое действие внутри системы. Однако важно помнить о следующих аспектах:
Вместо того чтобы писать код, проанализируем, нельзя ли решить задачу стандартными настройками. В 1С предусмотрен механизм префиксов организаций и информационных баз. Если вы укажете префикс РП в карточке организации, система будет автоматически добавлять его ко всем новым документам. Это более «чистый» способ, так как он гарантирует соблюдение длины номера и правильное заполнение ведущих нулей платформой без риска обрезания строки.
Подведем итог: использование произвольного алгоритма в групповой обработке — это мощный и быстрый инструмент, но он требует четкого понимания структуры данных и обязательной проверки на копии базы перед применением к рабочим данным.