Как ввести длинный номер государственного контракта в 1С:УПП при ограничении длины поля?

Программист 1С v8.3 (Обычные формы) Бухгалтерский учет IT и автоматизация бизнеса
← На главную

При ведении учета по государственным контрактам пользователи конфигурации «1С:Управление производственным предприятием» (УПП) часто сталкиваются с ситуацией, когда номер документа содержит 32 символа (например, реестровый номер контракта из ЕИС или длинный идентификатор государственного контракта — ИГК). В то же время типовой реквизит Номер справочника ДоговорыКонтрагентов в 1С:УПП 1.3 имеет ограничение длины в 20 символов.

Разберем методологические и технические способы решения этой задачи, а также проанализируем возможные последствия каждого из подходов.

1. Разделение понятий: номер договора и государственный идентификатор (ИГК)

Прежде чем вносить изменения в базу данных, проанализируем природу вводимого номера. В сфере госзакупок (в рамках 44-ФЗ, 223-ФЗ и 275-ФЗ) 32-значный цифровой код чаще всего является идентификатором государственного контракта (ИГК) либо реестровым номером записи в Единой информационной системе (ЕИС), а не обычным номером договора сторон.

В типовых решениях 1С для этих целей предусмотрена раздельная методология:

  1. Реквизит Номер хранит внутренний или краткий номер договора контрагента.
  2. Специальный реквизит государственного контракта/ИГК хранит длинный код, который автоматически выводится в строку 8 счета-фактуры и универсального передаточного документа (УПД).

Если база данных регулярно обновляется до актуальных релизов, проверим наличие типового механизма учета государственных контрактов в форме элемента справочника ДоговорыКонтрагентов. В актуальных версиях УПП для указания государственного контракта и его параметров уже предусмотрен специализированный функционал, поэтому расширять стандартное поле Номер не требуется.

2. Использование дополнительных реквизитов и сведений (без изменения конфигурации)

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

  1. Перейдем в меню Операции → Планы видов характеристик → Свойства объектов.
  2. Создадим новое свойство для назначения Договоры контрагентов с наименованием, например, «Номер госконтракта (ЕИС/ИГК)».
  3. Установим тип значения — Строка с необходимой длиной (например, 50 или 100 символов).
  4. В карточке договора в стандартном поле Номер укажем краткий номер или первые символы, а полный 32-значный номер зафиксируем на вкладке Свойства.

Если требуется вывод этого длинного номера в печатные формы (ТОРГ-12, УПД, Акт сверки), подключим внешние печатные формы. В коде формирования печатного документа прочитаем значение дополнительного реквизита с помощью стандартного запроса к регистру сведений ЗначенияСвойствОбъектов:


Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |    ЗначенияСвойств.Значение КАК ПолныйНомерКонтракта
    |ИЗ
    |    РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойств
    |ГДЕ
    |    ЗначенияСвойств.Объект = &Договор
    |    И ЗначенияСвойств.Свойство = &СвойствоПолныйНомер";

Запрос.УстановитьПараметр("Договор", ШапкаДокумента.ДоговорКонтрагента);
Запрос.УстановитьПараметр("СвойствоПолныйНомер", ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Номер госконтракта (ЕИС/ИГК)"));

Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() И ЗначениеЗаполнено(Выборка.ПолныйНомерКонтракта) Тогда
    НомерДляПечати = СокрЛП(Выборка.ПолныйНомерКонтракта);
Иначе
    НомерДляПечати = ШапкаДокумента.ДоговорКонтрагента.Номер;
КонецЕсли;

3. Использование стандартного реквизита «Наименование»

Посмотрим на структуру справочника ДоговорыКонтрагентов: длина стандартного реквизита Наименование составляет 100 символов, что значительно превышает длину реквизита Номер (20 символов). В списках выбора документов, отчетах и формах подбора отображается именно наименование договора.

В этом случае в поле Номер можно занести сокращенную часть номера, а в поле Наименование записать строку вида: Госконтракт № 01234567890123456789012345678901 от 15.01.2024. Это позволит пользователям легко идентифицировать договор во всех интерфейсных формах без изменения метаданных.

4. Изменение длины реквизита «Номер» в конфигураторе и сопутствующие риски

Если принято решение изменить структуру метаданных напрямую, снимем справочник ДоговорыКонтрагентов с поддержки и увеличим длину реквизита Номер, например, до 50 символов. Однако перед этим обязательно проанализируем следующие критические риски:

  1. Интерфейс обычных форм (УПП 1.3): В обычных формах элементы интерфейса ПолеВвода имеют фиксированную графическую ширину. Увеличение длины реквизита в метаданных не расширит элементы на формах документов (Реализация товаров и услуг, Поступление товаров и услуг, Платежные поручения). Текст длинного номера будет обрезаться визуально, что потребует ручной корректировки десятков экранных форм.
  2. Типовые печатные формы: В макетах печатных форм (ТОРГ-12, Акт сверки взаиморасчетов, Счет на оплату, М-15) ячейки для вывода номера договора рассчитаны на стандартную длину. Длинный 32-значный номер может вызывать некорректный перенос строк, искажение табличной сетки или не помещаться на страницу.
  3. Форматы ЭДО и XML-схемы ФНС: Форматы электронных счетов-фактур и УПД, утвержденные ФНС, жестко регламентируют структуру файла. Государственный идентификатор должен передаваться в строго определенном узле XSD-схемы (ИдГосКонтр). Если длинный номер выгружается как обычный номер договора, документ может не пройти форматно-логический контроль на стороне оператора ЭДО или налоговой службы.
  4. Интеграция с системами «Клиент-Банк»: При автоформировании платежных поручений реквизиты договора включаются в поле «Назначение платежа». Длинный 32-значный номер в сочетании со стандартным текстом может превысить лимит банковского формата (210 символов), что приведет к отклонению платежного поручения банком.
  5. Обмен данными с другими базами (РИБ, 1С:Бухгалтерия, 1С:ERP): Если длина реквизита изменена только в УПП, при синхронизации с другими информационными базами, где длина поля Номер осталась типовой (20 символов), произойдет автоматическое усечение данных либо критическая ошибка обмена.

Резюме: Оптимальным решением является использование штатного функционала учета госконтрактов/ИГК в актуальных версиях программы либо создание дополнительного реквизита (свойства) с подключением внешних печатных форм. Прямое увеличение длины реквизита в конфигураторе следует применять только при комплексной доработке форм, макетов и правил обмена данными.

← На главную