Инструкция описывает, как настроить формирование коммерческого предложения (КП) из новой шахматки в 1С CRM.
Функциональность должна позволять:
Связанные задачи:
Документ КП при просмотре/печати из шахматки создавать не нужно.
Для автотекстов не нужно расширять владельцев до объекта недвижимости как полноценного владельца печатной формы. Лучше использовать отдельный контекст формирования КП из шахматки: выбранные объекты, застройщик, текущая дата, изображения, а для отправки - оффер и ссылка.
Для отправки в мессенджер/почту нужно создавать/обновлять оффер по механике CRM4DEV-1126 и передавать пользователю share_url.
Должен быть создан предопределенный элемент:
УПДК_ВидыПечатныхФорм.ШахматкаОписаниеОбъектаНедвижимости
Назначение:
Стандартный шаблон или через обработку заполнения.Должна быть создана группа:
УПДК_ШаблоныАвтотекстаПечатныхФорм.ОбъектыНедвижимости
Назначение:
Для автоматического заполнения предопределенных элементов используется обработка:
ЗаполнитьВидПечатнойФормыАвтотексты.epf
Как применять:
Стандартный шаблон в предопределенном виде печатной формы.К задаче прикладывается архив:
CRM4DEV-651_KP_from_chessboard.zip
Основной файл для загрузки в 1С:
kp_chessboard_template.html
Остальные файлы пакета:
| Файл | Назначение |
|---|---|
kp_chessboard_template.html | Основной HTML-макет для 1С. |
kp_chessboard_autotext.json | JSON-структура, которую заполняют автотексты. |
kp_chessboard_mapping.md | Маппинг полей, правила заполнения, нюансы PDF. |
kp_chessboard_1c_adapter.bsl | Пример точек подключения в 1С. Это не готовый модуль для вставки без адаптации. |
kp_chessboard_acceptance_tests.csv | Приемочные проверки. |
kp_chessboard_example_preview.html | Пример результата после подстановки JSON. |
УПДК_ВидыПечатныхФорм.ШахматкаОписаниеОбъектаНедвижимости
kp_chessboard_template.html
ЗаполнитьВидПечатнойФормыАвтотексты.epf
Альтернативно нажать кнопку Стандартный шаблон на форме предопределенного вида печатной формы.
Проверить, что в макете остался маркер:
__KP_DATA_JSON__
Этот маркер должен быть заменен 1С на сериализованный JSON перед открытием HTML.
Минимальная структура данных:
{
"selection": {
"title": "Коммерческое предложение",
"subtitle": "От застройщика «[КПЗастройщикНаименование]»",
"date": "[КПТекущаяДата]",
"count": "[КПКоличествоОбъектовПодборки]"
},
"objects": [
{
"title": "Квартира · [КППлощадьОбщая] м²",
"subtitle": "[КППодборкаПодзаголовок1]",
"price": "[КПЦена]",
"pricePerM2": "[КПЦенаЗаМ2] руб./м²",
"planImg": "[КППланКвартирыBase64]",
"params": [
{ "k": "Площадь", "v": "[КППлощадьОбщая] м²" },
{ "k": "Этаж", "v": "[КПЭтаж]" },
{ "k": "Жилая", "v": "[КППлощадьЖилая]" },
{ "k": "Кухня", "v": "[КПКухня]" },
{ "k": "С/у", "v": "[КПСанузел]" },
{ "k": "Отделка", "v": "[КПОтделка]" },
{ "k": "Сторона света", "v": "[КПСторонаСвета]" },
{ "k": "Срок сдачи", "v": "[КПСрокСдачи]" }
],
"description": "[КПОписание]"
}
],
"titlePage": {
"renderImg": "[КПРендерЖКBase64]",
"renderCaption": "Рендер жилого комплекса",
"blocks": [
{ "title": "[КПЗаголовокБлока1]", "text": "[КПТекстБлока1]" }
],
"footerLeft": "© 4DEV · Макет подборки",
"footerRight": "Поддержка печати: Ctrl+P / «Сохранить как PDF»"
}
} |
Важно: поле manager в HTML/JSON не передается и не отображается.
| Поле | Откуда брать |
|---|---|
selection.title | Статично Коммерческое предложение или автотекст заголовка. |
selection.subtitle | Застройщик выбранного объекта: От застройщика «...». |
selection.date | Текущая дата формирования. |
selection.count | Количество объектов в подборке/выборке. |
objects[] | Выбранные объекты недвижимости из шахматки. |
objects[].planImg | Готовая картинка планировки: URL или Data URI. |
titlePage.renderImg | Готовая картинка рендера ЖК: URL или Data URI. |
titlePage.blocks[] | Описание ЖК/преимуществ. Для разных ЖК - несколько блоков. |
Поля objects[].planImg и titlePage.renderImg должны содержать готовый src для HTML:
data:image/png;base64,...data:image/jpeg;base64,...data:image/bmp;base64,...data:image/webp;base64,...Нельзя передавать:
planImg_uid, planImg_type;Если titlePage.renderImg пустой, обновленный макет не выводит блок рендера ЖК и не занимает под него место. Если нет ни рендера, ни описания ЖК, весь нижний блок удаляется из HTML.
Для сохранения PDF должна быть заполнена константа:
ЭкспортВPDFАдресОбработчика
Если константа не заполнена, кнопка Сохранить в PDF должна быть неактивна.
По комментариям к задаче использовался сервис:
htmltopdf.4dev.app/render-pdf
Адрес нужно указывать актуальный для окружения.
При сохранении PDF 1С должна принудительно добавлять расширение .pdf, если его нет.
Пример:
Апрель, ГП 1.1, Секция 1, кв. №30
должно сохраняться как:
Апрель, ГП 1.1, Секция 1, кв. №30.pdf
Иначе файл может сохраняться без расширения и некорректно открываться пользователем.
Если PDF открывается напрямую из папки сервиса, но не открывается в браузере, проблема не в HTML-макете, а в отдаче PDF через HTTP.
Нужно проверить:
Content-Type: application/pdf;Content-Length совпадает с реальным размером файла;kp_chessboard_template.html вместо __KP_DATA_JSON__..pdf.token и share_url.Минимальные проверки:
manager/Агент/Менеджер не отображаются.titlePage.renderImg заполнен..pdf.Функциональность считается настроенной, если:
titlePage.renderImg;.pdf;share_url.kp_chessboard_template.html.УПДК_ВидыПечатныхФорм.ШахматкаОписаниеОбъектаНедвижимости.Стандартный шаблон или запустить ЗаполнитьВидПечатнойФормыАвтотексты.epf.