Сброс нумерации в CRM: Как начинать отсчет договоров с начала каждый год или месяц
В этом видео я покажу, как настроить нумерацию договоров и счетов так, чтобы она автоматически сбрасывалась и начиналась заново при наступлении нового года или месяца. Мы разберем:
- Как заставить CRM обнулять отсчет при смене периода;
- Сборку формулы с использованием функций YEAR и MONTH;
- Как добавить год или месяц прямо в номер документа (например, 2026-100).
Год в номере договора и ежегодный сброс: нужна нумерация вида 2026-100
Привет, я Илья, основатель daocrm.
В некоторых компаниях принято добавлять в номер договора текущий год или месяц — например, 2026-100. При этом каждый новый год отсчет нужно начинать заново.
В этом видео я покажу, как настроить daocrm так, чтобы она сама начинала новую очередь номеров при смене периода.
Год как имя счётчика: YEAR, TEXT и SERIAL для нумерации 2026-100 с ежегодным сбросом
Заходим в настройки поля "Номер договора".
Вспомним логику из прошлого видео: как только мы передаем функции SERIAL новое имя счетчика, daocrm автоматически начинает отсчет заново. В прошлый раз мы подставляли туда название юрлица. А сегодня мы подставим туда год. Как только год изменится, программа увидит новое имя для счетчика и создаст новую независимую очередь номеров.
Чтобы не запутаться, давайте соберем формулу по шагам.
Сначала получим год из нашей сделки и превратим его в текст, чтобы использовать как имя счетчика. Сохраним это в первую переменную. Для этого на вкладке "Функции" находим TEXT и кликаем по ней, чтобы вставить в формулу. Внутри её скобок вставляем функцию YEAR (год). Теперь внутрь года нам нужно передать саму дату: открываем вкладку "Поля" и выбираем "Дата начала договора". В конце ставим точку с запятой.
let year = TEXT( YEAR( {{data_nachala_dogovora}} ) );Теперь получим следующий порядковый номер для этого года и запишем его во вторую переменную. Снова переходим в "Функции" и вставляем SERIAL. Внутри скобок указываем нашу первую переменную — она и будет именем счетчика. И чтобы нумерация каждый год начиналась солидно, например со ста, ставим запятую и пишем 100. Если вам нужно начать с единицы — второй параметр можно просто не указывать. В конце ставим точку с запятой.
let number = SERIAL( year, 100 );С новой строки собираем финальный результат. Нам нужно склеить год, дефис и сам номер. Вставляем нашу первую переменную с годом. Затем добавляем плюс, в кавычках пишем дефис "-", и снова плюс. Так как наш порядковый номер — это число, а поле текстовое, вставляем функцию TEXT и передаем в нее нашу вторую переменную с номером.
year + "-" + TEXT( number )Итоговая формула выглядит так:
let year = TEXT( YEAR( {{data_nachala_dogovora}} ) );
let number = SERIAL( year, 100 );
year + "-" + TEXT( number )Сохраняем.
Создаём договоры в 2026 и 2027 годах: нумерация сбрасывается при смене года автоматически
Создаю новую сделку. Ставлю дату договора: 15 марта 2026 года. Сохраняю. Смотрите, номер автоматически стал: 2026-100.
Создаю еще одну сделку в 2026 году. Номер: 2026-101. Счетчик исправно работает.
А теперь представим, что наступило будущее. Я создаю новую сделку и ставлю дату: 10 января 2027 года. Сохраняю. Смотрите: номер стал 2027-100. Нумерация сбросилась автоматически, потому что изменился год, и программа создала новый счетчик.
Добавляем MONTH к счётчику: нумерация вида 2027-01-100 с ежемесячным сбросом
Точно так же можно настроить сброс каждый месяц, чтобы номер выглядел, например, как 2027-01-100.
Для этого нам нужно сделать так, чтобы в имени счетчика был не только год, но и месяц.
Заведем переменную для месяца. По аналогии с годом используем функции TEXT и MONTH, передавая внутрь всё ту же дату начала договора.
let month = TEXT( MONTH( {{data_nachala_dogovora}} ) );Теперь в следующей строке, где мы получаем номер, мы меняем имя счетчика. К переменной с годом мы прибавляем дефис и нашу новую переменную с месяцем.
let number = SERIAL( year + "-" + month, 100 );И последнее: нам нужно обновить финальную строчку, чтобы месяц отображался в самом номере договора. Добавляем туда переменную с месяцем и еще один дефис.
year + "-" + month + "-" + TEXT( number )Итоговая формула будет выглядеть так:
let year = TEXT( YEAR( {{data_nachala_dogovora}} ) );
let month = TEXT( MONTH( {{data_nachala_dogovora}} ) );
let number = SERIAL( year + "-" + month, 100 );
year + "-" + month + "-" + TEXT( number )Теперь имя счетчика будет уникальным для каждого месяца. Как только наступит 1-е число, нумерация начнется заново.
В результате настраивается любая логика нумерации: сквозная, раздельная или с автосбросом
Теперь вы умеете настраивать любую логику нумерации документов: сквозную, раздельную по юрлицам или с автоматическим сбросом по времени.
В следующем видео я покажу, как сделать так, чтобы текст внутри договора менялся в зависимости от параметров сделки. Например, чтобы шапка договора и реквизиты сами подстраивались в зависимости от того, кто ваш заказчик — физическое лицо или компания.