1с как работают критерии отбора
Перейти к содержимому

1с как работают критерии отбора

  • автор:

Критерии отбора на простом примере

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

Изображение

Решим простую задачу. В тестовой конфигурации у нас есть три документа: «Заказ», «Приходный ордер» и «Расходный ордер». Приходный ордер создается на основании заявки, расходный на основании приходного ордера.

В каждом документе есть табличная часть «Список номенклатуры» с реквизитами «Номенклатура» и «Количество». Под номенклатурой понимается ссылка на элемент справочника «Товары». Количество — чиловое значение.

Задача состоит в реализации механизма, позволяющего просматривать из формы документа введенные на его основании другие документы. А в элементе справочника «Товары» смотреть все документы, в которых товар использовался.

Изображение

И так, приступим к выполнению задачи.

Настроим критерий отбора и формы документов

Создадим критерий отбора в конфигураторе. Перым делом установим доступные типы значения отбора. Для этого перейдем на закладку «Данные» и включим в состав доступных типов следующие (см. след. скриншот).

Изображение

В соответствии с установленными типами будет определен состав реквизитов у объектов конфигурации, по которым будет настраиваться связь между ними. Для настройки связей перейдем на вкладку «Состав» и установим следующие настройки:

Изображение

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

Изображение

После всех вышеописанных действий посмотрим результаты в режиме 1С:Предприятия.

В режиме 1С:Предприятия

В информационной базе уже есть некоторые данные. Откроем документ «Заявка» и перейдем в список «Связанные документы».

Изображение

Проделаем те же действия для элемента справочника «Товары». Результат будет следующим:

Изображение

Таким образом, из элементов информационной базы (документов, справочников и т.д.) мы можем получать связанные с ними объекты.

Делайте выводы

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

Изображение

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

Отбор и сортировка данных в "1С:Предприятии 8.1"

С какими списками сталкиваются пользователи? Это могут быть списки документов в соответствующих журналах. Практически любой справочник, заполненный данными, представляется в виде списка, в котором, как правило, есть иерархия (группы-папки или подчиненные элементы). Нередко для выбора какого-либо элемента программа формирует списки автоматически или подчиняясь заложенной разработчиками логике.

Практически во всех списках можно использовать механизмы отбора (если это явно не запрещено разработчиком) и разнообразной сортировки (рис. 1). В программе эти механизмы неразрывно связаны друг с другом. Рассмотрим, как их использовать правильно и эффективно.

Списки

С какими списками сталкиваются пользователи? Это могут быть списки документов в соответствующих журналах. Практически любой справочник, заполненный данными, представляется в виде списка, в котором, как правило, есть иерархия (группы-папки или подчиненные элементы). Нередко для выбора какого-либо элемента программа формирует списки автоматически или подчиняясь заложенной разработчиками логике.

Практически во всех списках можно использовать механизмы отбора (если это явно не запрещено разработчиком) и разнообразной сортировки (рис. 1). В программе эти механизмы неразрывно связаны друг с другом. Рассмотрим, как их использовать правильно и эффективно.

Механизм сортировки

Для чего нужен механизм сортировки? Во-первых, он, как следует из названия, позволяет отсортировать список по нужному критерию.

Во-вторых, в платформе «1С:Предприятие 8.1» активно используется механизм быстрого поиска. Этот механизм позволяет быстро найти в каком-либо списке нужный элемент, набрав первые символы (рис. 2). Но в динамических списках (например, список элементов справочника или список документов) быстрый поиск работает только по реквизитам, по которым доступна сортировка.

Посмотреть все доступные для сортировки реквизиты списка можно, открыв окно «Отбор и сортировка». Это окно, как правило, доступно на панели действий (рис. 3) либо в контекстном меню списка, открывающемся правой кнопкой мыши (рис. 4). В окне «Отбор и сортировка» нужно перейти на закладку «Сортировка», где показаны все доступные реквизиты, по которым возможна сортировка.

На рисунке 3 видно, что для списка документов «Реализации товаров и услуг» доступна сортировка по двум реквизитам: «Дата» и «Номер». Однако информативность окна сортировок этим не ограничивается. Здесь можно посмотреть, какая сортировка включена в данный момент (левая часть окна) и список всех доступных для сортировки реквизитов (правая часть). Тут же можно настроить нужную сортировку и ее порядок. Обратите внимание: текущий реквизит сортировки будет помечен в списке специальным символом — стрелочкой, обозначающей направление сортировки. Три примера различной сортировки (в т. ч. комбинированной) и способы ее отображения в списке показаны на рисунке 5.

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

В каждом списке можно индивидуально сохранить нужную сортировку. Достаточно включить галочку «Использовать эту настройку сортировки при открытии» и нажать «ОК». Система запомнит настройку и при следующем открытии этого списка установит сохраненную сортировку.

