Как увеличить длину наименования договора контрагента в 1С?

Программист 1С v8.3 (Обычные формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

В процессе ведения управленческого и бухгалтерского учета пользователи часто сталкиваются с тем, что стандартной длины наименования договора в 1С (которая по умолчанию во многих типовых конфигурациях, таких как 1С:Управление торговлей 10.3 или 1С:Бухгалтерия предприятия, составляет всего 50 символов) критически не хватает. Официальные названия договоров, особенно государственных контрактов с длинными номерами и формулировками, требуют гораздо большего пространства для ввода информации. Попытки изменить этот параметр напрямую в форме элемента ни к чему не приводят. В этой статье мы подробно разберем, как решить эту задачу, рассмотрим ограничения платформы, возможные последствия для обменов данными и предложим лучшие варианты реализации.

Способ 1. Изменение длины наименования через свойства справочника в Конфигураторе

Если ваша конфигурация уже снята с поддержки (или включена возможность изменения с сохранением поддержки), мы можем отредактировать длину стандартного реквизита напрямую в метаданных справочника. Разберем этот процесс по шагам:

  1. Запустите информационную базу в режиме Конфигуратор от имени пользователя с административными правами.
  2. В главном меню выберите пункт Конфигурация -> Открыть конфигурацию (если окно дерева метаданных еще не открыто).
  3. В дереве метаданных найдите ветку Справочники и раскройте ее.
  4. Найдите справочник ДоговорыКонтрагентов и дважды кликните по нему левой кнопкой мыши. Перед вами откроется окно редактирования свойств объекта.
  5. В открывшемся окне перейдите на вкладку Данные.
  6. Обратите внимание на поле Длина наименования. Именно здесь задается ограничение на количество символов. Измените текущее значение (например, 50) на необходимое вам (например, 100 или 150).
  7. Обновите конфигурацию базы данных, нажав клавишу F7 или выбрав синюю пиктограмму на панели инструментов. Согласитесь с изменениями структуры таблиц базы данных.

Если при попытке изменить длину поле ввода оказывается затененным (неактивным), это означает, что конфигурация находится на полной поддержке поставщика («на замке») или база является узлом распределенной информационной базы (УРИБ), в котором изменения структуры метаданных заблокированы.

Чтобы разрешить редактирование, перейдите в меню Конфигурация -> Поддержка -> Настройка поддержки, нажмите кнопку Включить возможность изменения и установите правила поддержки для нужного объекта (или всей конфигурации) в значение «Объект поставщика редактируется с сохранением поддержки».

Ограничение платформы: Лимит в 150 символов

Важно помнить, что платформа «1С:Предприятие 8» накладывает жесткое системное ограничение на длину стандартного реквизита Наименование для любых справочников. Максимально возможная длина, которую вы можете установить в Конфигураторе, составляет 150 символов.

Сделать это стандартное поле длиннее платформа физически не позволит. Такое ограничение обусловлено тем, что поле Наименование автоматически индексируется в системе управления базами данных (СУБД) для обеспечения высокой скорости полнотекстового поиска и сортировки. Создание слишком длинных индексируемых полей привело бы к колоссальному увеличению объемов индексов в СУБД и серьезному падению производительности всей системы.

Способ 2. Использование механизма расширений (для современных платформ 1С 8.3)

Если вы работаете на современной платформе 1С 8.3 (начиная с версии 8.3.18 и в режиме совместимости не ниже 8.3.17), то вам вовсе не обязательно снимать основную конфигурацию с поддержки. Вы можете решить задачу с помощью механизма расширений конфигурации. Проанализируем, как это сделать:

  1. В Конфигураторе перейдите в меню Конфигурация -> Расширения конфигурации.
  2. Добавьте новое расширение, задайте ему понятное имя (например, УвеличениеДлиныДоговоров) и снимите флажки «Активно» и «Безопасный режим» на время настройки.
  3. В дереве основной конфигурации найдите справочник ДоговорыКонтрагентов, кликните по нему правой кнопкой мыши и выберите команду Добавить в расширение.
  4. Откройте свойства справочника уже внутри вашего расширения и перейдите на вкладку Данные.
  5. Увеличьте длину наименования до нужного вам значения (но не более 150 символов).
  6. Обязательно найдите в свойствах заимствованного реквизита флажок контроля валидации (проверки соответствия) свойств и отключите его, чтобы платформа не выдавала ошибку несоответствия метаданных при обновлении основной конфигурации поставщика.
  7. Примените изменения базы данных (клавиша F7).

Благодаря этому методу основная конфигурация остается на полной поддержке поставщика, что существенно облегчает дальнейший процесс автоматического обновления типового решения.

Риски изменения длины наименования для обменов данными

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

Рекомендуемый обходной путь (Best Practice)

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

Разберем по шагам реализацию этого подхода:

  1. Создайте у справочника ДоговорыКонтрагентов новый реквизит с именем ПолноеНаименование (или НаименованиеДляПечати) с типом данных Строка неограниченной длины (или фиксированной длины, например, 300 символов). Так как этот реквизит не индексируется, он не будет замедлять работу СУБД.
  2. Добавьте новый реквизит на форму элемента справочника, чтобы пользователи могли вносить туда длинный официальный текст договора.
  3. Внесите изменения в печатные формы документов (таких как УПД, ТОРГ-12, счета на оплату, акты сверки), заменив вывод стандартного реквизита Наименование на созданный реквизит ПолноеНаименование.

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


Если ЗначениеЗаполнено(ВыборкаДоговора.ПолноеНаименование) Тогда
    ОбластьМакета.Параметры.ДоговорПредставление = ВыборкаДоговора.ПолноеНаименование;
Иначе
    ОбластьМакета.Параметры.ДоговорПредставление = ВыборкаДоговора.Наименование;
КонецЕсли;

Использование этого обходного пути гарантирует абсолютную стабильность системы при обновлении, исключает любые конфликты при обмене данными через стандартные планы обмена и ЭДО, а также сохраняет быстродействие базы данных на исходном высоком уровне.

← На главную