Аспро: Максимум — документация, часть 7 из 7: Для веб-разработчиков
Источник: официальный курс «Аспро: Максимум» из базы знаний Аспро. Решение: Аспро: Максимум. Справочная выгрузка сертифицированного партнёра Аспро, обновлено 19.09.2026.
Части курса: 1 · 2 · 3 · 4 · 5 · 6 · 7
Содержание
Для веб-разработчиков
Решения Аспро: Максимум и Аспро: Лайтшоп созданы на современной технологической платформе. Они имеют принципиально новую архитектуру, с которой по-настоящему удобно работать. В специальном разделе есть библиотеки кнопок, иконок и элементов для оформления.
В этой главе мы расскажем об этих преимуществах, а также о том, как легко и просто изменять основные элементы сайта.
Внимание! Информация, представленная в этой главе, носит рекомендательный характер и предназначена для программистов, владеющих навыками разработки на 1С-Битрикс. Мы не оказываем консультации по разработке и не несем ответственности за последствия изменения кода шаблона. Инструкция подразумевает, что вы сможете выполнить работу с кодом самостоятельно.
Мы настоятельно рекомендуем придерживаться наших рекомендаций. Ошибки, возникшие из-за некорректных действий, устраняются платно.
Если вы не разработчик и хотите доработать решение под ваш проект – например, изменить внешний вид блоков, разделов, элементов или добавить новый функционал, пожалуйста, свяжитесь с нами.
Содержание главы:
назадКоллекции Графические материалывперед
Графические материалы
В поставку решений Аспро включены библиотеки иконок, кнопок и других элементов интерфейса, которые помогут сделать сайт на основе готового решения еще красивее и уникальнее.
-
Библиотека UI-элементов для интернет-магазина Аспро: Максимум
-
Библиотека UI-элементов для интернет-магазина Аспро: Ландшафт
-
Библиотека UI-элементов для интернет-магазина Аспро: Приорити
-
Библиотека UI-элементов для интернет-магазина Аспро: Корпоративный сайт 2.0
-
Библиотека UI-элементов для интернет-магазина Аспро: Шины и диски 2.0
В разделе «Оформление» показаны варианты отображения текста с использованием заголовков различных уровней для разбиения информации на блоки меньшего размера, что упрощает ее восприятие, и позволяет отделить смысловые блоки друг от друга.
Для того, чтобы визуально выделить перечисление, например, преимуществ сотрудничества, вы можете задействовать один из вариантов представления списков: нумерованный/ненумерованный, иерархический/линейный или с детальным описанием. Также при создании списка в качестве маркера доступно использование пиктограмм, которые включены в библиотеку.

Для приверженцев интересной подачи материала приведен пример оформления цитат и буквиц, гармонирующий с общей стилистикой решения.
Цитата – это ключ, основная идея статьи, поэтому она должна особым образом выделяться на общем фоне и «цеплять» даже беглый взгляд посетителя.

Использование буквицы как художественного приема оформления текста делает его более приятным для чтения и украшает страницу, которая не изобилует другими яркими деталями.

В библиотеке присутствуют средства визуального оформления кода. Выражения из кода в тексте выделяются использованием другого цвета для него самого и его заднего фона, а строки кода для удобства помещаются в специальные блоки, чтобы ни один символ не потерялся в тексте описания.

В этом же разделе вы можете ознакомиться со стилями оформления таблиц, которые удобно использовать для представления структурированной информации (к примеру, отображения реквизитов компании).
Если вам необходимо выделить какой-либо элемент текста, вы можете установить возле него «визуальный якорь» в виде одной из пиктограмм, что в огромном множестве перечислены в разделе «Иконки». Например, к электронному адресу тех. поддержки с меткой легко будет вернуться в подробной инструкции по настройке программного продукта в случае, если инструкция не помогла и на одном из этапов возникли непредвиденные затруднения.

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

Раздел «Кнопки» отображает варианты активных и неактивных кнопок, отличающихся размерами и расцветкой, чье поведение также различно при наведении на них указателя.

Раздел «Элементы» содержит примеры внешнего вида ярлыков (Labels) – иконок, содержащих исчерпывающую информацию, например, об участии предложения в действующей акции или отношение товара к хитам продаж.

Здесь же вы можете ознакомиться с отображением всплывающей подсказки, призванной при наведении указателя раскрыть посетителю значения используемых в статье терминов или внести некоторые уточнения.
Пример внутренних вкладок, используемых для улучшения организации предоставляемых пользователю сведений, демонстрирует оформление активных и неактивных вкладок, и поведение страницы при переключении с одной вкладки на другую.

Помимо прочего в этом разделе показаны способы представления аккордеона и его поведения при разворачивании скрытого по умолчанию варианта/полного списка. Функциональной особенностью этого элемента является возможность выбора посетителем какую информацию необходимо раскрыть более подробно, а какая представляется ему излишней.

Один из вариантов аккордеона используется на странице «Вакансии» в решении Аспро: Digital-компания при выборе соответствующей темы оформления раздела.

Ниже расположены примеры оформления предупреждений, шкалы прогресса, формы обратной связи.

Размеры навигационной панели по страницам раздела представлены в 3х вариантах.

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

Также в поставку включены элементы для работы с изображениями – Carousel, Fancybox и рамки для миниатюрных изображений.


Содержание главы:
назадДля веб-разработчиков Использование библиотеки UI-элементоввперед
Использование библиотеки UI-элементов
В этом уроке мы расскажем и покажем наглядно, как можно использовать UI элементы из библиотеки, включенной в поставку решения, а также как пользоваться возможностями верстки, вставлять иконки, кнопки и элементы оформления на сайт.

Внимание! Для успешной работы с html-кодом понадобятся хотя бы минимальные знания тегов и принципов записи. Если возникают сомнения или нужно попрактиковаться, вы можете смело экспериментировать с версткой на тестовой странице. Изменение html-кода может испортить верстку отдельной страницы, но не сломает весь сайт.
Представленные на демо-сайте UI элементы являются html-кодом, который вы можете скопировать и вставить в нужное место на странице сайта. В качестве примера добавим на сайт элемент «Шестеренки» и заголовки разного размера.

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

Откройте на вашем сайте раздел с библиотекой UI-элементов, перейдите на страницу с нужным содержимым, войдите в режим редактирования и также переключитесь в нем на совмещенный режим отображения.

Скопируйте код интересующих вас элементов и вставьте на странице своего сайта.

В нашем примере скопирован код заголовка и код элемента «Шестеренки». Вы можете вносить изменения в код – например, убрать тестовый текст под заголовком или поменять подпись под шестеренками.
После сохранения изменений на странице отображаются нужные элементы:

Важно! Для Аспро: Максимум, начиная с версии 1.6.1, чтобы работали иконки, нужно дополнительно подключить библиотеку иконок font awesome. Подключение производится на той странице, где они будут отображаться. Для этого вставьте код CJSCore::Init(‘aspro_font_awesome’) на странице.
Для Аспро: Корпоративный сайт 3.0 код отличается: CJSCore::Init(‘aspro_font-awesome’).

Подключение библиотеки на Аспро: Лайтшоп
Для десктопной версии Аспро: Лайтшоп вставьте следующий код: \Aspro\Lite\Functions\Extensions::init( БИБЛИОТЕКА);
А для мобильной версии: \Aspro\Lite\Functions\ExtensionsMobile::init(БИБЛИОТЕКА);
Чтобы найти все доступные библиотеки, перейдите в административную часть сайта. Выберите Контент (1) → Структура сайта (2) → Файлы и папки (3). Вставьте следующий путь в поле:
— для десктопной версии: /bitrix/modules/aspro.lite/lib/functions/Extensions.php
— для мобильной версии: /bitrix/modules/aspro.lite/lib/functions/ExtensionsMobile.php

Доступные библиотеки находятся в массиве $arConfig.

назадГрафические материалы Отключение ikSelectвперед
Отключение ikSelect
Плагин ikSelect нужен для стилизации выпадающих списков. Например, на странице контактов:

Но иногда плагин может конфликтовать со сторонними модулями. Поэтому мы добавили возможноcть отключить ikSelect. Без плагина список выглядит так:

Чтобы деактивировать плагин на отдельной странице, нужно добавить код. Рассмотрим на примере страницы контактов. В административной части проделайте путь Контент (1) → Структура сайта (2) → Файлы и папки (3) → contacts (4). В этой папке откройте файл index.php (5).

