1с изменение и контроль расширение как работает
Перейти к содержимому

1с изменение и контроль расширение как работает

  • автор:

1с изменение и контроль расширение как работает

Использую в расширении для процедуры общего модуля #ИзменениеИКонтроль
Если в процедуру общего модуля добавляю #Вставка и #КонецВставки, то по точке останова процедура пропускается.
Если оставить только #Удаление и #КонецУдаления, тогда процедура выполняется
Синтаксический контроль ошибок не выдает

В чем может быть причина?

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

(3) Дважды сталкивался, когда Измерение и контроль не выдавало ошибки, но НЕ работало. пока принудительно не поставишь совместимость 8.3.15

Что такое расширения конфигурации 1С, и для чего они нужны?

После выхода 1С 8.3.6.1977 к функционалу типовых конфигурации был добавлен новый инструмент «Расширение».

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

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

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

Но создание расширения 1С не всегда исключает ситуации связанные с трудностями при обновлении. Это связано с тем, что после очередного обновления в типовой системе могут быть внесены разработчиком (компанией «1С») изменения в объекты, которые используются в расширениях (доработках конфигурации) и расширения могут утратить свою работоспособность и потребуется вносить в них доработки. А в редких случаях могут привести и к серьезным ошибкам или полностью утратить свою актуальность, либо работоспособность.

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

Работа с расширениями 1С

Осуществляя разработку расширений полезно знать о том, что:

  • 1 В конфигурации можно внедрять сразу несколько расширений одновременно;
  • 2 Не все объекты конфигурациии можно использовать в расширении.

Расширения могут включать в себя одно из перечисленных далее назначений в следующем порядке:

  • 1 «Исправление» — назначение применимо в том случае, когда требуется оперативное исправление ошибок в расширениях;
  • 2 «Адаптация» — данное назначение используется в случае, когда под условие клиента требуется применение прикладного решения. Например: при условиях, когда в одно реализованное расширение не получается вместить весь перечень доработок применяется «Адаптация». С помощью этого назначения вы сможете разделить все доработки в расширении по крупным блокам;
  • 3 «Дополнение» — применяется в случае, когда необходимо реализовать новую доработку в уже существующем расширении. Например: при включении данного назначения программист сможет создать, к примеру, новый набор отчётов, которые отсутствуют в прикладном решении, но необходимы клиенту.

Применение 1С расширения

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

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

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

После обновления система произведёт объединение конфигурации и расширения.

Сценарий работы расширения 1С

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

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

Какие объекты в 1С расширениях не поддерживаются при создании?

При расширении типовой конфигурации не поддерживаются следующие собственные объекты:

  • Функциональные опции и их параметры;
  • Бизнес-процессы и задачи;
  • Внешние источники данных;
  • Регламентные задания;
  • Подписки на события;
  • Хранилище настроек;
  • Журнал документов;
  • Определяемые типы;
  • Общие реквизиты;
  • Параметры сеанса;
  • Критерии отбора;
  • Константы;
  • Языки.
  • В расширении нельзя создать подчинённую подсистему. В случае, если объект не является собственным, его расширение невозможно;
  • При использовании базовой версии прикладного решения инструмент по расширению конфигурации недоступен.

Как устроено 1С расширение конфигурации

Устройство расширения схоже с обычной конфигурацией и демонстрируется в форме дерева объектов.

Главная особеность расширений — это наличие функции заимствования любых объектов у типовых конфигураций.

Необходимо перейти в раздел «Конфигурация» → «Номенклатура» → «Добавить в расширения».

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

В процессе подключения расширения система каждый раз проводит проверку на корректное заимствование объектов.

Как осуществляется подключение расширения 1С

Нужно перейти в раздел «Все функции» → «Стандартные» → «Управление расширениями конфигурации» или же воспользоваться интерфейсом, предоставленным самой компанией 1С: Предприятие.

Также создать новое расширение можно в конфигураторе. После отладки и проверки вы сможете сохранить его в файл.

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

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

Как проверить возможность подключения расширения к различным конфигурациям

Осуществить проверку подключения расширения к различным конфигурациям можно при помощи:

  • 1 Встроенной опции «Управление расширениями конфигурации»;
  • 2 Запуска конфигуратора в пакетном режиме;
  • 3 Встроенного языка.

Назначение расширения 1С

Выбрать назначение можно из списка фиксированных значений, которые предусмотрены в системе.

Последовательность применения расширения с назначением:

  • 1 «Исправление»;
  • 2 «Адаптация»
  • 3 «Дополнение».

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

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