Быстро отсортировать список по нужному реквизиту можно, щелкнув мышкой по шапке с названием этого реквизита.

Например, в нашем случае, можно щелкнуть по реквизиту «Дата» (включится сортировка дат по возрастанию, и можно будет использовать быстрый поиск по дате) или по реквизиту «Номер» (будет переключена сортировка по номерам по возрастанию, после чего можно быстро искать по номеру). Инвертировать сортировку тоже просто — достаточно повторно щелкнуть по тому же реквизиту в шапке списка.

Механизм отбора

Отбор — мощный механизм платформы «1С:Предприятие 8.1», который позволяет эффективно работать со списками, даже если в них содержится не один десяток или сотня тысяч элементов. Для начала рассмотрим работу механизма отбора в общем случае.

Практически везде, где есть список (как правило, в виде таблицы), можно использовать механизм отбора, который активируется либо соответствующей кнопкой на панели действий, либо в контекстно-зависимом меню списка (рис. 3 и 4). Если отбор у нужного списка возможен, откроется окно «Отбор и сортировка». В нем будут отображены все возможные виды доступных для отбора реквизитов. Список доступных элементов отбора зависит от того, где этот отбор будет использован. В общем случае нужно найти один или несколько необходимых элементов для отбора, указать значения и активировать настроенную комбинацию критериев.

Список возможных условий для того или иного вида отбора зависит от типа элементов, используемых в нем. Например, для чисел и дат будет доступно указание диапазонов, для строк — поиск подстроки (условия «Содержит»/»Не содержит»), а для элементов справочников — заполнение списков и анализ иерархии.

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

Механизмы отбора и сортировки на примерах

Попробуем решить несколько задач в демонстрационной базе («Бухгалтерия предприятия», редакция 1.6). Например, отобразим документы, сформированные для контрагента «Саймон и Шустер ООО» в журнале «Документы покупателей». Сразу оговоримся, что описывать будем стандартные для платформы «1С:Предприятие 8.1» правила и логику ведения отбора, без привязки к какой-либо конкретной конфигурации и дополнительным сервисным возможностям, в ней реализованным.

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

Нам нужно быстро посмотреть все документы контрагента «Саймон и Шустер ООО». Реализуется задача следующим образом — открывается окно отбора, в элементе «Контрагент» выбирается контрагент «Саймон и Шустер ООО» из справочника (рис. 6) и нажимается «ОК». Задача решена (рис. 7).

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

Примечание:
* Подробнее о «горячих» клавишах читайте в статье «Горячие» клавиши упростят работу в «1С:Предприятии 8».

Обратите внимание еще и на то, что при указании значений в элементах отбора (в нашем примере — контрагент «Саймон и Шустер ООО»), в большинстве случаев будет работать механизм быстрого подбора, широко распространенный в платформе «1С:Предприятие 8.1». В нашем примере достаточно было набрать первые символы названия контрагента или его код прямо в поле значения отбора, нажать Enter или Tab и система автоматически бы «угадала» нужный нам элемент справочника.

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

Теперь отобразим список номенклатуры, в наименованиях которых содержится слово «Чайник». Для этого открываем справочник «Номенклатура», вызываем окно отбора, в элементе «Наименование» выбираем условие сравнения «Содержит» и указываем требуемое слово (рис. 8).

Вид сравнения «Содержит» выбран не случайно. Именно он позволяет найти нужное слово (или его часть) в любом месте наименования номенклатуры. Если оставить вид сравнения «Равно», в списке будут отображены только такие элементы номенклатуры, которые называются точно так, как написан запрос. А таких в нашей демобазе нет (то есть не было бы отображено ни одного элемента).

Так как в нашей демобазе у номенклатуры есть реквизит «Полное наименование», оно присутствует в списке доступных отборов отдельной позицией. Но при этом в качестве условий сравнения доступно только «Содержит»/»Не содержит». Причина в том, что реквизит «Полное наименование» в нашей демобазе — строка неограниченной длины.

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

Для удобства работы с элементами справочника при использовании отборов лучше на время отключать отображение иерархии (рис. 10).

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

Открываем журнал «Документы покупателей» и указываем в элементе отбора «Вид документа» документ «Реализация товаров и услуг». Программа сама предоставляет возможность выбора определенного вида документа из тех, которые включены в данный журнал. Для этого есть и персональная кнопочка на панели действий (рис. 11).

Аналогично отбору по виду документов платформа автоматически предложит элемент отбора «Структура подчиненности», если в конфигурации настроены взаимосвязи между документами.

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

У задачи существует несколько способов реализации. Рассмотрим наиболее эффективный. Открываем журнал «Документы покупателей», указываем в элементе отбора «Вид документа» документ «Счет-фактура выданный». После этого в элементе отбора «Контрагент» указываем вид сравнения «В группе». Выбираем тип значения «Контрагенты» и открываем форму выбора контрагентов. В ней выбираем группу «Покупатели» (рис. 12).

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

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

