Очень часто "хочется" вывести не просто "тупо" перечень товара а с информацией для покупателя сколько по какой цене и сумме
Для подключения данной "функции" предлагается скрипт который нужно вставить
в init.php
в результате чего появится
переменная: #ORDER_TABLE_ITEMS#
которую уже в свою очередь можно отформатировать нужным образом в файле init.php
В этом варианте таблица целиком вставляется функцией и нужно просто вставить #ORDER_TABLE_ITEMS#
Код
//#ORDER_TABLE_ITEMS# - выводит в таблице строки заказа <tr><td> о <table> и закрывающем теге нужно подумать самостоятельно в настройках шаблона.
AddEventHandler("sale", "OnOrderNewSendEmail", "ModifyOrderSaleMails");
function ModifyOrderSaleMails($orderID, &$eventName, &$arFields)
{
if(CModule::IncludeModule("sale") && CModule::IncludeModule("iblock"))
{
//СОСТАВ ЗАКАЗА РАЗБИРАЕМ SALE_ORDER НА ЗАПЧАСТИ
$strOrderList = "";
$dbBasketItems = CSaleBasket::GetList(
array("NAME" => "ASC"),
array("ORDER_ID" => $orderID),
false,
false,
array("PRODUCT_ID", "ID", "NAME", "QUANTITY", "PRICE", "CURRENCY")
);
$strCustomOrderList .= '<table cellpadding="10" cellspacing="10" style="border:1px solid #d1d1d1;margin:0 auto" border="1">';
while ($arProps = $dbBasketItems->Fetch())
{
//ПЕРЕМНОЖАЕМ КОЛИЧЕСТВО НА ЦЕНУ
$summ = $arProps['QUANTITY'] * $arProps['PRICE'];
//СОБИРАЕМ В СТРОКУ ТАБЛИЦЫ
$strCustomOrderList .= "<tr><td>".$arProps['NAME']."</td><td>".$arProps['QUANTITY']."</td><td>".$arProps['PRICE']."</td><td>".$arProps['CURRENCY']."</td><td>".$summ."</td><tr>";
}
$strCustomOrderList .= '</table>';
//ОБЪЯВЛЯЕМ ПЕРЕМЕННУЮ ДЛЯ ПИСЬМА
$arFields["ORDER_TABLE_ITEMS"] = $strCustomOrderList;
}
}
В этом варианте ничего особенно не меняется но создание таблицы вынесено на почтовый шаблон иначе всё поедет , зато вы сможете добавить нужную вам css разметку:
теперь вставка в Html код почтового шаблона будет выглядеть так например:
Автоматическая смена баннеров для старых версий phpshop 3.х.х, Часто баннеров много, показывать все и везде не логично, хочется сделать рандомную смену баннеров на внутренних или внешней странице, решение для пхпшоп
За реализацию полноценной баннерной системы в старой версии никто платить не будет, а значит делаем максимально просто.
те кто уже давно общается с phpshop давно обнаружили, что все основное содержание шаблона магазина находится в двух файлах темплейта \templates\Имя-шаблона\main shop.tpl и index.tpl нас интересуют внешние страницы:
shop.tpl
указанный ниже текст вставляется прямо в код в нужном месте размеры баннеров и описания классов приводить не буду они не принципиальны
Код
@php
if (in_array(substr($_SERVER['REQUEST_URI'], 0, 6), array("/order"))) {
//здесь банер корзины (для нее отдельный баннер выводим (можно тоже сделать по аналогии с нижними меняющийся)
$xml = <<<XML
<div class="col5">
<a href=/order><img src=/UserFiles/Image/_banners/bannerPromo1.jpg alt="Текст баннера для корзины"></a>
</div>
XML;
} else {
$datarand = intval($_COOKIE['datarand']);
if ($datarand == 0) {
$bnr_rand = '<a href = /novinki/novinki.html><img src="/UserFiles/Image/_banners/864x100-banner_1.jpg" alt="Товары месяца"></a>';
$datarand++;
} else if ($datarand == 1) {
$bnr_rand = '<a href = /spec/spec.html><img src="/UserFiles/Image/_banners/864x100-banner_2.jpg" alt="Товары месяца"></a>';
$datarand++;
} else if ($datarand == 2) {
$bnr_rand = '<a href = /shop/series_140764.html><img src="/UserFiles/Image/_banners/864x100-banner_3.jpg" alt="Товары месяца"></a>';
$datarand = 0;
} else {
$bnr_rand = '<a href = /novinki/novinki.html><img src="/UserFiles/Image/_banners/864x100-banner_1.jpg" alt="Товары месяца"></a>';
$datarand = 0;
}
setcookie('datarand',$datarand,time()+60*60*24*1,"/");
echo $bnr_rand;
}
echo $xml;
php@
после вставки код начнет случайным образом выводить баннеры
Битрикс может всё , но по умолчанию ничего не умеет Если у вас не ищет по артикулу или другому полю читайте Отличная статья на тему включения галки есть у АсПро
Создаем агента указываем дату выполнения и время сегодня через 10 минут например:
ставим галку активен.
Модуль: ничего не пишем
Функция агента: Reindex_Search();
Выставляем запуск по интервалу: 86400 (Раз в 24 часа) в идеале поставить на ночь.
на всякий случай справка по функции которая используется для реидексации:
Функция bitrix api для переиндексации сайта — CSearch::ReIndexAll. Она принимает 4 параметра:
Если равен true, то на первом шаге поисковый индекс будет полностью очищен. По умолчанию равен false, что приводит к перестройке индекса только тех элементов, содержимое которых изменилось.
Если задан и больше нуля, то как только время выполнения функции превысит значение этого параметра, её выполнение завершится. Данные для начала следующего шага будут возвращены как результат работы функции.
Хранит состояние процесса индексации (прогресс) на начало шага.
Удаляет историю/статистику подсказок для строки поиска. Необязательный параметр, по умолчанию принимает значение false.
Для больших сайтов возможно потребуется доделать функцию, чтобы она не подвешивала сайт во время реиндексации но это уже вопрос другой статьи
Проблема после нескольких обновлений wp при попытке загрузить картинку или MediaFile в пост с помощью сторонних плагинов, Через стандартный загрузчик, всё работает но через какое то время ajax загрузчик перестает обрабатывать вызовы не из админки
Проблема в том что аяксовая часть всё равно продолжает запрещать загружать фото даже после того как хтмл загрузчик позволяет.
решается так:
wp-admin/includes/ ajax-actions.php, Нужно удалить следующую часть
Код
if ( isset( $_REQUEST['post_id'] ) ) {
$post_id = $_REQUEST['post_id'];
if ( ! current_user_can( 'edit_post', $post_id ) ) {
echo wp_json_encode( array(
'success' => false,
'data' => array(
'message' => __( "You don't have permission to attach files to this post." ),
'filename' => $_FILES['async-upload']['name'],
)
) );
wp_die();
}
}
Обратите внимание, на то, что удалить нужно только часть
Код
if ( ! current_user_can( 'edit_post', $post_id ) ) {
echo wp_json_encode( array(
'success' => false,
'data' => array(
'message' => __( "You don't have permission to attach files to this post." ),
'filename' => $_FILES['async-upload']['name'],
)
) );
wp_die();
}
Он проверяет есть ли у пользователя права на редактирование данного материала, Часто нет возможности дать права на редактирование всех материалов и требуется разрешать редактировать только собственные.
Как не странно но такие бывают и почти бесплатно,
Добрый человек разместил ее на инфостарте всего за 1 старт мани:
https://infostart.ru/public/269425/
Проверено в бухгалтерии версии 3.0.75.48
хотя подойдет для любой конфигурации с управляемыми формами.
из плюсов у обработки открытый код, можете спокойно исправить если вас чтото не устраивает в базовом функционале.
Хотя уже в "базе"
Она усмеет спокойно загружать данные в табличную часть документов.
В нашем случае мне потребовалось загрузить данные в документ ввод остатков как не странно эта операция базовым функционалом не реализуется..
При загрузке любой табличной части обрабтка получает названия полей из ТЧ и если они есть в файле находит их сама (не проверялось)
но если вам лень называть их также, можно просто указать номера столбцов (любое количество)
1. Как большой плюс я бы отметил "умение" подставлять "значение по умолчанию" , можно сразу заполнить Счет или Партию нужным документом.
Любое поле можно "искать" по коду или наименованию (и д.р. варианты) или установить или "вычислять"
см. фото из вложения
2. удобно также что есть пропуск верхних строк для того чтобы заголовок эксель файла не попадал в справочники.
3. возможность сохранять настройки в спец файл, чтобы каждый раз не настраивать с нуля.
4. Для продвинутых пользователей можно добавить код "перед/при запис/после добавления строки", удобно, хотя если ты с руками можно открыть конфигуратор и сделать самому тоже самое, но всё же плюсик.
Обработка также грузит в справочник , в табличную часть (причём в любую если их несколько) и в регистр сведений.
автору однозначно плюс в карму.
Сервис мое дело позволяет вести дела так же как и 1С, с разницей в том что доступ идет к облачным ресурсам,
Задача стояла в выгрузке данных из "Мое дело" в 1С УНФ ("Управление нашей фирмы 1.6.19.160)
От технической поддержи не удалось получить какой либо выгрузки, поэтому за не имением времени на поиск решений
решено было начать выгрузку используя штатную возможность экспорта в эксель.
Чтобы не изобретать велосипед логично было воспользоваться существующими обработками для загрузки данных
После проверки некоторых демо версий с infostart.ru
выяснилось что не все обработки поддерживают конфигурацию УНФ по причине ее НЕ большой популярности.
Не будем писать о неудачных попытках и октровенно странно работающих обработках, (хотя как обычно в описании заявлена что она чуть ли не кофе варит)
Была выбрана довольно простая система
https://infostart.ru/public/696233/
Обработка 696233
К сожалению она написана на старом COM компоненте и не использует новых возможностей 1С, так что для ее работы потребуется установленный эксель , тестровалось с версией Office 2010
Для работы с УНФ была взята обработка Простая и универсальная Загрузка поступлений и установка цен 1.1. УНФ 1.6
Настройки не велики
В первую очередь придется модифицировать получаемый файл и изменить название первого листа на TDSheet,
заодно можно удалить первую строку с Названиями колонок т.к обработка автоматически этого не делает.
1. Указываете столбцы для загрузки
Номенклатура 2
Цена и остаток 5 и 7 в моем случае.
2. Выбираете модицифированный файл из Мое дело
3. Кнопка "Загрузить из файлы" получает данные в таблицу которую можно сразу же и подправить. (Удалить не нужные строки)
4. Внимательно по кнопке "Загрузить в базу" данные сразу попадут в документ "Приходная накладная", причём каждое нажатие формирует новый документ
Из минусов, нет вариантов в какой конкретно документ грузить данные и выбор типа документа так же отсутствует.
Обработка довольно сырая так, что иногда выпадает с ошибкой и не срабатывает если что-то при загрузке идет не так обычно проблема в не верных данных
например отрицательный остаток или если в полях остаков или цен строка вместо цифры.
В остальном загрузка идет быстро и документ сразу проводится