В него нужно добавить код:

Сохраните изменения. Если на странице несколько селектов, то для отключения какого-то конкретного нужно написать:
Если вы хотите отключить ikSelect на всем сайте, этот же код нужно добавить в файл header.php. Чтобы его открыть, в административной части сайта проделайте путь Контент → Структура сайта → Файлы и папки → bitrix → templates → aspro_max. Добавьте код и сохраните изменения.

назадИспользование библиотеки UI-элементов Модификация кода решенийвперед
Модификация кода решений
В этой главе мы опишем общие принципы кастомизации решений. Готовые сайты созданы на новой технологической платформе и открывают новые возможности для доработки и развития функционала.
Модифицируйте элементы сайта быстро и без лишних трат благодаря улучшенной архитектуре.
Информация, представленная в этой главе, носит рекомендательный характер и предназначена для программистов, владеющих навыками разработки на 1С-Битрикс. Мы не оказываем консультации по разработке и не несем ответственности за последствия изменения кода шаблона. Инструкция подразумевает, что вы сможете выполнить работу с кодом самостоятельно.
Мы настоятельно рекомендуем придерживаться наших рекомендаций. Ошибки, возникшие из-за некорректных действий, устраняются платно.
Если вы не разработчик и хотите доработать решение под ваш проект – например, изменить внешний вид блоков, разделов, элементов или добавить новый функционал, пожалуйста, свяжитесь с нами.
Содержание главы:
назадОтключение ikSelect Общие рекомендациивперед
Общие рекомендации
Для модификации предусмотрены отдельные файлы, которые вы можете редактировать по своему усмотрению и затем подключать как свои шаблоны. Внесенные изменения не будут затираться при обновлениях решения – больше никаких конфликтов функционала!
Внимание! При установке шаблона в режиме многосайтовости новые custom файлы затрут ваши файлы. Чтобы не сталкиваться с этой ситуацией, необходимо переименовать ваши custom файлы и провести установку. Тогда новые файлы не будут их затирать. Затем необходимо переименовать ваши файлы обратно.
Алгоритм:
- Подключите шаблон с пометкой custom в настройках модуля решения или настройках компонента.
- На соответствующей странице выведется подсказка – путь к файлу, в который необходимо вносить изменения.
- Внесите изменения в указанный файл. Для удобства можно использовать код существующих шаблонов.
По этому алгоритму вы можете легко и быстро редактировать код практически любых элементов сайта – от шапки до детальной страницы блога или товара, включая карточку быстрого просмотра. При этом у вас сохранится возможность обновлять платформу и решение, пользоваться услугами стандартной бесплатной поддержки от Аспро.
Обратите внимание, что по описанному алгоритму, без потери обновлений и поддержки, модифицируются составляющие части комплексных компонентов.
Например, вы можете редактировать код шаблона детальной страницы или списка, но не можете сделать это для комплексных компонентов «Каталог» и «Новости». Если вам необходимо изменить шаблоны комплексных компонентов, мы рекомендуем проводить работы на копии шаблона и после каждого обновления вручную синхронизировать файлы. В этом случае решение снимается со стандартной поддержки.
Также мы рекомендуем по возможности воздержаться от кастомизации следующих шаблонов:
- корзина
- оформление заказа
- персональный раздел покупателя D7.
Для этих элементов в наших решениях используются стандартные шаблоны от 1С-Битрикс, которые регулярно обновляются. Их изменение подразумевает, что после каждого обновления платформы вам либо придется вручную синхронизировать файлы, либо отказаться от обновлений.
назадМодификация кода решений Подключение шаблонов customвперед
Подключение шаблонов custom
В Аспро: Максимум вы можете подключить шаблоны элементов для модификации. Эта возможность актуальна для тех, кто хочет изменить внешний вид разделов или блоков на сайте.
Алгоритм действий для подключения и настройки шаблона для кастомизации:
- Перейти в структуру сайта для создания нового шаблона.
-
Хедер:
-
/bitrix/templates/aspro_max/page_blocks/header
-
Футер:
/bitrix/templates/aspro_max/page_blocks/footer -
Фиксированная шапка, мобильная шапка, левый блок, навигационная цепочка:
/bitrix/templates/aspro_max/page_blocks -
Каталог, детальная страница:
/bitrix/templates/aspro_max/components/bitrix/catalog/main/page_blocks. Такой же путь для списка элементов, разделов, быстрого просмотра, шаблона списка посадочных страниц. -
Главная страница — корневая папка сайта:
/ -
Контакты:
/contacts -
Корзина:
/bitrix/components/aspro/basket.file.max/templates/ -
Создать новый шаблон или скопировать старый. Название должно быть типа «element_custom.php».
-
Внести изменения в шаблон.
-
Для каталога нужно создать новую папку по следующему пути:
- Для детальной страницы:
/bitrix/templates/aspro_max/components/bitrix/catalog.element - Для списка разделов:
/bitrix/templates/aspro_max/components/bitrix/catalog.section.list - В папке создать файл template.php. В этом файле — разместить кастомизированный шаблон.
- Для детальной страницы:
-
Подключить в модуле настроек новый шаблон.
Таким способом вы можете подключить шаблоны для модификации следующих элементов:
-
Корзина
-
Боковое меню
-
Тип поиска
-
Оформление заголовка и хлебных крошек
-
Тип главной страницы
-
Фиксированная шапка
-
Варианты шапок
-
Использовать быстрый просмотр товаров
-
Детальная страница каталога
-
Контакты
-
Блог
-
Проекты
-
Новости
-
Компания \ Наши сотрудники
-
Компания \ Бренды
-
Компания \ Бренды - детальная
-
Компания \ Вакансии
-
Компания \ Лицензии
-
Футер
-
Мобильная шапка
-
Тип мобильного меню.
Разберем на примере подключения кастомизированного футера. Для создания нового файла в административной части сайта перейдем в Контент → Структура сайта → Файлы и папки. Затем проделаем путь: /bitrix/templates/aspro_max/page_blocks/footer. Скопируем один из элементов. Для этого в строке с названием файла кликнем на «Гамбургер», затем на «Копировать…».

