Нужно создать в 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С -> ставим статус Подписан -> дату подписания берем из Домопланера.
В начале скрипта должно быть:
Импорт_DryRun = Истина; Импорт_ЛимитСоздания = 0; |
В этом режиме документы не создаются. Скрипт только показывает, сколько договоров подходит под создание.
После проверки поставить:
Импорт_DryRun = Ложь; Импорт_ЛимитСоздания = 1; |
После запуска нужно открыть созданный АПП и проверить:
Подписан;Акт ПП;Если тестовый документ корректный, поставить:
Импорт_DryRun = Ложь; Импорт_ЛимитСоздания = 0; |
Импорт_ЛимитСоздания = 0 означает загрузить все найденные документы без ограничения по количеству.
После выполнения скрипт выводит итоговые счетчики:
Домов hand-over в фиде объектов - сколько домов в фиде объектов имеют building_state = hand-over.Всего сделок в фиде - общее количество сделок, полученное из фида.Подходит по фиду - сделки, которые прошли первичный отбор по фиду.Пропущено: дом не hand-over - сделки, где объект продан, но дом еще не в статусе hand-over.Договор не найден - договор из Домопланера не найден в 1С по номеру.Дублей договора - в 1С найдено больше одного договора с таким номером.Уже есть АПП - по договору или объекту недвижимости уже есть передаточный акт.Не готов к формированию АПП - договор найден, но 1С не смогла сформировать акт через Заполнить(Договор).Найдено к созданию / создано АПП - в DryRun это количество кандидатов, при боевом запуске это количество созданных документов.Ошибок - технические ошибки загрузки, поиска или создания.Формирование. Реализован практический эквивалент: договор должен быть проведен, по нему не должно быть АПП, и 1С должна успешно выполнить Заполнить(Договор) для нового АПП.create_transfer_acts_from_contracts_feed_match.bsl.Импорт_DryRun = Истина.DryRun показывает адекватное количество кандидатов.Ошибок.Импорт_ЛимитСоздания = 1.Импорт_DryRun = Ложь.Импорт_ЛимитСоздания = 0.