- Форум CRM программы Клиентская база
- → Публикации Zver
Публикации Zver
6 публикаций создано Zver (учитываются публикации только с 14-Май 23)
#38149 Чем Вы выполняете компилирование шаблона Word
Отправлено от Zver в 14 Ноябрь 2017 - 10:11 in Разработчикам
Воспользоваться функцией send_template не получится. По этому решено написать самому. Существует много библиотек для решения этой задачи, но в КБ какая-то уже есть. К сожалению, реализация функция send_template находится в одном из зашифрованных файлов. Прошу Вас сказать какая библиотека используется в КБ для создания Word-документов, чтобы не добавлять лишних библиотек.
#38157 Чем Вы выполняете компилирование шаблона Word
Отправлено от Zver в 15 Ноябрь 2017 - 09:36 in Разработчикам
Но меня интересует какую библиотеку для формировании документа вы используете в этой функции? Или Вы сами реализовали формирование документа? Есть несколько ограничений которые не дают реализовать через стандартные шаблоны.
#38197 Чем Вы выполняете компилирование шаблона Word
Отправлено от Zver в 21 Ноябрь 2017 - 10:59 in Разработчикам
#38201 Чем Вы выполняете компилирование шаблона Word
Отправлено от Zver в 22 Ноябрь 2017 - 08:23 in Разработчикам
#38232 Чем Вы выполняете компилирование шаблона Word
Отправлено от Zver в 27 Ноябрь 2017 - 09:11 in Разработчикам
function compile_template($template_file, $output_file, $data) { $tmp_file_name = tempnam(sys_get_temp_dir(), 'tmp_php_'); copy($template_file, $tmp_file_name); $zip = new ZipArchive(); if ($zip->open($tmp_file_name)) { $settings_content = $zip->getFromName('word/settings.xml'); $settings = new SimpleXMLElement($settings_content); $doc_vars = $settings->{'w:docVars'}; if (!$doc_vars) { $doc_vars = $settings->addChild('w:docVars'); } foreach ($data as $key => $value) { $child = $doc_vars->addChild('w:docVar'); $child->addAttribute('w:name', $key, 'http://schemas.openxmlformats.org/wordprocessingml/2006/main'); $child->addAttribute('w:val', $value, 'http://schemas.openxmlformats.org/wordprocessingml/2006/main'); } $update_fields = $settings->{'w:updateFields'}; if (!$update_fields) { $update_fields = $settings->addChild('w:updateFields'); } $update_fields->addAttribute('w:val', 'true', 'http://schemas.openxmlformats.org/wordprocessingml/2006/main'); $zip->deleteName('word/settings.xml'); $zip->addFromString('word/settings.xml', $settings->asXML()); } $zip->close(); if ($output_file == 'php://output') { header('Cache-Control: max-age=0'); header('Content-Description: File Transfer'); header('Content-Transfer-Encoding: binary'); header('Content-Length: ' . filesize($tmp_file_name)); readfile($tmp_file_name); } else { file_put_contents($output_file, file_get_contents($tmp_file_name)); } unlink($tmp_file_name); }использование
// Для того чтобы скачать скомпилированный шаблон header('Content-Disposition: attachment; filename="Договор.docx"'); compile_template('document.docx', 'php://output', array('ID' => '123')); // или если необходимо сохранить на сервере compile_template('document.docx', 'compiled_document.docx', array('ID' => '123'));
PS. не говорю что это конечный вариант... данная функция ещё будет мной дорабатываться, но это уже рабочий вариант. Боюсь что потом могу забыть поделиться, поэтому делюсь сейчас.
#32643 Встроенное API
Отправлено от Zver в 18 Февраль 2017 - 11:57 in Разработчикам
send_command_server($base_url . 'api/data/read', array( 'access_id' => $access_id, 'table_id' => 123, 'cals' => false, 'fields' => array(), 'filter' => array('row' => array( 'id' => array('term' => '=', 'value' => 0)) ), 'sort' => array(), 'start' => 0, 'limit' => 10 ));получаю ответ: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'fields.id' in 'field list'. Причем текст ответа не меняется при изменении ID-таблицы. Данные из этой таблицы получить удаётся.
2. В ответ на запрос приходят все существующие поля, хотя в правах выставлен доступ только к некоторым. Возможна эта ошибка как то связана с первой.
3. Хочется чтобы появилась возможность создание пользовательского API?
4. Я так понял в фильтре еще не реализована ситуация когда term = in. Не хватает. :-(
send_command_server($base_url . 'api/data/read', array( 'access_id' => $access_id, 'table_id' => 123, 'cals' => false, 'fields' => array(), 'filter' => array('row' => array( 'status' => array('term' => '=', 'value' => 0, 'union' => 'and'), 'id' => array('term' => 'in', 'value' => join(',', array(20, 21, 22, 216, 217, 218, 277, 278, 940)))) ), 'sort' => array(), 'start' => 0, 'limit' => 10 ));
- Форум CRM программы Клиентская база
- → Публикации Zver