Добро пожаловать в канал @learn_ssl1c, в этом канале будем рассказывать про разные возможности библиотеки, киллерфичи и особенности ее использования. Присоединяйтесь и да прольем свет на большой и глубокий мир БСП!
БСП очень активно меняется, меняются подходы и механизмы, происходят пересмотры проектных решений и как маленькие доработочки так и глобальные переработки.
Очень сложно писать о том, что меняется постоянно, потому писать будем о том, что актуально для последней выпущенной БЕТА версии на момент публикации.
Нужно понимать, что это совсем не то, что может использоваться в вашем продукте, потому что все это должно "дойти" до продукта.
На эту публикацию актуальна версия 3.1.1.79. Список всех версий и даты их публикации можно найти по ссылке
https://releases.1c.ru/total (необходимо иметь активный аккуант с доступом к ИТС)
Первым полезным советом будет "Как узнать версию БСП?".
Откройте конфигурацию в режиме предприятия. Перейдите во Все функции затем найдите регистр сведений Версии подсистем и посмотрите версию записи Стандартные подсистемы.
Очень сложно писать о том, что меняется постоянно, потому писать будем о том, что актуально для последней выпущенной БЕТА версии на момент публикации.
Нужно понимать, что это совсем не то, что может использоваться в вашем продукте, потому что все это должно "дойти" до продукта.
На эту публикацию актуальна версия 3.1.1.79. Список всех версий и даты их публикации можно найти по ссылке
https://releases.1c.ru/total (необходимо иметь активный аккуант с доступом к ИТС)
Первым полезным советом будет "Как узнать версию БСП?".
Откройте конфигурацию в режиме предприятия. Перейдите во Все функции затем найдите регистр сведений Версии подсистем и посмотрите версию записи Стандартные подсистемы.
Как БСП определяет, что вы работаете в копии информационной базы и блокирует опасные действия?
Многие из вас видели возникающее окно Информационная база была перемещена....
Вся логика вычисления относится к подсистеме Регламентные задания.
Почему? Потому что в первую очередь именно от регламентных заданий, неумело оставленных в копии базы, возникают большинство проблем.
Кто-то восстановил базу для проведения теста, и тут начинаются чудеса:
• обмены этой базы с продуктовыми базами ломают синхронизацию и портят продуктовые базы;
• на сайте появляются товары "Тест1" и "тЕсТ2";
• начинают рассылаться клиентам электронные письма и SMS сообщения.
Модулем расчета является общий модуль БлокировкаРаботыСВнешнимиРесурсами.
Механизм блокировки работы с внешними ресурсами:
• выполняет отключение регламентных заданий, работающих с внешними ресурсами;
• при наличии подсистемы Обсуждения отключает базу от сервера взаимодействия.
Блокировка может возникать в случае:
• входа пользователя в систему;
• старта выполнения регламентного задания, отмеченного как работающее с внешними ресурсами.
Блокировка всегда выполняется в автоматическом режиме.
Администратору предлагается подтвердить блокировку или разблокировать базу.
Блокировка возникает:
• Если информационная база была загружена из приложения в интернете (1С:Фреш)
• При перемещении базы между клиент-серверным и файловым режимом работы.
• В файловом режиме строки соединения у всех пользователей скорее всего разные, поэтому нужен внешний идентификатор базы.
Им является файл DoNotCopy.txt в папке с информационной базой. Если он не существует или идентификатор базы из файла не соответствует сохраненному в базе - база считается перемещенной.
• В клиент-серверном режиме работы контроллируется изменение имен серверов rphost, rmanager и имени информационной базы (без контроля регистра).
Если параметры были изменены - база считается перемещенной. Для масштабируемого кластера контроль имени rphost можно отключить на форме предупреждения.
Мое регламентное задание не работает с внешними ресурсами, будет ли оно заблокировано?
Нет. Блокируются только те регламентные задания, которые подключены к БСП в соответствии с документацией.
Смотрите подписку в РегламентныеЗаданияПереопределяемый.ПриОпределенииНастроекРегламентныхЗаданий,
для регламентного задания можно задать признак РаботаетСВнешнимиРесурсами
(а еще можно настроить автоматическое включение или выключение задания при изменении функциональной опции).
Кроме этого надо первой строкой обработчика регламентного задания вызывать ОбщегоНазначения.ПриНачалеВыполненияРегламентногоЗадания.
Это связано не только с необходимостью блокировки заданий при выявлении что это база - копия,
но еще и для корректной блокировки в случае обновления версии базы данных или при разрыве соединения подчиненного узла РИБ с главным и во многих других кейсах.
Многие из вас видели возникающее окно Информационная база была перемещена....
Вся логика вычисления относится к подсистеме Регламентные задания.
Почему? Потому что в первую очередь именно от регламентных заданий, неумело оставленных в копии базы, возникают большинство проблем.
Кто-то восстановил базу для проведения теста, и тут начинаются чудеса:
• обмены этой базы с продуктовыми базами ломают синхронизацию и портят продуктовые базы;
• на сайте появляются товары "Тест1" и "тЕсТ2";
• начинают рассылаться клиентам электронные письма и SMS сообщения.
Модулем расчета является общий модуль БлокировкаРаботыСВнешнимиРесурсами.
Механизм блокировки работы с внешними ресурсами:
• выполняет отключение регламентных заданий, работающих с внешними ресурсами;
• при наличии подсистемы Обсуждения отключает базу от сервера взаимодействия.
Блокировка может возникать в случае:
• входа пользователя в систему;
• старта выполнения регламентного задания, отмеченного как работающее с внешними ресурсами.
Блокировка всегда выполняется в автоматическом режиме.
Администратору предлагается подтвердить блокировку или разблокировать базу.
Блокировка возникает:
• Если информационная база была загружена из приложения в интернете (1С:Фреш)
• При перемещении базы между клиент-серверным и файловым режимом работы.
• В файловом режиме строки соединения у всех пользователей скорее всего разные, поэтому нужен внешний идентификатор базы.
Им является файл DoNotCopy.txt в папке с информационной базой. Если он не существует или идентификатор базы из файла не соответствует сохраненному в базе - база считается перемещенной.
• В клиент-серверном режиме работы контроллируется изменение имен серверов rphost, rmanager и имени информационной базы (без контроля регистра).
Если параметры были изменены - база считается перемещенной. Для масштабируемого кластера контроль имени rphost можно отключить на форме предупреждения.
Мое регламентное задание не работает с внешними ресурсами, будет ли оно заблокировано?
Нет. Блокируются только те регламентные задания, которые подключены к БСП в соответствии с документацией.
Смотрите подписку в РегламентныеЗаданияПереопределяемый.ПриОпределенииНастроекРегламентныхЗаданий,
для регламентного задания можно задать признак РаботаетСВнешнимиРесурсами
(а еще можно настроить автоматическое включение или выключение задания при изменении функциональной опции).
Кроме этого надо первой строкой обработчика регламентного задания вызывать ОбщегоНазначения.ПриНачалеВыполненияРегламентногоЗадания.
Это связано не только с необходимостью блокировки заданий при выявлении что это база - копия,
но еще и для корректной блокировки в случае обновления версии базы данных или при разрыве соединения подчиненного узла РИБ с главным и во многих других кейсах.
БСП и стандарты по библиотечной разработке. Как идеалогически правильно использовать БСП?
• Что из библиотеки можно использовать, что нельзя?
• Где искать то что можно использовать?
• БСП такая большая, что в ней невозможно разобраться!
Это самые популярные вопросы, которые возникают у тех, кто первый раз открыл БСП.
Попробуем разобраться:
Стандарт: Разработка конфигураций с повторным использованием общего кода и объектов метаданных https://its.1c.ru/db/v8std#content:2149184200:hdoc
Описывает: что есть программный интерфейс, что служебный программный, а что служебные процедуры и функции.
• Программный интерфейс - это все то, что можно и нужно вызывать. Он версионируется. По нему соблюдается обратная совместимость со старыми версиями библиотеки. Используя его вы гарантируете, что совершаете легальное документируемое действие. Все мотоды программного интерфейса описываются документируемыми комментариями, по которым в дальнейшем собирается синтакс-помощник по БСП, вот он: https://its.1c.ru/db/bspdoc#content:2029:hdoc. (при желании имея поставку БСП можно его собрать самостоятельно, воспользовавшить обработкой в папке ExtFiles/Инструменты разработчика/ГенерацияОписанияПрограммногоИнтерфейса.epf)
• Служебный программный интерфейс - не следует вызывать методы из этой группы. Это то, что нужно для динамической сцепки подсистем внутри самой БСП, благодаря этому интерфейсу можно использовать частичную поставку БСП, например только три базовые подсистемы Базовая функциональность, Обновление версии ИБ и Пользователи. Все остальные подсистемы могут расширять функционал при их наличии, но их отсутствие не препятствует работе с библиотекой. (Подробнее о том какие подсистемы от каких зависят можно посмотреть в документации https://its.1c.ru/db/bspdoc#content:11:hdoc:issogl1_зависимости_между_подсистемами_библиотеки а так же в поставляемой обработке ExtFiles/ПервоеВнедрениеБСП.epf)
• Служебные процедуры и функции - это внутренняя реализация, которая может меняться постоянно в любой версии. Даже если процедура или функция экспортая, находясь в этой области она используется только в подсистеме, которой принадлежит модуль. Извне ее вызывать не следует.
Хотите следовать хорошему тону и использовать свой код повторно, так же, как в БСП? Используйте готовые шаблоны для разных типов модулей, их можно подсмотреть в стандарте Структура модуля https://its.1c.ru/db/v8std#content:2149184104:hdoc
Теперь вы знаете как и где искать готовые решения, при этом не заблудиться в дебрях реализации.
• Что из библиотеки можно использовать, что нельзя?
• Где искать то что можно использовать?
• БСП такая большая, что в ней невозможно разобраться!
Это самые популярные вопросы, которые возникают у тех, кто первый раз открыл БСП.
Попробуем разобраться:
Стандарт: Разработка конфигураций с повторным использованием общего кода и объектов метаданных https://its.1c.ru/db/v8std#content:2149184200:hdoc
Описывает: что есть программный интерфейс, что служебный программный, а что служебные процедуры и функции.
• Программный интерфейс - это все то, что можно и нужно вызывать. Он версионируется. По нему соблюдается обратная совместимость со старыми версиями библиотеки. Используя его вы гарантируете, что совершаете легальное документируемое действие. Все мотоды программного интерфейса описываются документируемыми комментариями, по которым в дальнейшем собирается синтакс-помощник по БСП, вот он: https://its.1c.ru/db/bspdoc#content:2029:hdoc. (при желании имея поставку БСП можно его собрать самостоятельно, воспользовавшить обработкой в папке ExtFiles/Инструменты разработчика/ГенерацияОписанияПрограммногоИнтерфейса.epf)
• Служебный программный интерфейс - не следует вызывать методы из этой группы. Это то, что нужно для динамической сцепки подсистем внутри самой БСП, благодаря этому интерфейсу можно использовать частичную поставку БСП, например только три базовые подсистемы Базовая функциональность, Обновление версии ИБ и Пользователи. Все остальные подсистемы могут расширять функционал при их наличии, но их отсутствие не препятствует работе с библиотекой. (Подробнее о том какие подсистемы от каких зависят можно посмотреть в документации https://its.1c.ru/db/bspdoc#content:11:hdoc:issogl1_зависимости_между_подсистемами_библиотеки а так же в поставляемой обработке ExtFiles/ПервоеВнедрениеБСП.epf)
• Служебные процедуры и функции - это внутренняя реализация, которая может меняться постоянно в любой версии. Даже если процедура или функция экспортая, находясь в этой области она используется только в подсистеме, которой принадлежит модуль. Извне ее вызывать не следует.
Хотите следовать хорошему тону и использовать свой код повторно, так же, как в БСП? Используйте готовые шаблоны для разных типов модулей, их можно подсмотреть в стандарте Структура модуля https://its.1c.ru/db/v8std#content:2149184104:hdoc
Теперь вы знаете как и где искать готовые решения, при этом не заблудиться в дебрях реализации.