Как правильно заполнить поле Получатель в документе Расходный кассовый ордер при переносе данных в 1С:Бухгалтерия 3.0

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

При переносе данных между конфигурациями 1С, например, из Комплексной автоматизации 2.4 в Бухгалтерию предприятия 3.0 (БП 3.0), разработчики часто сталкиваются с проблемой: на форме документа Расходный кассовый ордер (РКО) присутствует поле Получатель, но при попытке найти одноименный реквизит в метаданных объекта выясняется, что его не существует. Это вызывает путаницу, особенно когда поле должно заполняться ссылкой на справочник Физические лица.

В этой статье мы подробно разберем внутреннее устройство документа РКО, выясним, куда на самом деле сохраняются данные из поля «Получатель», и как правильно настроить правила обмена или программный код для корректного заполнения документа.

Разбор архитектуры формы и объекта

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

Поле Получатель в РКО — это типичный пример динамического интерфейсного решения. Проанализируем путь к данным этого поля. Как правило, оно связано с реквизитом формы, а не с реквизитом самого документа. В 1С:БП 3.0 за отображение получателя могут отвечать разные механизмы в зависимости от значения реквизита ВидОперации.

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

Куда записывать данные: Реквизит Контрагент

Основным реквизитом в РКО для хранения информации о том, кому выданы денежные средства, является Контрагент. Рассмотрим его особенности:

  1. Составной тип данных: В БП 3.0 реквизит Контрагент имеет составной тип, который включает в себя справочники Контрагенты и Физические лица.
  2. Универсальность: Несмотря на название «Контрагент», в него можно (и нужно) записывать ссылку на физическое лицо, если вид операции предполагает выплату сотруднику или подотчетнику.
  3. Связь с интерфейсом: Поле «Получатель» на форме — это всего лишь «зеркало» реквизита Контрагент. Если в объекте заполнено поле Контрагент ссылкой на физлицо, форма при открытии поймет это и отобразит данные в нужном поле.

Вспомогательный реквизит КонтрагентЮрФизЛицо

В процессе анализа формы вы можете встретить реквизит КонтрагентЮрФизЛицо. Рассмотрим, для чего он нужен. Это перечисление (ЮрЛицо или ФизЛицо), которое также является реквизитом формы. Оно управляет тем, какой именно справочник откроется у пользователя при нажатии кнопки выбора в поле получателя.

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

Особенности текстового поля Выплачено

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

Если вы заполните только Контрагент, но оставите Выплачено пустым, то в списке документов поле «Получатель» может выглядеть заполненным, но при печати ордера графа «Выдать» окажется пустой. Поэтому при загрузке документа рекомендуется программно формировать эту строку.

Пример кода для заполнения документа:


// Устанавливаем вид операции
НовыйДокумент.ВидОперации = Перечисления.ВидыОперацийРКО.ВыдачаПодотчетномуЛицу;

// Заполняем получателя (физическое лицо)
НовыйДокумент.Контрагент = СсылкаНаФизЛицо;

// Обязательно заполняем текстовое поле для печатных форм
НовыйДокумент.Выплачено = СсылкаНаФизЛицо.Наименование; // Желательно в дательном падеже
НовыйДокумент.Записать();

Настройка правил конвертации (КД 2.0 / 3.0)

Если вы используете правила конвертации данных, разберем по шагам, как настроить ПКС (Правила конвертации свойств) для корректного заполнения получателя:

  1. Для реквизита Контрагент: Создайте ПКС, где источником будет ваше поле из КА 2.4 (которое может быть как контрагентом, так и физлицом).
  2. Настройка ПКО: Поскольку тип реквизита составной, в настройках ПКС укажите несколько возможных ПКО (Правил конвертации объектов): одно для СправочникСсылка.Контрагенты, другое для СправочникСсылка.ФизическиеЛица.
  3. Событие ПередЗагрузкой: Проанализируем вид операции. Если в источнике это «Выплата подотчетнику», убедитесь, что в приемник передается именно ссылка на физическое лицо.
  4. Заполнение текста: Не забудьте сопоставить текстовое поле получателя из КА 2.4 с реквизитом Выплачено в БП 3.0.

Исключения: Вид операции Выплата заработной платы

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

Однако для 90% случаев (оплата поставщику, подотчет, прочий расход) схема остается единой: работаем с реквизитом Контрагент. Если вы видите на форме поле, которое ведет себя странно, всегда проверяйте ПутьКДанным в свойствах элемента формы в Конфигураторе. Если там не указано Объект.ИмяРеквизита, значит, перед вами виртуальное поле, и искать «правду» нужно в коде модуля формы, в процедурах ПриЧтенииНаСервере или ПриСозданииНаСервере.

Резюме

Чтобы успешно заполнить поле «Получатель» в Расходном кассовом ордере при переносе в 1С:Бухгалтерия 3.0, придерживайтесь следующих правил:

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

← На главную