Skip to content

IamProRu/bitrix_test

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 

Repository files navigation

Тестовые задания

Для работы решения требуется версия ядра 1С-Битрикс не ниже 21.400.0, а также установленный модуль "Интернет-магазин" (bitrix:sale) и "Торговый каталог" (bitrix:catalog).

Работоспособность решения проверялась на типовой установке актуальной версии 1С-Битрикс в редакции "Бизнес", доступной по адресу https://www.1c-bitrix.ru/download/files/business_encode.zip или https://www.1c-bitrix.ru/download/business_encode.tar.gz

Процедура установки

1. Установить composer

Глобально или в папку ./local согласно инструкции: https://getcomposer.org/download/

2. Установить зависимости composer

В папке ./local

composer install

или

php composer.phar install

или в соответствии с используемой ОС, конфигурацией веб-сервера и способом установки composer.

3. Установить модуль "Миграции для разработчиков" (sprint.migration)

Адрес в панели администрирования 1С-Битрикс: http://[сервер]/bitrix/admin/partner_modules.php?lang=ru

4. Далее следовать инструкциям для соответствующего задания

  1. Задание №1
  2. Задание №2

Тестовое задание №1

написать скрипт, который будет периодически дергаться кроном (периодичность указать) и искать заказы, которые висят в начальном статусе больше двух дней. Если такие заказы есть, отправить e-mail администратору сайта, в письме указать номера найденных заказов

После общих процедур, указанных выше, продолжить по инструкции:

5. Установить миграцию Version20220315170055

Адрес в панели администрирования 1С-Битрикс: http://[сервер]/bitrix/admin/sprint_migrations.php?config=cfg&lang=ru

При этом будет создано новое почтовое email-событие типа "MISSED_ORDERS", а также почтовый шаблон для этого события для сайта по умолчанию.

6. Добавить в crontab выполнение с необходимой частотой команды

php [путь_до_document_root]/local/php_interface/cron/missed_orders.php

от имени пользователя, обладающего соответствующими правами, например, bitrix.

Поскольку скрипт будет выполняться не через веб-сервер, при использовании многосайтовости определение текущего сайта может не работать, поэтому почтовое событие будет отправляться для сайта по умолчанию из настроек 1С-Битрикс.

Если почтовый шаблон не будет найден или отправка завершится неудачей, то будет произведена попытка отправки email через php-функцию mail() на адрес отправителя по умолчанию из настроек 1С-Битрикс.

Тестовое задание №2

написать API CRUD (добавление, чтение, обновление, удаление) для корзины. Использовать ядро d7

После общих процедур, указанных выше, продолжить по инструкции:

7. Настроить работу нового роутинга на веб-сервере

Согласно инструкции из документации раздел "Запуск"

8. Установить миграцию Version20220315170056

Адрес в панели администрирования 1С-Битрикс: http://[сервер]/bitrix/admin/sprint_migrations.php?config=cfg&lang=ru

При этом в настройки в файл .settings.php будет добавлено подключение файла api_basket.php с конфигурацией маршрутов для REST API.

Данное API использует cookie для хранения идентификатора сессии, поэтому оно не подходит для использования в приложениях с аутентификацией по токену. При этом оно позволяет работать с корзиной неаутентифицированным пользователям. Для реализации полноценного REST API возможно использование интеграции через модуль "REST" (bitrix:rest), которая активирована в настройках модуля, но данный механизм не тестировался.

Формат запросов и ответов данного API описан в документации https://basketapiv1.docs.apiary.io/

Тестовое задание №3

есть файл в несколько сотен тысяч строк нужно его загрузить в БД

  • как организуете хранение в БД?
  • как будете загружать содержимое файла в БД?

Вопрос №1

Слишком мало конкретики в постановке задачи, уточнений по моему вопросу не последовало, поэтому ответ будет очень абстрактный. Если данные в строках структурированы, то можно хранить в реляционной БД или, например, в ElasticSearch. Дальше очень сильно все зависит от того как эти данные будут использоваться в дальнейшем. Если данные не структурированы, то можно хранить в нереляционной БД.

Вопрос №2

Если говорить о хранении в реляционной БД, то, например, в MySQL максимальной скорости можно достичь, используя импорт из файла SQL-запросом LOAD DATA INFILE. Если же считывание из файла недоступно из-за настроек безопасности, то нужно формировать запрос(ы) вида:

INSERT INTO tbl_name (a,b,c) VALUES(1,2,3), (4,5,6), (7,8,9), ...

При этом каждый запрос должен по размеру не превышать максимально разрешенный в настройках mysql размер max_allowed_packet. Такой подход позволит уменьшить количество перестроений индексов, если они есть. Если индексов в таблице много, и запросов формируется много, то можно перед вставкой данных удалить индексы, а затем снова их добавить. Кроме того можно изменить таблицы на MyISAM, если используется InnoDB, а после завершения вставки данных вернуть обратно InnoDB.

About

Тестовые задания по 1С-Битрикс

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages