Еще нужно не забывать подключать пространство для использования фильтров. Без него критических ошибок не будет, но и фильтры работать не будут.
use Bitrix\Main\Engine\ActionFilter;
use Bitrix\Main\Engine\ActionFilter;
17.10.2019 14:22:34
Как же я "люблю" битрикс за его доку и комментарии
В общем у нас есть данные которые нужно добавить в реквизиты контакта Этот массив содержит пример данных которые нужно добавить в реквизит [CODE]{ "ENTITY_TYPE_ID":4, // Тип родительской сущности (1 - Лиды, 2 - Сделки, 3 - Контакты, 4 - Компании, 5 - Счета, 6 - Дела, 7 - Предложения, 8 - Реквизиты, 9 - Направление сделки, 10 - Пользовательские действия, 11 - ожидания, 12 - обзвон, 13 - рекуррентные сделки, 14 - заказ, 15 - чек, 16 - отгрузка, 17 - оплата) "ENTITY_ID":20, //В данном случае ID Компании так как ENTITY_TYPE_ID = 4 "PRESET_ID":1, //Прессет тип компании Создается в bitrix 24 (Организация, ИП, Физ лицо) "NAME":"Организация 1", //Название реквизита "RQ_COMPANY_NAME":"Сокращенное наименование организации", //Сокращенное наименование организации "RQ_COMPANY_FULL_NAME":"Полное наименование организации", //Полное наименование организации "RQ_COMPANY_REG_DATE":"05.07.2019", //Дата регистрации компании "RQ_DIRECTOR":"Ген директор", //Ген директор "RQ_ACCOUNTANT":"Гл бухгалтер", //Гл бухгалтер "RQ_INN":"1111111111", //ИНН "RQ_KPP":"333333", //КПП "RQ_OGRN":"322222", //ОГРН "RQ_OGRNIP":"", //ОГРН Индивидуального предпринимателя "RQ_OKPO":"44444", //ОКПО "RQ_OKTMO":"66666", //ОКТМО "RQ_OKVED":"55555", //ОКВЕД "RQ_ADDR": //Массив из адресов, каждого типа может быть только по одному { "1":{ // Тип 1 - Фактический адрес "ADDRESS_1":"Улица, дом, корпус, строение Фактический адрес", //Улица, дом, корпус, строение "ADDRESS_2":"Квартира \/ офис", //Квартира / офис "CITY":"Город", //Город "REGION":"Район", //Район "PROVINCE":"Область", //Область "POSTAL_CODE":"Почтовый индекс", //Почтовый индекс "COUNTRY":"Страна", //Страна "COUNTRY_CODE":"" //Код Страны }, "4":{ //Тип 4 - Адрес регистрации "ADDRESS_1":"Улица, дом, корпус, строение Адрес регистрации", "ADDRESS_2":"Квартира \/ офис", "CITY":"Город", "REGION":"Район", "PROVINCE":"Область", "POSTAL_CODE":"Почтовый индекс", "COUNTRY":"Страна", "COUNTRY_CODE":"" }, "6":{ //Тип 6 - Юридический адрес "ADDRESS_1":"Улица, дом, корпус, строение Юридический адрес", "ADDRESS_2":"Квартира \/ офис", "CITY":"Город", "REGION":"Район", "PROVINCE":"Область", "POSTAL_CODE":"Почтовый индекс", "COUNTRY":"Страна","COUNTRY_CODE":"" }, "9":{ //Тип 9 - Адрес бенефициара "ADDRESS_1":"Улица, дом, корпус, строение", "ADDRESS_2":"Квартира \/ офис", "CITY":"Город", "REGION":"Район", "PROVINCE":"Область", "POSTAL_CODE":"Почтовый индекс", "COUNTRY":"Страна", "COUNTRY_CODE":"" } } }[/CODE]Этот массив нужен для добавления к реквизиту банковских данных [CODE]{ "ENTITY_TYPE_ID":8, //Здесь указывается ID типа реквизита в данном случае (8 - Реквизиты) "ENTITY_ID":9, //ID реквизита "COUNTRY_ID":1, //Незнаю что это, скорей всего ID страны но списка сопоставления нет "NAME":"Банковские реквизиты 1", //Банковские реквизиты "RQ_BANK_NAME":"Наименование банка", // Наименование банка "RQ_BANK_ADDR":"Адрес банка:", // Адрес банка "RQ_BIK":"55555555555", //БИК "RQ_ACC_NUM":"66666666666", //Расчетный счёт "RQ_ACC_CURRENCY":"tre", //Валюта счёта "RQ_COR_ACC_NUM":"777777777", // Кор. счёт "RQ_SWIFT":"SWIFT", //SWIFT "COMMENTS":"Комментарий" //Комментарий } [/CODE] Далее пишем код [CODE]CModule::IncludeModule("crm");//Первый массив $RequisitString = '{"ENTITY_TYPE_ID":4,"ENTITY_ID":20,"PRESET_ID":1,"DATE_CREATE":"17.10.2019 16:48:46","CREATED_BY_ID":1,"NAME":"Организация 1","RQ_COMPANY_NAME":"Сокращенное наименование организации","RQ_COMPANY_FULL_NAME":"Полное наименование организации","RQ_COMPANY_REG_DATE":"05.07.2019","RQ_DIRECTOR":"Ген директор","RQ_ACCOUNTANT":"Гл бухгалтер","RQ_INN":"1111111111","RQ_KPP":"333333","RQ_OGRN":"322222","RQ_OGRNIP":"","RQ_OKPO":"44444","RQ_OKTMO":"66666","RQ_OKVED":"55555","RQ_ADDR":{"1":{"ADDRESS_1":"Улица, дом, корпус, строение Фактический адрес","ADDRESS_2":"Квартира \/ офис","CITY":"Город","REGION":"Район","PROVINCE":"Область","POSTAL_CODE":"Почтовый индекс","COUNTRY":"Страна","COUNTRY_CODE":""},"4":{"ADDRESS_1":"Улица, дом, корпус, строение Адрес регистрации","ADDRESS_2":"Квартира \/ офис","CITY":"Город","REGION":"Район","PROVINCE":"Область","POSTAL_CODE":"Почтовый индекс","COUNTRY":"Страна","COUNTRY_CODE":""},"6":{"ADDRESS_1":"Улица, дом, корпус, строение Юридический адрес","ADDRESS_2":"Квартира \/ офис","CITY":"Город","REGION":"Район","PROVINCE":"Область","POSTAL_CODE":"Почтовый индекс","COUNTRY":"Страна","COUNTRY_CODE":"" },"9":{"ADDRESS_1":"Улица, дом, корпус, строение","ADDRESS_2":"Квартира \/ офис","CITY":"Город","REGION":"Район","PROVINCE":"Область","POSTAL_CODE":"Почтовый индекс","COUNTRY":"Страна","COUNTRY_CODE":""}},"RQ_BANK":{"1":{"ENTITY_TYPE_ID":8,"ENTITY_ID":9,"COUNTRY_ID":1,"NAME":"Банковские реквизиты 1","RQ_BANK_NAME":"Наименование банка","RQ_BANK_ADDR":"Адрес банка:","RQ_BIK":"55555555555","RQ_ACC_NUM":"66666666666","RQ_ACC_CURRENCY":"tre","RQ_COR_ACC_NUM":"777777777","RQ_SWIFT":"SWIFT","COMMENTS":"Комментарий"},"2":{"ENTITY_TYPE_ID":8,"ENTITY_ID":9,"COUNTRY_ID":1,"NAME":"Банковские реквизиты 1","RQ_BANK_NAME":"Наименование банка","RQ_BANK_ADDR":"Адрес банка:","RQ_BIK":"55555555555","RQ_ACC_NUM":"66666666666","RQ_ACC_CURRENCY":"tre","RQ_COR_ACC_NUM":"777777777","RQ_SWIFT":"SWIFT","COMMENTS":"Комментарий"}}}'; //Второй массив $BancAddString = '{"ENTITY_TYPE_ID":8,"ENTITY_ID":9,"COUNTRY_ID":1,"NAME":"Банковские реквизиты 1","RQ_BANK_NAME":"Наименование банка","RQ_BANK_ADDR":"Адрес банка:","RQ_BIK":"55555555555","RQ_ACC_NUM":"66666666666","RQ_ACC_CURRENCY":"tre","RQ_COR_ACC_NUM":"777777777","RQ_SWIFT":"SWIFT","COMMENTS":"Комментарий"}'; $Requisit = json_decode($RequisitString,256); $RequisitBanc = json_decode($BancAddString,256); $resuleAdd = Bitrix\Crm\EntityRequisite::add($Requisit);//Сюда пихаем первый массив $id = $resuleAdd->getId();//Из его результата получаем ID созданного реквизита $RequisitBanc['ENTITY_ID'] = $id;//Подставляем в ENTITY_ID ID реквизита $resuleAdd = Bitrix\Crm\EntityBankDetail::add($RequisitBanc);//Сюда пихаем второй массив с новым ENTITY_ID[/CODE] Набор полей в этих массивах не полный, там есть и другие поля. Как работать с тем чего не видишь ? Чтобы посмотреть доступные поля, можно зайти в класс данной сущности, к примеру Банковские реквизиты bitrix/modules/crm/lib/entitybankdetail.php Реквизиты bitrix/modules/crm/lib/entityrequisite.php ищем в них метод add И в самом начале вызова этого метода ловим стандартный набор данных при изменении этих сущностей через формы редактирования. [CODE]public function add($fields, $options = array()){ file_put_contents ( $_SERVER['DOCUMENT_ROOT'] . '/test.txt' , json_encode($fields, 256)."\n", FILE_APPEND);[/CODE] После чего анализируем что пришло. Это простейший метод отладки без доки для начинающих. |
|
|
17.06.2019 06:17:12
Разобрался, если указано пространство имен, то создаваемые объекты в методах тоже пытаются подключиться через подпространство, чтобы решить эту задачу нужно перед объявлением класса добавить слэш \ т.е.
Вот пара вариантов решения:[CODE]namespace Mmit\Sfca\Googles; class GoogleData{ public static function GetTestData(){ require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/mmit.sfca/vendor/autoload.php"); $client = new \Google_Client(); return $client; } } [/CODE]или[CODE]namespace Mmit\Sfca\Googles; use Google_Client; class GoogleData{ public static function GetTestData(){ require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/mmit.sfca/vendor/autoload.php"); $client = new Google_Client(); return $client; } }[/CODE] |
|
|
17.06.2019 05:39:58
Может быть сделать раздельные шаблоны, один для клиентов которые могут только галочки ставить, а другой для разработчиков, с упрощенной отрисовкой JS.
Конечно каждый разработчик и сам может своять свой компонент оформления заказов, но таким образом количество вопросов в этой теме не уменьшится ). |
|
|
16.06.2019 09:24:18
Помогите пожалуйста разобраться.
Собрал простой модуль и настроил. Сам по себе модуль работает как надо, но по какой то причине в нужном мне классе модуля не получается подключить нужные мне библиотеки собранные через composer. Залил в папку с модулем файл vendor, который собрал мне composer. Создал класс в котором необходимо использовать данные из этой библиотеки. Вот пример класса который должен отрабатывать. расположение файла с классом /bitrix/modules/mmit.sfca/lib/googles/googledata.php расположение файла библиотеки vendor /bitrix/modules/mmit.sfca/vendor/autoload.php [CODE]namespace Mmit\Sfca\Googles; class GoogleData{ public static function GetTestData(){ require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/mmit.sfca/vendor/autoload.php"); $client = new Google_Client(); return $client; } }[/CODE]но по какой то причине он мне выдает вот такую ошибку. [CODE][Error] Class 'Mmit\Sfca\Googles\Google_Client' not found (0) /var/www/u1111111/data/www/SITE_NAME/bitrix/modules/mmit.sfca/lib/googles/googledata.php:10 #0: Mmit\Sfca\Googles\GoogleData::GetTestData() /var/www/u1111111/data/www/SITE_NAME/bitrix/components/mmit/ #1: SfcaContext->executeComponent() /var/www/u1111111/data/www/SITE_NAME/bitrix/modules/main/cla #2: CBitrixComponent->includeComponent(string, array, NULL) /var/www/u1111111/data/www/SITE_NAME/bitrix/modules/main/cla #3: CAllMain->IncludeComponent(string, string, array) /var/www/u1111111/data/www/SITE_NAME/servis/index.php:338 [/CODE] Без использования $client = new Google_Client(); все нормально отрабатывает. Примечание: Данная конструкция класса нормально отрабатывает если ее вызывать непосредственно в самом компоненте или на любой странице сайта. Так же не получается подключить библиотеку через файл include.php в папке модуля, но даже если бы и получилось, такой вариант мня не устраивает, так как подключать библиотеку нужно только в определенных случаях. Сама библиотека очень большая с большим количеством зависимостей, разделить ее не получится. Предположительная проблема заключается в сборщике классов битрикса, потому как Mmit\Sfca\Googles\Google_Client непонятно как он это получает. |
|
|
20.02.2019 09:41:55
Добрый день, сейчас стоит задача получить данные о новом товаре при заполнении формы добавления товара в CRM [URL=http://prntscr.com/mnicwu]http://prntscr.com/mnicwu[/URL]
Мне нужно получить цену нового товара, но по какой то причине не срабатывают обработчики событий на добавление товара или цены ([URL=https://dev.1c-bitrix.ru/api_help/catalog/events/onproductadd.php]OnProductAdd[/URL] [URL=https://dev.1c-bitrix.ru/api_help/catalog/events/onpriceadd.php]OnPriceAdd[/URL]) Событие (OnAfterIBlockElementAdd) срабатывает как нужно но в нем нельзя получить цену, подскажите пожалуйста как это правильно реализовать ? |
|
|