Опыт обновления базы 1С через механизм «Обновление через копию» на примере конфигурации 1С: Документооборот КОРП

06.04.26

Интеграция - Перенос данных 1C

Однажды к нам на проект сложного обновления пришла конфигурация «1С: Документооборот КОРП», которую требовалось обновить в технологическое окно 1 час. И мы обновили базу так, как это делают в подобных случаях с ERP — используя механизм «Обновление через копию».

Исходные данные: «1С: ДО КОРП» версии 2.1.10.2, которую нужно обновить до актуальной 2.1.33.6. Проект осложнялся дополнительными факторами:

  1. в организации работает свыше 5000 сотрудников;
  2. медленные сервера;
  3. объем базы в 260 ГБ (файлы хранились в томах отдельно);
  4. работа в базе ведется круглосуточно, максимально разрешенное технологическое окно — 1 час за выходные (в реальности все-таки 3 часа смогли выделить).

Установка обновления на рабочую базу обычным способом, как мы позже выяснили в ходе тестирования, заняла бы около 1,5 недель. Казалось бы, невозможно успеть обновить ИБ.

Мы предложили заказчику использовать механизм из ERP — «Обновление через копию».
 

Часть первая, короткая, теоретическая: как работает «Обновление через копию» в 1С:ERP — и как перенести механизм на «1С: Документооборот КОРП»

По нашей задумке требовалось разобраться, как работает этот механизм, и внедрить его в ДО.

Основные положения плана были такими:

  • Обновить конфигурацию с 2.1.10 на 2.1.36 «как обычно», протестировать работу объектов «как обычно» («дымовое», сценарное, пообъектное виды тестирования). «Как обычно» — это так, как мы делаем при стандартном подходе на наших проектах обновления.
  • Создать копию обновленной конфигурации 2.1.36 (назовем это обязательной промежуточной), куда нужно встроить ERP-подсистему «Обновление через копию» и все связанные с ней объекты, адаптировать их в двух конфигурациях: в «рабочей» и в «обновленной».
  • В состав плана обмена в обеих конфигурациях включить объекты, которые используются заказчиком (от заказчика получили такие списки).
  • Написать правила обмена между конфигурациями на КД 3.1.
  • Настроить обмен между «рабочей» и «обновленной» базой (разумеется, сначала на тестовой паре баз).
  • Протестировать всю цепочку: регистрацию данных в рабочей базе, отправку файла обмена, приемку файла обмена в обновленную базу, запуск обновления на монопольные и отложенные обработчики обновления, завершение обмена.

План обновления виделся таким:

  • Внедрить в «прод» заказчика нашу версию рабочей конфигурации, куда встроен план обмена «Обновление через копию».
  • Начать копить зарегистрированные данные в рабочей базе.
  • Создать копию рабочей базы данных, обновить ее на конфигурацию с планом обмена «Обновление через копию» на монопольные обработчики, начинаем обновлять на отложенные.
  • Настроить обмен между базами.
  • Ежедневно принимать файл обмена в обновленную базу и ждать, пока обновление новой порции данных не начнет укладываться в технологическое окно.
  • Завершить обмен в рабочей базе, заблокировать доступ к «боевой» базе для всех пользователей, принять последний файл обмена в обновленной базе.
  • Последний раз провести обновление на монопольные и отложенные обработчики.
  • Загрузить в базу обновленную конфигурацию без плана обмена «Обновление через копию».
  • И, наконец, перевести всех пользователей на работу в обновленной базе.

Средства, которые мы использовали для разработки этого проекта:

Часть вторая, длинная, практическая: что пошло не по плану и как мы с этим справлялись

Честные признания об обновлении и подводных камнях, с которыми пришлось столкнуться.
 

1. Потеря данных при обновлении

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

Подробнее о выборе ключевых релизов для обновления можно узнать в наших материалах:


2. Оптимизация и распараллеливание обработчиков

По первым замерам обновление на отложенные обработчики шло немногим меньше двух недель. Всё из-за того, что в ДО 2.1 отсутствует многопоточное выполнение обработчиков обновления, а обработать надо несколько миллионов объектов данных.

Самой проблемной была процедура обновления ЗаполнитьФормуДокументовОтложенно() при обновлении на 2.1.21.11. Эта процедура заполняет реквизит ФормаДокумента у всех входящих / исходящих / внутренних документов. Документов было 4 миллиона, за раз выбиралось всего по 500 ссылок.

Мы распараллелили этот обработчик на 10 потоков и увеличили выборку до 10 тысяч ссылок за раз, срок работы этого обработчика сократился с недели до 12 часов.

Также проверили все другие обработчики обновления:

  • нашли еще один медленный обработчик ПерейтиНаВерсию_2_1_11_4() который обрабатывает 3 миллиона записей в регистре сведений ФайлыВРабочемКаталогеКомпьютера и распараллелили его таким же способом;
  • увеличили размер порций выборки в запросах везде, где это было возможно.


3. Изолированность подсистемы «Обновление через копию»

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

Для гарантии работоспособности других обменов мы внедрили со своими префиксами в ДО модули из ERP — ОбменДаннымиСервер и несколько с ним связанных модулей, обработки КонвертацияОбъектовИнформационныхБаз и ТранспортСообщенийОбменаFILE, подсистему НастройкиТранспортаОбмена. И заменили все вызовы из модуля ОбновленичеЧерезКопию на вызовы из ERP.

Таким образом все существующие обмены должны работать без изменений, а подсистема ОбновлениеЧерезКопию будет пользоваться только своими общими модулями, полученными из ERP.

Также важно было сделать это для обновленной конфигурации.
 

4. ОбменДанными. Загрузка

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

Если ОбменДанными. Загрузка Тогда
Возврат;
КонецЕсли;

И не зря. Таких объектов оказалось очень много.

Далее — о трудностях обмена.
 

5. Константы

Изначально было не до конца понятно, как определить, какие константы должны участвовать в обмене, а какие не должны. Отслеживать их изменение в период обновления и переносить вручную — нецелесообразно, разбираться в предназначении каждой из 100+ констант — долго, посмотреть, как сделано в ERP — неинформативно, ДО слишком сильно отличается.

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

  • относящихся к подсистеме БСП,
  • начинающихся на «Удалить»,
  • относящихся к плану обмена «Обновление через копию» и синхронизации

При этом состав отправляемых констант в составе плана обмена должен на 100% совпадать с составом в подписках, с составом ПКС в правилах обмена для НабораКонстант.

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

6. Передача типов БизнесПроцессСсылка и ТочкаМаршрутаБизнесПроцессСсылка

В ходе тестирования переноса бизнес-процессов в ДО выяснилось, что конвертация данных, как 2.1, так и 3.1, не умеет работать с типами БизнесПроцессСсылка и ТочкаМаршрутаБизнесПроцессСсылка.

Типовая ERP при попытке передать такой тип выдает ошибку (но, видимо, никому это никогда не мешало). Однако в ДО бизнес-процессы очень важны и передавать их корректно — обязательно.

Эту проблему мы решили следующим образом: доработали правила выгрузки и правила загрузки.

Пример передачи точек маршрута в бизнес-процессе.

Перед выгрузкой в параметр запоминаем Индекс точки маршрута.
 


После загрузки из параметра читаем Индекс, находим точку маршрута по нему.
 


Ниже пример передачи типа БизнесПроцессСсылка в ПКО ЗадачаИсполнителя.

На скриншоте выделены три ПКС.
 

 

В ПКС БизнесПроцесс указан тип «Утверждение», но это конвертация неправильно понимает тип БизнесПроцессСсылка, в строке указывается первый из всех типов. Это тоже может вызывать ошибку вида «Объект не найден» (об этом подробнее в конце этого пункта).

Два других ПКС — передача в параметр типа бизнес-процесса и точки маршрута. Перед выгрузкой типа БизнесПроцессСсылка
 



После загрузки типа БизнесПроцессСсылка
 


Чуть выше упоминалось об ошибке вида «Объект не найден» из-за чтения типа БизнесПроцессСсылка.

В некоторых регистрах сведений тип измерения может указываться так:
 


так:
 


или даже так:
 


В случаях, когда в типе источника и/или приемника указан только БизнесПроцессСсылка в КД 3.1 не нужно указывать тип источника и/или приемника (как на скриншоте), иначе в файле обмена запись сформируется с указанным типом (а это может быть любой другой бизнес-процесс), а при загрузке получим ошибку «Объект не найден». На скриншоте — неправильное формирование записи в файле обмена.

 


Можно вручную отредактировать правила, а можно удалить типы в КД 3.1. Пример:
 


Суть доработки в том, чтобы Тип всегда совпадал с типом приемника в файле выгрузки вот так:
 


В случае, когда в типе указан БизнесПроцессСсылка + конкретный БизнесПроцесс можно оставить тип конкретного бизнес-процесса в обработке КонвертацияОбъектовИнформационныхБаз тип приемника переопределится).

В случае, когда в типе указан БизнесПроцессСсылка + ссылка на другой ссылочный объект аналогично предыдущему случаю.
 

7. Бизнес-процесс «Комплексный»

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

Для этого записываем его в параметр:
 


И получаем после загрузки:
 


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

8. Другие бизнес-процессы

Были еще аналогичные проблемы с передачей бизнес-процессов «Обработка внутреннего \ входящего \ исходящего документа», но в ходе тестирования выяснилось, что у заказчика таких бизнес-процессов в базе нет, так что эти правила мы просто отключили 🤫
 

9. Передача типа ПланОбменаСсылка

К сожалению КД 3.1 не понимает, как работать с этим типом.
 


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

10. Неявные вызовы объектов подсистемы Обмен через копию

При тестировании мы обнаружили, что у нас не заполняется регистр сведений ОбновлениеЧерезКопиюДинамикаПроцесса, который должен хранить данные о количестве зарегистрированных к обновлению / количестве обновленных объектов.

Оказалось, что в ERP есть вызовы функций подсистемы «Обновление через копию» из других модулей, которые не входят в эту подсистему. Речь идет о модуле ERP ОбменДаннымиЛокализация. Такого модуля в ДО нет, так что все вызовы из него были перенесены в ОбменДаннымиПереопределяемый.
 

11. Файлы в томах на диске

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

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

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

12. Версионирование объектов

Еще одна особенность обменов подсистемы БСП — создание версий объектов при загрузке, что тоже замедляет выполнение обмена. В нашем случае объекты должны передаваться «1-в-1», и при записи нам не требуется создавать новую версию объекта, поэтому, как и в предыдущем случае, мы отказались от функционала БСП.
 

СтандартныеПодсистемыСервер. ПриПолученииДанныхОтГлавного()
 

13. Дескрипторы

Еще одной причиной замедления обмена стал регистр сведений Дескрипторы прав доступа. Это регистр сведений, который содержит права доступа пользователей на объекты ДО. Его особенность заключается в том, что регистр постоянно перезаписывается регламентным заданием пересчета прав.

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

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

14. Движения самописных документов

При передаче движений документов сделали всё, как указано в справке: установили признак ОбъектСДвижениями, убедились, что появилась табличная часть с движениями документа.
 


Может быть это «глюк» именно этой версии КД 3.1, но при выгрузке конвертации в правила свойство ОбъектСДвижениями = true выгружался отлично, но если загрузить эту же конвертацию обратно в КД 3.1, то галка в документе слетала.

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

Решение подсмотрели в статье «Обновление через копию» — как это использовать? Заполнили обработчик «Перед загрузкой» для каждого документа с движениями текстом:
 

РежимЗаписи = «Запись»;



В нашем случае (в отличие от случая в статье) документы не стали пытаться проводиться, так как мы заблаговременно приняли решение закомментировать код проведения документов в обработке КонвертацияОбъектовИнформационныхБаз.

Такое решение нам подошло (но лучше бы ОбъектСДвижениями заполнялся сам).
 

15. Обработка КонвертацияОбъектовИнформационныхБаз

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

Были внесены следующие изменения в алгоритмы приемки / записи объектов в обработке КонвертацияОбъектовИнформационныхБаз:

  1. Отказ от версионирования.
  2. Отказ от записи присоединенных файлов.
  3. Отказ от записи соответствий объектов в регистр СоответствияОбъектовИнформационныхБаз.
  4. Отключение механизма регистрации объектов в обновляемой базе при приемке, чтобы они заново не регистрировались к другим обменам.
  5. Отказ от записи объектов с включением логики записи (обработчики проверки заполнения в массив ОбъектыДляОтложеннойЗаписи).
  6. Отказ от проведения документов (так как переносим сразу с движениями).
     

16. Неинформативный типовой отчет о прогрессе

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

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

Результаты работ

Мы добились сокращения времени обновления базы «1С: Документооборот» с 1,5 недель — до 1 суток.

При этом обменами дошли до выгрузки, которая умещается в технологическое окно, всего за 15 часов:

  • С момента снятия копии с базы и до завершения обновления базы прошло 24 часа.
  • Всего за сутки было зарегистрировано 133000 объектов к выгрузке, размер файла выгрузки составил 700 МБ.
  • Финальная выгрузка состояла из 2600 объектов, заняла 15 минут на операции выгрузки\загрузки.

Также в момент обновления узнали, что у заказчика в настройках базы SQL была установлена полная (FULL) модель восстановления (RECOVERY MODEL), а не простая (SIMPLE), что тоже повлияло на скорость обновления.

Какой ещё багаж мы вязли из этого проекта:

  • Получили уникальный опыт обновления через копию базы, для которой этот механизм не предусмотрен.
  • Создали готовую изолированную подсистему «Обновление через копию» на основе ERP, которую можно встраивать в любую другую конфигурацию (с поправкой на версию БСП: чем старше версия БСП, тем труднее встроить). Вынесли все объекты в расширение для удобства.
  • Порадовались, что проект не предусматривал обновление базы на промежуточные конфигурации, это избавило нас от переноса обработчиков обновления в правила конвертации. Кроме бизнес-процессов все объекты и их свойства переносились «1-к-1».
  • Также порадовались, что в этом проекте нет расширений, что тоже упростило разработку правил конвертации.
  • Узнали, что конвертация не умеет работать с некоторыми типами, и бывает «глючит» на передаче движений 🙁
  • Еще раз поупражнялись в оптимизации обработчиков обновления.

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

Влезем в любое технологическое окно. =)
 

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Перенос данных 1C Программист 1С:Предприятие 8 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

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

58000 руб.

04.08.2015    185874    434    300    

443

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 1С:Комплексная автоматизация 1.х 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена | Можно выполнить переход с УПП на БП 3 или запускать выгрузку данных за выбранный период времени | Переносятся документы, начальные остатки и вся справочная информация | Есть фильтр по организации и множество других параметров выгрузки | Поддерживается несколько сценариев работы: как первичный полный перенос, так и перенос только новых документов | Перенос данных возможен в "1С: Бухгалтерия 3.0" версии ПРОФ, КОРП или базовую | Переход с "1С: УПП1.3" / "1С:КА 1.1" на "1С:БП3.0" с помощью правил конвертации будет максимально комфортным! | Можно бесплатно проверить перенос на вашем сервере!

50050 руб.

25.02.2015    187272    355    287    

414

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.267.x) и БП 3.0 (3.0.194.x). Правила подходят для версии ПРОФ и КОРП.

38000 руб.

15.12.2021    33292    247    64    

188

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

Правила в универсальном формате обмена для ERP 2.5, КА 2.5, УТ 11.5, БП 3.0, Розница, УНФ, для последних версий конфигураций. Ссылки на другие конфигурации в описании публикации. Правила совместимы со всеми другими версиями конфигураций новыми и старыми, поддерживающими обмен и синхронизацию в формате EnterpriseData. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

27633 24870 руб.

12.06.2017    159296    951    317    

479

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Программист 1С:Предприятие 8 1С:Комплексная автоматизация 1.х 1С:Управление производственным предприятием 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Платные (руб)

Правила переноса кадровых и расчетных данных и справочной информации из "1С:УПП1.3" или "1С:КА 1.1" в "1С:ЗУП 3.1 | Разработан в формате КД 2 (правила конвертации данных) | При выгрузке есть фильтр по организациям | Обновляется при выходе новых релизов 1С | Развитие алгоритмов | Расчетные документы переносятся в документ "Перенос данных" | Создаются документы "Начальная штатная расстановка" и "Начальная задолженность по зарплате", переносятся кадровые документы

58000 руб.

29.10.2018    62255    80    130    

78

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Управление производственным предприятием Россия Платные (руб)

Регулярный обмен, выгрузка, перенос из КА 1.1, УПП 1.3, УТ 10.3 для обмена с любыми конфигурациями, поддерживающими обмен в формате EnterpriseData (КД3) - БП 3.0, ERP, КА 2, УТ 11, Розница 3, УНФ 3 и другими. Правила для старых и доработанных конфигураций не требуют синхронного обновления и совместимы с новыми и будущими конфигурациями. Обмен по расписанию, через папку, FTP, почту.

16531 руб.

18.02.2016    201697    669    543    

561

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 1С:Управление торговлей 10 Россия Управленческий учет Платные (руб)

Перенос данных из 1С:Управление торговлей 10.3 в 1С:Управление торговлей 11.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УТ 10.3 (10.3.88.x) и УТ 11.5 (11.5.25.x).

38000 руб.

23.07.2020    67037    312    93    

251

Перенос данных 1C Программист Бухгалтер 1С:Предприятие 8 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет НДФЛ ФОМС, ЕФС Платные (руб)

Обработки для быстрого перехода с конфигураций «КАМИН:Расчет заработной платы 3.0», «КАМИН:Зарплата для бизнеса 4.0» и «КАМИН:Зарплата 5.0» на конфигурацию «Зарплата и управление персоналом» версии 3.1.

12200 руб.

25.09.2016    90850    412    257    

342
Для отправки сообщения требуется регистрация/авторизация