diff --git a/public/obmen-dannymi/rib/10.png b/public/obmen-dannymi/rib/10.png new file mode 100644 index 0000000..9159b13 Binary files /dev/null and b/public/obmen-dannymi/rib/10.png differ diff --git a/public/obmen-dannymi/rib/11.png b/public/obmen-dannymi/rib/11.png new file mode 100644 index 0000000..6aad265 Binary files /dev/null and b/public/obmen-dannymi/rib/11.png differ diff --git a/public/obmen-dannymi/rib/12.png b/public/obmen-dannymi/rib/12.png new file mode 100644 index 0000000..00ac169 Binary files /dev/null and b/public/obmen-dannymi/rib/12.png differ diff --git a/public/obmen-dannymi/rib/13.png b/public/obmen-dannymi/rib/13.png new file mode 100644 index 0000000..9a9fa62 Binary files /dev/null and b/public/obmen-dannymi/rib/13.png differ diff --git a/public/obmen-dannymi/rib/14.png b/public/obmen-dannymi/rib/14.png new file mode 100644 index 0000000..589bb6f Binary files /dev/null and b/public/obmen-dannymi/rib/14.png differ diff --git a/public/obmen-dannymi/rib/15.png b/public/obmen-dannymi/rib/15.png new file mode 100644 index 0000000..4aaaf1b Binary files /dev/null and b/public/obmen-dannymi/rib/15.png differ diff --git a/public/obmen-dannymi/rib/16.png b/public/obmen-dannymi/rib/16.png new file mode 100644 index 0000000..79e9886 Binary files /dev/null and b/public/obmen-dannymi/rib/16.png differ diff --git a/public/obmen-dannymi/rib/17.png b/public/obmen-dannymi/rib/17.png new file mode 100644 index 0000000..f350d62 Binary files /dev/null and b/public/obmen-dannymi/rib/17.png differ diff --git a/public/obmen-dannymi/rib/18.png b/public/obmen-dannymi/rib/18.png new file mode 100644 index 0000000..b3ec564 Binary files /dev/null and b/public/obmen-dannymi/rib/18.png differ diff --git a/public/obmen-dannymi/rib/19.png b/public/obmen-dannymi/rib/19.png new file mode 100644 index 0000000..03b93c5 Binary files /dev/null and b/public/obmen-dannymi/rib/19.png differ diff --git a/public/obmen-dannymi/rib/5.png b/public/obmen-dannymi/rib/5.png new file mode 100644 index 0000000..94806bb Binary files /dev/null and b/public/obmen-dannymi/rib/5.png differ diff --git a/public/obmen-dannymi/rib/6.png b/public/obmen-dannymi/rib/6.png new file mode 100644 index 0000000..884a93d Binary files /dev/null and b/public/obmen-dannymi/rib/6.png differ diff --git a/public/obmen-dannymi/rib/7.png b/public/obmen-dannymi/rib/7.png new file mode 100644 index 0000000..460233b Binary files /dev/null and b/public/obmen-dannymi/rib/7.png differ diff --git a/public/obmen-dannymi/rib/8.png b/public/obmen-dannymi/rib/8.png new file mode 100644 index 0000000..e51203c Binary files /dev/null and b/public/obmen-dannymi/rib/8.png differ diff --git a/public/obmen-dannymi/rib/9.png b/public/obmen-dannymi/rib/9.png new file mode 100644 index 0000000..f0ef9c9 Binary files /dev/null and b/public/obmen-dannymi/rib/9.png differ diff --git a/src/content/docs/knowledge-base/Общие/(БСП) Подключение к подсистемам/Подключение БСП к собственной конфигурации.md b/src/content/docs/knowledge-base/Общие/(БСП) Подключение к подсистемам/Подключение БСП к собственной конфигурации.md index ea39d01..b641d11 100644 --- a/src/content/docs/knowledge-base/Общие/(БСП) Подключение к подсистемам/Подключение БСП к собственной конфигурации.md +++ b/src/content/docs/knowledge-base/Общие/(БСП) Подключение к подсистемам/Подключение БСП к собственной конфигурации.md @@ -2,29 +2,31 @@ title: Подключение БСП к собственной конфигурации slug: общие-бсп-подключение-к-подсистемам/подключение-бсп-к-собственной-конфигурации --- -# Для полной интеграции БСП, не частичной -1. Создаем пустую конфигурацию -2. Запускаем в пользовательском режиме -3. Открываем обработку ПервоеВнедрениеБСП.epf из папки шаблона БСП (`%AppData%\1C\1cv8\tmplts\1c\SSL\3_1_9_144\ExtFiles`) -4. В обработке ничего не выбираем, оставляем только базовую функциональность -5. Сохраняем в файл -6. Сравниваем и объединяем нашу пустую конфигурацию с конфигурацией из шаблона БСП `1Cv8.cf`. Полную замену не делаем, ставим на поддержку (опционально) -В окне снимаем все флажки и загружаем настройки, сохраненные в п.5 + +1. Устанавливаем нужную версию БСП в шаблоны +2. Запускаем нужную конфигурацию в пользовательском режиме +3. Открываем обработку `ПервоеВнедрениеБСП.epf` из папки шаблонов БСП (по умолчанию `%AppData%\1C\1cv8\tmplts\1c\SSL\<Версия_БСП>\ExtFiles`) +4. В обработке выбираем нужные подсистемы +5. Сохраняем настройки в файл +6. Сравниваем и объединяем нашу конфигурацию с конфигурацией из шаблона БСП `1Cv8.cf`. Полную замену не делаем, ставим на поддержку (опционально). Загружаем настройки, сохраненные в п.5 1. Назначаем имя, поставщика и версию конфигурации -2. Копируем общий модуль `ОбновлениеИнформационнойБазыБСП`, переименовываем (`ОбновлениеИнформационнойБазыСигма`, например). В нем редактируем процедуру `ПриДобавленииПодсистемы` и удаляем код из всех остальных методов модуля +2. Копируем общий модуль `ОбновлениеИнформационнойБазыБСП`, переименовываем (`ОбновлениеИнформационнойБазыСигма`, например). В нем редактируем процедуру `ПриДобавленииПодсистемы` и удаляем код из всех остальных методов модуля. +**Сами методы не удалять** + ```bsl Процедура ПриДобавленииПодсистемы(Описание) Экспорт Описание.Имя = "Сигма"; // ИмяКонфигурации Описание.Версия = "1.0.1.1"; //ВерсияКонфигурации - //Описание.ИдентификаторИнтернетПоддержки = "SSL"; - //Описание.РежимВыполненияОтложенныхОбработчиков = "Параллельно"; - //Описание.ПараллельноеОтложенноеОбновлениеСВерсии = "2.3.3.0"; - //Описание.ЗаполнятьДанныеНовыхПодсистемПриПереходеСДругойПрограммы = Истина; + Описание.РежимВыполненияОтложенныхОбработчиков = "Параллельно"; + Описание.ЗаполнятьДанныеНовыхПодсистемПриПереходеСДругойПрограммы = Истина; КонецПроцедуры ``` -9. В модуле `ПодсистемыКонфигурацииПереопределяемый` в методе `ПриДобавленииПодсистем` пишем +9. В модуле `ПодсистемыКонфигурацииПереопределяемый` в методе `ПриДобавленииПодсистем` добавляем наш модуль + ```bsl МодулиПодсистем.Добавить("ОбновлениеИнформационнойБазыСигма") -``` \ No newline at end of file +``` + +10. Запускаем в пользовательском режиме, ожидаем завершения отложенных обработчиков обновления \ No newline at end of file diff --git a/src/content/docs/knowledge-base/Общие/Обмен данными/Планы обмена/Распределенная информационная база/Реализация/Реализация РИБ в базах с БСП.md b/src/content/docs/knowledge-base/Общие/Обмен данными/Планы обмена/Распределенная информационная база/Реализация/Реализация РИБ в базах с БСП.md new file mode 100644 index 0000000..dfa6d84 --- /dev/null +++ b/src/content/docs/knowledge-base/Общие/Обмен данными/Планы обмена/Распределенная информационная база/Реализация/Реализация РИБ в базах с БСП.md @@ -0,0 +1,277 @@ +--- +title: Реализация РИБ в базах с БСП +slug: общие-обмен-данными-планы-обмена-распределенная-информационная-база-реализация/реализация-риб-в-базах-с-бсп +--- + +## Требуемые подсистемы БСП + +- Базовая функциональность +- Групповое изменение объектов +- Дополнительные отчеты и обработки +- Загрузка данных из файла +- Настройки программы +- Обмен данными +- Обновление версии ИБ +- Подключаемые команды +- Поиск и удаление дублей +- Пользователи +- Префиксация объектов +- Работа с файлами +- Регламентные задания +- Удаление помеченных объектов + +См. `Общие` - `(БСП) Подключение к подсистемам` - `Подключение БСП к собственной конфигурации` + +## Подключаем объекты к подсистеме "Префиксация объектов" +См. `Общие` - `(БСП) Подключение к подсистемам` - `Подключение к подсистеме Префиксация объектов` + +## Создаем план обмена + +> **ВАЖНО!** Значения свойств плана обмена строго рекламентированы и описаны в документации ИТС + +| Свойство | Значение | +|-------------|-------------| +|Имя| Не регламентируется. Укажем "Полный" | +|Длина кода| 9 (36 для организации автономной работы в модели сервиса.) | +|Длина наименования| 150 | +|Распределенная информационная база| Да | +|Включать расширения конфигурации|Да| + +> Из ИТС: Для планов обмена РИБ с фильтрами рекомендуется исключить все объекты метаданных подсистем `Обмен данными` и `Обмен данными в модели сервиса`, кроме констант `ДанныеДляОтложенногоОбновления` и `АдресДляВосстановленияПароляУчетнойЗаписи`. Константу `АдресДляВосстановленияПароляУчетнойЗаписи` рекомендуется включать **только в состав начального образа подчиненного узла** распределенной ИБ. + +**Про расширения** +> Из ИТС: Важно! +Для разработчиков прикладных решений важно понимать, что если свойство `Включать расширение конфигурации` изменяется на `Истина` в существующем плане обмена РИБ, то необходимо пользователям донести следующую информацию: В работающих обменах РИБ, на момент включения свойства `Включать расширение конфигурации` в главном и периферийных узлах не должно быть расширений, меняющих структуру данных. Также следует удалить из периферийных информационных баз расширения, имена которых совпадают с расширениями в главном узле (кроме патчей). Добавлять расширения можно после обновления всех периферийных баз. + +### Настройка состава плана обмена +В созданном плане обмена включаем **ВСЕ объекты БСП** в `Состав` и для объектов **запрещаем авторегистрацию**. Исключаем из состава объекты подсистем `ОбменДанными` и `ОбменДаннымиВМоделиСервиса` кроме константы `НастройкиПодчиненногоУзлаРИБ`. + +> Проще всего скопировать план обмена `_ДемоОбменВРаспределеннойИнформационнойБазе` из демо-базы БСП в свою конфигурацию и перенести флажки из БСП-шного плана в свой. При копировании из состава будут удалены все объекты, которые не будут найдены в нашей базе, поэтому останется только то, что действительно нужно. Нюанс - модуль менеджера, реквизиты и формы нужно будет удалить и создать заново. + +![описание](/obmen-dannymi/rib/5.png) + +## Подключаем план обмена к подсистеме "ОбменДанными" + +> Порядок для БСП версии 3.1.11. Актуальную информацию смотри на ИТС + +1. В общем модуле `ОбменДаннымиПереопределяемый` в тело процедуры `ПолучитьПланыОбмена` добавляем наш план обмена + +```bsl +Процедура ПолучитьПланыОбмена(ПланыОбменаПодсистемы) Экспорт + + ПланыОбменаПодсистемы.Добавить(Метаданные.ПланыОбмена.Полный); + +КонецПроцедуры + +``` + +2. В состав определяемого типа `ПланыОбменаБСД` добавляем ссылку на план обмена + +3. В модуле менеджера плана обмена прописываем + +```bsl +#Область ДляВызоваИзДругихПодсистем + +// СтандартныеПодсистемы.ОбменДанными + +// Заполняет настройки, влияющие на использование плана обмена. +// +// Параметры: +// Настройки - см. ОбменДаннымиСервер.НастройкиПланаОбменаПоУмолчанию +// +Процедура ПриПолученииНастроек(Настройки) Экспорт + + УстановитьПривилегированныйРежим(Истина); + Настройки.НазначениеПланаОбмена = "РИБ"; + + // Для обеспечения возможности дополнительной настройки в методе ниже + Настройки.Алгоритмы.ПриПолученииОписанияВариантаНастройки = Истина; + +КонецПроцедуры + +// Заполняет набор параметров, определяющих вариант настройки обмена. +// +// Параметры: +// ОписаниеВарианта - см. ОбменДаннымиСервер.ОписаниеВариантаНастройкиОбменаПоУмолчанию +// ИдентификаторНастройки - Строка - идентификатор варианта настройки обмена. +// ПараметрыКонтекста - см. ОбменДаннымиСервер.ПараметрыКонтекстаПолученияОписанияВариантаНастройки +// +Процедура ПриПолученииОписанияВариантаНастройки(ОписаниеВарианта, ИдентификаторНастройки, ПараметрыКонтекста) Экспорт + + // Это нужно для оформления способа обмена в форме настроек синхронизации + // см. картинку ниже + КраткаяИнформацияПоОбмену = НСтр("ru = 'Позволяет настроить новый узел распределенной информационной базы.'"); + ПодробнаяИнформацияПоОбмену = "ПланОбмена.Полный.Форма.ПодробнаяИнформация"; + + ОписаниеВарианта.КраткаяИнформацияПоОбмену = КраткаяИнформацияПоОбмену; + ОписаниеВарианта.ПодробнаяИнформацияПоОбмену = ПодробнаяИнформацияПоОбмену; + ОписаниеВарианта.ЗаголовокКомандыДляСозданияНовогоОбменаДанными = НСтр("ru = 'Распределенная информационная база'"); + ОписаниеВарианта.ЗаголовокУзлаПланаОбмена = НСтр("ru = 'Узел распределенной информационной базы'"); + ОписаниеВарианта.ИмяФормыСозданияНачальногоОбраза = "ОбщаяФорма.СозданиеНачальногоОбразаСФайлами"; + +КонецПроцедуры + +// Конец СтандартныеПодсистемы.ОбменДанными + +#КонецОбласти + +``` + +![описание](/obmen-dannymi/rib/6.png) + + +## Создаем формы плана обмена (узла и списка) + +### Форма узла + +Создаем форму узла плана обмена и реализуем обработчики событий `ПриЗакрытии` и `ПриЗаписиНасервере` + +```bsl + +&НаКлиенте +Процедура ПриЗакрытии(ЗавершениеРаботы) + + Если ЗавершениеРаботы Тогда + Возврат; + КонецЕсли; + + // СтандартныеПодсистемы.ОбменДанными + Оповестить("ЗакрытаФормаУзлаПланаОбмена"); + // Конец СтандартныеПодсистемы.ОбменДанными + +КонецПроцедуры + +&НаСервере +Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) + + // СтандартныеПодсистемы.ОбменДанными + ОбменДаннымиСервер.ФормаУзлаПриЗаписиНаСервере(ТекущийОбъект, Отказ) + // Конец СтандартныеПодсистемы.ОбменДанными + +КонецПроцедуры + +``` + +### Форма списка +Просто создаем, никакого кода не требуется пока + +## Создаем подписки на события для регистрации изменений + +> **ВАЖНО!** Для каждого плана обмена создается свой набор подписок на события. Подписки на события именуются по шаблону `<ИмяПланаОбмена><ВидПодписки>` + +> **ВАЖНО 2!** В состав подписок на события включаем **только те объекты, которые фигурируют в составе плана обмена** + +Варианты видов подписки: +| Вид подписки | Источник | Событие | Процедура – обработчика события | +|--------------------------|----------------------------------------------------------------------------------------------|------------------|----------------------------------| +| РегистрацияДокумента | Элементы типа `ДокументОбъект` | Перед записью | `ОбменДаннымиСобытия.МеханизмРегистрацииОбъектовПередЗаписьюДокумента("<ИмяПланаОбмена>", Источник, Отказ, РежимЗаписи, РежимПроведения);` | +| Регистрация | Элементы типов: `СправочникОбъект`, `ПланВидовХарактеристикОбъект`, `ПланСчетовОбъект`, `ПланВидовРасчетаОбъект`, `БизнесПроцессОбъект`, `ЗадачаОбъект` | Перед записью | `ОбменДаннымиСобытия.МеханизмРегистрацииОбъектовПередЗаписью("<ИмяПланаОбмена>", Источник, Отказ);` | +| РегистрацияНабора | Элементы типов: `РегистрСведенийНаборЗаписей`, `РегистрНакопленияНаборЗаписей`, `РегистрБухгалтерииНаборЗаписей` | Перед записью | `ОбменДаннымиСобытия.МеханизмРегистрацииОбъектовПередЗаписьюРегистра("<ИмяПланаОбмена>", Источник, Отказ, Замещение);` | +| РегистрацияНабораРасчета | Элементы типа `РегистрРасчетаНаборЗаписей` | Перед записью | `ОбменДаннымиСобытия.МеханизмРегистрацииОбъектовПередЗаписьюРегистра("<ИмяПланаОбмена>", Источник, Отказ, Замещение);` | +| РегистрацияКонстанты | Элементы типа `КонстантаМенеджерЗначения` | Перед записью | `ОбменДаннымиСобытия.МеханизмРегистрацииОбъектовПередЗаписьюКонстанты("<ИмяПланаОбмена>", Источник, Отказ);` | +| РегистрацияУдаления | Элементы типов: `ДокументОбъект`, `СправочникОбъект`, `ПланВидовХарактеристикОбъект`, `ПланСчетовОбъект`, `ПланВидовРасчетаОбъект`, `БизнесПроцессОбъект`, `ЗадачаОбъект` | Перед удалением | `ОбменДаннымиСобытия.МеханизмРегистрацииОбъектовПередУдалением("<ИмяПланаОбмена>", Источник, Отказ);` | + +Определяем, какими объектами обмениваемся и реализуем соответствующие подписки на собыития + +Методы, указанные выше в таблицу мы не сможем явно указать в поле "Обработчик" подписки на события, т.к. **требуемя сигнатура не подходит** + +| Расположение | Сигнатура | +|-------------|-------------| +| В модуле объекта |`Процедура ПередЗаписью(Отказ)` | +| Для подписки на событие |`Процедура ПередЗаписью(Источник, Отказ)` | +| Для подсистемы "ОбменДанными" |`Процедура ПередЗаписью("ИмяПланаОбмена", Источник, Отказ)` | + +Поэтому нужно создать собственные `процедуры-обертки` для указания их в подписках на событие + +Создаем общий модуль, в котором определяем `обертки`, например: +```bsl + +#Область ПрограммныйИнтерфейс + +Процедура ПолныйРегистрацияПередЗаписью(Источник, Отказ) Экспорт + + ОбменДаннымиСобытия.МеханизмРегистрацииОбъектовПередЗаписью("Полный", Источник, Отказ); + +КонецПроцедуры + +Процедура ПолныйРегистрацияДокументаПередЗаписью(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт + + ОбменДаннымиСобытия.МеханизмРегистрацииОбъектовПередЗаписьюДокумента("Полный", Источник, Отказ, РежимЗаписи, РежимПроведения); + +КонецПроцедуры + +Процедура ПолныйРегистрацияУдаленияПередУдалением(Источник, Отказ) Экспорт + + ОбменДаннымиСобытия.МеханизмРегистрацииОбъектовПередУдалением("Полный", Источник, Отказ); + +КонецПроцедуры + +#КонецОбласти + +``` + +**ВАЖНО**. для регистра сведений `СоответствияОбъектовИнформационныхБаз`и константы `НастройкиПодчиненногоУзлаРИБ` **подписки на события не создаем** + +## Настраиваем общие команды + +В тип параметра следующих команд добавляем ссылку на наш план обмена: +- `Синхронизировать` +- `НастройкиПодключения` +- `ЗагрузитьПравилаРегистрацииОбъектов` +- `СценарииСинхронизации` +- `СобытияОтправки` +- `СобытияПолучения` +- `СоставОтправляемыхДанных` +- `УдалитьНастройкуСинхронизации` + +## Запускаем обновление версии +Нужно запустить пользовательский режим с параметром запуска `/C ЗапуститьОбновлениеИнформационнойБазы` (`с` латинская), чтобы перезаполнился справочник `ИдентификаторыОбъектовМетаданных` +Если не выполнить это, то при запуске подчиненного узла из начального образа будет ошибка +![описание](/obmen-dannymi/rib/13.png) + +## Настраиваем в пользовательском режиме + +![описание](/obmen-dannymi/rib/7.png) + +### Выбор типа подключения + +![описание](/obmen-dannymi/rib/8.png) + +### Настроить параметры подключения + +Для вида "через каталог" +![описание](/obmen-dannymi/rib/9.png) + +### Настроить общие параметры синхронизации +![описание](/obmen-dannymi/rib/10.png) + +### Настроить правила отправки и получения +Тут просто записать и закрыть +![описание](/obmen-dannymi/rib/11.png) + +### Создать начальный образ подчиненного узла РИБ +Указываем расположение, где будет создана подчиненная база +![описание](/obmen-dannymi/rib/12.png) + +## Запускаем подчиненный узел в пользовательском режиме +База обновится +![описание](/obmen-dannymi/rib/14.png) + +Затем откроется окно настройки синхронизации. Нужно донастроить последние пункты. А по сути их просто проверить +![описание](/obmen-dannymi/rib/15.png) +![описание](/obmen-dannymi/rib/16.png) +![описание](/obmen-dannymi/rib/17.png) + +Настройки синхронизации добавлены автоматически +![описание](/obmen-dannymi/rib/18.png) + +## Проверка обменов +После создания и настройки распределенных баз в форме настроек нажимаем на кнопку `Синхноризировать` + +Файлы синхронизации создаются по шаблону `Message_<КодИсточника>_<КодПриемника>`. Например `Message_М1_ЦБ`. + +Синхронизация идет в 2 этапа: +- Чтение данных. Система выполняет загрузку изменений в подчиненных базах из каталога обмена. Если в каталоге обмена не будет найдено файла из подчиненной базы или это файл уже был считан ранее, то в колонке `Данные получены` будет отображаться красный кружок +- Выгрузка данных -система выгружает все изменения для выделенного узла + +![описание](/obmen-dannymi/rib/19.png) \ No newline at end of file