В появившемся окне укажем тот же путь. А в дополнительных настройках выберем поле «Переименовать автоматически», чтобы не возникло проблем.

В строке с названием добавленного файла кликнем на «Гамбургер», затем на «Переименовать.».

Название должно принять вид «footer_custom.php».
Чтобы внести изменения в шаблон, кликнем на «Гамбургер», затем на «Редактировать как php».

Внесите изменения в код и сохраните.

Теперь перейдем в настройки модуля, чтобы подключить новый шаблон. Проделаем путь: Аспро → Аспро: Max → Настройки. Перейдем в настройки футера.

Выберите свой вариант и сохраните изменения.

Если созданный шаблон не отображается в модуле настроек решения, перейдите в публичную часть. Наведите на область страницы или элемента в режиме правки, и кликните на шестеренку.

В параметрах компонента подключите шаблон в поле «Шаблон страницы блока списка элементов». Сохраните изменения.

Кастомизация списка элементов
Теперь разберем кастомизацию списка элементов. В начале заходим в /bitrix/templates/aspro_max/components/bitrix/catalog/main/page_blocks. Нажимаем на «Гамбургер» рядом с фалом list_elements_1.php и копируем его.

В появившемся окне указываем путь: /bitrix/templates/aspro_max/components/bitrix/catalog/main/page_blocks. А в дополнительных настройках выберем поле «Переименовать автоматически», чтобы не возникло проблем.

В строке с названием скопированного файла нажимаем на «Гамбургер» и меняем имя на: list_elements_1_custom.php.

Чтобы внести изменения в шаблон, кликнем на «Гамбургер», затем на «Редактировать как php».

Ищем строку «$template» и добавляем к ней код, чтобы получилось «$template.”_custom”,». Сохраняем изменения.

Теперь заходим по пути:
/bitrix/templates/aspro_max/components/bitrix/catalog.section. Копируем любой шаблон.

Переименовываем шаблон, например, было «catalog_block» стало «catalog_block_custom»

Заходим в «Каталог» и включаем режим правки. Наводим курсор на страницу каталога и жмем на шестеренку.

Выбираем кастомный шаблон в поле «Шаблон страницы блока списка». Сохраняем изменения.

назадОбщие рекомендации Кастомизация цены, кнопок «Купить» и «Наличие»вперед
Кастомизация цены, кнопок «Купить» и «Наличие»
В решениях Аспро: Next, Аспро: Максимум, Аспро: Оптимус и Аспро: Шины и диски 2.0 вы можете модифицировать вывод цены, кнопку «Купить» и метку «В наличии» при помощи специальных событий. При этом изменения не будут затираться при обновлении решения.
Названия событий вы можете найти в файле include.php.
- Адрес файла для решения Аспро: Оптимус
Рабочий стол → Контент → Структура сайта → Файлы и папки → bitrix → modules → aspro.optimus → include.php
- Адрес файла для решения Аспро: Next
Рабочий стол → Контент → Структура сайта → Файлы и папки → bitrix → modules → aspro.next → include.php
- Адрес файла для решения Аспро: Шины и диски 2.0
Рабочий стол → Контент → Структура сайта → Файлы и папки → bitrix → modules → aspro.tires2 → include.php
- Адрес файла для решения Аспро: Максимум
Рабочий стол → Контент → Структура сайта → Файлы и папки → bitrix → modules → aspro.max → include.php
Названия представлены в виде закомментированных областей:

Файл с примерами событий находится тут:
-
\bitrix\modules\aspro.optimus\lib\functions\CAsproOptimus.php (для Аспро: Оптимус)
-
\bitrix\modules\aspro.next\lib\functions\CAsproNext.php (для Аспро: Next).
-
\bitrix\modules\aspro.tires2\lib\functions\CAsproTires2.php (для Аспро: Шины и диски 2.0).
-
\bitrix\modules\aspro.max\lib\functions\CAsproMax.php (для Максимум)
В структуре сайта также предусмотрен специальный файл для вашего кода, в котором вы сможете работать с обработчиками из файла.
- Путь к файлу для Аспро: Оптимус
\bitrix\modules\aspro.optimus\lib\functions\CAsproOptimusCustom.php
- Путь к файлу для Аспро: Next
\bitrix\modules\aspro.next\lib\functions\CAsproNextCustom.php
- Путь к файлу для Аспро: Шины и диски 2.0
\bitrix\modules\aspro.tires2\lib\functions\CAsproTires2Custom.php
- Путь к файлу для Аспро: Максимум
\bitrix\modules\aspro.max\lib\functions\CAsproMaxCustom.php
назадПодключение шаблонов custom Использование пользовательских событий и функций для кастомизациивперед
Использование пользовательских событий и функций для кастомизации
Часть функционала готовых решений Аспро хранится в файлах модуля. Менять код в них не рекомендуется, поскольку при установке обновления шаблона внесенные доработки не сохранятся. Чтобы этого избежать, в модуле мы добавили пользовательские события и функции. В статье расскажем, как их использовать для кастомизации решения.
В функциях решения, которые содержат HTML-код, вызываются пользовательские события. Как правило, эти события расположены в конце функции, но могут встречаться и в других местах. Благодаря им можно вносить изменения.
В эти события передаются исходные параметры и результат, получаемый в модуле. Благодаря этому вы можете сделать одно из следующих действий:
- Полностью изменить логику работы функции через исходные параметры.
- Внести точечные изменения через результат работы функции.
Пример использования пользовательского события
Рассмотрим функцию GetQuantityArray, которая находится в файле bitrix/modules/aspro.max/classes/general/CMax.php.
Функция содержит событие, которое мы выделили на скриншоте ниже.

Через это событие можно модифицировать выводимый результат.
Чтобы событие сработало, его нужно зарегистрировать в файле /bitrix/php_interface/init.php, используя функцию 1С-Битрикс AddEventHandler. Подробнее об этом читайте в документации платформы.
Для нашего метода из примера получится следующее: [code] AddEventHandler(‘aspro.max’, ‘OnAsproGetTotalQuantityBlock’, array(‘\Aspro\Functions\CAsproMaxCustom’, ‘OnAsproGetTotalQuantityBlockHandler’));
[/code]

После регистрации события новую логику работы можно описать внутри класса CAsproMaxCustom в файле bitrix/modules/aspro.max/lib/functions/CAsproMaxCustom.php.

При этом в качестве названия метода нужно указать OnAsproGetTotalQuantityBlockHandler.
Пример использования пользовательской функции
Есть методы, где можно использовать пользовательскую функцию. В этом случае не потребуется регистрация события в файле /bitrix/php_interface/init.php.
Например, для метода getMenuChildsExt есть следующая функция.

Чтобы использовать эту пользовательскую функцию, нужно прописать ее внутри класса CAsproMaxCustom в файле bitrix/modules/aspro.max/lib/functions/CAsproMaxCustom.php.
При этом в конце названия функции необходимо добавить CAsproMax. То есть если название было getMenuChildsExt, то должно стать getMenuChildsExtCAsproMax.
При таком варианте использовать результат работы метода нельзя. В пользовательской функции есть только исходные параметры, а манипуляций с ними нет. Поэтому логику работы функции нужно настраивать самостоятельно.

назадКастомизация цены, кнопок «Купить» и «Наличие» Поддержка PWAвперед
Поддержка PWA
Прогрессивное веб-приложение (PWA) — технология веб-разработки для управления сайтом через приложение на мобильных устройствах:
- Устанавливается на смартфоны и планшеты.
Для того, чтобы добавить сайт как веб-приложение, пользователь должен открыть сайт в браузере на мобильном устройстве. Затем перейти в настройки для страницы.

Затем нужно кликнуть поле «Добавить на главный экран».

Затем пользователь может изменить название приложения и добавить на главный экран.

Приложение на главном экране.

Для реализации PWA сайт должен соответствовать требованиям:
- Доступ по протоколу https.
- Адаптивность.
- Отдельный URL для каждой страницы.
Чтобы перейти в настройки приложения, в административной части сайта перейдите в Аспро → Аспро: Max → Веб-приложение.
- Активируйте технологию (1) ;
- По умолчанию создается файл с названием «manifest.json». Если такой файл у вас уже где-то используется, измените название в этом поле (2) ;
- Название предлагается по умолчанию при добавлении на рабочий стол (3) ;
- Сокращенное название — короткое удобочитаемое имя приложения. Предназначено для использования там, где недостаточно места для отображения полного имени приложения (4) ;
- Укажите начальную страницу приложения, по умолчанию задана главная страница сайта. При запуске приложения будет открываться указанная страница, а не та страница, которую добавляли на рабочий стол (5) ;
- Выберите режим отображения приложения (6) :
browser — приложение открывается в обычной вкладке браузера или новом окне в зависимости от браузера и платформы.
standalone — приложение будет выглядеть и ощущаться, как отдельное приложение.
fullscreen — используется все доступное пространство экрана.
Для того чтобы изменился режим отображения, необходимо переустановить приложение.
- Измените цвет фона (7) и темы (8) при необходимости. Функция актуальна только для Android;
- По умолчанию на мобильных устройствах будет подгружаться фавиконка для обозначения приложения. Также вы можете загрузить иконку в различных размерах (9). Операционная система сама будет подбирать оптимальный размер под конкретное мобильное устройство.

Сохраните изменения. После сохранения настроек будет создан файл манифеста в корне сайта. Если поле «Подключать манифест для сайта» активно, то в теге сайта будет прописана ссылка на файл.
назадИспользование пользовательских событий и функций для кастомизации Установка модулей сторонних разработчиковвперед
Установка модулей сторонних разработчиков
Решения «Аспро» поддерживают стандартный набор модулей и компонентов 1С-Битрикс.
Мы не тестируем модули и компоненты сторонних разработчиков, поэтому не можем гарантировать совместимость с решениями «Аспро» и 100% работоспособность на готовом сайте. Для того, чтобы установить такое решение, рекомендуем обратиться к сертифицированным партнерам 1С-Битрикс.
Внимание! Если вы собираетесь установить модуль или компонент стороннего разработчика, помните: вы делаете это на свой страх и риск. Любые вмешательства такого рода приравниваются к изменению кода и могут привести к нарушению логики работы решения, изменениям верстки и программным ошибкам. Перед тем, как устанавливать модуль, убедитесь, что вы обладаете необходимыми навыками для внесения изменений в решение и обязательно выполните резервное копирование.
Полная версия курса: Аспро: Максимум в базе знаний Аспро. Вопросы по внедрению, настройке или обновлению решения — свяжитесь со мной.
Работаю удалённо — цены и условия для вашего города: