При работе с объектами метаданных типа Задача в 1С разработчики и пользователи часто сталкиваются с тем, что стандартный номер выглядит громоздко: он содержит префикс базы и длинную цепочку лидирующих нулей (например, 00-0000000000000000000000900005). Разберем, почему платформа формирует такие номера, как программно преобразовать их в удобный вид без лишних нулей, а также выясним нюансы работы с дополнительными реквизитами и копированием настроек форм.
В платформе 1С у объекта ЗадачаОбъект стандартный реквизит Номер по умолчанию имеет строковый тип. Длинная строка с лидирующими нулями необходима по двум ключевым причинам:
00-) добавляются встроенными механизмами для разделения нумерации по организациям, узлам распределенной информационной базы (РИБ) или префиксам информационной базы, предотвращая коллизии при синхронизации данных.Если требуется получить из стандартного строкового номера обычное целое число для программной обработки или вывода в отчеты, рассмотрим простой способ усечения строки и преобразования ее встроенной функцией Число().
Посмотрим на пример кода, позволяющего выделить значащую правую часть номера:
// Выделяем правую часть номера и преобразуем её в число
НомерЧислом = Число(Прав(Задача.Номер, 10));
Этот способ быстро отсекает префиксы и начальные нули, оставляя чистое числовое значение.
В конфигурациях, построенных на базе Библиотеки стандартных подсистем (БСП), не обязательно вручную обрезать строки. Для этих целей предусмотрены готовые сервисные функции общего модуля ПрефиксацияОбъектовКлиентСервер.
Разберем пример вызова стандартной функции:
// Получение номера без префикса и лидирующих нулей
КороткийНомер = ПрефиксацияОбъектовКлиентСервер.ПолучитьНомерНаПечать(Задача.Номер, Истина, Истина);
Функция ПолучитьНомерНаПечать() принимает параметры, управляющие удалением префикса и удалением незначащих нулей, что гарантирует корректную обработку номеров любой сложности.
Если конфигурация находится на поддержке без возможности редактирования, внедрить компактный номер на форму можно с помощью механизма расширений конфигурации:
ПриСозданииНаСервере или ПриЧтенииНаСервере переопределим отображаемый текст заголовка или элемента формы.Дополнительные реквизиты, настроенные в пользовательском режиме, физически хранятся в табличной части ДополнительныеРеквизиты задачи. Автоматическое заполнение такого реквизита без модификации основной конфигурации реализуется следующими путями:
ПередЗаписью или ПриЗаписи и программно заполняем строку в табличной части ДополнительныеРеквизиты нужным значением.При настройке отображения колонок формы задачи и попытке скопировать эту настройку другим пользователям через карточку пользователя иногда возникает ситуация, когда изменения не применяются. Проанализируем причины этой проблемы:
ХранилищеСистемныхНастроек. Если целевой пользователь в момент копирования работал в программе, настройки обновятся только после его полного перезапуска клиентского приложения.