Black Friday: Cashback 35% при покупке 1С лицензий на счет INFOSTART.RU

Альтернатива свойству "История выбора при вводе"

Публикация № 893611

Разработка - Практика программирования

быстрый выбор

6
Альтернативный способ использования истории выбора


У реквизитов документов есть замечательное свойство «История выбора при вводе». Все бы хорошо, но как обычно дьявол кроется в деталях. Для примера возьмем реквизит «Контрагент» документа «ГТДПоИмпорт» (ГТД по импорту), в который обычно заносится не просто элемент из справочника «Контрагенты», а нужна именно таможня. Таким образом, вся наша предыдущая история выбора никуда не годится, так как она не учитывает специфику данного контекста.

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

&НаСервереБезКонтекста
Функция КонтрагентНачалоВыбораИзСпискаНаСервере()
                Запрос = Новый Запрос("ВЫБРАТЬ РАЗЛИЧНЫЕ ПЕРВЫЕ 7
                                      |       ГТДПоИмпорту.Контрагент КАК Контрагент
                                      |ИЗ
                                      |       Документ.ГТДПоИмпорту КАК ГТДПоИмпорту
                                      |ГДЕ
                                      |       ГТДПоИмпорту.Проведен = ИСТИНА
                                      |
                                      |УПОРЯДОЧИТЬ ПО
                                      |       Контрагент
                                      |АВТОУПОРЯДОЧИВАНИЕ");
                Возврат Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку(0);
КонецФункции

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

Функция КонтрагентНачалоВыбораИзСпискаНаСервере()
                Запрос = Новый Запрос("ВЫБРАТЬ РАЗЛИЧНЫЕ ПЕРВЫЕ 7
                                      |       ГТДПоИмпорту.Контрагент КАК Контрагент
                                      |ИЗ
                                      |       Документ.ГТДПоИмпорту КАК ГТДПоИмпорту
                                      |ГДЕ
                                      |       ГТДПоИмпорту.Дата > &Дата
                                              |              И ГТДПоИмпорту.Проведен = ИСТИНА
                                      |
                                      |УПОРЯДОЧИТЬ ПО
                                      |       Контрагент
                                      |АВТОУПОРЯДОЧИВАНИЕ");
                Запрос.УстановитьПараметр("Дата", НачалоМесяца(ДобавитьМесяц(ТекущаяДата(), -4)));
                Выборка = Запрос.Выполнить();

                Если Выборка.Пустой() Тогда
                               Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ ПЕРВЫЕ 7
                                              |              ГТДПоИмпорту.Контрагент КАК Контрагент
                                              |ИЗ
                                              |              Документ.ГТДПоИмпорту КАК ГТДПоИмпорту
                                              |ГДЕ
                                              |              ГТДПоИмпорту.Проведен = ИСТИНА
                                              |
                                              |УПОРЯДОЧИТЬ ПО
                                              |              Контрагент
                                              |АВТОУПОРЯДОЧИВАНИЕ";
                               Выборка = Запрос.Выполнить();
                КонецЕсли;
                Возврат Выборка.Выгрузить().ВыгрузитьКолонку(0);
КонецФункции

или такой вариант

Функция КонтрагентНачалоВыбораИзСпискаНаСервере()
                Запрос = Новый Запрос("ВЫБРАТЬ РАЗЛИЧНЫЕ ПЕРВЫЕ 7
                                      |       ГТДПоИмпорту.Контрагент КАК Контрагент,
                                      |       КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ГТДПоИмпорту.Ссылка) КАК Количество
                                      |ПОМЕСТИТЬ ТопЧарт
                                      |ИЗ
                                      |       Документ.ГТДПоИмпорту КАК ГТДПоИмпорту
                                      |ГДЕ
                                      |       ГТДПоИмпорту.Дата > &Дата
                                      |       И ГТДПоИмпорту.Проведен = ИСТИНА
                                      |
                                      |СГРУППИРОВАТЬ ПО
                                      |       ГТДПоИмпорту.Контрагент
                                      |
                                      |УПОРЯДОЧИТЬ ПО
                                      |       Количество УБЫВ
                                      |;
                                      |
                                      |////////////////////////////////////////////////////////////////////////////////
                                      |ВЫБРАТЬ
                                      |       ТопЧарт.Контрагент КАК Контрагент
                                      |ИЗ
                                      |       ТопЧарт КАК ТопЧарт
                                      |
                                      |УПОРЯДОЧИТЬ ПО
                                      |       Контрагент
                                      |АВТОУПОРЯДОЧИВАНИЕ");
                Запрос.УстановитьПараметр("Дата", НачалоМесяца(ДобавитьМесяц(ТекущаяДата(), -4)));
                Выборка = Запрос.Выполнить();

                Если Выборка.Пустой() Тогда
                               Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ ПЕРВЫЕ 7
                                              |              ГТДПоИмпорту.Контрагент КАК Контрагент
                                              |ИЗ
                                              |              Документ.ГТДПоИмпорту КАК ГТДПоИмпорту
                                              |ГДЕ
                                              |              ГТДПоИмпорту.Проведен = ИСТИНА
                                              |
                                              |УПОРЯДОЧИТЬ ПО
                                              |              Контрагент
                                              |АВТОУПОРЯДОЧИВАНИЕ";
                               Выборка = Запрос.Выполнить();
                КонецЕсли;
                Возврат Выборка.Выгрузить().ВыгрузитьКолонку(0);
КонецФункции

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

После того как разобрались с функцией формирования списка, ее следует вызвать. Добавим процедуру вызова в реквизит формы «Контрагент»:

&НаКлиенте
Процедура КонтрагентНачалоВыбораИзСписка(Элемент, СтандартнаяОбработка)
    Элемент.СписокВыбора.ЗагрузитьЗначения(КонтрагентНачалоВыбораИзСпискаНаСервере());
КонецПроцедуры

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

Процедура КонтрагентНачалоВыбораИзСписка(Элемент, СтандартнаяОбработка)
    Если Элемент.СписокВыбора.Количество() = 0 Тогда
        Элемент.СписокВыбора.ЗагрузитьЗначения(КонтрагентНачалоВыбораИзСпискаНаСервере());
    КонецЕсли;
КонецПроцедуры

Или если хочется совсем уж все и вся автоматизировать, тогда такой вариант:

Процедура КонтрагентНачалоВыбораИзСписка(Элемент, СтандартнаяОбработка)
                Если Элемент.СписокВыбора.Количество() = 0 Тогда
                               Элемент.СписокВыбора.ЗагрузитьЗначения(КонтрагентНачалоВыбораИзСпискаНаСервере());
                КонецЕсли;
                Если ПустаяСтрока(Объект.Контрагент) И Элемент.СписокВыбора.Количество() = 1 Тогда
                               СтандартнаяОбработка = Ложь;
                               Объект.Контрагент = Элемент.СписокВыбора[0].Значение;
                КонецЕсли;
КонецПроцедуры

После всех манипуляций получаем:

Документ «ГТД по импорту» рассмотрен только для демонстрации методики, данное решение может применяться в любом другом документе.

В качестве эпилога

У реквизитов есть еще одно интересное свойство «Создание при вводе». Все бы ничего, но для чего разработчики добавили его к реквизитам отчетов? Не смог придумать сценарий его использования, ведь если создать новый элемент, то какой должен получиться отчет? Если есть у кого какие мысли по этому поводу, бенвенуто в обсуждения…

6

Специальные предложения

Вознаграждение за ответ
Показать полностью
Комментарии
Избранное Подписка Сортировка: Древо
1. RocKeR_13 716 27.08.18 17:16 Сейчас в теме
но для чего разработчики добавили его к реквизитам отчетов

Так добавили они это свойство в принципе для видов элементов формы. Просто в формах отчетов это свойство будет бесполезно
2. Fox-trot 108 27.08.18 17:21 Сейчас в теме
вынужден не согласиться, так как это свойство прежде всего у реквизита отчета и только потом уже у реквизита элемента на форме
3. RocKeR_13 716 27.08.18 17:35 Сейчас в теме
(2) прошу прощения, описка: свойство в принципе для реквизитов, которое определяет, будет ли кнопка создания видна при вводе данных. Другой вот вопрос, что авторежим у реквизитов отчета по умолчанию "Использовать". Ну что ж, тут какие варианты:
1) просто не предусмотрели
2) не посчитали этот факт существенным, так как по сути кнопка ничем не мешает.
4. Fox-trot 108 27.08.18 17:42 Сейчас в теме
меня больше интересует сценарий использования
5. user929348 30.08.18 18:22 Сейчас в теме
Так, а где история? Берет то первые 7 записей, а не те, которые пользователь использовал ранее.
6. Fox-trot 108 30.08.18 18:26 Сейчас в теме +1 $m
(5) "Как тебя понимать, Саид?" (с)
а записи по-твоему кто создал, если не пользователь?
9. user929348 04.09.18 12:26 Сейчас в теме
(6) Пользователь создал 50 записей. Активно использует, часто выбирает, 15 записей.
А в вашем запросе берутся первые попавшиеся записи, а не история(читай "часто выбираемые записи")
10. Fox-trot 108 04.09.18 13:33 Сейчас в теме
(9) не соглашусь, потому как выбор все же самых популярных
ВЫБРАТЬ РАЗЛИЧНЫЕ ПЕРВЫЕ 7
                                      |       ГТДПоИмпорту.Контрагент КАК Контрагент,
                                      |       КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ГТДПоИмпорту.Ссылка) КАК Количество
                                      |ПОМЕСТИТЬ ТопЧарт
                                      |ИЗ
                                      |       Документ.ГТДПоИмпорту КАК ГТДПоИмпорту
                                      |ГДЕ
                                      |       ГТДПоИмпорту.Дата > &Дата
                                      |       И ГТДПоИмпорту.Проведен = ИСТИНА
                                      |
                                      |СГРУППИРОВАТЬ ПО
                                      |       ГТДПоИмпорту.Контрагент
                                      |
                                      |УПОРЯДОЧИТЬ ПО
                                      |       Количество УБЫВ 
Показать
7. dandykry 3 03.09.18 10:15 Сейчас в теме
Чем не устроило ПараметрыВыбора и отбор по признаку таможни? или "ОбработкаПолученияДанныхВыбора"?
8. Fox-trot 108 03.09.18 11:42 Сейчас в теме
В моей конфигурации нет ни того ни другого
11. for_sale 808 01.07.19 20:10 Сейчас в теме
Сказ о том, как автор открыл новый чудный мир, что, оказывается, можно прикрутить свой список выбора полю ввода?
Оставьте свое сообщение

См. также

Полезные процедуры и функции для программиста 160

Статья Программист Нет файла v8 1cv8.cf Россия Бесплатно (free) Практика программирования Универсальные функции

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

07.10.2019    11655    HostHost    23       

Перенос документов, остатков и справочников КА 1.1 => КА 2 / УТ 11. Обновлено до КА 2.4.10.х и УТ 11.4.10.х! Промо

Более 130 компаний выполнили переход на КА 2 или УТ 11 с помощью нашей разработки! Позволяет перенести не только остатки и справочники (как типовая обработка), но и документы за нужный период времени. Предоставляем техподдержку, оперативно исправляем замечания, выпускаем обновления при выходе новых релизов программ 1С. Вы можете проверить разработку до покупки: сделаем бесплатный тестовый перенос из вашей базы КА 1.1 и предоставим доступ к базе-результату через веб-клиент!