1С 8.3 Расширения — Программист 1С Минск. Автоматизация бизнеса.

ПРИМЕРЫ КОДА 1С

Расширения в 1С 8.3 — это микро конфигурации в формате xml (текст с тегами) которые позволяют дополнить существующую конфигурацию (вклиниться) в виде слоя. Расширения в 1С 8.3 являются одновременно и данными, и метаданными. В одной конфигурации может быть N-е количество и зависимости друг от друга заранее неизвестно. В основном имеет смысл использовать в типовых конфигурациях (на поддержке). Расширение является своеобразным «клином», который можно мигрировать из одной информационной базы в другую.

//* — Работа с механизмом расширения тестировалась на конфигурации 1С 8.3.19.
1. Создание:

Конфигуратор 1С — Меню — Конфигурация — Расширения конфигурации. При применении расширения контролируется порядковый номер версии при одинаковых ID (применяется последняя версия). Имя, синоним, префикс — называем как нам удобно.

Назначение:

  • Исправление — применяются на конфигурацию поставщика (вклинивание в логику поставщика bug fix, инъекция в код).
  • Адаптация — в логику кода не вмешиваемся. Адаптация без изменения логики и зависит от конфигурации поставщика.
  • Дополнение — полностью независимое решение. Автономное решение без связки с конфигурацией поставщика.

Признаки:

  • Активно — расширение используется. Если будет ошибка применения — признак автоматически отключится.
  • Безопасный режим — влияет на работу в клиент-серверной версии. Актуально только для профилей безопасности SQL (разрешения к доступу).
  • Защита от опасных действий — запрещает обращение к серверным модулям, открытие внешних отчетов, работа с интернетом. Аналогично параметрам пользователя
  • Используется в распределенной ИБ — миграция расширения по распределенным узлам
  • Область действия — использование БД целиком или с разделителями для различных технологий (например, для облаков)
  • Использовать основные роли для всех пользователей — Рекомендуется ее отключить т.к. значительно влияет на производительность. Для всех пользователей создастся дополнительная роль (с префиксом) расширения и будет применятся. Роли пользователя в основной конфигурации будут иметь приоритет.

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

  • Применилось ли расширение можно увидеть в Меню — Справка — О программе «Конфигурация»
  • Если расширений много и не конфликтуют друг с другом — они применяются последовательно по имени и/или версии.
  • Отключать расширение (Функции для технического специалиста — Стандартные — Управление расширениями конфигурации) в можно в режиме 1С Предприятие, но при закрытом! конфигураторе. Иначе при попытке отключить признак «Активно» получаем ошибку: Не удалось заблокировать запись. Действие (изменение, удаление или блокировка записи не выполнено). Ошибка блокировки объекта. Объект уже заблокирован: . После отключения расширения необходим перезапуск пользователя.

2. Принцип разработки:

  1. Рекомендуется дробить расширения. Создавать на каждый объект своё, так проще контролировать применение и фиксировать ошибки, т.к. при конфликте в режиме 1С Предприятие расширение автоматически отключается.
  2. Найти пересечения по объектам невозможно. Поэтому расширения должны быть автономны.
  3. Для новой печатной формы или нового отчета/обработки рекомендуется первично использовать БСП так как количество расширение негативно влияет на производительность
  4. При удалении расширения сопутствующие данные удаляются без возможности восстановления
  5. Работать с метаданными основного поставщика не рекомендуется

Система не поддерживает зависимость объектов в конфигурации поставщика. Применяет слои в порядке их очередности ( последовательно), по списку (если они друг с другом не конфликтуют). Первыми будут применятся Исправление , потом Адаптация , а самые последние Дополнение . Далее в списке происходит сортировка по Имени и Версии расширения:

Конфигурация поставщика

Инъекции в программный код (вклинивание):
1. Создаем расширение (Адаптация)
2. Заимствуем форму документа (родительского объекта)
3. Вклиниваемся в событие и переопределяем его — добавляем в расширение Alt+Shift+F2
4. Выбираем Тип вызова:

  • Вызывать перед
  • Вызывать после
  • Вызывать вместо
  • Вызывать вместо (с контролем)

! Порядок кода должен быть именно таким (иначе работать не будет) !
&ИзменениеИКонтроль(«ПересчетТаблицы»)
&НаКлиенте
Функция Расш1_ПересчетТаблицы ( Табл )
FAQ при разработке объектов и их форм в расширениях:

При изменении существующего или добавлении нового реквизита основной конфигурации через заимствование в расширение. Система создаст новую таблицу чтение которой будет производится через основную таблицу. Поэтому при переопределении свойств реквизита (например: увеличение длины цены с 10 до 12 символов) не рекомендуется использовать заимствование объекта, а создать автономный, новый (в расширении) и работать с ним для исключения конфликтов (как заимствованные объекты). В этом случаем система создаст новую независимую таблицу. Например, также можно реализовывать через Регистр сведений или подчиненный справочник с нужными реквизитами. К баг фиксам данная рекомендация не относится!

Для переноса данных из основной конфигурации в расширение нужно писать обработку (через внешний источник (*.xml, *.bdf и т.п.) или дежурный регистр).

При добавлении в расширение из осн.конфигурации реквизита составного типа система заимствует все объекты

Если объект контролируемый (установлен признак). Система не применит расширение если основной поставщик изменит значение объекта.

В режиме 1С получим ошибку: » Ошибка применения расширения конфигурации. Имя: *****

Критичная: Значение контролируемого свойства Тип у объекта ***** не совпадает со значением в расширяемой конфигурации «

Также можно установить у объекта свойство: Проверять значение при подключении расширения, не запрещать подключение расширения:

Просмотреть работает ли расширение в пользовательском режиме 1С: Меню — Сервис и настройки — О программе (Расширения конфигурации:).

Отключить расширения в пользовательском режиме 1С (с правами Администратора): Меню — Сервис и настройки — Функции для технического специалиста — Стандартные — Управление расширениями конфигурации — Снять галки с ненужного расширения (Делать это нужно при закрытом конфигураторе и для применения нужен перезапуск сеанса).

Использование аннотации &ИзменениеИКонтроль на примерах

Давайте разберем пример использования аннотации &ИзменениеИКонтроль (изменение и контроль). Для начала работы Вам потребуется создать расширение конфигурации. Для этого откройте список расширений и добавьте в него новое расширение. При этом обратите внимание на правильный выбор варианта назначения расширения конфигурации .

Возможность использования аннотации ИзменениеИКонтроль появилась начиная с версии платформы 8.3.15. В отличии от аннотаций &Перед, &После, &Вместо ​с помощью аннотации &ИзменениеИКонтроль ​Вы сможете делать точечные вставки в код типовой конфигурации. Основная проблема при изменении кода в больших процедурах и функциях с помощью расширений конфигурации — это постоянный контроль за постоянством этого кода. А в случае, если часть кода изменилась — необходимо сразу обновлять расширение. Использование аннотации &ИзменениеИКонтроль​ частично упрощает обновление расширений — теперь платформа будет контролировать неизменность кода в вынесенной в расширение процедуры.

Давайте разберем основные вставки, которые Вы можете выполнять в процедурах и функциях с аннотацией &ИзменениеИКонтроль:

  1. Для удаления кода типовой конфигурации Вы используете вставки #Удаление и #КонецУдаления . Таким образом, весь код, который будет обрамлен этими вставками будет игнорироваться при компиляции модуля.
  2. Для добавления своего кода Вы используете вставки #Вставка и #КонецВставки .

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

В контекстном меню выберите пункт «Добавить в расширение». Далее выберите «Вызывать вместо (с контролем):

В результате в модуль расширения будет добавлен текст процедуры с обрамлением в аннотацию &ИзменениеИКонтроль:

&ИзменениеИКонтроль("ПредупредитьОбОтсутствииСтрокЗаполняемыхПоFEFO") Процедура Доп_ПредупредитьОбОтсутствииСтрокЗаполняемыхПоFEFO() ТекстПредупреждения = НСтр("ru = 'В табличной части нет товаров, по которым серии можно заполнить по FEFO.'"); ПоказатьПредупреждение(Неопределено, ТекстПредупреждения); КонецПроцедуры 

Теперь давайте внесем изменения в этот код:

&ИзменениеИКонтроль("ПредупредитьОбОтсутствииСтрокЗаполняемыхПоFEFO") Процедура Доп_ПредупредитьОбОтсутствииСтрокЗаполняемыхПоFEFO() #Удаление ТекстПредупреждения = НСтр("ru = 'В табличной части нет товаров, по которым серии можно заполнить по FEFO.'"); #КонецУдаления #Вставка ТекстПредупреждения = НСтр("ru = 'Мой текст предупреждения.'"); #КонецВставки ПоказатьПредупреждение(Неопределено, ТекстПредупреждения); КонецПроцедуры 

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

Это значит Вы используете неверные операторы препроцессора. В своих пресс-релизах 1С объявило об одних наименованиях, а сделали по другому). Ну ничего — мы быстро адаптируемся!

Наши разработки:

Конструктор прайс-листов (прайс-заказов) для УТ11, КА2, ERP2, УНФ, Розница

Конструктор прайс-листов (прайс-заказов) для УТ11, КА2, ERP2, УНФ, Розница

Расширение позволяет формировать произвольные прайс-листы с выгрузкой в Excel и обратной загрузкой в 1С (после обработки прайс-листа клиентом). Конструктор также .

Помощник продаж с мультикорзиной (расширение для УТ11, КА2, ERP2)

Помощник продаж с мультикорзиной (расширение для УТ11, КА2, ERP2)

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

Расширенная форма списка номенклатуры для УТ11, КА2, ERP2

Расширенная форма списка номенклатуры для УТ11, КА2, ERP2

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

Расширенная форма РМК для УТ 11, КА 2, ERP 2

Расширенная форма РМК для УТ 11, КА 2, ERP 2

Расширение конфигурации дорабатывает рабочее место кассира (РМК) и добавляет в нее удобные инструменты для просмотра остатков по складам, остатков по .

Розница: Расширенная форма списка номенклатуры

Розница: Расширенная форма списка номенклатуры

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

Контроль минимальной цены и суммы в заказах и реализациях (УТ11, КА2, ERP2)

Контроль минимальной цены и суммы в заказах и реализациях (УТ11, КА2, ERP2)

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

Комментарии 17

Андрей
Евгений

Есть какое нибудь объяснение почему данная возможность применяется только в процедурах? Мне как раз необходимо доработать функцию, но механизм не работает, хотя на сайте ИТС пример демонстрируется как раз на функции

Администратор

Добрый день, Евгений. Спасибо что обратили на это внимание. Пересмотрели возможность использования аннотации ИзменениеИКонтроль в платформе 8.3.16 — ограничений на использование аннотации в функциях нет. Из справки:
«Для процедур можно указать один из четырех вариантов аннотаций, а для функций — только &Вместо или &ИзменениеИКонтроль».

Бахтияр
Спасибо. В расширении с назначением «Дополнение» будет работать?
Администратор

Добрый день! Привязки функционала к назначению расширения нет. Подробно про назначение можно прочитать тут https://tnsoft.ru/blog/naznachenie-rasshireniya-konfiguratsii-pravilnyj-vybor-varianta/

Николай

Добрый день. Добавил следующий код в расширение
#Вставка
Запрос.УстановитьПараметр(«ОтражатьФактурнуюСтоимость», Ложь);
#КонецВставки
При проверке применимости возникает ошибка:
Ошибка применения модуля «Расширение1 Документ.ГТДИмпорт.МодульМенеджера». Текст модуля для метода «ПодготовитьПараметрыПроведения» изменился
Я только позаимствовал эту функцию и добавил пару строк. Что еще я делаю не так?

Администратор

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

Владимир Одиноков
Ошибка в том, что препроцессоры должны быть без пробелов вначале, а у вас там видимо пробелы стоят
Радмила

Добрый день
Что произойдёт, если при &ИзменениеИКонтроль изменить имя одного из входных параметров процедуры?
Его будет изменять при обновлении и надо будет обратно каждый раз править?
Можно ли в строке Процедура … () обрамить #Вставкой этот параметр? Или же это будет некорректно с точки зрения использования команд предпроцессора?

Администратор

Добрый день!
Сомневаюсь что с помощью данной аннотации можно изменять имена параметров процедуры. Если у Вас есть другая информация — опишите в комментариях. Это будет полезно и другим программистам.

Юзаю пока старое доброе «&Вместо», с этим потому что возникают непонятные ошибки на ровном месте. Пока что разбираться нет времени, но при каждом обновлении релиза базы — расширения слетали в вот этих самых контролируемых процедурах
Хотя вроде как бы эти процедуры 1С — никами даже и не трогались. Приходилось заново переписывать код в расширение который в #Вставка и #Удаление, и теряется весь смысл этого механизма, с «Вместо» проблем никаких при этом

Максим

Поддерживаю. У меня тоже при каждом обновлении слетает этот функционал, хотя проверка применимости не ругается. Может есть какой то секрет, что бы все работало при обновлении?)

Приведенный пример не будет работать! Любой добавленный символ (в том числе пробелы и переводы строк) вне «тегов» приведет к тому, что расширение будет молча игнорироваться, а выполняться будет оригинальный код. Слово «Контроль» является большим преувеличением. Фактически о проблеме можно узнать только в конфигураторе, запустив проверку возможности применения. Иначе можно думать, что расширение работает (потому что ошибок нет), а оно не работает.

Добрый день!
Хочу предостеречь. На новой работе были проблемы с использованием расширения, где функции правили с аннотацией «ВМЕСТО». Сам понимаете, что последующие обновления текстовку функции(процедуры) могут изменить. В моём случает так и произошло. Но оценил масштаб и стал потихоньку изменять: вместо «ВМЕСТО» стал вставлять «ИзменениеИКонтроль». В течении 5 месяцев потихоньку почти всё вылизал и… в один прекрасный день ВСЁ ЭТО сломалось. Если бы за этот период в расширение не добавлялись новые объекты, то восстановить было бы просто. Сейчас восстановлению не подлежит именно расширение. При входе в форму просто вываливается из конфигуратора. Одно время можно было удалить форму, а вот добавить уже не получалось. Теперь не даёт и удалить.
Чуть позже нашёл в инете ссылки, где программеры столкнулись с подобным именно используя «ИзменениеИКонтроль». На данный момент перепробовал всё стандартное и не стандартное. Остаётся просить 1С с отсылкой CF.
Так что не рискуйте пока. У нас проблема остаётся на 18.11.2022

Ещё допишу с чем столкнулся на новой работе. Увидел, что формы в расширении старые, так что надо стандартно нажать кнопку «Обновить», но и тут засада. Форма-то обновляется, но вот стили нет и шрифты нет. И при проверке конфигурации расширения выводятся сообщения на: — неразрешимые ссылки на цвета
— неразрешимые ссылки на шрифты
— неразрешимые ссылки на картинки
— неразрешимые ссылки на объекты метаданных Хотя ведь формы-то обновились на вид корректно

Администратор
Юрий, добрый день!
Спасибо что делитесь опытом! Он будет полезен другим программистам.
Андрей

Сегодня добрался до этой статьи. А добрался поскольку тоже налетел на ошибку:
Ошибка применения модуля «Расширение1 Документ………». Текст модуля для метода «ПодготовитьПараметрыПроведения» изменился. Угрохал немало времени на поиск причины. Она оказалась тривиальной: в одном из комментариев (который был заимствован из оригинального кода) я просто добавил пару восклицательных знаков!
Таким образом даже комментарии, которые за пределами тегов #Вставка и #КонецВставки нельзя добавить/убавить ни одного символа (даже пробел).
К стати только в этой статье я наконец в явном виде увидел, что между документацией и реальностью есть расхождение — я про «#Вставка и #КонецВставки» и «#Вставить и #КонецВставить».

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

  • Остатки и цены в списках номенклатуры
  • Если Ваш прайс-лист неотличим от остальных — не ожидайте что он принесёт Вам продажи!
  • Рубрики
    • 1С: Предприятие
    • Администрирование
    • Конфигурации
      • ERP Управление предприятием 2
      • Бухгалтерия 3.0
      • Комплексная автоматизация 2
      • Управление нашей фирмой
      • Управление торговлей 11
    • Конфигурирование
    • Программирование в 1С
    • Разное
  • Свежие записи
    • Поддержание сезонных товарных запасов в УТ11, КА2, ERP2
    • Перенос типовых настроек Мин-Макс в Помощник закупок
    • Ноябрьские распродажи на TNSoft.ru (2023)
    • Управление запасами — настройка профилей оповещений
    • Универсальная выгрузка товаров на портал zzap.ru (УТ11, КА2, ERP2, УНФ, Розница)
  • Архивы
    • Ноябрь 2023
    • Октябрь 2023
    • Сентябрь 2023
    • Май 2023
    • Апрель 2023
    • Март 2023
    • Февраль 2023
    • Январь 2023
    • Ноябрь 2022
    • Октябрь 2022
    • Июль 2022
    • Июнь 2022
    • Апрель 2022
    • Январь 2022
    • Декабрь 2021
    • Октябрь 2021
    • Сентябрь 2021
    • Август 2021
    • Июль 2021
    • Апрель 2021
    • Февраль 2021
    • Январь 2021
    • Декабрь 2020
    • Ноябрь 2020
    • Август 2020
    • Июль 2020
    • Июнь 2020
    • Февраль 2020
    • Январь 2020
    • Декабрь 2019
    • Ноябрь 2019
    • Октябрь 2019
    • Сентябрь 2019
    • Июль 2019
    • Апрель 2019
    • Март 2019
    • Февраль 2019
    • Декабрь 2018
    • Ноябрь 2018
    • Октябрь 2018

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

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