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

Цель

Нужно создать в 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. В документе устанавливаются:
    • Статус = Подписан;
    • ДатаПодписания = Акт_приема_передачи.Дата из Домопланера;
    • Номер = Акт_приема_передачи.Номер, если номер есть в фиде;
    • если номера АПП в фиде нет, используется номер договора;
    • ВидПравовогоДокумента = Акт ПП, если элемент найден в 1С.
  13. Документ записывается.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • статус Подписан;
  • дата подписания заполнена датой из Домопланера;
  • объект недвижимости заполнен;
  • клиент заполнен;
  • договор заполнен;
  • бронь заполнена, если 1С подтянула ее из договора;
  • вид документа Акт ПП;
  • номер АПП заполнен.

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

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

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

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

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

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

  • Домов hand-over в фиде объектов - сколько домов в фиде объектов имеют building_state = hand-over.
  • Всего сделок в фиде - общее количество сделок, полученное из фида.
  • Подходит по фиду - сделки, которые прошли первичный отбор по фиду.
  • Пропущено: дом не hand-over - сделки, где объект продан, но дом еще не в статусе hand-over.
  • Договор не найден - договор из Домопланера не найден в 1С по номеру.
  • Дублей договора - в 1С найдено больше одного договора с таким номером.
  • Уже есть АПП - по договору или объекту недвижимости уже есть передаточный акт.
  • Не готов к формированию АПП - договор найден, но 1С не смогла сформировать акт через Заполнить(Договор).
  • Найдено к созданию / создано АПП - в DryRun это количество кандидатов, при боевом запуске это количество созданных документов.
  • Ошибок - технические ошибки загрузки, поиска или создания.

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

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

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

  • В начале скрипта стоит Импорт_DryRun = Истина.
  • DryRun показывает адекватное количество кандидатов.
  • Нет неожиданных ошибок в счетчике Ошибок.
  • Создан тестовый АПП с Импорт_ЛимитСоздания = 1.
  • Тестовый АПП корректно заполнен.
  • После проверки выставлено Импорт_DryRun = Ложь.
  • Для массового запуска выставлено Импорт_ЛимитСоздания = 0.

Код скрипта

create_transfer_acts_from_contracts_feed_match.bsl


  • Нет меток