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

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

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

Почему доверенность перезаписывает паспорт в регистре сведений?

Проанализируем структуру типового регистра сведений Паспортные данные физ. лиц в 1С:УПП. Данный регистр спроектирован со следующими параметрами:

  1. Периодичность: По дням.
  2. Измерения: Единственное измерение — ФизЛицо (ссылка на справочник Физические лица).
  3. Ресурсы: ДокументВид (ссылка на справочник видов документов), ДокументСерия, ДокументНомер, ДокументДатаВыдачи и другие реквизиты документа.

По фундаментальным правилам платформы 1С:Предприятие в периодическом регистре сведений срез последних на определенную дату возвращает строго одну запись для каждой уникальной комбинации ключевых полей (измерений). Поскольку вид документа является не измерением, а ресурсом, внесение записи с видом «Доверенность» на текущую дату полностью вытесняет предыдущую запись с видом «Паспорт гражданина РФ». Таким образом, физическое лицо в системе теряет свои паспортные данные, заменяя их данными доверенности.

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

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

Ограничение типового документа «Доверенность»

В конфигурации 1С:УПП присутствует стандартный документ Доверенность, однако он предназначен исключительно для учета исходящих доверенностей собственной организации по типовым межотраслевым формам М-2 и М-2а (выдача сотрудникам на получение ТМЦ у поставщиков). Механизм учета входящих доверенностей от контрагентов и транспортных компаний «из коробки» не предусмотрен.

Вариант 1. Ведение учета без доработки конфигурации

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

  1. Механизм дополнительных свойств: В типовой функционал заложен план видов характеристик Свойства объектов и регистр сведений Значения свойств объектов. Назначим для справочника Физические лица или Контрагенты дополнительные свойства, такие как «Номер доверенности», «Дата выдачи доверенности» и «Срок действия доверенности» (с типом значения Дата). Это позволит операторам фиксировать срок и вручную отслеживать его актуальность.
  2. Реквизиты отгрузочных документов: В документе Реализация товаров и услуг на закладке, отвечающей за печать («Дополнительно» / «Печать»), предусмотрены типовые текстовые реквизиты для фиксации входящей доверенности (номер, дата и через кого выдана). Эти данные выводятся в товарную накладную ТОРГ-12.
  3. Хранилище дополнительной информации: Для хранения скана оригинала доверенности используем типовой справочник Хранилище дополнительной информации, привязав файл непосредственно к карточке физического лица или контрагента.

Вариант 2. Архитектурная доработка: создание независимого регистра входящих доверенностей

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

Создадим новый независимый непериодический регистр сведений ВходящиеДоверенности со следующей структурой:

  1. Измерения:
    • Контрагент (СправочникСсылка.Контрагенты) — организация, выдавшая доверенность (доверитель);
    • ФизическоеЛицо (СправочникСсылка.ФизическиеЛица) — водитель или экспедитор (поверенный);
    • НомерДоверенности (Строка).
  2. Ресурсы и реквизиты:
    • ДатаВыдачи (Дата);
    • СрокДействия (Дата);
    • Действует (Булево);
    • Комментарий (Строка).

Теперь рассмотрим реализацию программного контроля срока действия доверенности при проведении отгрузочного документа. Разберем пример кода, который можно поместить в обработчик ОбработкаПроверкиЗаполнения или в процедуру проведения модуля документа РеализацияТоваровИУслуг:


Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	ВходящиеДоверенности.СрокДействия КАК СрокДействия
    |ИЗ
    |	РегистрСведений.ВходящиеДоверенности КАК ВходящиеДоверенности
    |ГДЕ
    |	ВходящиеДоверенности.Контрагент = &Контрагент
    |	И ВходящиеДоверенности.ФизическоеЛицо = &Водитель
    |	И ВходящиеДоверенности.НомерДоверенности = &НомерДоверенности
    |	И ВходящиеДоверенности.Действует = ИСТИНА";

Запрос.УстановитьПараметр("Контрагент", ЭтотОбъект.Контрагент);
// Предполагается наличие реквизитов "Водитель" и "НомерДоверенности" в документе
Запрос.УстановитьПараметр("Водитель", ЭтотОбъект.Водитель);
Запрос.УстановитьПараметр("НомерДоверенности", ЭтотОбъект.НомерВходящейДоверенности);

РезультатЗапроса = Запрос.Выполнить();

Если РезультатЗапроса.Пустой() Тогда
    Сообщение = Новый СообщениеПользователю;
    Сообщение.Текст = "Не найдена действующая доверенность на указанного водителя от данного перевозчика!";
    Сообщение.Сообщить();
    Отказ = Истина;
Иначе
    Выборка = РезультатЗапроса.Выбрать();
    Выборка.Следующий();
    
    Если НачалоДня(Выборка.СрокДействия) < НачалоДня(ЭтотОбъект.Дата) Тогда
        Сообщение = Новый СообщениеПользователю;
        Сообщение.Текст = "Срок действия доверенности истек: " + Формат(Выборка.СрокДействия, "ДФ=dd.MM.yyyy");
        Сообщение.Сообщить();
        Отказ = Истина;
    КонецЕсли;
КонецЕсли;

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

← На главную