В задании ex2-34 необходимо дату первой новости на странице установить в качестве параметра определенного тега. При этом в условии к заданию прописано следующее: "Алгоритм решения, при котором будет использоваться некэшируемое обращение к базе данных - не будет верным".
Я бы в решении исходил из того, что дата первой новости на странице - это $arResult['ITEMS'][0]['ACTIVE_FROM'], а затем использовал бы метод setResultCacheKeys. Это правильно, или все-таки нужно получать значение из БД и кешировать результат?)
Валерий Дьяченко написал: Я бы в решении исходил из того, что дата первой новости на странице - это $arResult['ITEMS'][0]['ACTIVE_FROM'], а затем использовал бы метод setResultCacheKeys. Это правильно, или все-таки нужно получать значение из БД и кешировать результат?)
В данной задаче не нужно дергать данные из БД, у вас действительно они уже есть в $arResult.
Задание [ex2-51] "Изменение данных в письме" Данное задание предполагает создание обработчика события, согласно задаче в обработчике будет присутствовать текст "Пользователь авторизован..." или "Пользовательне авторизован...", а также "Замена данных...". Вопрос: необходимо ли эти тексты выносить в языковые файлы?
Иван Малышин написал: Сергей Жук , так как это init.php, то можно в константу, если сможете в языковый файл - круто.
Может получиться несколько языковых фраз для одной строки, которая разделена php кодом? Например, в строке "Пользователь авторизован: id (логин), ... данные из формы ...".
[ex2-70] Не совсем понятно как отбираются элементы каталога продукции при выводе данных простого компонента? Классификатор связвает разделы каталога продукции и новости. Получается выводятся элементы из всех привязанных к новости разделов продукции. Если один раздел привязан к нескольким новостям, элементы раздела будут дублироваться. Однако на скрине в задании элементы не повторяются. Поясните этот момент.
Доброго времени суток. Номер заявки 4944099 Прошу прощения, но у меня появились некоторые вопросы по поводу моих ошибок и мне нужно разъяснение чтобы не ошибаться впредь.
Вы написали по поводу моего решения задания [ex2-77] Разработать простой компонент «Каталог товаров»: 1. Кеширование в компоненте не по умолчанию - зависит от ID пользователя. "По умолчанию" это значит параметры в StartResultCache возможно не прописывать, я правильно понял? Такое решение будет считаться правильным?
2. В компоненте производится выборка всех элеменетов инфоблока, а затем выборка разделов, которые имеют привязку. Рекомендуется сначала установить разделы, которые имеют привязку, а затем выбирать элементы только этих разделов - для сокращения выборки. Можете подсказать какие данные о разделе указывают на то, что к нему есть привязка инфоблока? Я нашел только параметр привязки соц.сети.
3. Происходит явное обращение к свойству привязки (см https://drive.google.com/file/d/0B7Z9au-x8gigT29xTHJBT2VMT1k/view?usp=sharing) Эта ошибка вызывает разногласие: я должен был пользоваться названием свойства из arParams? А названиям свойств PRICE, ARTNUMBER, MATERIAL я могу пользоваться без проблем и это не будет ошибкой?
Aleksey Caplin написал: [ex2-70] Не совсем понятно как отбираются элементы каталога продукции при выводе данных простого компонента? Классификатор связвает разделы каталога продукции и новости. Получается выводятся элементы из всех привязанных к новости разделов продукции. Если один раздел привязан к нескольким новостям, элементы раздела будут дублироваться. Однако на скрине в задании элементы не повторяются.
как же не повторяются? повторяются, вы все правильно описали
Dmtriy Derevyanko написал: 1. Кеширование в компоненте не по умолчанию - зависит от ID пользователя."По умолчанию" это значит параметры в StartResultCache возможно не прописывать, я правильно понял? Такое решение будет считаться правильным?
Суть этого пункта задания - убедиться что вы умеете осмысленно делать кеш, а не просто копипастите вызов API из типового компонента. Кстати, приветствуются идеи по параметрам от которых может зависеть кеш. Чтобы разнообразить задания.
Цитата
Dmtriy Derevyanko написал: 2. В компоненте производится выборка всех элеменетов инфоблока, а затем выборка разделов, которые имеют привязку. Рекомендуется сначала установить разделы, которые имеют привязку, а затем выбирать элементы только этих разделов - для сокращения выборки. Можете подсказать какие данные о разделе указывают на то, что к нему есть привязка инфоблока? Я нашел только параметр привязки соц.сети.
У вас же связанные данные, аж 3 объекта. Во много суть задания именно в этом, как правильно подготовить фильтры для отбора, и это не обязательно фильтр по полю объекта, у вас есть и "обратная связь". Это не про "битрикс", а про объекты, связи и выборку данных на основании связей.
В задании явно указано что это свойство выносится в параметры компонента, кажется что очевидным его использование в дальнейшем в коде. Остальные свойства мы не стали указывать в параметры, чтобы экономить время, не тратить его на однотипные задачи. Можно указать явно Думаете нужно это уточнить в задании?
Так же отмечу, все эти ошибки в вашем билете не являются значительными, и при успешном решении всех заданий не привели бы к не сдаче.
Станислав Крохмаль написал: Я совершено(и не только я) не понял, что за класификаторы. Можно подробнее или пример?
Разделы инфоблока - это классификатор. Ящики стола - это классификатор. Теги - это классификатор. Классификатор - это способ упорядочить элементы по какому-либо признаку. В рамках заданий - это когда используется привязка элементов инфоблока к другим объектам системы. Что потом позволяет вывести элементы сгруппированные по объектам, к которым они привязаны.
К сожалению, я не сдал экзамен из-за трагической случайности, перепутав шаблон и language файл шаблона. Да они называются одинаково. А в условиях тестовой машины, ноубтука и заготовки я не заметил, что правлю не тот файл. К сожалению выяснение ошибки отняло драгоценное время и я успел 3 задания и те толком не проверил. Тикет я создал, так как некоторое время я был в ступоре, а поддержка по телефону не отвечала. Так вот соответственно у меня предложение. Во-первых, поставить вменяемый таймаут для php и апача. Что бы в случае зацикливания сервер не зависал на длительное время. Во-вторых, на мой взгляд это уже косяк битрикса, когда в случае использования GetMessage() в language файле он вызывает сам себя. Я для теста потом написал такой код. template.php
Михаил Шульпин написал: Во-первых, поставить вменяемый таймаут для php и апача. Что бы в случае зацикливания сервер не зависал на длительное время.
У нас есть фича в todo - кнопка "перезагрузки" Apache чтобы не ждать вовсе в таких случаях.
Цитата
Михаил Шульпин написал: Во-вторых, на мой взгляд это уже косяк битрикса, когда в случае использования GetMessage() в language файле он вызывает сам себя.
А почему бы и нет? В чем тут "косяк"? Мне кажется что это какой-то "перевод стрелки" на платформу, хотя просто ты ошибся файлом. Ну бывает, экзамен, волнение, не привычная среда. Чего тут такого?
Николай Мастряшин написал: Добрый день, правильно ли я понимаю что в задании Подсчет количества зарегистрированных пользователей необходимо использовать cron?
Формально ответ "нет", но почему такой ответ - нужно уточнить ваш вопрос. Что в тексте задания наводит вас на мысль о необходимости использования cron ?
Николай Мастряшин написал: Добрый день, правильно ли я понимаю что в задании Подсчет количества зарегистрированных пользователей необходимо использовать cron?
Формально ответ "нет", но почему такой ответ - нужно уточнить ваш вопрос. Что в тексте задания наводит вас на мысль о необходимости использования cron ?
Функцию необходимо реализовать, используя технологию агентов, она должна запускаться 1 раз каждый день, в 01:00. Чтобы функция запустилась в 01.00 должна быть неплохая посещаемость.
Примечание 1: если в массиве используются свойство, являющееся множественным, то для элементов, где используются несколько значений этого свойства, будет возвращено несколько записей вместо одной. Для решения этой проблемы инфоблоки нужно перевести в Режим хранения свойств в отдельных таблицах, в этом случае для свойства будет отдаваться массив значений. Либо можно не указывать свойства в параметрах выборки, а получать их значения на каждом шаге перебора выборки с помощью _CIBElement::GetProperties().
В описании параметра $arSelectFields: получать их значения на каждом шаге перебора выборки с помощью _CIBElement::GetPropertie
Спасибо,НО получать их значения на каждом шаге перебора выборки с помощью _CIBElement::GetPropertie-это добор данных в цикле,что карается "смертной казнью"
Николай Мастряшин написал: Функцию необходимо реализовать, используя технологию агентов, она должна запускаться 1 раз каждый день, в 01:00. Чтобы функция запустилась в 01.00 должна быть неплохая посещаемость.
аа, ну это не рассматриваем в задаче, не будет никого на сайте и ок, cron не используем в этом задании
Роман Онищенко написал: Спасибо,НО получать их значения на каждом шаге перебора выборки с помощью _CIBElement::GetPropertie-это добор данных в цикле,что карается "смертной казнью"
Нет, этот перебор не карается. Это не получение элементов. Сегодня хоть и можно уже по другому. но мы пока это не требуем, так как не создали учебного курса
Помогите пожалуйста с заданием [ex2-60] .Я сделал постраничную навигацию,но она корректно работает,только без использования кеша,с использованием кеша при клике на постраничную навигацию ничего не происходит,нужно сбросить кеш и тогда страница меняется