Как получить короткий номер задачи и настроить его отображение в 1С?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При работе с объектами метаданных типа Задача в 1С разработчики и пользователи часто сталкиваются с тем, что стандартный номер выглядит громоздко: он содержит префикс базы и длинную цепочку лидирующих нулей (например, 00-0000000000000000000000900005). Разберем, почему платформа формирует такие номера, как программно преобразовать их в удобный вид без лишних нулей, а также выясним нюансы работы с дополнительными реквизитами и копированием настроек форм.

Особенности стандартной нумерации задач в платформе 1С

В платформе 1С у объекта ЗадачаОбъект стандартный реквизит Номер по умолчанию имеет строковый тип. Длинная строка с лидирующими нулями необходима по двум ключевым причинам:

  1. Лексикографическая сортировка: Если бы строковый номер не дополнялся нулями слева, то при сортировке строка «10» располагалась бы раньше строки «2». Лидирующие нули обеспечивают правильный хронологический и цифровой порядок при отображении списков.
  2. Префиксация: Символы в начале номера (например, 00-) добавляются встроенными механизмами для разделения нумерации по организациям, узлам распределенной информационной базы (РИБ) или префиксам информационной базы, предотвращая коллизии при синхронизации данных.

Преобразование номера задачи в числовой вид

Если требуется получить из стандартного строкового номера обычное целое число для программной обработки или вывода в отчеты, рассмотрим простой способ усечения строки и преобразования ее встроенной функцией Число().

Посмотрим на пример кода, позволяющего выделить значащую правую часть номера:


// Выделяем правую часть номера и преобразуем её в число
НомерЧислом = Число(Прав(Задача.Номер, 10));

Этот способ быстро отсекает префиксы и начальные нули, оставляя чистое числовое значение.

Использование функций БСП для получения номера на печать

В конфигурациях, построенных на базе Библиотеки стандартных подсистем (БСП), не обязательно вручную обрезать строки. Для этих целей предусмотрены готовые сервисные функции общего модуля ПрефиксацияОбъектовКлиентСервер.

Разберем пример вызова стандартной функции:


// Получение номера без префикса и лидирующих нулей
КороткийНомер = ПрефиксацияОбъектовКлиентСервер.ПолучитьНомерНаПечать(Задача.Номер, Истина, Истина);

Функция ПолучитьНомерНаПечать() принимает параметры, управляющие удалением префикса и удалением незначащих нулей, что гарантирует корректную обработку номеров любой сложности.

Отображение короткого номера без изменения конфигурации

Если конфигурация находится на поддержке без возможности редактирования, внедрить компактный номер на форму можно с помощью механизма расширений конфигурации:

  1. Подключим расширение и заимствуем форму списка или форму задачи.
  2. В динамическом списке задач добавим вычисляемое поле или изменим текст запроса списка, применив преобразование номера.
  3. В обработчиках событий ПриСозданииНаСервере или ПриЧтенииНаСервере переопределим отображаемый текст заголовка или элемента формы.

Автозаполнение дополнительных реквизитов

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

  1. Через расширение конфигурации: Перехватываем событие объекта ПередЗаписью или ПриЗаписи и программно заполняем строку в табличной части ДополнительныеРеквизиты нужным значением.
  2. Через дополнительные обработки: Используем подсистему «Дополнительные отчеты и обработки», создав назначаемую обработку или фоновое регламентное задание для обработки новых задач.

Копирование настроек формы между пользователями

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

  1. Кэш активного сеанса: Настройки форм сохраняются в ХранилищеСистемныхНастроек. Если целевой пользователь в момент копирования работал в программе, настройки обновятся только после его полного перезапуска клиентского приложения.
  2. Ограничения прав доступа: Если реквизит или колонка недоступны пользователю по правам роли или отключены функциональной опцией, поле не появится на форме даже при успешно скопированной настройке.
  3. Разные контексты вызова формы: Ключ настроек формы зависит от способа ее открытия (например, из списка «Мои задачи», из журнала бизнес-процессов или через рабочий стол). Убедимся, что пользователи открывают форму по одному и тому же пути.
  4. Использование типовой обработки: В конфигурациях на БСП копирование настроек форм рекомендуется выполнять через специализированный инструмент администратора: «Администрирование» → «Настройки пользователей и прав» → «Копирование настроек». Этот механизм корректно переносит параметры с учетом прав и зависимостей.
← На главную