что такое план обмена в 1с

Планы обмена 1С 8.3

Планы обмена в 1С 8.3 — объект метаданных конфигурации, служащий для реализации синхронизации данных в системе 1С 8.

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

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

что такое план обмена в 1с. Смотреть фото что такое план обмена в 1с. Смотреть картинку что такое план обмена в 1с. Картинка про что такое план обмена в 1с. Фото что такое план обмена в 1с

Настройки и свойства планов обмена в 1С

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

Как работать с планом обмена

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

что такое план обмена в 1с. Смотреть фото что такое план обмена в 1с. Смотреть картинку что такое план обмена в 1с. Картинка про что такое план обмена в 1с. Фото что такое план обмена в 1с

Распределенная информационная база

Если этот флаг установлен в настройках, то данный план обмена является распределенной информационной базой (РИБ).

Распределенная информационная база — территориально распределенная система на основе одинаковой конфигурации 1С 8.3. РИБ помимо изменений данных умеет передавать и изменений конфигурации, что очень удобно, например, при обновлении релиза конфигурации.

Состав плана обмена

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

что такое план обмена в 1с. Смотреть фото что такое план обмена в 1с. Смотреть картинку что такое план обмена в 1с. Картинка про что такое план обмена в 1с. Фото что такое план обмена в 1с

В составе плана обмена может быть 3 состояния объекта:

Планы обмена и производительность 1С

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

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

Другие статьи по 1С:

Видеолекции по технологии обмена в 1С 8.2:

Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

Источник

1С 8.x : Планы обмена и их использование

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

Подобно тому, как элементами данных справочника являются элементы справочника, элементами данных плана обмена являются узлы плана обмена. Каждый узел идентифицирует участника обмена по данному плану обмена. Кроме этого в каждом плане обмена всегда существует один предопределенный узел, идентифицирующий данную информационную базу.
В состав данных, которыми может производиться обмен, входят элементы информационных структур базы данных, которые описываются следующими объектами встроенного языка:
Константа.МенеджерЗначения. ;
СправочникОбъект. ;
ДокументОбъект. ;
ПоследовательностьНаборЗаписей. ;
ПланВидовХарактеристикОбъект. ;
ПланСчетовОбъект. ;
ПланВидовРасчетаОбъект. ;
РегистрСведенийНаборЗаписей. ;
РегистрНакопленияНаборЗаписей. ;
РегистрБухгалтерииНаборЗаписей. ;
РегистрРасчетаНаборЗаписей. ;
ПерерасчетНаборЗаписей. ;
БизнесПроцессОбъект. ;
ЗадачаОбъект. ;
УдалениеОбъекта.

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

Состав данных обмена должен выглядеть следующим образом:
что такое план обмена в 1с. Смотреть фото что такое план обмена в 1с. Смотреть картинку что такое план обмена в 1с. Картинка про что такое план обмена в 1с. Фото что такое план обмена в 1с
Теперь с помощью конструктора создадим основную форму узла, чтобы описать в ней некоторые действия, которые должны выполняться при создании нового узла обмена.
Суть этих действий будет заключаться в том, что при создании нового узла обмена мы должны будем сформировать для него все необходимые записи регистрации изменений для всех объектов конфигурации, входящих в данный план обмена. Это будет своего рода начальная синхронизация узла обмена всеми данными обмена.
Прежде всего, опишем в модуле формы узла служебную переменную, которая будет хранить признак того, является ли записываемый узел новым или нет.
Перем РегистрацияВНовыйУзел;
Затем создадим обработчик события формы ПередЗаписью.
Код 1C v 8.х
Этот обработчик и будет устанавливать значение нашей служебной переменной в Истина в случае записи нового узла плана обмена.
После этого создадим обработчик события формы ПриЗаписи.
Код 1C v 8.х

Откроем конфигуратор и создадим новый объект конфигурации Обработка с именем ОбменДанными. Перейдем на закладку Прочее и откроем модуль объекта.
Создадим в нем процедуру ОбменСФилиалами.
Код 1C v 8.х
Теперь создадим основную форму обработки и в обработчик события нажатия кнопки Выполнить – КнопкаВыполнитьНажатие вставим вызов процедуры ОбменСФилиалами().
Код 1C v 8.х

Сами процедуры записи и чтения данных обмена мы разместим в модуле объекта План обмена Филиалы. Сначала создадим процедуру, которая используется нами при обмене данными, – ЗаписатьСообщениеСИзменениями.
Код 1C v 8.х
На этом создание процедуры записи данных обмена закончено.

Источник

План обмена

Общие сведения об обмене данными

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

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

Что такое план обмена

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

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

В обмене данными могут участвовать:

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

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

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

Добавление плана обмена

что такое план обмена в 1с. Смотреть фото что такое план обмена в 1с. Смотреть картинку что такое план обмена в 1с. Картинка про что такое план обмена в 1с. Фото что такое план обмена в 1с

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

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

что такое план обмена в 1с. Смотреть фото что такое план обмена в 1с. Смотреть картинку что такое план обмена в 1с. Картинка про что такое план обмена в 1с. Фото что такое план обмена в 1с

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

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

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

Процедуры обмена данными

Процедуры записи и чтения данных

Источник

Объект 1С «Планы обмена». Распределенная информационная база (РИБ)

Объект 1С «Планы обмена» используется для реализации механизмов обмена данными, для чего:

Т.о. можно сказать что объект «Планы обмена» служит для реализации синхронизации данных в системе.

что такое план обмена в 1с. Смотреть фото что такое план обмена в 1с. Смотреть картинку что такое план обмена в 1с. Картинка про что такое план обмена в 1с. Фото что такое план обмена в 1с

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

Особенности плана обмена 1С:

что такое план обмена в 1с. Смотреть фото что такое план обмена в 1с. Смотреть картинку что такое план обмена в 1с. Картинка про что такое план обмена в 1с. Фото что такое план обмена в 1с

что такое план обмена в 1с. Смотреть фото что такое план обмена в 1с. Смотреть картинку что такое план обмена в 1с. Картинка про что такое план обмена в 1с. Фото что такое план обмена в 1с

Влияние реализации плана обмена на производительность 1С

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

Состав плана обмена

что такое план обмена в 1с. Смотреть фото что такое план обмена в 1с. Смотреть картинку что такое план обмена в 1с. Картинка про что такое план обмена в 1с. Фото что такое план обмена в 1с

В составе плана обмена может быть 3 состояния объекта:

что такое план обмена в 1с. Смотреть фото что такое план обмена в 1с. Смотреть картинку что такое план обмена в 1с. Картинка про что такое план обмена в 1с. Фото что такое план обмена в 1с

Механизмы, реализуемые планом обмена:

Распределенная информационная база (РИБ)

Распределенная информационная база (РИБ) — территориально распределенная система информационных баз на основе одинаковой конфигурации 1С; это иерархическая древовидная структура, состоящая из отдельных информационных баз 1С:Предприятия – узлов распределенной информационной базы, между которыми организован обмен данными с целью синхронизации конфигурации и данных.

что такое план обмена в 1с. Смотреть фото что такое план обмена в 1с. Смотреть картинку что такое план обмена в 1с. Картинка про что такое план обмена в 1с. Фото что такое план обмена в 1с

РИБ позволяет переносить:

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

что такое план обмена в 1с. Смотреть фото что такое план обмена в 1с. Смотреть картинку что такое план обмена в 1с. Картинка про что такое план обмена в 1с. Фото что такое план обмена в 1с

В этом случае становятся доступны:

Например, при отмеченном у плана обмена флаге «Распределенная база данных» при получении данных от подчиненного узла возникает событие » ПриПолученииДанныхОтПодчиненного «, определяемое в модуле плана обмена.

Возможности распределенной информационной базы:

Особенности распределенной информационной базы:

При использовании механизма распределенных информационных баз в соответствующем объекте «План обмена» для отдельно взятой информационной базы (входящей в распределенную) определяется:

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

Служба регистрации изменений

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

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

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

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

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

Инфраструктура сообщений

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

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

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

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

Для отправки комментария вам необходимо авторизоваться.

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

Источник

Создание и регистрация плана обмена

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

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

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

1. Создание и регистрация, узлы плана обмена.

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

Назовем его «ОбменНоменклатурой_Тест». Включаем в состав нужные объекты. В этом примере справочник «Номенклатура».

что такое план обмена в 1с. Смотреть фото что такое план обмена в 1с. Смотреть картинку что такое план обмена в 1с. Картинка про что такое план обмена в 1с. Фото что такое план обмена в 1с

Авторегистрацию устанавливаем в значение «Разрешить». Смысл авторегистрации в том, что если объект был изменен, он будет автоматически зарегистрирован к обмену, и никаких дополнительных манипуляций для регистрации делать больше не нужно.
Если же выбрать значение для авторегистрации «Запретить», тогда придется вручную регистрировать объекты к обмену. Это нужно, когда есть необходимость в дополнительных отборах; когда, например, у каждого узла плана обмена (приемника) будет свой набор номенклатуры, и разделятся он будет в настройках плана обмена, где каждому узлу будет закреплен свой список номенклатуры.
Чтобы зарегистрировать вручную объект к обмену, можно создать подписку на событие «При записи» справочника. И в обработчике после наложенных отборов указать следующее:

Процедура РегистрацияИзмененийДляВыгрузки(Источник,Отказ) Экспорт

//Здесь налаживаем отборы

//и сам код регистрации
Узел = ПланыОбмена.ОбменНоменклатурой_Тест.НайтиПоКоду(«Тест»);
ПланыОбмена.ЗарегистрироватьИзменения(Узел, Источник);

Сохраним изменения и откроем конфигурацию в режиме предприятия.
Так как конфигурация в данном случае пустая, дополнительно будут использоваться две обработки «РегистрацияИзмененийДляОбмена82 (управляемое приложение).epf» (its.1c.ru/db/metod8dev/content/5013/hdoc) и консоль запросов (its.1c.ru/db/metod8dev/content/4500/hdoc). Обе обработки доступны для свободного скачивания.

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

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

что такое план обмена в 1с. Смотреть фото что такое план обмена в 1с. Смотреть картинку что такое план обмена в 1с. Картинка про что такое план обмена в 1с. Фото что такое план обмена в 1с

Откроем обработку «Регистрация изменений для обмена», выберем наш узел «Тест». И видим, что пока не зарегистрировано ни одного объекта.

что такое план обмена в 1с. Смотреть фото что такое план обмена в 1с. Смотреть картинку что такое план обмена в 1с. Картинка про что такое план обмена в 1с. Фото что такое план обмена в 1с

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

что такое план обмена в 1с. Смотреть фото что такое план обмена в 1с. Смотреть картинку что такое план обмена в 1с. Картинка про что такое план обмена в 1с. Фото что такое план обмена в 1с

2. 1С Выгрузка планов обмена.

Здесь мы рассматриваем именно планы обмена, поэтому метод передачи данных нам неважен. Будь то прямое подключение к базе-приемнику, формирование файла или текста, который будет передан в двоичном виде через 1С http сервисы, выборка изменений при этом будет идти одинаково.

Например, создадим кнопку в списке плана обмена и назначим на нее обработчик на сервере.

Есть возможность выбирать изменения объектной моделью, вот так:

Пока ВыборкаИзменений.Следующий() Цикл
КонецЦикла;

«НомерСообщения» – это стандартный реквизит плана обмена «НомерОтправленного». Его необходимо прочитать из узла и самостоятельно увеличить после отправки данных.

Также есть возможность выбора изменений запросом:
В процедуре на сервере давайте откроем конструктор запроса с обработкой результата и посмотрим, как выбрать изменения. В конструкторе есть кнопка «Отображать таблицы изменений». После нажатия на эту кнопку мы увидим таблицы, в которых хранятся наши изменения.

что такое план обмена в 1с. Смотреть фото что такое план обмена в 1с. Смотреть картинку что такое план обмена в 1с. Картинка про что такое план обмена в 1с. Фото что такое план обмена в 1с

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

что такое план обмена в 1с. Смотреть фото что такое план обмена в 1с. Смотреть картинку что такое план обмена в 1с. Картинка про что такое план обмена в 1с. Фото что такое план обмена в 1с

После того как мы воспользуемся кнопкой в обработке регистрации изменений для обмена данными, мы увидим, что данные помечены, как выгруженные. И в колонке «Номер отправленного» мы видим номер пакета, в котором была произведена 1С выгрузка объекта.

что такое план обмена в 1с. Смотреть фото что такое план обмена в 1с. Смотреть картинку что такое план обмена в 1с. Картинка про что такое план обмена в 1с. Фото что такое план обмена в 1с

3. Порядок снятия с регистрации.

После того как объект будет получен приемником, он может отправить нам подтверждение получения. Опять-таки, это может быть сделано любым удобным способом, например, через файл. Мы его читаем, и теперь пришло время узнать порядок снятия с регистрации. Если от приемника мы получим объекты (гуиды, например), которые успешно были приняты, мы можем снять с регистрации только их. А если мы условились, что принимаем весь пакет, то можем снять с регистрации пакет по номеру. В коде это выглядит так:

что такое план обмена в 1с. Смотреть фото что такое план обмена в 1с. Смотреть картинку что такое план обмена в 1с. Картинка про что такое план обмена в 1с. Фото что такое план обмена в 1с

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

В общем, повторюсь, план обмена помогает организовать обмен данными со сторонними системами. И в этой статье мы разобрали, как на самом деле просто с ним работать.

Источник

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

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