Встала передо мной задача выводить выбираемые менеджером заказы на печать. Для того, чтобы не переписывать лишний раз функционал вывода заказов пользователя, решил привязаться к системной странице со списком заказов в админ-панели. Для этого нужно просто добавить в этом списке кнопку и JS-обработчик нажатия на данную кнопку.
Чтобы вывести свою кнопку в списке разделов, воспользуемся обработчиком события "OnProlog" главного модуля (опишу пока в формате старого ядра, т.к. сайт не обновляется уже больше года:():
AddEventHandler("main", "OnProlog", array("clInitMaxline", "OnEndBufferContentHandler")); AddEventHandler("main", "OnProlog", array("clInitMaxline", "OnEndBufferContentHandler")); class clInitMaxline{ function OnEndBufferContentHandler() { if (defined("ADMIN_SECTION") && $GLOBALS["APPLICATION"]->GetCurPage() == "/bitrix/admin/sale_order.php") { // подключаем обработчик для нужной страницы в админ-панели // нам нужен JQUERY, чтобы с его помощью производить манипуляции с dom-структурой \CJSCore::Init(array("jquery")); // дальше формируем тот кусок js-кода, который нужно добавить на нужной странице: ob_start(); ?><script type="text/javascript"> var printjQ = false; function initOrderPrintBtnJQ() { var pathName = window.location.pathname; if (pathName == "/bitrix/admin/sale_order.php" && !printjQ) { $(function () { $('#tbl_sale_order_result_div .adm-list-table-top').append( '<a class="adm-btn adm-btn-save" href="javascript:void(0)" ' + 'id="btnPrintOrder" ' + 'data-action="/путь к обработчику ajax-запроса" ' + 'title="Вывести на печать" >' + 'Вывести на печать' + '</a>' ); $('#tbl_sale_order_result_div').on('click', 'a#btnPrintOrder', function () { var that = this; var orders = []; var table = $('#tbl_sale_order'); table.find('tbody tr.adm-list-table-row').each(function () { var orderID = $(this).find('input[name="ID[]"]').val(); orders.push(parseInt(orderID)); }); if ($(that).data('action') !== undefined) { $.post($(that).data('action'),{orders: orders}, function (data) { // тут обрабатываем полученный результат - если с сервера вернулся url-файла - просто отдаем этот файл на загрузку if(data.url!==undefined){ window.location.href = data.url; } } ); } return false; }); printjQ = true; }); } } initOrderPrintBtnJQ(); </script><? $sContent = ob_get_clean(); $GLOBALS['APPLICATION']->AddHeadString($sContent); } } }
Все! Таким образом, рядом с кнопками "Добавить заказ" и "Архивирование заказов" появится еще одна, наша кнопка. При нажатии на данную кнопку, будут получены все заказы с текущей страницы (если нужно обрабатывать все заказы - тут можно обрабатывать url - разбирать параметры адресной строки, вытягивать из них фильтр и отправлять уже не ID-шники товаров, а параметры для выборки заказов из базы). Оставется реализовать скрипт, принимающий ajax-запрос и производящий обработку данных.
Разработка сайта
Подайте заявку на разработку сайта на базе готового решения от компании 1С-Битрикс или одного из партнеров компании. Максимально подробно опишите, чему будет посвящен сайт, если это интернет-магазин - что он будет продавать, нужна ли мультиязычность, будут ли разные типы цен (розница, опт, крупный опт), будет ли интеграция с 1С, будет ли выгрузка товаров на различные торговые площадки...
Сопровождение сайта
Вы можете подать заявку на сопровождение вашего сайта на базе 1С-Битрикс. Сопровождение включает в себя: проверка актуальности обновлений сайта, проверка актуальности резервной копии, консультации по сайту. Опишите в заявке, какие еще объемы планируются на сопровождении и на какой срок вы планируете заключить договор на сопровождение - мы подберем подходящий вам бюджет на сопровождение
Работы по сайту
Вы можете подать заявку на выполнение определенного объема работ по сайту. Опишите в заявке объем работ. Это может быть разработка какого-то нового функционала, доработки по имеющемуся функционалу, доработки под требования сео-специалистов. На основании заявки вам будет сформирован бюджет работ, а также названы сроки на выполнение тех или иных работ.