г. Санкт-Петербург
Войти
Логин
Пароль
Зарегистрироваться
После регистрации на сайте вам будет доступно отслеживание состояния заказов, личный кабинет и другие новые возможности
Заказать звонок
Логин
Пароль
Зарегистрироваться
После регистрации на сайте вам будет доступно отслеживание состояния заказов, личный кабинет и другие новые возможности
Логин
Пароль
Зарегистрироваться
После регистрации на сайте вам будет доступно отслеживание состояния заказов, личный кабинет и другие новые возможности


1
2
3
4
5
Включение у всех пользователей уведомлений календаря событий по электронной почте, Часто нужно включить или выключить уведомления у всех
 
Для коробочной версии:

Можно выполнить код:
Код
\Bitrix\Main\Loader::IncludeModule('im');

/**
 * @var integer Чьи настройки берем (id)
 */
$fromUserId = 1;

/**
 * @var integer Кому их сохраняем (id)
 */
$toUserId = 2;

$userSettings = CIMSettings::Get($fromUserId);

foreach ($userSettings as $type => $value)
{
  CIMSettings::Set($type, $value, $toUserId);
}
Изменение перечня или таблицы заказа NEW_ORDER, SALE_NEW_ORDER - Добавление красивой таблицы товаров количества цены и суммы
 
Очень часто "хочется" вывести не просто "тупо" перечень товара а с информацией для покупателя сколько по какой цене и сумме

Для подключения данной "функции" предлагается скрипт который нужно вставить

в 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 код почтового шаблона будет выглядеть так например:
Код
<table cellpadding="10" cellspacing="10"  style="border:1px solid #d1d1d1;margin:0 auto" border="1">
#ORDER_TABLE_ITEMS#
</table>

а код функции соответственно:
Код
//#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")
               );


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>";
  }


  //ОБЪЯВЛЯЕМ ПЕРЕМЕННУЮ ДЛЯ ПИСЬМА
  $arFields["ORDER_TABLE_ITEMS"] = $strCustomOrderList; 
} 
}
Автоматическая смена баннеров для старых версий 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@
после вставки код начнет случайным образом выводить баннеры

пример можно посмотреть на внутренних страницах smesx.ru И ruposuda.ru
Битрикс поиск по артикулу добавляем скрипт ре-индексации и агента, Bitrix поиск по артикулу
 
Битрикс может всё , но по умолчанию ничего не умеет :)
Если у вас не ищет по артикулу или другому полю читайте
Отличная статья на тему включения галки есть у АсПро

https://aspro.ru/kb/article/20/

но проблема может повторится например если вы добавляете товары через csv импорт и другими автоматизированными способами.

Добавляем скрипт в init.php

Код
function Reindex_Search()// реиндексация поиска
 
{
if(CModule::IncludeModule("search"))
   {
 
$Result= false; 
$Result = CSearch::ReIndexAll(true, 60);
 
while(is_array($Result))
       { 
   $Result = CSearch::ReIndexAll(true, 60, $Result);
       }
    }
 return "Reindex_Search();";
}

Создаем агента указываем дату выполнения и время сегодня через 10 минут например:

ставим галку активен.

Модуль: ничего не пишем

Функция агента: Reindex_Search();

Выставляем запуск по интервалу: 86400 (Раз в 24 часа) в идеале поставить на ночь.

на всякий случай справка по функции которая используется для реидексации:

Функция bitrix api для переиндексации сайта — CSearch::ReIndexAll. Она принимает 4 параметра:
  1. Если
    равен true, то на первом шаге поисковый индекс будет полностью очищен.
    По умолчанию равен false, что приводит к перестройке индекса только тех
    элементов, содержимое которых изменилось.
  2. Если задан и больше
    нуля, то как только время выполнения функции превысит значение этого
    параметра, её выполнение завершится. Данные для начала следующего шага
    будут возвращены как результат работы функции.
  3. Хранит состояние процесса индексации (прогресс) на начало шага.
  4. Удаляет историю/статистику подсказок для строки поиска. Необязательный параметр, по умолчанию принимает значение false.
Для больших сайтов возможно потребуется доделать функцию, чтобы она не подвешивала сайт во время реиндексации но это уже вопрос другой статьи
Ситуация с доступами к модулям INTEC, Любой пользователь с доступом в админку может управлять модулями ИНТЕК
 
Это относится как к конструктору,
решениям MATILDA & INTEC UNIVERSE

и любой пользователь сайта с доступом в админскую часть может "сломать" дизайн или удалить и перенастроить модуль

(непонятно почему они вообще доступны пользователям без прав, но пока вот как то так)

Остальные решения не тестировали но возможно и там есть вопросы.

пользователь НЕ имеющий прав по умолчанию доступ имеет и даже если поставить ему запрет на доступ то он всё равно имеет доступ.

Доступ можно ограничить используя файл
/bitrix/admin/.access.php

установив следующие "разрешения" на доступ к файлам.
Код
<?
$PERM["constructor_fonts.php"]["5"]="D";
$PERM["constructor_blocks_templates.php"]["5"]="D";
$PERM["constructor_blocks_categories.php"]["5"]="D";
$PERM["intec_universe.php"]["5"]="D";
$PERM["chatbot_result.php"]["5"]="D";
?>
Выглядит топорно, но пока других решений предложено не было.
Проблема после нескольких обновлений wp при попытке загрузить картинку или MediaFile в пост с помощью сторонних плагинов, Через стандартный загрузчик, всё работает но через какое то время ajax загрузчик перестает обрабатывать вызовы не из админки
 