Человеческим языком задача формулируется так: «отобразить все нужные документы по всем контрагентам, находящимся в группах справочника Покупатели, Поставщики, Поставщики на реализацию». Реализуется это просто — в условии отбора «Контрагент» выбираем «В группе из списка» (рис. 13). После этого становится доступным механизм заполнения списка, в который можно добавить нужные группы (или элементы) справочника. Причем список можно заполнить вручную. По аналогии с решением предыдущей задачи, найти нужную группу и выбрать ее, повторив это для каждого нового элемента списка. Однако целесообразнее воспользоваться удобным механизмом подбора, который автоматически реализуется программой. С помощью подбора намного проще и быстрее заполнить список нужными составляющими. После того, как список заполнен, нажимаем «ОК» и активируем настроенные критерии отбора. Задача решена.

Отличие условия отбора «В группе из списка» от условия «В списке» заключается в том, что в первом случае условие выполнится для всех элементов справочника, которые либо явно указаны в списке, либо находятся внутри указанных в списке групп. Второй же случай просто указывает программе сверяться со списком при отборе. То есть если вы укажете там группу, то в отбор попадет сама группа (как самостоятельный элемент справочника), а элементы, которые в нее входят, критерию отбора удовлетворять не будут. Решать задачу можно было и «в лоб» — выбрать условие «В списке» и при помощи подбора добавить туда все элементы, содержащиеся в необходимых группах.

Условия отбора «Не в списке» и «Не в группе из списка» позволяют указать нужные наборы данных, которые в отбор попадать не должны. То есть решать задачу можно было бы и от обратного — указать «Не в группе из списка» и добавить туда все группы справочника, кроме трех необходимых (Покупатели, Поставщики, Поставщики на реализацию).

И, наконец, отобразим в документе «Реализация товаров и услуг» с номером ТДН00002 в табличной части только номенклатуру, содержащую в наименованиях слово «СТИНОЛ». Эта задача, позволит увидеть универсальность самого механизма отбора, а также насколько разнообразно может быть его использование. Задача основана на реальных ситуациях, когда, например, в табличной части накладной несколько сотен (а то и тысяч) строк и надо быстро проанализировать ее состав. В нашей демобазе есть документ «Реализация товаров и услуг» с номером ТДН00002, у которого в табличной части есть несколько строк. Несмотря на то что в документе кнопок использования отборов не наблюдается, вызов отбора доступен через контекстное меню (правая кнопка мыши).

Далее накладываем критерии отбора в разрезе Номенклатуры. Тут же возникает другой вопрос — как отобрать «СТИНОЛ», если условия выбора номенклатуры довольно сильно ограничены (доступно «Равно», «Не равно», «В списке» и «Не в списке»). Решить задачу можно и при таких условиях. Выбираем условие «В списке», открываем уже знакомое окно заполнения списка, используем подбор номенклатуры (рис. 14, 1). В списке номенклатуры может быть большое количество элементов, поэтому не будем искать глазами нужные позиции. Воспользуемся отбором в списке номенклатуры, указав условие отбора «Содержит» для наименования номенклатуры (рис. 14, 2).

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

Полезные функции механизма отбора

Рассмотрим еще несколько моментов, связанных так или иначе с отборами в системе «1С:Предприятие 8.1».

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

Быстро установить отбор по значению в текущей ячейке списка можно, нажав на кнопку «Отбор по значению в текущей колонке» (рис. 16). При нажатии на эту кнопку будет установлен отбор по текущему значению в колонке. Эта функция работает только для тех колонок, по реквизитам которых можно устанавливать отборы. Если в списке уже используется какой-либо отбор, новый будет присоединен к нему. Причем кнопка становится активной для данной колонки. Отменить такой отбор можно аналогично — «отжав» кнопку в соответствующей колонке.

Еще одно полезное свойство механизма отборов — ведение истории отборов (рис. 17). Программа запоминает, какие отборы были установлены, поэтому можно быстро вернуться к какому-либо из них, просто выбрав его из выпадающего списка. К слову, в окне «Отбор и сортировка» обратите внимание на кнопку «Отборы» (рис. 6). Нажав на эту кнопку, вы попадете в интерфейс, в котором можно сохранять и восстанавливать настройки отборов, чтобы в последствие можно было к ним вернуться (рис. 18).

И последняя функция — это отмена всех отборов (рис. 19). Нажатием кнопки «Отключить отбор» отключаются все отборы, установленные в списке. Аналогичного действия можно добиться, открыв окно «Отбор и сортировка» и сняв галочки напротив всех активных элементов.

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

Объект 1С «Критерий отбора»

критерий отбора 1с

Объект «Критерии отбора» предназначен для отбора различной информации, хранящейся в информационной базе, по некоторым критериям (для описания некоторого правила выборки информации из объектных данных различных типов).

В прикладном решении может быть создано любое необходимое количество критериев отбора.

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

Фактически, критерий отбора описывает некоторую область поиска.

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

Критерий отбора позволяет:

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

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

Например, с помощью объекта «Критерии отбора» можно выбрать все документы, относящиеся к заданному контрагенту, то есть имеющие в своих реквизитах (или реквизитах табличной части) ссылку на конкретный элемент справочника Контрагенты .

Если мы будем искать по контрагенту документы » ПриходнаяНакладная «, » РасходнаяНакладная » и » Взаимозачет «, то нужно выбрать реквизиты:

Данный критерий отбора позволит найти все документы указанных трех типов, содержащие ссылку на искомого контрагента в указанных реквизитах.

  • реквизиты из табличных частей;
  • несколько реквизитов в одном объекте.

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

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

ВАЖНО! Таким образом, при описании критерия отбора нужно учитывать, что система будет тратить дополнительные ресурсы на поддержание необходимых индексов.

Способы использования критерия отбора:

  1. с помощью метода Найти() менеджера критерия отбора;
  2. обращение к виртуальной таблице критерия отбора в запросе ( КритерийОтбора.<имя> );
  3. через создание формы критерия отбора или вставку в любую форму табличного поля, связанного с объектом КритерийОтбораСписок.<имя> (для отображения выборки в табличном поле);
  4. в отборе списка документов.

Во всех случаях выборка выполняется системой одним и тем же способом:

  • формируется запрос к СУБД (объединение запросов по каждой таблице, в которой нужно осуществить поиск) для поиска объектов, которые включают искомое значение;
  • формируется выборка, состоящая из найденных ссылок на объекты.

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

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

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

Критерии отбора

Критерии отбора – одна из составляющих механизма отбора информации. С их помощью специалист, осуществляющий конфигурирование системы, создает предопределенные правила отбора. В режиме 1С:Предприятие по этим правилам будет выполняться отбор информации в списках.
В окне редактирования объекта Критерий отбора нужно указать имя, синоним и комментарий.
Тип критерия отбора может быть любым из стандартных типов или определенных как объекты дерева конфигурации. Допускается включение реквизитов с составным типом, заданным как СправочникСсылка , Д окументСсылка и т. д., а также реквизитов с составным типом, определенным планом видов характеристик (Характеристика…).
При создании типа критерия отбора следует указать те типы, по которым требуется производить отбор. На закладке Состав по этому типу будет сформирован состав объектов конфигурации, содержащих данные, тип которых входит в тип критерия отбора. В списке требуется установить отметку для тех реквизитов, по которым будет производиться данный отбор.
Чтобы критерий отбора выполнял свои функции, в конфигураторе для него должен быть создан список (закладка Состав), состоящий из реквизитов справочников и документов. На состав списка не накладывается практически никаких ограничений: например, в отличие от графы журнала, для критерия отбора можно выбрать несколько реквизитов одного документа и реквизитов табличной части документа.
Критериев отбора может быть произвольное число, а каждый критерий может иметь несколько форм представления результатов отбора. Этот механизм полезен в случае поиска различной информации. Например, требуется отобрать все документы, в которых используется (в реквизитах и табличных частях) определенный контрагент. При этом можно учитывать и другие условия отбора информации (например, поиск ведется только среди проведенных документов или в определенном интервале дат и т. д.).
ПРИМЕЧАНИЕ. При открытии формы отбора следует передавать в нее параметр Отбор с установленным значением отбора (элемент Значение).
Критерий отбора может иметь произвольное число форм для визуального представления результатов отбора. Для оперативности получения информации по отбору вызов формы можно разместить в пользовательском меню или на панели инструментов.
Если форм критерия отбора несколько, то в свойстве Основная форма указывается та форма, которая будет вызываться по умолчанию.
Если в конфигурации определено несколько подсистем, нужно выбрать ту, к которой относится данный критерий отбора. Можно указать несколько различных подсистем.
Для вызова формы критерия отбора система размещает соответствующую команду в панели навигации формы.

Поделиться ссылкой:

Понравилось это:

Похожее

Добавить комментарий Отменить ответ

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Статьи по тематике

  • Механизм разделения данных
  • Развитие детализации себестоимости товаров
  • Развитие инструментов учета и управления затратами предприятия
  • Распределение партий при предварительном расчете себестоимости
  • Учет дополнительных расходов, распределяемых на себестоимость

Онлайн тесты по Истории России

За 15 мин. опытный питерский историк -доцент проверит знания Ваших детей по Истории России (IХ-ХХI в.в.). Консультирование.
Обращаться по Whatsapp с 12-20 ч, тел.+7 921 974 28 21. Марина Анатольевна. Оплата по договоренности

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *