Генератор документов - феррари на которой можно ездить только вокруг дома, Новый модуль получился хорошим но не предназначен для использования разработчиками.
Доброго дня Оставлю тут предупреждение для тех, кто решит делать сложный проект через REST API на облаке, используя конструкции, подобные "Таблица внутри повторяющихся блоков", которые описаны в https://dev.1c-bitrix.ru/rest_help/documentgenerator/example.php Там есть не описанные ограничения! Я о них не знал и пожалел. Обработка запроса генерации документов, идущего на облачный сервер Битрикс, очень тяжелая. Чем больше в шаблоне динамических данных, тем она тяжелее. В нашем проекте был полностью динамически формируемый документ с высокой вариативностью, из-за чего пришлось все делать такими конструкциями. И примерно при 3 конструкциях "Таблица внутри повторяющихся блоков", каждая из которых содержала примерно 3 таблицы (это было всего 5 страниц в текстовом документе), сервер Битрикса стал не справляться и выдавать ошибку INTERNAL_SERVER_ERROR, документ при этом не создается вообще. То есть именно с обработкой этих запросов могут быть большие задержки, и можно неожиданно упереться в неописанное ограничение при относительно небольшом объеме документа. Решения у данной проблемы нет, кроме как использовать для генерации документов какую-то свою коробку вместо облака (там нет этих ограничений). В ТП заявка по проблеме есть, под номером 161135 "Облака при обработке шаблона документа (Maximum execution time exceeded)". Сервер Битрикса начинает отклонять запросы, когда не может выполнить их за 60 секунд. Через curl_getinfo можно отслеживать этот параметр для текущего запроса, чтобы понимать, где находится допустимая граница. Пример логов отклоненного запроса:
Не запускаются роботы той стадии, на которую происходит перемещение. Это нормальная работа, так и должно быть. Но есть ли способ как-то запустить все роботы стадии, как при ручном перемещении сущности? Иногда бывает, что на стадии настроили длинную цепочку роботов, и каждый из них прописывать отдельно в код перевода на эту стадию автоматикой не хотелось бы. Может, нужно передать в запрос какие-то доп. параметры, или есть отдельная функция для запуска всех роботов по лиду/сделке ?
И еще один момент непонятен Синхронизирую смарт-процесс с 1С, сущность Реализация (акты, накладные, УПД) На вкладке сопоставления полей для перехода документа Б24 -> 1C можно установить дату документа Указываю для даты - источник "Из пользовательского поля", значение - пользовательское поле смарта в Б24 Со стороны Б24 это поле типа "дата" Далее создаю элемент смарта в Б24, заполняю это поле сегодняшней датой, синхронизирую, получаю ошибку "Дата -- Дата документа должна быть не ранее 2000 года" Вероятно, разный формат дат в полях и там 1970 пришел Как правильно передать дату тогда? Может, в строке собрать значение другого формата перед синхронизацией? Или использовать поле дата/время?
Благодарю за ответ При настройке синхронизации заметил одну странность В "настройке отборов и полей" для контактов в открывающемся справа меню можно задать сопоставление полей при выгрузке на портал (например для синхронизации контактов Б24 с контрагентами 1С, или контактов Б24 с контактами 1С) Там выводится список полей контактов в Б24, но только стандартных (белые строки), а все пользовательские поля (бирюзовые строки) попадают туда из компаний, как я понял Может в модуле ошибка где-то? Мы сами не перенастраивали ничего похожего
[QUOTE] написал: [QUOTE][URL=/community/webdev/user/3626032/]Андрей Гомзин[/URL] написал: Добрый день! Подскажите, пожалуйста Пробуем настроить интеграцию 1С и Битрикс-24 с помощью роботов и триггеров Нашли робот "Создание документа на основании", который позволяет создать в 1С новый документ на основании существующего документа из таймлайна сделки. Но как настроить этот робот, чтобы создать документ по данной сделке впервые? Например, автоматически создать счет покупателю по новой сделке, чтобы потом на его основании создавать УПД и т.п. Тогда можно будет настроить работу для менеджеров в Б24 полностью без захода в 1С.[/QUOTE] Так только роботами не сделать. Нужно настраивать синхронизацию в режиме реального времени, чтобы на основании сделки создавался заказ. А вот через него можно роботами/триггерами делать УПД. Сложнее, если 1С Бухгалтерия, там синхронизации сделок нет и так сделать не получится.[/QUOTE] Поняли, спасибо. У нас как раз Бухгалтерия Попробовал зайти со стороны смарт-процессов, получилось синхронизировать их с УПД (при создании смарта с товарами в 1С все переходит), но столкнулся с проблемой, что в карточке смарт-процесса нет списка расширений сверху (где обычно находится реестр документов и список документов 1С для создания). В настройках Бэкофиса галочки можно проставить только для 4 основных CRM-сущностей, а смартов нет. Также не создается дело в таймлайне элемента смарт-процесса. В итоге все вроде бы создается, но из Битрикса напрямую не открыть. В смарт-процессах видел роботов, но, как я понял из вебинаров, они работают только с делами сущности. Непонятно, как их использовать, если дела не создаются.
Подскажите, можно ли как-то при такой синхронизации добавить меню документов в карточку смарт-процесса (как у сделок и т.п.)? Есть ли способ создавать дела в таймлайне для открытия УПД из смарт-процесса / настройки на них роботов?
И еще такая костыльная идея есть - из сделки создать документ в 1С через Бэкофис, при этом в таймлайн сделки приходит дело, а в смарт-процессе создается новый элемент (приходит из 1С по синхронизации). Далее дело из сделки перемещаем в этот элемент смарта через \CCrmActivity::SaveBindings (битрикс коробка), в итоге получается смарт-УПД с привязанным делом по самому себе. И далее роботами работаем с ним. Такое может сработать?
Добрый день! Подскажите, пожалуйста Пробуем настроить интеграцию 1С и Битрикс-24 с помощью роботов и триггеров Нашли робот "Создание документа на основании", который позволяет создать в 1С новый документ на основании существующего документа из таймлайна сделки. Но как настроить этот робот, чтобы создать документ по данной сделке впервые? Например, автоматически создать счет покупателю по новой сделке, чтобы потом на его основании создавать УПД и т.п. Тогда можно будет настроить работу для менеджеров в Б24 полностью без захода в 1С.
Генератор документов - феррари на которой можно ездить только вокруг дома, Новый модуль получился хорошим но не предназначен для использования разработчиками.
Проверил разные варианты "Контролировать загрузку дубликатов файлов" и правда было включено А по самой проблеме - вероятнее всего, это из-за особенностей поля типа файл именно в сущности смарт-процессов Попробовал через обычный БП заполнить в поле типа "файл" id файла на смарт-процессе и на контакте При этом один и тот же файл в контакте отображается правильной ссылкой типа '.../bitrix/components/bitrix/crm.contact.show/show_file.php?...', а именно в смарт-процессе стоит абсолютный путь То же самое при ручной загрузке файла в поле, только в смартах показывает абсолютый путь Но по почте файл из поля нормально отправляется, а для менеджера вывел через диск и комментарий в таймлайне, так что можно сказать, что решилась проблема Спасибо за помощь
Генератор документов - феррари на которой можно ездить только вокруг дома, Новый модуль получился хорошим но не предназначен для использования разработчиками.
Подскажите, пожалуйста, как нормально сохранить PDF файл, который получили при генерации (пример из документации), в карточку лида / сделки / смарт-процесса и т.п.? Вот, что я делаю: 1)создаю документ по PHP API 2)подписываюсь на событие onDocumentTransformationComplete и ожидаю от него ответа 3)получаю документ
6)файл в поле прикрепляется, и все, вроде бы, отлично НО! При клике на файл в поле он сохраняется без расширения. Он называется просто 'mckgetv1vfbc8i7mpagflirf95lc87tb'. Если скачанному файлу проставить расширение вручную, то есть переименовать в 'mckgetv1vfbc8i7mpagflirf95lc87tb.pdf' - файл открывается. Если рядовой пользователь будет такое скачивать - запутается. Я пробовал много способов это исправить. После формирования массива файла добавлять насильно расширения в элементы массива, переименовывать файл в папке /upload/documentgenerator, сохранять файл на диск к боту, копировать файл в свою папку, создавать массив файла через внешнюю ссылку на скопированный файл, но такое ощущение, что все это лишь передает ссылку на изначальный файл, не создавая его реальной копии. Так, при наведении на поле внутри карточки, всплывает ссылка на скачивание вида 'схема/домен/upload/documentgenerator/3ca/mckgetv1vfbc8i7mpagflirf95lc87tb' И она всегда остается неизменной, и по ней всегда скачивается файл без расширения. Я даже скачал файл к себе на компьютер, прописал расширение, загрузил его назад в поле руками, и... ссылка не поменялась, там снова upload/documentgenerator! Как будто он по содержимому понял, что это тот же самый файл. Остальные файлы при ручной загрузке попадают в upload/main, upload/crm и т.п. Я даже удалил папку documentgenerator/3ca, но ссылка все равно ведет туда и скачивается то же самое. Поэтому прошу помощи - как это нужно сделать по-нормальному? Чтобы из поля скачивался файл сразу с расширением '.pdf'. Спасибо.
Есть задача работать с элементами смарт-процессов через API в коробке Документация вроде имеется, но все как-то по кускам Полдня копался в описании нового ядра и в самом этом ядре, набросал основные методы для себя Возможно, кому-то сэкономит время [CODE]//---------------Общие действия для всех запросов--------------- //подключение пролога require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
//подключение классов / модулей use Bitrix\Main\Loader; use Bitrix\Crm\Service; use Bitrix\Crm\Item; Loader::includeModule("crm");
//---------------Действия с элементами--------------- //получение списка элементов по фильтру $parameters = array( 'select' => array(), // имена полей, которые необходимо получить в результате 'filter' => array('<ID' => 100), // описание фильтра для WHERE и HAVING 'group' => array(), // явное указание полей, по которым нужно группировать результат 'order' => array(), // параметры сортировки 'limit' => 0, // количество записей 'offset' => 0, // смещение для limit 'runtime' => array(), // динамически определенные поля ); $allItems = $factory->getItems($parameters); $rows = array(); foreach ($allItems as $item) { $rows[] = $item->getCompatibleData(\Bitrix\Main\ORM\Objectify\Values::ALL); //getData - для вида полей "нового API" } echo '<pre>'; print_r($rows); echo '</pre>';