29700 руб.

Программы для исполнения 488-ФЗ: Маркировка товаров Промо

1 января 2019 года вступил в силу ФЗ от 25.12.2018 № 488-ФЗ о единой информационной системе маркировки товаров с использованием контрольных (идентификационных) знаков, который позволяет проследить движение товара от производителя до конечного потребителя. Инфостарт предлагает подборку программ, связанных с применением 488-ФЗ и маркировкой товаров.

Агрегатные функции СКД, о которых мало кто знает 355

Статья Программист Нет файла v8 v8::СКД 1cv8.cf Бесплатно (free) Практика программирования

Пользуетесь ли Вы всеми возможными агрегатными функциями, которые предоставляет система компоновки данных? Если Вы используете только: СУММА, КОЛИЧЕСТВО, МИНИМУМ, МАКСИМУМ, СРЕДНЕЕ, то эта статья для Вас.

05.09.2019    15573    ids79    44       

Три костыля. Сказ про фокусы в коде 124

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования Разработка

Три интересных (или странных) костыля в коде, которые могут помочь в повседневных и не очень задачах.

03.09.2019    10546    YPermitin    69       

Перенос данных БП 2.0 => УТ 11 / КА 2 / ERP 2 (перенос остатков, документов и справочников из "1С:Бухгалтерия предприятия 8", ред. 2.0 в "1С:Управление торговлей 8", ред.11 / КА 2 / ERP 2). Обновлено до УТ 11.4.10.х, КА 2.4.10.х, ERP 2.4.10.х! Промо

Перенос позволяет загрузить в УТ 11 / КА 2 / ERP 2 документы за выбранный период, справочную информацию и остатки по счетам бух. учета. Переносятся остатки денежных средств, взаиморасчетов, остатки товаров и материалов на складах. Переносятся девятнадцать основных видов документов за выбранный период и вся нормативно-справочная информация. Есть фильтр по организации. Если нужно переносить что-то дополнительно, то обычно бесплатно дорабатываю правила (перед покупкой согласуйте необходимые доработки).

29700 руб.

Отслеживание выполнения фонового задания 143

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Практика программирования Универсальные функции Разработка

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

