Как объединить кнопки в группу 1с
Время неумолимо бежит вперед. И с каждым годом Планфикс, как хороший коньяк, становится только лучше. Сегодня я хочу рассказать вам об очередном витке развития одного из объектов ПланФикса — кнопок. Теперь их можно объединять в группы. Группы кнопок позволили увеличить количество кнопок в аккаунтах наших пользователей. Но давайте обо всем по порядку.
История развития: от «кнопочек» до группы кнопок
Помните, почти 5 лет назад в нашем функционале появились новые элементы? Тогда Дмитрий Гончаренко ласково назвал их «кнопочки». Кнопочки были просты, незатейливы и умели немногое — только менять статусы. Это был первый шаг к более сложному функционалу.
Через 2,5 года мы выпустили другой функционал кнопочек, гораздо более серьезный и позволяющий запустить большее количество автоматических процессов. Это уже были полноценные Кнопки.
Кнопки становятся фактически автоматическими сценариями. Они отображаются при соблюдении набора условий. По клику на такую кнопку запускаются нужные действия. Автоматизации в работе кнопок существенно прибавилось. Они стали солиднее и ответственнее. Но и их предшественницы-кнопочки никуда не делись, они по-прежнему удобны для быстрого перевода задачи из одного статуса в другой.
С тех пор, временами, пользователи присылали в Службу поддержки пожелания и вопросы по поводу кнопок. Кому-то их не хватало, кто-то не понимал, какие действия необходимо предпринять, чтобы кнопка появилась в интерфейсе и на неё можно было нажать.
Так постепенно мы подобрались к новому этапу развития кнопок, в котором постарались учесть пожелания многих пользователей.
Знакомьтесь — группа кнопок
Внешне группа кнопок похожа на обычную кнопку, но отображается в задаче всегда. И если на неё кликнуть, внутри отображаются только кнопки, входящие в эту группу и подходящие по условиям. То есть получились привычные умные кнопки внутри «глупой» группы.
Создается группа кнопок там же, где и обычные кнопки: «Управление аккаунтом» — «Процессы задач» — выбираем нужный процесс — «Кнопки»:
По клику картинка откроется в новом окне и большем размере.
Созданная группа кнопок появится над списком кнопок:
По клику картинка откроется в новом окне и большем размере.
Для того, чтобы кнопку добавить в группу, кликаем по иконке группы, переходим в нее, а дальше действуем как всегда — создаём обычную кнопку:
По клику картинка откроется в новом окне и большем размере.
Теперь наша новая кнопочка появится внутри группы.
Новая логика работы
Сейчас, если вы откроете задачу, система отобразит кнопку группы, но не проверит соблюдение условий отображения кнопок, входящих в эту группу — ведь их все равно пока не видно. Именно поэтому группу кнопок я назвала «глупой». Ну ладно, «глупенькой» .
Но как только вы захотите развернуть группу кнопок и кликнете на нее — ПланФикс начнет проверку условий каждой кнопки. В итоге в выпадающем списке группы отобразятся только те кнопки, которые в этот момент соответствуют условиям показа, в том числе и по правам доступа.
Такая логика работы позволит снизить нагрузку на систему, это и дает возможность нам добавить больше кнопок в аккаунты пользователей.
На боевом дежурстве
Сейчас предлагаю вам подумать, как группы кнопок вы можете использовать в своей работе прямо сейчас. А пока опытные пользователи думают, для новеньких планфиксовцев я покажу принцип работы группы кнопок на примере агентства недвижимости.
Представьте: к вам обратился клиент, который планирует продать квартиру. Появилась соответствующая задача. Вам необходимо определить объект недвижимости, чтобы заполнить нужный набор полей, а потом запланировать встречу с клиентом.
Добавляете группу кнопок «Объект недвижимости» , в нее входит список кнопок. Каждая кнопка запускает процесс создания подзадач по своему шаблону:
По клику картинка откроется в новом окне и большем размере.
В вашем случае это квартира, ее и выбираете:
По клику картинка откроется в новом окне и большем размере.
Количество кнопок в аккаунте
Теперь о самом интересном — о количестве кнопок в аккаунте. Формула такая: то количество кнопок в пакете, что было раньше, добавляется в такое же количество групп сейчас.
Получается, в пакете «Бизнес» можно добавить 5 кнопок в 5 групп — всего 25 кнопок в одном процессе. Раньше их было только 5. А в пакете «Корпорация» — 15 групп по 15 кнопок — всего 225 кнопок на процесс. Раньше можно было использовать только 15 кнопок в процессе. Я, конечно, слабо представляю в какой ситуации столько кнопок в одном процессе может понадобиться, но возможность такая появилась.
Надеюсь, такая новинка порадует тех, кто обожает нажимать на кнопки и запускать магические автоматические действия 🙂
P.S. Скажу и от себя пару слов: эта заметка — авторский дебют Ольги Тимошенко в блоге ПланФикса. Так что теперь в команде, которая занимается контентом, нас уже трое: я, Артём Колисниченко и Оля. Поэтому заметок, новостей и полезных видео о ПланФиксе должно стать больше. А то не знаю как вам, а мне их все еще не хватает 🙂
15 Comments
Спасибо за отличную новость! Согласен с Дмитрием, контента по Планфиксу не хватает, тем более, от команды его создателей! А, Ольгу, поздравляем с дебютом!
Отличная новость! А может на этой радостной волне и ограничение на нажатие кнопок в 1 минуту также в 5 раз уменьшим (до 12 секунд задержки)! Как Вам такое предложение?
Как управлять расположением команд в командной панели формы?
В 1С Предприятии 8.2 внешний вид формы определяется расположением и свойствами элементов в дереве элементов формы. На основе этих свойств система сама "рисует" форму, в частности, командную панель формы.
Любая группа кнопок (командная панель, подменю, группа кнопок, контекстное меню) заполняется по одинаковым правилам:
- сначала идут кнопки, предоставляемые источником команд, с которым связана данная группа;
- затем идёт фрагмент командного интерфейса, если источник команд подразумевает его включение;
- затем идут пользовательские команды, добавленные в данную группу;
- затем идёт подменю Все действия (только для командной панели);
- и в конце идёт кнопка Справка в том случае если она была предоставлена источником команд.
Рассмотрим самый простой вариант, когда в форме элемента справочника созданы две команды и помещены в командную панель формы.
В результате в режиме 1С:Предприятия расположение кнопок, соответствующих созданным командам Команда1 , Команда2 соответствует описанному выше алгоритму: в командной панели формы и в подменю Все действия сначала расположены команды, предоставляемые источником команд - формой элемента справочника (например, Записать и закрыть, Записать и др.), затем команды, созданные разработчиком ( Команда1 , Команда2 ), и затем команда Справка .
Однако у разработчика есть несколько способов существенно вмешаться в этот процесс и повысить удобочитаемость командной панели, контекстного меню и т.п. Какие же есть возможности изменить состав и порядок кнопок?
1. Можно отделить команды, созданные разработчиком, от других команд разделителем.
Для этого нужно создать в командной панели группу вида Группа кнопок и перенести в нее эти команды.
2. Можно расположить какие-то команды разработчика в начале группы команд.
Для этого нужно отменить у группы источник команд (для контекстного меню и автоматической командной панели нужно выключить флажок Автозаполнение ), затем добавить в группу свою кнопку, после нее добавить группу вида Группа кнопок и у этой группы установить источник команд - например, Форма .
В результате в режиме 1С:Предприятия командная панель формы и подменю Все действия будут иметь следующий вид.
3. Можно переместить автоматически заполняемые кнопки.
Для этого нужно поместить в дерево командной панели или контекстного меню кнопку, связанную с той же командой, которая заполняется из источника данных (например, Удалить , Скопировать и др.). Автоматически такая кнопка не будет размещена среди стандартных команд и, таким образом, можно переместить стандартную команду в другое место.
В результате в режиме 1С:Предприятия командная панель формы и подменю Все действия будут иметь следующий вид.
Чтобы пиктограмма команды Удалить отображалась в командной панели формы, нужно установить свойство этой кнопки ТолькоВоВсехДействиях в значение Нет .
4. Можно изменить порядок и видимость кнопок фрагмента командного интерфейса, предоставляемого источником команд Форма .
Например, у объекта конфигурации справочник Контрагенты существует команда Команда3 . Эта команда имеет группу размещения команд - Командная панель формы.Важное и тип параметра команды - СправочникСсылка.Контрагенты .
После установки этих свойств, Команда3 становится доступна закладке Командный интерфейс формы объекта, тип которого имеет команда и располагается в командной панели формы после стандартных команд, поставляемых формой элемента справочника.
В результате в режиме 1С:Предприятия командная панель формы и подменю Все действия будут иметь следующий вид.
Команда3 входит в группу команд фрагмента командного интерфейса. Если Вас не устраивает место, в которое вставляется фрагмент командного интерфейса, можно поместить в командную панель группу вида Группа кнопок и у этой группы установить источник команд - Глобальные команды командной панели формы .
В этом случае автоматическое размещение фрагмента будет отменено (по аналогии со стандартной кнопкой, добавленной вручную), и фрагмент командного интерфейса будет выводиться в новой группе.
Что же касается содержимого фрагмента командного интерфейса, то его редактирование доступно на закладке Командный интерфейс редактора формы.
5. Можно включить/выключить видимость стандартных команд, предоставляемых источником команд, например - Форма .
Для этого нужно открыть окно Состав команд в палитре свойств формы.
В заключение заметим, что возможности изменить порядок кнопок, предоставляемых источником команд, нет. Если такая необходимость появится, нужно отменить источник у группы команд, и полностью заполнить группу вручную.
Как программно добавить в командную панель кнопку со стандартной функцией "Сортировать по убыванию"?
Можно, например, включить автозаполнение в ком. панели, потом при открытии создать структуру или массив с действиями, заполнить его, и после этого отключить автозаполнение
Код 1C v 8.х
Похожие FAQ
Google maps, поиск оптимального маршрута 5В данном посте хочу коснуться основных аспектов построения оптимального маршрута с использованием API Google maps. Исходные данные для построения маршрута: * Географические координаты объектов, которые хранятся в базе; * Координаты начальной и коне База 1С при запуске уходит в дамп и вылетает 1
В последнее время частенько обращаются пользователи у которых после замены или ремонта компьютера 1С не запускается, а точнее при открытии уходит в dump и вылетает. Как правило, решение одно: Отключить аппаратное ускорение видеокарты В Window В регламентированной отчетности не печается штрих-код 1С ( EanGnivc ) 0
Установка шрифта EanGnivc В формах регламентированной отчетности, например, налоговые декларации, которые введены для предоставления отчетности, на всех листах в левом верхнем углу содержат свой уникальный штрих-код. В этих формах, которые распрос Горячие клавиши 1С Пользователю [ Предприятие] 5
Основные команды: Интерфейс: F6 - переключение между формами рабочего стола F10 - переход в главное меню окна Alt+1 - переход на панель Разделов Alt+2 - переход на панель Навигации Alt+3 - переход на панель Действий Alt+9 - переход Горячие клавиши 1С Разработчику [ Конфигуратор ] 119
Основные команды: Кодирование: Ctrl+Пробел - вызов подсказки Ctrl+Q - вызов шаблона Ctrl+F1 - поиск в синтакс-помощнике Ctrl + L - удалить текущую строку Alt+Shift+F - отформатировать код Исследование: F12 - ставим курсор на про Посмотреть все результаты поиска похожих
Еще в этой же категории
Программное создание таблицы значений с условным оформлением 12
Как создать на форме таблицу и сделать для нее подсветку содержимого колонки в строке по условию? Итак для начала нам надо добавить реквизиты в форму. Для этого у нас есть метод: ИзменитьРеквизиты(). Перед тем как его использовать мы сформируем ма Поле выбора
Заполнение списка значений в элементе поле выбора на форме 10
//Заполнение списка перебором данных // Элемент формы МетаданныеВыбор имеет тип - Произвольный, Использование - Режим выбора из Списка, кнопка списка Для Каждого Метаданное из Метаданные.РегламентныеЗадания Цикл ЭлементыФормы.МетаданныеВыбор.Спи Поле выбора
Как ограничить список выбора? 8
Ограничим список элементов, установив отбор в открываемой форме //Пример 1 Процедура СтатьяПДРНачалоВыбора(Элемент, СтандартнаяОбработка) ФормаВыбора = Справочники.ПрочиеДоходыИРасходы.ПолучитьФормуВыбора(, Элемент); ЭлементОтбораВидПДР = Форма Реквизит
Как активизировать, перевести фокус на необходимый элемент на форме? 6
//Текущему Элементу формы присваиваем элемент котровый необходимо активизировать ЭтаФорма.ТекущийЭлемент = ЭлементыФормы.ТабличноеПоле; Посмотреть все в категории Работа с Формой (Диалог) и её элементами
Произвольные группы
В разделе Правила размещения глобальных команд мы говорили о том, что команды располагаются в стандартных группах и что при необходимости разработчик может расширить стандартный состав групп. Для этого используются объекты конфигурации Группа команд, расположенные в ветке Общие дерева конфигурации.
Произвольная группа команд используется для логического объединения команд, выполняющих похожие действия.
Например, создана произвольная группа команд Печать, предназначенная для объединения команд, которые формируют различные печатные формы.
Как и для других объектов конфигурации, для объекта Группа команд определены универсальные свойстваИмя, Синоним, Комментарий.
Для определения места размещения группы используется свойство Категория.
ВНИМАНИЕ!
Свойство группы Категория обязательно должно быть заполнено. Если значение для свойства не выбрано, система установит значение по умолчанию Панель навигации.
Выбранная категория определяет, где будет размещена группа, и, следовательно, команды, принадлежащие этой группе. В качестве значения может быть выбрана только одна из стандартных категорий команд.
Для группы команд Печать установлена категория Командная панель формы. Это значит, что в интерфейсе произвольная группа размещена в командной панели формы.
Давайте включим произвольную команду печати ценников по виду цен в группу Печать. Для этого в свойстве Группа нашей подчиненной команды установим произвольную группу Командная панель формы.Печать.
Кроме того, для свойства Отображение установим значение Авто
Включение произвольной команды в произвольную группу
1С8: Включение произвольной команды в произвольную группу
Теперь в форме списка и форме элемента справочника Виды цен команда печати ценников располагается уже не в группе Важное, а в группе Печать.
ПРИМЕЧАНИЕ
В командной панели формы кнопками отображаются команды из группы Важное. Команды остальных групп отображаются в виде подменю.
Настройка представления произвольной группы команд
1C8: Настройка представления произвольной группы команд
Из особенностей объекта Группа команд необходимо отметить, что для него не назначаются права, не определяется принадлежность к подсистемам и зависимость от функциональных опций. Произвольная группа будет представлена в командном интерфейсе пользователя только в том случае, когда в нем доступна хотя бы одна из команд, включенных в группу.
В противном случае группа в командный интерфейс не включается. В нашем приложении доступ к справочнику Виды цен разрешен и для роли Менеджер по продажам. Но для этой роли сброшено право Просмотр для произвольной подчиненной команды.
В результате такой настройки прав произвольная группа команд Печать для менеджера по продажам оказалась пустая, и она не представлена в командной панели формы списка справочника Виды цен.
№1 Шпаргалка 1С. Добавление кнопок на форму.
№1 Шпаргалка 1С. Добавление кнопок на форму.
Элементы управления представляют собой отдельную группу объектов, предназначенных для ввода и представления информации в диалогах. Они могут располагаться на форме, использоваться для редактирования ячеек табличного поля, табличного документа.
Кнопка является одним из наиболее часто используемых элементов управления в формах прикладных решений программы 1С:Предприятие. В этом видео-уроке мы вместе с вами создадим простейший прикладной объект 1С - так называемую "обработку", далее мы создадим основную форму обработки и научимся добавлять в эту форму такой важный элемент управления, называемый "Кнопка"
1. Создание тестовой обработки
Здравствуйте дорогие друзья! С вами Дегтярев Роман. Тренинг - Центр “Старт в 1С”.
Прочтите текст, и одновременно посмотрите короткую видео-шпаргалку, в которой речь пойдет о вставке интерфейсных элементов в форму какого-либо прикладного объекта 1С, ( в том числе и обработки 1С, на примере которой мы рассмотрим этот процесс)
Видео, на котором показан весь процесс, расположено ниже.
Вы можете просматривать это видео в высоком качестве и в полноэкранном режиме, используя кнопки управления проигрыванием видеоролика
Это пригодится нам вообще, как базовый навык конструирования форм, так и для выполнения других практических упражнений.
Мы поговорим о вставке одного из видов интерфейсных элементов, использующихся в любом прикладном решении 1С:Предприятии, о вставке кнопок в форму.
Давайте с вами запустим наше учебное прикладное решение в режиме конфигурирования (разработки) Эта инструкция, об учебном прикладном решении, касается тех, кто обучается на наших курсах программирования 1С.
Те, кто не обучается на курсах, могут запустить в режиме конфигурирование любое имеющееся прикладное решений, в том числе и полностью пустое. Этого будет достаточно изучения для рассматриваемого примера.
Для того, что бы нам было куда вставлять кнопки - предварительно создадим какую то отдельную обработку в дереве объектов конфигурации.
Итак , мы вошли в режим конфигурирования прикладного решения. Давайте с вами создадим обработку. Правдой кнопкой мыши нажимаем на узле “Обработки” и выпадает меню.
Выбираем в выпавшем меню пункт с именем “добавить”. Откроется окно визуального конструктора обработки.
Обработку можем называть каким-то определенным именем, а можем не называть - и оставить имя, которое присвоено по умолчанию.
Например, давайте дадим нашей обработке имя “Тестовая обработка”. Вы сами называйте так как вам требуется , если вы создаете обработку.
После присвоения имени нашей обработке можем внизу окна конструктора сразу же нажать кнопку “Закрыть” - поскольку иных действий выполнять не требуется.
Тестовая обработка создана, мы видим ее имя в дереве конфигурации, в узле “Обработки”. Давайте, щелкнем мышью на имени нашей обработки, развернем этот пункт и увидим под-элементы, которые могут входить в состав нашей обработки: “Реквизиты”, “Формы”, “Макеты” и так далее.
2. Создание основной формы обработки
Теперь пришла очередь создать форму для нашей обработки. Форма обработки - это визуальное представление, основное диалоговое окно, которое увидит пользователь и с которым он будет взаимодействовать, если запустит на выполнение нашу обработку.
Она является аналогом окна, формы любой другой программы под Windows - и может иметь в своем составе элементы меню, командные панели, поля ввода, надписи, кнопки, выпадающие списки и иные элементы управления - все те элементы, к которым мы привыкли при работе с большинством обычных программ.
Давайте нажмем правой кнопкой мыши на узле “Формы”, далее, выбираем в появившемся контекстном меню пункт с именем “Добавить”
Перед нами появляется окно конструктора формы обработки. С его помощью, на начальном этапе, мы можем указать некоторые особенности вновь создаваемой формы (ее программное имя, тип, является ли она основной, и так далее)
Но нам сейчас никаких особых настроек делать не нужно, поэтому мы просто нажимаем кнопку “Готово”, в нижней части окна конструктора формы обработки.
После этого перед нами открывается вновь созданная форма обработки 1С.
3. Теперь рассмотрим процесс создания кнопок в форме обработки
Итак, как же происходит вставка кнопок?
Обратим внимание, что по умолчанию, во вновь созданной форме, некоторые кнопки уже вставлены во время конструирования обработки. Эти кнопки вставлены автоматически.
Это стандартные кнопки “действий” двух, так называемых, командных панелей, что имеются в верхней части окна формы, и в нижней части окна.
Нас же сейчас интересуют те кнопки, которые мы вставим сами, “вручную”.
Для того, чтобы вставить какой то интерфейсный элемент, в том числе и кнопки, в конструируемую форму, мы должны нажать специальную кнопку с “иконкой” (на иконке виден желтый значок “плюс” ), открывающую окно выбора интерфейсного элемента для вставки.
Эта специальная кнопка с “иконкой” находится, как правило, на панели инструментов, под главным меню основного окна конфигуратора.
При наведении мыши над нужной кнопкой возникает подсказка “Вставить элемент управления”.
Если кнопка на панели инструментов отсутствует (это зависит от настроек панелей инструментов), у нас имеет альтернативный путь: Когда перед нами на экране имеется окно конструктора формы, мы можем выбрать из главного меню конфигуратора пункт: “Форма”/ “Вставить элемент управления”.
Независимо от того, нажали ли мы кнопку в панели инструментов, или выбрали действие из главного меню - перед нами открывается специальное окно выбора элемента управления, для вставки. Окно имеет заголовок “Вставка элемента управления”
В окне мы видим много различных элементов управления. (Вы можете потренироваться на досуге и попробовать вставить в форму эти элементы, посмотреть, как они выглядят).
Сейчас же нас интересует элемент “Кнопка”. По умолчанию, после открытия окна “Вставка элемента управления”, для вставки как раз выбран именно первый элемент из списка возможных и этот элемент управления - “Кнопка”.
Выбор вида элемента управления для вставки осуществляется в левой части окна, а в правой части окна дана возможность установить некоторые свойства элемента перед тем, как он будет вставлен в форму.
То есть, перед вставкой какого-то элемента управления в форму, его можно предварительно “подготовить”, установив основные его свойства: имя, заголовок, текст подсказки при наведении мыши, и некоторые другие свойства.
Например, любому элементу, в том числе и “кнопке”, мы можем присвоить какое то имя перед вставкой. Это имя будет являться именем объекта на встроенном языке 1С:Предприятие, именем программного объекта.
Это то имя, к которому потом можно будет обращаться из встроенного языка программирования .
Аналогично, мы можем присвоить какой то заголовок кнопке, надпись на ней. В нашем примере присвоим кнопке заголовок “Наша кнопка”.
Если мы желаем, чтобы по нажатию этой кнопки выполнялось какое-то действие на встроенном языке программирования, тогда мы не должны снимать галочку-флажок “создать процедуру”. По-умолчанию этот флажок включен.
Если этот флажок будет включен, то одновременно со вставкой кнопки, в программном модуле формы будет создана пустая процедура-обработчик, в которой мы сможем написать любой нужный алгоритм, выполняемый при нажатии этой кнопки в режиме пользователя.
Там же, в окне “Вставка элемента управления” мы можем вести текст подсказки, если желаем. Давайте в поле ввода “Подсказка” напишем - ”Это наша кнопка”. Эта подсказка будет появляться при наведение курсора мыши на вставленную кнопку.
Все, подготовка перед вставкой завершена, теперь нажимаем кнопку “Ок”.
После этого окно “Вставка элемента управления” закрывается и теперь мы можем вставить нашу кнопку в произвольное место нашей формы. Значок курсора мыши временно изменен на крупный “плюс” - таким образом система подсказывает, что мышью нужно указать конкретное место на форме, куда мы собираемся вставить элемент управления.
Выбираем место под кнопку в любой части нашей формы и нажимаем левую кнопку мыши. Наша новая кнопка вставилась в форму, и одновременно конструктор формы моментально переключает нас в окно редактора программного модуля формы.
Он показывает нам тело обработчика события нажатия вновь вставленной кнопки . То есть, мы сразу же можем написать код, который будет у нас вызываться при нажатии кнопки .
Давайте, все-таки, вернемся на закладку “Диалог” (закладки конструктора формы находятся снизу окна) и убедимся, что кнопка в форме появилась. Да, наша кнопка здесь!
Мы можем поменять ее размер, “потянув мышью” за угол кнопки, или куда-то сдвинуть нашу кнопку в пределах окна формы.
А перейдя снова в программный модуль (закладка “Модуль”) -мы можем писать код на языке программирования, для выполнения действий по нажатию нашей кнопки.
Впишем некоторый код, пусть он, для простоты, состоит всего из одной строчки “Сообщить(“Нажата наша кнопка!”);”
Давайте проверим, запустим наша прикладное решение в режиме пользователя.
Далее, выберем в главном меню пункт “Операции”/”Обработки”. Вспоминаем, что мы создали обработку и назвали ее “Тестовая обработка”, поэтому обработку с таким именем мы и выбираем из открывшегося списка.
Тмк, мы видим перед собой форму нашей обработки. В форме мы видим нашу кнопку с заголовком “Наша кнопка”. Обратите внимание, подсказка “Это наша кнопка” появляется при наведение курсора мыши над кнопкой.
Подобным образом мы можем вставлять любые другие элементы управления, о которых мы поговорим с вами на наших курсах и видео-шпаргалках.
Резюме: Мы успешно вставили кнопку на форму обработки, и теперь вы должны уметь это делать. До встречи в видеоуроках .
С вами был Дегтярев Роман.
Тренинг-центр “Старт в 1С”
Как научиться программировать в 1С с нуля?
Как работать программистом 1С и получать до 150 000 рублей в месяц?
ЗАПИШИСЬ НА БЕСПЛАТНЫЙ
"ПРОГРАММИРОВАНИЕ в 1С ДЛЯ НОВИЧКОВ"
Курс придет на электронную почту. Стань программистом, выполняя пошаговые задания.
Читайте также: