Параметры запуска 1с бсп
(0) ты можешь поставить фоновые задания для отладки, провалиться в нужное фоновое задание, потом отключить подключение фоновых заданий для отладки и далее f10/f11 уже спокойно смотреть. Лишнее уже не будет беспокоить. Хотя может есть более удобный способ..
(0) В настойках отладки в диалоге "Автоматическое подключение" снять флаг у фоновых заданий.
Установить параметр запуска "РежимОтладки". Для этого в конфигураторе Сервис\Параметры\Запуск 1С:Предприятие\Параметр запуска написать "РежимОтладки" (только без кавычек). В этом режиме отлаживаемый код не запускается в фоне.
указанный в (12) способ подходит для конфигураций, включающих БСП (с какой точно версии не помню уже).
(2) Подлючиться с галкой. Определить номер целевого сеанса. Снять галку. Остальные автоподключенные предметы отладки отключить, оставив лишь нужный. Профит.
(9) А как ты такую обработку напишешь? Вроде же нет способа обойти подключенные обработчики. Или есть?
(9)(17) Всё уже давно написано. Если свои обработчики ожидания и алгоритмы выполнения в фоне писать в соответствии с БСП, то можно использовать метод, описанный в (12).
(18) Ткни носом насчет обработчиков ожидания. Что-то я навскидку не нахожу. Это в документации к какой подсистеме, базовая функциональность?
Из документации к БСП:
РежимОтладки
Упрощает отладку кода. В частности:
● все длительные операции выполняются сразу, без запуска фонового задания (кроме отдельных операций, которые всегда должны выполняться в фоновом задании, например, обновление параметров работы программы конфигурации без учета расширений конфигурации);
● при разработке расширений конфигурации возможен запуск с установленными расширениями конфигурации, которые в данный момент открыты в конфигураторе (при условии, что версия конфигурации и версии расширений не менялись).
Соответственно, если ты свои выполняемые в фоне процедуры запускаешь через программных интерфейс базовой функциональности БСП, например, через функцию ВыполнитьВФоне (может применяться совместно с функцией ДлительныеОперацииКлиент.ОжидатьЗавершение), то наличие параметра "РежимОтладки" даст возможность отлаживать код без запуска фонового задания.
(20) Причем здесь фоновое выполнение? Ты, возможно, не понял контекста. Речь шла конкретно про вот эту штуку - "ПодключитьОбработчикОжидания()". Как их отключить?
(22) :)
Изначально ТС поднял вопрос об их отключении обработкой на конкретный момент времени. Я и задумался. Вроде ж их никак не обойти, а значит - и не отключить.
А вообще в контексте темы при отладке очень бесит, когда пытаешься использовать такой удобный инструмент, как остановку по ошибке, но из-за мудаков, использующих эксепшны направо и налево для обработки стандартных ситуаций, это становится далеко не таким удобным.
(23) я думал ОтключитьОбработчикОжидания подойдет.
Синтаксис:
Тип: Строка.
Имя процедуры модуля управляемого приложения (модуля обычного приложения) или глобального общего модуля, используемой в качестве обработчика ожидания.
Описание:
Отключает подключенный ранее при помощи процедуры ПодключитьОбработчикОжидания вызов процедуры через определенный интервал времени.
Тонкий клиент, веб-клиент, толстый клиент, мобильное приложение(клиент).
Пример:
Параметры запуска приложения, предоставляемые библиотекой:
1. ВойтиВОбластьДанных. При работе в модели сервиса позволяет выполнить вход в указанную область данных информационной базы. Например, «ВойтиВОбластьДанных; 3».
2. ВыполнитьОтложенноеОбновлениеСейчас.
Для клиент-серверных баз. Позволяет выполнить отложенные обработчики сразу, до начала работы пользователей в программе. Необходим для случаев, когда требуется быстро выполнить все процедуры отложенного обновления. Например, при обновлении «через несколько версий», когда прямое обновление на новую версию программы недопустимо, и требуется несколько раз последовательно обновлять конфигурацию и выполнять запуски для обновления ИБ.
3. ЗапуститьОбновлениеИнформационнойБазы.
Принудительно запускает обновление вспомогательных данных и выполняет обработчики обновления, имеющие версию «*» (звездочные). Требуется, например, при изменении в метаданных конфигурации без увеличения номера версии.
4. ЧислоПотоковОбновления.
Для клиент-серверных баз. Позволяет изменить количество параллельных потоков, выполняющих обновление программы (этап регистрации данных для отложенного обновления). Для оптимального и наиболее быстрого обновления рекомендуется устанавливать количество потоков равное количество ядер процессора на сервере, в случае ошибок конфликта блокировок значение нужно уменьшить. По умолчанию – 8.
5. ОтключитьЛогикуНачалаРаботыСистемы.
Только для автоматического тестирования (требуется право Администрирование).
При использовании этого параметра запуска на рабочих базах следует самостоятельно обеспечивать целостность данных.
6. РежимОтладки.
Упрощает отладку кода. В частности:
● все длительные операции выполняются сразу, без запуска фонового задания;
● при разработке расширений конфигурации, возможен запуск с установленными расширениями конфигурации, которые в данный момент открыты в конфигураторе (при условии, что версия конфигурации и версии расширений не менялись).
7. РазрешитьРаботуПользователей.
Разрешает работу пользователей в информационной базе. Сеанс, запущенный с этим ключом будет завершен после снятия блокировки работы пользователей.
8. ЗавершитьРаботуПользователей.
Запрещает подключение к информационной базе пользователей. Завершает уже запущенные сеанса. После завершения всех сеансов предлагает завершить сеанс, запущенный с этим ключом. Для клиент-серверной базы, если установлены параметры администрирования кластера, то их необходимо передать, указав через точку с запятой имя администратора кластера и пароль администратора кластера. Например, для администратора кластера Администратор и пароля 1 строка запуска будет ЗавершитьРаботуПользователей;Администратор;1.
Привет всем! Продолжаем цикл статей по возможностям асинхронной работы платформы 1с в рамках конфигурации разработчика - Библиотеки стандартных подсистем (БСП).
В предыдущей статье мы рассмотрели базовый - рабочий процесс-функционал для запуска длительных операций, используя основную для этого функцию - ДлительныеОперации.ВыполнитьВФоне.
Согласно последним рекомендациям БСП (версия 3.1.3.303) предлагается использовать более современные функции для работы с длительными операциями - это ВыполнитьПроцедуру и ВыполнитьФункцию.
Но, а кто хочет научиться работать с функционалом длительных операций вообще в рамках БСП - прошу ознакомиться с первой частью моей статьи - Гарантированно рабочий пример использования длительных операций на БСП с отображением прогресса. [Часть 1] .
Итак, перейдем к рассмотрению функции БСП ВыполнитьПроцедуру:
Рабочий пример функционала БСП "ВыполнитьПроцедуру "
В данном разделе я привожу рабочий код внешней обработки для запуска метода "Выполнить процедуру". Будем "отлавливать" статус методом формы "выполнить процедуру" (без излишеств).
В общем виде "на входе" данная функция выглядит вот так (до 7 параметров):
а вот и код обработки:
Вышенаписанного кода достаточно. Все будет работать.
Структура выполняемой процедуры для длительной операции "ВыполнитьПроцедуру "
В данном разделе, я привожу пример процедуры для общего серверного модуля, чтобы код из раздела выше - отработал. Это - самая обычная процедура - фактически - это любая процедура из конфигурации (расширения):
Рабочий пример функционала БСП "ВыполнитьФункцию "
Теперь, рассмотрим еще одну функцию выполнения длительной операции "ВыполнитьФункцию". В общем виде она выглядит вот так - до 7-ми входящих параметров:
Структура выполняемой процедуры для длительной операции "ВыполнитьФункцию "
Функция в общем модуле будет выглядеть вот так (тоже "любая" функция из конфигурации или расширения):
Для примера использования данной функции - я возвращаю в ней количество элементов в массиве.
Все, мы рассмотрели базовое применение двух относительно новых методов библиотеки стандартных подсистем ВыполнитьПроцедуру и ВыполнитьФункцию. Переходим к выводам и итогам.
Выводы и итоги
В данной части материала о длительных операциях - мы рассмотрели новые и рекомендуемые методы БСП - "ВыполнитьПроцедуру" и "ВыполнитьФункцию". Рассмотрели как их запускать, какие параметры передавать, как отслеживать и получать результат выполнения. Надеюсь, что данный материал будет вам максимально полезен - методики современные, сэкономят вам время. Я постарался описать их наиболее просто и без излишеств.
Основной и очень существенный плюс, на мой взгляд, использования этих методов - возможность уже брать готовые функции и процедуры конфигурации (расширения) и запускать их в асинхронном режиме. Что говорить - БСП существенно развивается.
Спасибо, что дочитали данную статью до конца. В своей статье я использовал БСП версии 3.1.3.303 и платформу 1с 8.3.17.1549.
Другие материалы
Если вам интересен мой практический подход и информация, которую вы сможете реально использовать, если у вас есть желание, чтобы данный комплекс статей наполнялся практическими материалы для программистов - я не откажусь от поддержки как данной статьи, так и всего комплекса статей в целом.
Так же прошу ознакомиться с другими моими статьями по БСП и типовым конфигурациям:
Давненько я не писал статей на ресурсе ввиду абсолютной нехватки времени. И вот сейчас, решил разобрать вместе с вами некоторые возможности библиотеки стандартных подсистем (БСП) в рамках модулей "стандартные подсистемы". Данную статью я разобью на две части.
В первой части данной статьи я предлагаю рассмотреть удобный функционал получения данных из обработки параметров клиента и использования их на практике. А во второй части - пример режима "диалога" (выбора вопроса) в рамках возможностей библиотеки стандартных подсистем БСП.
Разработка будет вестись (на момент написания статьи - конец марта 2022 г.) в типовой конфигурации Библиотека стандартных подсистем - версия 3.1.6.137. Тестирование примеров - на Платформе 1с 8.3.20.1674 (64 бит).
Как всегда, данные подходы можно использовать в любых типовых конфигурация, в основе которых лежит типовая библиотека БСП.
Итак, переходим к первой части:
Часть 1. Использование возможностей функций "ПараметрыРаботыКлиентаПриЗапуске " и "ПараметрыРаботыКлиента".
Применение данных функций крайне простое, в результате применения - фиксированная структура, содержащая в себе колоссально количество информации (почему-то вспомнилась сразу конфигурация ЗУП 3.1).
Элементарный код использования на клиенте вот такой:
Результат выполнения - это огромная фиксированная структура:
Рис.1. Структура - результат выполнения функции ПараметрыРаботыКлиентаПриЗапуске.
Рис.2. Структура (продолжение) - результат выполнения функции ПараметрыРаботыКлиентаПриЗапуске().
Из данной структуры можно получить информацию как о типе платформы, ее версии и рекомендуемому объему оперативной памяти, так и о параметрах блокировке сеанса, их продолжительности и дате последнего резервного копирования текущей базы, а так же - всех подсистемах конфигурации.
Рис.3. Структура (продолжение) - информация о настройке резервного копирования.
Рис.4. Структура (продолжение) - информация о блокировке сеансов.
Функция ПараметрыРаботыКлиента() возвращает несколько "урезанную" структуру данных:
Рис.5. Структура "урезанная"- результат выполнения функции ПараметрыРаботыКлиента().
Далее, я приведу простой пример использования функции ПараметрыРаботыКлиента(). Вот такой (получаю все подсистемы конфигурации из фиксированного соответствия):
Затем, я могу посмотреть состав необходимой мне подсистемы и права на нее.
Итак, в первой части статьи мы разобрали две интересные функции - ПараметрыРаботыКлиента() и ПараметрыРаботыКлиентаПриЗапуске(), которые возвращают большой массив информации о структуре и настройках базы данных в фиксированной структуре для удобного использования в дальнейшем.
Для справки отмечу, что в данной структуре можно даже "нарыть" СНИЛС Администратора (через привязанное физическое лицо).
Теперь, перейдем ко второй части статьи. В ней мы рассмотрим процедуру диалога выбора (вопроса) пользователю - ПоказатьВопросПользователю().
Часть 2. ПоказатьВопросПользователю() - Процедура диалога выбора (вопроса) и ее основные возможности.
По-факту - это обычный "вопрос пользователю" - ПоказатьВопрос(), но достаточно более продвинутый, имеющий более гибкие настройки.
Сначала отмечу, что код ПоказатьВопросПользователю() в "базовом" использовании мало отличается от ПоказатьВопрос() и данная процедура выглядит вот так:
Типовой результат выполнения процедуры ПоказатьВопросПользователю() будет вот такой (обычный вопрос - "да", "нет", "отмена"):
Рис.6. Диалог ответа на вопрос через процедуру ПоказатьВопросПользователю(). Практически "аналог" показатьВопрос().
Далее, мы получим дополнительные возможности диалога, изменив код, добавив собственные настройки:
Здесь, я запускаю задание, в зависимости от нажатой кнопки. Причем, "Задание 1" - запускается по-умолчанию в течение 10 секунд.
В результате запроса диалога - мы получим вот такую форму:
Рис.7. Настройка диалога пользователя. Задание 1 начнет выполняться через 10 секунд по-умолчанию.
Согласно описанию вводных параметров процедуры в библиотеке стандартных подсистем, они могут быть такие:
Пример работы данной процедуры выглядит вот так:
Рис.8. Демонстрация работы диалога пользователя возможностями Библиотеки стандартных подсистем 3.1.6.
Отмечу еще раз, что данный код может работать в любой типовой конфигурации, в основе которой лежит библиотека стандартных подсистем.
Далее, предлагаю (в рамках данной статьи) - перейти в разделу "Мои материалы по возможностям БСП".
Мои материалы по возможностям Библиотеки стандартных подсистем (БСП)
Спасибо всем, кто прочитал до данного момента.
Также прошу ознакомиться с другими моими статьями по интересному функционалу типовых конфигураций в рамках библиотеки стандартных подсистем и по разделам. Я накопил достаточный объем знаний по данной библиотеки, ниже наиболее интересные статьи по ней.
Если вам интересен мой практический подход и информация, которую вы сможете реально использовать, если у вас есть желание, чтобы данный комплекс статей наполнялся практическими материалы для программистов - я не откажусь от поддержки как данной статьи, так и всего комплекса статей в целом.
Обновленный список материалов по применению БСП на практике, доступных на этом ресурсе:
Возможности администрирования баз и кластера с помощью библиотеки стандартных подсистем:
Запуск длительных операций с помощью библиотеки стандартных подсистем:
Работа со штрихкодами и печатными макетами с помощью библиотеки стандартных подсистем:
1С 8.3 БСП ВыполнитьВФоне. Вместо этой функции рекомендуется использовать функции ВыполнитьФункцию и ВыполнитьПроцедуру.
//В общем виде процесс запуска и обработки результата длительной операции выглядит следующим образом:
//1) Процедура, которая будет исполняться в фоне, располагается в модуле менеджера объекта или в серверном общем модуле:
Процедура ВыполнитьДействие ( Параметры , АдресРезультата ) Экспорт
.
ПоместитьВоВременноеХранилище ( Результат , АдресРезультата );
КонецПроцедуры
//2) Запуск операции на сервере и подключение обработчика ожидания:
&НаКлиенте
Процедура ВыполнитьДействие ()
ДлительнаяОперация = НачатьВыполнениеНаСервере ();
ПараметрыОжидания = ДлительныеОперацииКлиент . ПараметрыОжидания ( ЭтотОбъект );
.
ОповещениеОЗавершении = Новый ОписаниеОповещения ( "ВыполнитьДействиеЗавершение" , ЭтотОбъект );
ДлительныеОперацииКлиент . ОжидатьЗавершение ( ДлительнаяОперация , ОповещениеОЗавершении , ПараметрыОжидания );
КонецПроцедуры
&НаСервере
Функция НачатьВыполнениеНаСервере ()
ПараметрыПроцедуры = Новый Структура ;
.
ПараметрыВыполнения = ДлительныеОперации . ПараметрыВыполненияВФоне ( УникальныйИдентификатор );
.
Возврат ДлительныеОперации . ВыполнитьВФоне ( "Обработки.МояОбработка.ВыполнитьДействие" ,
ПараметрыПроцедуры , ПараметрыВыполнения );
КонецФункции
//
&НаСервере
Функция ОбновитьКоличествоСервер ()
ПараметрыЗадания = Новый Структура ;
ПараметрыЗадания . Вставить ( "СтруктураОбработки" , ЭтотОбъект (). ЭтотОбъектВСтруктуруДляФонового ());
ПараметрыВыполнения = ДлительныеОперации . ПараметрыВыполненияВФоне ( УникальныйИдентификатор );
ПараметрыВыполнения . НаименованиеФоновогоЗадания =
НСтр ( "ru = 'Расчет количества объектов для отправки при синхронизации';
|en = 'Calculate the number of objects to send during synchronization'" );
РезультатЗапускаФоновогоЗадания = ДлительныеОперации . ВыполнитьВФоне (
"ОбменДаннымиСервер.ИнтерактивноеИзменениеВыгрузки_СформироватьДеревоЗначений" ,
ПараметрыЗадания ,
ПараметрыВыполнения );
ИдентификаторФоновогоЗадания = РезультатЗапускаФоновогоЗадания . ИдентификаторЗадания ;
АдресРезультатаФоновогоЗадания = РезультатЗапускаФоновогоЗадания . АдресРезультата ;
Читайте также: