Массовое создание подписанных АПП по данным Домопланера
Цель
Нужно создать в 1С документы УПДК_ПередаточныйАкт по объектам, которые по данным Домопланера уже переданы клиентам, чтобы в личном кабинете клиента стала доступна гарантийная заявка по объекту недвижимости.
Решение реализовано скриптом для консоли кода 1С:
C:\Users\User\Desktop\Хлам\выдача\create_transfer_acts_from_contracts_feed_match.bsl
Источники данных
Используются два фида Домопланера:
- Фид сделок:
https://domoplaner.ru/feeds-export/deals/full/366/4xD68DfUge9sUh7pGO0UPzBmujUkBvd83wGJ1tEhZGQJtIgDFRn8BusCzviVwU81/eqxyqN6TT5EASXwaYHRRmlHVoCORTCug/
- Фид объектов/домов:
https://domoplaner.ru/dc-api/feeds/366-DgOqhmXRAWb75aUymFKA9hYDG9Khsl8D21WLCTNx6wf8szosoblTozsrOusa7oNu/
Основная логика
Скрипт не создает акт вручную только по объекту недвижимости. Правильный вариант реализован через договор покупателя, как это делает вкладка Формирование в списке передаточных актов.
Алгоритм:
- Загружается фид сделок Домопланера.
- Загружается фид объектов Домопланера.
- Из фида объектов собирается список домов, у которых
building_state = hand-over. - По сделкам выбираются только записи, где: - сделка активна; - объект имеет статус
продано; - у объекта естьID_дома; - дом объекта найден в спискеhand-over; - есть блокАкт_приема_передачи; - заполнена датаАкт_приема_передачи.Дата; - естьДоговор.Номер. - По номеру договора из фида ищется проведенный документ 1С
Документ.РеализацияНедвижимости. - Если договор не найден или найден дубль, сделка пропускается.
- Проверяется, что по договору или объекту недвижимости еще нет документа
УПДК_ПередаточныйАкт. - Проверяется готовность договора к формированию АПП: создается новый документ АПП без записи и вызывается
Заполнить(Договор). - Если 1С не может заполнить АПП на основании договора, договор пропускается как не готовый к формированию.
- Если проверка успешна, создается
УПДК_ПередаточныйАкт. - Документ заполняется через
Заполнить(Договор). - В документе устанавливаются:
Статус = Подписан;ДатаПодписания = Акт_приема_передачи.Датаиз Домопланера;Номер = Акт_приема_передачи.Номер, если номер есть в фиде;- если номера АПП в фиде нет, используется номер договора;
ВидПравовогоДокумента = Акт ПП, если элемент найден в 1С.
- Документ записывается.
Почему используется дата АПП из фида
Поле Акт_приема_передачи.Дата в фиде Домопланера используется как признак того, что акт приема-передачи уже есть/состоялся в Домопланере.
Внутри скрипта эта дата записывается в 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С есть дубли договоров с одним номером, скрипт пропускает сделку, чтобы не создать акт не на тот договор.
- Скрипт не читает напрямую табличную часть формы
Формирование. Реализован практический эквивалент: договор должен быть проведен, по нему не должно быть АПП, и 1С должна успешно выполнитьЗаполнить(Договор)для нового АПП. - Если в фиде Домопланера заполнена дата АПП ошибочно, скрипт считает такой объект готовым к созданию подписанного АПП.
- Старый подход создания акта вручную по объекту недвижимости признан некорректным. Использовать нужно только скрипт
create_transfer_acts_from_contracts_feed_match.bsl.
Быстрый чек-лист перед массовым запуском
- В начале скрипта стоит
Импорт_DryRun = Истина. DryRunпоказывает адекватное количество кандидатов.- Нет неожиданных ошибок в счетчике
Ошибок. - Создан тестовый АПП с
Импорт_ЛимитСоздания = 1. - Тестовый АПП корректно заполнен.
- После проверки выставлено
Импорт_DryRun = Ложь. - Для массового запуска выставлено
Импорт_ЛимитСоздания = 0.
