• Как записать данные с xml в лог в Битриксе?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Есть ли быстрый способ решить эту проблему?


    Чтобы был "быстрый" способ, нужно хотя бы иметь "2 способа" решения, а вы даже проблему (т.е. собственно почему происходит деактивация) не локализовали.

    Как посмотреть пользователей которые пришли во время обмена с AD?


    Таких логов не ведется, но можно подписаться на событие OnLdapUserFields модуля ldap и посмотреть какие приходят данные во время обмена.

    Как записать в лог всех пользователей которые есть в xml с 1с?


    Если мы говорим про штатный импорт, то файл последнего импорта находится в `/upload/1c_intranet/`
    Судя по тому что вы привели код - у вас кастомный импорт и здесь вам нужно обратиться к разработчикам.

    Что касается вашей проблемы, я кажется знаю ее корень: изменение пользователей из 1С.
    В механизме сихнронизации битрикса происходит оперирование тремя датами:
    - Дата последней синхронизации в Битрикс24
    - Дата последнего изменения сотрудника в Битрикс24
    - Дата последнего изменения учетки в AD

    Синхронизация происходит при трех ключевых условиях:
    1. LDAP Query вернул учетку.
    2. Изменение учетке в AD (либо в Б24) произошли ПОСЛЕ последней успешной синхронизации.
    3. Учетка не должна входить в "неимпортируемые группы"

    Соответственно типовые ошибки:
    1. Рассинхрон времени (например по какой-то причине время на сервере Б24 бежит впереди времени AD).
    2. Шаманство с датами (иногда учетки отключают задним числом)
    3. Неправильные условия (ldap query с активностью)
    4. После увольнению учетку добавляют в группу, которая в Б24 помечена как несинхронизируемая
    Ответ написан
    Комментировать
  • Как сделать sql запрос сразу в две таблицы?

    deepblack
    @deepblack
    Пример:

    SELECT
      m.* INTO result.movie, 
      mp.* INTO result.movie_person,
      p.* INTO result.person
    FROM 
      movie m, person p, movie_person mp
    WHERE 
      m.id = mp.mid AND mp.pid = p.id
      AND m.title LIKE 'Adams Family%'


    https://dev.mysql.com/worklog/task/?id=358
    Ответ написан
    3 комментария
  • Как можно сделать быстренько полигоны свг с поинтами из картинки?

    @tecs
    Adobe XD самы легкий способ.
    Кладешь картинку и сверху рисуешь.
    Потом export svg
    Ответ написан
    Комментировать
  • Вывод картинки со связанного свойства в битриксе?

    @PetrPo
    redesupar, держи норм код для catalog.section

    1. В result_modifier.php в конце добавь
    if($arResult['ITEMS']) {
    	$currentElement = current($arResult['ITEMS']);
    	
    	$bPropertyBrandDisplay = isset($currentElement['DISPLAY_PROPERTIES']['BRAND']) ? true : false;
    	$bPropertyBrandLink = $bPropertyBrandDisplay && $currentElement['DISPLAY_PROPERTIES']['BRAND']['LINK_IBLOCK_ID'] ? true : false;
    	
    	$brandsIblockId = $bPropertyBrandLink ? $currentElement['DISPLAY_PROPERTIES']['BRAND']['LINK_IBLOCK_ID'] : 0;
    
    	$brandsId = $brands = [];
    
    	if($bPropertyBrandDisplay && $bPropertyBrandLink) {
    		foreach($arResult['ITEMS'] as $arItem) {
    			$brandId = (int)$arItem['DISPLAY_PROPERTIES']['BRAND']['VALUE'];
    			if($brandId) {
    				$brandsId[] = $brandId;
    			}
    		}
    
    		if($brandsId) {
    			$brandsId = array_unique($brandsId);
    			$bShowBrandPicture = isset($arParams['SHOW_BRAND_PICTURE']) && $arParams['SHOW_BRAND_PICTURE'] == 'Y' ? true : false;
    
    			$order = ['ID' => 'ASC'];
    			$filter = ['IBLOCK_ID' => $brandsIblockId, 'ID' => $brandsId]; // Если надо добавляешь в фильтр активность элементов 'ACTIVE' => 'Y', 'GLOBAL_ACTIVE' => 'Y', 'ACTIVE_DATE' => 'Y'
    			$select = ['IBLOCK_ID', 'ID', 'NAME', 'DETAIL_PAGE_URL'];
    			if($bShowBrandPicture) {
    				$select = array_merge($select, ['PREVIEW_PICTURE', 'DETAIL_PICTURE']);
    			}
    			
    			$result = CIBlockElement::GetList($order, $filter, false, false, $select);
    			while($row = $result->GetNext()) {
    				$row['PICTURE'] = [];
    				
    				if($bShowBrandPicture) {
    					$pictureResize = ['width' => 120, 'height' => 40];
    					$pictureId = $row['PREVIEW_PICTURE'] ? $row['PREVIEW_PICTURE'] : $row['DETAIL_PICTURE'];
    					
    					if($pictureId) {
    						$row['PICTURE'] = CFile::ResizeImageGet($pictureId, $pictureResize, BX_RESIZE_IMAGE_PROPORTIONAL_ALT, true);
    						$row['PICTURE']['ALT'] = $row['NAME'];
    						$row['PICTURE']['TITLE'] = $row['NAME'];
    						
    						if($row['DETAIL_PICTURE']) {
    							$iProperty = new \Bitrix\Iblock\InheritedProperty\ElementValues($row['IBLOCK_ID'], $row['ID']);
    							$iPropertyValues = $iProperty->getValues();
    							
    							if($iPropertyValues['ELEMENT_DETAIL_PICTURE_FILE_TITLE'])
    							   $row['PICTURE']['TITLE'] = $iPropertyValues['ELEMENT_DETAIL_PICTURE_FILE_TITLE'];
    						   
    							if($iPropertyValues['ELEMENT_DETAIL_PICTURE_FILE_ALT'])
    							   $row['PICTURE']['ALT'] = $iPropertyValues['ELEMENT_DETAIL_PICTURE_FILE_ALT'];
    						}
    					}
    				}
    				
    				$brands[$row['ID']] = $row;
    			}
    		}
    	}
    	
    	if($brands) {
    		foreach($arResult['ITEMS'] as &$arItem) {
    			$brandId = (int)$arItem['DISPLAY_PROPERTIES']['BRAND']['VALUE'];
    			if($brandId) {
    				$arItem['BRAND_ITEM'] = $brands[$brandId];
    			}
    		}
    		
    		unset($arItem, $brands, $brandsId, $currentElement);
    	}
    }


    2. В template.php, внутри цикла по элементам
    <?if($arItem['BRAND_ITEM']):?>
    	<div class="brand">
    		<meta itemprop="brand" content="<?=$arItem['BRAND_ITEM']['NAME']?>" />
    		<?if($arItem['BRAND_ITEM']['PICTURE']):?>
    			<a class="brand_picture" href="<?=$arItem['BRAND_ITEM']['DETAIL_PAGE_URL']?>">
    				<img src="<?=$arItem['BRAND_ITEM']['PICTURE']['src'];?>" alt="<?=$arItem['BRAND_ITEM']['PICTURE']['ALT']?>" title="<?=$arItem['BRAND_ITEM']['PICTURE']['TITLE'];?>" />
    			</a>
    		<?else:?>
    			<b class="block_title"><?=GetMessage('BRAND');?>:</b>
    			<a href="<?=$arItem['BRAND_ITEM']['DETAIL_PAGE_URL']?>"><?=$arItem['BRAND_ITEM']['NAME']?></a>
    		<?endif;?>
    	</div>
    <?endif;?>


    UPD
    3. В шаблоне компонента catalog в файле section.php где вызывается catalog.section добавь
    "SHOW_BRAND_PICTURE" => $arParams["SHOW_BRAND_PICTURE"],
    Ответ написан
    2 комментария