17.08.2019    12732    ids79    16       

Функции СКД: ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив 262

Статья Программист Нет файла v8 v8::СКД 1cv8.cf Бесплатно (free) Практика программирования

Подробное описание и использование внутренних функций системы компоновки данных: Вычислить, ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив, ВычислитьВыражениеСГруппировкойТаблицаЗначений.

08.08.2019    18054    ids79    31       

Новый раздел на Инфостарте - Electronic Software Distribution Промо

Инфостарт напоминает: на нашем сайте можно купить не только ПО, связанное с 1С. В нашем арсенале – ESD-лицензии на ПО от ведущих вендоров: Microsoft, Kaspersky, ESET, Dr.Web, Аскон и другие.

  • Низкие цены, без скрытых платежей и наценок
  • Оперативная отгрузка
  • Возможность оплаты с личного счета (кешбек, обмен стартмани на рубли и т.п.)
  • Покупки идут в накопления для получения скидочных карт лояльности Silver (5%) и Gold (10%)

Фоновое выполнение кода в 1С - это просто 124

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Практика программирования Разработка

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

02.08.2019    12757    avalakh    21       

Cashback 35% при покупке 1С лицензий на счет INFOSTART.RU с 27.11 по 04.12 Промо

Оформляете заказ на 1С лицензии или конфигурации. Получаете 35% от стоимости на счет в профиле INFOSTART.RU. Выбираете сервисы и продукты на сумму кэшбэка.

СКД - наборы данных и связи между ними, создание собственной иерархии, вложенные отчеты 141

Статья Программист Нет файла v8 v8::СКД 1cv8.cf Бесплатно (free) Практика программирования

Набор данных объект. Использование в схеме компоновки нескольких наборов данных. Различные варианты связи наборов: объединение, соединение. Использование иерархии в отчетах на СКД. Создание собственной иерархии, иерархия детальных записей. Использование вложенных схем в отчетах на СКД.

26.07.2019    16182    ids79    8       

СКД - использование расширений языка запросов, секция ХАРАКТЕРИСТИКИ 156

Статья Программист Нет файла v8 v8::СКД Бесплатно (free) Инструментарий разработчика Практика программирования

Автоматическое и не автоматическое заполнение полей компоновки данных. Использование расширений языка запросов для СКД «{…}», секция ВЫБРАТЬ, секция ГДЕ, параметры виртуальных таблиц. Автоматизированное использование дополнительных данных в запросе: секция ХАРАКТЕРИСТИКИ.

17.07.2019    13595    ids79    27       

Вакансия Программист, аналитик, эксперт 1С Промо

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

Регистры сведений. За кулисами 129

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Практика программирования Разработка

Небольшие заметки по внутреннему устройству регистров сведений.

09.07.2019    10651    YPermitin    12       

"Меньше копипаста!", или как Вася универсальную процедуру писал 183

Статья Программист Стажер Нет файла v8 v8::СКД 1cv8.cf Бесплатно (free) Практика программирования Разработка

Программист Вася разбирает подход создания универсальных методов на примере программного вывода СКД.

04.07.2019    9439    SeiOkami    49       

С 2020 года сервис «Продление поддержки конфигурации 1С:УПП» подорожает вдвое Промо

Успейте продлить поддержку УПП до повышения цен! Фирма «1С» предупредила об изменении цен на сервис «Продление поддержки конфигурации "1С:Управление производственным предприятием"». С 1 января 2020 года сервис подорожает в два раза.

Создание отчетов с помощью СКД - основные понятия и элементы 217

Статья Программист Нет файла v8 v8::СКД Бесплатно (free) Практика программирования Математика и алгоритмы

Основные принципы работы СКД. Понятия схемы компоновки и макета компоновки. Описание основных элементов схемы компоновки: наборы данных, поля, вычисляемые поля, ресурсы, параметры.

25.06.2019    23755    ids79    17       

Многопоточное ускорение однопользовательских нагрузок в 1С + Microsoft SQL Server 2017 179

Статья Программист Нет файла v8 v8::Запросы Бесплатно (free) Практика программирования Разработка

Взаимодействие с Microsoft SQL Server нередко вызывает трудности у 1С-ников, а потому интересны любые моменты, связанные с его использованием. О своем опыте работы с новым SQL Server 2017 участникам конференции Infostart-2018 рассказал директор ООО «Аналитика софт» Дмитрий Дудин.

11.06.2019    13606    dmurk    134       

1СПАРК РИСКИ. Сервис оценки благонадежности контрагентов. Промо

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

Регистры накопления. Структура хранения в базе данных 178

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Практика программирования Разработка

