Массовое создание подписанных АПП по данным Домопланера

Цель

Нужно создать в 1С документы УПДК_ПередаточныйАкт по объектам, которые по данным Домопланера уже переданы клиентам, чтобы в личном кабинете клиента стала доступна гарантийная заявка по объекту недвижимости.

Решение реализовано скриптом для консоли кода 1С:

C:\Users\User\Desktop\Хлам\выдача\create_transfer_acts_from_contracts_feed_match.bsl

Источники данных

Используются два фида Домопланера:

  1. Фид сделок:

https://domoplaner.ru/feeds-export/deals/full/366/4xD68DfUge9sUh7pGO0UPzBmujUkBvd83wGJ1tEhZGQJtIgDFRn8BusCzviVwU81/eqxyqN6TT5EASXwaYHRRmlHVoCORTCug/

  1. Фид объектов/домов:

https://domoplaner.ru/dc-api/feeds/366-DgOqhmXRAWb75aUymFKA9hYDG9Khsl8D21WLCTNx6wf8szosoblTozsrOusa7oNu/

Основная логика

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

Алгоритм:

  1. Загружается фид сделок Домопланера.
  2. Загружается фид объектов Домопланера.
  3. Из фида объектов собирается список домов, у которых building_state = hand-over.
  4. По сделкам выбираются только записи, где: - сделка активна; - объект имеет статус продано; - у объекта есть ID_дома; - дом объекта найден в списке hand-over; - есть блок Акт_приема_передачи; - заполнена дата Акт_приема_передачи.Дата; - есть Договор.Номер.
  5. По номеру договора из фида ищется проведенный документ 1С Документ.РеализацияНедвижимости.
  6. Если договор не найден или найден дубль, сделка пропускается.
  7. Проверяется, что по договору или объекту недвижимости еще нет документа УПДК_ПередаточныйАкт.
  8. Проверяется готовность договора к формированию АПП: создается новый документ АПП без записи и вызывается Заполнить(Договор).
  9. Если 1С не может заполнить АПП на основании договора, договор пропускается как не готовый к формированию.
  10. Если проверка успешна, создается УПДК_ПередаточныйАкт.
  11. Документ заполняется через Заполнить(Договор).
  12. В документе устанавливаются:
  13. Документ записывается.

Почему используется дата АПП из фида

Поле Акт_приема_передачи.Дата в фиде Домопланера используется как признак того, что акт приема-передачи уже есть/состоялся в Домопланере.

Внутри скрипта эта дата записывается в 1С как:

Импорт_НовыйАПП.ДатаПодписания = Импорт_ДатаАПП;

А статус в 1С ставится явно:

Импорт_НовыйАПП.Статус = Перечисления.УПДК_СтатусыПередаточногоАкта.Подписан;

Логика: Акт_приема_передачи.Дата заполнена в Домопланере -> создаем АПП в 1С -> ставим статус Подписан -> дату подписания берем из Домопланера.

Как запускать

1. Проверочный запуск без создания документов

В начале скрипта должно быть:

Импорт_DryRun = Истина;
Импорт_ЛимитСоздания = 0;

В этом режиме документы не создаются. Скрипт только показывает, сколько договоров подходит под создание.

2. Тестовое создание 1 документа

После проверки поставить:

Импорт_DryRun = Ложь;
Импорт_ЛимитСоздания = 1;

После запуска нужно открыть созданный АПП и проверить:

3. Массовая загрузка всех документов

Если тестовый документ корректный, поставить:

Импорт_DryRun = Ложь;
Импорт_ЛимитСоздания = 0;

Импорт_ЛимитСоздания = 0 означает загрузить все найденные документы без ограничения по количеству.

Контроль результата

После выполнения скрипт выводит итоговые счетчики:

Важные ограничения и риски

  1. Сопоставление договора выполняется по номеру договора из Домопланера. Если в 1С номер договора отличается от номера в фиде, договор не будет найден.
  2. Если в 1С есть дубли договоров с одним номером, скрипт пропускает сделку, чтобы не создать акт не на тот договор.
  3. Скрипт не читает напрямую табличную часть формы Формирование. Реализован практический эквивалент: договор должен быть проведен, по нему не должно быть АПП, и 1С должна успешно выполнить Заполнить(Договор) для нового АПП.
  4. Если в фиде Домопланера заполнена дата АПП ошибочно, скрипт считает такой объект готовым к созданию подписанного АПП.
  5. Старый подход создания акта вручную по объекту недвижимости признан некорректным. Использовать нужно только скрипт create_transfer_acts_from_contracts_feed_match.bsl.

Быстрый чек-лист перед массовым запуском

Код скрипта