Встречается часто ситуация когда вы получаете при загрузке изображений по кнопке "Добавить медиафайл"

You dont have permission to attach files to this post” on Wordpress

Решение уже найдено на английских сайтах поэтому кому нужен оригинал

https://stackoverflow.com/questions/31885086/error-you-dont-have-permission-to-attach-files-to-this-post-on-wordpress

продублирую на русском:


Проблема в том что аяксовая часть всё равно продолжает запрещать загружать фото даже после того как хтмл загрузчик позволяет.

решается так:


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();
    }

Он проверяет есть ли у пользователя права на редактирование данного материала, Часто нет возможности дать права на редактирование всех материалов и требуется разрешать редактировать только собственные.
Проблема при печати торг 12 метод объекта не обнаружен СформироватьШтрихКод, При печати Торг12 Метод объекта не обнаружен (СформироватьШтрихкод)
 
Вопрос исправляется "Возвращением фукнции" из архива: Добавляем в общий модуль функцию: Функция СформироватьШтрихкод(Знач лДата, Знач лНомер, Знач лСумма, КодПечатнойФормы = Неопределено) Экспорт строкаСуммаДокумента = Формат(лСумма, "ЧЦ=15; ЧДЦ=2; ЧВН=; ЧГ="); строкаСуммаДокумента = СтрЗаменить(строкаСуммаДокумента, ",", ""); строкаСуммаДокумента = СтрЗаменить(строкаСуммаДокумента, ".", ""); строкаСуммаДокумента = ?(ЗначениеЗаполнено(строкаСуммаДокумента), Прав(строкаСуммаДокумента, 9), "000000000"); Штрихкод = "272" + Лев(Формат(НачалоГода(лДата), "ДФ=yyyy-MM-dd"), 4) + ?(КодПечатнойФормы = Неопределено, "AC", КодПечатнойФормы) + СформироватьКодНомерЛатиницей(лНомер) + строкаСуммаДокумента; Возврат Штрихкод; КонецФункции
Проблема при печати торг 12 метод объекта не обнаружен СформироватьШтрихКод, При печати Торг12 Метод объекта не обнаружен (СформироватьШтрихкод)
 

Обнаружена проблема в Бухгалтерии 2.0 версии 2.0.66.90 от 30.12.2019г

Не печатает Торг12 в Бухгалтерии предприятия 2.0.66.90

Нету функции

СформироватьШтрихкод

В общем модуле.УчетНДС.

В результате при попытке печати получаем:

{Документ.РеализацияТоваровУслуг.МодульОбъекта(1062)}: Метод объекта не обнаружен (СформироватьШтрихкод)

ОбластьМакетаШапка.Рисунки.BarCode.Объект.Сообщение = УчетНДС.СформироватьШтрихкод(Шапка.ДатаДокумента, Шапка.Номер, ТабличнаяЧасть.Итог("Сумма") + ?(Шапка.СуммаВключаетНДС, 0, ТабличнаяЧасть.Итог("СуммаНДС")));

Утилита печати ШК у нас установлена и никуда не девалась, переустановка не помогла.

Как временный вариант до выхода следующего релиза можно поставить заглушку в модуль на вызов этой функции.

Загрузка данных из экселя в управляемых формах, Очень часто требуется простая и универсальная обработка загружающая данные
 
Как не странно но такие бывают и почти бесплатно, Добрый человек разместил ее на инфостарте всего за 1 старт мани: https://infostart.ru/public/269425/ Проверено в бухгалтерии версии 3.0.75.48 хотя подойдет для любой конфигурации с управляемыми формами. из плюсов у обработки открытый код, можете спокойно исправить если вас чтото не устраивает в базовом функционале. Хотя уже в "базе" Она усмеет спокойно загружать данные в табличную часть документов. В нашем случае мне потребовалось загрузить данные в документ ввод остатков как не странно эта операция базовым функционалом не реализуется.. При загрузке любой табличной части обрабтка получает названия полей из ТЧ и если они есть в файле находит их сама (не проверялось) но если вам лень называть их также, можно просто указать номера столбцов (любое количество) 1. Как большой плюс я бы отметил "умение" подставлять "значение по умолчанию" , можно сразу заполнить Счет или Партию нужным документом. Любое поле можно "искать" по коду или наименованию (и д.р. варианты) или установить или "вычислять" см. фото из вложения 2. удобно также что есть пропуск верхних строк для того чтобы заголовок эксель файла не попадал в справочники. 3. возможность сохранять настройки в спец файл, чтобы каждый раз не настраивать с нуля. 4. Для продвинутых пользователей можно добавить код "перед/при запис/после добавления строки", удобно, хотя если ты с руками можно открыть конфигуратор и сделать самому тоже самое, но всё же плюсик. Обработка также грузит в справочник , в табличную часть (причём в любую если их несколько) и в регистр сведений. автору однозначно плюс в карму.
Выгрузка данных из сервиса моё дело в 1С, Как можно выгрузить данные из облачного сервиса мое дело в 1С
 
Сервис мое дело позволяет вести дела так же как и 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. Внимательно по кнопке "Загрузить в базу" данные сразу попадут в документ "Приходная накладная", причём каждое нажатие формирует новый документ Из минусов, нет вариантов в какой конкретно документ грузить данные и выбор типа документа так же отсутствует. Обработка довольно сырая так, что иногда выпадает с ошибкой и не срабатывает если что-то при загрузке идет не так обычно проблема в не верных данных например отрицательный остаток или если в полях остаков или цен строка вместо цифры. В остальном загрузка идет быстро и документ сразу проводится
1
2
3
4
5