Структура хранения регистров накопления в базе данных для платформы 1С:Предприятие 8.x. Первая часть в серии публикаций.

16.05.2019    21177    YPermitin    27       

Выполнение внешней обработки в фоновом задании 149

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Практика программирования Разработка

Подробное описание подхода к созданию длительной операции на основе внешней обработки. Реализация протестирована на 1С 8.3.12.1714 (x64).

11.05.2019    13063    Eret1k    23       

Очный семинар по регулярному менеджменту Александра Фридмана "Вы или Хаос", 12 декабря 2019 г. , Санкт-Петербург Промо

Семинар по регулярному менеджменту от Александра Фридмана для собственников, первых лиц и топов. Технология управленческого планирования, комплексного управления временем и другими ресурсами, выполнением поручений, делами, информацией, контактами (встречи-звонки-почта).

от 11000 до 29000 рублей

Выгрузка документа по условию 5

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования Разработка

Что делать, если документы нужно выгружать не все подряд, а по какому-то фильтру: статусу, дате, набору условий... А что если он соответствовал этим условиям, а потом перестал? А если потом опять начал? Такие ситуации заставили попотеть не одного программиста.

25.04.2019    7415    m-rv    2       

Как прикрутить ГУИД к регистру сведений 23

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования Перенос данных из 1C8 в 1C8 Разработка

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

16.04.2019    9945    m-rv    16       

Перенос данных БП 3.0 => УТ 11 / КА 2 / ERP 2 (ЕРП) (перенос остатков, документов и справочной информации из "1С:Бухгалтерия предприятия 8", ред.3.0). Обновлено до БП 3.0.73.х, УТ 11.4.10.х, КА 2.4.10.х., ERP 2.4.10.х! Промо

Переносятся документы за выбранный период, справочная информация и остатки по счетам бух. учета в программу УТ 11 / КА 2 / ЕРП 2 (ERP). Переносятся все возможные виды операций ввода остатков на нужную дату. Есть отбор по периоду переноса документов и фильтр по организации, доступен выбор даты ввода остатков. Если нужно переносить что-то дополнительно, то обычно бесплатно добавляем это в перенос . Смотрите видеодемонстрацию со звуком - советами по переносу и рекомендациями настройки программ.

29700 руб.

О расширениях замолвите слово... 195

Статья Программист Стажер Нет файла v8 Бесплатно (free) Практика программирования Разработка

О чём стоит задуматься при принятии решения о создании расширения конфигурации…

07.04.2019    18912    ellavs    125       

Git-репозитории для 1С-кода (опыт использования при небольших проектах) 202

Статья Программист Стажер Нет файла v8 Windows Бесплатно (free) Практика программирования Разработка

Инструкции по взаимодействию с Git-репозиторием, которые писались для тех наших программистов, которые вообще никогда не работали с Git (руководства в духе "Как получить код из git-репозитория?", "Как отправить код в git-репозиторий")...

28.03.2019    15185    ellavs    83       

Вакансия Автор новостных обзоров на тему 1С и бухучета, По совместительству Промо

Редакция Infostart.ru будет рада сотрудничеству с 1С-специалистом, умеющим и любящим излагать свои мысли в письменной форме. Если вы работали в IT-изданиях или имеете опыт ведения технологического блога/канала/группы, если сможете сделать обзор обработок из каталога infostart.ru/public/all/, то у вас большое преимущество.

Трюки с внешними источниками данных 167

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Практика программирования Разработка

Некоторые трюки для преодоления ограничений внешних источников данных.

14.03.2019    15983    YPermitin    53       

Перенос документов и справочников ERP 2 / КА 2 / УТ 11 => БП 3.0 Промо

Перенос позволяет настроить собственный обмен данными между указанными программами, альтернативный предлагаемому фирмой 1С. Предоставляем техподдержку по всем вопросам данного обмена. Можем подключиться к вам удаленно для разбора ситуаций. Оперативно обновляем при выходе новых релизов 1С. Бесплатные обновления в течение полугода.

19700 руб.

Возможности типовых шаблонов ограничения доступа на уровне записей (RLS) 173

Статья Программист Нет файла v8 v8::Права Бесплатно (free) Практика программирования БСП (Библиотека стандартных подсистем) Роли и права

Краткий обзор применения типовых шаблонов ограничения доступа на уровне записей в конфигурациях, созданных на базе БСП: #ПоЗначениям, #ПоНаборамЗначений, #ПоЗначениямРасширенный, #ПоЗначениямИНаборамРасширенный

03.02.2019    19192    ids79    9