diff --git a/docs/images/ERArchitectureIntegrationsSubsystem.svg b/docs/images/ERArchitectureIntegrationsSubsystem.svg index 077d3a1a..d7b1b846 100644 --- a/docs/images/ERArchitectureIntegrationsSubsystem.svg +++ b/docs/images/ERArchitectureIntegrationsSubsystem.svg @@ -1 +1 @@ -ER-Diagram integrations subsystemER-Diagram integrations subsystemСправочник: Интегрируемые системыУникальныйИдентификатор : uuid «generated»Код : строка (9)Наименование : строка (100)Родитель (иерархия групп) : uuid «FK»ИдентификаторНастройки : строка (100)Справочник: Настройки интеграцииУникальныйИдентификатор : uuid «generated»Код : строка (9)Наименование : строка (100)Родитель (иерархия групп) : uuid «FK»ИнтегрируемаяСистема : uuid «FK»ТипИнтеграции : uuid «FK»СтрокаПодключения : строка (100)Порт : строка (7)ВнешняяКомпонента : хранилище значенийУчетнаяЗапись : uuid «FK»ТипАвторизации : uuid «FK»ИдентификаторНастройки : строка (100)ИспользоватьПользовательскиеФункции : булевоИмя объекта : строка (100)ИзмененВручную : булевоИмяФайлаВнешнейКомпоненты : строка (100)Безопасное хранилищеСсылка : uuid «FK»Ключ : строка : "Логин", "Пароль", "Токен"Значение : строкаСправочник: Типы интеграцийУникальныйИдентификатор : uuid «generated»Код : строка (9)Наименование : строка (100)Родитель (иерархия элементов) : uuid «FK»Справочник: Типы интеграций - предопределенные элементыФайловые обмены:КаталогFTP-ресурсыПочтовый клиентПрямое подключение к БД:-Вызов внешней процедуры:SOAPREST APICOMВнешняя компонентаКомандная строкаБрокеры сообщений:RabbitMqKafkaСправочник БСП: Учетные записи электронной почтыУникальныйИдентификатор : uuid «generated»Перечисление: Типы авторизацииБазоваяТокенСправочник: Интеграционные потокиУникальныйИдентификатор : uuid «generated»Код : строка (9)Наименование : строка (100)Родитель (иерархия элементов) : uuid «FK»ИдентификаторНастройки : строка (100)НастройкаИнтеграции : uuid «FK»ТочкаВхода : строка (неогр)ПользовательскаяФункция : uuid «FK»ИзмененВручную : булевоНаправлениеПотока: uuid «FK»Параметры входаНомерСтрокиИмя : строка (неогр)Тип : uuid «FK»ПараметрURL : булевоЗначениеПоУмолчанию : булево, строка, число, дата, любая ссылкаПолеОбъекта : строка (100)Перечисление: Методы запроса RESTGETPOSTPUTPATCHDELETEСправочник: Пользовательские функцииУникальныйИдентификатор : uuid «generated»Перечисление: Типы параметров интеграцийСтрокаЧислоБулевоNullМассивОбъектДатаПеречисление: Направления интеграционных потоковИсходящийВходящийСлужебныйСправочник: История интеграцииУникальныйИдентификатор : uuid «generated»Код : строка (36)ДатаИнтеграции : дата и времяДатаИнтеграцииВМиллисекундах : число (20, 0)ИнтегрируемаяСистема : uuid «FK»Статус : uuid «FK»ФорматИнтеграции : uuid «FK»ИсходящееСообщение : строка (неогр)ВходящееСообщение : строка (неогр)ОписаниеОшибки : строка (неогр)ПротоколОбмена : строка (неогр)ИнтеграционныйПоток : uuid «FK»Ошибка : булевоПользователь : uuid «FK»ДлительностьОбмена : число (5, 0)ДлительностьВызова : число (5, 0)ИмяФайлаСообщения: Строка (150)ФайлСообщения: хранилище значенийОбъекты интеграцииНомерСтрокиОбъектИнтеграции : любая ссылкаСозданОбновлен : uuid «FK»Перечисление: Статусы интеграцииВыгруженоЗагруженоОшибкаВыгрузкиОшибкаЗагрузкиСлужебныйОшибкаСлужебногоПеречисление: Форматы интеграцииXMLJSONDBFCSVTXTXLS / XLSXBAT / SHDLLHTMLПроизвольныйФорматСправочник БСП: ПользователиУникальныйИдентификатор : uuid «generated»Перечисление: Создан обновленСозданОбновленРодительРодительИнтегрируемаяСистемаТипИнтеграцииХранение параметров подключенияУчетнаяЗаписьТипАвторизацииРодительНастройкаИнтеграцииПользовательскаяФункцияТип (параметры входа)НаправлениеПотокаИнтегрируемаяСистемаСтатусФорматИнтеграцииИнтреграционныйПотокПользовательСозданОбновлен (объекты интеграции) \ No newline at end of file +ER-Diagram integrations subsystemER-Diagram integrations subsystemСправочник: Интегрируемые системыУникальныйИдентификатор : uuid «generated»Код : строка (9)Наименование : строка (100)Родитель (иерархия групп) : uuid «FK»ИдентификаторНастройки : строка (100)Справочник: Настройки интеграцииУникальныйИдентификатор : uuid «generated»Код : строка (9)Наименование : строка (100)Родитель (иерархия групп) : uuid «FK»ИнтегрируемаяСистема : uuid «FK»ТипИнтеграции : uuid «FK»СтрокаПодключения : строка (100)Порт : строка (7)ВнешняяКомпонента : хранилище значенийУчетнаяЗапись : uuid «FK»ТипАвторизации : uuid «FK»ИдентификаторНастройки : строка (100)ИспользоватьПользовательскиеФункции : булевоИмя объекта : строка (100)ИзмененВручную : булевоИмяФайлаВнешнейКомпоненты : строка (100)Безопасное хранилищеСсылка : uuid «FK»Ключ : строка : "Логин", "Пароль", "Токен"Значение : строкаСправочник: Типы интеграцийУникальныйИдентификатор : uuid «generated»Код : строка (9)Наименование : строка (100)Родитель (иерархия элементов) : uuid «FK»Справочник: Типы интеграций - предопределенные элементыФайловые обмены:КаталогFTP-ресурсыПочтовый клиентПрямое подключение к БД:-Вызов внешней процедуры:SOAPREST APICOMВнешняя компонентаКомандная строкаБрокеры сообщений:RabbitMqKafkaСправочник БСП: Учетные записи электронной почтыУникальныйИдентификатор : uuid «generated»Перечисление: Типы авторизацииБазоваяТокенСправочник: Интеграционные потокиУникальныйИдентификатор : uuid «generated»Код : строка (9)Наименование : строка (100)Родитель (иерархия элементов) : uuid «FK»ИдентификаторНастройки : строка (100)НастройкаИнтеграции : uuid «FK»ТочкаВхода : строка (неогр)ПользовательскаяФункция : uuid «FK»ИзмененВручную : булевоНаправлениеПотока: uuid «FK»Параметры входаНомерСтрокиИмя : строка (неогр)Тип : uuid «FK»ПараметрURL : булевоЗначениеПоУмолчанию : булево, строка, число, дата, любая ссылкаПолеОбъекта : строка (100)Перечисление: Методы запроса RESTGETPOSTPUTPATCHDELETEСправочник: Пользовательские функцииУникальныйИдентификатор : uuid «generated»Перечисление: Типы параметров интеграцийСтрокаЧислоБулевоNullМассивОбъектДатаПеречисление: Направления интеграционных потоковИсходящийВходящийСлужебныйСправочник: История интеграцииУникальныйИдентификатор : uuid «generated»Код : строка (36)ДатаИнтеграции : дата и времяДатаИнтеграцииВМиллисекундах : число (20, 0)ИнтегрируемаяСистема : uuid «FK»Статус : uuid «FK»ФорматИнтеграции : uuid «FK»ИсходящееСообщение : строка (неогр)ВходящееСообщение : строка (неогр)ОписаниеОшибки : строка (неогр)ПротоколОбмена : строка (неогр)ИнтеграционныйПоток : uuid «FK»Ошибка : булевоПользователь : uuid «FK»ДлительностьОбмена : число (5, 0)ДлительностьВызова : число (5, 0)ИмяФайлаСообщения: Строка (150)ФайлСообщения: хранилище значенийОбъекты интеграцииНомерСтрокиОбъектИнтеграции : любая ссылкаСозданОбновлен : uuid «FK»Перечисление: Статусы интеграцииВыгруженоЗагруженоОшибкаВыгрузкиОшибкаЗагрузкиСлужебныйОшибкаСлужебногоПеречисление: Форматы интеграцииXMLJSONDBFCSVTXTXLS / XLSXBAT / SHDLLHTMLПроизвольныйФорматСправочник БСП: ПользователиУникальныйИдентификатор : uuid «generated»Перечисление: Создан обновленСозданОбновленРодительРодительИнтегрируемаяСистемаТипИнтеграцииХранение параметров подключенияУчетнаяЗаписьТипАвторизацииРодительНастройкаИнтеграцииПользовательскаяФункцияТип (параметры входа)НаправлениеПотокаИнтегрируемаяСистемаСтатусФорматИнтеграцииИнтреграционныйПотокПользовательСозданОбновлен (объекты интеграции) \ No newline at end of file diff --git "a/docs/\320\237\320\265\321\200\320\265\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\270\320\265\320\234\320\265\321\202\320\276\320\264\320\276\320\262\320\221\320\241\320\237.md" "b/docs/\320\237\320\265\321\200\320\265\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\270\320\265\320\234\320\265\321\202\320\276\320\264\320\276\320\262\320\221\320\241\320\237.md" index 428bacb5..8d53d7fa 100644 --- "a/docs/\320\237\320\265\321\200\320\265\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\270\320\265\320\234\320\265\321\202\320\276\320\264\320\276\320\262\320\221\320\241\320\237.md" +++ "b/docs/\320\237\320\265\321\200\320\265\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\270\320\265\320\234\320\265\321\202\320\276\320\264\320\276\320\262\320\221\320\241\320\237.md" @@ -1,14 +1,18 @@ -# Подисистема аналог библиотеки стандартных подсистем, для переопределения методов БСП - +# Подисистема, аналог библиотеки стандартных подсистем, для переопределения методов БСП + +## Назначение + +Данная подсистема предназначена для упрощения работы с методами библиотеки стандартных подсистем (БСП) при их отсутствии. Она позволяет переопределять методы БСП с использованием аналогичных модулей и обеспечивает поддержку переадресации вызовов для корректной работы системы. + ## 1. Использование общих модулей для переадресации методов - Для переадресации методов используются общие модули-аналоги в названии которых содержится "Служебный", пример: "пбп_ОбщегоНазначенияСлужебный". В случае отсутствия библиотеки стандартных подсистем(БСП), используются аналоги модулей и методов БСП. + Для переадресации методов используются общие модули **``пбп_Переадресация``**, **``пбп_ПереадресацияКлиент``**, **``пбп_ПереадресацияКлиентПовтИсп``**, и т.д. В случае отсутствия библиотеки стандартных подсистем(БСП) используются аналоги методов БСП. Пример вызова серверной процедуры: ```BSL &НаСервере Процедура СохранитьКаталогИсходногоКодаКонфигурации(Каталог) - пбп_ОбщегоНазначенияСлужебный.ХранилищеОбщихНастроекСохранить( + пбп_Переадресация.ХранилищеОбщихНастроекСохранить( КлючОбъекта(), "пбп_ПользовательскиеФункции_КаталогИсходногоКода", Каталог); @@ -23,49 +27,65 @@ ИмяСобытия = НСтр("ru = 'Очистка истории интеграции'"); ТекстОшибки = СтрШаблон("Не удалось удалить запись истории интеграции %1", ВыборкаДетальныеЗаписи.Ссылка); - пбп_ЖурналРегистрацииСлужебный.ДобавитьСообщениеДляЖурналаРегистрации(ИмяСобытия, УровеньЖурналаРегистрации.Ошибка,,, ТекстОшибки); + пбп_Переадресация.ДобавитьСообщениеДляЖурналаРегистрации(ИмяСобытия, УровеньЖурналаРегистрации.Ошибка,,, ТекстОшибки); КонецПопытки; КонецПроцедуры ``` - ## 2. Добавление новых методов-аналогов БСП - ### 2.1 Поиск или создание внутренних модулей, аналогичных модулям БСП - Найти внутренний модуль, с аналогичным названием и свойствами в БСП, если модуль отсутствует необходимо добавить новый, в имени должно содержатся "Служебный" (согласно общей концепции переопределения методов БСП). - - Пример: "пбп_ОбщегоНазначенияСлужебный", "пбп_ЖурналРегистрацииСлужебный". - - Методы располагаются в области "ПереадресацияМетодов", в описание метода указать см. пбп_ИмяМодуля.ИмяМетода. - - ```BSL - #Область ПереадресацияМетодов - - // См. пбп_ОбщегоНазначенияСервер.ВыполнитьМетодКонфигурации. - Процедура ВыполнитьМетодКонфигурации(Знач ИмяМетода, Знач Параметры = Неопределено) Экспорт - Модуль = ПолучитьМодуль(); - Модуль.ВыполнитьМетодКонфигурации(ИмяМетода, Параметры); - КонецПроцедуры - - #КонецОбласти - ``` - - Если модуль-аналог новый добавить функцию в области "СлужебныеПроцедурыИФункции", где пбп_ИмяМодуля для серверных модулей "пбп_ОбщегоНазначенияПовтИсп.", для клиентских "пбп_ОбщегоНазначенияКлиент" - - ```BSL - Функция ПолучитьМодуль() - Возврат пбп_ИмяМодуля.ОбщийМодуль(ИмяМодуляБСП, ИмяМодуляАналогаБСП); - КонецФункции - ``` - ### 2.2 Создание методов в модуле-аналоге - Пример: "пбп_ОбщегоНазначения". Методы располагаются в области "МетодыАналогиБСП", описание метода начинать с "Аналог метода БСП." - - ```BSL - #Область МетодыАналогиБСП - - // Аналог метода БСП. Описание - // - Процедура ВыполнитьМетодКонфигурации(Знач ИмяМетода, Знач Параметры = Неопределено) Экспорт - // ... - КонецПроцедуры +## 2. Структура общих модулей переадресации + +1. Область **``ПереадресацияМетодов``**: в ней располагаются методы аналоги. +2. Внутри этой области расположены именованные области по имени общих модулей, из которых взят аналог метода. +3. В области **``СлужебныеПроцедурыИФункции``** -> **``МодульПереадресацииПоПодсистемам``**, необходимо добавить функцию переадресации общего модуля, если она отсутствует. + +Пример функции: +```BSL + Функция ПереадресацияМодуля<ИмяОбщегоМодуляБСП>() + Возврат пбп_ПереадресацияПовтИсп.ОпределитьМодульПереадресации(<ИмяОбщегоМодуляБСП>); + КонецФункции +``` + +4. В начале каждого метода необходимо добавить фрагмент кода для работы механизма переадресации. + +### Для процедур +```BSL + Результат = ПереадресацияМодуля<ИмяОбщегоМодуляБСП>(); + Если Результат.МодульСуществует Тогда + Результат.Модуль.<ИмяМетода>(Параметры); + Возврат; + КонецЕсли; +``` + +### Для функция +```BSL + Результат = ПереадресацияМодуля<ИмяОбщегоМодуляБСП>(); + Если Результат.МодульСуществует Тогда + Возврат Результат.Модуль.<ИмяМетода>(Параметры); + КонецЕсли; +``` + +5. Методы располагаются в области **``ПереадресацияМетодов``**, и в описании метода указывается ``// Аналог метода БСП.`` + +Пример: + +```BSL +#Область ПрограммныйИнтерфейс +#Область ПереадресацияМетодов +#Область ОбщегоНазначения - #КонецОбласти - ``` +// Аналог метода БСП. +// <Описание> +// +Процедура ВыполнитьМетодКонфигурации(Знач ИмяМетода, Знач Параметры = Неопределено) Экспорт + Результат = ПереадресацияМодуляОбщегоНазначения(); + Если Результат.МодульСуществует Тогда + Результат.Модуль.ОбщегоНазначения(ИмяМетода, Параметры); + Возврат; + КонецЕсли; + + <Продолжение> +КонецПроцедуры +#КонецОбласти +#КонецОбласти +#КонецОбласти +``` diff --git "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\276\320\275\320\275\321\213\320\265\320\237\320\276\321\202\320\276\320\272\320\270/Ext/ObjectModule.bsl" "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\276\320\275\320\275\321\213\320\265\320\237\320\276\321\202\320\276\320\272\320\270/Ext/ObjectModule.bsl" index 1a5b8984..22a703a1 100644 --- "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\276\320\275\320\275\321\213\320\265\320\237\320\276\321\202\320\276\320\272\320\270/Ext/ObjectModule.bsl" +++ "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\276\320\275\320\275\321\213\320\265\320\237\320\276\321\202\320\276\320\272\320\270/Ext/ObjectModule.bsl" @@ -72,7 +72,7 @@ Возврат; КонецЕсли; - Если Не пбп_ОбщегоНазначенияСлужебныйКлиентСервер.СвойствоСтруктуры(ДополнительныеСвойства, "ЭтоНовый", Ложь) Тогда + Если Не пбп_ПереадресацияКлиентСервер.СвойствоСтруктуры(ДополнительныеСвойства, "ЭтоНовый", Ложь) Тогда пбп_ОбщегоНазначенияСервер.ОбработатьСуществующийПредопределенныйЭлемент(ЭтотОбъект); КонецЕсли; @@ -88,7 +88,7 @@ ОтборЗадания = Новый Структура; ОтборЗадания.Вставить("Ключ", КлючЗадания); - МассивРегламентныхЗаданий = пбп_РегламентныеЗаданияСервер.НайтиЗадания(ОтборЗадания); + МассивРегламентныхЗаданий = пбп_Переадресация.НайтиЗадания(ОтборЗадания); Если МассивРегламентныхЗаданий.Количество() Тогда РегламентноеЗадание = МассивРегламентныхЗаданий[0]; @@ -107,11 +107,11 @@ ОтборЗадания = Новый Структура; ОтборЗадания.Вставить("Ключ", КлючЗадания); - МассивРегламентныхЗаданий = пбп_РегламентныеЗаданияСервер.НайтиЗадания(ОтборЗадания); + МассивРегламентныхЗаданий = пбп_Переадресация.НайтиЗадания(ОтборЗадания); Если МассивРегламентныхЗаданий.Количество() Тогда РегламентноеЗадание = МассивРегламентныхЗаданий[0]; - пбп_РегламентныеЗаданияСервер.УдалитьЗадание(РегламентноеЗадание.УникальныйИдентификатор); + пбп_Переадресация.УдалитьЗадание(РегламентноеЗадание.УникальныйИдентификатор); КонецЕсли; КонецПроцедуры diff --git "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\276\320\275\320\275\321\213\320\265\320\237\320\276\321\202\320\276\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Ext/Form/Module.bsl" "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\276\320\275\320\275\321\213\320\265\320\237\320\276\321\202\320\276\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Ext/Form/Module.bsl" index 12a03a24..d2e97537 100644 --- "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\276\320\275\320\275\321\213\320\265\320\237\320\276\321\202\320\276\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Ext/Form/Module.bsl" +++ "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\276\320\275\320\275\321\213\320\265\320\237\320\276\321\202\320\276\320\272\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Ext/Form/Module.bsl" @@ -162,14 +162,14 @@ УстанавливаемоеСвойство = "Видимость"; Если Не ЗначениеЗаполнено(Объект.НастройкаИнтеграции) Тогда - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, ТочкаВхода, УстанавливаемоеСвойство, Ложь); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, ПользовательскаяФункция, УстанавливаемоеСвойство, Ложь); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, ПараметрыВходаСтрока, УстанавливаемоеСвойство, Ложь); Иначе - РеквизитыОбъекта = пбп_ОбщегоНазначенияСервер.ЗначенияРеквизитовОбъекта( + РеквизитыОбъекта = пбп_Переадресация.ЗначенияРеквизитовОбъекта( Объект.НастройкаИнтеграции, "ТипИнтеграции, ИспользоватьПользовательскиеФункции"); ЭлементНаследования = Справочники.пбп_ТипыИнтеграций .ПолучитьПредопределенныйЭлементНаследованияНастроекТипаИнтеграции(РеквизитыОбъекта.ТипИнтеграции); @@ -177,107 +177,107 @@ Или ЭлементНаследования = Справочники.пбп_ТипыИнтеграций.ПочтовыйКлиент Тогда УстановитьВидимостьЭлементовДляТипаФайловыеОбмены(); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, ПользовательскаяФункция, УстанавливаемоеСвойство, РеквизитыОбъекта.ИспользоватьПользовательскиеФункции); ИначеЕсли ЭлементНаследования = Справочники.пбп_ТипыИнтеграций.FTPРесурсы Тогда Элементы.ТочкаВхода.Заголовок = НСтр("ru = 'Путь к каталогу на сервере'"); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, "ТочкаВхода", УстанавливаемоеСвойство, Истина); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, "ПараметрыВхода", УстанавливаемоеСвойство, Ложь); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, ПользовательскаяФункция, УстанавливаемоеСвойство, РеквизитыОбъекта.ИспользоватьПользовательскиеФункции); ИначеЕсли ЭлементНаследования = Справочники.пбп_ТипыИнтеграций.COM Тогда Элементы.ТочкаВхода.Заголовок = НСтр("ru = 'Функция / запрос'"); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, ТочкаВхода, УстанавливаемоеСвойство, Истина); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, ПользовательскаяФункция, УстанавливаемоеСвойство, Ложь); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, ПараметрыВходаСтрока, УстанавливаемоеСвойство, Ложь); ИначеЕсли ЭлементНаследования = Справочники.пбп_ТипыИнтеграций.RESTAPI Тогда Элементы.ТочкаВхода.Заголовок = НСтр("ru = 'Ресурс'"); Элементы.ПараметрыВхода.Заголовок = НСтр("ru = 'Параметры запроса / URL'"); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, ТочкаВхода, УстанавливаемоеСвойство, Истина); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, ПользовательскаяФункция, УстанавливаемоеСвойство, Ложь); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, ПараметрыВходаСтрока, УстанавливаемоеСвойство, Истина); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, ПараметрыВходаПараметрURL, УстанавливаемоеСвойство, Истина); ИначеЕсли ЭлементНаследования = Справочники.пбп_ТипыИнтеграций.SOAP Тогда Элементы.ТочкаВхода.Заголовок = КонечнаяТочкаСтрока; Элементы.ПараметрыВхода.Заголовок = ПараметрыЗапросаСтрока; - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, ТочкаВхода, УстанавливаемоеСвойство, Истина); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, ПользовательскаяФункция, УстанавливаемоеСвойство, Ложь); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, ПараметрыВходаСтрока, УстанавливаемоеСвойство, Истина); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, ПараметрыВходаПараметрURL, УстанавливаемоеСвойство, Ложь); ИначеЕсли ЭлементНаследования = Справочники.пбп_ТипыИнтеграций.ПрямоеПодключениеКБД Тогда Элементы.ТочкаВхода.Заголовок = НСтр("ru = 'Имя таблицы внешнего источника данных'"); Элементы.ПараметрыВхода.Заголовок = НСтр("ru = 'Обязательные параметры запроса';"); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, ТочкаВхода, УстанавливаемоеСвойство, Истина); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, ПользовательскаяФункция, УстанавливаемоеСвойство, Ложь); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, ПараметрыВходаСтрока, УстанавливаемоеСвойство, Истина); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, ПараметрыВходаПараметрURL, УстанавливаемоеСвойство, Ложь); ИначеЕсли ЭлементНаследования = Справочники.пбп_ТипыИнтеграций.ВнешняяКомпонента Тогда Элементы.ТочкаВхода.Заголовок = НСтр("ru = 'Функция'"); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, ТочкаВхода, УстанавливаемоеСвойство, Истина); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, ПользовательскаяФункция, УстанавливаемоеСвойство, Ложь); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, ПараметрыВходаСтрока, УстанавливаемоеСвойство, Ложь); ИначеЕсли ЭлементНаследования = Справочники.пбп_ТипыИнтеграций.КоманднаяСтрока Тогда Элементы.ТочкаВхода.Заголовок = НСтр("ru = 'Команда'"); Элементы.ПараметрыВхода.Заголовок = НСтр("ru = 'Аргументы команды'"); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, ТочкаВхода, УстанавливаемоеСвойство, Истина); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, ПользовательскаяФункция, УстанавливаемоеСвойство, Ложь); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, ПараметрыВходаСтрока, УстанавливаемоеСвойство, Истина); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, ПараметрыВходаПараметрURL, УстанавливаемоеСвойство, Ложь); ИначеЕсли ЭлементНаследования = Справочники.пбп_ТипыИнтеграций.БрокерыСообщений Тогда Элементы.ТочкаВхода.Заголовок = КонечнаяТочкаСтрока; - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, ТочкаВхода, УстанавливаемоеСвойство, Истина); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, ПользовательскаяФункция, УстанавливаемоеСвойство, Ложь); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, ПараметрыВходаСтрока, УстанавливаемоеСвойство, Ложь); Иначе Элементы.ТочкаВхода.Заголовок = КонечнаяТочкаСтрока; Элементы.ПараметрыВхода.Заголовок = НСтр("ru = 'Параметры'"); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, ТочкаВхода, УстанавливаемоеСвойство, Истина); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, ПользовательскаяФункция, УстанавливаемоеСвойство, Истина); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, ПараметрыВходаСтрока, УстанавливаемоеСвойство, Истина); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, ПараметрыВходаПараметрURL, УстанавливаемоеСвойство, Ложь); КонецЕсли; КонецЕсли; @@ -289,9 +289,9 @@ УстанавливаемоеСвойство = "Видимость"; - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, "ТочкаВхода", УстанавливаемоеСвойство, Ложь); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, "ПараметрыВхода", УстанавливаемоеСвойство, Ложь); КонецПроцедуры @@ -303,13 +303,13 @@ "пбп_ИспользоватьПользовательскиеФункции"); ДоступноПоРолям = ПравоДоступа("Изменение", Метаданные.Справочники.пбп_ИнтеграционныеПотоки, - пбп_Пользователи.ТекущийПользователь()); + пбп_Переадресация.ТекущийПользователь()); Если Не (ПользовательскиеФункцииДоступны И ДоступноПоРолям) Тогда Возврат Ложь; КонецЕсли; - ТипИнтеграции = пбп_ОбщегоНазначенияСервер.ЗначениеРеквизитаОбъекта( + ТипИнтеграции = пбп_Переадресация.ЗначениеРеквизитаОбъекта( Объект.НастройкаИнтеграции, "ТипИнтеграции"); ЭлементНаследования = Справочники.пбп_ТипыИнтеграций .ПолучитьПредопределенныйЭлементНаследованияНастроекТипаИнтеграции(ТипИнтеграции); @@ -375,7 +375,7 @@ ОтборЗадания = Новый Структура; ОтборЗадания.Вставить("Ключ", КлючЗадания); - МассивРегламентныхЗаданий = пбп_РегламентныеЗаданияСервер.НайтиЗадания(ОтборЗадания); + МассивРегламентныхЗаданий = пбп_Переадресация.НайтиЗадания(ОтборЗадания); Если МассивРегламентныхЗаданий.Количество() Тогда РегламентноеЗадание = МассивРегламентныхЗаданий[0]; @@ -395,7 +395,7 @@ КонецЕсли; ПараметрыЗадания = Новый Структура; - НаименованиеРеглЗадания = пбп_СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НаименованиеРеглЗадания = пбп_ПереадресацияКлиентСервер.ПодставитьПараметрыВСтроку( "ru = 'Выполнение пользовательской функции: выполнение пользовательской функции по настройке интеграции ""%1""'", Объект.НастройкаИнтеграции.Наименование); ПараметрыЗадания.Вставить("Наименование" , НСтр(НаименованиеРеглЗадания)); @@ -412,7 +412,7 @@ ПараметрыЗадания.Вставить("Ключ", КлючЗадания); ПараметрыЗадания.Вставить("Расписание", Новый РасписаниеРегламентногоЗадания); - РегламентноеЗадание = пбп_РегламентныеЗаданияСервер.ДобавитьЗадание(ПараметрыЗадания); + РегламентноеЗадание = пбп_Переадресация.ДобавитьЗадание(ПараметрыЗадания); РасписаниеРегламентногоЗадания = РегламентноеЗадание.Расписание; ИспользоватьРегламентноеЗадание = РегламентноеЗадание.Использование; diff --git "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\230\320\275\321\202\320\265\320\263\321\200\320\270\321\200\321\203\320\265\320\274\321\213\320\265\320\241\320\270\321\201\321\202\320\265\320\274\321\213/Ext/ObjectModule.bsl" "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\230\320\275\321\202\320\265\320\263\321\200\320\270\321\200\321\203\320\265\320\274\321\213\320\265\320\241\320\270\321\201\321\202\320\265\320\274\321\213/Ext/ObjectModule.bsl" index 2b0ce9f0..df1493ba 100644 --- "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\230\320\275\321\202\320\265\320\263\321\200\320\270\321\200\321\203\320\265\320\274\321\213\320\265\320\241\320\270\321\201\321\202\320\265\320\274\321\213/Ext/ObjectModule.bsl" +++ "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\230\320\275\321\202\320\265\320\263\321\200\320\270\321\200\321\203\320\265\320\274\321\213\320\265\320\241\320\270\321\201\321\202\320\265\320\274\321\213/Ext/ObjectModule.bsl" @@ -18,7 +18,7 @@ Возврат; КонецЕсли; - Если Не пбп_ОбщегоНазначенияСлужебныйКлиентСервер.СвойствоСтруктуры(ДополнительныеСвойства, "ЭтоНовый", Ложь) Тогда + Если Не пбп_ПереадресацияКлиентСервер.СвойствоСтруктуры(ДополнительныеСвойства, "ЭтоНовый", Ложь) Тогда пбп_ОбщегоНазначенияСервер.ОбработатьСуществующийПредопределенныйЭлемент(ЭтотОбъект); КонецЕсли; diff --git "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\230\321\201\321\202\320\276\321\200\320\270\321\217\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270/Ext/ManagerModule.bsl" "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\230\321\201\321\202\320\276\321\200\320\270\321\217\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270/Ext/ManagerModule.bsl" index 939cefcf..c9a02448 100644 --- "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\230\321\201\321\202\320\276\321\200\320\270\321\217\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270/Ext/ManagerModule.bsl" +++ "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\230\321\201\321\202\320\276\321\200\320\270\321\217\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270/Ext/ManagerModule.bsl" @@ -61,7 +61,7 @@ ТекстОшибки = пбп_ОбщегоНазначенияСервер.ПолучениеПолногоТекстаОшибкиПриИсключении(ЗаголовокОшибки, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), ПолучитьСообщенияПользователю(Истина)); - пбп_ЖурналРегистрацииСлужебный.ДобавитьСообщениеДляЖурналаРегистрации( + пбп_Переадресация.ДобавитьСообщениеДляЖурналаРегистрации( ИмяСобытия, УровеньЖурналаРегистрации.Ошибка, , diff --git "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\230\321\201\321\202\320\276\321\200\320\270\321\217\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Ext/Form/Module.bsl" "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\230\321\201\321\202\320\276\321\200\320\270\321\217\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Ext/Form/Module.bsl" index 6c8bb7af..200b7a3c 100644 --- "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\230\321\201\321\202\320\276\321\200\320\270\321\217\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Ext/Form/Module.bsl" +++ "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\230\321\201\321\202\320\276\321\200\320\270\321\217\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\320\277\320\270\321\201\320\272\320\260/Ext/Form/Module.bsl" @@ -66,7 +66,7 @@ ПараметрыЗадания = Новый Структура; ПараметрыЗадания.Вставить("Ключ" , "пбп_ОчисткаИсторииИнтеграции"); ПараметрыЗадания.Вставить("Метаданные" , Метаданные.РегламентныеЗадания.пбп_ОчисткаИсторииИнтеграции); - МассивРегламентныхЗаданий = пбп_РегламентныеЗаданияСлужебныйСервер.НайтиЗадания(ПараметрыЗадания); + МассивРегламентныхЗаданий = пбп_Переадресация.НайтиЗадания(ПараметрыЗадания); Если МассивРегламентныхЗаданий.Количество() Тогда РегламентноеЗадание = МассивРегламентныхЗаданий[0]; @@ -74,7 +74,7 @@ ПараметрыЗадания.Вставить("Использование" , Истина); ПараметрыЗадания.Вставить("Расписание" , Новый РасписаниеРегламентногоЗадания()); - РегламентноеЗадание = пбп_РегламентныеЗаданияСлужебныйСервер.ДобавитьЗадание(ПараметрыЗадания); + РегламентноеЗадание = пбп_Переадресация.ДобавитьЗадание(ПараметрыЗадания); КонецЕсли; Возврат РегламентноеЗадание; diff --git "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\230\321\201\321\202\320\276\321\200\320\270\321\217\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Ext/Form/Module.bsl" "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\230\321\201\321\202\320\276\321\200\320\270\321\217\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Ext/Form/Module.bsl" index c2976d94..623bcdc0 100644 --- "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\230\321\201\321\202\320\276\321\200\320\270\321\217\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Ext/Form/Module.bsl" +++ "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\230\321\201\321\202\320\276\321\200\320\270\321\217\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Ext/Form/Module.bsl" @@ -72,7 +72,7 @@ Предопределенный = "Перечисление.пбп_ФорматыИнтеграций.ПроизвольныйФормат"; Если ЗначениеЗаполнено(Объект.ФорматИнтеграции) - И Объект.ФорматИнтеграции <> пбп_ОбщегоНазначенияСлужебныйКлиент.ПредопределенныйЭлемент(Предопределенный) Тогда + И Объект.ФорматИнтеграции <> пбп_ПереадресацияКлиент.ПредопределенныйЭлемент(Предопределенный) Тогда ИнициализироватьБазовыйФайлРедактора(ПолучитьФорматИнтеграции(Объект.ФорматИнтеграции)); КонецЕсли; @@ -93,7 +93,7 @@ Процедура ЗапросИсходящийДокументСформирован_Подключаемый(Элемент) Предопределенный = "Перечисление.пбп_ФорматыИнтеграций.JSON"; - Если Объект.ФорматИнтеграции = пбп_ОбщегоНазначенияСлужебныйКлиент.ПредопределенныйЭлемент(Предопределенный) Тогда + Если Объект.ФорматИнтеграции = пбп_ПереадресацияКлиент.ПредопределенныйЭлемент(Предопределенный) Тогда ИнициализироватьИЗаполнитьТекстомОбъектJSON("code", "Исходящий"); Иначе ИнициализироватьИЗаполнитьТекстомОбъектXML("Исходящий"); @@ -105,7 +105,7 @@ Процедура ЗапросВходящийДокументСформирован_Подключаемый(Элемент) Предопределенный = "Перечисление.пбп_ФорматыИнтеграций.JSON"; - Если Объект.ФорматИнтеграции = пбп_ОбщегоНазначенияСлужебныйКлиент.ПредопределенныйЭлемент(Предопределенный) Тогда + Если Объект.ФорматИнтеграции = пбп_ПереадресацияКлиент.ПредопределенныйЭлемент(Предопределенный) Тогда ИнициализироватьИЗаполнитьТекстомОбъектJSON("code", "Входящий"); Иначе ИнициализироватьИЗаполнитьТекстомОбъектXML("Входящий"); @@ -121,7 +121,7 @@ Процедура РазвернутьВсе(Команда) Предопределенный = "Перечисление.пбп_ФорматыИнтеграций.XML"; - Если Объект.ФорматИнтеграции = пбп_ОбщегоНазначенияСлужебныйКлиент.ПредопределенныйЭлемент(Предопределенный) Тогда + Если Объект.ФорматИнтеграции = пбп_ПереадресацияКлиент.ПредопределенныйЭлемент(Предопределенный) Тогда Элементы.ИсходящееСообщение.Документ.defaultView.Xonomy.plusminus("xonomy1", True); Элементы.ВходящееСообщение.Документ.defaultView.Xonomy.plusminus("xonomy1", True); Иначе @@ -140,7 +140,7 @@ Процедура СвернутьВсе(Команда) Предопределенный = "Перечисление.пбп_ФорматыИнтеграций.XML"; - Если Объект.ФорматИнтеграции = пбп_ОбщегоНазначенияСлужебныйКлиент.ПредопределенныйЭлемент(Предопределенный) Тогда + Если Объект.ФорматИнтеграции = пбп_ПереадресацияКлиент.ПредопределенныйЭлемент(Предопределенный) Тогда Элементы.ИсходящееСообщение.Документ.defaultView.Xonomy.plusminus("xonomy1", False); Элементы.ВходящееСообщение.Документ.defaultView.Xonomy.plusminus("xonomy1", False); Иначе @@ -184,7 +184,7 @@ ЗаголовокДиалога = НСтр("ru = 'Укажите файл внешней компоненты'"); - МассивРазделителей = пбп_СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок( + МассивРазделителей = пбп_ПереадресацияКлиентСервер.РазложитьСтрокуВМассивПодстрок( Объект.ИмяФайлаСообщения, ".", Истина, Истина); ИмяКомпоненты = МассивРазделителей[0]; КоличествоРазделимых = 2; @@ -217,7 +217,7 @@ Элементы.СохранитьФайлСообщенияОбменаВх.Заголовок = Объект.ИмяФайлаСообщения; Если ЗначениеЗаполнено(Объект.ИнтеграционныйПоток) Тогда - ТипИнтеграции = пбп_ОбщегоНазначенияСервер.ЗначениеРеквизитаОбъекта( + ТипИнтеграции = пбп_Переадресация.ЗначениеРеквизитаОбъекта( Объект.ИнтеграционныйПоток, "НастройкаИнтеграции.ТипИнтеграции"); ЭлементНаследования = Справочники.пбп_ТипыИнтеграций .ПолучитьПредопределенныйЭлементНаследованияНастроекТипаИнтеграции(ТипИнтеграции); @@ -366,7 +366,7 @@ Оповещение = Новый ОписаниеОповещения( "ПослеСозданияВременногоКаталогаДляБазовогоРедактора", ЭтотОбъект, ДополнительныеПараметры); - пбп_ФайловаяСистемаКлиентПереадресация.СоздатьВременныйКаталог(Оповещение, Расширение); + пбп_ПереадресацияКлиент.СоздатьВременныйКаталог(Оповещение, Расширение); КонецПроцедуры diff --git "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270/Ext/ObjectModule.bsl" "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270/Ext/ObjectModule.bsl" index 3fc960d5..68510da1 100644 --- "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270/Ext/ObjectModule.bsl" +++ "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270/Ext/ObjectModule.bsl" @@ -124,7 +124,7 @@ Возврат; КонецЕсли; - Если Не пбп_ОбщегоНазначенияСлужебныйКлиентСервер.СвойствоСтруктуры(ДополнительныеСвойства, "ЭтоНовый", Ложь) Тогда + Если Не пбп_ПереадресацияКлиентСервер.СвойствоСтруктуры(ДополнительныеСвойства, "ЭтоНовый", Ложь) Тогда пбп_ОбщегоНазначенияСервер.ОбработатьСуществующийПредопределенныйЭлемент(ЭтотОбъект); КонецЕсли; diff --git "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\270\320\222\320\275\320\265\321\210\320\275\320\265\320\271\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/Ext/Form/Module.bsl" "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\270\320\222\320\275\320\265\321\210\320\275\320\265\320\271\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/Ext/Form/Module.bsl" index 2f5f2332..24b528a6 100644 --- "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\270\320\222\320\275\320\265\321\210\320\275\320\265\320\271\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/Ext/Form/Module.bsl" +++ "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\270\320\222\320\275\320\265\321\210\320\275\320\265\320\271\320\232\320\276\320\274\320\277\320\276\320\275\320\265\320\275\321\202\321\213/Ext/Form/Module.bsl" @@ -78,7 +78,7 @@ ЗаголовокДиалога = НСтр("ru = 'Укажите файл внешней компоненты'"); - МассивРазделителей = пбп_СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок( + МассивРазделителей = пбп_ПереадресацияКлиентСервер.РазложитьСтрокуВМассивПодстрок( ИмяФайлаКомпоненты, ".", Истина, Истина); ИмяКомпоненты = МассивРазделителей[0]; КоличествоРазделимых = 2; @@ -112,11 +112,11 @@ ИмяФайла = ""; Если Не ПустаяСтрока(ИмяФайлаКомпоненты) Тогда - Если пбп_ОбщегоНазначенияКлиент.ЭтоWindowsКлиент() Тогда - МассивРазделителей = пбп_СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок( + Если пбп_ПереадресацияКлиент.ЭтоWindowsКлиент() Тогда + МассивРазделителей = пбп_ПереадресацияКлиентСервер.РазложитьСтрокуВМассивПодстрок( ИмяФайлаКомпоненты, "\", Истина, Истина); Иначе - МассивРазделителей = пбп_СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок( + МассивРазделителей = пбп_ПереадресацияКлиентСервер.РазложитьСтрокуВМассивПодстрок( ИмяФайлаКомпоненты, "/", Истина, Истина); КонецЕсли; diff --git "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Ext/Form/Module.bsl" "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Ext/Form/Module.bsl" index b7642b5e..01f5ace1 100644 --- "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Ext/Form/Module.bsl" +++ "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Ext/Form/Module.bsl" @@ -30,7 +30,7 @@ КонецЕсли; УстановитьПривилегированныйРежим(Истина); - СтруктураНастроек = пбп_ОбщегоНазначенияСлужебный.ПрочитатьДанныеИзБезопасногоХранилища(Объект.Ссылка); + СтруктураНастроек = пбп_Переадресация.ПрочитатьДанныеИзБезопасногоХранилища(Объект.Ссылка); Если СтруктураНастроек = Неопределено Тогда Возврат; @@ -86,7 +86,7 @@ КонецЦикла; УстановитьПривилегированныйРежим(Истина); - пбп_ОбщегоНазначенияСлужебный.ЗаписатьДанныеВБезопасноеХранилище(ТекущийОбъект.Ссылка, СтруктураНастроек); + пбп_Переадресация.ЗаписатьДанныеВБезопасноеХранилище(ТекущийОбъект.Ссылка, СтруктураНастроек); УстановитьПривилегированныйРежим(Ложь); КонецПроцедуры @@ -99,7 +99,7 @@ Объект.СтрокаПодключения = ""; Объект.Порт = ""; Объект.УчетнаяЗапись = Неопределено; - Объект.ТипАвторизации = пбп_ОбщегоНазначенияКлиент.ПредопределенныйЭлемент( + Объект.ТипАвторизации = пбп_ПереадресацияКлиент.ПредопределенныйЭлемент( "Перечисление.пбп_ТипыАвторизации.ПустаяСсылка"); Объект.ИмяОбъекта = ""; Объект.ИспользоватьПользовательскиеФункции = Ложь; @@ -205,29 +205,29 @@ УстанавливаемоеСвойство = "Видимость"; - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, СтрокаПодключенияМногострочная, УстанавливаемоеСвойство, Ложь); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, ГруппаСтрокаПорт, УстанавливаемоеСвойство, Истина); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, УстановитьСоединениеСБазойДанных, УстанавливаемоеСвойство, Ложь); Если Не ЗначениеЗаполнено(Объект.ТипИнтеграции) Тогда Элементы.СтрокаПодключения.Заголовок = НСтр("ru = 'Каталог'"); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, "ГруппаОсновныеНастройки", УстанавливаемоеСвойство, Ложь); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, "УчетнаяЗапись", УстанавливаемоеСвойство, Ложь); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, "ТипАвторизации", УстанавливаемоеСвойство, Ложь); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, "ИмяОбъекта", УстанавливаемоеСвойство, Ложь); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, "ИспользоватьПользовательскиеФункции", УстанавливаемоеСвойство, Ложь); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, "СписокНастроек", УстанавливаемоеСвойство, Ложь); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, "ПодключитьВнешнююКомпоненту", УстанавливаемоеСвойство, Ложь); Иначе @@ -257,7 +257,7 @@ УстанавливаемоеСвойство = "Видимость"; - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, ГруппаОсновныеНастройки, УстанавливаемоеСвойство, Истина); ЭлементНаследования = Справочники.пбп_ТипыИнтеграций @@ -269,37 +269,37 @@ УстановитьВидимостьЭлементовДляТипаФайловыеОбмены(); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, СтрокаПодключения, УстанавливаемоеСвойство, Истина); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, Порт, УстанавливаемоеСвойство, Ложь); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, УчетнаяЗапись, УстанавливаемоеСвойство, Ложь); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, СписокНастроекСтрока, УстанавливаемоеСвойство, Ложь); ИначеЕсли ЭлементНаследования = Справочники.пбп_ТипыИнтеграций.FTPРесурсы Тогда Элементы.СтрокаПодключения.Заголовок = НСтр("ru = 'Адрес сервера'"); УстановитьВидимостьЭлементовДляТипаФайловыеОбмены(); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, СтрокаПодключения, УстанавливаемоеСвойство, Истина); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, Порт, УстанавливаемоеСвойство, Истина); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, УчетнаяЗапись, УстанавливаемоеСвойство, Ложь); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, СписокНастроекСтрока, УстанавливаемоеСвойство, Истина); ИначеЕсли ЭлементНаследования = Справочники.пбп_ТипыИнтеграций.ПочтовыйКлиент Тогда УстановитьВидимостьЭлементовДляТипаФайловыеОбмены(); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, СтрокаПодключения, УстанавливаемоеСвойство, Ложь); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, Порт, УстанавливаемоеСвойство, Ложь); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, УчетнаяЗапись, УстанавливаемоеСвойство, Истина); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, СписокНастроекСтрока, УстанавливаемоеСвойство, Ложь); ИначеЕсли ЭлементНаследования = Справочники.пбп_ТипыИнтеграций.ПрямоеПодключениеКБД Тогда Элементы.СтрокаПодключенияМногострочная.Заголовок = НСтр("ru = 'Строка соединения (без данных аутентификации)'"); @@ -310,7 +310,7 @@ УстановитьВидимостьЭлементовДляComИПрямогоПодключенияКБД(); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, УстановитьСоединениеСБазойДанных, УстанавливаемоеСвойство, Истина); ИначеЕсли ЭлементНаследования = Справочники.пбп_ТипыИнтеграций.COM Тогда Элементы.СтрокаПодключенияМногострочная.Заголовок = НСтр("ru = 'Строка подключения'"); @@ -325,77 +325,77 @@ УстановитьВидимостьЭлементовДляОстальныхТипов(); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, Порт, УстанавливаемоеСвойство, Истина); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, ТипАвторизации, УстанавливаемоеСвойство, Истина); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, ИмяОбъекта, УстанавливаемоеСвойство, Ложь); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, СписокНастроекСтрока, УстанавливаемоеСвойство, Истина); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, ПодключитьВнешнююКомпоненту, УстанавливаемоеСвойство, Ложь); ИначеЕсли ЭлементНаследования = Справочники.пбп_ТипыИнтеграций.ВнешняяКомпонента Тогда Элементы.СтрокаПодключения.Заголовок = НСтр("ru = 'Имя компоненты'"); УстановитьВидимостьЭлементовДляОстальныхТипов(); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, Порт, УстанавливаемоеСвойство, Ложь); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, ТипАвторизации, УстанавливаемоеСвойство, Ложь); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, ИмяОбъекта, УстанавливаемоеСвойство, Ложь); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, СписокНастроекСтрока, УстанавливаемоеСвойство, Ложь); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, ПодключитьВнешнююКомпоненту, УстанавливаемоеСвойство, Истина); ИначеЕсли ЭлементНаследования = Справочники.пбп_ТипыИнтеграций.КоманднаяСтрока Тогда Элементы.СтрокаПодключения.Заголовок = НСтр("ru = 'Исполняемый файл'"); УстановитьВидимостьЭлементовДляОстальныхТипов(); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, Порт, УстанавливаемоеСвойство, Ложь); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, ТипАвторизации, УстанавливаемоеСвойство, Ложь); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, ИмяОбъекта, УстанавливаемоеСвойство, Ложь); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, СписокНастроекСтрока, УстанавливаемоеСвойство, Ложь); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, ПодключитьВнешнююКомпоненту, УстанавливаемоеСвойство, Ложь); ИначеЕсли ЭлементНаследования = Справочники.пбп_ТипыИнтеграций.БрокерыСообщений Тогда Элементы.СтрокаПодключения.Заголовок = СерверСтрока; УстановитьВидимостьЭлементовДляОстальныхТипов(); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, Порт, УстанавливаемоеСвойство, Истина); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, ТипАвторизации, УстанавливаемоеСвойство, Истина); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, ИмяОбъекта, УстанавливаемоеСвойство, Ложь); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, СписокНастроекСтрока, УстанавливаемоеСвойство, Истина); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, ПодключитьВнешнююКомпоненту, УстанавливаемоеСвойство, Истина); Иначе - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, СтрокаПодключения, УстанавливаемоеСвойство, Истина); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, ИспользоватьПользовательскиеФункции, УстанавливаемоеСвойство, Истина); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, УчетнаяЗапись, УстанавливаемоеСвойство, Ложь); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, Порт, УстанавливаемоеСвойство, Истина); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, ТипАвторизации, УстанавливаемоеСвойство, Истина); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, ИмяОбъекта, УстанавливаемоеСвойство, Ложь); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, СписокНастроекСтрока, УстанавливаемоеСвойство, Истина); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, ПодключитьВнешнююКомпоненту, УстанавливаемоеСвойство, Истина); КонецЕсли; @@ -406,15 +406,15 @@ УстанавливаемоеСвойство = "Видимость"; - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, "ТипАвторизации", УстанавливаемоеСвойство, Ложь); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, "ИмяОбъекта", УстанавливаемоеСвойство, Ложь); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, "ИспользоватьПользовательскиеФункции", УстанавливаемоеСвойство, Истина); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, "СписокНастроек", УстанавливаемоеСвойство, Ложь); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, "ПодключитьВнешнююКомпоненту", УстанавливаемоеСвойство, Ложь); КонецПроцедуры @@ -424,11 +424,11 @@ УстанавливаемоеСвойство = "Видимость"; - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, "СтрокаПодключения", УстанавливаемоеСвойство, Истина); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, "ИспользоватьПользовательскиеФункции", УстанавливаемоеСвойство, Ложь); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, "УчетнаяЗапись", УстанавливаемоеСвойство, Ложь); КонецПроцедуры @@ -438,21 +438,21 @@ УстанавливаемоеСвойство = "Видимость"; - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, "ИмяОбъекта", УстанавливаемоеСвойство, Истина); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, "СтрокаПодключенияМногострочная", УстанавливаемоеСвойство, Истина); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, "ГруппаСтрокаПорт", УстанавливаемоеСвойство, Ложь); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, "ИспользоватьПользовательскиеФункции", УстанавливаемоеСвойство, Ложь); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, "УчетнаяЗапись", УстанавливаемоеСвойство, Ложь); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, "ТипАвторизации", УстанавливаемоеСвойство, Ложь); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, "СписокНастроек", УстанавливаемоеСвойство, Истина); - пбп_ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, "ПодключитьВнешнююКомпоненту", УстанавливаемоеСвойство, Ложь); КонецПроцедуры @@ -513,7 +513,7 @@ пбп_ИнтеграцииСервер.УстановитьСоединениеСВнешнимИсточникомДанныхПоНастройкеИнтеграции(Объект.Ссылка); - пбп_ОбщегоНазначенияСервер.СообщитьПользователю(НСтр("ru = 'Подключение к базе данных успешно установлено'")); + пбп_Переадресация.СообщитьПользователю(НСтр("ru = 'Подключение к базе данных успешно установлено'")); КонецПроцедуры diff --git "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\236\321\202\320\261\320\276\321\200\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Ext/ManagerModule.bsl" "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\236\321\202\320\261\320\276\321\200\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Ext/ManagerModule.bsl" index 13c0ced7..c527e519 100644 --- "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\236\321\202\320\261\320\276\321\200\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Ext/ManagerModule.bsl" +++ "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\236\321\202\320\261\320\276\321\200\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Ext/ManagerModule.bsl" @@ -62,8 +62,8 @@ // Функция ПолучитьДанныеПоНастройкеОтбора(Настройка) Экспорт - ОбъектМетаданных = пбп_ОбщегоНазначенияСлужебный.ЗначениеРеквизитаОбъекта(Настройка, "ОбъектМетаданных"); - Отбор = пбп_ОбщегоНазначенияСлужебный.ЗначениеРеквизитаОбъекта(Настройка, "Отбор"); + ОбъектМетаданных = пбп_Переадресация.ЗначениеРеквизитаОбъекта(Настройка, "ОбъектМетаданных"); + Отбор = пбп_Переадресация.ЗначениеРеквизитаОбъекта(Настройка, "Отбор"); КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных; ТекстЗапроса = "ВЫБРАТЬ * ИЗ " + ОбъектМетаданных; @@ -88,7 +88,7 @@ ВыбранноеПоле = ДетальныеЗаписи.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных")); ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("Ссылка"); - Отбор = пбп_ОбщегоНазначенияСлужебный.ЗначениеИзСтрокиXML(Отбор); + Отбор = пбп_Переадресация.ЗначениеИзСтрокиXML(Отбор); СкопироватьЭлементыОтбора(КомпоновщикНастроек.Настройки.Отбор, Отбор); КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; @@ -96,7 +96,7 @@ МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки, , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); Исключение СообщениеОбОшибке = ОписаниеОшибки(); - пбп_ОбщегоНазначенияСервер.СообщитьПользователю(СообщениеОбОшибке); + пбп_Переадресация.СообщитьПользователю(СообщениеОбОшибке); КонецПопытки; ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; diff --git "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\236\321\202\320\261\320\276\321\200\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Ext/Form/Module.bsl" "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\236\321\202\320\261\320\276\321\200\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Ext/Form/Module.bsl" index b30282c5..c3a4a18b 100644 --- "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\236\321\202\320\261\320\276\321\200\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Ext/Form/Module.bsl" +++ "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\236\321\202\320\261\320\276\321\200\320\260\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Ext/Form/Module.bsl" @@ -8,7 +8,7 @@ Если Не ПустаяСтрока(Объект.Отбор) Тогда - ОтборКомпоновки = пбп_ОбщегоНазначенияСлужебный.ЗначениеИзСтрокиXML(Объект.Отбор); + ОтборКомпоновки = пбп_Переадресация.ЗначениеИзСтрокиXML(Объект.Отбор); Компоновщик.Настройки.Отбор.Элементы.Очистить(); Справочники.пбп_НастройкиОтбораОбъектов.СкопироватьЭлементыОтбора(Компоновщик.Настройки.Отбор, ОтборКомпоновки); @@ -19,7 +19,7 @@ &НаСервере Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) - ТекущийОбъект.Отбор = пбп_ОбщегоНазначенияСлужебный.ЗначениеВСтрокуXML(Компоновщик.Настройки.Отбор); + ТекущийОбъект.Отбор = пбп_Переадресация.ЗначениеВСтрокуXML(Компоновщик.Настройки.Отбор); КонецПроцедуры diff --git "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Ext/ManagerModule.bsl" "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Ext/ManagerModule.bsl" index 32dcec07..387cee84 100644 --- "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Ext/ManagerModule.bsl" +++ "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Ext/ManagerModule.bsl" @@ -38,7 +38,7 @@ СписокТипов.ЗагрузитьЗначения(СписокДобавленныхТипов.ВыгрузитьЗначения()); КонецЕсли; - ОписаниеТипаВсеСсылки = пбп_СтандартныеПодсистемыПовтИсп.ОписаниеТипаВсеСсылки(); + ОписаниеТипаВсеСсылки = пбп_ПереадресацияПовтИсп.ОписаниеТипаВсеСсылки(); ДоступныеТипыДанных = Новый ОписаниеТипов(ОписаниеТипаВсеСсылки, "ОписаниеТипов"); МассивТипов = ДоступныеТипыДанных.Типы(); @@ -130,11 +130,12 @@ СправочникСсылка = Неопределено; Если ВыводитьОшибки Тогда - - пбп_ОбщегоНазначенияСлужебный.СообщитьПользователю(СтрШаблон( + ШаблонСообщения = НСтр("ru='Не удалось найти предопределенный элемент справочника ""Пользовательские функции"" по имени %1'; - |en='Failed to find a predefined element of the directory ""User-defined functions"" named %1'"), - ОписаниеЭлемента.ИмяПредопределенного)); + |en='Failed to find a predefined element of the directory ""User-defined functions"" named %1'"); + ТекстСообщения = СтрШаблон(ШаблонСообщения, ОписаниеЭлемента.ИмяПредопределенного); + + пбп_Переадресация.СообщитьПользователю(ТекстСообщения); КонецЕсли; КонецПопытки; @@ -148,11 +149,12 @@ КонецЦикла; Если ВыводитьИнформацию Тогда - - пбп_ОбщегоНазначенияСлужебный.СообщитьПользователю(СтрШаблон( + ШаблонСообщения = НСтр("ru='Выполнена проверка версий предопределенных элементов справочника ""Пользовательские функции"". Обновлено %1 элементов.'; - |en='Successfully checked the versions of predefined elements of the directory ""User functions"". %1 elements updated.'"), - Строка(Ном))); + |en='Successfully checked the versions of predefined elements of the directory ""User functions"". %1 elements updated.'"); + ТекстСообщения = СтрШаблон(ШаблонСообщения, Строка(Ном)); + + пбп_Переадресация.СообщитьПользователю(ТекстСообщения); КонецЕсли; КонецПроцедуры diff --git "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Ext/ObjectModule.bsl" "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Ext/ObjectModule.bsl" index 1be42020..33f75bb2 100644 --- "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Ext/ObjectModule.bsl" +++ "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Ext/ObjectModule.bsl" @@ -64,14 +64,14 @@ ТекстСообщения = СтрШаблон(НСтр("ru='Обнаружено некорректное имя ""%1"" в таблице ""Переменные"".'; |en='Found an incorrect name ""%1"" in table ""Variables.""'"),СтрокаТаблицы.Имя); - пбп_ОбщегоНазначенияСлужебный.СообщитьПользователю( + пбп_Переадресация.СообщитьПользователю( ТекстСообщения, ЭтотОбъект, СтрШаблон("Переменные[%1].Имя", НомерСтроки),, Отказ); КонецПопытки; Иначе ТекстСообщения = СтрШаблон(НСтр("ru='Обнаружено дублирующееся имя ""%1"" в таблице ""Переменные"".'; |en='Found a duplicate name ""%1"" in the table ""Variables.""'"), СтрокаТаблицы.Имя); - пбп_ОбщегоНазначенияСлужебный.СообщитьПользователю( + пбп_Переадресация.СообщитьПользователю( ТекстСообщения, ЭтотОбъект, СтрШаблон("Переменные[%1].Имя", НомерСтроки),, Отказ); КонецЕсли; КонецЦикла; diff --git "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\321\202\321\200\321\203\320\272\321\202\321\203\321\200\321\213/Ext/Form/Module.bsl" "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\321\202\321\200\321\203\320\272\321\202\321\203\321\200\321\213/Ext/Form/Module.bsl" index bf53ff58..c803e07e 100644 --- "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\321\202\321\200\321\203\320\272\321\202\321\203\321\200\321\213/Ext/Form/Module.bsl" +++ "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\241\321\202\321\200\321\203\320\272\321\202\321\203\321\200\321\213/Ext/Form/Module.bsl" @@ -58,7 +58,7 @@ ТекДанные = Элементы.Структура.ТекущиеДанные; Если ЗначениеЗаполнено(ТекДанные.Ключ) Тогда Результат = СтрЗаменить(ТекДанные.Ключ, " ", ""); - Пока пбп_ОбщегоНазначенияСлужебныйКлиентСервер.ЭтоЧисло(Сред(Результат,1,1)) Цикл + Пока пбп_ПереадресацияКлиентСервер.ЭтоЧисло(Сред(Результат, 1, 1)) Цикл Результат = Прав(Результат, СтрДлина(Результат) - 1); КонецЦикла; пбп_ОбщегоНазначенияКлиентСервер.УдалитьНедопустимыеСимволы(Результат); diff --git "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Ext/Form/Module.bsl" "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Ext/Form/Module.bsl" index 7c26abcc..bbf7b017 100644 --- "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Ext/Form/Module.bsl" +++ "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214\321\201\320\272\320\270\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Ext/Form/Module.bsl" @@ -525,7 +525,7 @@ Попытка Результат = пбп_ОбщегоНазначенияСервер.ВыполнитьПользовательскуюФункциюСПараметрами(Объект.Ссылка, ПараметрыФункции); - пбп_ОбщегоНазначенияСлужебный.СообщитьПользователю(Строка(Результат)); + пбп_Переадресация.СообщитьПользователю(Строка(Результат)); Исключение ТекстСообщения = СтрШаблон(НСтр("ru = 'Ошибка при выполнении функции по причине: %1'; @@ -573,7 +573,7 @@ Функция ПолучитьКаталогИсходногоКодаКонфигурации() КлючНастроек = КлючНастроек("КаталогИсхКода"); - Результат = пбп_ОбщегоНазначенияСлужебный.ХранилищеОбщихНастроекЗагрузить(КлючОбъекта(), + Результат = пбп_Переадресация.ХранилищеОбщихНастроекЗагрузить(КлючОбъекта(), КлючНастроек, ""); Возврат Результат; @@ -584,7 +584,7 @@ Процедура СохранитьКаталогИсходногоКодаКонфигурации(Каталог) КлючНастроек = КлючНастроек("КаталогИсхКода"); - пбп_ОбщегоНазначенияСлужебный.ХранилищеОбщихНастроекСохранить(КлючОбъекта(), + пбп_Переадресация.ХранилищеОбщихНастроекСохранить(КлючОбъекта(), КлючНастроек, Каталог); КонецПроцедуры @@ -2044,7 +2044,7 @@ КонецЦикла; КлючНастроек = КлючНастроек("ПараметрыФункции", Истина); - пбп_ОбщегоНазначенияСлужебный.ХранилищеОбщихНастроекСохранить(КлючОбъекта(), + пбп_Переадресация.ХранилищеОбщихНастроекСохранить(КлючОбъекта(), КлючНастроек, Данные); КонецПроцедуры @@ -2053,7 +2053,7 @@ Функция ПолучитьПараметрыФункции() КлючНастроек = КлючНастроек("ПараметрыФункции", Истина); - Возврат пбп_ОбщегоНазначенияСлужебный.ХранилищеОбщихНастроекЗагрузить(КлючОбъекта(), + Возврат пбп_Переадресация.ХранилищеОбщихНастроекЗагрузить(КлючОбъекта(), КлючНастроек, Новый Соответствие); КонецФункции diff --git "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\242\320\270\320\277\320\241\320\276\320\276\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\221/Ext/ObjectModule.bsl" "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\242\320\270\320\277\320\241\320\276\320\276\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\221/Ext/ObjectModule.bsl" index 009558eb..580a5766 100644 --- "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\242\320\270\320\277\320\241\320\276\320\276\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\221/Ext/ObjectModule.bsl" +++ "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\242\320\270\320\277\320\241\320\276\320\276\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\221/Ext/ObjectModule.bsl" @@ -19,7 +19,7 @@ Возврат; КонецЕсли; - Если Не пбп_ОбщегоНазначенияСлужебныйКлиентСервер.СвойствоСтруктуры(ДополнительныеСвойства, "ЭтоНовый", Ложь) Тогда + Если Не пбп_ПереадресацияКлиентСервер.СвойствоСтруктуры(ДополнительныеСвойства, "ЭтоНовый", Ложь) Тогда пбп_ОбщегоНазначенияСервер.ОбработатьСуществующийПредопределенныйЭлемент(ЭтотОбъект); КонецЕсли; diff --git "a/src/cf/ChartsOfCharacteristicTypes/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217/Ext/ManagerModule.bsl" "b/src/cf/ChartsOfCharacteristicTypes/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217/Ext/ManagerModule.bsl" index 71d1a760..a86209d6 100644 --- "a/src/cf/ChartsOfCharacteristicTypes/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217/Ext/ManagerModule.bsl" +++ "b/src/cf/ChartsOfCharacteristicTypes/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217/Ext/ManagerModule.bsl" @@ -56,8 +56,8 @@ Значения = Новый Массив; КонецЕсли; - МассивИдентификаторов = пбп_СтроковыеФункцииСлужебныйКлиентСервер.РазложитьСтрокуВМассивПодстрок(Идентификаторы); - МассивИдентификаторов = пбп_ОбщегоНазначенияСлужебныйКлиентСервер.СвернутьМассив(МассивИдентификаторов); + МассивИдентификаторов = пбп_ПереадресацияКлиентСервер.РазложитьСтрокуВМассивПодстрок(Идентификаторы); + МассивИдентификаторов = пбп_ПереадресацияКлиентСервер.СвернутьМассив(МассивИдентификаторов); Если Не ЗначениеЗаполнено(МассивИдентификаторов) Тогда Возврат Значения; @@ -66,7 +66,7 @@ Значения = ЗначенияПредопределенныхЭлементов(МассивИдентификаторов, , Истина, ВРазрезеКлючей); Если Не ВРазрезеКлючей Тогда - Значения = пбп_ОбщегоНазначенияСлужебныйКлиентСервер.СвернутьМассив(Значения); + Значения = пбп_ПереадресацияКлиентСервер.СвернутьМассив(Значения); КонецЕсли; Возврат Значения; @@ -232,7 +232,7 @@ Приемник.Вставить(Идентификатор, Значение); Иначе Если ТипЗнч(Значение) = Тип("Массив") Тогда - пбп_ОбщегоНазначенияСлужебныйКлиентСервер.ДополнитьМассив(Приемник, Значение); + пбп_ПереадресацияКлиентСервер.ДополнитьМассив(Приемник, Значение); Иначе Приемник.Добавить(Значение); КонецЕсли; @@ -245,11 +245,11 @@ Функция ПолучитьПарольПоИдентификатору(УИД) - ДанныеХранилища = пбп_ОбщегоНазначенияСлужебный.ПрочитатьДанныеИзБезопасногоХранилища(Строка(УИД)); + ДанныеХранилища = пбп_Переадресация.ПрочитатьДанныеИзБезопасногоХранилища(Строка(УИД)); Значение = ""; Если ТипЗнч(ДанныеХранилища) = Тип("Структура") Тогда - Значение = пбп_ОбщегоНазначенияСлужебныйКлиентСервер.СвойствоСтруктуры(ДанныеХранилища, "bit_password", ""); + Значение = пбп_ПереадресацияКлиентСервер.СвойствоСтруктуры(ДанныеХранилища, "bit_password", ""); КонецЕсли; Возврат Значение; diff --git "a/src/cf/ChartsOfCharacteristicTypes/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217/Ext/ObjectModule.bsl" "b/src/cf/ChartsOfCharacteristicTypes/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217/Ext/ObjectModule.bsl" index 009558eb..580a5766 100644 --- "a/src/cf/ChartsOfCharacteristicTypes/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217/Ext/ObjectModule.bsl" +++ "b/src/cf/ChartsOfCharacteristicTypes/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217/Ext/ObjectModule.bsl" @@ -19,7 +19,7 @@ Возврат; КонецЕсли; - Если Не пбп_ОбщегоНазначенияСлужебныйКлиентСервер.СвойствоСтруктуры(ДополнительныеСвойства, "ЭтоНовый", Ложь) Тогда + Если Не пбп_ПереадресацияКлиентСервер.СвойствоСтруктуры(ДополнительныеСвойства, "ЭтоНовый", Ложь) Тогда пбп_ОбщегоНазначенияСервер.ОбработатьСуществующийПредопределенныйЭлемент(ЭтотОбъект); КонецЕсли; diff --git "a/src/cf/ChartsOfCharacteristicTypes/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Ext/Form/Module.bsl" "b/src/cf/ChartsOfCharacteristicTypes/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Ext/Form/Module.bsl" index ab8cc4cc..9c668fba 100644 --- "a/src/cf/ChartsOfCharacteristicTypes/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Ext/Form/Module.bsl" +++ "b/src/cf/ChartsOfCharacteristicTypes/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Ext/Form/Module.bsl" @@ -36,11 +36,11 @@ Если Объект.Пароль Тогда ДанныеХранилища = Новый Структура("bit_password", Объект.Значение); - пбп_ОбщегоНазначенияСлужебный.ЗаписатьДанныеВБезопасноеХранилище( + пбп_Переадресация.ЗаписатьДанныеВБезопасноеХранилище( Строка(ТекущийОбъект.Ссылка.УникальныйИдентификатор()), ДанныеХранилища); ТекущийОбъект.Значение = ""; Иначе - пбп_ОбщегоНазначенияСлужебный.ЗаписатьДанныеВБезопасноеХранилище( + пбп_Переадресация.ЗаписатьДанныеВБезопасноеХранилище( Строка(ТекущийОбъект.Ссылка.УникальныйИдентификатор()), Неопределено); КонецЕсли; @@ -72,7 +72,7 @@ Объект.Пароль = Ложь; - пбп_ОбщегоНазначенияСлужебныйКлиент.СообщитьПользователю( + пбп_ПереадресацияКлиент.СообщитьПользователю( НСтр("ru='Пароль может использовать только тип ""Строка"".'; | en='The password can only use the type ""String"".'"), Объект.Ссылка, "ТипЗначения", "Объект.ТипЗначения"); @@ -83,7 +83,7 @@ Объект.Пароль = Ложь; - пбп_ОбщегоНазначенияСлужебныйКлиент.СообщитьПользователю( + пбп_ПереадресацияКлиент.СообщитьПользователю( НСтр("ru='Использование пароля недоступен для списка значений.'; | en='Password usage is not available for the list of values.'"), Объект.Ссылка, "СписокЗначений", "Объект.СписокЗначений"); @@ -171,19 +171,19 @@ &НаСервере Процедура УправлениеФормой() - пбп_ОбщегоНазначенияСлужебныйКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, "НадписьНаличиеПароля", "Видимость", Объект.Пароль); - пбп_ОбщегоНазначенияСлужебныйКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, "Значение", "Видимость", Не Объект.СписокЗначений); - пбп_ОбщегоНазначенияСлужебныйКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, "Значение", "КнопкаВыбора", Не Объект.Пароль); - пбп_ОбщегоНазначенияСлужебныйКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, "Значение", "РежимПароля", Объект.Пароль); - пбп_ОбщегоНазначенияСлужебныйКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, "Значение", "КнопкаОткрытия", Не Объект.Пароль); - пбп_ОбщегоНазначенияСлужебныйКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, "ЗначенияЭлементов", "Видимость", Объект.СписокЗначений); - пбп_ОбщегоНазначенияСлужебныйКлиентСервер.УстановитьСвойствоЭлементаФормы( + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, "СписокЗначений", "ТолькоПросмотр", Объект.Пароль); УстановитьНаличиеПароля(); @@ -200,14 +200,14 @@ Если ДанныеХранилища = Неопределено Тогда УстановитьПривилегированныйРежим(Истина); - ДанныеХранилища = пбп_ОбщегоНазначенияСлужебный.ПрочитатьДанныеИзБезопасногоХранилища( + ДанныеХранилища = пбп_Переадресация.ПрочитатьДанныеИзБезопасногоХранилища( Строка(Объект.Ссылка.УникальныйИдентификатор())); УстановитьПривилегированныйРежим(Ложь); КонецЕсли; Если ТипЗнч(ДанныеХранилища) = Тип("Структура") - И НЕ ПустаяСтрока(пбп_ОбщегоНазначенияСлужебныйКлиентСервер.СвойствоСтруктуры(ДанныеХранилища, "bit_password", "")) Тогда + И НЕ ПустаяСтрока(пбп_ПереадресацияКлиентСервер.СвойствоСтруктуры(ДанныеХранилища, "bit_password", "")) Тогда Элементы.НадписьНаличиеПароля.Заголовок = НСтр("ru = 'Пароль установлен'"); Иначе @@ -232,12 +232,12 @@ &НаКлиенте Процедура ВводСтрокиЗавершение(Результат, ДополнительныеПараметры) Экспорт - Если пбп_ОбщегоНазначенияСлужебныйКлиентСервер.СвойствоСтруктуры(ДополнительныеПараметры, "ТолькоПросмотр", Ложь) Тогда + Если пбп_ПереадресацияКлиентСервер.СвойствоСтруктуры(ДополнительныеПараметры, "ТолькоПросмотр", Ложь) Тогда Возврат; КонецЕсли; Если Результат <> Неопределено Тогда - Если пбп_ОбщегоНазначенияСлужебныйКлиентСервер.СвойствоСтруктуры(ДополнительныеПараметры, "РеквизитШапки", Ложь) Тогда + Если пбп_ПереадресацияКлиентСервер.СвойствоСтруктуры(ДополнительныеПараметры, "РеквизитШапки", Ложь) Тогда Объект[ДополнительныеПараметры.Реквизит] = Результат; Иначе ДополнительныеПараметры.Реквизит.Значение = Результат; diff --git "a/src/cf/CommonForms/\320\277\320\261\320\277_\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\237\320\276\320\273\321\217/Ext/Form/Module.bsl" "b/src/cf/CommonForms/\320\277\320\261\320\277_\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\237\320\276\320\273\321\217/Ext/Form/Module.bsl" index af643a15..1e7e5338 100644 --- "a/src/cf/CommonForms/\320\277\320\261\320\277_\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\237\320\276\320\273\321\217/Ext/Form/Module.bsl" +++ "b/src/cf/CommonForms/\320\277\320\261\320\277_\320\244\320\276\321\200\320\274\320\260\320\222\321\213\320\261\320\276\321\200\320\260\320\237\320\276\320\273\321\217/Ext/Form/Module.bsl" @@ -41,7 +41,7 @@ ОписаниеДокументы = Документы.ТипВсеСсылки(); Если Не Поля.ПолучитьЭлементы().Количество() Тогда - пбп_ОбщегоНазначенияСлужебный.СообщитьПользователю(НСтр("ru='Нет полей для выбора.';en='No fields to select.'"),,,, Отказ); + пбп_Переадресация.СообщитьПользователю(НСтр("ru='Нет полей для выбора.';en='No fields to select.'"),,,, Отказ); КонецЕсли; КонецПроцедуры @@ -78,7 +78,7 @@ &НаКлиенте Процедура РазвернутьСтроки(Команда) - пбп_СтандартныеПодсистемыСлужебныйКлиент.РазвернутьУзлыДерева(ЭтотОбъект, "Поля"); + пбп_ПереадресацияКлиент.РазвернутьУзлыДерева(ЭтотОбъект, "Поля"); КонецПроцедуры @@ -104,7 +104,7 @@ ВыбратьПолеИЗакрыть(ВыбраннаяСтрока.Имя); КонецЕсли; - пбп_ОбщегоНазначенияСлужебныйКлиент.СообщитьПользователю(НСтр("ru = 'Выбрано недоступное поле!'")); + пбп_ПереадресацияКлиент.СообщитьПользователю(НСтр("ru = 'Выбрано недоступное поле!'")); КонецПроцедуры diff --git "a/src/cf/CommonForms/\320\277\320\261\320\277_\320\244\320\276\321\200\320\274\320\260\320\240\320\260\320\267\321\200\320\265\321\210\320\265\320\275\320\270\321\217\320\232\320\276\320\275\321\204\320\273\320\270\320\272\321\202\320\276\320\262\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\321\205\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262/Ext/Form/Module.bsl" "b/src/cf/CommonForms/\320\277\320\261\320\277_\320\244\320\276\321\200\320\274\320\260\320\240\320\260\320\267\321\200\320\265\321\210\320\265\320\275\320\270\321\217\320\232\320\276\320\275\321\204\320\273\320\270\320\272\321\202\320\276\320\262\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\321\205\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262/Ext/Form/Module.bsl" index 3ba335d0..eaa9afd7 100644 --- "a/src/cf/CommonForms/\320\277\320\261\320\277_\320\244\320\276\321\200\320\274\320\260\320\240\320\260\320\267\321\200\320\265\321\210\320\265\320\275\320\270\321\217\320\232\320\276\320\275\321\204\320\273\320\270\320\272\321\202\320\276\320\262\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\321\205\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262/Ext/Form/Module.bsl" +++ "b/src/cf/CommonForms/\320\277\320\261\320\277_\320\244\320\276\321\200\320\274\320\260\320\240\320\260\320\267\321\200\320\265\321\210\320\265\320\275\320\270\321\217\320\232\320\276\320\275\321\204\320\273\320\270\320\272\321\202\320\276\320\262\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\321\205\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262/Ext/Form/Module.bsl" @@ -122,7 +122,7 @@ Возврат; КонецЕсли; - МенеджерОбъекта = пбп_ОбщегоНазначенияСлужебный.МенеджерОбъектаПоПолномуИмени(ИмяФормыВладельца); + МенеджерОбъекта = пбп_Переадресация.МенеджерОбъектаПоПолномуИмени(ИмяФормыВладельца); СписокПредопределенных = Таблица.ВыгрузитьКолонку("Служебный_ПредопределенныйЭлемент"); @@ -205,7 +205,7 @@ Возврат; КонецЕсли; - Менеджер = пбп_ОбщегоНазначенияСлужебный.МенеджерОбъектаПоПолномуИмени(ИмяФормыВладельца); + Менеджер = пбп_Переадресация.МенеджерОбъектаПоПолномуИмени(ИмяФормыВладельца); ДопПараметры = пбп_ПредопределенныеЗначения.ДопПараметрыОбработкиПредопределенныхЭлементов( Таблица, Менеджер); пбп_ПредопределенныеЗначения.СоздатьОбновитьПредопределенныеЗначения(Таблица, ДопПараметры); diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\321\213\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\260\320\241\320\276\320\261\321\213\321\202\320\270\320\271/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\321\213\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\260\320\241\320\276\320\261\321\213\321\202\320\270\320\271/Ext/Module.bsl" index 136ccdce..d092b580 100644 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\321\213\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\260\320\241\320\276\320\261\321\213\321\202\320\270\320\271/Ext/Module.bsl" +++ "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\321\213\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\260\320\241\320\276\320\261\321\213\321\202\320\270\320\271/Ext/Module.bsl" @@ -44,7 +44,7 @@ ПараметрыМетода.Добавить(Источник); ПараметрыМетода.Добавить(ОбъектКопирования); - пбп_ОбщегоНазначенияСервер.ВыполнитьМетодКонфигурации(ИмяМетода, ПараметрыМетода); + пбп_Переадресация.ВыполнитьМетодКонфигурации(ИмяМетода, ПараметрыМетода); Источник = ПараметрыМетода[0]; @@ -84,7 +84,7 @@ Источник = ПараметрыМетода[0]; СтандартнаяОбработка = ПараметрыМетода[3]; - пбп_ОбщегоНазначенияСервер.ВыполнитьМетодКонфигурации(ИмяМетода, ПараметрыМетода); + пбп_Переадресация.ВыполнитьМетодКонфигурации(ИмяМетода, ПараметрыМетода); Исключение ВызватьИсключение СтрШаблон("%1%2Имя метода: %3", ОписаниеОшибки(), Символы.ПС, ИмяМетода); @@ -118,7 +118,7 @@ ПараметрыМетода.Добавить(РежимЗаписи); ПараметрыМетода.Добавить(РежимПроведения); - пбп_ОбщегоНазначенияСервер.ВыполнитьМетодКонфигурации(ИмяМетода, ПараметрыМетода); + пбп_Переадресация.ВыполнитьМетодКонфигурации(ИмяМетода, ПараметрыМетода); Источник = ПараметрыМетода[0]; Если ПараметрыМетода[1] Тогда @@ -154,7 +154,7 @@ ПараметрыМетода.Добавить(Источник); ПараметрыМетода.Добавить(Отказ); - пбп_ОбщегоНазначенияСервер.ВыполнитьМетодКонфигурации(ИмяМетода, ПараметрыМетода); + пбп_Переадресация.ВыполнитьМетодКонфигурации(ИмяМетода, ПараметрыМетода); Если ПараметрыМетода[1] Тогда Отказ = Истина; @@ -192,7 +192,7 @@ ПараметрыМетода.Добавить(Отказ); ПараметрыМетода.Добавить(РежимПроведения); - пбп_ОбщегоНазначенияСервер.ВыполнитьМетодКонфигурации(ИмяМетода, ПараметрыМетода); + пбп_Переадресация.ВыполнитьМетодКонфигурации(ИмяМетода, ПараметрыМетода); Если ПараметрыМетода[1] Тогда Отказ = Истина; @@ -230,7 +230,7 @@ ПараметрыМетода.Добавить(Отказ); ПараметрыМетода.Добавить(ПроверяемыеРеквизиты); - пбп_ОбщегоНазначенияСервер.ВыполнитьМетодКонфигурации(ИмяМетода, ПараметрыМетода); + пбп_Переадресация.ВыполнитьМетодКонфигурации(ИмяМетода, ПараметрыМетода); Если ПараметрыМетода[1] Тогда Отказ = Истина; diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\226\321\203\321\200\320\275\320\260\320\273\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\226\321\203\321\200\320\275\320\260\320\273\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270/Ext/Module.bsl" deleted file mode 100644 index a2a65120..00000000 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\226\321\203\321\200\320\275\320\260\320\273\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270/Ext/Module.bsl" +++ /dev/null @@ -1,63 +0,0 @@ -// Библиотека проектных подсистем для упрощения разработки архитектуры на 1С: Предприятие 8, -// включая доработку типовых конфигураций. -// -// Copyright First BIT company -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// URL: https://github.com/firstBitSportivnaya/PSSL/ -// - -#Область ПрограммныйИнтерфейс - -#КонецОбласти - -#Область СлужебныйПрограммныйИнтерфейс - -#Область МетодыАналогиБСП - -// Аналог метода БСП. Записывает сообщение в журнал регистрации. -// -// Параметры: -// ИмяСобытия - Строка - имя события для журнала регистрации. -// Уровень - УровеньЖурналаРегистрации - уровни важности событий журнала регистрации. -// ОбъектМетаданных - ОбъектМетаданных - объект метаданных, к которому относится событие. -// Данные - ЛюбаяСсылка -// - Число -// - Строка -// - Дата -// - Булево -// - Неопределено -// - Тип - данные, с которыми связано событие. -// Рекомендуется указывать ссылки на объекты данных (элементы справочников, документы, к которым -// относится событие). -// Комментарий - Строка - комментарий для события журнала. -// -Процедура ДобавитьСообщениеДляЖурналаРегистрации(Знач ИмяСобытия, Знач Уровень, - Знач ОбъектМетаданных = Неопределено, Знач Данные = Неопределено, Знач Комментарий = "") Экспорт - - Если ПустаяСтрока(ИмяСобытия) Тогда - ИмяСобытия = "Событие"; // не локализуется, чтобы не допускать остановки запуска в частично переведенной конфигурации - КонецЕсли; - - ЗаписьЖурналаРегистрации(ИмяСобытия, Уровень, ОбъектМетаданных, Данные, Комментарий, РежимТранзакцииЗаписиЖурналаРегистрации.Независимая); - -КонецПроцедуры - -#КонецОбласти - -#КонецОбласти - -#Область СлужебныеПроцедурыИФункции - -#КонецОбласти diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\226\321\203\321\200\320\275\320\260\320\273\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.xml" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\226\321\203\321\200\320\275\320\260\320\273\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.xml" deleted file mode 100644 index eb0fe239..00000000 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\226\321\203\321\200\320\275\320\260\320\273\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.xml" +++ /dev/null @@ -1,23 +0,0 @@ - - - - - пбп_ЖурналРегистрацииСлужебный - - - ru - Журнал регистрации служебный - - - - false - false - true - true - false - false - false - DontUse - - - \ No newline at end of file diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\226\321\203\321\200\320\275\320\260\320\273\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\226\321\203\321\200\320\275\320\260\320\273\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Ext/Module.bsl" deleted file mode 100644 index 0f7e75e0..00000000 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\226\321\203\321\200\320\275\320\260\320\273\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Ext/Module.bsl" +++ /dev/null @@ -1,44 +0,0 @@ -// Библиотека проектных подсистем для упрощения разработки архитектуры на 1С: Предприятие 8, -// включая доработку типовых конфигураций. -// -// Copyright First BIT company -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// URL: https://github.com/firstBitSportivnaya/PSSL/ -// - -#Область СлужебныйПрограммныйИнтерфейс - -#Область ПереадресацияМетодов - -// См. пбп_ЖурналРегистрации.ДобавитьСообщениеДляЖурналаРегистрации. -Процедура ДобавитьСообщениеДляЖурналаРегистрации(Знач ИмяСобытия, Знач Уровень, - Знач ОбъектМетаданных = Неопределено, Знач Данные = Неопределено, Знач Комментарий = "") Экспорт - - Модуль = ПолучитьМодуль(); - Модуль.ДобавитьСообщениеДляЖурналаРегистрации(ИмяСобытия, Уровень, ОбъектМетаданных, Данные, Комментарий); - -КонецПроцедуры - -#КонецОбласти - -#КонецОбласти - -#Область СлужебныеПроцедурыИФункции - -Функция ПолучитьМодуль() - Возврат пбп_ОбщегоНазначенияПовтИсп.ПереадресацияОбщегоМодуля("ЖурналРегистрации", "пбп_ЖурналРегистрации"); -КонецФункции - -#КонецОбласти \ No newline at end of file diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260\320\244\320\260\320\271\320\273\320\260\320\247\320\265\321\200\320\265\320\267\320\242\320\260\320\261\320\273\320\270\321\207\320\275\321\213\320\271\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\232\320\273\320\270\320\265\320\275\321\202/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260\320\244\320\260\320\271\320\273\320\260\320\247\320\265\321\200\320\265\320\267\320\242\320\260\320\261\320\273\320\270\321\207\320\275\321\213\320\271\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\232\320\273\320\270\320\265\320\275\321\202/Ext/Module.bsl" index 9590ddb9..c867a66f 100644 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260\320\244\320\260\320\271\320\273\320\260\320\247\320\265\321\200\320\265\320\267\320\242\320\260\320\261\320\273\320\270\321\207\320\275\321\213\320\271\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\232\320\273\320\270\320\265\320\275\321\202/Ext/Module.bsl" +++ "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260\320\244\320\260\320\271\320\273\320\260\320\247\320\265\321\200\320\265\320\267\320\242\320\260\320\261\320\273\320\270\321\207\320\275\321\213\320\271\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\232\320\273\320\270\320\265\320\275\321\202/Ext/Module.bsl" @@ -65,7 +65,7 @@ пбп_ЗагрузкаФайлаЧерезТабличныйДокументВызовСервера.ФормированиеТаблицы( ОписаниеФайла.Адрес, ОписаниеФайла.СсылкаНаФайл.Расширение, ПараметрыЧтения); Иначе - пбп_ОбщегоНазначенияСлужебныйКлиент.СообщитьПользователю(НСтр("ru = 'Помещение файла отменено'")); + пбп_ПереадресацияКлиент.СообщитьПользователю(НСтр("ru = 'Помещение файла отменено'")); АдресПомещения = Неопределено; КонецЕсли; diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260\320\244\320\260\320\271\320\273\320\260\320\247\320\265\321\200\320\265\320\267\320\242\320\260\320\261\320\273\320\270\321\207\320\275\321\213\320\271\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260\320\244\320\260\320\271\320\273\320\260\320\247\320\265\321\200\320\265\320\267\320\242\320\260\320\261\320\273\320\270\321\207\320\275\321\213\320\271\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" index 84a1ae90..70653df5 100644 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260\320\244\320\260\320\271\320\273\320\260\320\247\320\265\321\200\320\265\320\267\320\242\320\260\320\261\320\273\320\270\321\207\320\275\321\213\320\271\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" +++ "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\227\320\260\320\263\321\200\321\203\320\267\320\272\320\260\320\244\320\260\320\271\320\273\320\260\320\247\320\265\321\200\320\265\320\267\320\242\320\260\320\261\320\273\320\270\321\207\320\275\321\213\320\271\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" @@ -29,17 +29,17 @@ СвойстваКолонок = Новый ТаблицаЗначений; ДлинаСтроки = 150; - СвойстваКолонок.Колонки.Добавить("ИмяКолонки" , пбп_ОбщегоНазначенияСервер.ОписаниеТипаСтрока(ДлинаСтроки)); - СвойстваКолонок.Колонки.Добавить("ИмяВТабДоке" , пбп_ОбщегоНазначенияСервер.ОписаниеТипаСтрока(ДлинаСтроки)); - СвойстваКолонок.Колонки.Добавить("Группа" , пбп_ОбщегоНазначенияСервер.ОписаниеТипаСтрока(ДлинаСтроки)); - СвойстваКолонок.Колонки.Добавить("ТипЗначения" , пбп_ОбщегоНазначенияСервер.ОписаниеТипаСтрока(ДлинаСтроки)); - СвойстваКолонок.Колонки.Добавить("ПолеПоиска1" , пбп_ОбщегоНазначенияСервер.ОписаниеТипаСтрока(ДлинаСтроки)); - СвойстваКолонок.Колонки.Добавить("ПолеПоиска2" , пбп_ОбщегоНазначенияСервер.ОписаниеТипаСтрока(ДлинаСтроки)); - СвойстваКолонок.Колонки.Добавить("ПолеПоиска3" , пбп_ОбщегоНазначенияСервер.ОписаниеТипаСтрока(ДлинаСтроки)); + СвойстваКолонок.Колонки.Добавить("ИмяКолонки" , пбп_Переадресация.ОписаниеТипаСтрока(ДлинаСтроки)); + СвойстваКолонок.Колонки.Добавить("ИмяВТабДоке" , пбп_Переадресация.ОписаниеТипаСтрока(ДлинаСтроки)); + СвойстваКолонок.Колонки.Добавить("Группа" , пбп_Переадресация.ОписаниеТипаСтрока(ДлинаСтроки)); + СвойстваКолонок.Колонки.Добавить("ТипЗначения" , пбп_Переадресация.ОписаниеТипаСтрока(ДлинаСтроки)); + СвойстваКолонок.Колонки.Добавить("ПолеПоиска1" , пбп_Переадресация.ОписаниеТипаСтрока(ДлинаСтроки)); + СвойстваКолонок.Колонки.Добавить("ПолеПоиска2" , пбп_Переадресация.ОписаниеТипаСтрока(ДлинаСтроки)); + СвойстваКолонок.Колонки.Добавить("ПолеПоиска3" , пбп_Переадресация.ОписаниеТипаСтрока(ДлинаСтроки)); // BSLLS:MagicNumber-off - СвойстваКолонок.Колонки.Добавить("ОператорУсловия" , пбп_ОбщегоНазначенияСервер.ОписаниеТипаСтрока(4)); - СвойстваКолонок.Колонки.Добавить("ФункцияПреобразования", пбп_ОбщегоНазначенияСервер.ОписаниеТипаСтрока(300)); - СвойстваКолонок.Колонки.Добавить("ФорматДаты" , пбп_ОбщегоНазначенияСервер.ОписаниеТипаСтрока(300)); + СвойстваКолонок.Колонки.Добавить("ОператорУсловия" , пбп_Переадресация.ОписаниеТипаСтрока(4)); + СвойстваКолонок.Колонки.Добавить("ФункцияПреобразования", пбп_Переадресация.ОписаниеТипаСтрока(300)); + СвойстваКолонок.Колонки.Добавить("ФорматДаты" , пбп_Переадресация.ОписаниеТипаСтрока(300)); // BSLLS:MagicNumber-on Возврат СвойстваКолонок; @@ -58,8 +58,8 @@ ТаблицаСвойств = ИнициализироватьТаблицуСоСвойствамиКолонок(); // BSLLS:MagicNumber-off - ОписаниеЧислаНачала = пбп_ОбщегоНазначенияСервер.ОписаниеТипаЧисло(5, 0, ДопустимыйЗнак.Неотрицательный); - ОписаниеЧислаДлина = пбп_ОбщегоНазначенияСервер.ОписаниеТипаЧисло(5, 0, ДопустимыйЗнак.Неотрицательный); + ОписаниеЧислаНачала = пбп_Переадресация.ОписаниеТипаЧисло(5, 0, ДопустимыйЗнак.Неотрицательный); + ОписаниеЧислаДлина = пбп_Переадресация.ОписаниеТипаЧисло(5, 0, ДопустимыйЗнак.Неотрицательный); // BSLLS:MagicNumber-on ТаблицаСвойств.Колонки.Добавить("Начало", ОписаниеЧислаНачала); ТаблицаСвойств.Колонки.Добавить("Длина", ОписаниеЧислаДлина); @@ -178,9 +178,11 @@ // Функция ПолучитьПромежуточнуюТаблицуИзCSVФайла(ПутьКФайлу, СтруктураМакета, Кодировка = "UTF8", Разделитель = "") Экспорт + ДлинаСтрокиКолонки = 300; + СыраяТаблица = Новый ТаблицаЗначений; Для Каждого КолонкаТаблицы Из СтруктураМакета Цикл - СыраяТаблица.Колонки.Добавить(КолонкаТаблицы.ИмяКолонки, пбп_ОбщегоНазначенияСервер.ОписаниеТипаСтрока(300)); + СыраяТаблица.Колонки.Добавить(КолонкаТаблицы.ИмяКолонки, пбп_Переадресация.ОписаниеТипаСтрока(ДлинаСтрокиКолонки)); КонецЦикла; ЗагружаемыйФайл = Новый ЧтениеТекста(ПутьКФайлу, Кодировка); @@ -213,7 +215,7 @@ ТекущаяСтрокаБезОкончания = ТекущаяСтрока; КонецЕсли; - МассивКолонок = пбп_СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок( + МассивКолонок = пбп_ПереадресацияКлиентСервер.РазложитьСтрокуВМассивПодстрок( ТекущаяСтрокаБезОкончания, Разделитель, Ложь, Истина); // Количество разделителей должно быть равно количеству строк колонок макета, иначе строка не будет загружена КоличествоКолонок = МассивКолонок.Количество(); @@ -463,12 +465,12 @@ Попытка Параметры = Новый Массив; Параметры.Добавить(СтрокаТаблицы[КлючИЗначение.Ключ]); - СтрокаТаблицы[КлючИЗначение.Ключ] = пбп_ОбщегоНазначенияСервер.ВызватьФункциюКонфигурации( + СтрокаТаблицы[КлючИЗначение.Ключ] = пбп_Переадресация.ВызватьФункциюКонфигурации( КлючИЗначение.Значение, Параметры); Исключение СообщениеОбОшибке = СтрШаблон(КомментарийОшибки, КлючИЗначение.Значение, КлючИЗначение.Ключ, ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); - пбп_ЖурналРегистрацииСлужебный.ДобавитьСообщениеДляЖурналаРегистрации(ИмяСобытия, + пбп_Переадресация.ДобавитьСообщениеДляЖурналаРегистрации(ИмяСобытия, УровеньЖурналаРегистрации.Ошибка, , , НСтр(СообщениеОбОшибке)); КонецПопытки; КонецЦикла; @@ -835,7 +837,7 @@ ЭтоУниверсальноеВремя = Ложь; Если ЕстьВремя Тогда - МассивРазделителей = пбп_СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок( + МассивРазделителей = пбп_ПереадресацияКлиентСервер.РазложитьСтрокуВМассивПодстрок( ЗначениеКолонки, ":", Истина, Истина); Если СтрНайти(МассивРазделителей[1], "AM") > 0 Или СтрНайти(МассивРазделителей[1], "PM") > 0 Тогда @@ -844,13 +846,13 @@ РазрядВремени = "1"; КонецЕсли; - МассивРазделителейДатаВремя = пбп_СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок( + МассивРазделителейДатаВремя = пбп_ПереадресацияКлиентСервер.РазложитьСтрокуВМассивПодстрок( МассивРазделителей[0], " ", Истина, Истина); КоличествоРазделителей = 2; Если МассивРазделителейДатаВремя.Количество() = КоличествоРазделителей Тогда ТолькоДата = МассивРазделителейДатаВремя[0]; ИначеЕсли МассивРазделителейДатаВремя.Количество() = 0 Тогда - МассивРазделителейДатаВремя = пбп_СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок( + МассивРазделителейДатаВремя = пбп_ПереадресацияКлиентСервер.РазложитьСтрокуВМассивПодстрок( МассивРазделителей[0], "T", Истина, Истина); Если МассивРазделителейДатаВремя.Количество() = КоличествоРазделителей Тогда ТолькоДата = МассивРазделителейДатаВремя[0]; @@ -890,7 +892,7 @@ Функция ПолучитьРазрядФорматаДатыИзСтроки(ЗначениеКолонки, Разделитель) - МассивРазделителей = пбп_СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок( + МассивРазделителей = пбп_ПереадресацияКлиентСервер.РазложитьСтрокуВМассивПодстрок( ЗначениеКолонки, Разделитель, Истина, Истина); КоличествоПервыхСимволов = 3; МаксКоличествоДнейВМесяце = 31; @@ -938,17 +940,17 @@ Если НомерФормата = "0_0_0" Тогда ПреобразованнаяДата = XMLЗначение(Тип("Дата"), ВхЗначение); Иначе - РазрядыФормата = пбп_СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(НомерФормата, "_"); + РазрядыФормата = пбп_ПереадресацияКлиентСервер.РазложитьСтрокуВМассивПодстрок(НомерФормата, "_"); СтрокаВремя = ""; Если РазрядыФормата[2] = "0" Тогда СтрокаВремя = "00:00:00"; ТолькоДата = ВхЗначение; Иначе - МассивРазделителей = пбп_СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок( + МассивРазделителей = пбп_ПереадресацияКлиентСервер.РазложитьСтрокуВМассивПодстрок( ВхЗначение, ":", Истина, Истина); - МассивРазделителейДатаВремя = пбп_СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок( + МассивРазделителейДатаВремя = пбп_ПереадресацияКлиентСервер.РазложитьСтрокуВМассивПодстрок( МассивРазделителей[0], " ", Истина, Истина); Если РазрядыФормата[0] = "4" Тогда ТолькоДата = ПолучитьТолькоДатуЕслиРазделительПробел(МассивРазделителейДатаВремя); @@ -986,7 +988,7 @@ РазделительРазрядов = " "; КонецЕсли; - МассивГодМесяцДата = пбп_СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок( + МассивГодМесяцДата = пбп_ПереадресацияКлиентСервер.РазложитьСтрокуВМассивПодстрок( ТолькоДата, РазделительРазрядов, Истина, Истина); Если РазрядыФормата[1] = "0" Тогда @@ -1019,7 +1021,7 @@ КонецЕсли; Если ЗначениеЗаполнено(МинутыСекунды) Тогда - МассивСекМин = пбп_СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(МинутыСекунды, ":", Истина, Истина); + МассивСекМин = пбп_ПереадресацияКлиентСервер.РазложитьСтрокуВМассивПодстрок(МинутыСекунды, ":", Истина, Истина); МинутыЧисло = Число(МассивСекМин[0]); СекундыЧисло = Число(МассивСекМин[1]); @@ -1043,7 +1045,7 @@ СтроковоеЗначение = СокрЛП(ВхЗначение); СтроковоеЗначение = СтрЗаменить(ВхЗначение, ",", "."); СтроковоеЗначение = СтрЗаменить(ВхЗначение, Символы.НПП, ""); - Возврат пбп_СтроковыеФункцииКлиентСервер.СтрокаВЧисло(СтроковоеЗначение); + Возврат пбп_ПереадресацияКлиентСервер.СтрокаВЧисло(СтроковоеЗначение); КонецФункции diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270FTPSFTP/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270FTPSFTP/Ext/Module.bsl" index 99d33ea4..5e987cb6 100644 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270FTPSFTP/Ext/Module.bsl" +++ "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270FTPSFTP/Ext/Module.bsl" @@ -85,7 +85,7 @@ // Функция ВыполнитьПодключениеКFTPСерверуДляИнтеграционногоПотока(ИнтеграционныйПоток) Экспорт - СтруктураРеквизитов = пбп_ОбщегоНазначенияСервер.ЗначенияРеквизитовОбъекта( + СтруктураРеквизитов = пбп_Переадресация.ЗначенияРеквизитовОбъекта( ИнтеграционныйПоток, "НастройкаИнтеграции, ТочкаВхода"); ПараметрыСоединения = ПолучитьПараметрыПодключенияFTPSFTP(СтруктураРеквизитов.НастройкаИнтеграции); @@ -168,7 +168,7 @@ СообщениеОбОшибке = НСтр(ПолноеОписаниеОшибки); КонецЕсли; - пбп_ФайловаяСистемаПереадресация.УдалитьВременныйФайл(НовыйФайл); + пбп_Переадресация.УдалитьВременныйФайл(НовыйФайл); Исключение СообщениеОбОшибке = пбп_ИнтеграцииСервер.ПолучитьПодробноеПредставлениеОшибкиИсключения( ЗаголовокОшибки, ИнформацияОбОшибке()); @@ -475,7 +475,7 @@ Функция ЗаполнитьПараметрыПодключенияКSFTPСерверу(ИнтеграционныйПоток, ЗаполнитьКаталог = Истина, ИсходящееСообщение = Истина) - СтруктураРеквизитов = пбп_ОбщегоНазначенияСервер.ЗначенияРеквизитовОбъекта( + СтруктураРеквизитов = пбп_Переадресация.ЗначенияРеквизитовОбъекта( ИнтеграционныйПоток, "НастройкаИнтеграции, ТочкаВхода"); ПараметрыСоединения = ПолучитьПараметрыПодключенияFTPSFTP(СтруктураРеквизитов.НастройкаИнтеграции); @@ -524,7 +524,7 @@ ПутьФайлаНаСервере = СтрШаблон("%1%2.%3", ПараметрыСоединения.КаталогИсходящие, ПараметрыСообщения.ИмяФайла, ПараметрыСообщения.Расширение); - ЭтоLinuxСервер = пбп_ОбщегоНазначенияСлужебный.ЭтоLinuxСервер(); + ЭтоLinuxСервер = пбп_Переадресация.ЭтоLinuxСервер(); ТекстСкрипта = ПолучитьТекстСкриптаОтправкиПоТипуОС(ЭтоLinuxСервер, ПараметрыСоединения, ПараметрыСообщения.Путь, ПутьФайлаНаСервере); @@ -564,7 +564,7 @@ ПутьКФайлуСодержимого = ПолучитьИмяВременногоФайла("txt"); // BSLLS:MissingTemporaryFileDeletion-on - ЭтоLinuxСервер = пбп_ОбщегоНазначенияСлужебный.ЭтоLinuxСервер(); + ЭтоLinuxСервер = пбп_Переадресация.ЭтоLinuxСервер(); ТекстСкрипта = ПолучитьТекстСкриптаСодержимогоКаталоговПоТипуОС( ЭтоLinuxСервер, ПараметрыСоединения, ПутьКФайлуСодержимого); @@ -607,24 +607,24 @@ ИтоговаяКоманда = """" + ИмяФайлаСкрипта + """"; КонецЕсли; - ПараметрыЗапускаКоманды = пбп_ФайловаяСистемаПереадресация.ПараметрыЗапускаПрограммы(); + ПараметрыЗапускаКоманды = пбп_Переадресация.ПараметрыЗапускаПрограммы(); ПараметрыЗапускаКоманды.ДождатьсяЗавершения = Истина; Если СтруктураИстории <> Неопределено Тогда НачалоВызова = ТекущаяДатаСеанса(); КонецЕсли; // BSLLS:ExternalAppStarting-off - Результат = пбп_ФайловаяСистемаПереадресация.ЗапуститьПрограмму(ИтоговаяКоманда, ПараметрыЗапускаКоманды); + Результат = пбп_Переадресация.ЗапуститьПрограмму(ИтоговаяКоманда, ПараметрыЗапускаКоманды); // BSLLS:ExternalAppStarting-on Если СтруктураИстории <> Неопределено Тогда СтруктураИстории.ДлительностьВызова = ТекущаяДатаСеанса() - НачалоВызова; СтруктураИстории.ПротоколОбмена = ПолучитьТекстСкриптаБезДанныхАутентификации(ПараметрыСоединения, ТекстСкрипта); КонецЕсли; - пбп_ФайловаяСистемаПереадресация.УдалитьВременныйФайл(ИмяФайлаСкрипта); + пбп_Переадресация.УдалитьВременныйФайл(ИмяФайлаСкрипта); Если Не ПустаяСтрока(ИмяСлужебногоФайла) Тогда - пбп_ФайловаяСистемаПереадресация.УдалитьВременныйФайл(ИмяСлужебногоФайла); + пбп_Переадресация.УдалитьВременныйФайл(ИмяСлужебногоФайла); КонецЕсли; УдалитьВременныеФайлыСкриптов(ИмяФайлаСкрипта, ИмяСлужебногоФайла); @@ -639,7 +639,7 @@ ТаблицаФайлов = ПолучитьТаблицуФайловСодержимогоSFTPСервера(ПутьКФайлуСодержимого); - пбп_ФайловаяСистемаПереадресация.УдалитьВременныйФайл(ПутьКФайлуСодержимого); + пбп_Переадресация.УдалитьВременныйФайл(ПутьКФайлуСодержимого); Возврат ТаблицаФайлов; Исключение @@ -673,7 +673,7 @@ ПараметрыСообщения.Путь = ПолучитьИмяВременногоФайла(ПараметрыСообщения.Расширение); // BSLLS:MissingTemporaryFileDeletion-on - ЭтоLinuxСервер = пбп_ОбщегоНазначенияСлужебный.ЭтоLinuxСервер(); + ЭтоLinuxСервер = пбп_Переадресация.ЭтоLinuxСервер(); ТекстСкрипта = ПолучитьТекстСкриптаПолученияПоТипуОС(ЭтоLinuxСервер, ПараметрыСоединения, ПараметрыСообщения.Путь, ПутьФайлаНаСервере); @@ -709,7 +709,7 @@ ЗаголовокОшибки = "Не удалось удалить файл из папки SFTP-сервера"; СообщениеОбОшибке = ""; - ЭтоLinuxСервер = пбп_ОбщегоНазначенияСлужебный.ЭтоLinuxСервер(); + ЭтоLinuxСервер = пбп_Переадресация.ЭтоLinuxСервер(); ПолныйПутьКФайлу = ПараметрыСоединения.КаталогИсходящие; Если Прав(ПолныйПутьКФайлу, 1) <> "/" Тогда @@ -749,21 +749,21 @@ ИтоговаяКоманда = """" + ИмяФайлаСкрипта + """"; КонецЕсли; - ПараметрыЗапускаКоманды = пбп_ФайловаяСистемаПереадресация.ПараметрыЗапускаПрограммы(); + ПараметрыЗапускаКоманды = пбп_Переадресация.ПараметрыЗапускаПрограммы(); ПараметрыЗапускаКоманды.ДождатьсяЗавершения = Истина; Если СтруктураИстории <> Неопределено Тогда НачалоВызова = ТекущаяДатаСеанса(); КонецЕсли; // BSLLS:ExternalAppStarting-off - Результат = пбп_ФайловаяСистемаПереадресация.ЗапуститьПрограмму(ИтоговаяКоманда, ПараметрыЗапускаКоманды); + Результат = пбп_Переадресация.ЗапуститьПрограмму(ИтоговаяКоманда, ПараметрыЗапускаКоманды); // BSLLS:ExternalAppStarting-on Если СтруктураИстории <> Неопределено Тогда СтруктураИстории.ДлительностьВызова = ТекущаяДатаСеанса() - НачалоВызова; СтруктураИстории.ПротоколОбмена = ПолучитьТекстСкриптаБезДанныхАутентификации(ПараметрыСоединения, ТекстСкрипта); КонецЕсли; - пбп_ФайловаяСистемаПереадресация.УдалитьВременныйФайл(ИмяФайлаСкрипта); + пбп_Переадресация.УдалитьВременныйФайл(ИмяФайлаСкрипта); УдалитьВременныеФайлыСкриптов(ИмяФайлаСкрипта, ИмяСлужебногоФайла); @@ -797,14 +797,14 @@ ИтоговаяКоманда = """" + ИмяФайлаСкрипта + """"; КонецЕсли; - ПараметрыЗапускаКоманды = пбп_ФайловаяСистемаПереадресация.ПараметрыЗапускаПрограммы(); + ПараметрыЗапускаКоманды = пбп_Переадресация.ПараметрыЗапускаПрограммы(); ПараметрыЗапускаКоманды.ДождатьсяЗавершения = Истина; Если СтруктураИстории <> Неопределено Тогда НачалоВызова = ТекущаяДатаСеанса(); КонецЕсли; // BSLLS:ExternalAppStarting-off - Результат = пбп_ФайловаяСистемаПереадресация.ЗапуститьПрограмму(ИтоговаяКоманда, ПараметрыЗапускаКоманды); + Результат = пбп_Переадресация.ЗапуститьПрограмму(ИтоговаяКоманда, ПараметрыЗапускаКоманды); // BSLLS:ExternalAppStarting-on Если СтруктураИстории <> Неопределено Тогда СтруктураИстории.ДлительностьВызова = ТекущаяДатаСеанса() - НачалоВызова; @@ -830,10 +830,10 @@ Процедура УдалитьВременныеФайлыСкриптов(ИмяОсновногоФайла, Знач ИмяВторогоФайла = "") - пбп_ФайловаяСистемаПереадресация.УдалитьВременныйФайл(ИмяОсновногоФайла); + пбп_Переадресация.УдалитьВременныйФайл(ИмяОсновногоФайла); Если Не ПустаяСтрока(ИмяВторогоФайла) Тогда - пбп_ФайловаяСистемаПереадресация.УдалитьВременныйФайл(ИмяВторогоФайла); + пбп_Переадресация.УдалитьВременныйФайл(ИмяВторогоФайла); КонецЕсли; КонецПроцедуры @@ -1016,7 +1016,7 @@ ДлинаИмениФайла = 150; ОписаниеТипаДатаВремя = Новый ОписаниеТипов("Дата", , , , , Новый КвалификаторыДаты(ЧастиДаты.ДатаВремя)); - ТаблицаФайлов.Колонки.Добавить("ИмяФайла", пбп_ОбщегоНазначенияСервер.ОписаниеТипаСтрока(ДлинаИмениФайла)); + ТаблицаФайлов.Колонки.Добавить("ИмяФайла", пбп_Переадресация.ОписаниеТипаСтрока(ДлинаИмениФайла)); ТаблицаФайлов.Колонки.Добавить("ДатаИзменения", ОписаниеТипаДатаВремя); Возврат ТаблицаФайлов; @@ -1028,19 +1028,19 @@ ТаблицаСвойствФайлов = Новый ТаблицаЗначений; // BSLLS:MagicNumber-off - ТаблицаСвойствФайлов.Колонки.Добавить("Права", пбп_ОбщегоНазначенияСервер.ОписаниеТипаСтрока(30)); + ТаблицаСвойствФайлов.Колонки.Добавить("Права", пбп_Переадресация.ОписаниеТипаСтрока(30)); ТаблицаСвойствФайлов.Колонки.Добавить("КоличествоСсылок", - пбп_ОбщегоНазначенияСервер.ОписаниеТипаЧисло(3, 0, ДопустимыйЗнак.Неотрицательный)); - ТаблицаСвойствФайлов.Колонки.Добавить("Владелец", пбп_ОбщегоНазначенияСервер.ОписаниеТипаСтрока(50)); - ТаблицаСвойствФайлов.Колонки.Добавить("Группа", пбп_ОбщегоНазначенияСервер.ОписаниеТипаСтрока(50)); + пбп_Переадресация.ОписаниеТипаЧисло(3, 0, ДопустимыйЗнак.Неотрицательный)); + ТаблицаСвойствФайлов.Колонки.Добавить("Владелец", пбп_Переадресация.ОписаниеТипаСтрока(50)); + ТаблицаСвойствФайлов.Колонки.Добавить("Группа", пбп_Переадресация.ОписаниеТипаСтрока(50)); ТаблицаСвойствФайлов.Колонки.Добавить("Размер", - пбп_ОбщегоНазначенияСервер.ОписаниеТипаЧисло(15, 0, ДопустимыйЗнак.Неотрицательный)); - ТаблицаСвойствФайлов.Колонки.Добавить("Месяц", пбп_ОбщегоНазначенияСервер.ОписаниеТипаСтрока(10)); + пбп_Переадресация.ОписаниеТипаЧисло(15, 0, ДопустимыйЗнак.Неотрицательный)); + ТаблицаСвойствФайлов.Колонки.Добавить("Месяц", пбп_Переадресация.ОписаниеТипаСтрока(10)); ТаблицаСвойствФайлов.Колонки.Добавить("Число", - пбп_ОбщегоНазначенияСервер.ОписаниеТипаЧисло(2, 0, ДопустимыйЗнак.Неотрицательный)); - ТаблицаСвойствФайлов.Колонки.Добавить("ГодВремя", пбп_ОбщегоНазначенияСервер.ОписаниеТипаСтрока(5)); + пбп_Переадресация.ОписаниеТипаЧисло(2, 0, ДопустимыйЗнак.Неотрицательный)); + ТаблицаСвойствФайлов.Колонки.Добавить("ГодВремя", пбп_Переадресация.ОписаниеТипаСтрока(5)); ТаблицаСвойствФайлов.Колонки.Добавить("ЭтоВремя", Новый ОписаниеТипов("Булево")); - ТаблицаСвойствФайлов.Колонки.Добавить("ИмяФайла", пбп_ОбщегоНазначенияСервер.ОписаниеТипаСтрока(150)); + ТаблицаСвойствФайлов.Колонки.Добавить("ИмяФайла", пбп_Переадресация.ОписаниеТипаСтрока(150)); // BSLLS:MagicNumber-on Возврат ТаблицаСвойствФайлов; @@ -1049,7 +1049,7 @@ Процедура ЗаполнитьСвойстваФайловИзСтрокиСпискаФайлов(ТаблицаСвойствФайлов, ТекущаяСтрока) - МассивСвойств = пбп_СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ТекущаяСтрока, " ", Истина, Истина); + МассивСвойств = пбп_ПереадресацияКлиентСервер.РазложитьСтрокуВМассивПодстрок(ТекущаяСтрока, " ", Истина, Истина); Инкремент = 0; ИмяФайла = ""; НоваяСтрока = ТаблицаСвойствФайлов.Добавить(); @@ -1101,7 +1101,7 @@ ЧасВремя = ?(СтрокаСвойств.ЭтоВремя, СтрокаСвойств.ГодВремя, "00:00"); - МассивЧасВремя = пбп_СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ЧасВремя, ":"); + МассивЧасВремя = пбп_ПереадресацияКлиентСервер.РазложитьСтрокуВМассивПодстрок(ЧасВремя, ":"); ДатаИзменения = Дата(ГодЧислом, Месяц, ЧислоМесяца, МассивЧасВремя[0], МассивЧасВремя[1], 0); @@ -1175,11 +1175,11 @@ КомандаПроверки = СтрШаблон("command -v %1 > %2", ИмяУтилиты, ИмяФайлаПроверки); - ПараметрыЗапускаКоманды = пбп_ФайловаяСистемаПереадресация.ПараметрыЗапускаПрограммы(); + ПараметрыЗапускаКоманды = пбп_Переадресация.ПараметрыЗапускаПрограммы(); ПараметрыЗапускаКоманды.ДождатьсяЗавершения = Истина; // BSLLS:ExternalAppStarting-off - Результат = пбп_ФайловаяСистемаПереадресация.ЗапуститьПрограмму(КомандаПроверки, ПараметрыЗапускаКоманды); + Результат = пбп_Переадресация.ЗапуститьПрограмму(КомандаПроверки, ПараметрыЗапускаКоманды); // BSLLS:ExternalAppStarting-on Если Результат.КодВозврата = 0 Тогда diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" index 20a2afe9..f2564def 100644 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" +++ "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" @@ -144,8 +144,8 @@ ВнешниеИсточникиДанных[ИмяВнешнегоИсточникаДанных].УстановитьОбщиеПараметрыСоединения(ПараметрыСоединения); - ПользовательСсылка = пбп_ПользователиСлужебный.ТекущийПользователь(); - ТекущийПользователь = пбп_ПользователиСлужебный.НайтиПоСсылке(ПользовательСсылка); + ПользовательСсылка = пбп_Переадресация.ТекущийПользователь(); + ТекущийПользователь = пбп_Переадресация.НайтиПоСсылке(ПользовательСсылка); ВнешниеИсточникиДанных[ИмяВнешнегоИсточникаДанных].УстановитьПараметрыСоединенияПользователя( ТекущийПользователь.Имя, ПараметрыСоединения); ВнешниеИсточникиДанных[ИмяВнешнегоИсточникаДанных].УстановитьПараметрыСоединенияСеанса(ПараметрыСоединения); @@ -190,7 +190,7 @@ ЗаголовокОшибки = "Данные не были получены из внешнего источника данных"; СообщениеОбОшибке = ""; - РеквизитыОбъекта = пбп_ОбщегоНазначенияСервер.ЗначенияРеквизитовОбъекта( + РеквизитыОбъекта = пбп_Переадресация.ЗначенияРеквизитовОбъекта( ИнтеграционныйПоток, "НастройкаИнтеграции.ИмяОбъекта, ТочкаВхода"); Если Не ЗначениеЗаполнено(РеквизитыОбъекта.НастройкаИнтеграцииИмяОбъекта) Тогда @@ -311,7 +311,7 @@ МассивНужныхПолей = Новый Массив; Если Не ПустаяСтрока(НеобходимыеПоля) Тогда - МассивНужныхПолей = пбп_СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок( + МассивНужныхПолей = пбп_ПереадресацияКлиентСервер.РазложитьСтрокуВМассивПодстрок( НеобходимыеПоля, ",", Истина, Истина); КонецЕсли; @@ -362,9 +362,12 @@ // Функция ПодготовитьТаблицуКодовОтветаHTTP() Экспорт + РазрядностьКодОтвета = 3; + ДлинаСтрокиОписания = 150; + ТаблицаКодовОтвета = Новый ТаблицаЗначений; - ТаблицаКодовОтвета.Колонки.Добавить("КодОтвета" , пбп_ОбщегоНазначенияСлужебный.ОписаниеТипаЧисло(3)); - ТаблицаКодовОтвета.Колонки.Добавить("КраткоеОписание" , пбп_ОбщегоНазначенияСлужебный.ОписаниеТипаСтрока(150)); + ТаблицаКодовОтвета.Колонки.Добавить("КодОтвета" , пбп_Переадресация.ОписаниеТипаЧисло(РазрядностьКодОтвета)); + ТаблицаКодовОтвета.Колонки.Добавить("КраткоеОписание" , пбп_Переадресация.ОписаниеТипаСтрока(ДлинаСтрокиОписания)); // Успешные НоваяСтрока = ТаблицаКодовОтвета.Добавить(); @@ -513,7 +516,7 @@ Расшифровка = НСтр("ru = '<Неизвестный код состояния>.'"); КонецЕсли; - Возврат пбп_СтроковыеФункцииСлужебныйКлиентСервер.ПодставитьПараметрыВСтроку( + Возврат пбп_ПереадресацияКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = '[%1] %2'"), КодСостояния, Расшифровка); @@ -634,7 +637,7 @@ СимволПараметра = "/", РазделительПараметраЗначения = " ", ПараметрыЗапускаКоманды = Неопределено, СтруктураИстории = Неопределено) Экспорт - РеквизитыПотока = пбп_ОбщегоНазначенияСервер.ЗначенияРеквизитовОбъекта( + РеквизитыПотока = пбп_Переадресация.ЗначенияРеквизитовОбъекта( ИнтеграционныйПоток, "НастройкаИнтеграции.ИнтегрируемаяСистема, НастройкаИнтеграции.СтрокаПодключения, ТочкаВхода"); СтрокаАтрибутов = ""; @@ -649,7 +652,7 @@ РеквизитыПотока.ТочкаВхода, СтрокаАтрибутов); Если ПараметрыЗапускаКоманды = Неопределено Тогда - ПараметрыЗапускаКоманды = пбп_ФайловаяСистемаПереадресация.ПараметрыЗапускаПрограммы(); + ПараметрыЗапускаКоманды = пбп_Переадресация.ПараметрыЗапускаПрограммы(); ПараметрыЗапускаКоманды.ДождатьсяЗавершения = Истина; КонецЕсли; @@ -658,7 +661,7 @@ КонецЕсли; // BSLLS:ExternalAppStarting-off - Результат = пбп_ФайловаяСистемаПереадресация.ЗапуститьПрограмму(ИтоговаяКоманда, ПараметрыЗапускаКоманды); + Результат = пбп_Переадресация.ЗапуститьПрограмму(ИтоговаяКоманда, ПараметрыЗапускаКоманды); // BSLLS:ExternalAppStarting-on Если СтруктураИстории <> Неопределено Тогда diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Ext/Module.bsl" index b7990927..b572ba60 100644 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Ext/Module.bsl" +++ "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Ext/Module.bsl" @@ -69,7 +69,7 @@ НовоеСообщение.ДатаИнтеграцииВМиллисекундах = ТекущаяУниверсальнаяДатаВМиллисекундах(); НовоеСообщение.Код = Новый УникальныйИдентификатор(); НовоеСообщение.Ошибка = ЗначениеЗаполнено(СтруктураЗаписиИстории.ОписаниеОшибки); - НовоеСообщение.Пользователь = пбп_ПользователиСлужебный.ТекущийПользователь(); + НовоеСообщение.Пользователь = пбп_Переадресация.ТекущийПользователь(); НовоеСообщение.ДлительностьОбмена = НовоеСообщение.ДатаИнтеграции - СтруктураЗаписиИстории.ДатаНачалаИнтеграции; НовоеСообщение.ДлительностьВызова = СтруктураЗаписиИстории.ДлительностьВызова; @@ -168,9 +168,9 @@ УстановитьПривилегированныйРежим(Истина); - СтруктураНастроек = пбп_ОбщегоНазначенияСлужебный.ЗначенияРеквизитовОбъекта( + СтруктураНастроек = пбп_Переадресация.ЗначенияРеквизитовОбъекта( НастройкаИнтеграции, "СтрокаПодключения, Порт, ИмяОбъекта"); - ДанныеБезопасногоХранилища = пбп_ОбщегоНазначенияСлужебный.ПрочитатьДанныеИзБезопасногоХранилища(НастройкаИнтеграции); + ДанныеБезопасногоХранилища = пбп_Переадресация.ПрочитатьДанныеИзБезопасногоХранилища(НастройкаИнтеграции); Для Каждого КлючИЗначение Из ДанныеБезопасногоХранилища Цикл СтруктураНастроек.Вставить(КлючИЗначение.Ключ, КлючИЗначение.Значение); @@ -192,10 +192,10 @@ // Структура Функция ПолучитьСтруктуруПотокаИНастроекИнтеграции(ИнтеграционныйПоток) Экспорт - СтруктураПотокаИНастроек = пбп_ОбщегоНазначенияСлужебный.ЗначенияРеквизитовОбъекта( + СтруктураПотокаИНастроек = пбп_Переадресация.ЗначенияРеквизитовОбъекта( ИнтеграционныйПоток, "НастройкаИнтеграции, ТочкаВхода"); СтруктураНастроек = ПолучитьСтруктуруНастроекИнтеграции(СтруктураПотокаИНастроек.НастройкаИнтеграции); - пбп_ОбщегоНазначенияСлужебныйКлиентСервер.ДополнитьСтруктуру(СтруктураПотокаИНастроек, СтруктураНастроек); + пбп_ПереадресацияКлиентСервер.ДополнитьСтруктуру(СтруктураПотокаИНастроек, СтруктураНастроек); Возврат СтруктураПотокаИНастроек; diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\232\320\276\320\275\320\275\320\265\320\272\321\202\320\276\321\200HTTP/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\232\320\276\320\275\320\275\320\265\320\272\321\202\320\276\321\200HTTP/Ext/Module.bsl" index f5c78ceb..e7b663d8 100644 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\232\320\276\320\275\320\275\320\265\320\272\321\202\320\276\321\200HTTP/Ext/Module.bsl" +++ "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\232\320\276\320\275\320\275\320\265\320\272\321\202\320\276\321\200HTTP/Ext/Module.bsl" @@ -2002,7 +2002,7 @@ ПроксиПоУмолчанию = Новый ИнтернетПрокси; СтруктураURL = РазобратьURL(URL); - ПроксиПоУмолчанию = пбп_ПолучениеФайловИзИнтернетаСлужебный.ПолучитьПрокси(СтруктураURL.Схема); + ПроксиПоУмолчанию = пбп_Переадресация.ПолучитьПрокси(СтруктураURL.Схема); Возврат ПроксиПоУмолчанию; diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\234\320\265\321\202\320\276\320\264\321\213\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\321\205\320\227\320\260\320\264\320\260\320\275\320\270\320\271\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\234\320\265\321\202\320\276\320\264\321\213\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\321\205\320\227\320\260\320\264\320\260\320\275\320\270\320\271\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" index bf49e0d4..72d22b01 100644 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\234\320\265\321\202\320\276\320\264\321\213\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\321\205\320\227\320\260\320\264\320\260\320\275\320\270\320\271\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" +++ "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\234\320\265\321\202\320\276\320\264\321\213\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\321\205\320\227\320\260\320\264\320\260\320\275\320\270\320\271\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" @@ -23,7 +23,7 @@ //Длительность хранения ошибок интеграции на месяц дольше, чем успешных записей Процедура ОчисткаИсторииИнтеграции() Экспорт - пбп_ОбщегоНазначенияСлужебный.ПриНачалеВыполненияРегламентногоЗадания(Метаданные.РегламентныеЗадания.пбп_ОчисткаИсторииИнтеграции); + пбп_Переадресация.ПриНачалеВыполненияРегламентногоЗадания(Метаданные.РегламентныеЗадания.пбп_ОчисткаИсторииИнтеграции); Справочники.пбп_ИсторияИнтеграции.ОчиститьИсториюИнтеграции(); КонецПроцедуры @@ -37,7 +37,7 @@ // Процедура ВыполнениеПользовательскихФункцийФайловыхОбменов(НастройкаИнтеграции, ПользовательскаяФункция) Экспорт - пбп_ОбщегоНазначенияСлужебный.ПриНачалеВыполненияРегламентногоЗадания( + пбп_Переадресация.ПриНачалеВыполненияРегламентногоЗадания( Метаданные.РегламентныеЗадания.пбп_ВыполнениеПользовательскихФункцийФайловыхОбменов); ПараметрыФункции = Новый Структура; @@ -52,7 +52,7 @@ // Процедура ЗаполнениеПредопределенныхЭлементов() Экспорт - пбп_ОбщегоНазначенияСлужебный.ПриНачалеВыполненияРегламентногоЗадания( + пбп_Переадресация.ПриНачалеВыполненияРегламентногоЗадания( Метаданные.РегламентныеЗадания.пбп_ЗаполнениеПредопределенныхЭлементов); пбп_ПредопределенныеЗначения.ЗаполнениеПредопределенныхЭлементов(Истина); diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\234\320\276\320\264\320\270\321\204\320\270\320\272\320\260\321\206\320\270\321\217\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\237\320\265\321\200\320\265\320\276\320\277\321\200\320\265\320\264\320\265\320\273\321\217\320\265\320\274\321\213\320\271/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\234\320\276\320\264\320\270\321\204\320\270\320\272\320\260\321\206\320\270\321\217\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\237\320\265\321\200\320\265\320\276\320\277\321\200\320\265\320\264\320\265\320\273\321\217\320\265\320\274\321\213\320\271/Ext/Module.bsl" index ad0fb12c..4236d519 100644 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\234\320\276\320\264\320\270\321\204\320\270\320\272\320\260\321\206\320\270\321\217\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\237\320\265\321\200\320\265\320\276\320\277\321\200\320\265\320\264\320\265\320\273\321\217\320\265\320\274\321\213\320\271/Ext/Module.bsl" +++ "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\234\320\276\320\264\320\270\321\204\320\270\320\272\320\260\321\206\320\270\321\217\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\237\320\265\321\200\320\265\320\276\320\277\321\200\320\265\320\264\320\265\320\273\321\217\320\265\320\274\321\213\320\271/Ext/Module.bsl" @@ -50,7 +50,7 @@ ПараметрыМетода.Добавить(СтандартнаяОбработка); ПараметрыМетода.Добавить(ДополнительныеПараметры); - пбп_ОбщегоНазначенияСервер.ВыполнитьМетодКонфигурации(ИмяМетода, ПараметрыМетода); + пбп_Переадресация.ВыполнитьМетодКонфигурации(ИмяМетода, ПараметрыМетода); КонецЕсли; @@ -83,7 +83,7 @@ ПараметрыМетода.Добавить(ТекущийОбъект); ПараметрыМетода.Добавить(ПараметрыЗаписи); - пбп_ОбщегоНазначенияСервер.ВыполнитьМетодКонфигурации(ИмяМетода, ПараметрыМетода); + пбп_Переадресация.ВыполнитьМетодКонфигурации(ИмяМетода, ПараметрыМетода); КонецПроцедуры @@ -108,7 +108,7 @@ ПараметрыМетода.Добавить(ТекущийОбъект); ПараметрыМетода.Добавить(ПараметрыЗаписи); - пбп_ОбщегоНазначенияСервер.ВыполнитьМетодКонфигурации(ИмяМетода, ПараметрыМетода); + пбп_Переадресация.ВыполнитьМетодКонфигурации(ИмяМетода, ПараметрыМетода); КонецПроцедуры @@ -137,7 +137,7 @@ ПараметрыМетода.Добавить(Отказ); ПараметрыМетода.Добавить(ПроверяемыеРеквизиты); - пбп_ОбщегоНазначенияСервер.ВыполнитьМетодКонфигурации(ИмяМетода, ПараметрыМетода); + пбп_Переадресация.ВыполнитьМетодКонфигурации(ИмяМетода, ПараметрыМетода); КонецПроцедуры @@ -176,7 +176,9 @@ Если ФормаВход = Неопределено Тогда МожноДобавлять = Истина; Иначе - УжеЕстьРеквизит = пбп_ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(ФормаВход, НаименованиеНовогоРеквизитаВход); + УжеЕстьРеквизит = пбп_ПереадресацияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта( + ФормаВход, + НаименованиеНовогоРеквизитаВход); МожноДобавлять = НЕ УжеЕстьРеквизит; КонецЕсли; Если МожноДобавлять Тогда @@ -564,24 +566,24 @@ Функция ПолучитьИмяМетода(Форма, ИмяПроцедурыВход) ИмяФормы = Форма.ИмяФормы; - МассивПодимен = пбп_СтроковыеФункцииСлужебныйКлиентСервер.РазложитьСтрокуВМассивПодстрок(ИмяФормы, "."); + ЧастиИмениФормы = пбп_ПереадресацияКлиентСервер.РазложитьСтрокуВМассивПодстрок(ИмяФормы, "."); - КолЭлементов = МассивПодимен.Количество(); + КолЭлементов = ЧастиИмениФормы.Количество(); Если КолЭлементов = 0 Тогда Возврат Неопределено; КонецЕсли; - ПостфиксМодуля = МассивПодимен.Получить(0); + ПостфиксМодуля = ЧастиИмениФормы.Получить(0); // Удалим класс - МассивПодимен.Удалить(0); + ЧастиИмениФормы.Удалить(0); Если КолЭлементов > 2 Тогда // Удалим слово "Форма" - МассивПодимен.Удалить(1); + ЧастиИмениФормы.Удалить(1); КонецЕсли; ИмяМодуля = "пбп_МодификацияКонфигурацииПереопределяемый" + ПостфиксМодуля; - ИмяПроцедуры = СтрСоединить(МассивПодимен, "") + ИмяПроцедурыВход; + ИмяПроцедуры = СтрСоединить(ЧастиИмениФормы, "") + ИмяПроцедурыВход; ИмяМетода = ИмяМодуля + "." + ИмяПроцедуры; Возврат ИмяМетода; diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Ext/Module.bsl" index 936e0fc7..7a88ad97 100644 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Ext/Module.bsl" +++ "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Ext/Module.bsl" @@ -36,8 +36,8 @@ // См. пбп_ОбщегоНазначенияСервер.ТекущаяДатаПользователя Функция ТекущаяДатаПользователя(ИмяПользователя = Неопределено) Экспорт - - Возврат пбп_ОбщегоНазначенияСервер.ТекущаяДатаПользователя(ИмяПользователя); + + Возврат пбп_Переадресация.ТекущаяДатаПользователя(ИмяПользователя); КонецФункции diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\232\320\273\320\270\320\265\320\275\321\202.xml" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\232\320\273\320\270\320\265\320\275\321\202.xml" deleted file mode 100644 index 9710ffbc..00000000 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\232\320\273\320\270\320\265\320\275\321\202.xml" +++ /dev/null @@ -1,27 +0,0 @@ - - - - - пбп_ОбщегоНазначенияКлиент - - - ru - Общего назначения клиент - - - en - General purpose customer - - - - false - true - false - false - true - false - false - DontUse - - - \ No newline at end of file diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\232\320\273\320\270\320\265\320\275\321\202/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\232\320\273\320\270\320\265\320\275\321\202/Ext/Module.bsl" deleted file mode 100644 index 02ba9e54..00000000 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\232\320\273\320\270\320\265\320\275\321\202/Ext/Module.bsl" +++ /dev/null @@ -1,194 +0,0 @@ -// Библиотека проектных подсистем для упрощения разработки архитектуры на 1С: Предприятие 8, -// включая доработку типовых конфигураций. -// -// Copyright First BIT company -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// URL: https://github.com/firstBitSportivnaya/PSSL/ -// - -//////////////////////////////////////////////////////////////////////////////// -// Общего назначения (клиент): для клиентских функций общего назначения - -#Область ПрограммныйИнтерфейс - -#Область МетодыАналогиБСП - -// Аналог метода БСП. Возвращает ссылку на общий модуль или модуль менеджера по имени. -// -// См. пбп_ОбщегоНазначенияСервер.ОбщийМодуль -// -// Параметры: -// Имя - Строка - имя общего модуля. -// -// Возвращаемое значение: -// ОбщийМодуль -// СправочникМенеджер, -// ДокументМенеджер, -// ОбработкаМенеджер, -// РегистрСведенийМенеджер. -// -// Пример: -// МодульОбновлениеКонфигурации = пбп_ОбщегоНазначенияСлужебный.ОбщийМодуль("ОбновлениеКонфигурации"); -// МодульОбновлениеКонфигурации.<Имя метода>(); -// -// МодульПолнотекстовыйПоискСервер = пбп_ОбщегоНазначенияСлужебный.ОбщийМодуль("ПолнотекстовыйПоискСервер"); -// МодульПолнотекстовыйПоискСервер.<Имя метода>(); -// -Функция ОбщийМодуль(ИмяМодуляБСП, ИмяМодуляВстроенного = "") Экспорт - - // Если ИмяМодуляВстроенного не передано, проверка не выполняется - Имя = ИмяМодуляВстроенного; - Если пбп_ОбщегоНазначенияВызовСервера.СуществуетБиблиотекаСтандартныхПодсистем() Тогда - Имя = ИмяМодуляБСП; - ИначеЕсли ПустаяСтрока(Имя) Тогда - ВызватьИсключение пбп_СтроковыеФункцииСлужебныйКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Общий модуль БСП ""%1"" не существует и не указан встроенный.'"), - Имя); - КонецЕсли; - Модуль = Вычислить(Имя); - -#Если Не ВебКлиент Тогда - - // В веб-клиенте не проверяется - // т.к. при обращении к модулям с вызовом сервера типа такого модуля в веб-клиенте не существует. - - Если ТипЗнч(Модуль) <> Тип("ОбщийМодуль") Тогда - ВызватьИсключение пбп_СтроковыеФункцииСлужебныйКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Общий модуль ""%1"" не существует.'"), - Имя); - КонецЕсли; - -#КонецЕсли - - Возврат Модуль; - -КонецФункции - -// Аналог метода БСП. Формирует и выводит сообщение, которое может быть связано с элементом управления формы. -// -// См. ОбщегоНазначения.СообщитьПользователю -// -// Параметры: -// ТекстСообщенияПользователю - Строка - текст сообщения. -// КлючДанных - ЛюбаяСсылка - объект или ключ записи информационной базы, к которому это сообщение относится. -// Поле - Строка - наименование реквизита формы. -// ПутьКДанным - Строка - путь к данным (путь к реквизиту формы). -// Отказ - Булево - выходной параметр, всегда устанавливается в значение Истина. -// -// Пример: -// -// 1. Для вывода сообщения у поля управляемой формы, связанного с реквизитом объекта: -// ОбщегоНазначенияКлиент.СообщитьПользователю( -// НСтр("ru = 'Сообщение об ошибке.'"), , -// "ПолеВРеквизитеФормыОбъект", -// "Объект"); -// -// Альтернативный вариант использования в форме объекта: -// ОбщегоНазначенияКлиент.СообщитьПользователю( -// НСтр("ru = 'Сообщение об ошибке.'"), , -// "Объект.ПолеВРеквизитеФормыОбъект"); -// -// 2. Для вывода сообщения рядом с полем управляемой формы, связанным с реквизитом формы: -// ОбщегоНазначенияКлиент.СообщитьПользователю( -// НСтр("ru = 'Сообщение об ошибке.'"), , -// "ИмяРеквизитаФормы"); -// -// 3. Для вывода сообщения связанного с объектом информационной базы: -// ОбщегоНазначенияКлиент.СообщитьПользователю( -// НСтр("ru = 'Сообщение об ошибке.'"), ОбъектИнформационнойБазы, "Ответственный",,Отказ); -// -// 4. Для вывода сообщения по ссылке на объект информационной базы: -// ОбщегоНазначенияКлиент.СообщитьПользователю( -// НСтр("ru = 'Сообщение об ошибке.'"), Ссылка, , , Отказ); -// -// Случаи некорректного использования: -// 1. Передача одновременно параметров КлючДанных и ПутьКДанным. -// 2. Передача в параметре КлючДанных значения типа отличного от допустимого. -// 3. Установка ссылки без установки поля (и/или пути к данным). -// -Процедура СообщитьПользователю(Знач ТекстСообщенияПользователю, Знач КлючДанных = Неопределено, - Знач Поле = "", Знач ПутьКДанным = "", Отказ = Ложь) Экспорт - - Сообщение = пбп_ОбщегоНазначенияСлужебныйКлиентСервер.СообщениеПользователю(ТекстСообщенияПользователю, - КлючДанных, Поле, ПутьКДанным, Отказ); - - Сообщение.Сообщить(); - -КонецПроцедуры - -// Аналог метода БСП. Возвращает ссылку предопределенного элемента по его полному имени. -// Предопределенные элементы могут содержаться только в следующих объектах: -// - справочники; -// - планы видов характеристик; -// - планы счетов; -// - планы видов расчета. -// После изменения состава предопределенных следует выполнить метод -// ОбновитьПовторноИспользуемыеЗначения(), который сбросит кэш ПовтИсп в текущем сеансе. -// -// См. ОбщегоНазначения.ПредопределенныйЭлемент -// -// Параметры: -// ПолноеИмяПредопределенного - Строка - полный путь к предопределенному элементу, включая его имя. -// Формат аналогичен функции глобального контекста ПредопределенноеЗначение(). -// Например: -// "Справочник.ВидыКонтактнойИнформации.EmailПользователя" -// "ПланСчетов.Хозрасчетный.Материалы" -// "ПланВидовРасчета.Начисления.ОплатаПоОкладу". -// -// Возвращаемое значение: -// ЛюбаяСсылка - ссылка на предопределенный элемент. -// Неопределено - если предопределенный элемент есть в метаданных, но не создан в ИБ. -// -Функция ПредопределенныйЭлемент(ПолноеИмяПредопределенного) Экспорт - - Возврат ПредопределенноеЗначение(ПолноеИмяПредопределенного); - -КонецФункции - -// Аналог метода БСП. Возвращает Истина, если клиентское приложение запущено под управлением ОС Windows. -// -// См. ОбщегоНазначения.ЭтоWindowsКлиент -// -// Возвращаемое значение: -// Булево - если нет клиентского приложения, возвращается Ложь. -// -Функция ЭтоWindowsКлиент() Экспорт - - ТипПлатформыКлиента = ТипПлатформыКлиента(); - Возврат ТипПлатформыКлиента = ТипПлатформы.Windows_x86 - Или ТипПлатформыКлиента = ТипПлатформы.Windows_x86_64; - -КонецФункции - -// Аналог метода БСП. Возвращает тип платформы клиента. -// -// Возвращаемое значение: -// ТипПлатформы, Неопределено - тип платформы на которой запущен клиент. В режиме веб-клиента, если тип -// платформы иной, чем описан в типе ТипПлатформы, то возвращается Неопределено. -// -Функция ТипПлатформыКлиента() Экспорт - - СистемнаяИнфо = Новый СистемнаяИнформация; - Возврат СистемнаяИнфо.ТипПлатформы; - -КонецФункции - -#КонецОбласти - -#КонецОбласти - -#Область СлужебныеПроцедурыИФункции - -#КонецОбласти \ No newline at end of file diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" index dd453fd4..aaa05fca 100644 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" +++ "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" @@ -138,236 +138,6 @@ КонецФункции -#Область МетодыАналогиБСП - -// Аналог метода БСП. Устанавливает свойство ИмяСвойства элемента формы с именем ИмяЭлемента в значение Значение. -// Применяется в тех случаях, когда элемента формы может не быть на форме из-за отсутствия прав у пользователя -// на объект, реквизит объекта или команду. -// -// Параметры: -// ЭлементыФормы - ВсеЭлементыФормы -// - ЭлементыФормы - коллекция элементов управляемой формы. -// ИмяЭлемента - Строка - имя элемента формы. -// ИмяСвойства - Строка - имя устанавливаемого свойства элемента формы. -// Значение - Произвольный - новое значение элемента. -// -Процедура УстановитьСвойствоЭлементаФормы(ЭлементыФормы, ИмяЭлемента, ИмяСвойства, Значение) Экспорт - - ЭлементФормы = ЭлементыФормы.Найти(ИмяЭлемента); - Если ЭлементФормы <> Неопределено И ЭлементФормы[ИмяСвойства] <> Значение Тогда - ЭлементФормы[ИмяСвойства] = Значение; - КонецЕсли; - -КонецПроцедуры - -// Аналог метода БСП. Возвращает значение свойства структуры. -// -// Параметры: -// Структура - Структура -// - ФиксированнаяСтруктура - объект, из которого необходимо прочитать значение ключа. -// Ключ - Строка - имя свойства структуры, для которого необходимо прочитать значение. -// ЗначениеПоУмолчанию - Произвольный - возвращается когда в структуре нет значения по указанному -// ключу. -// Для скорости рекомендуется передавать только быстро вычисляемые значения (например примитивные типы), -// а инициализацию более тяжелых значений выполнять после проверки полученного значения (только если это -// требуется). -// -// Возвращаемое значение: -// Произвольный - значение свойства структуры. ЗначениеПоУмолчанию если в структуре нет указанного свойства. -// -Функция СвойствоСтруктуры(Структура, Ключ, ЗначениеПоУмолчанию = Неопределено) Экспорт - - Если Структура = Неопределено Тогда - Возврат ЗначениеПоУмолчанию; - КонецЕсли; - - Результат = ЗначениеПоУмолчанию; - Если Структура.Свойство(Ключ, Результат) Тогда - Возврат Результат; - Иначе - Возврат ЗначениеПоУмолчанию; - КонецЕсли; - -КонецФункции - -// Аналог метода БСП. Дополняет массив МассивПриемник значениями из массива МассивИсточник. -// -// Параметры: -// МассивПриемник - Массив - массив, в который необходимо добавить значения. -// МассивИсточник - Массив - массив значений для заполнения. -// ТолькоУникальныеЗначения - Булево - если истина, то в массив будут включены только уникальные значения. -// -Процедура ДополнитьМассив(МассивПриемник, МассивИсточник, ТолькоУникальныеЗначения = Ложь) Экспорт - - Если ТолькоУникальныеЗначения Тогда - - УникальныеЗначения = Новый Соответствие; - - Для Каждого Значение Из МассивПриемник Цикл - УникальныеЗначения.Вставить(Значение, Истина); - КонецЦикла; - - Для Каждого Значение Из МассивИсточник Цикл - Если УникальныеЗначения[Значение] = Неопределено Тогда - МассивПриемник.Добавить(Значение); - УникальныеЗначения.Вставить(Значение, Истина); - КонецЕсли; - КонецЦикла; - - Иначе - - Для Каждого Значение Из МассивИсточник Цикл - МассивПриемник.Добавить(Значение); - КонецЦикла; - - КонецЕсли; - -КонецПроцедуры - -// Аналог метода БСП. Возвращает копию исходного массива с уникальными значениями. -// -// Параметры: -// Массив - Массив - массив произвольных значений. -// -// Возвращаемое значение: -// Массив - массив уникальных элементов. -// -Функция СвернутьМассив(Знач Массив) Экспорт - Результат = Новый Массив; - ДополнитьМассив(Результат, Массив, Истина); - Возврат Результат; -КонецФункции - -// Аналог метода БСП. Возвращает значение свойства ИмяСвойства элемента формы с именем ИмяЭлемента. -// Применяется в тех случаях, когда элемент формы может не быть на форме из-за отсутствия прав у пользователя -// на объект, реквизит объекта или команду. -// -// Параметры: -// ЭлементыФормы - ВсеЭлементыФормы -// - ЭлементыФормы - коллекция элементов управляемой формы. -// ИмяЭлемента - Строка - имя элемента формы. -// ИмяСвойства - Строка - имя свойства элемента формы. -// -// Возвращаемое значение: -// Произвольный - значение свойства ИмяСвойства элемента формы ИмяЭлемента. -// -Функция ЗначениеСвойстваЭлементаФормы(ЭлементыФормы, ИмяЭлемента, ИмяСвойства) Экспорт - - ЭлементФормы = ЭлементыФормы.Найти(ИмяЭлемента); - Возврат ?(ЭлементФормы <> Неопределено, ЭлементФормы[ИмяСвойства], Неопределено); - -КонецФункции - -// Аналог метода БСП. Проверяет наличие реквизита или свойства у произвольного объекта без обращения к метаданным. -// -// Параметры: -// Объект - Произвольный - объект, у которого нужно проверить наличие реквизита или свойства; -// ИмяРеквизита - Строка - имя реквизита или свойства. -// -// Возвращаемое значение: -// Булево - Истина, если есть. -// -Функция ЕстьРеквизитИлиСвойствоОбъекта(Объект, ИмяРеквизита) Экспорт - - КлючУникальности = Новый УникальныйИдентификатор; - СтруктураРеквизита = Новый Структура(ИмяРеквизита, КлючУникальности); - ЗаполнитьЗначенияСвойств(СтруктураРеквизита, Объект); - - Возврат СтруктураРеквизита[ИмяРеквизита] <> КлючУникальности; - -КонецФункции - -// Аналог метода БСП. Дополняет структуру значениями из другой структуры. -// -// Параметры: -// Приемник - Структура - коллекция, в которую будут добавляться новые значения. -// Источник - Структура - коллекция, из которой будут считываться пары Ключ и Значение для заполнения. -// Заменять - Булево -// - Неопределено - что делать в местах пересечения ключей источника и приемника: -// Истина - заменять значения приемника (самый быстрый способ), -// Ложь - не заменять значения приемника (пропускать), -// Неопределено - значение по умолчанию. Бросать исключение. -// -Процедура ДополнитьСтруктуру(Приемник, Источник, Заменять = Неопределено) Экспорт - - Для Каждого Элемент Из Источник Цикл - Если Заменять <> Истина И Приемник.Свойство(Элемент.Ключ) Тогда - Если Заменять = Ложь Тогда - Продолжить; - Иначе - ВызватьИсключение пбп_СтроковыеФункцииСлужебныйКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Пересечение ключей источника и приемника: ""%1"".'"), Элемент.Ключ); - КонецЕсли; - КонецЕсли; - Приемник.Вставить(Элемент.Ключ, Элемент.Значение); - КонецЦикла; - -КонецПроцедуры - -// Аналог метода БСП. Создает массив и помещает в него переданное значение. -// -// Параметры: -// Значение - Произвольный - любое значение. -// -// Возвращаемое значение: -// Массив - массив из одного элемента. -// -Функция ЗначениеВМассиве(Знач Значение) Экспорт - - Результат = Новый Массив; - Результат.Добавить(Значение); - Возврат Результат; - -КонецФункции - -// Аналог метода БСП. Вызывает исключение с текстом Сообщение, если Условие не равно Истина. -// Применяется для самодиагностики кода. -// -// Параметры: -// Условие - Булево - если не равно Истина, то вызывается исключение. -// Сообщение - Строка - текст сообщения. Если не задан, то исключение вызывается с сообщением по умолчанию. -// КонтекстПроверки - Строка - например, имя процедуры или функции, в которой выполняется проверка. -// -Процедура Проверить(Знач Условие, Знач Сообщение = "", Знач КонтекстПроверки = "") Экспорт - - Если Условие <> Истина Тогда - - Если ПустаяСтрока(Сообщение) Тогда - ТекстИсключения = НСтр("ru = 'Недопустимая операция'"); // Assertion failed - Иначе - ТекстИсключения = Сообщение; - КонецЕсли; - - Если Не ПустаяСтрока(КонтекстПроверки) Тогда - ТекстИсключения = пбп_СтроковыеФункцииСлужебныйКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = '%1 в %2'"), ТекстИсключения, КонтекстПроверки); - КонецЕсли; - - ВызватьИсключение ТекстИсключения; - - КонецЕсли; - -КонецПроцедуры - -// Аналог метода БСП. Возвращает признак того, что переданное значение является, либо не является, числом. -// -// Параметры: -// ПроверяемоеЗначение - Строка - значение, которое проверяется на соответствие числу. -// -// Возвращаемое значение: -// Булево - признак того, что переданное значение является, либо не является, числом. -// -Функция ЭтоЧисло(Знач ПроверяемоеЗначение) Экспорт - - Если ПроверяемоеЗначение = "0" Тогда - Возврат Истина; - КонецЕсли; - - ОписаниеЧисла = Новый ОписаниеТипов("Число"); - - Возврат ОписаниеЧисла.ПривестиЗначение(ПроверяемоеЗначение) <> 0; - -КонецФункции - #КонецОбласти #Область СлужебныйПрограммныйИнтерфейс @@ -378,9 +148,3 @@ КонецПроцедуры #КонецОбласти - -#КонецОбласти - -#Область СлужебныеПроцедурыИФункции - -#КонецОбласти diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\237\320\276\320\273\320\275\321\213\320\265\320\237\321\200\320\260\320\262\320\260.xml" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\237\320\276\320\273\320\275\321\213\320\265\320\237\321\200\320\260\320\262\320\260.xml" deleted file mode 100644 index b1946ee7..00000000 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\237\320\276\320\273\320\275\321\213\320\265\320\237\321\200\320\260\320\262\320\260.xml" +++ /dev/null @@ -1,27 +0,0 @@ - - - - - пбп_ОбщегоНазначенияПолныеПрава - - - ru - Общего назначения полные права - - - en - General purpose full rights - - - - false - false - true - false - false - false - true - DontUse - - - \ No newline at end of file diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\237\320\276\320\273\320\275\321\213\320\265\320\237\321\200\320\260\320\262\320\260/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\237\320\276\320\273\320\275\321\213\320\265\320\237\321\200\320\260\320\262\320\260/Ext/Module.bsl" deleted file mode 100644 index dc4726d6..00000000 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\237\320\276\320\273\320\275\321\213\320\265\320\237\321\200\320\260\320\262\320\260/Ext/Module.bsl" +++ /dev/null @@ -1,30 +0,0 @@ -// Библиотека проектных подсистем для упрощения разработки архитектуры на 1С: Предприятие 8, -// включая доработку типовых конфигураций. -// -// Copyright First BIT company -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// URL: https://github.com/firstBitSportivnaya/PSSL/ -// - -//////////////////////////////////////////////////////////////////////////////// -// Привилегированный (сервер): для привилегированных функций - -#Область ПрограммныйИнтерфейс - -#КонецОбласти // ПрограммныйИнтерфейс - -#Область СлужебныеПроцедурыИФункции - -#КонецОбласти // СлужебныеПроцедурыИФункции \ No newline at end of file diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" index ed1dd02c..0704e573 100644 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" +++ "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" @@ -255,11 +255,11 @@ ОтборЗадания = Новый Структура; ОтборЗадания.Вставить("Ключ", КлючЗадания); - МассивРегламентныхЗаданий = пбп_РегламентныеЗаданияСлужебныйСервер.НайтиЗадания(ОтборЗадания); + МассивРегламентныхЗаданий = пбп_Переадресация.НайтиЗадания(ОтборЗадания); Если МассивРегламентныхЗаданий.Количество() Тогда РегламентноеЗадание = МассивРегламентныхЗаданий[0]; - пбп_РегламентныеЗаданияСлужебныйСервер.УдалитьЗадание(РегламентноеЗадание.УникальныйИдентификатор); + пбп_Переадресация.УдалитьЗадание(РегламентноеЗадание.УникальныйИдентификатор); КонецЕсли; КонецПроцедуры @@ -294,7 +294,7 @@ ТекущийОбъект.Записать(); Если РежимыВывода.ВыводитьИнформацию Тогда - пбп_ОбщегоНазначенияСлужебный.СообщитьПользователю( + пбп_Переадресация.СообщитьПользователю( СтрШаблон(НСтр("ru='Записан справочник ""%1"".';en='Directory ""%1"" saved.'"), ТекущийОбъект.Ссылка)); КонецЕсли; КонецЕсли; @@ -303,11 +303,11 @@ СправочникЗаписан = Ложь; Если РежимыВывода.ВыводитьОшибки Тогда - пбп_ОбщегоНазначенияСлужебный.СообщитьПользователю(КраткоеПредставлениеОшибки(ИнформацияОбОшибке())); + пбп_Переадресация.СообщитьПользователю(ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке())); КонецЕсли; ЗаписьЖурналаРегистрации("пбп_.ОшибкаЗаписиСправочника", УровеньЖурналаРегистрации.Ошибка,,, - ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); КонецПопытки; Возврат СправочникЗаписан; @@ -776,7 +776,7 @@ Если Метаданные.ОбщиеМодули.Найти("СтандартныеПодсистемыСервер") <> Неопределено Тогда Попытка УстановитьБезопасныйРежим(Истина); - МодульБСП = ОбщийМодуль("СтандартныеПодсистемыСервер"); + МодульБСП = пбп_Переадресация.ОбщийМодуль("СтандартныеПодсистемыСервер"); ВерсияБСП = МодульБСП.ВерсияБиблиотеки(); Исключение ВерсияБСП = Неопределено; @@ -806,1434 +806,12 @@ Имя = ИмяМодуляБСП; КонецЕсли; - Модуль = ОбщийМодуль(Имя); + Модуль = пбп_Переадресация.ОбщийМодуль(Имя); Возврат Модуль; КонецФункции -#Область МетодыАналогиБСП - -// Аналог метода БСП. Определяет режим эксплуатации информационной базы файловый (Истина) или серверный (Ложь). -// При проверке используется СтрокаСоединенияИнформационнойБазы, которую можно указать явно. -// -// Параметры: -// СтрокаСоединенияИнформационнойБазы - Строка - параметр используется, если -// нужно проверить строку соединения не текущей информационной базы. -// -// Возвращаемое значение: -// Булево - Истина, если файловая. -// -Функция ИнформационнаяБазаФайловая(Знач СтрокаСоединенияИнформационнойБазы = "") Экспорт - - Если ПустаяСтрока(СтрокаСоединенияИнформационнойБазы) Тогда - СтрокаСоединенияИнформационнойБазы = СтрокаСоединенияИнформационнойБазы(); - КонецЕсли; - Возврат СтрНайти(ВРег(СтрокаСоединенияИнформационнойБазы), "FILE=") = 1; - -КонецФункции - -// Аналог метода БСП. Возвращает Истина, если функциональная подсистема существует в конфигурации. -// Предназначена для реализации вызова необязательной подсистемы (условного вызова). -// У функциональной подсистемы снят флажок "Включать в командный интерфейс". -// См. также ОбщегоНазначенияПереопределяемый.ПриОпределенииОтключенныхПодсистем -// и ОбщегоНазначенияКлиент.ПодсистемаСуществует для вызова из клиентского кода. -// -// Параметры: -// ПолноеИмяПодсистемы - Строка - полное имя объекта метаданных подсистема -// без слов "Подсистема." и с учетом регистра символов. -// Например: "СтандартныеПодсистемы.ВариантыОтчетов". -// -// Пример: -// Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ВариантыОтчетов") Тогда -// МодульВариантыОтчетов = ОбщегоНазначения.ОбщийМодуль("ВариантыОтчетов"); -// МодульВариантыОтчетов.<Имя метода>(); -// КонецЕсли; -// -// Возвращаемое значение: -// Булево - Истина, если подсистема существует. -// -Функция ПодсистемаСуществует(ПолноеИмяПодсистемы) Экспорт - - ИменаПодсистем = пбп_СтандартныеПодсистемыСлужебныйПовтИсп.ИменаПодсистем(); - Возврат ИменаПодсистем.Получить(ПолноеИмяПодсистемы) <> Неопределено; - -КонецФункции - -// Аналог метода БСП. Возвращает ссылку на общий модуль или модуль менеджера по имени. -// -// Параметры: -// Имя - Строка - имя общего модуля. -// -// Возвращаемое значение: -// ОбщийМодуль -// МодульМенеджераОбъекта -// -// Пример: -// МодульОбновлениеКонфигурации = пбп_ОбщегоНазначенияСервер.ОбщийМодуль("ОбновлениеКонфигурации"); -// МодульОбновлениеКонфигурации.<Имя метода>(); -// -// МодульПолнотекстовыйПоискСервер = пбп_ОбщегоНазначенияСервер.ОбщийМодуль("ПолнотекстовыйПоискСервер"); -// МодульПолнотекстовыйПоискСервер.<Имя метода>(); -// -Функция ОбщийМодуль(Имя) Экспорт - - Если Метаданные.ОбщиеМодули.Найти(Имя) <> Неопределено Тогда - УстановитьБезопасныйРежим(Истина); - Модуль = Вычислить(Имя); - ИначеЕсли СтрЧислоВхождений(Имя, ".") = 1 Тогда - Возврат СерверныйМодульМенеджера(Имя); - Иначе - Модуль = Неопределено; - КонецЕсли; - - Если ТипЗнч(Модуль) <> Тип("ОбщийМодуль") Тогда - ВызватьИсключение пбп_СтроковыеФункцииСлужебныйКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Общий модуль ""%1"" не существует.'"), - Имя); - КонецЕсли; - - Возврат Модуль; - -КонецФункции - -// Аналог метода БСП. Выполнить экспортную процедуру по имени с уровнем привилегий конфигурации. -// При включении профилей безопасности для вызова оператора Выполнить() используется -// переход в безопасный режим с профилем безопасности, используемым для информационной базы -// (если выше по стеку не был установлен другой безопасный режим). -// -// Параметры: -// ИмяМетода - Строка - имя экспортной процедуры в формате -// <имя объекта>.<имя процедуры>, где <имя объекта> - это -// общий модуль или модуль менеджера объекта. -// Параметры - Массив - параметры передаются в процедуру <ИмяЭкспортнойПроцедуры> -// в порядке расположения элементов массива. -// -// Пример: -// Параметры = Новый Массив(); -// Параметры.Добавить("1"); -// ОбщегоНазначения.ВыполнитьМетодКонфигурации("МойОбщийМодуль.МояПроцедура", Параметры); -// -Процедура ВыполнитьМетодКонфигурации(Знач ИмяМетода, Знач Параметры = Неопределено) Экспорт - - ПроверитьИмяПроцедурыКонфигурации(ИмяМетода); - - УстановитьБезопасныйРежим(Истина); - - ПараметрыСтрока = ""; - Если Параметры <> Неопределено И Параметры.Количество() > 0 Тогда - Для Индекс = 0 По Параметры.ВГраница() Цикл - ПараметрыСтрока = ПараметрыСтрока + "Параметры[" + XMLСтрока(Индекс) + "],"; - КонецЦикла; - ПараметрыСтрока = Сред(ПараметрыСтрока, 1, СтрДлина(ПараметрыСтрока) - 1); - КонецЕсли; - - Выполнить ИмяМетода + "(" + ПараметрыСтрока + ")"; - -КонецПроцедуры - -// Аналог метода БСП. Вызвать экспортную функцию по имени с уровнем привилегий конфигурации. -// При включении профилей безопасности для вызова оператора Выполнить() используется -// переход в безопасный режим с профилем безопасности, используемом для информационной базы -// (если выше по стеку не был установлен другой безопасный режим). -// -// Параметры: -// ИмяМетода - Строка - имя экспортной функции в формате -// <имя объекта>.<имя процедуры>, где <имя объекта> - это -// общий модуль или модуль менеджера объекта. -// Параметры - Массив - параметры передаются в функцию <ИмяМетода> -// в порядке расположения элементов массива. -// -// Возвращаемое значение: -// Произвольный - результат вызываемой функции. -// -Функция ВызватьФункциюКонфигурации(Знач ИмяМетода, Знач Параметры = Неопределено) Экспорт - - ПроверитьИмяПроцедурыКонфигурации(ИмяМетода); - - Если ПодсистемаСуществует("СтандартныеПодсистемы.ПрофилиБезопасности") Тогда - МодульРаботаВБезопасномРежиме = ОбщийМодуль("РаботаВБезопасномРежиме"); - Если МодульРаботаВБезопасномРежиме.ИспользуютсяПрофилиБезопасности() - И Не МодульРаботаВБезопасномРежиме.УстановленБезопасныйРежим() Тогда - - ПрофильИнформационнойБазы = МодульРаботаВБезопасномРежиме.ПрофильБезопасностиИнформационнойБазы(); - Если ЗначениеЗаполнено(ПрофильИнформационнойБазы) Тогда - - // BSLLS:DisableSafeMode-off - УстановитьБезопасныйРежим(ПрофильИнформационнойБазы); - // BSLLS:DisableSafeMode-on - Если БезопасныйРежим() = Истина Тогда - // BSLLS:DisableSafeMode-off - УстановитьБезопасныйРежим(Ложь); - // BSLLS:DisableSafeMode-on - КонецЕсли; - - КонецЕсли; - - КонецЕсли; - КонецЕсли; - - ПараметрыСтрока = ""; - Если Параметры <> Неопределено И Параметры.Количество() > 0 Тогда - Для Индекс = 0 По Параметры.ВГраница() Цикл - ПараметрыСтрока = ПараметрыСтрока + "Параметры[" + XMLСтрока(Индекс) + "],"; - КонецЦикла; - ПараметрыСтрока = Сред(ПараметрыСтрока, 1, СтрДлина(ПараметрыСтрока) - 1); - КонецЕсли; - - // BSLLS:ExecuteExternalCodeInCommonModule-off - Возврат Вычислить(ИмяМетода + "(" + ПараметрыСтрока + ")"); // АПК:488 Исполняемый код безопасен. - // BSLLS:ExecuteExternalCodeInCommonModule-on - -КонецФункции - -// Аналог метода БСП. Вычисляет переданное выражение, предварительно устанавливая безопасный режим выполнения кода -// и безопасный режим разделения данных для всех разделителей, присутствующих в составе конфигурации. -// -// Параметры: -// Выражение - Строка - выражение на встроенном языке 1С:Предприятия. -// Параметры - Произвольный - контекст, который требуется для вычисления выражения. -// В тексте выражения обращение к контексту должно происходить по имени "Параметры". -// Например, выражение "Параметры.Значение1 = Параметры.Значение2" обращается к значениям -// "Значение1" и "Значение2" переданные в Параметры, как свойства. -// -// Возвращаемое значение: -// Произвольный - результат вычисления выражения. -// -// Пример: -// -// // Пример 1 -// Параметры = Новый Структура; -// Параметры.Вставить("Значение1", 1); -// Параметры.Вставить("Значение2", 10); -// Результат = ОбщегоНазначения.ВычислитьВБезопасномРежиме("Параметры.Значение1 = Параметры.Значение2", Параметры); -// -// // Пример 2 -// Результат = ОбщегоНазначения.ВычислитьВБезопасномРежиме("СтандартныеПодсистемыСервер.ВерсияБиблиотеки()"); -// -Функция ВычислитьВБезопасномРежиме(Знач Выражение, Знач Параметры = Неопределено) Экспорт - - УстановитьБезопасныйРежим(Истина); - - Если ПодсистемаСуществует("ТехнологияСервиса.БазоваяФункциональность") Тогда - МодульРаботаВМоделиСервиса = ОбщийМодуль("РаботаВМоделиСервиса"); - МассивРазделителей = МодульРаботаВМоделиСервиса.РазделителиКонфигурации(); - Иначе - МассивРазделителей = Новый Массив; - КонецЕсли; - - Для Каждого ИмяРазделителя Из МассивРазделителей Цикл - - УстановитьБезопасныйРежимРазделенияДанных(ИмяРазделителя, Истина); - - КонецЦикла; - - Возврат Вычислить(Выражение); - -КонецФункции - -// Аналог метода БСП. Записывает конфиденциальные данные в безопасное хранилище. -// Вызывающий код должен самостоятельно устанавливать привилегированный режим. -// -// Безопасное хранилище недоступно для чтения пользователям (кроме администраторов), -// а доступно только коду, который делает обращения только к своей части данных и -// в том контексте, который предполагает чтение или запись конфиденциальных данных. -// -// Параметры: -// Владелец - ПланОбменаСсылка -// - СправочникСсылка -// - Строка - ссылка на объект информационной базы, -// представляющий объект-владелец сохраняемого пароля или строка до 128 символов. -// Для объектов других типов в качестве владельца рекомендуется использовать ссылку на -// элемент метаданных этого типа в справочнике ИдентификаторыОбъектовМетаданных -// или ключ в виде строки с учетом имен подсистем. -// Например, для БСП: -// Владелец = ОбщегоНазначения.ИдентификаторОбъектаМетаданных("РегистрСведений.АдресныеОбъекты"); -// если нужно 1 хранилище на подсистему БСП: -// Владелец = "СтандартныеПодсистемы.УправлениеДоступом"; -// если нужно более 1 хранилища на подсистему БСП: -// Владелец = "СтандартныеПодсистемы.УправлениеДоступом.<Уточнение>"; -// Данные - Произвольный - данные помещаемые в безопасное хранилище. Неопределенно - удаляет все данные. -// Для удаления данных по ключу следует использовать процедуру УдалитьДанныеИзБезопасногоХранилища. -// - Структура - если параметр Ключ содержит Неопределено. Подробнее см. описание параметра Ключ -// Ключ - Строка - ключ сохраняемых настроек, по умолчанию "Пароль". -// Ключ должен соответствовать правилам имен идентификаторов: -// 1. Первым символом ключа должна быть буква или символ подчеркивания (_). -// 2. Каждый из последующих символов может быть буквой, цифрой или символом подчеркивания (_). -// Неопределено - для добавления набора данных структурой, где ключ структуры - это имя ключа данных, -// а значение - сохраняемые данные. Пример использования см. ниже. -// -// Пример: -// -// Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) -// Если ТекущийПользовательМожетИзменятьПароль Тогда -// УстановитьПривилегированныйРежим(Истина); -// ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище(ТекущийОбъект.Ссылка, Логин, "Логин"); -// ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище(ТекущийОбъект.Ссылка, Пароль); -// УстановитьПривилегированныйРежим(Ложь); -// КонецЕсли; -// КонецПроцедуры -// -// Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) -// Если ТекущийПользовательМожетИзменятьПароль Тогда -// ЛогинИПароль = Новый Структура; -// ЛогинИПароль.Вставить("Логин", Логин); -// ЛогинИПароль.Вставить("Пароль", Пароль); -// УстановитьПривилегированныйРежим(Истина); -// ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище(ТекущийОбъект.Ссылка, ЛогинИПароль, Неопределено); -// УстановитьПривилегированныйРежим(Ложь); -// КонецЕсли; -// КонецПроцедуры -// -Процедура ЗаписатьДанныеВБезопасноеХранилище(Владелец, Данные, Ключ = "Пароль") Экспорт - - пбп_ОбщегоНазначенияСлужебныйКлиентСервер.Проверить(ЗначениеЗаполнено(Владелец), - пбп_СтроковыеФункцииСлужебныйКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Недопустимое значение параметра %1 в %2. - |параметр должен содержать ссылку; передано значение: %3 (тип %4).'"), - "Владелец", "ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище", Владелец, ТипЗнч(Владелец))); - - Если ЗначениеЗаполнено(Ключ) Тогда - - пбп_ОбщегоНазначенияСлужебныйКлиентСервер.Проверить(ТипЗнч(Ключ) = Тип("Строка"), - пбп_СтроковыеФункцииСлужебныйКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Недопустимое значение параметра %1 в %2. - |параметр должен содержать строку; передано значение: %3 (тип %4).'"), - "Ключ", "ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище", Ключ, ТипЗнч(Ключ))); - - Иначе - - пбп_ОбщегоНазначенияСлужебныйКлиентСервер.Проверить(ТипЗнч(Данные) = Тип("Структура"), - пбп_СтроковыеФункцииСлужебныйКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Недопустимое значение параметра %1 в %2. - |Если Ключ = Неопределено, то параметр должен содержать структуру; передано значение: %3 (тип %4).'"), - "Данные", "ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище", Данные, ТипЗнч(Данные))); - - КонецЕсли; - - // Загулшка. - // Перенаправление в хранилище общих настроек, не используется регистр сведений БезопасноеХранилищеДанных - ХранилищеОбщихНастроекСохранить(Владелец, Ключ, Данные); - Возврат; - // Загулшка - -КонецПроцедуры - -// Аналог метода БСП. Возвращает данные из безопасного хранилища. -// Вызывающий код должен самостоятельно устанавливать привилегированный режим. -// -// Безопасное хранилище недоступно для чтения пользователям (кроме администраторов), -// а доступно только коду, который делает обращения только к своей части данных и -// в том контексте, который предполагает чтение или запись конфиденциальных данных. -// -// Параметры: -// Владелец - ПланОбменаСсылка -// - СправочникСсылка -// - Строка - ссылка на объект информационной базы, -// представляющий объект-владелец сохраняемого пароля или уникальная строка(до 128 символов). -// Ключи - Строка - содержит список имен сохраненных данных, указанных через запятую. -// - Неопределено - будут возвращены все сохраненные данные владельца. -// ОбщиеДанные - Булево - Истина, если требуется в модели сервиса получить данные из общих данных в разделенном режиме. -// -// Возвращаемое значение: -// Произвольный, Структура, Неопределено - данные из безопасного хранилища. Если указан один ключ, -// то возвращается его значение, иначе структура. -// Если данные отсутствуют - Неопределенно. -// -// Пример: -// Если ТекущийПользовательМожетИзменятьПароль Тогда -// УстановитьПривилегированныйРежим(Истина); -// Логин = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(ТекущийОбъект.Ссылка, "Логин"); -// Пароль = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(ТекущийОбъект.Ссылка); -// УстановитьПривилегированныйРежим(Ложь); -// Иначе -// Элементы.ГруппаЛогинИПароль.Видимость = Ложь; -// КонецЕсли; -// -// УстановитьПривилегированныйРежим(Истина); -// ЛогинИПароль = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(ТекущийОбъект.Ссылка, Неопределено); -// -Функция ПрочитатьДанныеИзБезопасногоХранилища(Владелец, Ключи = "Пароль", ОбщиеДанные = Неопределено) Экспорт - - // Загулшка. - // Перенаправление в хранилище общих настроек, не используется регистр сведений БезопасноеХранилищеДанных - Результат = ХранилищеОбщихНастроекЗагрузить(Владелец, Ключи, ОбщиеДанные); - Возврат Результат; - // Загулшка - -КонецФункции - -// Аналог метода БСП. Формирует и выводит сообщение, которое может быть связано с элементом управления формы. -// -// В фоновом задании длительной операции, если вызов выполнен вне транзакции, -// сообщение записывается в служебный регистр и отправляется сразу на клиент, -// если подключена система взаимодействия. -// В конце фонового задания длительной операции, а также при отправке прогресса, -// все сообщения извлекаются из очереди сообщений фонового задания, -// записываются в служебный регистр и отправляются сразу на клиент, -// если подключена система взаимодействия. -// -// АПК:142-выкл 4 необязательных параметра для совместимости -// с устаревшей процедурой ОбщегоНазначенияКлиентСервер.СообщитьПользователю. -// -// Параметры: -// ТекстСообщенияПользователю - Строка - текст сообщения. -// КлючДанных - ЛюбаяСсылка - объект или ключ записи информационной базы, к которому это сообщение относится. -// Поле - Строка - наименование реквизита формы. -// ПутьКДанным - Строка - путь к данным (путь к реквизиту формы). -// Отказ - Булево - выходной параметр, всегда устанавливается в значение Истина. -// -// Пример: -// -// 1. Для вывода сообщения у поля управляемой формы, связанного с реквизитом объекта: -// ОбщегоНазначения.СообщитьПользователю( -// НСтр("ru = 'Сообщение об ошибке.'"), , -// "ПолеВРеквизитеФормыОбъект", -// "Объект"); -// -// Альтернативный вариант использования в форме объекта: -// ОбщегоНазначения.СообщитьПользователю( -// НСтр("ru = 'Сообщение об ошибке.'"), , -// "Объект.ПолеВРеквизитеФормыОбъект"); -// -// 2. Для вывода сообщения рядом с полем управляемой формы, связанным с реквизитом формы: -// ОбщегоНазначения.СообщитьПользователю( -// НСтр("ru = 'Сообщение об ошибке.'"), , -// "ИмяРеквизитаФормы"); -// -// 3. Для вывода сообщения связанного с объектом информационной базы: -// ОбщегоНазначения.СообщитьПользователю( -// НСтр("ru = 'Сообщение об ошибке.'"), ОбъектИнформационнойБазы, "Ответственный",,Отказ); -// -// 4. Для вывода сообщения по ссылке на объект информационной базы: -// ОбщегоНазначения.СообщитьПользователю( -// НСтр("ru = 'Сообщение об ошибке.'"), Ссылка, , , Отказ); -// -// Случаи некорректного использования: -// 1. Передача одновременно параметров КлючДанных и ПутьКДанным. -// 2. Передача в параметре КлючДанных значения типа отличного от допустимого. -// 3. Установка ссылки без установки поля (и/или пути к данным). -// -Процедура СообщитьПользователю(Знач ТекстСообщенияПользователю, Знач КлючДанных = Неопределено, Знач Поле = "", - Знач ПутьКДанным = "", Отказ = Ложь) Экспорт - - ЭтоОбъект = Ложь; - - Если КлючДанных <> Неопределено - И XMLТипЗнч(КлючДанных) <> Неопределено Тогда - - ТипЗначенияСтрокой = XMLТипЗнч(КлючДанных).ИмяТипа; - ЭтоОбъект = СтрНайти(ТипЗначенияСтрокой, "Object.") > 0; - КонецЕсли; - - Сообщение = пбп_ОбщегоНазначенияСлужебныйКлиентСервер.СообщениеПользователю(ТекстСообщенияПользователю, - КлючДанных, Поле, ПутьКДанным, Отказ, ЭтоОбъект); - - Сообщение.Сообщить(); - -КонецПроцедуры - -// Аналог метода БСП. Сокращает строку до нужной длины, при этом обрезанная часть хешируется, -// обеспечивая уникальность строки. Проверяет длину строки на входе и, в случае -// превышения максимальной длины, преобразует ее конец по алгоритму MD5 в -// уникальную строку из 32 символов. -// -// Параметры: -// Строка - Строка - исходная строка произвольной длины. -// МаксимальнаяДлина - Число - требуемое максимальное количество символов в строке, -// минимальное значение: 32. -// -// Возвращаемое значение: -// Строка - строка, не превышающая максимальную длину. -// -Функция СократитьСтрокуКонтрольнойСуммой(Строка, МаксимальнаяДлина) Экспорт - - Если МаксимальнаяДлина < 32 Тогда - пбп_ОбщегоНазначенияСлужебныйКлиентСервер.Проверить(Ложь, - пбп_СтроковыеФункцииСлужебныйКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Параметр %1 не может быть меньше 32.'"), - "МаксимальнаяДлина"), "ОбщегоНазначения.СократитьСтрокуКонтрольнойСуммой"); - КонецЕсли; - - Результат = Строка; - Если СтрДлина(Строка) > МаксимальнаяДлина Тогда - Результат = Лев(Строка, МаксимальнаяДлина - 32); - ХешированиеДанных = Новый ХешированиеДанных(ХешФункция.MD5); - ХешированиеДанных.Добавить(Сред(Строка, МаксимальнаяДлина - 32 + 1)); - Результат = Результат + СтрЗаменить(ХешированиеДанных.ХешСумма, " ", ""); - КонецЕсли; - Возврат Результат; - -КонецФункции - -#Область ХранилищеНастроек - -// Аналог метода БСП. Загружает настройку из хранилища общих настроек, как метод платформы Загрузить, -// объектов СтандартноеХранилищеНастроекМенеджер или ХранилищеНастроекМенеджер.<Имя хранилища>, -// но с поддержкой длины ключа настроек более 128 символов путем хеширования части, -// которая превышает 96 символов. -// Кроме того, возвращает указанное значение по умолчанию, если настройки не существуют. -// Если нет права СохранениеДанныхПользователя, возвращается значение по умолчанию без ошибки. -// -// В возвращаемом значении очищаются ссылки на несуществующий объект в базе данных, а именно -// - возвращаемая ссылка заменяется на указанное значение по умолчанию; -// - из данных типа Массив ссылки удаляются; -// - у данных типа Структура и Соответствие ключ не меняется, а значение устанавливается Неопределено; -// - анализ значений в данных типа Массив, Структура, Соответствие выполняется рекурсивно. -// -// Параметры: -// КлючОбъекта - Строка - см. синтакс-помощник платформы. -// КлючНастроек - Строка - см. синтакс-помощник платформы. -// ЗначениеПоУмолчанию - Произвольный - значение, которое возвращается, если настройки не существуют. -// Если не указано, возвращается значение Неопределено. -// ОписаниеНастроек - ОписаниеНастроек - см. синтакс-помощник платформы. -// ИмяПользователя - Строка - см. синтакс-помощник платформы. -// -// Возвращаемое значение: -// Произвольный - см. синтакс-помощник платформы. -// -Функция ХранилищеОбщихНастроекЗагрузить(КлючОбъекта, КлючНастроек, ЗначениеПоУмолчанию = Неопределено, - ОписаниеНастроек = Неопределено, ИмяПользователя = Неопределено) Экспорт - - Возврат ХранилищеЗагрузить(ХранилищеОбщихНастроек, - КлючОбъекта, - КлючНастроек, - ЗначениеПоУмолчанию, - ОписаниеНастроек, - ИмяПользователя); - -КонецФункции - -// Аналог метода БСП. Сохраняет настройку в хранилище общих настроек, как метод платформы Сохранить, -// объектов СтандартноеХранилищеНастроекМенеджер или ХранилищеНастроекМенеджер.<Имя хранилища>, -// но с поддержкой длины ключа настроек более 128 символов путем хеширования части, -// которая превышает 96 символов. -// Если нет права СохранениеДанныхПользователя, сохранение пропускается без ошибки. -// -// Параметры: -// КлючОбъекта - Строка - см. синтакс-помощник платформы. -// КлючНастроек - Строка - см. синтакс-помощник платформы. -// Настройки - Произвольный - см. синтакс-помощник платформы. -// ОписаниеНастроек - ОписаниеНастроек - см. синтакс-помощник платформы. -// ИмяПользователя - Строка - см. синтакс-помощник платформы. -// ОбновитьПовторноИспользуемыеЗначения - Булево - выполнить одноименный метод платформы. -// -Процедура ХранилищеОбщихНастроекСохранить(КлючОбъекта, КлючНастроек, Настройки, - ОписаниеНастроек = Неопределено, - ИмяПользователя = Неопределено, - ОбновитьПовторноИспользуемыеЗначения = Ложь) Экспорт - - ХранилищеСохранить(ХранилищеОбщихНастроек, - КлючОбъекта, - КлючНастроек, - Настройки, - ОписаниеНастроек, - ИмяПользователя, - ОбновитьПовторноИспользуемыеЗначения); - -КонецПроцедуры - -// Аналог метода БСП. Удаляет настройку из хранилища общих настроек, как метод платформы Удалить, -// объектов СтандартноеХранилищеНастроекМенеджер или ХранилищеНастроекМенеджер.<Имя хранилища>, -// но с поддержкой длины ключа настроек более 128 символов путем хеширования части, -// которая превышает 96 символов. -// Если нет права СохранениеДанныхПользователя, удаление пропускается без ошибки. -// -// Параметры: -// КлючОбъекта - Строка -// - Неопределено - см. синтакс-помощник платформы. -// КлючНастроек - Строка -// - Неопределено - см. синтакс-помощник платформы. -// ИмяПользователя - Строка -// - Неопределено - см. синтакс-помощник платформы. -// -Процедура ХранилищеОбщихНастроекУдалить(КлючОбъекта, КлючНастроек, ИмяПользователя) Экспорт - - ХранилищеУдалить(ХранилищеОбщихНастроек, - КлючОбъекта, - КлючНастроек, - ИмяПользователя); - - КонецПроцедуры - -#КонецОбласти - -// Аналог метода БСП. Возвращает структуру, содержащую значения реквизитов, прочитанные из информационной базы по ссылке на объект. -// Рекомендуется использовать вместо обращения к реквизитам объекта через точку от ссылки на объект -// для быстрого чтения отдельных реквизитов объекта из базы данных. -// -// Если необходимо зачитать реквизит независимо от прав текущего пользователя, -// то следует использовать предварительный переход в привилегированный режим. -// -// Параметры: -// Ссылка - ЛюбаяСсылка - объект, значения реквизитов которого необходимо получить. -// - Строка - полное имя предопределенного элемента, значения реквизитов которого необходимо получить. -// Реквизиты - Строка - имена реквизитов, перечисленные через запятую, в формате -// требований к свойствам структуры. -// Например, "Код, Наименование, Родитель". -// - Структура -// - ФиксированнаяСтруктура - в качестве ключа передается -// псевдоним поля для возвращаемой структуры с результатом, а в качестве -// значения (опционально) фактическое имя поля в таблице. -// Если ключ задан, а значение не определено, то имя поля берется из ключа. -// Допускается указание имени поля через точку, но при этом параметр КодЯзыка для такого поля -// учитываться не будет. -// - Массив из Строка -// - ФиксированныйМассив из Строка - имена реквизитов в формате требований к свойствам структуры. -// ВыбратьРазрешенные - Булево - если Истина, то запрос к объекту выполняется с учетом прав пользователя; -// если есть ограничение на уровне записей, то все реквизиты вернутся со -// значением Неопределено; если нет прав для работы с таблицей, то возникнет исключение; -// если Ложь, то возникнет исключение при отсутствии прав на таблицу -// или любой из реквизитов. -// КодЯзыка - Строка - код языка для мультиязычного реквизита. Значение по умолчанию - основной язык конфигурации. -// -// Возвращаемое значение: -// Структура - содержит имена (ключи) и значения затребованных реквизитов. -// Если в параметр Реквизиты передана пустая строка, то возвращается пустая структура. -// Если в параметр Ссылка передана пустая ссылка, то возвращается структура, -// соответствующая именам реквизитов со значениями Неопределено. -// Если в параметр Ссылка передана ссылка несуществующего объекта (битая ссылка), -// то все реквизиты вернутся со значением Неопределено. -// -Функция ЗначенияРеквизитовОбъекта(Ссылка, Знач Реквизиты, ВыбратьРазрешенные = Ложь, Знач КодЯзыка = Неопределено) Экспорт - - // Если передано имя предопределенного. - Если ТипЗнч(Ссылка) = Тип("Строка") Тогда - - ПолноеИмяПредопределенногоЭлемента = Ссылка; - - // Вычисление ссылки по имени предопределенного. - // - дополнительно выполняет проверку метаданных предопределенного, выполняется предварительно. - Попытка - Ссылка = ПредопределенноеЗначение(ПолноеИмяПредопределенногоЭлемента); - Исключение - ТекстОшибки = пбп_СтроковыеФункцииСлужебныйКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Неверный первый параметр %1 в функции %2: - |%3'"), "Ссылка", "ОбщегоНазначения.ЗначенияРеквизитовОбъекта", - ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке())); - ВызватьИсключение ТекстОшибки; - КонецПопытки; - - // Разбор полного имени предопределенного. - ЧастиПолногоИмени = СтрРазделить(ПолноеИмяПредопределенногоЭлемента, "."); - ПолноеИмяОбъектаМетаданных = ЧастиПолногоИмени[0] + "." + ЧастиПолногоИмени[1]; - - // Если предопределенный не создан в ИБ, то требуется выполнить проверку доступа к объекту. - // В других сценариях проверка доступа выполняется в момент исполнения запроса. - Если Ссылка = Неопределено Тогда - МетаданныеОбъекта = ОбъектМетаданныхПоПолномуИмени(ПолноеИмяОбъектаМетаданных); - Если Не ПравоДоступа("Чтение", МетаданныеОбъекта) Тогда - ВызватьИсключение пбп_СтроковыеФункцииСлужебныйКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Недостаточно прав для работы с таблицей ""%1""'"), ПолноеИмяОбъектаМетаданных); - КонецЕсли; - КонецЕсли; - - Иначе // Если передана ссылка. - - Попытка - ПолноеИмяОбъектаМетаданных = Ссылка.Метаданные().ПолноеИмя(); - Исключение - ВызватьИсключение пбп_СтроковыеФункцииСлужебныйКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Неверный первый параметр %1 в функции %2: - |Значение должно быть ссылкой или именем предопределенного элемента.'"), - "Ссылка", "ОбщегоНазначения.ЗначенияРеквизитовОбъекта"); - КонецПопытки; - - КонецЕсли; - - // Разбор реквизитов, если второй параметр Строка. - Если ТипЗнч(Реквизиты) = Тип("Строка") Тогда - Если ПустаяСтрока(Реквизиты) Тогда - Возврат Новый Структура; - КонецЕсли; - - Реквизиты = СтрРазделить(Реквизиты, ",", Ложь); - Для Индекс = 0 По Реквизиты.ВГраница() Цикл - Реквизиты[Индекс] = СокрЛП(Реквизиты[Индекс]); - КонецЦикла; - КонецЕсли; - - // Приведение реквизитов к единому формату. - СтруктураПолей = Новый Структура; - Если ТипЗнч(Реквизиты) = Тип("Структура") - Или ТипЗнч(Реквизиты) = Тип("ФиксированнаяСтруктура") Тогда - - Для Каждого КлючИЗначение Из Реквизиты Цикл - СтруктураПолей.Вставить(КлючИЗначение.Ключ, СокрЛП(КлючИЗначение.Значение)); - КонецЦикла; - - ИначеЕсли ТипЗнч(Реквизиты) = Тип("Массив") - Или ТипЗнч(Реквизиты) = Тип("ФиксированныйМассив") Тогда - - Для Каждого Реквизит Из Реквизиты Цикл - Реквизит = СокрЛП(Реквизит); - Попытка - ПсевдонимПоля = СтрЗаменить(Реквизит, ".", ""); - СтруктураПолей.Вставить(ПсевдонимПоля, Реквизит); - Исключение - // Если псевдоним не является ключом. - - // Поиск ошибки доступности полей. - Результат = ПроверитьСуществованиеРеквизитовОбъекта(ПолноеИмяОбъектаМетаданных, Реквизиты); - Если Результат.Ошибка Тогда - ВызватьИсключение пбп_СтроковыеФункцииСлужебныйКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Неверный второй параметр %1 в функции %2: %3'"), - "Реквизиты", "ОбщегоНазначения.ЗначенияРеквизитовОбъекта", Результат.ОписаниеОшибки); - КонецЕсли; - - // Не удалось распознать ошибку, проброс первичной ошибки. - ВызватьИсключение; - - КонецПопытки; - КонецЦикла; - Иначе - ВызватьИсключение пбп_СтроковыеФункцииСлужебныйКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Неверный тип второго параметра %1 в функции %2: %3.'"), - "Реквизиты", "ОбщегоНазначения.ЗначенияРеквизитовОбъекта", Строка(ТипЗнч(Реквизиты))); - КонецЕсли; - - // Подготовка результата (после выполнения запроса переопределится). - Результат = Новый Структура; - - // Формирование текста запроса к выбираемым полям. - ТекстЗапросаПолей = ""; - Для каждого КлючИЗначение Из СтруктураПолей Цикл - - ИмяПоля = ?(ЗначениеЗаполнено(КлючИЗначение.Значение), - КлючИЗначение.Значение, - КлючИЗначение.Ключ); - ПсевдонимПоля = КлючИЗначение.Ключ; - - ТекстЗапросаПолей = - ТекстЗапросаПолей + ?(ПустаяСтрока(ТекстЗапросаПолей), "", ",") + " - | " + ИмяПоля + " КАК " + ПсевдонимПоля; - - // Предварительное добавление поля по псевдониму в возвращаемый результат. - Результат.Вставить(ПсевдонимПоля); - - КонецЦикла; - - // Если предопределенного нет в ИБ. - // - приведение результата к отсутствию объекта в ИБ или передаче пустой ссылки. - Если Ссылка = Неопределено Тогда - Возврат Результат; - КонецЕсли; - - Если Тип("Структура") = ТипЗнч(Реквизиты) - Или Тип("ФиксированнаяСтруктура") = ТипЗнч(Реквизиты) Тогда - Реквизиты = Новый Массив; - Для Каждого КлючИЗначение Из СтруктураПолей Цикл - ИмяПоля = ?(ЗначениеЗаполнено(КлючИЗначение.Значение), - КлючИЗначение.Значение, - КлючИЗначение.Ключ); - Реквизиты.Добавить(ИмяПоля); - КонецЦикла; - КонецЕсли; - - РеквизитыЧерезТочку = Новый Массив; - Для Индекс = -Реквизиты.ВГраница() По 0 Цикл - ИмяПоля = Реквизиты[-Индекс]; - Если СтрНайти(ИмяПоля, ".") Тогда - РеквизитыЧерезТочку.Добавить(ИмяПоля); - Реквизиты.Удалить(-Индекс); - КонецЕсли; - КонецЦикла; - - Если ЗначениеЗаполнено(Реквизиты) Тогда - ЗначенияРеквизитовОбъекта = ЗначенияРеквизитовОбъектов(пбп_ОбщегоНазначенияСлужебныйКлиентСервер.ЗначениеВМассиве(Ссылка), Реквизиты, ВыбратьРазрешенные, КодЯзыка)[Ссылка]; - Если ЗначенияРеквизитовОбъекта <> Неопределено Тогда - Для Каждого КлючИЗначение Из СтруктураПолей Цикл - ИмяПоля = ?(ЗначениеЗаполнено(КлючИЗначение.Значение), - КлючИЗначение.Значение, - КлючИЗначение.Ключ); - Если СтрНайти(ИмяПоля, ".") = 0 И ЗначенияРеквизитовОбъекта.Свойство(ИмяПоля) Тогда - Результат[КлючИЗначение.Ключ] = ЗначенияРеквизитовОбъекта[ИмяПоля]; - КонецЕсли; - КонецЦикла; - КонецЕсли; - КонецЕсли; - - Если Не ЗначениеЗаполнено(РеквизитыЧерезТочку) Тогда - Возврат Результат; - КонецЕсли; - - Реквизиты = РеквизитыЧерезТочку; - - ТекстЗапроса = - "ВЫБРАТЬ РАЗРЕШЕННЫЕ - |&ТекстЗапросаПолей - |ИЗ - | &ПолноеИмяОбъектаМетаданных КАК ПсевдонимЗаданнойТаблицы - |ГДЕ - | ПсевдонимЗаданнойТаблицы.Ссылка = &Ссылка"; - - Если Не ВыбратьРазрешенные Тогда - ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "РАЗРЕШЕННЫЕ", ""); // @Query-part-1 - КонецЕсли; - - ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ТекстЗапросаПолей", ТекстЗапросаПолей); - ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ПолноеИмяОбъектаМетаданных", ПолноеИмяОбъектаМетаданных); - - // Выполнение запроса. - Запрос = Новый Запрос; - Запрос.УстановитьПараметр("Ссылка", Ссылка); - Запрос.Текст = ТекстЗапроса; - - Попытка - Выборка = Запрос.Выполнить().Выбрать(); - Исключение - - // Если реквизиты были переданы строкой, то они уже конвертированы в массив. - // Если реквизиты - массив, оставляем без изменений. - // Если реквизиты - структура - конвертируем в массив. - // В остальных случаях уже было бы выброшено исключение. - Если Тип("Структура") = ТипЗнч(Реквизиты) - Или Тип("ФиксированнаяСтруктура") = ТипЗнч(Реквизиты) Тогда - Реквизиты = Новый Массив; - Для каждого КлючИЗначение Из СтруктураПолей Цикл - ИмяПоля = ?(ЗначениеЗаполнено(КлючИЗначение.Значение), - КлючИЗначение.Значение, - КлючИЗначение.Ключ); - Реквизиты.Добавить(ИмяПоля); - КонецЦикла; - КонецЕсли; - - // Поиск ошибки доступности полей. - Результат = ПроверитьСуществованиеРеквизитовОбъекта(ПолноеИмяОбъектаМетаданных, Реквизиты); - Если Результат.Ошибка Тогда - ВызватьИсключение пбп_СтроковыеФункцииСлужебныйКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Неверный второй параметр %1 в функции %2: %3'"), - "Реквизиты", "ОбщегоНазначения.ЗначенияРеквизитовОбъекта", Результат.ОписаниеОшибки); - КонецЕсли; - - // Не удалось распознать ошибку, проброс первичной ошибки. - ВызватьИсключение; - - КонецПопытки; - - // Заполнение реквизитов. - Если Выборка.Следующий() Тогда - ЗаполнитьЗначенияСвойств(Результат, Выборка); - КонецЕсли; - - Возврат Результат; - -КонецФункции - -// Аналог меотда БСП Возвращает код основного языка информационной базы, например "ru". -// На котором программно записываются автогенерируемые строки в информационную базу. -// Например, при начальном заполнении информационной базы данными из макета, автогенерации комментария -// к проводке или определении значения параметра ИмяСобытия метода ЗаписьЖурналаРегистрации. -// -// Возвращаемое значение: -// Строка -// -Функция КодОсновногоЯзыка() Экспорт - - Если ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда - МодульМультиязычностьСервер = ОбщийМодуль("МультиязычностьСервер"); - Возврат МодульМультиязычностьСервер.КодОсновногоЯзыка(); - КонецЕсли; - - Возврат Метаданные.ОсновнойЯзык.КодЯзыка; - -КонецФункции - -// Аналог метода БСП. Возвращает значения реквизитов, прочитанные из информационной базы для нескольких объектов. -// Рекомендуется использовать вместо обращения к реквизитам объекта через точку от ссылки на объект -// для быстрого чтения отдельных реквизитов объекта из базы данных. -// -// Если необходимо зачитать реквизит независимо от прав текущего пользователя, -// то следует использовать предварительный переход в привилегированный режим. -// -// Если передано имя несуществующего реквизита, то вызывается исключение "Поле объекта не существует". -// -// Параметры: -// Ссылки - Массив из ЛюбаяСсылка -// - ФиксированныйМассив из ЛюбаяСсылка - ссылки на объекты. -// Если массив пуст, то результатом будет пустое соответствие. -// Реквизиты - Строка - имена реквизитов перечисленные через запятую, в формате требований к свойствам -// структуры. Например, "Код, Наименование, Родитель". -// - Массив из Строка -// - ФиксированныйМассив из Строка - имена реквизитов в формате требований к свойствам структуры. -// ВыбратьРазрешенные - Булево - если Истина, то запрос к объектам выполняется с учетом прав пользователя; -// если какой-либо объект будет исключен из выборки по правам, то этот объект -// будет исключен и из результата; -// если Ложь, то возникнет исключение при отсутствии прав на таблицу -// или любой из реквизитов. -// КодЯзыка - Строка - код языка для мультиязычного реквизита. Значение по умолчанию - основной язык конфигурации. -// -// Возвращаемое значение: -// Соответствие из КлючИЗначение - список объектов и значений их реквизитов: -// * Ключ - ЛюбаяСсылка - ссылка на объект; -// * Значение - Структура: -// ** Ключ - Строка - имя реквизита; -// ** Значение - Произвольный - значение реквизита. -// -Функция ЗначенияРеквизитовОбъектов(Ссылки, Знач Реквизиты, ВыбратьРазрешенные = Ложь, Знач КодЯзыка = Неопределено) Экспорт - - Если ТипЗнч(Реквизиты) = Тип("Массив") Или ТипЗнч(Реквизиты) = Тип("ФиксированныйМассив") Тогда - Реквизиты = СтрСоединить(Реквизиты, ","); - КонецЕсли; - - Если ПустаяСтрока(Реквизиты) Тогда - ВызватьИсключение пбп_СтроковыеФункцииСлужебныйКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Неверный второй параметр %1 в функции %2: - |Поле объекта должно быть указано.'"), "Реквизиты", "ОбщегоНазначения.ЗначенияРеквизитовОбъектов"); - КонецЕсли; - - Если СтрНайти(Реквизиты, ".") <> 0 Тогда - ВызватьИсключение пбп_СтроковыеФункцииСлужебныйКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Неверный второй параметр %1 в функции %2: - |Обращение через точку не поддерживается.'"), "Реквизиты", "ОбщегоНазначения.ЗначенияРеквизитовОбъектов"); - КонецЕсли; - - ЗначенияРеквизитов = Новый Соответствие; - Если Ссылки.Количество() = 0 Тогда - Возврат ЗначенияРеквизитов; - КонецЕсли; - - Если ЗначениеЗаполнено(КодЯзыка) Тогда - КодЯзыка = СтрРазделить(КодЯзыка, "_", Истина)[0]; - КонецЕсли; - - РеквизитыТекстЗапроса = Реквизиты; - - СсылкиПоТипам = Новый Соответствие; - Для Каждого Ссылка Из Ссылки Цикл - Тип = ТипЗнч(Ссылка); - Если СсылкиПоТипам[Тип] = Неопределено Тогда - СсылкиПоТипам[Тип] = Новый Массив; - КонецЕсли; - ЭлементПоТипу = СсылкиПоТипам[Тип]; // Массив - ЭлементПоТипу.Добавить(Ссылка); - КонецЦикла; - - ТекстыЗапросов = Новый Массив; - ПараметрыЗапроса = Новый Структура; - - ИменаОбъектовМетаданных = Новый Массив; - - Для Каждого СсылкиПоТипу Из СсылкиПоТипам Цикл - Тип = СсылкиПоТипу.Ключ; - ОбъектМетаданных = Метаданные.НайтиПоТипу(Тип); - Если ОбъектМетаданных = Неопределено Тогда - ВызватьИсключение пбп_СтроковыеФункцииСлужебныйКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Неверный первый параметр %1 в функции %2: - |Значения массива должны быть ссылками.'"), "Ссылки", "ОбщегоНазначения.ЗначенияРеквизитовОбъектов"); - КонецЕсли; - - ПолноеИмяОбъектаМетаданных = ОбъектМетаданных.ПолноеИмя(); - ИменаОбъектовМетаданных.Добавить(ПолноеИмяОбъектаМетаданных); - - ТекстЗапроса = - "ВЫБРАТЬ РАЗРЕШЕННЫЕ - | Ссылка, - | &Реквизиты - |ИЗ - | &ПолноеИмяОбъектаМетаданных КАК ПсевдонимЗаданнойТаблицы - |ГДЕ - | ПсевдонимЗаданнойТаблицы.Ссылка В (&Ссылки)"; - Если Не ВыбратьРазрешенные Или ТекстыЗапросов.Количество() > 0 Тогда - ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "РАЗРЕШЕННЫЕ", ""); // @Query-part-1 - КонецЕсли; - ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&Реквизиты", РеквизитыТекстЗапроса); - ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ПолноеИмяОбъектаМетаданных", ПолноеИмяОбъектаМетаданных); - ИмяПараметра = "Ссылки" + СтрЗаменить(ПолноеИмяОбъектаМетаданных, ".", ""); - ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&Ссылки", "&" + ИмяПараметра); // @Query-part-1 - ПараметрыЗапроса.Вставить(ИмяПараметра, СсылкиПоТипу.Значение); - - ТекстыЗапросов.Добавить(ТекстЗапроса); - КонецЦикла; - - ТекстЗапроса = СтрСоединить(ТекстыЗапросов, Символы.ПС + "ОБЪЕДИНИТЬ ВСЕ" + Символы.ПС); - - Запрос = Новый Запрос(ТекстЗапроса); - Запрос.УстановитьПараметр("КодЯзыка", КодЯзыка); - Для Каждого Параметр Из ПараметрыЗапроса Цикл - Запрос.УстановитьПараметр(Параметр.Ключ, Параметр.Значение); - КонецЦикла; - - Попытка - Выборка = Запрос.Выполнить().Выбрать(); - Исключение - - // Удаление пробелов. - Реквизиты = СтрЗаменить(Реквизиты, " ", ""); - // Преобразование параметра в массив полей. - Реквизиты = СтрРазделить(Реквизиты, ","); - - // Поиск ошибки доступности полей. - СписокОшибок = Новый Массив; - Для Каждого ПолноеИмяОбъектаМетаданных Из ИменаОбъектовМетаданных Цикл - Результат = ПроверитьСуществованиеРеквизитовОбъекта(ПолноеИмяОбъектаМетаданных, Реквизиты); - Если Результат.Ошибка Тогда - СписокОшибок.Добавить(Результат.ОписаниеОшибки); - КонецЕсли; - КонецЦикла; - - Если ЗначениеЗаполнено(СписокОшибок) Тогда - ВызватьИсключение пбп_СтроковыеФункцииСлужебныйКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Неверный второй параметр %1 в функции %2: %3'"), - "Реквизиты", "ОбщегоНазначения.ЗначенияРеквизитовОбъектов", СтрСоединить(СписокОшибок, Символы.ПС)); - КонецЕсли; - - // Не удалось распознать ошибку, проброс первичной ошибки. - ВызватьИсключение; - - КонецПопытки; - - Пока Выборка.Следующий() Цикл - Результат = Новый Структура(Реквизиты); - ЗаполнитьЗначенияСвойств(Результат, Выборка); - ЗначенияРеквизитов[Выборка.Ссылка] = Результат; - - КонецЦикла; - - Возврат ЗначенияРеквизитов; - -КонецФункции - -// Аналог метода БСП. Возвращает значения реквизита, прочитанного из информационной базы по ссылке на объект. -// Рекомендуется использовать вместо обращения к реквизитам объекта через точку от ссылки на объект -// для быстрого чтения отдельных реквизитов объекта из базы данных. -// -// Если необходимо зачитать реквизит независимо от прав текущего пользователя, -// то следует использовать предварительный переход в привилегированный режим. -// -// Если передано имя несуществующего реквизита, то вызывается исключение "Поле объекта не существует". -// -// Параметры: -// Ссылка - ЛюбаяСсылка - объект, значения реквизитов которого необходимо получить. -// - Строка - полное имя предопределенного элемента, значения реквизитов которого необходимо получить. -// ИмяРеквизита - Строка - имя получаемого реквизита. -// Допускается указание имени реквизита через точку, но при этом параметр КодЯзыка для -// такого реквизита учитываться не будет. -// ВыбратьРазрешенные - Булево - если Истина, то запрос к объекту выполняется с учетом прав пользователя; -// если есть ограничение на уровне записей, то возвращается Неопределено; -// если нет прав для работы с таблицей, то возникнет исключение; -// если Ложь, то возникнет исключение при отсутствии прав на таблицу -// или любой из реквизитов. -// КодЯзыка - Строка - код языка для мультиязычного реквизита. Значение по умолчанию - основной язык конфигурации. -// -// Возвращаемое значение: -// Произвольный - если в параметр Ссылка передана пустая ссылка, то возвращается Неопределено. -// Если в параметр Ссылка передана ссылка несуществующего объекта (битая ссылка), -// то возвращается Неопределено. -// -Функция ЗначениеРеквизитаОбъекта(Ссылка, ИмяРеквизита, ВыбратьРазрешенные = Ложь, Знач КодЯзыка = Неопределено) Экспорт - - Если ПустаяСтрока(ИмяРеквизита) Тогда - ВызватьИсключение пбп_СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Неверный второй параметр %1 в функции %2: - |Имя реквизита должно быть заполнено.'"), "ИмяРеквизита", "ОбщегоНазначения.ЗначениеРеквизитаОбъекта"); - КонецЕсли; - - Результат = ЗначенияРеквизитовОбъекта(Ссылка, ИмяРеквизита, ВыбратьРазрешенные, КодЯзыка); - Возврат Результат[СтрЗаменить(ИмяРеквизита, ".", "")]; - -КонецФункции - -// Аналог метода БСП. Возвращает ОбъектМетаданных, быстро найденный по полному имени. -// Более производительный аналог метода платформы Метаданные.НайтиПоПолномуИмени -// для корневых объектов метаданных. -// -// Параметры: -// ПолноеИмя - Строка - полное имя объекта метаданных, например, Справочник.Организации -// -// Возвращаемое значение: -// ОбъектМетаданных - когда найден -// Неопределено - когда не найден -// -Функция ОбъектМетаданныхПоПолномуИмени(ПолноеИмя) Экспорт - - ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ПолноеИмя); - - Возврат ОбъектМетаданных; - -КонецФункции - -// Аналог метода БСП. Проверяет существование указанных реквизитов у объекта метаданных. -// -// Параметры: -// ПолноеИмяОбъектаМетаданных - Строка - полное имя проверяемого объекта. -// ПроверяемыеВыражения - Массив - имена полей или проверяемые выражения объекта метаданных. -// -// Возвращаемое значение: -// Структура: -// * Ошибка - Булево - найдена ошибка. -// * ОписаниеОшибки - Строка - описание найденных ошибок. -// -// Пример: -// -// Реквизиты = Новый Массив; -// Реквизиты.Добавить("Номер"); -// Реквизиты.Добавить("Валюта.НаименованиеПолное"); -// -// Результат = ОбщегоНазначения.ПроверитьСуществованиеРеквизитовОбъекта("Документ._ДемоЗаказПокупателя", Реквизиты); -// -// Если Результат.Ошибка Тогда -// ВызватьИсключение Результат.ОписаниеОшибки; -// КонецЕсли; -// -Функция ПроверитьСуществованиеРеквизитовОбъекта(ПолноеИмяОбъектаМетаданных, ПроверяемыеВыражения) - - МетаданныеОбъекта = ОбъектМетаданныхПоПолномуИмени(ПолноеИмяОбъектаМетаданных); - Если МетаданныеОбъекта = Неопределено Тогда - Возврат Новый Структура("Ошибка, ОписаниеОшибки", Истина, - пбп_СтроковыеФункцииСлужебныйКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Несуществующий объект метаданных ""%1"".'"), ПолноеИмяОбъектаМетаданных)); - КонецЕсли; - - // Разрешение вызова из безопасного режима внешней обработки или расширения. - // Информация о доступности полей источника схемы при проверке метаданных не является секретной. - УстановитьПривилегированныйРежим(Истина); - - Схема = Новый СхемаЗапроса; - Пакет = Схема.ПакетЗапросов.Добавить(Тип("ЗапросВыбораСхемыЗапроса")); - Оператор = Пакет.Операторы.Получить(0); - - Источник = Оператор.Источники.Добавить(ПолноеИмяОбъектаМетаданных, "Таблица"); - ТекстОшибки = ""; - - Возврат Новый Структура("Ошибка, ОписаниеОшибки", Не ПустаяСтрока(ТекстОшибки), ТекстОшибки); - -КонецФункции - -// Аналог метода БСП. Создает объект ОписаниеТипов, содержащий тип Строка. -// -// Параметры: -// ДлинаСтроки - Число - длина строки. -// -// Возвращаемое значение: -// ОписаниеТипов - описание типа Строка. -// -Функция ОписаниеТипаСтрока(ДлинаСтроки) Экспорт - - Возврат Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(ДлинаСтроки)); - -КонецФункции - -// Аналог метода БСП. Создает объект ОписаниеТипов, содержащий тип Число. -// -// Параметры: -// Разрядность - Число - общее количество разрядов числа (количество разрядов -// целой части плюс количество разрядов дробной части). -// РазрядностьДробнойЧасти - Число - число разрядов дробной части. -// ЗнакЧисла - ДопустимыйЗнак - допустимый знак числа. -// -// Возвращаемое значение: -// ОписаниеТипов - описание типа Число. -// -Функция ОписаниеТипаЧисло(Разрядность, РазрядностьДробнойЧасти = 0, Знач ЗнакЧисла = Неопределено) Экспорт - - Если ЗнакЧисла = Неопределено Тогда - ЗнакЧисла = ДопустимыйЗнак.Любой; - КонецЕсли; - - Возврат Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(Разрядность, РазрядностьДробнойЧасти, ЗнакЧисла)); - -КонецФункции - -// Аналог метода БСП. Возвращает значение настройки рабочей даты для пользователя или текущей даты сеанса, -// если рабочая дата пользователя не задана. -// -// Параметры: -// ИмяПользователя - Строка - имя пользователя, для которого запрашивается рабочая дата. -// Если не задано, то устанавливается для текущего пользователя. -// -// Возвращаемое значение: -// Дата - значение настройки рабочей даты пользователя или текущая дата сеанса, если настройка не задана. -// -Функция ТекущаяДатаПользователя(ИмяПользователя = Неопределено) Экспорт - - Возврат ТекущаяДатаСеанса(); - -КонецФункции - -#Область СериализацияXML - -// Аналог метода БСП. Преобразует (сериализует) любое значение в XML-строку. -// Преобразованы в могут быть только те объекты, для которых в синтакс-помощнике указано, что они сериализуются. -// См. также ЗначениеИзСтрокиXML. -// -// Параметры: -// Значение - Произвольный - значение, которое необходимо сериализовать в XML-строку. -// -// Возвращаемое значение: -// Строка - XML-строка. -// -Функция ЗначениеВСтрокуXML(Значение) Экспорт - - ЗаписьXML = Новый ЗаписьXML; - ЗаписьXML.УстановитьСтроку(); - СериализаторXDTO.ЗаписатьXML(ЗаписьXML, Значение, НазначениеТипаXML.Явное); - - Возврат ЗаписьXML.Закрыть(); -КонецФункции - -// Аналог метода БСП. Выполняет преобразование (десериализацию) XML-строки в значение. -// См. также ЗначениеВСтрокуXML. -// -// Параметры: -// СтрокаXML - Строка - XML-строка, с сериализованным объектом.. -// -// Возвращаемое значение: -// Произвольный - значение, полученное из переданной XML-строки. -// -Функция ЗначениеИзСтрокиXML(СтрокаXML) Экспорт - - ЧтениеXML = Новый ЧтениеXML; - ЧтениеXML.УстановитьСтроку(СтрокаXML); - - Возврат СериализаторXDTO.ПрочитатьXML(ЧтениеXML); -КонецФункции - -#КонецОбласти - -// Аналог метода БСП. Возвращает менеджер объекта по полному имени объекта метаданных. -// Ограничение: не обрабатываются точки маршрутов бизнес-процессов. -// -// Параметры: -// ПолноеИмя - Строка - полное имя объекта метаданных. Пример: "Справочник.Организации". -// -// Возвращаемое значение: -// СправочникМенеджер, ДокументМенеджер, ОбработкаМенеджер, РегистрСведенийМенеджер - менеджер объекта. -// -// Пример: -// МенеджерСправочника = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени("Справочник.Организации"); -// ПустаяСсылка = МенеджерСправочника.ПустаяСсылка(); -// -Функция МенеджерОбъектаПоПолномуИмени(ПолноеИмя) Экспорт - - Перем КлассОМ, ИмяОМ, Менеджер; - - ЧастиИмени = СтрРазделить(ПолноеИмя, "."); - - Если ЧастиИмени.Количество() >= 2 Тогда - КлассОМ = ЧастиИмени[0]; - ИмяОМ = ЧастиИмени[1]; - Иначе - Менеджер = Неопределено; - КонецЕсли; - - Если ВРег(КлассОМ) = "ПЛАНОБМЕНА" Тогда - Менеджер = ПланыОбмена; - - ИначеЕсли ВРег(КлассОМ) = "СПРАВОЧНИК" Тогда - Менеджер = Справочники; - - ИначеЕсли ВРег(КлассОМ) = "ДОКУМЕНТ" Тогда - Менеджер = Документы; - - ИначеЕсли ВРег(КлассОМ) = "ЖУРНАЛДОКУМЕНТОВ" Тогда - Менеджер = ЖурналыДокументов; - - ИначеЕсли ВРег(КлассОМ) = "ПЕРЕЧИСЛЕНИЕ" Тогда - Менеджер = Перечисления; - - ИначеЕсли ВРег(КлассОМ) = "ОТЧЕТ" Тогда - Менеджер = Отчеты; - - ИначеЕсли ВРег(КлассОМ) = "ОБРАБОТКА" Тогда - Менеджер = Обработки; - - ИначеЕсли ВРег(КлассОМ) = "ПЛАНВИДОВХАРАКТЕРИСТИК" Тогда - Менеджер = ПланыВидовХарактеристик; - - ИначеЕсли ВРег(КлассОМ) = "ПЛАНСЧЕТОВ" Тогда - Менеджер = ПланыСчетов; - - ИначеЕсли ВРег(КлассОМ) = "ПЛАНВИДОВРАСЧЕТА" Тогда - Менеджер = ПланыВидовРасчета; - - ИначеЕсли ВРег(КлассОМ) = "РЕГИСТРСВЕДЕНИЙ" Тогда - Менеджер = РегистрыСведений; - - ИначеЕсли ВРег(КлассОМ) = "РЕГИСТРНАКОПЛЕНИЯ" Тогда - Менеджер = РегистрыНакопления; - - ИначеЕсли ВРег(КлассОМ) = "РЕГИСТРБУХГАЛТЕРИИ" Тогда - Менеджер = РегистрыБухгалтерии; - - ИначеЕсли ВРег(КлассОМ) = "РЕГИСТРРАСЧЕТА" Тогда - - Если ЧастиИмени.Количество() = 2 Тогда - Менеджер = РегистрыРасчета; - - ИначеЕсли ЧастиИмени.Количество() = 4 Тогда - КлассПодчиненногоОМ = ЧастиИмени[2]; - ИмяПодчиненногоОМ = ЧастиИмени[3]; - - Если ВРег(КлассПодчиненногоОМ) = "ПЕРЕРАСЧЕТ" Тогда - Менеджер = РегистрыРасчета[ИмяОМ].Перерасчеты; - ИмяОм = ИмяПодчиненногоОМ; - - Иначе - Менеджер = Неопределено; - КонецЕсли; - - Иначе - Менеджер = Неопределено; - КонецЕсли; - - ИначеЕсли ВРег(КлассОМ) = "БИЗНЕСПРОЦЕСС" Тогда - Менеджер = БизнесПроцессы; - - ИначеЕсли ВРег(КлассОМ) = "ЗАДАЧА" Тогда - Менеджер = Задачи; - - ИначеЕсли ВРег(КлассОМ) = "КОНСТАНТА" Тогда - Менеджер = Константы; - - ИначеЕсли ВРег(КлассОМ) = "ПОСЛЕДОВАТЕЛЬНОСТЬ" Тогда - Менеджер = Последовательности; - - Иначе - Менеджер = Неопределено; - КонецЕсли; - - Если Менеджер = Неопределено Тогда - ПроверитьОбъектМетаданныхСуществует(ПолноеИмя); - ВызватьИсключение пбп_СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Объект метаданных ""%1"" не имеет менеджера объекта.'; - |en = 'Metadata object %1 has no object manager.'"), ПолноеИмя); - КонецЕсли; - - Попытка - Возврат Менеджер[ИмяОМ]; - Исключение - ПроверитьОбъектМетаданныхСуществует(ПолноеИмя); - ВызватьИсключение; - КонецПопытки; - -КонецФункции - -// Аналог метода БСП. Возвращает менеджер объекта по ссылке на объект. -// Ограничение: не обрабатываются точки маршрутов бизнес-процессов. -// См. также ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени. -// -// Параметры: -// Ссылка - ЛюбаяСсылка - объект, менеджер которого требуется получить. -// -// Возвращаемое значение: -// СправочникМенеджер, ДокументМенеджер, ОбработкаМенеджер, РегистрСведенийМенеджер - менеджер объекта. -// -// Пример: -// МенеджерСправочника = ОбщегоНазначения.МенеджерОбъектаПоСсылке(СсылкаНаОрганизацию); -// ПустаяСсылка = МенеджерСправочника.ПустаяСсылка(); -// -Функция МенеджерОбъектаПоСсылке(Ссылка) Экспорт - - ИмяОбъекта = Ссылка.Метаданные().Имя; - ТипСсылки = ТипЗнч(Ссылка); - - Если Справочники.ТипВсеСсылки().СодержитТип(ТипСсылки) Тогда - Возврат Справочники[ИмяОбъекта]; - - ИначеЕсли Документы.ТипВсеСсылки().СодержитТип(ТипСсылки) Тогда - Возврат Документы[ИмяОбъекта]; - - ИначеЕсли БизнесПроцессы.ТипВсеСсылки().СодержитТип(ТипСсылки) Тогда - Возврат БизнесПроцессы[ИмяОбъекта]; - - ИначеЕсли ПланыВидовХарактеристик.ТипВсеСсылки().СодержитТип(ТипСсылки) Тогда - Возврат ПланыВидовХарактеристик[ИмяОбъекта]; - - ИначеЕсли ПланыСчетов.ТипВсеСсылки().СодержитТип(ТипСсылки) Тогда - Возврат ПланыСчетов[ИмяОбъекта]; - - ИначеЕсли ПланыВидовРасчета.ТипВсеСсылки().СодержитТип(ТипСсылки) Тогда - Возврат ПланыВидовРасчета[ИмяОбъекта]; - - ИначеЕсли Задачи.ТипВсеСсылки().СодержитТип(ТипСсылки) Тогда - Возврат Задачи[ИмяОбъекта]; - - ИначеЕсли ПланыОбмена.ТипВсеСсылки().СодержитТип(ТипСсылки) Тогда - Возврат ПланыОбмена[ИмяОбъекта]; - - ИначеЕсли Перечисления.ТипВсеСсылки().СодержитТип(ТипСсылки) Тогда - Возврат Перечисления[ИмяОбъекта]; - Иначе - Возврат Неопределено; - КонецЕсли; - -КонецФункции - -#Область Данные - -// Аналог метода БСП. Вычисляет контрольную сумму для произвольных данных по указанному алгоритму. -// -// Параметры: -// Данные - Произвольный - любое сериализуемое значение. -// Алгоритм - ХешФункция - алгоритм расчета контрольной суммы. По умолчанию, MD5. -// -// Возвращаемое значение: -// Строка - контрольная сумма строкой без пробелов (например 32 символа). -// -Функция КонтрольнаяСуммаСтрокой(Знач Данные, Знач Алгоритм = Неопределено) Экспорт - - Если Алгоритм = Неопределено Тогда - Алгоритм = ХешФункция.MD5; - КонецЕсли; - - ХешированиеДанных = Новый ХешированиеДанных(Алгоритм); - Если ТипЗнч(Данные) <> Тип("Строка") И ТипЗнч(Данные) <> Тип("ДвоичныеДанные") Тогда - Данные = ЗначениеВСтрокуXML(Данные); - КонецЕсли; - ХешированиеДанных.Добавить(Данные); - - Если ТипЗнч(ХешированиеДанных.ХешСумма) = Тип("ДвоичныеДанные") Тогда - Результат = СтрЗаменить(ХешированиеДанных.ХешСумма, " ", ""); - ИначеЕсли ТипЗнч(ХешированиеДанных.ХешСумма) = Тип("Число") Тогда - Результат = Формат(ХешированиеДанных.ХешСумма, "ЧГ="); - КонецЕсли; - - Возврат Результат; - -КонецФункции - -#КонецОбласти - -#Область ТекущееОкружение - -// Аналог метода БСП. Возвращает Истина, если текущий сеанс выполняется на сервере, работающем под управлением ОС Windows. -// -// Возвращаемое значение: -// Булево - Истина, если сервер работает под управлением ОС Windows. -// -Функция ЭтоWindowsСервер() Экспорт - - СистемнаяИнформация = Новый СистемнаяИнформация; - Возврат СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Windows_x86 - Или СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Windows_x86_64; - -КонецФункции - -// Аналог метода БСП. Возвращает Истина, если текущий сеанс выполняется на сервере, работающем под управлением ОС Linux. -// -// Возвращаемое значение: -// Булево - Истина, если сервер работает под управлением ОС Linux. -// -Функция ЭтоLinuxСервер() Экспорт - - СистемнаяИнформация = Новый СистемнаяИнформация; - Возврат СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Linux_x86 - Или СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Linux_x86_64; - -КонецФункции - -#КонецОбласти // ТекущееОкружение - -#Область Прочее - -// Аналог метода БСП. Пока заглушка, см. ОбщегоНазначения.ПриНачалеВыполненияРегламентногоЗадания -Процедура ПриНачалеВыполненияРегламентногоЗадания(РегламентноеЗадание = Неопределено) Экспорт -КонецПроцедуры - -#КонецОбласти // Прочее - -#КонецОбласти - #Область ПользовательскиеФункции // Выполняет пользовательскую функцию с переданными параметрами. @@ -2446,393 +1024,6 @@ КонецФункции -#Область МетодыАналогиБСП - -#Область БезопасноеВыполнениеВнешнегоКода - -// Аналог метода БСП. Проверяет, что переданное имя ИмяПроцедуры является именем экспортной процедуры конфигурации. -// Может использоваться для проверки, что переданная строка не содержит произвольного алгоритма -// на встроенном языке 1С:Предприятия перед использованием его в операторах Выполнить и Вычислить -// при их использовании для динамического вызова методов код конфигурации. -// -// В случае если переданная строка не является именем процедуры конфигурации, генерируется исключение. -// -// Предназначена для вызова из см. процедуру ВыполнитьМетодКонфигурации. -// -// Параметры: -// ИмяПроцедуры - Строка - проверяемое имя экспортной процедуры. -// -Процедура ПроверитьИмяПроцедурыКонфигурации(Знач ИмяПроцедуры) - - ЧастиИмени = СтрРазделить(ИмяПроцедуры, "."); - Если ЧастиИмени.Количество() <> 2 И ЧастиИмени.Количество() <> 3 Тогда - ВызватьИсключение пбп_СтроковыеФункцииСлужебныйКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Неправильный формат параметра %1 (передано значение: ""%2"") в %3.'"), - "ИмяПроцедуры", ИмяПроцедуры, "ОбщегоНазначения.ВыполнитьМетодКонфигурации"); - КонецЕсли; - - ИмяОбъекта = ЧастиИмени[0]; - Если ЧастиИмени.Количество() = 2 И Метаданные.ОбщиеМодули.Найти(ИмяОбъекта) = Неопределено Тогда - ВызватьИсключение пбп_СтроковыеФункцииСлужебныйКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Неправильный формат параметра %1 (передано значение: ""%2"") в %3: - |Не существует общий модуль ""%4"".'"), - "ИмяПроцедуры", ИмяПроцедуры, "ОбщегоНазначения.ВыполнитьМетодКонфигурации", ИмяОбъекта); - КонецЕсли; - - Если ЧастиИмени.Количество() = 3 Тогда - ПолноеИмяОбъекта = ЧастиИмени[0] + "." + ЧастиИмени[1]; - Попытка - Менеджер = МенеджерОбъектаПоИмени(ПолноеИмяОбъекта); - Исключение - Менеджер = Неопределено; - КонецПопытки; - Если Менеджер = Неопределено Тогда - ВызватьИсключение пбп_СтроковыеФункцииСлужебныйКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Неправильный формат параметра %1 (передано значение: ""%2"") в %3: - |Не существует менеджер объекта ""%4"".'"), - "ИмяПроцедуры", ИмяПроцедуры, "ОбщегоНазначения.ВыполнитьМетодКонфигурации", ПолноеИмяОбъекта); - КонецЕсли; - КонецЕсли; - - ИмяМетодаОбъекта = ЧастиИмени[ЧастиИмени.ВГраница()]; - ВременнаяСтруктура = Новый Структура; - Попытка - // Проверка того, что ИмяПроцедуры является допустимым идентификатором. - // Например: МояПроцедура. - ВременнаяСтруктура.Вставить(ИмяМетодаОбъекта); - Исключение - КодОсновногоЯзыка = Метаданные.ОсновнойЯзык.КодЯзыка; - ЗаписьЖурналаРегистрации(НСтр("ru = 'Безопасное выполнение метода'", КодОсновногоЯзыка), - УровеньЖурналаРегистрации.Ошибка, , , ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); - ВызватьИсключение пбп_СтроковыеФункцииСлужебныйКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Неправильный формат параметра %1 (передано значение: ""%2"") в %3: - |Имя метода ""%4"" не соответствует требованиям образования имен процедур и функций.'"), - "ИмяПроцедуры", ИмяПроцедуры, "ОбщегоНазначения.ВыполнитьМетодКонфигурации", ИмяМетодаОбъекта); - КонецПопытки; - -КонецПроцедуры - -// Аналог метода БСП. Возвращает менеджер объекта по имени. -// Ограничение: не обрабатываются точки маршрутов бизнес-процессов. -// -// Параметры: -// Имя - Строка - имя например, "Справочник", "Справочники", "Справочник.Организации". -// -// Возвращаемое значение: -// СправочникиМенеджер -// СправочникМенеджер -// ДокументыМенеджер -// ДокументМенеджер -// ... -// -Функция МенеджерОбъектаПоИмени(Имя) - Перем КлассОМ, ИмяОМ, Менеджер; - - ЧастиИмени = СтрРазделить(Имя, "."); - - Если ЧастиИмени.Количество() > 0 Тогда - КлассОМ = ВРег(ЧастиИмени[0]); - КонецЕсли; - - Если ЧастиИмени.Количество() > 1 Тогда - ИмяОМ = ЧастиИмени[1]; - КонецЕсли; - - Если КлассОМ = "ПЛАНОБМЕНА" - Или КлассОМ = "ПЛАНЫОБМЕНА" Тогда - Менеджер = ПланыОбмена; - - ИначеЕсли КлассОМ = "СПРАВОЧНИК" - Или КлассОМ = "СПРАВОЧНИКИ" Тогда - Менеджер = Справочники; - - ИначеЕсли КлассОМ = "ДОКУМЕНТ" - Или КлассОМ = "ДОКУМЕНТЫ" Тогда - Менеджер = Документы; - - ИначеЕсли КлассОМ = "ЖУРНАЛДОКУМЕНТОВ" - Или КлассОМ = "ЖУРНАЛЫДОКУМЕНТОВ" Тогда - Менеджер = ЖурналыДокументов; - - ИначеЕсли КлассОМ = "ПЕРЕЧИСЛЕНИЕ" - Или КлассОМ = "ПЕРЕЧИСЛЕНИЯ" Тогда - Менеджер = Перечисления; - - ИначеЕсли КлассОМ = "ОБЩИЙМОДУЛЬ" - Или КлассОМ = "ОБЩИЕМОДУЛИ" Тогда - - Возврат ОбщийМодуль(ИмяОМ); - - ИначеЕсли КлассОМ = "ОТЧЕТ" - Или КлассОМ = "ОТЧЕТЫ" Тогда - Менеджер = Отчеты; - - ИначеЕсли КлассОМ = "ОБРАБОТКА" - Или КлассОМ = "ОБРАБОТКИ" Тогда - Менеджер = Обработки; - - ИначеЕсли КлассОМ = "ПЛАНВИДОВХАРАКТЕРИСТИК" - Или КлассОМ = "ПЛАНЫВИДОВХАРАКТЕРИСТИК" Тогда - Менеджер = ПланыВидовХарактеристик; - - ИначеЕсли КлассОМ = "ПЛАНСЧЕТОВ" - Или КлассОМ = "ПЛАНЫСЧЕТОВ" Тогда - Менеджер = ПланыСчетов; - - ИначеЕсли КлассОМ = "ПЛАНВИДОВРАСЧЕТА" - Или КлассОМ = "ПЛАНЫВИДОВРАСЧЕТА" Тогда - Менеджер = ПланыВидовРасчета; - - ИначеЕсли КлассОМ = "РЕГИСТРСВЕДЕНИЙ" - Или КлассОМ = "РЕГИСТРЫСВЕДЕНИЙ" Тогда - Менеджер = РегистрыСведений; - - ИначеЕсли КлассОМ = "РЕГИСТРНАКОПЛЕНИЯ" - Или КлассОМ = "РЕГИСТРЫНАКОПЛЕНИЯ" Тогда - Менеджер = РегистрыНакопления; - - ИначеЕсли КлассОМ = "РЕГИСТРБУХГАЛТЕРИИ" - Или КлассОМ = "РЕГИСТРЫБУХГАЛТЕРИИ" Тогда - Менеджер = РегистрыБухгалтерии; - - ИначеЕсли КлассОМ = "РЕГИСТРРАСЧЕТА" - Или КлассОМ = "РЕГИСТРЫРАСЧЕТА" Тогда - - Если ЧастиИмени.Количество() < 3 Тогда - // Регистр расчета - Менеджер = РегистрыРасчета; - Иначе - КлассПодчиненногоОМ = ВРег(ЧастиИмени[2]); - Если ЧастиИмени.Количество() > 3 Тогда - ИмяПодчиненногоОМ = ЧастиИмени[3]; - КонецЕсли; - Если КлассПодчиненногоОМ = "ПЕРЕРАСЧЕТ" - Или КлассПодчиненногоОМ = "ПЕРЕРАСЧЕТЫ" Тогда - // Перерасчет - Попытка - Менеджер = РегистрыРасчета[ИмяОМ].Перерасчеты; - ИмяОМ = ИмяПодчиненногоОМ; - Исключение - Менеджер = Неопределено; - КонецПопытки; - КонецЕсли; - КонецЕсли; - - ИначеЕсли КлассОМ = "БИЗНЕСПРОЦЕСС" - Или КлассОМ = "БИЗНЕСПРОЦЕССЫ" Тогда - Менеджер = БизнесПроцессы; - - ИначеЕсли КлассОМ = "ЗАДАЧА" - Или КлассОМ = "ЗАДАЧИ" Тогда - Менеджер = Задачи; - - ИначеЕсли КлассОМ = "КОНСТАНТА" - Или КлассОМ = "КОНСТАНТЫ" Тогда - Менеджер = Константы; - - ИначеЕсли КлассОМ = "ПОСЛЕДОВАТЕЛЬНОСТЬ" - Или КлассОМ = "ПОСЛЕДОВАТЕЛЬНОСТИ" Тогда - Менеджер = Последовательности; - КонецЕсли; - - Если Менеджер <> Неопределено Тогда - Если ЗначениеЗаполнено(ИмяОМ) Тогда - Попытка - Возврат Менеджер[ИмяОМ]; - Исключение - Менеджер = Неопределено; - КонецПопытки; - Иначе - Возврат Менеджер; - КонецЕсли; - КонецЕсли; - - ВызватьИсключение пбп_СтроковыеФункцииСлужебныйКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Не удалось получить менеджер для объекта ""%1""'"), Имя); - -КонецФункции - -#КонецОбласти - -#Область УсловныеВызовы - -// Аналог метода БСП. Возвращает серверный модуль менеджера по имени объекта. -Функция СерверныйМодульМенеджера(Имя) - ОбъектНайден = Ложь; - - ЧастиИмени = СтрРазделить(Имя, "."); - Если ЧастиИмени.Количество() = 2 Тогда - - ИмяВида = ВРег(ЧастиИмени[0]); - ИмяОбъекта = ЧастиИмени[1]; - - Если ИмяВида = ВРег("Константы") Тогда - Если Метаданные.Константы.Найти(ИмяОбъекта) <> Неопределено Тогда - ОбъектНайден = Истина; - КонецЕсли; - ИначеЕсли ИмяВида = ВРег("РегистрыСведений") Тогда - Если Метаданные.РегистрыСведений.Найти(ИмяОбъекта) <> Неопределено Тогда - ОбъектНайден = Истина; - КонецЕсли; - ИначеЕсли ИмяВида = ВРег("РегистрыНакопления") Тогда - Если Метаданные.РегистрыНакопления.Найти(ИмяОбъекта) <> Неопределено Тогда - ОбъектНайден = Истина; - КонецЕсли; - ИначеЕсли ИмяВида = ВРег("РегистрыБухгалтерии") Тогда - Если Метаданные.РегистрыБухгалтерии.Найти(ИмяОбъекта) <> Неопределено Тогда - ОбъектНайден = Истина; - КонецЕсли; - ИначеЕсли ИмяВида = ВРег("РегистрыРасчета") Тогда - Если Метаданные.РегистрыРасчета.Найти(ИмяОбъекта) <> Неопределено Тогда - ОбъектНайден = Истина; - КонецЕсли; - ИначеЕсли ИмяВида = ВРег("Справочники") Тогда - Если Метаданные.Справочники.Найти(ИмяОбъекта) <> Неопределено Тогда - ОбъектНайден = Истина; - КонецЕсли; - ИначеЕсли ИмяВида = ВРег("Документы") Тогда - Если Метаданные.Документы.Найти(ИмяОбъекта) <> Неопределено Тогда - ОбъектНайден = Истина; - КонецЕсли; - ИначеЕсли ИмяВида = ВРег("Отчеты") Тогда - Если Метаданные.Отчеты.Найти(ИмяОбъекта) <> Неопределено Тогда - ОбъектНайден = Истина; - КонецЕсли; - ИначеЕсли ИмяВида = ВРег("Обработки") Тогда - Если Метаданные.Обработки.Найти(ИмяОбъекта) <> Неопределено Тогда - ОбъектНайден = Истина; - КонецЕсли; - ИначеЕсли ИмяВида = ВРег("БизнесПроцессы") Тогда - Если Метаданные.БизнесПроцессы.Найти(ИмяОбъекта) <> Неопределено Тогда - ОбъектНайден = Истина; - КонецЕсли; - ИначеЕсли ИмяВида = ВРег("ЖурналыДокументов") Тогда - Если Метаданные.ЖурналыДокументов.Найти(ИмяОбъекта) <> Неопределено Тогда - ОбъектНайден = Истина; - КонецЕсли; - ИначеЕсли ИмяВида = ВРег("Задачи") Тогда - Если Метаданные.Задачи.Найти(ИмяОбъекта) <> Неопределено Тогда - ОбъектНайден = Истина; - КонецЕсли; - ИначеЕсли ИмяВида = ВРег("ПланыСчетов") Тогда - Если Метаданные.ПланыСчетов.Найти(ИмяОбъекта) <> Неопределено Тогда - ОбъектНайден = Истина; - КонецЕсли; - ИначеЕсли ИмяВида = ВРег("ПланыОбмена") Тогда - Если Метаданные.ПланыОбмена.Найти(ИмяОбъекта) <> Неопределено Тогда - ОбъектНайден = Истина; - КонецЕсли; - ИначеЕсли ИмяВида = ВРег("ПланыВидовХарактеристик") Тогда - Если Метаданные.ПланыВидовХарактеристик.Найти(ИмяОбъекта) <> Неопределено Тогда - ОбъектНайден = Истина; - КонецЕсли; - ИначеЕсли ИмяВида = ВРег("ПланыВидовРасчета") Тогда - Если Метаданные.ПланыВидовРасчета.Найти(ИмяОбъекта) <> Неопределено Тогда - ОбъектНайден = Истина; - КонецЕсли; - КонецЕсли; - - КонецЕсли; - - Если Не ОбъектНайден Тогда - ВызватьИсключение пбп_СтроковыеФункцииСлужебныйКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Объект метаданных ""%1"" не существует.'"), Имя); - КонецЕсли; - - УстановитьБезопасныйРежим(Истина); - Модуль = Вычислить(Имя); - - Возврат Модуль; -КонецФункции - -#КонецОбласти - -#Область ХранилищеНастроек - -// Аналог метода БСП. -// -Процедура ХранилищеСохранить(МенеджерХранилища, КлючОбъекта, КлючНастроек, Настройки, - ОписаниеНастроек, ИмяПользователя, ОбновитьПовторноИспользуемыеЗначения) - - Если Не ПравоДоступа("СохранениеДанныхПользователя", Метаданные) Тогда - Возврат; - КонецЕсли; - - МенеджерХранилища.Сохранить(КлючОбъекта, КлючНастроек(КлючНастроек), Настройки, - ОписаниеНастроек, ИмяПользователя); - - Если ОбновитьПовторноИспользуемыеЗначения Тогда - ОбновитьПовторноИспользуемыеЗначения(); - КонецЕсли; - -КонецПроцедуры - -// Аналог метода БСП. -// -Функция ХранилищеЗагрузить(МенеджерХранилища, КлючОбъекта, КлючНастроек, ЗначениеПоУмолчанию, - ОписаниеНастроек, ИмяПользователя) - - Результат = Неопределено; - - Если ПравоДоступа("СохранениеДанныхПользователя", Метаданные) Тогда - Результат = МенеджерХранилища.Загрузить(КлючОбъекта, КлючНастроек(КлючНастроек), - ОписаниеНастроек, ИмяПользователя); - КонецЕсли; - - Если Результат = Неопределено Тогда - Результат = ЗначениеПоУмолчанию; - КонецЕсли; - - Возврат Результат; - -КонецФункции - -// Аналог метода БСП. -// -Процедура ХранилищеУдалить(МенеджерХранилища, КлючОбъекта, КлючНастроек, ИмяПользователя) - - Если ПравоДоступа("СохранениеДанныхПользователя", Метаданные) Тогда - МенеджерХранилища.Удалить(КлючОбъекта, КлючНастроек(КлючНастроек), ИмяПользователя); - КонецЕсли; - -КонецПроцедуры - -// Аналог метода БСП. Возвращает строку ключа настроек, не превышающую допустимую длину 128 символов. -// Если указанная строка превышает 128, тогда вместо символов сверх 96 символов -// добавляется их хеш-сумма по алгоритму MD5 размером 32 символа. -// -// Параметры: -// Строка - Строка - строка произвольной длины. -// -// Возвращаемое значение: -// Строка - не более 128 символов. -// -Функция КлючНастроек(Знач Строка) - Возврат СократитьСтрокуКонтрольнойСуммой(Строка, 128); -КонецФункции - -#КонецОбласти - -#Область Метаданные - -// Аналог метода БСП. -// -// Параметры: -// ПолноеИмя - Строка - Полное имя объекта метаданных. -// -Процедура ПроверитьОбъектМетаданныхСуществует(ПолноеИмя) - - Если ОбъектМетаданныхПоПолномуИмени(ПолноеИмя) = Неопределено Тогда - ВызватьИсключение пбп_СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Неизвестный тип объекта метаданных ""%1"".'; - |en = 'Unknown metadata object type: ""%1"".'"), ПолноеИмя); - КонецЕсли; - -КонецПроцедуры - -#КонецОбласти - -#КонецОбласти - #Область ПользовательскиеФункции // Процедура - Подставить параметры в функцию @@ -2866,11 +1057,11 @@ Выборка.Наименование, ТипПараметра, Выборка.Тип); - пбп_ОбщегоНазначенияСлужебный.СообщитьПользователю(ТекстСообщения, , , , Отказ); + пбп_Переадресация.СообщитьПользователю(ТекстСообщения, , , , Отказ); КонецЕсли; ИначеЕсли Выборка.Необязательный = Ложь Тогда ТекстСообщения = СтрШаблон(НСтр("ru='Параметр: %1, является обязательным!'"), Выборка.Наименование); - пбп_ОбщегоНазначенияСлужебный.СообщитьПользователю(ТекстСообщения, , , , Отказ); + пбп_Переадресация.СообщитьПользователю(ТекстСообщения, , , , Отказ); КонецЕсли; Если Отказ Тогда diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.xml" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.xml" deleted file mode 100644 index 80129ef2..00000000 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.xml" +++ /dev/null @@ -1,23 +0,0 @@ - - - - - пбп_ОбщегоНазначенияСлужебный - - - ru - Общего назначения служебный - - - - false - false - true - true - false - false - false - DontUse - - - \ No newline at end of file diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Ext/Module.bsl" deleted file mode 100644 index 757e1e4b..00000000 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Ext/Module.bsl" +++ /dev/null @@ -1,227 +0,0 @@ -// Библиотека проектных подсистем для упрощения разработки архитектуры на 1С: Предприятие 8, -// включая доработку типовых конфигураций. -// -// Copyright First BIT company -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// URL: https://github.com/firstBitSportivnaya/PSSL/ -// - -//////////////////////////////////////////////////////////////////////////////// -// Общего назначения (служебный): для серверных функций общего назначения, переадресация на методы БСП или их аналоги - -#Область ПрограммныйИнтерфейс - -#Область ПереадресацияМетодов - -// См. пбп_ОбщегоНазначенияСервер.ВыполнитьМетодКонфигурации. -Процедура ВыполнитьМетодКонфигурации(Знач ИмяМетода, Знач Параметры = Неопределено) Экспорт - - Модуль = ПолучитьМодуль(); - Модуль.ВыполнитьМетодКонфигурации(ИмяМетода, Параметры); - -КонецПроцедуры - -// См. пбп_ОбщегоНазначенияСервер.ВычислитьВБезопасномРежиме. -// -Функция ВычислитьВБезопасномРежиме(Знач Выражение, Знач Параметры = Неопределено) Экспорт - - Модуль = ПолучитьМодуль(); - Возврат Модуль.ВычислитьВБезопасномРежиме(Выражение, Параметры); - -КонецФункции - -// См. пбп_ОбщегоНазначенияСервер.ЗаписатьДанныеВБезопасноеХранилище. -Процедура ЗаписатьДанныеВБезопасноеХранилище(Владелец, Данные, Ключ = "Пароль") Экспорт - - Модуль = ПолучитьМодуль(); - Модуль.ЗаписатьДанныеВБезопасноеХранилище(Владелец, Данные, Ключ); - -КонецПроцедуры - -// См. пбп_ОбщегоНазначенияСервер.ПрочитатьДанныеИзБезопасногоХранилища. -Функция ПрочитатьДанныеИзБезопасногоХранилища(Владелец, Ключи = "Пароль", ОбщиеДанные = Неопределено) Экспорт - - Модуль = ПолучитьМодуль(); - Возврат Модуль.ПрочитатьДанныеИзБезопасногоХранилища(Владелец, Ключи, ОбщиеДанные); - -КонецФункции - -// См. пбп_ОбщегоНазначенияСервер.СообщитьПользователю. -Процедура СообщитьПользователю(Знач ТекстСообщенияПользователю, Знач КлючДанных = Неопределено, Знач Поле = "", - Знач ПутьКДанным = "", Отказ = Ложь) Экспорт - - Модуль = ПолучитьМодуль(); - Модуль.СообщитьПользователю(ТекстСообщенияПользователю, КлючДанных, Поле, ПутьКДанным, Отказ); - -КонецПроцедуры - -// См. пбп_ОбщегоНазначенияСервер.ХранилищеОбщихНастроекСохранить. -Процедура ХранилищеОбщихНастроекСохранить(КлючОбъекта, КлючНастроек, Настройки, - ОписаниеНастроек = Неопределено, - ИмяПользователя = Неопределено, - ОбновитьПовторноИспользуемыеЗначения = Ложь) Экспорт - - Модуль = ПолучитьМодуль(); - Модуль.ХранилищеОбщихНастроекСохранить(КлючОбъекта, КлючНастроек, Настройки, ОписаниеНастроек, - ИмяПользователя, ОбновитьПовторноИспользуемыеЗначения); - -КонецПроцедуры - -// См. пбп_ОбщегоНазначенияСервер.ХранилищеОбщихНастроекЗагрузить. -Функция ХранилищеОбщихНастроекЗагрузить(КлючОбъекта, КлючНастроек, ЗначениеПоУмолчанию = Неопределено, - ОписаниеНастроек = Неопределено, ИмяПользователя = Неопределено) Экспорт - - Модуль = ПолучитьМодуль(); - Возврат Модуль.ХранилищеОбщихНастроекЗагрузить(КлючОбъекта, КлючНастроек, ЗначениеПоУмолчанию, - ОписаниеНастроек, ИмяПользователя); - -КонецФункции - -// См. пбп_ОбщегоНазначенияСервер.ХранилищеОбщихНастроекУдалить. -Процедура ХранилищеОбщихНастроекУдалить(КлючОбъекта, КлючНастроек, ИмяПользователя = Неопределено) Экспорт - - Модуль = ПолучитьМодуль(); - Модуль.ХранилищеОбщихНастроекУдалить(КлючОбъекта, КлючНастроек, ИмяПользователя); - -КонецПроцедуры - -// См. пбп_ОбщегоНазначенияСервер.ПриНачалеВыполненияРегламентногоЗадания. -Процедура ПриНачалеВыполненияРегламентногоЗадания(РегламентноеЗадание = Неопределено) Экспорт - - Модуль = ПолучитьМодуль(); - Модуль.ПриНачалеВыполненияРегламентногоЗадания(РегламентноеЗадание); - -КонецПроцедуры - -// См. пбп_ОбщегоНазначенияСервер.ЗначенияРеквизитовОбъекта. -Функция ЗначенияРеквизитовОбъекта(Ссылка, Знач Реквизиты, ВыбратьРазрешенные = Ложь, Знач КодЯзыка = Неопределено) Экспорт - - Модуль = ПолучитьМодуль(); - Возврат Модуль.ЗначенияРеквизитовОбъекта(Ссылка, Реквизиты, ВыбратьРазрешенные, КодЯзыка); - -КонецФункции - -// См. пбп_ОбщегоНазначенияСервер.ЗначениеРеквизитаОбъекта. -Функция ЗначениеРеквизитаОбъекта(Ссылка, ИмяРеквизита, ВыбратьРазрешенные = Ложь, Знач КодЯзыка = Неопределено) Экспорт - - Модуль = ПолучитьМодуль(); - Возврат Модуль.ЗначенияРеквизитовОбъекта(Ссылка, ИмяРеквизита, ВыбратьРазрешенные, КодЯзыка); - -КонецФункции - -// См. пбп_ОбщегоНазначенияСервер.ОписаниеТипаСтрока. -Функция ОписаниеТипаСтрока(ДлинаСтроки) Экспорт - - Модуль = ПолучитьМодуль(); - Возврат Модуль.ОписаниеТипаСтрока(ДлинаСтроки); - -КонецФункции - -// См. пбп_ОбщегоНазначенияСервер.ОписаниеТипаЧисло. -Функция ОписаниеТипаЧисло(Разрядность, РазрядностьДробнойЧасти = 0, Знач ЗнакЧисла = Неопределено) Экспорт - - Модуль = ПолучитьМодуль(); - Возврат Модуль.ОписаниеТипаЧисло(Разрядность, РазрядностьДробнойЧасти, ЗнакЧисла); - -КонецФункции - -// См. пбп_ОбщегоНазначенияСервер.ИнформационнаяБазаФайловая. -Функция ИнформационнаяБазаФайловая(Знач СтрокаСоединенияИнформационнойБазы = "") Экспорт - - Модуль = ПолучитьМодуль(); - Возврат Модуль.ИнформационнаяБазаФайловая(СтрокаСоединенияИнформационнойБазы); - -КонецФункции - -#Область ТекущееОкружение - -// См. пбп_ОбщегоНазначенияСервер.ЭтоWindowsСервер. -Функция ЭтоWindowsСервер() Экспорт - - Модуль = ПолучитьМодуль(); - Возврат Модуль.ЭтоWindowsСервер(); - -КонецФункции - -// См. пбп_ОбщегоНазначенияСервер.ЭтоLinuxСервер. -Функция ЭтоLinuxСервер() Экспорт - - Модуль = ПолучитьМодуль(); - Возврат Модуль.ЭтоLinuxСервер(); - -КонецФункции - -#КонецОбласти // ТекущееОкружение - -#Область СериализацияXML - -// См. пбп_ОбщегоНазначенияСервер.ЗначениеВСтрокуXML. -Функция ЗначениеВСтрокуXML(Значение) Экспорт - - Модуль = ПолучитьМодуль(); - Возврат Модуль.ЗначениеВСтрокуXML(Значение); - -КонецФункции - -// См. пбп_ОбщегоНазначенияСервер.ЗначениеИзСтрокиXML. -Функция ЗначениеИзСтрокиXML(СтрокаXML) Экспорт - - Модуль = ПолучитьМодуль(); - Возврат Модуль.ЗначениеИзСтрокиXML(СтрокаXML); - -КонецФункции - -#КонецОбласти - -// См. пбп_ОбщегоНазначенияСервер.МенеджерОбъектаПоПолномуИмени. -Функция МенеджерОбъектаПоПолномуИмени(ПолноеИмя) Экспорт - - Модуль = ПолучитьМодуль(); - Возврат Модуль.МенеджерОбъектаПоПолномуИмени(ПолноеИмя); - -КонецФункции - -// См. пбп_ОбщегоНазначенияСервер.МенеджерОбъектаПоСсылке. -// -Функция МенеджерОбъектаПоСсылке(Ссылка) Экспорт - - Модуль = ПолучитьМодуль(); - Возврат Модуль.МенеджерОбъектаПоСсылке(Ссылка); - -КонецФункции - -#Область Данные - -// См. пбп_ОбщегоНазначенияСервер.КонтрольнаяСуммаСтрокой. -Функция КонтрольнаяСуммаСтрокой(Знач Данные, Знач Алгоритм = Неопределено) Экспорт - - Модуль = ПолучитьМодуль(); - Возврат Модуль.КонтрольнаяСуммаСтрокой(Данные, Алгоритм); - -КонецФункции - -#КонецОбласти - -#КонецОбласти - -#КонецОбласти - -#Область СлужебныеПроцедурыИФункции - -Функция ПолучитьМодуль() - Возврат пбп_ОбщегоНазначенияПовтИсп.ПереадресацияОбщегоМодуля("ОбщегоНазначения", "пбп_ОбщегоНазначенияСервер"); -КонецФункции - -#КонецОбласти diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202.xml" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202.xml" deleted file mode 100644 index 61b1aac2..00000000 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202.xml" +++ /dev/null @@ -1,27 +0,0 @@ - - - - - пбп_ОбщегоНазначенияСлужебныйКлиент - - - ru - Общего назначения служебный клиент - - - en - General purpose customer - - - - false - true - false - false - true - false - false - DontUse - - - \ No newline at end of file diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202/Ext/Module.bsl" deleted file mode 100644 index 10123b70..00000000 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202/Ext/Module.bsl" +++ /dev/null @@ -1,63 +0,0 @@ -// Библиотека проектных подсистем для упрощения разработки архитектуры на 1С: Предприятие 8, -// включая доработку типовых конфигураций. -// -// Copyright First BIT company -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// URL: https://github.com/firstBitSportivnaya/PSSL/ -// - -//////////////////////////////////////////////////////////////////////////////// -// Общего назначения (клиент) служебный: для клиентских функций общего назначения - -#Область СлужебныйПрограммныйИнтерфейс - -#Область ПереадресацияМетодов - -// См. пбп_ОбщегоНазначенияКлиент.СообщитьПользователю. -Процедура СообщитьПользователю(Знач ТекстСообщенияПользователю, Знач КлючДанных = Неопределено, - Знач Поле = "", Знач ПутьКДанным = "", Отказ = Ложь) Экспорт - - Модуль = ПолучитьМодуль(); - Модуль.СообщитьПользователю(ТекстСообщенияПользователю, КлючДанных, Поле, ПутьКДанным, Отказ); - -КонецПроцедуры - -// См. пбп_ОбщегоНазначенияКлиент.ДатаУниверсальная. -Функция ДатаУниверсальная() Экспорт - - Модуль = ПолучитьМодуль(); - Возврат Модуль.ДатаУниверсальная(); - -КонецФункции - -// См. пбп_ОбщегоНазначенияКлиент.ПредопределенныйЭлемент. -Функция ПредопределенныйЭлемент(ПолноеИмяПредопределенного) Экспорт - - Модуль = ПолучитьМодуль(); - Возврат Модуль.ПредопределенныйЭлемент(ПолноеИмяПредопределенного); - -КонецФункции - -#КонецОбласти - -#КонецОбласти - -#Область СлужебныеПроцедурыИФункции - -Функция ПолучитьМодуль() - Возврат пбп_ОбщегоНазначенияКлиент.ОбщийМодуль("ОбщегоНазначенияКлиент", "пбп_ОбщегоНазначенияКлиент"); -КонецФункции - -#КонецОбласти \ No newline at end of file diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.xml" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.xml" deleted file mode 100644 index 7087b1e9..00000000 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.xml" +++ /dev/null @@ -1,27 +0,0 @@ - - - - - пбп_ОбщегоНазначенияСлужебныйКлиентСервер - - - ru - Общего назначения служебный клиент сервер - - - en - Common client-server - - - - false - true - true - true - true - false - false - DontUse - - - \ No newline at end of file diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" deleted file mode 100644 index 13e2bb18..00000000 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" +++ /dev/null @@ -1,312 +0,0 @@ -// Библиотека проектных подсистем для упрощения разработки архитектуры на 1С: Предприятие 8, -// включая доработку типовых конфигураций. -// -// Copyright First BIT company -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// URL: https://github.com/firstBitSportivnaya/PSSL/ -// - -//////////////////////////////////////////////////////////////////////////////// -// Общего назначения служебный (клиент) сервер: для клиентских и серверных функций общего назначения - -#Область СлужебныйПрограммныйИнтерфейс - -#Область ПереадресацияМетодов - -// См. пбп_ОбщегоНазначенияСлужебныйКлиентСервер.УстановитьСвойствоЭлементаФормы. -Процедура УстановитьСвойствоЭлементаФормы(ЭлементыФормы, ИмяЭлемента, ИмяСвойства, Значение) Экспорт - - Модуль = ПолучитьМодуль(); - Модуль.УстановитьСвойствоЭлементаФормы(ЭлементыФормы, ИмяЭлемента, ИмяСвойства, Значение); - -КонецПроцедуры - -// См. пбп_ОбщегоНазначенияСлужебныйКлиентСервер.СвойствоСтруктуры. -Функция СвойствоСтруктуры(Структура, Ключ, ЗначениеПоУмолчанию = Неопределено) Экспорт - - Модуль = ПолучитьМодуль(); - Возврат Модуль.СвойствоСтруктуры(Структура, Ключ, ЗначениеПоУмолчанию); - -КонецФункции - -// См. пбп_ОбщегоНазначенияСлужебныйКлиентСервер.ДополнитьМассив. -Процедура ДополнитьМассив(МассивПриемник, МассивИсточник, ТолькоУникальныеЗначения = Ложь) Экспорт - - Модуль = ПолучитьМодуль(); - Модуль.ДополнитьМассив(МассивПриемник, МассивИсточник, ТолькоУникальныеЗначения); - -КонецПроцедуры - -// См. пбп_ОбщегоНазначенияСлужебныйКлиентСервер.СвернутьМассив. -Функция СвернутьМассив(Знач Массив) Экспорт - - Модуль = ПолучитьМодуль(); - Возврат Модуль.СвернутьМассив(Массив); - -КонецФункции - -// См. пбп_ОбщегоНазначенияСлужебныйКлиентСервер.ЗначениеСвойстваЭлементаФормы. -Функция ЗначениеСвойстваЭлементаФормы(ЭлементыФормы, ИмяЭлемента, ИмяСвойства) Экспорт - - Модуль = ПолучитьМодуль(); - Возврат Модуль.ЗначениеСвойстваЭлементаФормы(ЭлементыФормы, ИмяЭлемента, ИмяСвойства); - -КонецФункции - -// См. пбп_ОбщегоНазначенияСлужебныйКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта. -Функция ЕстьРеквизитИлиСвойствоОбъекта(Объект, ИмяРеквизита) Экспорт - - Модуль = ПолучитьМодуль(); - Возврат Модуль.ЕстьРеквизитИлиСвойствоОбъекта(Объект, ИмяРеквизита); - -КонецФункции - -// См. пбп_ОбщегоНазначенияСлужебныйКлиентСервер.ДополнитьСтруктуру. -Процедура ДополнитьСтруктуру(Приемник, Источник, Заменять = Неопределено) Экспорт - - Модуль = ПолучитьМодуль(); - Модуль.ДополнитьСтруктуру(Приемник, Источник, Заменять); - -КонецПроцедуры - -// См. пбп_ОбщегоНазначенияСлужебныйКлиентСервер.ЗначениеВМассиве. -Функция ЗначениеВМассиве(Знач Значение) Экспорт - - Модуль = ПолучитьМодуль(); - Возврат Модуль.ЗначениеВМассиве(Значение); - -КонецФункции - -// См. пбп_ОбщегоНазначенияСлужебныйКлиентСервер.Проверить. -Процедура Проверить(Знач Условие, Знач Сообщение = "", Знач КонтекстПроверки = "") Экспорт - - Модуль = ПолучитьМодуль(); - Модуль.Проверить(Условие, Сообщение, КонтекстПроверки); - -КонецПроцедуры - -// См. пбп_ОбщегоНазначенияСлужебныйКлиентСервер.ЭтоЧисло. -Функция ЭтоЧисло(Знач ПроверяемоеЗначение) Экспорт - - Модуль = ПолучитьМодуль(); - Возврат Модуль.ЭтоЧисло(ПроверяемоеЗначение); - -КонецФункции - -#КонецОбласти - -#Область МетодыАналогиБСП - -// Аналог метода БСП. -// -Функция СообщениеПользователю( - Знач ТекстСообщенияПользователю, - Знач КлючДанных, - Знач Поле, - Знач ПутьКДанным = "", - Отказ = Ложь, - ЭтоОбъект = Ложь) Экспорт - - Сообщение = Новый СообщениеПользователю; - Сообщение.Текст = ТекстСообщенияПользователю; - Сообщение.Поле = Поле; - - Если ЭтоОбъект Тогда - Сообщение.УстановитьДанные(КлючДанных); - Иначе - Сообщение.КлючДанных = КлючДанных; - КонецЕсли; - - Если НЕ ПустаяСтрока(ПутьКДанным) Тогда - Сообщение.ПутьКДанным = ПутьКДанным; - КонецЕсли; - - Отказ = Истина; - - Возврат Сообщение; - -КонецФункции - -#Область ЗапускВнешнихПриложений - -// Аналог метода БСП. Параметры: -// КомандаЗапуска - Строка -// -// Возвращаемое значение: -// Строка -// -Функция БезопаснаяСтрокаКоманды(КомандаЗапуска) Экспорт - - Результат = ""; - - Если ТипЗнч(КомандаЗапуска) = Тип("Строка") Тогда - - ПроверитьСодержитНебезопасныеДействия(КомандаЗапуска); - Результат = КомандаЗапуска; - - ИначеЕсли ТипЗнч(КомандаЗапуска) = Тип("Массив") Тогда - - Если КомандаЗапуска.Количество() > 0 Тогда - ПроверитьСодержитНебезопасныеДействия(КомандаЗапуска[0]); - Результат = МассивВСтрокуКоманды(КомандаЗапуска); - Иначе - ВызватьИсключение пбп_СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Ожидалось, что первый элемент массива %1 будет командой или путем к исполняемому файлу.'"), - "КомандаЗапуска"); - КонецЕсли; - - Иначе - ВызватьИсключение пбп_СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Ожидалось, что значение %1 будет типа %2 или %3.'"), - "КомандаЗапуска", "Строка", "Массив"); - КонецЕсли; - - Возврат Результат; - -КонецФункции - -#КонецОбласти - -#КонецОбласти // МетодыАналогиБСП - -#КонецОбласти - -#Область СлужебныеПроцедурыИФункции - -Функция ПолучитьМодуль() - - #Если Клиент Тогда - Возврат пбп_ОбщегоНазначенияКлиент.ОбщийМодуль( - "ОбщегоНазначенияКлиентСервер", - "пбп_ОбщегоНазначенияКлиентСервер"); - #Иначе - Возврат пбп_ОбщегоНазначенияВызовСервера.ПереадресацияОбщегоМодуля( - "ОбщегоНазначенияКлиентСервер", - "пбп_ОбщегоНазначенияКлиентСервер"); - #КонецЕсли - -КонецФункции - -#Область МетодыАналогиБСП - -#Если Не ВебКлиент И Не МобильныйКлиент Тогда - -Функция СтрокаЗапускаКомандыWindows(СтрокаКоманды, ТекущийКаталог, ДождатьсяЗавершения, КодировкаИсполнения) Экспорт - - НаборКоманд = ""; - - Если ЗначениеЗаполнено(КодировкаИсполнения) Тогда - - Если КодировкаИсполнения = "OEM" Тогда - КодировкаИсполнения = 437; - ИначеЕсли КодировкаИсполнения = "CP866" Тогда - КодировкаИсполнения = 866; - ИначеЕсли КодировкаИсполнения = "UTF8" Тогда - КодировкаИсполнения = 65001; - КонецЕсли; - - НаборКоманд = "(chcp " + Формат(КодировкаИсполнения, "ЧГ=") + ")"; - КонецЕсли; - - Если Не ПустаяСтрока(ТекущийКаталог) Тогда - НаборКоманд = НаборКоманд + ?(ЗначениеЗаполнено(НаборКоманд), "&&", "") + "(cd /D """ + ТекущийКаталог + """)"; - КонецЕсли; - НаборКоманд = НаборКоманд + ?(ЗначениеЗаполнено(НаборКоманд), "&&", "") + "(" + СокрЛП(СтрокаКоманды) + ")"; - - Возврат "cmd /S /C """ + НаборКоманд + """"; - -КонецФункции - -#КонецЕсли - -#Область БезопаснаяСтрокаКоманды - -Функция СодержитНебезопасныеДействия(Знач СтрокаКоманды) - - Возврат СтрНайти(СтрокаКоманды, "${") <> 0 - Или СтрНайти(СтрокаКоманды, "$(") <> 0 - Или СтрНайти(СтрокаКоманды, "`") <> 0 - Или СтрНайти(СтрокаКоманды, "|") <> 0 - Или СтрНайти(СтрокаКоманды, ";") <> 0 - Или СтрНайти(СтрокаКоманды, "&") <> 0; - -КонецФункции - -Процедура ПроверитьСодержитНебезопасныеДействия(Знач КомандаЗапуска) - Если СодержитНебезопасныеДействия(КомандаЗапуска) Тогда - ВызватьИсключение пбп_СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Не удалось запустить программу. - |Недопустимая строка команды - |%1 - | - |Строка команды не должна содержать символы: ""${"", ""$("", ""`"", ""|"", "";"", ""&"".'"), - КомандаЗапуска); - КонецЕсли; -КонецПроцедуры - -Функция МассивВСтрокуКоманды(КомандаЗапуска) - - Результат = Новый Массив; - НужныКавычки = Ложь; - Для Каждого Аргумент Из КомандаЗапуска Цикл - - Если Результат.Количество() > 0 Тогда - Результат.Добавить(" "); - КонецЕсли; - - НужныКавычки = Аргумент = Неопределено - Или ПустаяСтрока(Аргумент) - Или СтрНайти(Аргумент, " ") - Или СтрНайти(Аргумент, Символы.Таб) - Или СтрНайти(Аргумент, "&") - Или СтрНайти(Аргумент, "(") - Или СтрНайти(Аргумент, ")") - Или СтрНайти(Аргумент, "[") - Или СтрНайти(Аргумент, "]") - Или СтрНайти(Аргумент, "{") - Или СтрНайти(Аргумент, "}") - Или СтрНайти(Аргумент, "^") - Или СтрНайти(Аргумент, "=") - Или СтрНайти(Аргумент, ";") - Или СтрНайти(Аргумент, "!") - Или СтрНайти(Аргумент, "'") - Или СтрНайти(Аргумент, "+") - Или СтрНайти(Аргумент, ",") - Или СтрНайти(Аргумент, "`") - Или СтрНайти(Аргумент, "~") - Или СтрНайти(Аргумент, "$") - Или СтрНайти(Аргумент, "|"); - - Если НужныКавычки Тогда - Результат.Добавить(""""); - КонецЕсли; - - Результат.Добавить(СтрЗаменить(Аргумент, """", """""")); - - Если НужныКавычки Тогда - Результат.Добавить(""""); - КонецЕсли; - - КонецЦикла; - - Возврат СтрСоединить(Результат); - -КонецФункции - -#КонецОбласти // БезопаснаяСтрокаКоманды - -#КонецОбласти // МетодыАналогиБСП - -#КонецОбласти diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270.xml" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\265\321\200\320\265\320\260\320\264\321\200\320\265\321\201\320\260\321\206\320\270\321\217.xml" similarity index 89% rename from "src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270.xml" rename to "src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\265\321\200\320\265\320\260\320\264\321\200\320\265\321\201\320\260\321\206\320\270\321\217.xml" index 7bc8199b..b65046d0 100644 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270.xml" +++ "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\265\321\200\320\265\320\260\320\264\321\200\320\265\321\201\320\260\321\206\320\270\321\217.xml" @@ -1,12 +1,12 @@  - + - пбп_Пользователи + пбп_Переадресация ru - Пользователи + Переадресация diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\265\321\200\320\265\320\260\320\264\321\200\320\265\321\201\320\260\321\206\320\270\321\217/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\265\321\200\320\265\320\260\320\264\321\200\320\265\321\201\320\260\321\206\320\270\321\217/Ext/Module.bsl" new file mode 100644 index 00000000..3fd270ab --- /dev/null +++ "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\265\321\200\320\265\320\260\320\264\321\200\320\265\321\201\320\260\321\206\320\270\321\217/Ext/Module.bsl" @@ -0,0 +1,3031 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Библиотека проектных подсистем для упрощения разработки архитектуры на 1С: Предприятие 8, +// включая доработку типовых конфигураций. +// +// Copyright First BIT company +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// URL: https://github.com/firstBitSportivnaya/PSSL/ +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ПрограммныйИнтерфейс + +// Функция ОпределитьМодульПереадресации предназначена для проверки наличия общего модуля +// БСП с указанным именем и получения этого модуля, если он существует. +// +// Параметры: +// ИмяМодуля - Строка - имя общего модуля, который необходимо найти. +// +// Возвращаемое значение: +// Структура - общий модуль и что он существует +// * Модуль - ОбщийМодуль - общий модуль из БСП. +// * МодульСуществует - Булево - Если флаг истина, модуль существует. +// +Функция ОпределитьМодульПереадресации(ИмяМодуля) Экспорт + + Результат = Новый Структура("Модуль, МодульСуществует", , Ложь); + + Если пбп_ОбщегоНазначенияПовтИсп.СуществуетБиблиотекаСтандартныхПодсистем() + И Метаданные.ОбщиеМодули.Найти(ИмяМодуля) <> Неопределено Тогда + Результат.Модуль = ОбщийМодуль(ИмяМодуля); + Результат.МодульСуществует = Истина; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +#Область ПереадресацияМетодов + +#Область ЖурналРегистрации + +// Аналог метода БСП. Записывает сообщение в журнал регистрации. +// +// Параметры: +// ИмяСобытия - Строка - имя события для журнала регистрации. +// Уровень - УровеньЖурналаРегистрации - уровни важности событий журнала регистрации. +// ОбъектМетаданных - ОбъектМетаданных - объект метаданных, к которому относится событие. +// Данные - ЛюбаяСсылка +// - Число +// - Строка +// - Дата +// - Булево +// - Неопределено +// - Тип - данные, с которыми связано событие. +// Рекомендуется указывать ссылки на объекты данных (элементы справочников, документы, к которым +// относится событие). +// Комментарий - Строка - комментарий для события журнала. +// +Процедура ДобавитьСообщениеДляЖурналаРегистрации(Знач ИмяСобытия, Знач Уровень, + Знач ОбъектМетаданных = Неопределено, Знач Данные = Неопределено, Знач Комментарий = "") Экспорт + + Результат = ПереадресацияМодуляЖурналРегистрации(); + Если Результат.МодульСуществует Тогда + Результат.Модуль.ДобавитьСообщениеДляЖурналаРегистрации(ИмяСобытия, Уровень, ОбъектМетаданных, Данные, Комментарий); + Возврат; + КонецЕсли; + + Если ПустаяСтрока(ИмяСобытия) Тогда + ИмяСобытия = "Событие"; // не локализуется, чтобы не допускать остановки запуска в частично переведенной конфигурации + КонецЕсли; + + ЗаписьЖурналаРегистрации(ИмяСобытия, Уровень, + ОбъектМетаданных, Данные, Комментарий, РежимТранзакцииЗаписиЖурналаРегистрации.Независимая); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбщегоНазначения + +// Аналог метода БСП. Определяет режим эксплуатации информационной базы файловый (Истина) или серверный (Ложь). +// При проверке используется СтрокаСоединенияИнформационнойБазы, которую можно указать явно. +// +// Параметры: +// СтрокаСоединенияИнформационнойБазы - Строка - параметр используется, если +// нужно проверить строку соединения не текущей информационной базы. +// +// Возвращаемое значение: +// Булево - Истина, если файловая. +// +Функция ИнформационнаяБазаФайловая(Знач СтрокаСоединенияИнформационнойБазы = "") Экспорт + + Результат = ПереадресацияМодуляОбщегоНазначения(); + Если Результат.МодульСуществует Тогда + Возврат Результат.Модуль.ИнформационнаяБазаФайловая(СтрокаСоединенияИнформационнойБазы); + КонецЕсли; + + Если ПустаяСтрока(СтрокаСоединенияИнформационнойБазы) Тогда + СтрокаСоединенияИнформационнойБазы = СтрокаСоединенияИнформационнойБазы(); + КонецЕсли; + Возврат СтрНайти(ВРег(СтрокаСоединенияИнформационнойБазы), "FILE=") = 1; + +КонецФункции + +// Аналог метода БСП. Возвращает Истина, если функциональная подсистема существует в конфигурации. +// Предназначена для реализации вызова необязательной подсистемы (условного вызова). +// У функциональной подсистемы снят флажок "Включать в командный интерфейс". +// См. также ОбщегоНазначенияПереопределяемый.ПриОпределенииОтключенныхПодсистем +// и ОбщегоНазначенияКлиент.ПодсистемаСуществует для вызова из клиентского кода. +// +// Параметры: +// ПолноеИмяПодсистемы - Строка - полное имя объекта метаданных подсистема +// без слов "Подсистема." и с учетом регистра символов. +// Например: "СтандартныеПодсистемы.ВариантыОтчетов". +// +// Пример: +// Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ВариантыОтчетов") Тогда +// МодульВариантыОтчетов = ОбщегоНазначения.ОбщийМодуль("ВариантыОтчетов"); +// МодульВариантыОтчетов.<Имя метода>(); +// КонецЕсли; +// +// Возвращаемое значение: +// Булево - Истина, если подсистема существует. +// +Функция ПодсистемаСуществует(ПолноеИмяПодсистемы) Экспорт + + Результат = ПереадресацияМодуляОбщегоНазначения(); + Если Результат.МодульСуществует Тогда + Возврат Результат.Модуль.ПодсистемаСуществует(ПолноеИмяПодсистемы); + КонецЕсли; + + ИменаПодсистем = пбп_ПереадресацияПовтИсп.ИменаПодсистем(); + Возврат ИменаПодсистем.Получить(ПолноеИмяПодсистемы) <> Неопределено; + +КонецФункции + +// Аналог метода БСП. Возвращает ссылку на общий модуль или модуль менеджера по имени. +// +// Параметры: +// Имя - Строка - имя общего модуля. +// +// Возвращаемое значение: +// ОбщийМодуль +// МодульМенеджераОбъекта +// +// Пример: +// МодульОбновлениеКонфигурации = пбп_ОбщегоНазначенияСервер.ОбщийМодуль("ОбновлениеКонфигурации"); +// МодульОбновлениеКонфигурации.<Имя метода>(); +// +// МодульПолнотекстовыйПоискСервер = пбп_ОбщегоНазначенияСервер.ОбщийМодуль("ПолнотекстовыйПоискСервер"); +// МодульПолнотекстовыйПоискСервер.<Имя метода>(); +// +Функция ОбщийМодуль(Имя) Экспорт + + Результат = ПереадресацияМодуляОбщегоНазначения(); + Если Результат.МодульСуществует Тогда + Возврат Результат.Модуль.ОбщийМодуль(Имя); + КонецЕсли; + + Если Метаданные.ОбщиеМодули.Найти(Имя) <> Неопределено Тогда + // BSLLS:ExecuteExternalCodeInCommonModule-off + // ВычислитьВБезопасномРежиме не используется, чтобы избежать вызова ОбщийМодуль рекурсивно. + УстановитьБезопасныйРежим(Истина); + Модуль = Вычислить(Имя); + // BSLLS:ExecuteExternalCodeInCommonModule-on + ИначеЕсли СтрЧислоВхождений(Имя, ".") = 1 Тогда + Возврат СерверныйМодульМенеджера(Имя); + Иначе + Модуль = Неопределено; + КонецЕсли; + + Если ТипЗнч(Модуль) <> Тип("ОбщийМодуль") Тогда + ВызватьИсключение пбп_ПереадресацияКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Общий модуль ""%1"" не существует.'"), + Имя); + КонецЕсли; + + Возврат Модуль; + +КонецФункции + +// Аналог метода БСП. Выполнить экспортную процедуру по имени с уровнем привилегий конфигурации. +// При включении профилей безопасности для вызова оператора Выполнить() используется +// переход в безопасный режим с профилем безопасности, используемым для информационной базы +// (если выше по стеку не был установлен другой безопасный режим). +// +// Параметры: +// ИмяМетода - Строка - имя экспортной процедуры в формате +// <имя объекта>.<имя процедуры>, где <имя объекта> - это +// общий модуль или модуль менеджера объекта. +// Параметры - Массив - параметры передаются в процедуру <ИмяЭкспортнойПроцедуры> +// в порядке расположения элементов массива. +// +// Пример: +// Параметры = Новый Массив(); +// Параметры.Добавить("1"); +// ОбщегоНазначения.ВыполнитьМетодКонфигурации("МойОбщийМодуль.МояПроцедура", Параметры); +// +Процедура ВыполнитьМетодКонфигурации(Знач ИмяМетода, Знач Параметры = Неопределено) Экспорт + + Результат = ПереадресацияМодуляОбщегоНазначения(); + Если Результат.МодульСуществует Тогда + Результат.Модуль.ВыполнитьМетодКонфигурации(ИмяМетода, Параметры); + Возврат; + КонецЕсли; + + ПроверитьИмяПроцедурыКонфигурации(ИмяМетода); + + УстановитьБезопасныйРежим(Истина); + + ПараметрыСтрока = ""; + Если Параметры <> Неопределено И Параметры.Количество() > 0 Тогда + Для Индекс = 0 По Параметры.ВГраница() Цикл + ПараметрыСтрока = ПараметрыСтрока + "Параметры[" + XMLСтрока(Индекс) + "],"; + КонецЦикла; + ПараметрыСтрока = Сред(ПараметрыСтрока, 1, СтрДлина(ПараметрыСтрока) - 1); + КонецЕсли; + + Выполнить ИмяМетода + "(" + ПараметрыСтрока + ")"; + +КонецПроцедуры + +// Аналог метода БСП. Вызвать экспортную функцию по имени с уровнем привилегий конфигурации. +// При включении профилей безопасности для вызова оператора Выполнить() используется +// переход в безопасный режим с профилем безопасности, используемом для информационной базы +// (если выше по стеку не был установлен другой безопасный режим). +// +// Параметры: +// ИмяМетода - Строка - имя экспортной функции в формате +// <имя объекта>.<имя процедуры>, где <имя объекта> - это +// общий модуль или модуль менеджера объекта. +// Параметры - Массив - параметры передаются в функцию <ИмяМетода> +// в порядке расположения элементов массива. +// +// Возвращаемое значение: +// Произвольный - результат вызываемой функции. +// +Функция ВызватьФункциюКонфигурации(Знач ИмяМетода, Знач Параметры = Неопределено) Экспорт + + Результат = ПереадресацияМодуляОбщегоНазначения(); + Если Результат.МодульСуществует Тогда + Возврат Результат.Модуль.ВызватьФункциюКонфигурации(ИмяМетода, Параметры); + КонецЕсли; + + ПроверитьИмяПроцедурыКонфигурации(ИмяМетода); + + Если ПодсистемаСуществует("СтандартныеПодсистемы.ПрофилиБезопасности") Тогда + МодульРаботаВБезопасномРежиме = ОбщийМодуль("РаботаВБезопасномРежиме"); + Если МодульРаботаВБезопасномРежиме.ИспользуютсяПрофилиБезопасности() + И Не МодульРаботаВБезопасномРежиме.УстановленБезопасныйРежим() Тогда + + ПрофильИнформационнойБазы = МодульРаботаВБезопасномРежиме.ПрофильБезопасностиИнформационнойБазы(); + Если ЗначениеЗаполнено(ПрофильИнформационнойБазы) Тогда + + // BSLLS:DisableSafeMode-off + УстановитьБезопасныйРежим(ПрофильИнформационнойБазы); + // BSLLS:DisableSafeMode-on + Если БезопасныйРежим() = Истина Тогда + // BSLLS:DisableSafeMode-off + УстановитьБезопасныйРежим(Ложь); + // BSLLS:DisableSafeMode-on + КонецЕсли; + + КонецЕсли; + + КонецЕсли; + КонецЕсли; + + ПараметрыСтрока = ""; + Если Параметры <> Неопределено И Параметры.Количество() > 0 Тогда + Для Индекс = 0 По Параметры.ВГраница() Цикл + ПараметрыСтрока = ПараметрыСтрока + "Параметры[" + XMLСтрока(Индекс) + "],"; + КонецЦикла; + ПараметрыСтрока = Сред(ПараметрыСтрока, 1, СтрДлина(ПараметрыСтрока) - 1); + КонецЕсли; + + // BSLLS:ExecuteExternalCodeInCommonModule-off + Возврат Вычислить(ИмяМетода + "(" + ПараметрыСтрока + ")"); // АПК:488 Исполняемый код безопасен. + // BSLLS:ExecuteExternalCodeInCommonModule-on + +КонецФункции + +// Аналог метода БСП. Вычисляет переданное выражение, предварительно устанавливая безопасный режим выполнения кода +// и безопасный режим разделения данных для всех разделителей, присутствующих в составе конфигурации. +// +// Параметры: +// Выражение - Строка - выражение на встроенном языке 1С:Предприятия. +// Параметры - Произвольный - контекст, который требуется для вычисления выражения. +// В тексте выражения обращение к контексту должно происходить по имени "Параметры". +// Например, выражение "Параметры.Значение1 = Параметры.Значение2" обращается к значениям +// "Значение1" и "Значение2" переданные в Параметры, как свойства. +// +// Возвращаемое значение: +// Произвольный - результат вычисления выражения. +// +// Пример: +// +// // Пример 1 +// Параметры = Новый Структура; +// Параметры.Вставить("Значение1", 1); +// Параметры.Вставить("Значение2", 10); +// Результат = ОбщегоНазначения.ВычислитьВБезопасномРежиме("Параметры.Значение1 = Параметры.Значение2", Параметры); +// +// // Пример 2 +// Результат = ОбщегоНазначения.ВычислитьВБезопасномРежиме("СтандартныеПодсистемыСервер.ВерсияБиблиотеки()"); +// +Функция ВычислитьВБезопасномРежиме(Знач Выражение, Знач Параметры = Неопределено) Экспорт + + Результат = ПереадресацияМодуляОбщегоНазначения(); + Если Результат.МодульСуществует Тогда + Возврат Результат.Модуль.ВычислитьВБезопасномРежиме(Выражение, Параметры); + КонецЕсли; + + УстановитьБезопасныйРежим(Истина); + + Если ПодсистемаСуществует("ТехнологияСервиса.БазоваяФункциональность") Тогда + МодульРаботаВМоделиСервиса = ОбщийМодуль("РаботаВМоделиСервиса"); + МассивРазделителей = МодульРаботаВМоделиСервиса.РазделителиКонфигурации(); + Иначе + МассивРазделителей = Новый Массив; + КонецЕсли; + + Для Каждого ИмяРазделителя Из МассивРазделителей Цикл + + УстановитьБезопасныйРежимРазделенияДанных(ИмяРазделителя, Истина); + + КонецЦикла; + + Возврат Вычислить(Выражение); + +КонецФункции + +// Аналог метода БСП. Записывает конфиденциальные данные в безопасное хранилище. +// Вызывающий код должен самостоятельно устанавливать привилегированный режим. +// +// Безопасное хранилище недоступно для чтения пользователям (кроме администраторов), +// а доступно только коду, который делает обращения только к своей части данных и +// в том контексте, который предполагает чтение или запись конфиденциальных данных. +// +// Параметры: +// Владелец - ПланОбменаСсылка +// - СправочникСсылка +// - Строка - ссылка на объект информационной базы, +// представляющий объект-владелец сохраняемого пароля или строка до 128 символов. +// Для объектов других типов в качестве владельца рекомендуется использовать ссылку на +// элемент метаданных этого типа в справочнике ИдентификаторыОбъектовМетаданных +// или ключ в виде строки с учетом имен подсистем. +// Например, для БСП: +// Владелец = ОбщегоНазначения.ИдентификаторОбъектаМетаданных("РегистрСведений.АдресныеОбъекты"); +// если нужно 1 хранилище на подсистему БСП: +// Владелец = "СтандартныеПодсистемы.УправлениеДоступом"; +// если нужно более 1 хранилища на подсистему БСП: +// Владелец = "СтандартныеПодсистемы.УправлениеДоступом.<Уточнение>"; +// Данные - Произвольный - данные помещаемые в безопасное хранилище. Неопределенно - удаляет все данные. +// Для удаления данных по ключу следует использовать процедуру УдалитьДанныеИзБезопасногоХранилища. +// - Структура - если параметр Ключ содержит Неопределено. Подробнее см. описание параметра Ключ +// Ключ - Строка - ключ сохраняемых настроек, по умолчанию "Пароль". +// Ключ должен соответствовать правилам имен идентификаторов: +// 1. Первым символом ключа должна быть буква или символ подчеркивания (_). +// 2. Каждый из последующих символов может быть буквой, цифрой или символом подчеркивания (_). +// Неопределено - для добавления набора данных структурой, где ключ структуры - это имя ключа данных, +// а значение - сохраняемые данные. Пример использования см. ниже. +// +// Пример: +// +// Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) +// Если ТекущийПользовательМожетИзменятьПароль Тогда +// УстановитьПривилегированныйРежим(Истина); +// ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище(ТекущийОбъект.Ссылка, Логин, "Логин"); +// ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище(ТекущийОбъект.Ссылка, Пароль); +// УстановитьПривилегированныйРежим(Ложь); +// КонецЕсли; +// КонецПроцедуры +// +// Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) +// Если ТекущийПользовательМожетИзменятьПароль Тогда +// ЛогинИПароль = Новый Структура; +// ЛогинИПароль.Вставить("Логин", Логин); +// ЛогинИПароль.Вставить("Пароль", Пароль); +// УстановитьПривилегированныйРежим(Истина); +// ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище(ТекущийОбъект.Ссылка, ЛогинИПароль, Неопределено); +// УстановитьПривилегированныйРежим(Ложь); +// КонецЕсли; +// КонецПроцедуры +// +Процедура ЗаписатьДанныеВБезопасноеХранилище(Владелец, Данные, Ключ = "Пароль") Экспорт + + Результат = ПереадресацияМодуляОбщегоНазначения(); + Если Результат.МодульСуществует Тогда + Результат.Модуль.ЗаписатьДанныеВБезопасноеХранилище(Владелец, Данные, Ключ); + Возврат; + КонецЕсли; + + пбп_ПереадресацияКлиентСервер.Проверить(ЗначениеЗаполнено(Владелец), + пбп_ПереадресацияКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Недопустимое значение параметра %1 в %2. + |параметр должен содержать ссылку; передано значение: %3 (тип %4).'"), + "Владелец", "ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище", Владелец, ТипЗнч(Владелец))); + + Если ЗначениеЗаполнено(Ключ) Тогда + + пбп_ПереадресацияКлиентСервер.Проверить(ТипЗнч(Ключ) = Тип("Строка"), + пбп_ПереадресацияКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Недопустимое значение параметра %1 в %2. + |параметр должен содержать строку; передано значение: %3 (тип %4).'"), + "Ключ", "ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище", Ключ, ТипЗнч(Ключ))); + + Иначе + + пбп_ПереадресацияКлиентСервер.Проверить(ТипЗнч(Данные) = Тип("Структура"), + пбп_ПереадресацияКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Недопустимое значение параметра %1 в %2. + |Если Ключ = Неопределено, то параметр должен содержать структуру; передано значение: %3 (тип %4).'"), + "Данные", "ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище", Данные, ТипЗнч(Данные))); + + КонецЕсли; + + // Загулшка. + // Перенаправление в хранилище общих настроек, не используется регистр сведений БезопасноеХранилищеДанных + ХранилищеОбщихНастроекСохранить(Владелец, Ключ, Данные); + Возврат; + // Загулшка + +КонецПроцедуры + +// Аналог метода БСП. Возвращает данные из безопасного хранилища. +// Вызывающий код должен самостоятельно устанавливать привилегированный режим. +// +// Безопасное хранилище недоступно для чтения пользователям (кроме администраторов), +// а доступно только коду, который делает обращения только к своей части данных и +// в том контексте, который предполагает чтение или запись конфиденциальных данных. +// +// Параметры: +// Владелец - ПланОбменаСсылка +// - СправочникСсылка +// - Строка - ссылка на объект информационной базы, +// представляющий объект-владелец сохраняемого пароля или уникальная строка(до 128 символов). +// Ключи - Строка - содержит список имен сохраненных данных, указанных через запятую. +// - Неопределено - будут возвращены все сохраненные данные владельца. +// ОбщиеДанные - Булево - Истина, если требуется в модели сервиса получить данные из общих данных в разделенном режиме. +// +// Возвращаемое значение: +// Произвольный, Структура, Неопределено - данные из безопасного хранилища. Если указан один ключ, +// то возвращается его значение, иначе структура. +// Если данные отсутствуют - Неопределенно. +// +// Пример: +// Если ТекущийПользовательМожетИзменятьПароль Тогда +// УстановитьПривилегированныйРежим(Истина); +// Логин = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(ТекущийОбъект.Ссылка, "Логин"); +// Пароль = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(ТекущийОбъект.Ссылка); +// УстановитьПривилегированныйРежим(Ложь); +// Иначе +// Элементы.ГруппаЛогинИПароль.Видимость = Ложь; +// КонецЕсли; +// +// УстановитьПривилегированныйРежим(Истина); +// ЛогинИПароль = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(ТекущийОбъект.Ссылка, Неопределено); +// +Функция ПрочитатьДанныеИзБезопасногоХранилища(Владелец, Ключи = "Пароль", ОбщиеДанные = Неопределено) Экспорт + + Результат = ПереадресацияМодуляОбщегоНазначения(); + Если Результат.МодульСуществует Тогда + Возврат Результат.Модуль.ПрочитатьДанныеИзБезопасногоХранилища(Владелец, Ключи, ОбщиеДанные); + КонецЕсли; + + // Загулшка. + // Перенаправление в хранилище общих настроек, не используется регистр сведений БезопасноеХранилищеДанных + Результат = ХранилищеОбщихНастроекЗагрузить(Владелец, Ключи, ОбщиеДанные); + Возврат Результат; + // Загулшка + +КонецФункции + +// Аналог метода БСП. Формирует и выводит сообщение, которое может быть связано с элементом управления формы. +// +// В фоновом задании длительной операции, если вызов выполнен вне транзакции, +// сообщение записывается в служебный регистр и отправляется сразу на клиент, +// если подключена система взаимодействия. +// В конце фонового задания длительной операции, а также при отправке прогресса, +// все сообщения извлекаются из очереди сообщений фонового задания, +// записываются в служебный регистр и отправляются сразу на клиент, +// если подключена система взаимодействия. +// +// АПК:142-выкл 4 необязательных параметра для совместимости +// с устаревшей процедурой ОбщегоНазначенияКлиентСервер.СообщитьПользователю. +// +// Параметры: +// ТекстСообщенияПользователю - Строка - текст сообщения. +// КлючДанных - ЛюбаяСсылка - объект или ключ записи информационной базы, к которому это сообщение относится. +// Поле - Строка - наименование реквизита формы. +// ПутьКДанным - Строка - путь к данным (путь к реквизиту формы). +// Отказ - Булево - выходной параметр, всегда устанавливается в значение Истина. +// +// Пример: +// +// 1. Для вывода сообщения у поля управляемой формы, связанного с реквизитом объекта: +// ОбщегоНазначения.СообщитьПользователю( +// НСтр("ru = 'Сообщение об ошибке.'"), , +// "ПолеВРеквизитеФормыОбъект", +// "Объект"); +// +// Альтернативный вариант использования в форме объекта: +// ОбщегоНазначения.СообщитьПользователю( +// НСтр("ru = 'Сообщение об ошибке.'"), , +// "Объект.ПолеВРеквизитеФормыОбъект"); +// +// 2. Для вывода сообщения рядом с полем управляемой формы, связанным с реквизитом формы: +// ОбщегоНазначения.СообщитьПользователю( +// НСтр("ru = 'Сообщение об ошибке.'"), , +// "ИмяРеквизитаФормы"); +// +// 3. Для вывода сообщения связанного с объектом информационной базы: +// ОбщегоНазначения.СообщитьПользователю( +// НСтр("ru = 'Сообщение об ошибке.'"), ОбъектИнформационнойБазы, "Ответственный",,Отказ); +// +// 4. Для вывода сообщения по ссылке на объект информационной базы: +// ОбщегоНазначения.СообщитьПользователю( +// НСтр("ru = 'Сообщение об ошибке.'"), Ссылка, , , Отказ); +// +// Случаи некорректного использования: +// 1. Передача одновременно параметров КлючДанных и ПутьКДанным. +// 2. Передача в параметре КлючДанных значения типа отличного от допустимого. +// 3. Установка ссылки без установки поля (и/или пути к данным). +// +Процедура СообщитьПользователю(Знач ТекстСообщенияПользователю, Знач КлючДанных = Неопределено, Знач Поле = "", + Знач ПутьКДанным = "", Отказ = Ложь) Экспорт + + Результат = ПереадресацияМодуляОбщегоНазначения(); + Если Результат.МодульСуществует Тогда + Результат.Модуль.СообщитьПользователю(ТекстСообщенияПользователю, КлючДанных, Поле, ПутьКДанным, Отказ); + Возврат; + КонецЕсли; + + ЭтоОбъект = Ложь; + + Если КлючДанных <> Неопределено + И XMLТипЗнч(КлючДанных) <> Неопределено Тогда + + ТипЗначенияСтрокой = XMLТипЗнч(КлючДанных).ИмяТипа; + ЭтоОбъект = СтрНайти(ТипЗначенияСтрокой, "Object.") > 0; + КонецЕсли; + + Сообщение = пбп_ПереадресацияКлиентСервер.СообщениеПользователю(ТекстСообщенияПользователю, + КлючДанных, Поле, ПутьКДанным, Отказ, ЭтоОбъект); + + Сообщение.Сообщить(); + +КонецПроцедуры + +// Аналог метода БСП. Сокращает строку до нужной длины, при этом обрезанная часть хешируется, +// обеспечивая уникальность строки. Проверяет длину строки на входе и, в случае +// превышения максимальной длины, преобразует ее конец по алгоритму MD5 в +// уникальную строку из 32 символов. +// +// Параметры: +// Строка - Строка - исходная строка произвольной длины. +// МаксимальнаяДлина - Число - требуемое максимальное количество символов в строке, +// минимальное значение: 32. +// +// Возвращаемое значение: +// Строка - строка, не превышающая максимальную длину. +// +Функция СократитьСтрокуКонтрольнойСуммой(Строка, МаксимальнаяДлина) Экспорт + + Результат = ПереадресацияМодуляОбщегоНазначения(); + Если Результат.МодульСуществует Тогда + Возврат Результат.Модуль.СократитьСтрокуКонтрольнойСуммой(Строка, МаксимальнаяДлина); + КонецЕсли; + + Если МаксимальнаяДлина < 32 Тогда + пбп_ПереадресацияКлиентСервер.Проверить(Ложь, + пбп_ПереадресацияКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Параметр %1 не может быть меньше 32.'"), + "МаксимальнаяДлина"), "ОбщегоНазначения.СократитьСтрокуКонтрольнойСуммой"); + КонецЕсли; + + Результат = Строка; + Если СтрДлина(Строка) > МаксимальнаяДлина Тогда + Результат = Лев(Строка, МаксимальнаяДлина - 32); + ХешированиеДанных = Новый ХешированиеДанных(ХешФункция.MD5); + ХешированиеДанных.Добавить(Сред(Строка, МаксимальнаяДлина - 32 + 1)); + Результат = Результат + СтрЗаменить(ХешированиеДанных.ХешСумма, " ", ""); + КонецЕсли; + Возврат Результат; + +КонецФункции + +#Область ХранилищеНастроек + +// Аналог метода БСП. Загружает настройку из хранилища общих настроек, как метод платформы Загрузить, +// объектов СтандартноеХранилищеНастроекМенеджер или ХранилищеНастроекМенеджер.<Имя хранилища>, +// но с поддержкой длины ключа настроек более 128 символов путем хеширования части, +// которая превышает 96 символов. +// Кроме того, возвращает указанное значение по умолчанию, если настройки не существуют. +// Если нет права СохранениеДанныхПользователя, возвращается значение по умолчанию без ошибки. +// +// В возвращаемом значении очищаются ссылки на несуществующий объект в базе данных, а именно +// - возвращаемая ссылка заменяется на указанное значение по умолчанию; +// - из данных типа Массив ссылки удаляются; +// - у данных типа Структура и Соответствие ключ не меняется, а значение устанавливается Неопределено; +// - анализ значений в данных типа Массив, Структура, Соответствие выполняется рекурсивно. +// +// Параметры: +// КлючОбъекта - Строка - см. синтакс-помощник платформы. +// КлючНастроек - Строка - см. синтакс-помощник платформы. +// ЗначениеПоУмолчанию - Произвольный - значение, которое возвращается, если настройки не существуют. +// Если не указано, возвращается значение Неопределено. +// ОписаниеНастроек - ОписаниеНастроек - см. синтакс-помощник платформы. +// ИмяПользователя - Строка - см. синтакс-помощник платформы. +// +// Возвращаемое значение: +// Произвольный - см. синтакс-помощник платформы. +// +Функция ХранилищеОбщихНастроекЗагрузить(КлючОбъекта, КлючНастроек, ЗначениеПоУмолчанию = Неопределено, + ОписаниеНастроек = Неопределено, ИмяПользователя = Неопределено) Экспорт + + Результат = ПереадресацияМодуляОбщегоНазначения(); + Если Результат.МодульСуществует Тогда + Возврат Результат.Модуль.ХранилищеОбщихНастроекЗагрузить( + КлючОбъекта, + КлючНастроек, + ЗначениеПоУмолчанию, + ОписаниеНастроек, + ИмяПользователя); + КонецЕсли; + + Возврат ХранилищеЗагрузить(ХранилищеОбщихНастроек, + КлючОбъекта, + КлючНастроек, + ЗначениеПоУмолчанию, + ОписаниеНастроек, + ИмяПользователя); + +КонецФункции + +// Аналог метода БСП. Сохраняет настройку в хранилище общих настроек, как метод платформы Сохранить, +// объектов СтандартноеХранилищеНастроекМенеджер или ХранилищеНастроекМенеджер.<Имя хранилища>, +// но с поддержкой длины ключа настроек более 128 символов путем хеширования части, +// которая превышает 96 символов. +// Если нет права СохранениеДанныхПользователя, сохранение пропускается без ошибки. +// +// Параметры: +// КлючОбъекта - Строка - см. синтакс-помощник платформы. +// КлючНастроек - Строка - см. синтакс-помощник платформы. +// Настройки - Произвольный - см. синтакс-помощник платформы. +// ОписаниеНастроек - ОписаниеНастроек - см. синтакс-помощник платформы. +// ИмяПользователя - Строка - см. синтакс-помощник платформы. +// ОбновитьПовторноИспользуемыеЗначения - Булево - выполнить одноименный метод платформы. +// +Процедура ХранилищеОбщихНастроекСохранить(КлючОбъекта, КлючНастроек, Настройки, + ОписаниеНастроек = Неопределено, + ИмяПользователя = Неопределено, + ОбновитьПовторноИспользуемыеЗначения = Ложь) Экспорт + + Результат = ПереадресацияМодуляОбщегоНазначения(); + Если Результат.МодульСуществует Тогда + Результат.Модуль.ХранилищеОбщихНастроекСохранить( + КлючОбъекта, + КлючНастроек, + Настройки, + ОписаниеНастроек, + ИмяПользователя, + ОбновитьПовторноИспользуемыеЗначения); + Возврат; + КонецЕсли; + + ХранилищеСохранить(ХранилищеОбщихНастроек, + КлючОбъекта, + КлючНастроек, + Настройки, + ОписаниеНастроек, + ИмяПользователя, + ОбновитьПовторноИспользуемыеЗначения); + +КонецПроцедуры + +// Аналог метода БСП. Удаляет настройку из хранилища общих настроек, как метод платформы Удалить, +// объектов СтандартноеХранилищеНастроекМенеджер или ХранилищеНастроекМенеджер.<Имя хранилища>, +// но с поддержкой длины ключа настроек более 128 символов путем хеширования части, +// которая превышает 96 символов. +// Если нет права СохранениеДанныхПользователя, удаление пропускается без ошибки. +// +// Параметры: +// КлючОбъекта - Строка +// - Неопределено - см. синтакс-помощник платформы. +// КлючНастроек - Строка +// - Неопределено - см. синтакс-помощник платформы. +// ИмяПользователя - Строка +// - Неопределено - см. синтакс-помощник платформы. +// +Процедура ХранилищеОбщихНастроекУдалить(КлючОбъекта, КлючНастроек, ИмяПользователя) Экспорт + + Результат = ПереадресацияМодуляОбщегоНазначения(); + Если Результат.МодульСуществует Тогда + Результат.Модуль.ХранилищеОбщихНастроекУдалить(КлючОбъекта, КлючНастроек, ИмяПользователя); + Возврат; + КонецЕсли; + + ХранилищеУдалить(ХранилищеОбщихНастроек, + КлючОбъекта, + КлючНастроек, + ИмяПользователя); + + КонецПроцедуры + +#КонецОбласти + +// Аналог метода БСП. Возвращает структуру, содержащую значения реквизитов, прочитанные из информационной базы по ссылке на объект. +// Рекомендуется использовать вместо обращения к реквизитам объекта через точку от ссылки на объект +// для быстрого чтения отдельных реквизитов объекта из базы данных. +// +// Если необходимо зачитать реквизит независимо от прав текущего пользователя, +// то следует использовать предварительный переход в привилегированный режим. +// +// Параметры: +// Ссылка - ЛюбаяСсылка - объект, значения реквизитов которого необходимо получить. +// - Строка - полное имя предопределенного элемента, значения реквизитов которого необходимо получить. +// Реквизиты - Строка - имена реквизитов, перечисленные через запятую, в формате +// требований к свойствам структуры. +// Например, "Код, Наименование, Родитель". +// - Структура +// - ФиксированнаяСтруктура - в качестве ключа передается +// псевдоним поля для возвращаемой структуры с результатом, а в качестве +// значения (опционально) фактическое имя поля в таблице. +// Если ключ задан, а значение не определено, то имя поля берется из ключа. +// Допускается указание имени поля через точку, но при этом параметр КодЯзыка для такого поля +// учитываться не будет. +// - Массив из Строка +// - ФиксированныйМассив из Строка - имена реквизитов в формате требований к свойствам структуры. +// ВыбратьРазрешенные - Булево - если Истина, то запрос к объекту выполняется с учетом прав пользователя; +// если есть ограничение на уровне записей, то все реквизиты вернутся со +// значением Неопределено; если нет прав для работы с таблицей, то возникнет исключение; +// если Ложь, то возникнет исключение при отсутствии прав на таблицу +// или любой из реквизитов. +// КодЯзыка - Строка - код языка для мультиязычного реквизита. Значение по умолчанию - основной язык конфигурации. +// +// Возвращаемое значение: +// Структура - содержит имена (ключи) и значения затребованных реквизитов. +// Если в параметр Реквизиты передана пустая строка, то возвращается пустая структура. +// Если в параметр Ссылка передана пустая ссылка, то возвращается структура, +// соответствующая именам реквизитов со значениями Неопределено. +// Если в параметр Ссылка передана ссылка несуществующего объекта (битая ссылка), +// то все реквизиты вернутся со значением Неопределено. +// +Функция ЗначенияРеквизитовОбъекта(Ссылка, Знач Реквизиты, ВыбратьРазрешенные = Ложь, Знач КодЯзыка = Неопределено) Экспорт + + Результат = ПереадресацияМодуляОбщегоНазначения(); + Если Результат.МодульСуществует Тогда + Возврат Результат.Модуль.ЗначенияРеквизитовОбъекта(Ссылка, Реквизиты, ВыбратьРазрешенные, КодЯзыка); + КонецЕсли; + + // Если передано имя предопределенного. + Если ТипЗнч(Ссылка) = Тип("Строка") Тогда + + ПолноеИмяПредопределенногоЭлемента = Ссылка; + + // Вычисление ссылки по имени предопределенного. + // - дополнительно выполняет проверку метаданных предопределенного, выполняется предварительно. + Попытка + Ссылка = ПредопределенноеЗначение(ПолноеИмяПредопределенногоЭлемента); + Исключение + ТекстОшибки = пбп_ПереадресацияКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Неверный первый параметр %1 в функции %2: + |%3'"), "Ссылка", "ОбщегоНазначения.ЗначенияРеквизитовОбъекта", + ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке())); + ВызватьИсключение ТекстОшибки; + КонецПопытки; + + // Разбор полного имени предопределенного. + ЧастиПолногоИмени = СтрРазделить(ПолноеИмяПредопределенногоЭлемента, "."); + ПолноеИмяОбъектаМетаданных = ЧастиПолногоИмени[0] + "." + ЧастиПолногоИмени[1]; + + // Если предопределенный не создан в ИБ, то требуется выполнить проверку доступа к объекту. + // В других сценариях проверка доступа выполняется в момент исполнения запроса. + Если Ссылка = Неопределено Тогда + МетаданныеОбъекта = ОбъектМетаданныхПоПолномуИмени(ПолноеИмяОбъектаМетаданных); + Если Не ПравоДоступа("Чтение", МетаданныеОбъекта) Тогда + ВызватьИсключение пбп_ПереадресацияКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Недостаточно прав для работы с таблицей ""%1""'"), ПолноеИмяОбъектаМетаданных); + КонецЕсли; + КонецЕсли; + + Иначе // Если передана ссылка. + + Попытка + ПолноеИмяОбъектаМетаданных = Ссылка.Метаданные().ПолноеИмя(); + Исключение + ВызватьИсключение пбп_ПереадресацияКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Неверный первый параметр %1 в функции %2: + |Значение должно быть ссылкой или именем предопределенного элемента.'"), + "Ссылка", "ОбщегоНазначения.ЗначенияРеквизитовОбъекта"); + КонецПопытки; + + КонецЕсли; + + // Разбор реквизитов, если второй параметр Строка. + Если ТипЗнч(Реквизиты) = Тип("Строка") Тогда + Если ПустаяСтрока(Реквизиты) Тогда + Возврат Новый Структура; + КонецЕсли; + + Реквизиты = СтрРазделить(Реквизиты, ",", Ложь); + Для Индекс = 0 По Реквизиты.ВГраница() Цикл + Реквизиты[Индекс] = СокрЛП(Реквизиты[Индекс]); + КонецЦикла; + КонецЕсли; + + // Приведение реквизитов к единому формату. + СтруктураПолей = Новый Структура; + Если ТипЗнч(Реквизиты) = Тип("Структура") + Или ТипЗнч(Реквизиты) = Тип("ФиксированнаяСтруктура") Тогда + + Для Каждого КлючИЗначение Из Реквизиты Цикл + СтруктураПолей.Вставить(КлючИЗначение.Ключ, СокрЛП(КлючИЗначение.Значение)); + КонецЦикла; + + ИначеЕсли ТипЗнч(Реквизиты) = Тип("Массив") + Или ТипЗнч(Реквизиты) = Тип("ФиксированныйМассив") Тогда + + Для Каждого Реквизит Из Реквизиты Цикл + Реквизит = СокрЛП(Реквизит); + Попытка + ПсевдонимПоля = СтрЗаменить(Реквизит, ".", ""); + СтруктураПолей.Вставить(ПсевдонимПоля, Реквизит); + Исключение + // Если псевдоним не является ключом. + + // Поиск ошибки доступности полей. + Результат = ПроверитьСуществованиеРеквизитовОбъекта(ПолноеИмяОбъектаМетаданных, Реквизиты); + Если Результат.Ошибка Тогда + ВызватьИсключение пбп_ПереадресацияКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Неверный второй параметр %1 в функции %2: %3'"), + "Реквизиты", "ОбщегоНазначения.ЗначенияРеквизитовОбъекта", Результат.ОписаниеОшибки); + КонецЕсли; + + // Не удалось распознать ошибку, проброс первичной ошибки. + ВызватьИсключение; + + КонецПопытки; + КонецЦикла; + Иначе + ВызватьИсключение пбп_ПереадресацияКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Неверный тип второго параметра %1 в функции %2: %3.'"), + "Реквизиты", "ОбщегоНазначения.ЗначенияРеквизитовОбъекта", Строка(ТипЗнч(Реквизиты))); + КонецЕсли; + + // Подготовка результата (после выполнения запроса переопределится). + Результат = Новый Структура; + + // Формирование текста запроса к выбираемым полям. + ТекстЗапросаПолей = ""; + Для каждого КлючИЗначение Из СтруктураПолей Цикл + + ИмяПоля = ?(ЗначениеЗаполнено(КлючИЗначение.Значение), + КлючИЗначение.Значение, + КлючИЗначение.Ключ); + ПсевдонимПоля = КлючИЗначение.Ключ; + + ТекстЗапросаПолей = + ТекстЗапросаПолей + ?(ПустаяСтрока(ТекстЗапросаПолей), "", ",") + " + | " + ИмяПоля + " КАК " + ПсевдонимПоля; + + // Предварительное добавление поля по псевдониму в возвращаемый результат. + Результат.Вставить(ПсевдонимПоля); + + КонецЦикла; + + // Если предопределенного нет в ИБ. + // - приведение результата к отсутствию объекта в ИБ или передаче пустой ссылки. + Если Ссылка = Неопределено Тогда + Возврат Результат; + КонецЕсли; + + Если Тип("Структура") = ТипЗнч(Реквизиты) + Или Тип("ФиксированнаяСтруктура") = ТипЗнч(Реквизиты) Тогда + Реквизиты = Новый Массив; + Для Каждого КлючИЗначение Из СтруктураПолей Цикл + ИмяПоля = ?(ЗначениеЗаполнено(КлючИЗначение.Значение), + КлючИЗначение.Значение, + КлючИЗначение.Ключ); + Реквизиты.Добавить(ИмяПоля); + КонецЦикла; + КонецЕсли; + + РеквизитыЧерезТочку = Новый Массив; + Для Индекс = -Реквизиты.ВГраница() По 0 Цикл + ИмяПоля = Реквизиты[-Индекс]; + Если СтрНайти(ИмяПоля, ".") Тогда + РеквизитыЧерезТочку.Добавить(ИмяПоля); + Реквизиты.Удалить(-Индекс); + КонецЕсли; + КонецЦикла; + + Если ЗначениеЗаполнено(Реквизиты) Тогда + ЗначенияРеквизитовОбъекта = ЗначенияРеквизитовОбъектов( + пбп_ПереадресацияКлиентСервер.ЗначениеВМассиве(Ссылка), + Реквизиты, ВыбратьРазрешенные, + КодЯзыка)[Ссылка]; + Если ЗначенияРеквизитовОбъекта <> Неопределено Тогда + Для Каждого КлючИЗначение Из СтруктураПолей Цикл + ИмяПоля = ?(ЗначениеЗаполнено(КлючИЗначение.Значение), + КлючИЗначение.Значение, + КлючИЗначение.Ключ); + Если СтрНайти(ИмяПоля, ".") = 0 И ЗначенияРеквизитовОбъекта.Свойство(ИмяПоля) Тогда + Результат[КлючИЗначение.Ключ] = ЗначенияРеквизитовОбъекта[ИмяПоля]; + КонецЕсли; + КонецЦикла; + КонецЕсли; + КонецЕсли; + + Если Не ЗначениеЗаполнено(РеквизитыЧерезТочку) Тогда + Возврат Результат; + КонецЕсли; + + Реквизиты = РеквизитыЧерезТочку; + + ТекстЗапроса = + "ВЫБРАТЬ РАЗРЕШЕННЫЕ + |&ТекстЗапросаПолей + |ИЗ + | &ПолноеИмяОбъектаМетаданных КАК ПсевдонимЗаданнойТаблицы + |ГДЕ + | ПсевдонимЗаданнойТаблицы.Ссылка = &Ссылка"; + + Если Не ВыбратьРазрешенные Тогда + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "РАЗРЕШЕННЫЕ", ""); // @Query-part-1 + КонецЕсли; + + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ТекстЗапросаПолей", ТекстЗапросаПолей); + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ПолноеИмяОбъектаМетаданных", ПолноеИмяОбъектаМетаданных); + + // Выполнение запроса. + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("Ссылка", Ссылка); + Запрос.Текст = ТекстЗапроса; + + Попытка + Выборка = Запрос.Выполнить().Выбрать(); + Исключение + + // Если реквизиты были переданы строкой, то они уже конвертированы в массив. + // Если реквизиты - массив, оставляем без изменений. + // Если реквизиты - структура - конвертируем в массив. + // В остальных случаях уже было бы выброшено исключение. + Если Тип("Структура") = ТипЗнч(Реквизиты) + Или Тип("ФиксированнаяСтруктура") = ТипЗнч(Реквизиты) Тогда + Реквизиты = Новый Массив; + Для каждого КлючИЗначение Из СтруктураПолей Цикл + ИмяПоля = ?(ЗначениеЗаполнено(КлючИЗначение.Значение), + КлючИЗначение.Значение, + КлючИЗначение.Ключ); + Реквизиты.Добавить(ИмяПоля); + КонецЦикла; + КонецЕсли; + + // Поиск ошибки доступности полей. + Результат = ПроверитьСуществованиеРеквизитовОбъекта(ПолноеИмяОбъектаМетаданных, Реквизиты); + Если Результат.Ошибка Тогда + ВызватьИсключение пбп_ПереадресацияКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Неверный второй параметр %1 в функции %2: %3'"), + "Реквизиты", "ОбщегоНазначения.ЗначенияРеквизитовОбъекта", Результат.ОписаниеОшибки); + КонецЕсли; + + // Не удалось распознать ошибку, проброс первичной ошибки. + ВызватьИсключение; + + КонецПопытки; + + // Заполнение реквизитов. + Если Выборка.Следующий() Тогда + ЗаполнитьЗначенияСвойств(Результат, Выборка); + КонецЕсли; + + Возврат Результат; + +КонецФункции + +// Аналог меотда БСП Возвращает код основного языка информационной базы, например "ru". +// На котором программно записываются автогенерируемые строки в информационную базу. +// Например, при начальном заполнении информационной базы данными из макета, автогенерации комментария +// к проводке или определении значения параметра ИмяСобытия метода ЗаписьЖурналаРегистрации. +// +// Возвращаемое значение: +// Строка +// +Функция КодОсновногоЯзыка() Экспорт + + Результат = ПереадресацияМодуляОбщегоНазначения(); + Если Результат.МодульСуществует Тогда + Возврат Результат.Модуль.КодОсновногоЯзыка(); + КонецЕсли; + + Если ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда + МодульМультиязычностьСервер = ОбщийМодуль("МультиязычностьСервер"); + Возврат МодульМультиязычностьСервер.КодОсновногоЯзыка(); + КонецЕсли; + + Возврат Метаданные.ОсновнойЯзык.КодЯзыка; + +КонецФункции + +// Аналог метода БСП. Возвращает значения реквизитов, прочитанные из информационной базы для нескольких объектов. +// Рекомендуется использовать вместо обращения к реквизитам объекта через точку от ссылки на объект +// для быстрого чтения отдельных реквизитов объекта из базы данных. +// +// Если необходимо зачитать реквизит независимо от прав текущего пользователя, +// то следует использовать предварительный переход в привилегированный режим. +// +// Если передано имя несуществующего реквизита, то вызывается исключение "Поле объекта не существует". +// +// Параметры: +// Ссылки - Массив из ЛюбаяСсылка +// - ФиксированныйМассив из ЛюбаяСсылка - ссылки на объекты. +// Если массив пуст, то результатом будет пустое соответствие. +// Реквизиты - Строка - имена реквизитов перечисленные через запятую, в формате требований к свойствам +// структуры. Например, "Код, Наименование, Родитель". +// - Массив из Строка +// - ФиксированныйМассив из Строка - имена реквизитов в формате требований к свойствам структуры. +// ВыбратьРазрешенные - Булево - если Истина, то запрос к объектам выполняется с учетом прав пользователя; +// если какой-либо объект будет исключен из выборки по правам, то этот объект +// будет исключен и из результата; +// если Ложь, то возникнет исключение при отсутствии прав на таблицу +// или любой из реквизитов. +// КодЯзыка - Строка - код языка для мультиязычного реквизита. Значение по умолчанию - основной язык конфигурации. +// +// Возвращаемое значение: +// Соответствие из КлючИЗначение - список объектов и значений их реквизитов: +// * Ключ - ЛюбаяСсылка - ссылка на объект; +// * Значение - Структура: +// ** Ключ - Строка - имя реквизита; +// ** Значение - Произвольный - значение реквизита. +// +Функция ЗначенияРеквизитовОбъектов(Ссылки, Знач Реквизиты, ВыбратьРазрешенные = Ложь, Знач КодЯзыка = Неопределено) Экспорт + + Результат = ПереадресацияМодуляОбщегоНазначения(); + Если Результат.МодульСуществует Тогда + Возврат Результат.Модуль.ЗначенияРеквизитовОбъектов(Ссылки, Реквизиты, ВыбратьРазрешенные, КодЯзыка); + КонецЕсли; + + Если ТипЗнч(Реквизиты) = Тип("Массив") Или ТипЗнч(Реквизиты) = Тип("ФиксированныйМассив") Тогда + Реквизиты = СтрСоединить(Реквизиты, ","); + КонецЕсли; + + Если ПустаяСтрока(Реквизиты) Тогда + ВызватьИсключение пбп_ПереадресацияКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Неверный второй параметр %1 в функции %2: + |Поле объекта должно быть указано.'"), "Реквизиты", "ОбщегоНазначения.ЗначенияРеквизитовОбъектов"); + КонецЕсли; + + Если СтрНайти(Реквизиты, ".") <> 0 Тогда + ВызватьИсключение пбп_ПереадресацияКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Неверный второй параметр %1 в функции %2: + |Обращение через точку не поддерживается.'"), "Реквизиты", "ОбщегоНазначения.ЗначенияРеквизитовОбъектов"); + КонецЕсли; + + ЗначенияРеквизитов = Новый Соответствие; + Если Ссылки.Количество() = 0 Тогда + Возврат ЗначенияРеквизитов; + КонецЕсли; + + Если ЗначениеЗаполнено(КодЯзыка) Тогда + КодЯзыка = СтрРазделить(КодЯзыка, "_", Истина)[0]; + КонецЕсли; + + РеквизитыТекстЗапроса = Реквизиты; + + СсылкиПоТипам = Новый Соответствие; + Для Каждого Ссылка Из Ссылки Цикл + Тип = ТипЗнч(Ссылка); + Если СсылкиПоТипам[Тип] = Неопределено Тогда + СсылкиПоТипам[Тип] = Новый Массив; + КонецЕсли; + ЭлементПоТипу = СсылкиПоТипам[Тип]; // Массив + ЭлементПоТипу.Добавить(Ссылка); + КонецЦикла; + + ТекстыЗапросов = Новый Массив; + ПараметрыЗапроса = Новый Структура; + + ИменаОбъектовМетаданных = Новый Массив; + + Для Каждого СсылкиПоТипу Из СсылкиПоТипам Цикл + Тип = СсылкиПоТипу.Ключ; + ОбъектМетаданных = Метаданные.НайтиПоТипу(Тип); + Если ОбъектМетаданных = Неопределено Тогда + ВызватьИсключение пбп_ПереадресацияКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Неверный первый параметр %1 в функции %2: + |Значения массива должны быть ссылками.'"), "Ссылки", "ОбщегоНазначения.ЗначенияРеквизитовОбъектов"); + КонецЕсли; + + ПолноеИмяОбъектаМетаданных = ОбъектМетаданных.ПолноеИмя(); + ИменаОбъектовМетаданных.Добавить(ПолноеИмяОбъектаМетаданных); + + ТекстЗапроса = + "ВЫБРАТЬ РАЗРЕШЕННЫЕ + | Ссылка, + | &Реквизиты + |ИЗ + | &ПолноеИмяОбъектаМетаданных КАК ПсевдонимЗаданнойТаблицы + |ГДЕ + | ПсевдонимЗаданнойТаблицы.Ссылка В (&Ссылки)"; + Если Не ВыбратьРазрешенные Или ТекстыЗапросов.Количество() > 0 Тогда + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "РАЗРЕШЕННЫЕ", ""); // @Query-part-1 + КонецЕсли; + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&Реквизиты", РеквизитыТекстЗапроса); + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ПолноеИмяОбъектаМетаданных", ПолноеИмяОбъектаМетаданных); + ИмяПараметра = "Ссылки" + СтрЗаменить(ПолноеИмяОбъектаМетаданных, ".", ""); + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&Ссылки", "&" + ИмяПараметра); // @Query-part-1 + ПараметрыЗапроса.Вставить(ИмяПараметра, СсылкиПоТипу.Значение); + + ТекстыЗапросов.Добавить(ТекстЗапроса); + КонецЦикла; + + ТекстЗапроса = СтрСоединить(ТекстыЗапросов, Символы.ПС + "ОБЪЕДИНИТЬ ВСЕ" + Символы.ПС); + + Запрос = Новый Запрос(ТекстЗапроса); + Запрос.УстановитьПараметр("КодЯзыка", КодЯзыка); + Для Каждого Параметр Из ПараметрыЗапроса Цикл + Запрос.УстановитьПараметр(Параметр.Ключ, Параметр.Значение); + КонецЦикла; + + Попытка + Выборка = Запрос.Выполнить().Выбрать(); + Исключение + + // Удаление пробелов. + Реквизиты = СтрЗаменить(Реквизиты, " ", ""); + // Преобразование параметра в массив полей. + Реквизиты = СтрРазделить(Реквизиты, ","); + + // Поиск ошибки доступности полей. + СписокОшибок = Новый Массив; + Для Каждого ПолноеИмяОбъектаМетаданных Из ИменаОбъектовМетаданных Цикл + Результат = ПроверитьСуществованиеРеквизитовОбъекта(ПолноеИмяОбъектаМетаданных, Реквизиты); + Если Результат.Ошибка Тогда + СписокОшибок.Добавить(Результат.ОписаниеОшибки); + КонецЕсли; + КонецЦикла; + + Если ЗначениеЗаполнено(СписокОшибок) Тогда + ВызватьИсключение пбп_ПереадресацияКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Неверный второй параметр %1 в функции %2: %3'"), + "Реквизиты", "ОбщегоНазначения.ЗначенияРеквизитовОбъектов", СтрСоединить(СписокОшибок, Символы.ПС)); + КонецЕсли; + + // Не удалось распознать ошибку, проброс первичной ошибки. + ВызватьИсключение; + + КонецПопытки; + + Пока Выборка.Следующий() Цикл + Результат = Новый Структура(Реквизиты); + ЗаполнитьЗначенияСвойств(Результат, Выборка); + ЗначенияРеквизитов[Выборка.Ссылка] = Результат; + + КонецЦикла; + + Возврат ЗначенияРеквизитов; + +КонецФункции + +// Аналог метода БСП. Возвращает значения реквизита, прочитанного из информационной базы по ссылке на объект. +// Рекомендуется использовать вместо обращения к реквизитам объекта через точку от ссылки на объект +// для быстрого чтения отдельных реквизитов объекта из базы данных. +// +// Если необходимо зачитать реквизит независимо от прав текущего пользователя, +// то следует использовать предварительный переход в привилегированный режим. +// +// Если передано имя несуществующего реквизита, то вызывается исключение "Поле объекта не существует". +// +// Параметры: +// Ссылка - ЛюбаяСсылка - объект, значения реквизитов которого необходимо получить. +// - Строка - полное имя предопределенного элемента, значения реквизитов которого необходимо получить. +// ИмяРеквизита - Строка - имя получаемого реквизита. +// Допускается указание имени реквизита через точку, но при этом параметр КодЯзыка для +// такого реквизита учитываться не будет. +// ВыбратьРазрешенные - Булево - если Истина, то запрос к объекту выполняется с учетом прав пользователя; +// если есть ограничение на уровне записей, то возвращается Неопределено; +// если нет прав для работы с таблицей, то возникнет исключение; +// если Ложь, то возникнет исключение при отсутствии прав на таблицу +// или любой из реквизитов. +// КодЯзыка - Строка - код языка для мультиязычного реквизита. Значение по умолчанию - основной язык конфигурации. +// +// Возвращаемое значение: +// Произвольный - если в параметр Ссылка передана пустая ссылка, то возвращается Неопределено. +// Если в параметр Ссылка передана ссылка несуществующего объекта (битая ссылка), +// то возвращается Неопределено. +// +Функция ЗначениеРеквизитаОбъекта(Ссылка, ИмяРеквизита, ВыбратьРазрешенные = Ложь, Знач КодЯзыка = Неопределено) Экспорт + + Результат = ПереадресацияМодуляОбщегоНазначения(); + Если Результат.МодульСуществует Тогда + Возврат Результат.Модуль.ЗначениеРеквизитаОбъекта(Ссылка, ИмяРеквизита, ВыбратьРазрешенные, КодЯзыка); + КонецЕсли; + + Если ПустаяСтрока(ИмяРеквизита) Тогда + ВызватьИсключение пбп_ПереадресацияКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Неверный второй параметр %1 в функции %2: + |Имя реквизита должно быть заполнено.'"), "ИмяРеквизита", "ОбщегоНазначения.ЗначениеРеквизитаОбъекта"); + КонецЕсли; + + Результат = ЗначенияРеквизитовОбъекта(Ссылка, ИмяРеквизита, ВыбратьРазрешенные, КодЯзыка); + Возврат Результат[СтрЗаменить(ИмяРеквизита, ".", "")]; + +КонецФункции + +// Аналог метода БСП. Возвращает ОбъектМетаданных, быстро найденный по полному имени. +// Более производительный аналог метода платформы Метаданные.НайтиПоПолномуИмени +// для корневых объектов метаданных. +// +// Параметры: +// ПолноеИмя - Строка - полное имя объекта метаданных, например, Справочник.Организации +// +// Возвращаемое значение: +// ОбъектМетаданных - когда найден +// Неопределено - когда не найден +// +Функция ОбъектМетаданныхПоПолномуИмени(ПолноеИмя) Экспорт + + Результат = ПереадресацияМодуляОбщегоНазначения(); + Если Результат.МодульСуществует Тогда + Возврат Результат.Модуль.ОбъектМетаданныхПоПолномуИмени(ПолноеИмя); + КонецЕсли; + + ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ПолноеИмя); + + Возврат ОбъектМетаданных; + +КонецФункции + +// Аналог метода БСП. Проверяет существование указанных реквизитов у объекта метаданных. +// +// Параметры: +// ПолноеИмяОбъектаМетаданных - Строка - полное имя проверяемого объекта. +// ПроверяемыеВыражения - Массив - имена полей или проверяемые выражения объекта метаданных. +// +// Возвращаемое значение: +// Структура: +// * Ошибка - Булево - найдена ошибка. +// * ОписаниеОшибки - Строка - описание найденных ошибок. +// +// Пример: +// +// Реквизиты = Новый Массив; +// Реквизиты.Добавить("Номер"); +// Реквизиты.Добавить("Валюта.НаименованиеПолное"); +// +// Результат = ОбщегоНазначения.ПроверитьСуществованиеРеквизитовОбъекта("Документ._ДемоЗаказПокупателя", Реквизиты); +// +// Если Результат.Ошибка Тогда +// ВызватьИсключение Результат.ОписаниеОшибки; +// КонецЕсли; +// +Функция ПроверитьСуществованиеРеквизитовОбъекта(ПолноеИмяОбъектаМетаданных, ПроверяемыеВыражения) + + Результат = ПереадресацияМодуляОбщегоНазначения(); + Если Результат.МодульСуществует Тогда + Возврат Результат.Модуль.ПроверитьСуществованиеРеквизитовОбъекта(ПолноеИмяОбъектаМетаданных, ПроверяемыеВыражения); + КонецЕсли; + + МетаданныеОбъекта = ОбъектМетаданныхПоПолномуИмени(ПолноеИмяОбъектаМетаданных); + Если МетаданныеОбъекта = Неопределено Тогда + Возврат Новый Структура("Ошибка, ОписаниеОшибки", Истина, + пбп_ПереадресацияКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Несуществующий объект метаданных ""%1"".'"), ПолноеИмяОбъектаМетаданных)); + КонецЕсли; + + // Разрешение вызова из безопасного режима внешней обработки или расширения. + // Информация о доступности полей источника схемы при проверке метаданных не является секретной. + УстановитьПривилегированныйРежим(Истина); + + Схема = Новый СхемаЗапроса; + Пакет = Схема.ПакетЗапросов.Добавить(Тип("ЗапросВыбораСхемыЗапроса")); + Оператор = Пакет.Операторы.Получить(0); + + Источник = Оператор.Источники.Добавить(ПолноеИмяОбъектаМетаданных, "Таблица"); + ТекстОшибки = ""; + + Возврат Новый Структура("Ошибка, ОписаниеОшибки", Не ПустаяСтрока(ТекстОшибки), ТекстОшибки); + +КонецФункции + +// Аналог метода БСП. Создает объект ОписаниеТипов, содержащий тип Строка. +// +// Параметры: +// ДлинаСтроки - Число - длина строки. +// +// Возвращаемое значение: +// ОписаниеТипов - описание типа Строка. +// +Функция ОписаниеТипаСтрока(ДлинаСтроки) Экспорт + + Результат = ПереадресацияМодуляОбщегоНазначения(); + Если Результат.МодульСуществует Тогда + Возврат Результат.Модуль.ОписаниеТипаСтрока(ДлинаСтроки); + КонецЕсли; + + Возврат Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(ДлинаСтроки)); + +КонецФункции + +// Аналог метода БСП. Создает объект ОписаниеТипов, содержащий тип Число. +// +// Параметры: +// Разрядность - Число - общее количество разрядов числа (количество разрядов +// целой части плюс количество разрядов дробной части). +// РазрядностьДробнойЧасти - Число - число разрядов дробной части. +// ЗнакЧисла - ДопустимыйЗнак - допустимый знак числа. +// +// Возвращаемое значение: +// ОписаниеТипов - описание типа Число. +// +Функция ОписаниеТипаЧисло(Разрядность, РазрядностьДробнойЧасти = 0, Знач ЗнакЧисла = Неопределено) Экспорт + + Результат = ПереадресацияМодуляОбщегоНазначения(); + Если Результат.МодульСуществует Тогда + Возврат Результат.Модуль.ОписаниеТипаЧисло(Разрядность, РазрядностьДробнойЧасти, ЗнакЧисла); + КонецЕсли; + + Если ЗнакЧисла = Неопределено Тогда + ЗнакЧисла = ДопустимыйЗнак.Любой; + КонецЕсли; + + Возврат Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(Разрядность, РазрядностьДробнойЧасти, ЗнакЧисла)); + +КонецФункции + +// Аналог метода БСП. Возвращает значение настройки рабочей даты для пользователя или текущей даты сеанса, +// если рабочая дата пользователя не задана. +// +// Параметры: +// ИмяПользователя - Строка - имя пользователя, для которого запрашивается рабочая дата. +// Если не задано, то устанавливается для текущего пользователя. +// +// Возвращаемое значение: +// Дата - значение настройки рабочей даты пользователя или текущая дата сеанса, если настройка не задана. +// +Функция ТекущаяДатаПользователя(ИмяПользователя = Неопределено) Экспорт + + Результат = ПереадресацияМодуляОбщегоНазначения(); + Если Результат.МодульСуществует Тогда + Возврат Результат.Модуль.ТекущаяДатаПользователя(ИмяПользователя); + КонецЕсли; + + Возврат ТекущаяДатаСеанса(); + +КонецФункции + +#Область СериализацияXML + +// Аналог метода БСП. Преобразует (сериализует) любое значение в XML-строку. +// Преобразованы в могут быть только те объекты, для которых в синтакс-помощнике указано, что они сериализуются. +// См. также ЗначениеИзСтрокиXML. +// +// Параметры: +// Значение - Произвольный - значение, которое необходимо сериализовать в XML-строку. +// +// Возвращаемое значение: +// Строка - XML-строка. +// +Функция ЗначениеВСтрокуXML(Значение) Экспорт + + Результат = ПереадресацияМодуляОбщегоНазначения(); + Если Результат.МодульСуществует Тогда + Возврат Результат.Модуль.ЗначениеВСтрокуXML(Значение); + КонецЕсли; + + ЗаписьXML = Новый ЗаписьXML; + ЗаписьXML.УстановитьСтроку(); + СериализаторXDTO.ЗаписатьXML(ЗаписьXML, Значение, НазначениеТипаXML.Явное); + + Возврат ЗаписьXML.Закрыть(); +КонецФункции + +// Аналог метода БСП. Выполняет преобразование (десериализацию) XML-строки в значение. +// См. также ЗначениеВСтрокуXML. +// +// Параметры: +// СтрокаXML - Строка - XML-строка, с сериализованным объектом.. +// +// Возвращаемое значение: +// Произвольный - значение, полученное из переданной XML-строки. +// +Функция ЗначениеИзСтрокиXML(СтрокаXML) Экспорт + + Результат = ПереадресацияМодуляОбщегоНазначения(); + Если Результат.МодульСуществует Тогда + Возврат Результат.Модуль.ЗначениеИзСтрокиXML(СтрокаXML); + КонецЕсли; + + ЧтениеXML = Новый ЧтениеXML; + ЧтениеXML.УстановитьСтроку(СтрокаXML); + + Возврат СериализаторXDTO.ПрочитатьXML(ЧтениеXML); +КонецФункции + +#КонецОбласти + +// Аналог метода БСП. Возвращает менеджер объекта по полному имени объекта метаданных. +// Ограничение: не обрабатываются точки маршрутов бизнес-процессов. +// +// Параметры: +// ПолноеИмя - Строка - полное имя объекта метаданных. Пример: "Справочник.Организации". +// +// Возвращаемое значение: +// СправочникМенеджер, ДокументМенеджер, ОбработкаМенеджер, РегистрСведенийМенеджер - менеджер объекта. +// +// Пример: +// МенеджерСправочника = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени("Справочник.Организации"); +// ПустаяСсылка = МенеджерСправочника.ПустаяСсылка(); +// +Функция МенеджерОбъектаПоПолномуИмени(ПолноеИмя) Экспорт + Перем КлассОМ, ИмяОМ, Менеджер; + + Результат = ПереадресацияМодуляОбщегоНазначения(); + Если Результат.МодульСуществует Тогда + Возврат Результат.Модуль.МенеджерОбъектаПоПолномуИмени(ПолноеИмя); + КонецЕсли; + + ЧастиИмени = СтрРазделить(ПолноеИмя, "."); + + Если ЧастиИмени.Количество() >= 2 Тогда + КлассОМ = ЧастиИмени[0]; + ИмяОМ = ЧастиИмени[1]; + Иначе + Менеджер = Неопределено; + КонецЕсли; + + Если ВРег(КлассОМ) = "ПЛАНОБМЕНА" Тогда + Менеджер = ПланыОбмена; + + ИначеЕсли ВРег(КлассОМ) = "СПРАВОЧНИК" Тогда + Менеджер = Справочники; + + ИначеЕсли ВРег(КлассОМ) = "ДОКУМЕНТ" Тогда + Менеджер = Документы; + + ИначеЕсли ВРег(КлассОМ) = "ЖУРНАЛДОКУМЕНТОВ" Тогда + Менеджер = ЖурналыДокументов; + + ИначеЕсли ВРег(КлассОМ) = "ПЕРЕЧИСЛЕНИЕ" Тогда + Менеджер = Перечисления; + + ИначеЕсли ВРег(КлассОМ) = "ОТЧЕТ" Тогда + Менеджер = Отчеты; + + ИначеЕсли ВРег(КлассОМ) = "ОБРАБОТКА" Тогда + Менеджер = Обработки; + + ИначеЕсли ВРег(КлассОМ) = "ПЛАНВИДОВХАРАКТЕРИСТИК" Тогда + Менеджер = ПланыВидовХарактеристик; + + ИначеЕсли ВРег(КлассОМ) = "ПЛАНСЧЕТОВ" Тогда + Менеджер = ПланыСчетов; + + ИначеЕсли ВРег(КлассОМ) = "ПЛАНВИДОВРАСЧЕТА" Тогда + Менеджер = ПланыВидовРасчета; + + ИначеЕсли ВРег(КлассОМ) = "РЕГИСТРСВЕДЕНИЙ" Тогда + Менеджер = РегистрыСведений; + + ИначеЕсли ВРег(КлассОМ) = "РЕГИСТРНАКОПЛЕНИЯ" Тогда + Менеджер = РегистрыНакопления; + + ИначеЕсли ВРег(КлассОМ) = "РЕГИСТРБУХГАЛТЕРИИ" Тогда + Менеджер = РегистрыБухгалтерии; + + ИначеЕсли ВРег(КлассОМ) = "РЕГИСТРРАСЧЕТА" Тогда + + Если ЧастиИмени.Количество() = 2 Тогда + Менеджер = РегистрыРасчета; + + ИначеЕсли ЧастиИмени.Количество() = 4 Тогда + КлассПодчиненногоОМ = ЧастиИмени[2]; + ИмяПодчиненногоОМ = ЧастиИмени[3]; + + Если ВРег(КлассПодчиненногоОМ) = "ПЕРЕРАСЧЕТ" Тогда + Менеджер = РегистрыРасчета[ИмяОМ].Перерасчеты; + ИмяОм = ИмяПодчиненногоОМ; + + Иначе + Менеджер = Неопределено; + КонецЕсли; + + Иначе + Менеджер = Неопределено; + КонецЕсли; + + ИначеЕсли ВРег(КлассОМ) = "БИЗНЕСПРОЦЕСС" Тогда + Менеджер = БизнесПроцессы; + + ИначеЕсли ВРег(КлассОМ) = "ЗАДАЧА" Тогда + Менеджер = Задачи; + + ИначеЕсли ВРег(КлассОМ) = "КОНСТАНТА" Тогда + Менеджер = Константы; + + ИначеЕсли ВРег(КлассОМ) = "ПОСЛЕДОВАТЕЛЬНОСТЬ" Тогда + Менеджер = Последовательности; + + Иначе + Менеджер = Неопределено; + КонецЕсли; + + Если Менеджер = Неопределено Тогда + ПроверитьОбъектМетаданныхСуществует(ПолноеИмя); + ВызватьИсключение пбп_ПереадресацияКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Объект метаданных ""%1"" не имеет менеджера объекта.'; + |en = 'Metadata object %1 has no object manager.'"), ПолноеИмя); + КонецЕсли; + + Попытка + Возврат Менеджер[ИмяОМ]; + Исключение + ПроверитьОбъектМетаданныхСуществует(ПолноеИмя); + ВызватьИсключение; + КонецПопытки; + +КонецФункции + +// Аналог метода БСП. Возвращает менеджер объекта по ссылке на объект. +// Ограничение: не обрабатываются точки маршрутов бизнес-процессов. +// См. также ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени. +// +// Параметры: +// Ссылка - ЛюбаяСсылка - объект, менеджер которого требуется получить. +// +// Возвращаемое значение: +// СправочникМенеджер, ДокументМенеджер, ОбработкаМенеджер, РегистрСведенийМенеджер - менеджер объекта. +// +// Пример: +// МенеджерСправочника = ОбщегоНазначения.МенеджерОбъектаПоСсылке(СсылкаНаОрганизацию); +// ПустаяСсылка = МенеджерСправочника.ПустаяСсылка(); +// +Функция МенеджерОбъектаПоСсылке(Ссылка) Экспорт + + Результат = ПереадресацияМодуляОбщегоНазначения(); + Если Результат.МодульСуществует Тогда + Возврат Результат.Модуль.МенеджерОбъектаПоСсылке(Ссылка); + КонецЕсли; + + ИмяОбъекта = Ссылка.Метаданные().Имя; + ТипСсылки = ТипЗнч(Ссылка); + + Если Справочники.ТипВсеСсылки().СодержитТип(ТипСсылки) Тогда + Возврат Справочники[ИмяОбъекта]; + + ИначеЕсли Документы.ТипВсеСсылки().СодержитТип(ТипСсылки) Тогда + Возврат Документы[ИмяОбъекта]; + + ИначеЕсли БизнесПроцессы.ТипВсеСсылки().СодержитТип(ТипСсылки) Тогда + Возврат БизнесПроцессы[ИмяОбъекта]; + + ИначеЕсли ПланыВидовХарактеристик.ТипВсеСсылки().СодержитТип(ТипСсылки) Тогда + Возврат ПланыВидовХарактеристик[ИмяОбъекта]; + + ИначеЕсли ПланыСчетов.ТипВсеСсылки().СодержитТип(ТипСсылки) Тогда + Возврат ПланыСчетов[ИмяОбъекта]; + + ИначеЕсли ПланыВидовРасчета.ТипВсеСсылки().СодержитТип(ТипСсылки) Тогда + Возврат ПланыВидовРасчета[ИмяОбъекта]; + + ИначеЕсли Задачи.ТипВсеСсылки().СодержитТип(ТипСсылки) Тогда + Возврат Задачи[ИмяОбъекта]; + + ИначеЕсли ПланыОбмена.ТипВсеСсылки().СодержитТип(ТипСсылки) Тогда + Возврат ПланыОбмена[ИмяОбъекта]; + + ИначеЕсли Перечисления.ТипВсеСсылки().СодержитТип(ТипСсылки) Тогда + Возврат Перечисления[ИмяОбъекта]; + Иначе + Возврат Неопределено; + КонецЕсли; + +КонецФункции + +#Область Данные + +// Аналог метода БСП. Вычисляет контрольную сумму для произвольных данных по указанному алгоритму. +// +// Параметры: +// Данные - Произвольный - любое сериализуемое значение. +// Алгоритм - ХешФункция - алгоритм расчета контрольной суммы. По умолчанию, MD5. +// +// Возвращаемое значение: +// Строка - контрольная сумма строкой без пробелов (например 32 символа). +// +Функция КонтрольнаяСуммаСтрокой(Знач Данные, Знач Алгоритм = Неопределено) Экспорт + + Результат = ПереадресацияМодуляОбщегоНазначения(); + Если Результат.МодульСуществует Тогда + Возврат Результат.Модуль.КонтрольнаяСуммаСтрокой(Данные, Алгоритм); + КонецЕсли; + + Если Алгоритм = Неопределено Тогда + Алгоритм = ХешФункция.MD5; + КонецЕсли; + + ХешированиеДанных = Новый ХешированиеДанных(Алгоритм); + Если ТипЗнч(Данные) <> Тип("Строка") И ТипЗнч(Данные) <> Тип("ДвоичныеДанные") Тогда + Данные = ЗначениеВСтрокуXML(Данные); + КонецЕсли; + ХешированиеДанных.Добавить(Данные); + + Если ТипЗнч(ХешированиеДанных.ХешСумма) = Тип("ДвоичныеДанные") Тогда + Результат = СтрЗаменить(ХешированиеДанных.ХешСумма, " ", ""); + ИначеЕсли ТипЗнч(ХешированиеДанных.ХешСумма) = Тип("Число") Тогда + Результат = Формат(ХешированиеДанных.ХешСумма, "ЧГ="); + КонецЕсли; + + Возврат Результат; + +КонецФункции + +#КонецОбласти + +#Область ТекущееОкружение + +// Аналог метода БСП. Возвращает Истина, если текущий сеанс выполняется на сервере, работающем под управлением ОС Windows. +// +// Возвращаемое значение: +// Булево - Истина, если сервер работает под управлением ОС Windows. +// +Функция ЭтоWindowsСервер() Экспорт + + Результат = ПереадресацияМодуляОбщегоНазначения(); + Если Результат.МодульСуществует Тогда + Возврат Результат.Модуль.ЭтоWindowsСервер(); + КонецЕсли; + + СистемнаяИнформация = Новый СистемнаяИнформация; + Возврат СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Windows_x86 + Или СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Windows_x86_64; + +КонецФункции + +// Аналог метода БСП. Возвращает Истина, если текущий сеанс выполняется на сервере, работающем под управлением ОС Linux. +// +// Возвращаемое значение: +// Булево - Истина, если сервер работает под управлением ОС Linux. +// +Функция ЭтоLinuxСервер() Экспорт + + Результат = ПереадресацияМодуляОбщегоНазначения(); + Если Результат.МодульСуществует Тогда + Возврат Результат.Модуль.ЭтоLinuxСервер(); + КонецЕсли; + + СистемнаяИнформация = Новый СистемнаяИнформация; + Возврат СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Linux_x86 + Или СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Linux_x86_64; + +КонецФункции + +#КонецОбласти // ТекущееОкружение + +#Область Прочее + +// Аналог метода БСП. Выполняет проверки перед выполнением обработчика регламентного задания и прерывает выполнение, +// если его запуск в данный момент невозможен, например: +// - еще не завершено обновление программы; +// - запуск через консоль или другим способом, минуя включение функциональной опции +// (если регламентное задание зависит от функциональных опций); +// - попытка выполнения задания, работающего с внешними ресурсами в копии информационной базы. +// +// Параметры: +// РегламентноеЗадание - ОбъектМетаданныхРегламентноеЗадание - регламентное задание, +// из которого вызывается данная процедура. +// +// Пример: +// ОбщегоНазначения.ПриНачалеВыполненияРегламентногоЗадания(Метаданные.РегламентныеЗадания.<ИмяРегламентногоЗадания>); +// +Процедура ПриНачалеВыполненияРегламентногоЗадания(РегламентноеЗадание = Неопределено) Экспорт + + Результат = ПереадресацияМодуляОбщегоНазначения(); + Если Результат.МодульСуществует Тогда + Результат.Модуль.ПриНачалеВыполненияРегламентногоЗадания(РегламентноеЗадание); + Возврат; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти // Прочее + +#КонецОбласти + +#Область ФайловаяСистема + +// Аналог метода БСП. Удаляет временный файл. +// +// Выбрасывает исключение, если передано имя не временного файла. +// +// Если временный файл не может быть удален (например, он занят каким-то процессом), +// то в журнал регистрации записывается соответствующее предупреждение, а процедура завершается. +// +// Для совместного использования с методом ПолучитьИмяВременногоФайла, +// после окончания работы с временным файлом. +// +// Параметры: +// Путь - Строка - полный путь к временному файлу. +// +Процедура УдалитьВременныйФайл(Знач Путь) Экспорт + + Результат = ПереадресацияМодуляФайловаяСистема(); + Если Результат.МодульСуществует Тогда + Результат.Модуль.УдалитьВременныйФайл(Путь); + Возврат; + КонецЕсли; + + Если НЕ ЭтоИмяВременногоФайла(Путь) Тогда + ВызватьИсключение пбп_ПереадресацияКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Неверное значение параметра %1 в %2: + |Файл не является временным ""%3"".'"), + "Путь", "ФайловаяСистема.УдалитьВременныйФайл", Путь); + КонецЕсли; + + УдалитьВременныеФайлы(Путь); + +КонецПроцедуры + +#Область ЗапускВнешнихПриложений + +// Аналог метода БСП. Конструктор параметров для ФайловаяСистема.ЗапуститьПрограмму. +// +// Возвращаемое значение: +// Структура: +// * ТекущийКаталог - Строка - задает текущий каталог запускаемого приложения. +// * ДождатьсяЗавершения - Булево - Ложь - дожидаться завершения запущенного приложения +// перед продолжением работы. +// * ПолучитьПотокВывода - Булево - Ложь - результат, направленный в поток stdout, +// если не указан ДождатьсяЗавершения - игнорируется. +// * ПолучитьПотокОшибок - Булево - Ложь - ошибки, направленные в поток stderr, +// если не указан ДождатьсяЗавершения - игнорируется. +// * КодировкаПотоков - КодировкаТекста +// - Строка - кодировка, используемая для чтения stdout и stderr. +// По умолчанию используется для Windows "CP866", для остальных - "UTF-8". +// * КодировкаИсполнения - Строка +// - Число - кодировка, устанавливаемая в Windows с помощью команды chcp, +// возможные значения: "OEM", "CP866", "UTF8" или номер кодовой страницы. +// В Linux устанавливается переменной окружения "LANGUAGE" для конкретной команды, +// возможные значения можно определить выполнив команду "locale -a", например "ru_RU.UTF-8". +// В MacOS игнорируется. +// +Функция ПараметрыЗапускаПрограммы() Экспорт + + Результат = ПереадресацияМодуляФайловаяСистема(); + Если Результат.МодульСуществует Тогда + Возврат Результат.Модуль.ПараметрыЗапускаПрограммы(); + КонецЕсли; + + Параметры = Новый Структура; + Параметры.Вставить("ТекущийКаталог", ""); + Параметры.Вставить("ДождатьсяЗавершения", Ложь); + Параметры.Вставить("ПолучитьПотокВывода", Ложь); + Параметры.Вставить("ПолучитьПотокОшибок", Ложь); + Параметры.Вставить("КодировкаПотоков", Неопределено); + Параметры.Вставить("КодировкаИсполнения", Неопределено); + + Возврат Параметры; + +КонецФункции + +// Запускает внешнюю программу на исполнение (например, *.exe, *bat), +// или системную команду (например, ping, tracert или traceroute, обращаться к rac-клиенту), +// Позволяет также получать код возврата и значения потоков вывода (stdout) и ошибок (stderr) +// +// При запуске внешней программы в пакетном режиме поток вывода и поток ошибок может возвращаться на не ожидаемом языке. +// Для того чтобы передать внешней программе язык, на котором ожидается результат следует: +// - указать язык в параметре запуска этой программы (если такой параметр предусмотрен). +// Например, в пакетном режиме платформы 1С:Предприятие предусмотрен ключ "/L en"; +// - в других случаях явно установить кодировку исполнения пакетной команды. +// См. свойство КодировкаИсполнения возвращаемого значения ФайловаяСистема.ПараметрыЗапускаПрограммы. +// +// Параметры: +// КомандаЗапуска - Строка - командная строка для запуска программы. +// - Массив - первый элемент массива, путь к исполняемому приложению, +// остальные элементы массива - это передаваемые параметры, +// массив соответствует тому, который получит вызываемая программа в argv. +// ПараметрыЗапускаПрограммы - см. ФайловаяСистема.ПараметрыЗапускаПрограммы +// +// Возвращаемое значение: +// Структура: +// * КодВозврата - Число - код возврата программы; +// * ПотокВывода - Строка - результат работы программы, направленный в поток stdout; +// * ПотокОшибок - Строка - ошибки исполнения программы, направленные в поток stderr. +// +// Пример: +// // Простой запуск +// ФайловаяСистема.ЗапуститьПрограмму("calc"); +// +// // Запуск с ожиданием завершения +// ПараметрыЗапускаПрограммы = ФайловаяСистема.ПараметрыЗапускаПрограммы(); +// ПараметрыЗапускаПрограммы.ДождатьсяЗавершения = Истина; +// ФайловаяСистема.ЗапуститьПрограмму("C:\Program Files\1cv8\common\1cestart.exe", +// ПараметрыЗапускаПрограммы); +// +// // Запуск с ожиданием завершения и получением потока вывода +// ПараметрыЗапускаПрограммы = ФайловаяСистема.ПараметрыЗапускаПрограммы(); +// ПараметрыЗапускаПрограммы.ДождатьсяЗавершения = Истина; +// ПараметрыЗапускаПрограммы.ПолучитьПотокВывода = Истина; +// Результат = ФайловаяСистема("ping 127.0.0.1 -n 5", ПараметрыЗапускаПрограммы); +// ОбщегоНазначений.СообщитьПользователю(Результат.ПотокВывода); +// +// // Запуск с ожиданием завершения и получением потока вывода и с конкатенацией команды запуска +// ПараметрыЗапускаПрограммы = ФайловаяСистема.ПараметрыЗапускаПрограммы(); +// ПараметрыЗапускаПрограммы.ДождатьсяЗавершения = Истина; +// ПараметрыЗапускаПрограммы.ПолучитьПотокВывода = Истина; +// КомандаЗапуска = Новый Массив; +// КомандаЗапуска.Добавить("ping"); +// КомандаЗапуска.Добавить("127.0.0.1"); +// КомандаЗапуска.Добавить("-n"); +// КомандаЗапуска.Добавить(5); +// Результат = ФайловаяСистема.ЗапуститьПрограмму(КомандаЗапуска, ПараметрыЗапускаПрограммы); +// ОбщегоНазначений.СообщитьПользователю(Результат.ПотокВывода); +// +Функция ЗапуститьПрограмму(Знач КомандаЗапуска, ПараметрыЗапускаПрограммы = Неопределено) Экспорт + + Результат = ПереадресацияМодуляФайловаяСистема(); + Если Результат.МодульСуществует Тогда + Возврат Результат.Модуль.ЗапуститьПрограмму(КомандаЗапуска, ПараметрыЗапускаПрограммы); + КонецЕсли; + + СтрокаКоманды = пбп_ПереадресацияКлиентСервер.БезопаснаяСтрокаКоманды(КомандаЗапуска); + + Если ПараметрыЗапускаПрограммы = Неопределено Тогда + ПараметрыЗапускаПрограммы = ПараметрыЗапускаПрограммы(); + КонецЕсли; + + ТекущийКаталог = ПараметрыЗапускаПрограммы.ТекущийКаталог; + ДождатьсяЗавершения = ПараметрыЗапускаПрограммы.ДождатьсяЗавершения; + ПолучитьПотокВывода = ПараметрыЗапускаПрограммы.ПолучитьПотокВывода; + ПолучитьПотокОшибок = ПараметрыЗапускаПрограммы.ПолучитьПотокОшибок; + КодировкаПотоков = ПараметрыЗапускаПрограммы.КодировкаПотоков; + КодировкаИсполнения = ПараметрыЗапускаПрограммы.КодировкаИсполнения; + + ПроверитьТекущийКаталог(СтрокаКоманды, ТекущийКаталог); + + Если ДождатьсяЗавершения Тогда + Если ПолучитьПотокВывода Тогда + // BSLLS:MissingTemporaryFileDeletion-off + ИмяФайлаПотокаВывода = ПолучитьИмяВременногоФайла("stdout.tmp"); + // BSLLS:MissingTemporaryFileDeletion-on + СтрокаКоманды = СтрокаКоманды + " > """ + ИмяФайлаПотокаВывода + """"; + КонецЕсли; + + Если ПолучитьПотокОшибок Тогда + // BSLLS:MissingTemporaryFileDeletion-off + ИмяФайлаПотокаОшибок = ПолучитьИмяВременногоФайла("stderr.tmp"); + // BSLLS:MissingTemporaryFileDeletion-on + СтрокаКоманды = СтрокаКоманды + " 2>""" + ИмяФайлаПотокаОшибок + """"; + КонецЕсли; + КонецЕсли; + + Если КодировкаПотоков = Неопределено Тогда + КодировкаПотоков = КодировкаСтандартныхПотоков(); + КонецЕсли; + + // Для cmd не всегда активна текущая кодовая страница, поэтому всегда задаем по-умолчанию. + Если КодировкаИсполнения = Неопределено И пбп_Переадресация.ЭтоWindowsСервер() Тогда + КодировкаИсполнения = "CP866"; + КонецЕсли; + + КодВозврата = Неопределено; + + Если пбп_Переадресация.ЭтоWindowsСервер() Тогда + + СтрокаКоманды = пбп_ПереадресацияКлиентСервер.СтрокаЗапускаКомандыWindows( + СтрокаКоманды, ТекущийКаталог, ДождатьсяЗавершения, КодировкаИсполнения); + + Если пбп_Переадресация.ИнформационнаяБазаФайловая() Тогда + // В файловой информационной базе показывать окно консоли не следует и в серверном контексте. + Оболочка = Новый COMОбъект("Wscript.Shell"); + КодВозврата = Оболочка.Run(СтрокаКоманды, 0, ДождатьсяЗавершения); + Оболочка = Неопределено; + Иначе + // BSLLS:ExternalAppStarting-off + ЗапуститьПриложение(СтрокаКоманды, , ДождатьсяЗавершения, КодВозврата); + // BSLLS:ExternalAppStarting-on + КонецЕсли; + + Иначе + + Если пбп_Переадресация.ЭтоLinuxСервер() И ЗначениеЗаполнено(КодировкаИсполнения) Тогда + СтрокаКоманды = "LANGUAGE=" + КодировкаИсполнения + " " + СтрокаКоманды; + КонецЕсли; + + // BSLLS:ExternalAppStarting-off + ЗапуститьПриложение(СтрокаКоманды, ТекущийКаталог, ДождатьсяЗавершения, КодВозврата); + // BSLLS:ExternalAppStarting-on + КонецЕсли; + + ПотокВывода = ""; + ПотокОшибок = ""; + + Если ДождатьсяЗавершения Тогда + Если ПолучитьПотокВывода Тогда + ПотокВывода = ПрочитатьФайлЕслиСуществует(ИмяФайлаПотокаВывода, КодировкаПотоков); + УдалитьВременныйФайл(ИмяФайлаПотокаВывода); + КонецЕсли; + + Если ПолучитьПотокОшибок Тогда + ПотокОшибок = ПрочитатьФайлЕслиСуществует(ИмяФайлаПотокаОшибок, КодировкаПотоков); + УдалитьВременныйФайл(ИмяФайлаПотокаОшибок); + КонецЕсли; + КонецЕсли; + + Результат = Новый Структура; + Результат.Вставить("КодВозврата", КодВозврата); + Результат.Вставить("ПотокВывода", ПотокВывода); + Результат.Вставить("ПотокОшибок", ПотокОшибок); + + Возврат Результат; + +КонецФункции + +#КонецОбласти + +#КонецОбласти + +#Область СерверныеОповещения + +// Аналог метода БСП. Добавляет серверное оповещение в очередь для доставки на клиент. +// Оповещение доставляется через систему взаимодействия, +// либо забирается в рамках общего серверного вызова. +// +// Параметры: +// ИмяОповещения - Строка - смотри НовоеСерверноеОповещение.Имя. +// +// Результат - Произвольный - произвольное сериализуемое значение, +// которое будет отправлено в составе оповещения на клиент +// (должны быть как можно меньшего размера, желательно не более 1 Кб). +// +// Адресаты - Неопределено - все пользователи (и соответственно все сеансы). +// Если указано незаполненное соответствие, тогда возврат. +// - Соответствие из КлючИЗначение: +// * Ключ - УникальныйИдентификатор - идентификатор пользователя ИБ. +// * Значение - Массив из см. СерверныеОповещения.КлючСеанса +// +// ОтправитьСразу - Булево - если Истина, попытаться сразу отправить сообщение +// через систему взаимодействия перед добавлением в очередь. +// Отправка сразу не допускается из обработчиков ПриОтправкеСерверногоОповещения. +// Следует учесть (особенно при вызове в транзакции), что неудачное обращение +// к системе взаимодействия может занимать (3-5 сек)*2, а удачное не менее (50 мс)*2. +// +Процедура ОтправитьСерверноеОповещение(ИмяОповещения, Результат, Адресаты, ОтправитьСразу = Ложь) Экспорт + + Результат = ПереадресацияМодуляСерверныеОповещения(); + Если Результат.МодульСуществует Тогда + Результат.Модуль.ОтправитьСерверноеОповещение(ИмяОповещения, Результат, Адресаты, ОтправитьСразу); + Возврат; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область РегламентныеЗаданияСервер + +// Аналог метода БСП. В локальном режиме работы возвращает регламентные задания, соответствующие отбору. +// В модели сервиса - таблицу значений, в которой содержится описание найденных заданий +// в справочнике ОчередьЗаданий. +// +// Параметры: +// Отбор - Структура - со свойствами: +// 1) Общие для любого режима работы: +// * УникальныйИдентификатор - УникальныйИдентификатор - идентификатор регламентного задания в локальном +// режиме работы или идентификатор ссылки задания очереди в модели сервиса. +// - Строка - строка уникального идентификатора регламентного задания в локальном +// режиме работы или идентификатор ссылки задания очереди в модели сервиса. +// - СправочникСсылка.ОчередьЗаданий - идентификатор задания +// очереди в модели сервиса. +// - СтрокаТаблицыЗначений из см. НайтиЗадания +// * Метаданные - ОбъектМетаданныхРегламентноеЗадание - метаданные регламентного задания. +// - Строка - имя метаданных регламентного задания. +// * Использование - Булево - если Истина, задание включено. +// * Ключ - Строка - прикладной идентификатор задания. +// 2) Возможные ключи только локального режима: +// * Наименование - Строка - наименование регламентного задания. +// * Предопределенное - Булево - если Истина, регламентное задание определено в метаданных. +// 3) Возможные ключи только для модели сервиса: +// * ИмяМетода - Строка - имя метода (или псевдоним) обработчика очереди задании. +// * ОбластьДанных - Число - значение разделителя области данных задания. +// * СостояниеЗадания - ПеречислениеСсылка.СостоянияЗаданий - состояние задания очереди. +// * Шаблон - СправочникСсылка.ШаблоныЗаданийОчереди - шаблон задания, используется только +// для разделенных заданий очереди. +// +// Возвращаемое значение: +// Массив из РегламентноеЗадание - в локальном режиме работы массив регламентных заданий. +// ТаблицаЗначений - в модели сервиса с колонками: +// * Использование - Булево - если Истина, задание включено. +// * Ключ - Строка - прикладной идентификатор задания. +// * Параметры - Массив - параметры, передаваемые в обработчик задания. +// * Расписание - РасписаниеРегламентногоЗадания - расписание задания. +// * УникальныйИдентификатор - СправочникСсылка.ОчередьЗаданий - идентификатор задания +// очереди в модели сервиса. +// * ЗапланированныйМоментЗапуска - Дата - дата и время запланированного запуска задания +// (в часовом поясе области данных). +// * ИмяМетода - Строка - имя метода (или псевдоним) обработчика очереди задании. +// * ОбластьДанных - Число - значение разделителя области данных задания. +// * СостояниеЗадания - ПеречислениеСсылка.СостоянияЗаданий - состояние задания очереди. +// * Шаблон - СправочникСсылка.ШаблоныЗаданийОчереди - шаблон задания, +// используется только для разделенных заданий очереди. +// * ЭксклюзивноеВыполнение - Булево - при установленном флаге задание будет выполнено +// даже при установленной блокировке начала сеансов в области +// данных. Так же если в области есть задания с таким флагом +// сначала будут выполнены они. +// * ИнтервалПовтораПриАварийномЗавершении - Число - интервал в секундах, через который нужно перезапускать +// задание в случае его аварийного завершения. +// * КоличествоПовторовПриАварийномЗавершении - Число - количество повторов при аварийном завершении задания. +// +Функция НайтиЗадания(Отбор) Экспорт + + Результат = ПереадресацияМодуляРегламентныеЗаданияСервер(); + Если Результат.МодульСуществует Тогда + Возврат Результат.Модуль.НайтиЗадания(Отбор); + КонецЕсли; + + СписокЗаданий = РегламентныеЗадания.ПолучитьРегламентныеЗадания(Отбор); + + Возврат СписокЗаданий; + +КонецФункции + +// Аналог метода БСП. Удаляет задание из очереди или регламентное. +// +// Параметры: +// Идентификатор - ОбъектМетаданных - объект метаданных регламентного задания для поиска +// непредопределенного регламентного задания. +// - Строка - имя метаданных предопределенного регламентного задания в любом режиме работы +// или строка уникального идентификатора регламентного задания в локальном режиме работы +// или строка уникального идентификатора ссылки задания очереди в модели сервиса. +// - УникальныйИдентификатор - идентификатор регламентного задания в локальном режиме работы. +// или идентификатор ссылки задания очереди в модели сервиса. +// - РегламентноеЗадание - регламентное задание, уникальный идентификатор которого используется +// для определения удаляемого экземпляра регламентного задания в локальном режиме работы. +// - СправочникСсылка.ОчередьЗаданий - идентификатор задания очереди в модели сервиса. +// - СтрокаТаблицыЗначений из см. НайтиЗадания +// +Процедура УдалитьЗадание(Знач Идентификатор) Экспорт + + Результат = ПереадресацияМодуляРегламентныеЗаданияСервер(); + Если Результат.МодульСуществует Тогда + Результат.Модуль.УдалитьЗадание(Идентификатор); + Возврат; + КонецЕсли; + + Идентификатор = УточненныйИдентификаторЗадания(Идентификатор); + + УдалитьРегламентноеЗадание(Идентификатор); + +КонецПроцедуры + +// Аналог метода БСП. Добавляет новое задание в очередь или регламентное. +// +// Параметры: +// Параметры - Структура - параметры добавляемого задания, возможные свойства: +// * Использование - Булево - Истина, если регламентное задание должно выполняться автоматически согласно расписанию. +// * Метаданные - ОбъектМетаданныхРегламентноеЗадание - обязательно для указания. Объект метаданных, на основе +// которого будет создано регламентное задание. +// * Параметры - Массив - параметры регламентного задания. Количество и состав параметров должны соответствовать +// параметрам метода регламентного задания. +// * Ключ - Строка - прикладной идентификатор регламентного задания. +// * ИнтервалПовтораПриАварийномЗавершении - Число - интервал в секундах, через который нужно перезапускать задание +// в случае его аварийного завершения. +// * Расписание - РасписаниеРегламентногоЗадания - расписание задания. +// * КоличествоПовторовПриАварийномЗавершении - Число - количество повторов при аварийном завершении задания. +// +// Возвращаемое значение: +// РегламентноеЗадание - в локальном режиме работы. +// СтрокаТаблицыЗначений из см. НайтиЗадания +// +Функция ДобавитьЗадание(Параметры) Экспорт + + Результат = ПереадресацияМодуляРегламентныеЗаданияСервер(); + Если Результат.МодульСуществует Тогда + Возврат Результат.Модуль.ДобавитьЗадание(Параметры); + КонецЕсли; + + Задание = ДобавитьРегламентноеЗадание(Параметры); + + Возврат Задание; + +КонецФункции + +// Аналог метода БСП. Добавляет новое регламентное задание (без учета очереди заданий модели сервиса). +// +// Параметры: +// Параметры - Структура - параметры добавляемого задания, возможные свойства: +// * Использование - Булево - Истина, если регламентное задание должно выполняться автоматически согласно расписанию. +// * Метаданные - ОбъектМетаданныхРегламентноеЗадание - обязательно для указания. Объект метаданных, на основе +// которого будет создано регламентное задание. +// * Параметры - Массив - параметры регламентного задания. Количество и состав параметров должны соответствовать +// параметрам метода регламентного задания. +// * Ключ - Строка - прикладной идентификатор регламентного задания. +// * ИнтервалПовтораПриАварийномЗавершении - Число - интервал в секундах, через который нужно перезапускать задание +// в случае его аварийного завершения. +// * Расписание - РасписаниеРегламентногоЗадания - расписание задания. +// * КоличествоПовторовПриАварийномЗавершении - Число - количество повторов при аварийном завершении задания. +// +// Возвращаемое значение: +// РегламентноеЗадание +// +Функция ДобавитьРегламентноеЗадание(Параметры) Экспорт + + Результат = ПереадресацияМодуляРегламентныеЗаданияСервер(); + Если Результат.МодульСуществует Тогда + Возврат Результат.Модуль.ДобавитьРегламентноеЗадание(Параметры); + КонецЕсли; + + МетаданныеЗадания = Параметры.Метаданные; + Задание = РегламентныеЗадания.СоздатьРегламентноеЗадание(МетаданныеЗадания); + + Если Параметры.Свойство("Наименование") Тогда + Задание.Наименование = Параметры.Наименование; + Иначе + Задание.Наименование = МетаданныеЗадания.Наименование; + КонецЕсли; + + Если Параметры.Свойство("Использование") Тогда + Задание.Использование = Параметры.Использование; + Иначе + Задание.Использование = МетаданныеЗадания.Использование; + КонецЕсли; + + Если Параметры.Свойство("Ключ") Тогда + Задание.Ключ = Параметры.Ключ; + Иначе + Задание.Ключ = МетаданныеЗадания.Ключ; + КонецЕсли; + + Если Параметры.Свойство("ИмяПользователя") Тогда + Задание.ИмяПользователя = Параметры.ИмяПользователя; + КонецЕсли; + + Если Параметры.Свойство("ИнтервалПовтораПриАварийномЗавершении") Тогда + Задание.ИнтервалПовтораПриАварийномЗавершении = Параметры.ИнтервалПовтораПриАварийномЗавершении; + Иначе + Задание.ИнтервалПовтораПриАварийномЗавершении = МетаданныеЗадания.ИнтервалПовтораПриАварийномЗавершении; + КонецЕсли; + + Если Параметры.Свойство("КоличествоПовторовПриАварийномЗавершении") Тогда + Задание.КоличествоПовторовПриАварийномЗавершении = Параметры.КоличествоПовторовПриАварийномЗавершении; + Иначе + Задание.КоличествоПовторовПриАварийномЗавершении = МетаданныеЗадания.КоличествоПовторовПриАварийномЗавершении; + КонецЕсли; + + Если Параметры.Свойство("Параметры") Тогда + Задание.Параметры = Параметры.Параметры; + КонецЕсли; + + Если Параметры.Свойство("Расписание") Тогда + Задание.Расписание = Параметры.Расписание; + КонецЕсли; + + Задание.Записать(); + + Возврат Задание; + +КонецФункции + +#КонецОбласти + +#Область Пользователи + +// Аналог метода БСП. Возвращает текущего пользователя. +// Рекомендуется использовать в коде, который не поддерживает работу с внешними пользователями. +// +// Если вход в сеанс выполнил внешний пользователь, тогда будет вызвано исключение. +// +// Возвращаемое значение: +// СправочникСсылка.Пользователи - пользователь. +// +Функция ТекущийПользователь() Экспорт + + Результат = ПереадресацияМодуляПользователи(); + Если Результат.МодульСуществует Тогда + Возврат Результат.Модуль.ТекущийПользователь(); + КонецЕсли; + + Возврат пбп_ПереадресацияКлиентСервер.ТекущийПользователь(АвторизованныйПользователь()); + +КонецФункции + +// Аналог метода БСП. Возвращает пользователя ИБ по ссылке справочника Пользователи или ВнешниеПользователи. +// Для поиска требуются административные права. Если административных прав нет, +// допустимо искать только пользователя для текущего пользователя ИБ. +// +// Параметры: +// Пользователь - СправочникСсылка.Пользователи +// - СправочникСсылка.ВнешниеПользователи +// +// Возвращаемое значение: +// ПользовательИнформационнойБазы - если найден. +// Неопределено - если пользователь ИБ не существует. +// +Функция НайтиПоСсылке(Пользователь) Экспорт + + Результат = ПереадресацияМодуляПользователи(); + Если Результат.МодульСуществует Тогда + Возврат Результат.Модуль.НайтиПоСсылке(Пользователь); + КонецЕсли; + + Возврат Неопределено; + +КонецФункции + +// Аналог метода БСП. Только для внутреннего использования. +// +// Возвращаемое значение: +// Неопределено +// +Функция АвторизованныйПользователь() Экспорт + + Результат = ПереадресацияМодуляПользователи(); + Если Результат.МодульСуществует Тогда + Возврат Результат.Модуль.АвторизованныйПользователь(); + КонецЕсли; + + Возврат Неопределено; + +КонецФункции + +#КонецОбласти + +#Область ПолучениеФайловИзИнтернета + +// Аналог метода БСП. Возвращает объект ИнтернетПрокси для доступа в Интернет. +// Допустимые протоколы для создания ИнтернетПрокси http, https, ftp и ftps. +// +// Параметры: +// URLИлиПротокол - Строка - url в формате [Протокол://]<Сервер>/<Путь к файлу на сервере>, +// либо идентификатор протокола (http, ftp, ...). +// +// Возвращаемое значение: +// ИнтернетПрокси - описывает параметры прокси-серверов для различных протоколов. +// Если не удалось распознать схему сетевой протокол, +// то будет создать прокси на основании протокола HTTP. +// +Функция ПолучитьПрокси(Знач URLИлиПротокол) Экспорт + + Результат = ПереадресацияМодуляПолучениеФайловИзИнтернета(); + Если Результат.МодульСуществует Тогда + Возврат Результат.Модуль.ПолучитьПрокси(URLИлиПротокол); + КонецЕсли; + + НастройкиПрокси = пбп_Переадресация.ХранилищеОбщихНастроекЗагрузить("НастройкаПроксиСервера", ""); + Возврат НовыйИнтернетПрокси(НастройкиПрокси, URLИлиПротокол); + +КонецФункции + +// Аналог метода БСП. Возвращает прокси по настройкам НастройкаПроксиСервера для заданного протокола Протокол. +// +// Параметры: +// НастройкаПроксиСервера - Соответствие из КлючИЗначение: +// * Ключ - Строка - см. ниже список возможных ключей. +// * Значение - Произвольный +// ИспользоватьПрокси - Булево - использовать ли прокси-сервер. +// НеИспользоватьПроксиДляЛокальныхАдресов - использовать ли прокси-сервер для локальных адресов. +// НеИспользоватьПроксиДляАдресов - Массив из Строка +// ИспользоватьСистемныеНастройки - Булево - использовать ли системные настройки прокси-сервера. +// Сервер - Строка - адрес прокси-сервера. +// Порт - Строка - порт прокси-сервера. +// Пользователь - Строка - имя пользователя для авторизации на прокси-сервере. +// Пароль - Строка - пароль пользователя. +// ИспользоватьАутентификациюОС - Булево - признак использования аутентификации средствами операционной системы. +// URLИлиПротокол - Строка - адрес ресурса или протокол, для которого устанавливаются параметры прокси сервера, +// например "https://1c.ru", "http", "https", "ftp", "ftps". +// +// Возвращаемое значение: +// ИнтернетПрокси +// +Функция НовыйИнтернетПрокси(НастройкаПроксиСервера, URLИлиПротокол) Экспорт + + Результат = ПереадресацияМодуляПолучениеФайловИзИнтернета(); + Если Результат.МодульСуществует Тогда + Возврат Результат.Модуль.НовыйИнтернетПрокси(НастройкаПроксиСервера, URLИлиПротокол); + КонецЕсли; + + Если НастройкаПроксиСервера = Неопределено Тогда + // Системные установки прокси-сервера. + Возврат Неопределено; + КонецЕсли; + + ИспользоватьПрокси = НастройкаПроксиСервера.Получить("ИспользоватьПрокси"); + Если Не ИспользоватьПрокси Тогда + // Не использовать прокси-сервер. + Возврат Новый ИнтернетПрокси(Ложь); + КонецЕсли; + + ИспользоватьСистемныеНастройки = НастройкаПроксиСервера.Получить("ИспользоватьСистемныеНастройки"); + Если ИспользоватьСистемныеНастройки Тогда + // Системные настройки прокси-сервера. + Возврат Новый ИнтернетПрокси(Истина); + КонецЕсли; + + ИспользоватьАутентификациюОС = НастройкаПроксиСервера.Получить("ИспользоватьАутентификациюОС"); + ИспользоватьАутентификациюОС = ?(ИспользоватьАутентификациюОС = Истина, Истина, Ложь); + + ДополнительныеНастройки = НастройкаПроксиСервера.Получить("ДополнительныеНастройкиПрокси"); + Если ТипЗнч(ДополнительныеНастройки) <> Тип("Соответствие") Тогда + ДополнительныеНастройки = Новый Соответствие; + КонецЕсли; + + // Настройки прокси-сервера, заданные вручную. + Прокси = Новый ИнтернетПрокси; + + Протоколы = СтрРазделить("http,https,ftp,ftps", ",", Ложь); + Для Каждого Протокол Из Протоколы Цикл + АдресСервера = НастройкаПроксиСервера["Сервер"]; + Порт = НастройкаПроксиСервера["Порт"]; + + ПроксиПоПротоколу = ДополнительныеНастройки[Протокол]; + Если ТипЗнч(ПроксиПоПротоколу) = Тип("Структура") Тогда + АдресСервера = ПроксиПоПротоколу.Адрес; + Порт = ПроксиПоПротоколу.Порт; + КонецЕсли; + + Если Не ЗначениеЗаполнено(Порт) Тогда + Порт = Неопределено; + КонецЕсли; + + Прокси.Установить(Протокол, АдресСервера, Порт, + НастройкаПроксиСервера["Пользователь"], НастройкаПроксиСервера["Пароль"], ИспользоватьАутентификациюОС); + КонецЦикла; + + Прокси.НеИспользоватьПроксиДляЛокальныхАдресов = НастройкаПроксиСервера["НеИспользоватьПроксиДляЛокальныхАдресов"]; + + АдресаИсключений = НастройкаПроксиСервера.Получить("НеИспользоватьПроксиДляАдресов"); + Если ТипЗнч(АдресаИсключений) = Тип("Массив") Тогда + Для каждого АдресИсключения Из АдресаИсключений Цикл + Прокси.НеИспользоватьПроксиДляАдресов.Добавить(АдресИсключения); + КонецЦикла; + КонецЕсли; + + Возврат Прокси; + +КонецФункции + +#КонецОбласти + +#КонецОбласти + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +#Область МодульПереадресацииПоПодсистемам + +Функция ПереадресацияМодуляЖурналРегистрации() + Возврат пбп_ПереадресацияПовтИсп.ОпределитьМодульПереадресации("ЖурналРегистрации"); +КонецФункции + +Функция ПереадресацияМодуляОбщегоНазначения() + Возврат пбп_ПереадресацияПовтИсп.ОпределитьМодульПереадресации("ОбщегоНазначения"); +КонецФункции + +Функция ПереадресацияМодуляСерверныеОповещения() + Возврат пбп_ПереадресацияПовтИсп.ОпределитьМодульПереадресации("СерверныеОповещения"); +КонецФункции + +Функция ПереадресацияМодуляРегламентныеЗаданияСервер() + Возврат пбп_ПереадресацияПовтИсп.ОпределитьМодульПереадресации("РегламентныеЗаданияСервер"); +КонецФункции + +Функция ПереадресацияМодуляПользователи() + Возврат пбп_ПереадресацияПовтИсп.ОпределитьМодульПереадресации("Пользователи"); +КонецФункции + +Функция ПереадресацияМодуляПолучениеФайловИзИнтернета() + Возврат пбп_ПереадресацияПовтИсп.ОпределитьМодульПереадресации("ПолучениеФайловИзИнтернета"); +КонецФункции + +Функция ПереадресацияМодуляФайловаяСистема() + Возврат пбп_ПереадресацияПовтИсп.ОпределитьМодульПереадресации("ФайловаяСистема"); +КонецФункции + +#КонецОбласти + +#Область ПереадресацияМетодов + +#Область ФайловаяСистема + +// Аналог метода БСП. +// +Процедура УдалитьВременныеФайлы(Знач Путь) + + Попытка + УдалитьФайлы(Путь); + Исключение + пбп_Переадресация.ДобавитьСообщениеДляЖурналаРегистрации( + НСтр("ru = 'Стандартные подсистемы'", пбп_Переадресация.КодОсновногоЯзыка()), + УровеньЖурналаРегистрации.Ошибка, , , + пбп_ПереадресацияКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Не удалось удалить временный файл ""%1"" по причине: + |%2'"), + Путь, + ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()))); + КонецПопытки; + +КонецПроцедуры + +// Аналог метода БСП. +// +Функция ЭтоИмяВременногоФайла(Путь) + + // Ожидается, что Путь получен методом ПолучитьИмяВременногоФайла(). + // Перед проверкой разворачиваем слэши в одну сторону. + Возврат СтрНачинаетсяС(СтрЗаменить(Путь, "/", "\"), СтрЗаменить(КаталогВременныхФайлов(), "/", "\")); + +КонецФункции + +#Область ЗапуститьПрограмму + +// Аналог метода БСП. +// +Процедура ПроверитьТекущийКаталог(СтрокаКоманды, ТекущийКаталог) + + Если Не ПустаяСтрока(ТекущийКаталог) Тогда + + ФайлИнфо = Новый Файл(ТекущийКаталог); + + Если Не ФайлИнфо.Существует() Тогда + ВызватьИсключение пбп_ПереадресацияКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Не удалось запустить программу + |%1 + |по причине: + |Не существует каталог %2 + |%3'"), + СтрокаКоманды, "ТекущийКаталог", ТекущийКаталог); + КонецЕсли; + + Если Не ФайлИнфо.ЭтоКаталог() Тогда + ВызватьИсключение пбп_ПереадресацияКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Не удалось запустить программу + |%1 + |по причине: + |%2 не является каталогом + |%3'"), + СтрокаКоманды, "ТекущийКаталог", ТекущийКаталог); + КонецЕсли; + + КонецЕсли; + +КонецПроцедуры + +// Аналог метода БСП. +// +Функция ПрочитатьФайлЕслиСуществует(Путь, Кодировка) + + Результат = Неопределено; + ФайлИнфо = Новый Файл(Путь); + + Если ФайлИнфо.Существует() Тогда + + ЧтениеПотокаОшибок = Новый ЧтениеТекста(Путь, Кодировка); + Результат = ЧтениеПотокаОшибок.Прочитать(); + ЧтениеПотокаОшибок.Закрыть(); + + КонецЕсли; + + Если Результат = Неопределено Тогда + Результат = ""; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +// Аналог метода БСП. Возвращает кодировку стандартных поток вывода и ошибок, используемую в текущей ОС. +// +// Возвращаемое значение: +// КодировкаТекста +// +Функция КодировкаСтандартныхПотоков() + + Если пбп_Переадресация.ЭтоWindowsСервер() Тогда + Кодировка = "CP866"; + Иначе + Кодировка = "UTF-8"; + КонецЕсли; + + Возврат Кодировка; + +КонецФункции + +#КонецОбласти + +#КонецОбласти + +#Область РегламентныеЗаданияСервер + +// Аналог метода БСП. +// +Функция УточненныйИдентификаторЗадания(Знач Идентификатор) + + Если ТипЗнч(Идентификатор) = Тип("РегламентноеЗадание") Тогда + Идентификатор = Идентификатор.УникальныйИдентификатор; + КонецЕсли; + + Если ТипЗнч(Идентификатор) = Тип("Строка") Тогда + ОбъектМетаданных = Метаданные.РегламентныеЗадания.Найти(Идентификатор); + Если ОбъектМетаданных = Неопределено Тогда + Идентификатор = Новый УникальныйИдентификатор(Идентификатор); + Иначе + Идентификатор = ОбъектМетаданных; + КонецЕсли; + КонецЕсли; + + Возврат Идентификатор; + +КонецФункции + +// Аналог метода БСП. Удаляет непредопределенное регламентное задание (без учета очереди заданий модели сервиса). +// +// Параметры: +// Идентификатор - ОбъектМетаданных - объект метаданных регламентного задания для поиска +// непредопределенного регламентного задания. +// - Строка - имя метаданных предопределенного регламентного задания +// или строка уникального идентификатора регламентного задания. +// - УникальныйИдентификатор - идентификатор регламентного задания. +// - РегламентноеЗадание - регламентное задание, уникальный идентификатор которого используется +// для определения удаляемого экземпляра регламентного задания. +// +Процедура УдалитьРегламентноеЗадание(Знач Идентификатор) Экспорт + + Результат = ПереадресацияМодуляРегламентныеЗаданияСервер(); + Если Результат.МодульСуществует Тогда + Результат.Модуль.УдалитьРегламентноеЗадание(Идентификатор); + Возврат; + КонецЕсли; + + Идентификатор = УточненныйИдентификаторЗадания(Идентификатор); + + СписокЗаданий = Новый Массив; // Массив из РегламентноеЗадание. + + Если ТипЗнч(Идентификатор) = Тип("ОбъектМетаданных") Тогда + Отбор = Новый Структура("Метаданные, Предопределенное", Идентификатор, Ложь); + СписокЗаданий = РегламентныеЗадания.ПолучитьРегламентныеЗадания(Отбор); + Иначе + РегламентноеЗадание = РегламентныеЗадания.НайтиПоУникальномуИдентификатору(Идентификатор); + Если РегламентноеЗадание <> Неопределено Тогда + СписокЗаданий.Добавить(РегламентноеЗадание); + КонецЕсли; + КонецЕсли; + + Для Каждого РегламентноеЗадание Из СписокЗаданий Цикл + ИдентификаторЗадания = УникальныйИдентификаторЗадания(РегламентноеЗадание); + + Если пбп_ОбщегоНазначенияВызовСервера.СуществуетБиблиотекаСтандартныхПодсистем() Тогда + УдалитьРегламентноеЗаданиеСИспользованиемКэша(ИдентификаторЗадания); + Иначе + УдалитьРегламентноеЗаданиеБезКэша(ИдентификаторЗадания); + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +// Аналог метода БСП. +// +Функция УникальныйИдентификаторЗадания(Знач Идентификатор, ВРазделенномРежимеИдентификаторЗаданияОчереди = Ложь) + + Если ТипЗнч(Идентификатор) = Тип("УникальныйИдентификатор") Тогда + Возврат Идентификатор; + КонецЕсли; + + Если ТипЗнч(Идентификатор) = Тип("РегламентноеЗадание") Тогда + Возврат Идентификатор.УникальныйИдентификатор; + КонецЕсли; + + Если ТипЗнч(Идентификатор) = Тип("Строка") Тогда + Возврат Новый УникальныйИдентификатор(Идентификатор); + КонецЕсли; + + Если ТипЗнч(Идентификатор) = Тип("ОбъектМетаданных") И Идентификатор.Предопределенное Тогда + Возврат РегламентныеЗадания.НайтиПредопределенное(Идентификатор).УникальныйИдентификатор; + ИначеЕсли ТипЗнч(Идентификатор) = Тип("ОбъектМетаданных") И НЕ Идентификатор.Предопределенное Тогда + СписокЗаданий = РегламентныеЗадания.ПолучитьРегламентныеЗадания(Новый Структура("Метаданные", Идентификатор)); + Для каждого РегламентноеЗадание Из СписокЗаданий Цикл + Возврат РегламентноеЗадание.УникальныйИдентификатор; + КонецЦикла; + КонецЕсли; + + Возврат Неопределено; + +КонецФункции + +#КонецОбласти + +#Область ОбщегоНазначения + +#Область БезопасноеВыполнениеВнешнегоКода + +// Аналог метода БСП. Проверяет, что переданное имя ИмяПроцедуры является именем экспортной процедуры конфигурации. +// Может использоваться для проверки, что переданная строка не содержит произвольного алгоритма +// на встроенном языке 1С:Предприятия перед использованием его в операторах Выполнить и Вычислить +// при их использовании для динамического вызова методов код конфигурации. +// +// В случае если переданная строка не является именем процедуры конфигурации, генерируется исключение. +// +// Предназначена для вызова из см. процедуру ВыполнитьМетодКонфигурации. +// +// Параметры: +// ИмяПроцедуры - Строка - проверяемое имя экспортной процедуры. +// +Процедура ПроверитьИмяПроцедурыКонфигурации(Знач ИмяПроцедуры) + + ЧастиИмени = СтрРазделить(ИмяПроцедуры, "."); + Если ЧастиИмени.Количество() <> 2 И ЧастиИмени.Количество() <> 3 Тогда + ВызватьИсключение пбп_ПереадресацияКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Неправильный формат параметра %1 (передано значение: ""%2"") в %3.'"), + "ИмяПроцедуры", ИмяПроцедуры, "ОбщегоНазначения.ВыполнитьМетодКонфигурации"); + КонецЕсли; + + ИмяОбъекта = ЧастиИмени[0]; + Если ЧастиИмени.Количество() = 2 И Метаданные.ОбщиеМодули.Найти(ИмяОбъекта) = Неопределено Тогда + ВызватьИсключение пбп_ПереадресацияКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Неправильный формат параметра %1 (передано значение: ""%2"") в %3: + |Не существует общий модуль ""%4"".'"), + "ИмяПроцедуры", ИмяПроцедуры, "ОбщегоНазначения.ВыполнитьМетодКонфигурации", ИмяОбъекта); + КонецЕсли; + + Если ЧастиИмени.Количество() = 3 Тогда + ПолноеИмяОбъекта = ЧастиИмени[0] + "." + ЧастиИмени[1]; + Попытка + Менеджер = МенеджерОбъектаПоИмени(ПолноеИмяОбъекта); + Исключение + Менеджер = Неопределено; + КонецПопытки; + Если Менеджер = Неопределено Тогда + ВызватьИсключение пбп_ПереадресацияКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Неправильный формат параметра %1 (передано значение: ""%2"") в %3: + |Не существует менеджер объекта ""%4"".'"), + "ИмяПроцедуры", ИмяПроцедуры, "ОбщегоНазначения.ВыполнитьМетодКонфигурации", ПолноеИмяОбъекта); + КонецЕсли; + КонецЕсли; + + ИмяМетодаОбъекта = ЧастиИмени[ЧастиИмени.ВГраница()]; + ВременнаяСтруктура = Новый Структура; + Попытка + // Проверка того, что ИмяПроцедуры является допустимым идентификатором. + // Например: МояПроцедура. + ВременнаяСтруктура.Вставить(ИмяМетодаОбъекта); + Исключение + КодОсновногоЯзыка = Метаданные.ОсновнойЯзык.КодЯзыка; + ЗаписьЖурналаРегистрации(НСтр("ru = 'Безопасное выполнение метода'", КодОсновногоЯзыка), + УровеньЖурналаРегистрации.Ошибка, , , ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + ВызватьИсключение пбп_ПереадресацияКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Неправильный формат параметра %1 (передано значение: ""%2"") в %3: + |Имя метода ""%4"" не соответствует требованиям образования имен процедур и функций.'"), + "ИмяПроцедуры", ИмяПроцедуры, "ОбщегоНазначения.ВыполнитьМетодКонфигурации", ИмяМетодаОбъекта); + КонецПопытки; + +КонецПроцедуры + +// Аналог метода БСП. Возвращает менеджер объекта по имени. +// Ограничение: не обрабатываются точки маршрутов бизнес-процессов. +// +// Параметры: +// Имя - Строка - имя например, "Справочник", "Справочники", "Справочник.Организации". +// +// Возвращаемое значение: +// СправочникиМенеджер +// СправочникМенеджер +// ДокументыМенеджер +// ДокументМенеджер +// ... +// +Функция МенеджерОбъектаПоИмени(Имя) + Перем КлассОМ, ИмяОМ, Менеджер; + + ЧастиИмени = СтрРазделить(Имя, "."); + + Если ЧастиИмени.Количество() > 0 Тогда + КлассОМ = ВРег(ЧастиИмени[0]); + КонецЕсли; + + Если ЧастиИмени.Количество() > 1 Тогда + ИмяОМ = ЧастиИмени[1]; + КонецЕсли; + + Если КлассОМ = "ПЛАНОБМЕНА" + Или КлассОМ = "ПЛАНЫОБМЕНА" Тогда + Менеджер = ПланыОбмена; + + ИначеЕсли КлассОМ = "СПРАВОЧНИК" + Или КлассОМ = "СПРАВОЧНИКИ" Тогда + Менеджер = Справочники; + + ИначеЕсли КлассОМ = "ДОКУМЕНТ" + Или КлассОМ = "ДОКУМЕНТЫ" Тогда + Менеджер = Документы; + + ИначеЕсли КлассОМ = "ЖУРНАЛДОКУМЕНТОВ" + Или КлассОМ = "ЖУРНАЛЫДОКУМЕНТОВ" Тогда + Менеджер = ЖурналыДокументов; + + ИначеЕсли КлассОМ = "ПЕРЕЧИСЛЕНИЕ" + Или КлассОМ = "ПЕРЕЧИСЛЕНИЯ" Тогда + Менеджер = Перечисления; + + ИначеЕсли КлассОМ = "ОБЩИЙМОДУЛЬ" + Или КлассОМ = "ОБЩИЕМОДУЛИ" Тогда + + Возврат ОбщийМодуль(ИмяОМ); + + ИначеЕсли КлассОМ = "ОТЧЕТ" + Или КлассОМ = "ОТЧЕТЫ" Тогда + Менеджер = Отчеты; + + ИначеЕсли КлассОМ = "ОБРАБОТКА" + Или КлассОМ = "ОБРАБОТКИ" Тогда + Менеджер = Обработки; + + ИначеЕсли КлассОМ = "ПЛАНВИДОВХАРАКТЕРИСТИК" + Или КлассОМ = "ПЛАНЫВИДОВХАРАКТЕРИСТИК" Тогда + Менеджер = ПланыВидовХарактеристик; + + ИначеЕсли КлассОМ = "ПЛАНСЧЕТОВ" + Или КлассОМ = "ПЛАНЫСЧЕТОВ" Тогда + Менеджер = ПланыСчетов; + + ИначеЕсли КлассОМ = "ПЛАНВИДОВРАСЧЕТА" + Или КлассОМ = "ПЛАНЫВИДОВРАСЧЕТА" Тогда + Менеджер = ПланыВидовРасчета; + + ИначеЕсли КлассОМ = "РЕГИСТРСВЕДЕНИЙ" + Или КлассОМ = "РЕГИСТРЫСВЕДЕНИЙ" Тогда + Менеджер = РегистрыСведений; + + ИначеЕсли КлассОМ = "РЕГИСТРНАКОПЛЕНИЯ" + Или КлассОМ = "РЕГИСТРЫНАКОПЛЕНИЯ" Тогда + Менеджер = РегистрыНакопления; + + ИначеЕсли КлассОМ = "РЕГИСТРБУХГАЛТЕРИИ" + Или КлассОМ = "РЕГИСТРЫБУХГАЛТЕРИИ" Тогда + Менеджер = РегистрыБухгалтерии; + + ИначеЕсли КлассОМ = "РЕГИСТРРАСЧЕТА" + Или КлассОМ = "РЕГИСТРЫРАСЧЕТА" Тогда + + Если ЧастиИмени.Количество() < 3 Тогда + // Регистр расчета + Менеджер = РегистрыРасчета; + Иначе + КлассПодчиненногоОМ = ВРег(ЧастиИмени[2]); + Если ЧастиИмени.Количество() > 3 Тогда + ИмяПодчиненногоОМ = ЧастиИмени[3]; + КонецЕсли; + Если КлассПодчиненногоОМ = "ПЕРЕРАСЧЕТ" + Или КлассПодчиненногоОМ = "ПЕРЕРАСЧЕТЫ" Тогда + // Перерасчет + Попытка + Менеджер = РегистрыРасчета[ИмяОМ].Перерасчеты; + ИмяОМ = ИмяПодчиненногоОМ; + Исключение + Менеджер = Неопределено; + КонецПопытки; + КонецЕсли; + КонецЕсли; + + ИначеЕсли КлассОМ = "БИЗНЕСПРОЦЕСС" + Или КлассОМ = "БИЗНЕСПРОЦЕССЫ" Тогда + Менеджер = БизнесПроцессы; + + ИначеЕсли КлассОМ = "ЗАДАЧА" + Или КлассОМ = "ЗАДАЧИ" Тогда + Менеджер = Задачи; + + ИначеЕсли КлассОМ = "КОНСТАНТА" + Или КлассОМ = "КОНСТАНТЫ" Тогда + Менеджер = Константы; + + ИначеЕсли КлассОМ = "ПОСЛЕДОВАТЕЛЬНОСТЬ" + Или КлассОМ = "ПОСЛЕДОВАТЕЛЬНОСТИ" Тогда + Менеджер = Последовательности; + КонецЕсли; + + Если Менеджер <> Неопределено Тогда + Если ЗначениеЗаполнено(ИмяОМ) Тогда + Попытка + Возврат Менеджер[ИмяОМ]; + Исключение + Менеджер = Неопределено; + КонецПопытки; + Иначе + Возврат Менеджер; + КонецЕсли; + КонецЕсли; + + ВызватьИсключение пбп_ПереадресацияКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Не удалось получить менеджер для объекта ""%1""'"), Имя); + +КонецФункции + +#КонецОбласти + +#Область УсловныеВызовы + +// Аналог метода БСП. Возвращает серверный модуль менеджера по имени объекта. +// +Функция СерверныйМодульМенеджера(Имя) + ОбъектНайден = Ложь; + + ЧастиИмени = СтрРазделить(Имя, "."); + Если ЧастиИмени.Количество() = 2 Тогда + + ИмяВида = ВРег(ЧастиИмени[0]); + ИмяОбъекта = ЧастиИмени[1]; + + Если ИмяВида = ВРег("Константы") Тогда + Если Метаданные.Константы.Найти(ИмяОбъекта) <> Неопределено Тогда + ОбъектНайден = Истина; + КонецЕсли; + ИначеЕсли ИмяВида = ВРег("РегистрыСведений") Тогда + Если Метаданные.РегистрыСведений.Найти(ИмяОбъекта) <> Неопределено Тогда + ОбъектНайден = Истина; + КонецЕсли; + ИначеЕсли ИмяВида = ВРег("РегистрыНакопления") Тогда + Если Метаданные.РегистрыНакопления.Найти(ИмяОбъекта) <> Неопределено Тогда + ОбъектНайден = Истина; + КонецЕсли; + ИначеЕсли ИмяВида = ВРег("РегистрыБухгалтерии") Тогда + Если Метаданные.РегистрыБухгалтерии.Найти(ИмяОбъекта) <> Неопределено Тогда + ОбъектНайден = Истина; + КонецЕсли; + ИначеЕсли ИмяВида = ВРег("РегистрыРасчета") Тогда + Если Метаданные.РегистрыРасчета.Найти(ИмяОбъекта) <> Неопределено Тогда + ОбъектНайден = Истина; + КонецЕсли; + ИначеЕсли ИмяВида = ВРег("Справочники") Тогда + Если Метаданные.Справочники.Найти(ИмяОбъекта) <> Неопределено Тогда + ОбъектНайден = Истина; + КонецЕсли; + ИначеЕсли ИмяВида = ВРег("Документы") Тогда + Если Метаданные.Документы.Найти(ИмяОбъекта) <> Неопределено Тогда + ОбъектНайден = Истина; + КонецЕсли; + ИначеЕсли ИмяВида = ВРег("Отчеты") Тогда + Если Метаданные.Отчеты.Найти(ИмяОбъекта) <> Неопределено Тогда + ОбъектНайден = Истина; + КонецЕсли; + ИначеЕсли ИмяВида = ВРег("Обработки") Тогда + Если Метаданные.Обработки.Найти(ИмяОбъекта) <> Неопределено Тогда + ОбъектНайден = Истина; + КонецЕсли; + ИначеЕсли ИмяВида = ВРег("БизнесПроцессы") Тогда + Если Метаданные.БизнесПроцессы.Найти(ИмяОбъекта) <> Неопределено Тогда + ОбъектНайден = Истина; + КонецЕсли; + ИначеЕсли ИмяВида = ВРег("ЖурналыДокументов") Тогда + Если Метаданные.ЖурналыДокументов.Найти(ИмяОбъекта) <> Неопределено Тогда + ОбъектНайден = Истина; + КонецЕсли; + ИначеЕсли ИмяВида = ВРег("Задачи") Тогда + Если Метаданные.Задачи.Найти(ИмяОбъекта) <> Неопределено Тогда + ОбъектНайден = Истина; + КонецЕсли; + ИначеЕсли ИмяВида = ВРег("ПланыСчетов") Тогда + Если Метаданные.ПланыСчетов.Найти(ИмяОбъекта) <> Неопределено Тогда + ОбъектНайден = Истина; + КонецЕсли; + ИначеЕсли ИмяВида = ВРег("ПланыОбмена") Тогда + Если Метаданные.ПланыОбмена.Найти(ИмяОбъекта) <> Неопределено Тогда + ОбъектНайден = Истина; + КонецЕсли; + ИначеЕсли ИмяВида = ВРег("ПланыВидовХарактеристик") Тогда + Если Метаданные.ПланыВидовХарактеристик.Найти(ИмяОбъекта) <> Неопределено Тогда + ОбъектНайден = Истина; + КонецЕсли; + ИначеЕсли ИмяВида = ВРег("ПланыВидовРасчета") Тогда + Если Метаданные.ПланыВидовРасчета.Найти(ИмяОбъекта) <> Неопределено Тогда + ОбъектНайден = Истина; + КонецЕсли; + КонецЕсли; + + КонецЕсли; + + Если Не ОбъектНайден Тогда + ВызватьИсключение пбп_ПереадресацияКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Объект метаданных ""%1"" не существует.'"), Имя); + КонецЕсли; + + // BSLLS:ExecuteExternalCodeInCommonModule-off + // ВычислитьВБезопасномРежиме не используется, чтобы избежать вызова ОбщийМодуль рекурсивно. + УстановитьБезопасныйРежим(Истина); + Модуль = Вычислить(Имя); + // BSLLS:ExecuteExternalCodeInCommonModule-on + + Возврат Модуль; +КонецФункции + +#КонецОбласти + +#Область ХранилищеНастроек + +// Аналог метода БСП. +// +Процедура ХранилищеСохранить(МенеджерХранилища, КлючОбъекта, КлючНастроек, Настройки, + ОписаниеНастроек, ИмяПользователя, ОбновитьПовторноИспользуемыеЗначения) + + Если Не ПравоДоступа("СохранениеДанныхПользователя", Метаданные) Тогда + Возврат; + КонецЕсли; + + МенеджерХранилища.Сохранить(КлючОбъекта, КлючНастроек(КлючНастроек), Настройки, + ОписаниеНастроек, ИмяПользователя); + + Если ОбновитьПовторноИспользуемыеЗначения Тогда + ОбновитьПовторноИспользуемыеЗначения(); + КонецЕсли; + +КонецПроцедуры + +// Аналог метода БСП. +// +Функция ХранилищеЗагрузить(МенеджерХранилища, КлючОбъекта, КлючНастроек, ЗначениеПоУмолчанию, + ОписаниеНастроек, ИмяПользователя) + + Результат = Неопределено; + + Если ПравоДоступа("СохранениеДанныхПользователя", Метаданные) Тогда + Результат = МенеджерХранилища.Загрузить(КлючОбъекта, КлючНастроек(КлючНастроек), + ОписаниеНастроек, ИмяПользователя); + КонецЕсли; + + Если Результат = Неопределено Тогда + Результат = ЗначениеПоУмолчанию; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +// Аналог метода БСП. +// +Процедура ХранилищеУдалить(МенеджерХранилища, КлючОбъекта, КлючНастроек, ИмяПользователя) + + Если ПравоДоступа("СохранениеДанныхПользователя", Метаданные) Тогда + МенеджерХранилища.Удалить(КлючОбъекта, КлючНастроек(КлючНастроек), ИмяПользователя); + КонецЕсли; + +КонецПроцедуры + +// Аналог метода БСП. Возвращает строку ключа настроек, не превышающую допустимую длину 128 символов. +// Если указанная строка превышает 128, тогда вместо символов сверх 96 символов +// добавляется их хеш-сумма по алгоритму MD5 размером 32 символа. +// +// Параметры: +// Строка - Строка - строка произвольной длины. +// +// Возвращаемое значение: +// Строка - не более 128 символов. +// +Функция КлючНастроек(Знач Строка) + Возврат СократитьСтрокуКонтрольнойСуммой(Строка, 128); +КонецФункции + +#КонецОбласти + +#Область Метаданные + +// Аналог метода БСП. +// +// Параметры: +// ПолноеИмя - Строка - Полное имя объекта метаданных. +// +Процедура ПроверитьОбъектМетаданныхСуществует(ПолноеИмя) + + Если ОбъектМетаданныхПоПолномуИмени(ПолноеИмя) = Неопределено Тогда + ВызватьИсключение пбп_ПереадресацияКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Неизвестный тип объекта метаданных ""%1"".'; + |en = 'Unknown metadata object type: ""%1"".'"), ПолноеИмя); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#КонецОбласти + +#КонецОбласти + +#Область Прочее + +Процедура УдалитьРегламентноеЗаданиеСИспользованиемКэша(ИдентификаторЗадания) + + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить("РегистрСведений.КэшПрограммныхИнтерфейсов"); + ЭлементБлокировки.УстановитьЗначение("Идентификатор", Строка(ИдентификаторЗадания)); + + НачатьТранзакцию(); + Попытка + Блокировка.Заблокировать(); + Задание = РегламентныеЗадания.НайтиПоУникальномуИдентификатору(ИдентификаторЗадания); + Если Задание <> Неопределено Тогда + Задание.Удалить(); + КонецЕсли; + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + +КонецПроцедуры + +Процедура УдалитьРегламентноеЗаданиеБезКэша(ИдентификаторЗадания) + + Попытка + Задание = РегламентныеЗадания.НайтиПоУникальномуИдентификатору(ИдентификаторЗадания); + Если Задание <> Неопределено Тогда + Задание.Удалить(); + КонецЕсли; + Исключение + ВызватьИсключение; + КонецПопытки; + +КонецПроцедуры + +#КонецОбласти + +#КонецОбласти \ No newline at end of file diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\244\320\260\320\271\320\273\320\276\320\262\320\260\321\217\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\232\320\273\320\270\320\265\320\275\321\202.xml" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\265\321\200\320\265\320\260\320\264\321\200\320\265\321\201\320\260\321\206\320\270\321\217\320\232\320\273\320\270\320\265\320\275\321\202.xml" similarity index 87% rename from "src/cf/CommonModules/\320\277\320\261\320\277_\320\244\320\260\320\271\320\273\320\276\320\262\320\260\321\217\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\232\320\273\320\270\320\265\320\275\321\202.xml" rename to "src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\265\321\200\320\265\320\260\320\264\321\200\320\265\321\201\320\260\321\206\320\270\321\217\320\232\320\273\320\270\320\265\320\275\321\202.xml" index 74d78ed8..eb3a8ad1 100644 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\244\320\260\320\271\320\273\320\276\320\262\320\260\321\217\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\232\320\273\320\270\320\265\320\275\321\202.xml" +++ "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\265\321\200\320\265\320\260\320\264\321\200\320\265\321\201\320\260\321\206\320\270\321\217\320\232\320\273\320\270\320\265\320\275\321\202.xml" @@ -1,12 +1,12 @@  - + - пбп_ФайловаяСистемаКлиент + пбп_ПереадресацияКлиент ru - Файловая система клиент + Переадресация клиент diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\265\321\200\320\265\320\260\320\264\321\200\320\265\321\201\320\260\321\206\320\270\321\217\320\232\320\273\320\270\320\265\320\275\321\202/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\265\321\200\320\265\320\260\320\264\321\200\320\265\321\201\320\260\321\206\320\270\321\217\320\232\320\273\320\270\320\265\320\275\321\202/Ext/Module.bsl" new file mode 100644 index 00000000..9bcfa8d2 --- /dev/null +++ "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\265\321\200\320\265\320\260\320\264\321\200\320\265\321\201\320\260\321\206\320\270\321\217\320\232\320\273\320\270\320\265\320\275\321\202/Ext/Module.bsl" @@ -0,0 +1,507 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Библиотека проектных подсистем для упрощения разработки архитектуры на 1С: Предприятие 8, +// включая доработку типовых конфигураций. +// +// Copyright First BIT company +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// URL: https://github.com/firstBitSportivnaya/PSSL/ +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ПрограммныйИнтерфейс + +// Функция ОпределитьМодульПереадресации предназначена для проверки наличия общего модуля +// БСП с указанным именем и получения этого модуля, если он существует. +// +// Параметры: +// ИмяМодуля - Строка - имя общего модуля, который необходимо найти. +// +// Возвращаемое значение: +// Структура - общий модуль и что он существует +// * Модуль - ОбщийМодуль - общий модуль из БСП. +// * МодульСуществует - Булево - Если флаг истина, модуль существует. +// +Функция ОпределитьМодульПереадресации(ИмяМодуля) Экспорт + + Результат = Новый Структура("Модуль, МодульСуществует", , Ложь); + + Если Не пбп_ОбщегоНазначенияВызовСервера.СуществуетБиблиотекаСтандартныхПодсистем() Тогда + Возврат Результат; + КонецЕсли; + + Модуль = Вычислить(ИмяМодуля); + +#Если Не ВебКлиент Тогда + + // В веб-клиенте не проверяется + // т.к. при обращении к модулям с вызовом сервера типа такого модуля в веб-клиенте не существует. + Если ТипЗнч(Модуль) <> Тип("ОбщийМодуль") Тогда + ВызватьИсключение пбп_ПереадресацияКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Общий модуль ""%1"" не существует.'"), + ИмяМодуля); + КонецЕсли; + +#КонецЕсли + + Результат.Модуль = Модуль; + Результат.МодульСуществует = Истина; + + Возврат Результат; + +КонецФункции + +#Область ПереадресацияМетодов + +#Область ОбщегоНазначенияКлиент + +// Аналог метода БСП. Формирует и выводит сообщение, которое может быть связано с элементом управления формы. +// +// См. ОбщегоНазначения.СообщитьПользователю +// +// Параметры: +// ТекстСообщенияПользователю - Строка - текст сообщения. +// КлючДанных - ЛюбаяСсылка - объект или ключ записи информационной базы, к которому это сообщение относится. +// Поле - Строка - наименование реквизита формы. +// ПутьКДанным - Строка - путь к данным (путь к реквизиту формы). +// Отказ - Булево - выходной параметр, всегда устанавливается в значение Истина. +// +// Пример: +// +// 1. Для вывода сообщения у поля управляемой формы, связанного с реквизитом объекта: +// ОбщегоНазначенияКлиент.СообщитьПользователю( +// НСтр("ru = 'Сообщение об ошибке.'"), , +// "ПолеВРеквизитеФормыОбъект", +// "Объект"); +// +// Альтернативный вариант использования в форме объекта: +// ОбщегоНазначенияКлиент.СообщитьПользователю( +// НСтр("ru = 'Сообщение об ошибке.'"), , +// "Объект.ПолеВРеквизитеФормыОбъект"); +// +// 2. Для вывода сообщения рядом с полем управляемой формы, связанным с реквизитом формы: +// ОбщегоНазначенияКлиент.СообщитьПользователю( +// НСтр("ru = 'Сообщение об ошибке.'"), , +// "ИмяРеквизитаФормы"); +// +// 3. Для вывода сообщения связанного с объектом информационной базы: +// ОбщегоНазначенияКлиент.СообщитьПользователю( +// НСтр("ru = 'Сообщение об ошибке.'"), ОбъектИнформационнойБазы, "Ответственный",,Отказ); +// +// 4. Для вывода сообщения по ссылке на объект информационной базы: +// ОбщегоНазначенияКлиент.СообщитьПользователю( +// НСтр("ru = 'Сообщение об ошибке.'"), Ссылка, , , Отказ); +// +// Случаи некорректного использования: +// 1. Передача одновременно параметров КлючДанных и ПутьКДанным. +// 2. Передача в параметре КлючДанных значения типа отличного от допустимого. +// 3. Установка ссылки без установки поля (и/или пути к данным). +// +Процедура СообщитьПользователю(Знач ТекстСообщенияПользователю, Знач КлючДанных = Неопределено, + Знач Поле = "", Знач ПутьКДанным = "", Отказ = Ложь) Экспорт + + Результат = ПереадресацияМодуляОбщегоНазначенияКлиент(); + Если Результат.МодульСуществует Тогда + Результат.Модуль.СообщитьПользователю(ТекстСообщенияПользователю, КлючДанных, Поле, ПутьКДанным, Отказ); + Возврат; + КонецЕсли; + + Сообщение = пбп_ПереадресацияКлиентСервер.СообщениеПользователю(ТекстСообщенияПользователю, + КлючДанных, Поле, ПутьКДанным, Отказ); + + Сообщение.Сообщить(); + +КонецПроцедуры + +// Аналог метода БСП. Возвращает ссылку предопределенного элемента по его полному имени. +// Предопределенные элементы могут содержаться только в следующих объектах: +// - справочники; +// - планы видов характеристик; +// - планы счетов; +// - планы видов расчета. +// После изменения состава предопределенных следует выполнить метод +// ОбновитьПовторноИспользуемыеЗначения(), который сбросит кэш ПовтИсп в текущем сеансе. +// +// См. ОбщегоНазначения.ПредопределенныйЭлемент +// +// Параметры: +// ПолноеИмяПредопределенного - Строка - полный путь к предопределенному элементу, включая его имя. +// Формат аналогичен функции глобального контекста ПредопределенноеЗначение(). +// Например: +// "Справочник.ВидыКонтактнойИнформации.EmailПользователя" +// "ПланСчетов.Хозрасчетный.Материалы" +// "ПланВидовРасчета.Начисления.ОплатаПоОкладу". +// +// Возвращаемое значение: +// ЛюбаяСсылка - ссылка на предопределенный элемент. +// Неопределено - если предопределенный элемент есть в метаданных, но не создан в ИБ. +// +Функция ПредопределенныйЭлемент(ПолноеИмяПредопределенного) Экспорт + + Результат = ПереадресацияМодуляОбщегоНазначенияКлиент(); + Если Результат.МодульСуществует Тогда + Возврат Результат.Модуль.ПредопределенныйЭлемент(ПолноеИмяПредопределенного); + КонецЕсли; + + Возврат ПредопределенноеЗначение(ПолноеИмяПредопределенного); + +КонецФункции + +// Аналог метода БСП. Возвращает Истина, если клиентское приложение запущено под управлением ОС Windows. +// +// См. ОбщегоНазначения.ЭтоWindowsКлиент +// +// Возвращаемое значение: +// Булево - если нет клиентского приложения, возвращается Ложь. +// +Функция ЭтоWindowsКлиент() Экспорт + + Результат = ПереадресацияМодуляОбщегоНазначенияКлиент(); + Если Результат.МодульСуществует Тогда + Возврат Результат.Модуль.ЭтоWindowsКлиент(); + КонецЕсли; + + ТипПлатформыКлиента = ТипПлатформыКлиента(); + Возврат ТипПлатформыКлиента = ТипПлатформы.Windows_x86 + Или ТипПлатформыКлиента = ТипПлатформы.Windows_x86_64; + +КонецФункции + +// Аналог метода БСП. Возвращает тип платформы клиента. +// +// Возвращаемое значение: +// ТипПлатформы, Неопределено - тип платформы на которой запущен клиент. В режиме веб-клиента, если тип +// платформы иной, чем описан в типе ТипПлатформы, то возвращается Неопределено. +// +Функция ТипПлатформыКлиента() Экспорт + + Результат = ПереадресацияМодуляОбщегоНазначенияКлиент(); + Если Результат.МодульСуществует Тогда + Возврат Результат.Модуль.ТипПлатформыКлиента(); + КонецЕсли; + + СистемнаяИнфо = Новый СистемнаяИнформация; + Возврат СистемнаяИнфо.ТипПлатформы; + +КонецФункции + +#КонецОбласти + +#Область ФайловаяСистемаКлиент + +// Аналог метода БСП. Получение имени временного каталога. +// +// Параметры: +// Оповещение - ОписаниеОповещения - оповещение о результате получения со следующими параметрами. +// -- ИмяКаталога - Строка - путь к созданному каталогу. +// -- ДополнительныеПараметры - Структура - значение, которое было указано при создании объекта ОписаниеОповещения. +// Расширение - Строка - суффикс в имени каталога, который поможет идентифицировать каталог при анализе. +// +Процедура СоздатьВременныйКаталог(Знач Оповещение, Расширение = "") Экспорт + + Результат = ПереадресацияМодуляФайловаяСистемаКлиент(); + Если Результат.МодульСуществует Тогда + Результат.Модуль.СоздатьВременныйКаталог(Оповещение, Расширение); + Возврат; + КонецЕсли; + + Контекст = Новый Структура; + Контекст.Вставить("Оповещение", Оповещение); + Контекст.Вставить("Расширение", Расширение); + + Оповещение = Новый ОписаниеОповещения("СоздатьВременныйКаталогПослеПроверкиРасширенияРаботыСФайлами", + пбп_ПереадресацияКлиент, Контекст); + ПодключитьРасширениеДляРаботыСФайлами(Оповещение, + НСтр("ru = 'Для создания временной папки установите расширение для работы с 1С:Предприятием.'"), Ложь); + +КонецПроцедуры + +// Аналог метода БСП. Предлагает пользователю установить расширение для работы с 1С:Предприятием в веб-клиенте. +// Предназначена для использования в начале участков кода, в которых ведется работа с файлами. +// +// Параметры: +// ОписаниеОповещенияОЗакрытии - ОписаниеОповещения - описание процедуры, которая будет вызвана после закрытия +// формы со следующими параметрами: +// -- РасширениеПодключено - Булево - Истина, если расширение было подключено. +// -- ДополнительныеПараметры - Произвольный - параметры, заданные в ОписаниеОповещенияОЗакрытии. +// ТекстПредложения - Строка - текст сообщения. Если не указан, то выводится текст по умолчанию. +// ВозможноПродолжениеБезУстановки - Булево - если Истина, будет показана кнопка ПродолжитьБезУстановки, +// если Ложь, будет показана кнопка Отмена. +// +// Пример: +// +// Оповещение = Новый ОписаниеОповещения("ПечатьДокументаЗавершение", ЭтотОбъект); +// ТекстСообщения = НСтр("ru = 'Для печати документа необходимо установить расширение для работы с 1С:Предприятием.'"); +// ФайловаяСистемаКлиент.ПодключитьРасширениеДляРаботыСФайлами(Оповещение, ТекстСообщения); +// +// Процедура ПечатьДокументаЗавершение(РасширениеПодключено, ДополнительныеПараметры) Экспорт +// Если РасширениеПодключено Тогда +// // код печати документа, рассчитывающий на то, что расширение подключено. +// // ... +// Иначе +// // код печати документа, который работает без подключенного расширения. +// // ... +// КонецЕсли; +// +Процедура ПодключитьРасширениеДляРаботыСФайлами( + ОписаниеОповещенияОЗакрытии, + ТекстПредложения = "", + ВозможноПродолжениеБезУстановки = Истина) Экспорт + + Результат = ПереадресацияМодуляФайловаяСистемаКлиент(); + Если Результат.МодульСуществует Тогда + Результат.Модуль.ПодключитьРасширениеДляРаботыСФайлами( + ОписаниеОповещенияОЗакрытии, + ТекстПредложения, + ВозможноПродолжениеБезУстановки); + Возврат; + КонецЕсли; + + ОписаниеОповещенияЗавершение = Новый ОписаниеОповещения( + "НачатьПодключениеРасширенияРаботыСФайламиПриОтветеНаВопросОбУстановке", пбп_ПереадресацияКлиент, + ОписаниеОповещенияОЗакрытии); + +#Если Не ВебКлиент Тогда + // В мобильном, тонком и толстом клиентах расширение подключено всегда. + ВыполнитьОбработкуОповещения(ОписаниеОповещенияЗавершение, "ПодключениеНеТребуется"); + Возврат; +#КонецЕсли + + Контекст = Новый Структура; + Контекст.Вставить("ОписаниеОповещенияЗавершение", ОписаниеОповещенияЗавершение); + Контекст.Вставить("ТекстПредложения", ТекстПредложения); + Контекст.Вставить("ВозможноПродолжениеБезУстановки", ВозможноПродолжениеБезУстановки); + + Оповещение = Новый ОписаниеОповещения( + "НачатьПодключениеРасширенияРаботыСФайламиПриУстановкеРасширения", пбп_ПереадресацияКлиент, Контекст); + НачатьПодключениеРасширенияРаботыСФайлами(Оповещение); + +КонецПроцедуры + +#КонецОбласти + +#КонецОбласти + +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ПереадресацияМетодов + +#Область СтандартныеПодсистемыКлиент + +// Аналог метода БСП. Разворачивает узлы указанного дерева на форме. +// +// Параметры: +// Форма - ФормаКлиентскогоПриложения - форма, на которой размещен элемент управления с деревом значений. +// ИмяЭлементаФормы - Строка - имя элемента с таблицей формы (деревом значений) и связанного с ней +// реквизита формы (должны совпадать). +// ИдентификаторСтрокиДерева - Произвольный - идентификатор строки дерева, которую требуется развернуть. +// Если указано "*", то будут развернуты все узлы верхнего уровня. +// Если указано Неопределено, то строки дерева развернуты не будут. +// Значение по умолчанию: "*". +// РазвернутьСПодчиненными - Булево - если Истина, то следует раскрыть также и все подчиненные узлы. +// По умолчанию Ложь. +// +Процедура РазвернутьУзлыДерева(Форма, ИмяЭлементаФормы, ИдентификаторСтрокиДерева = "*", РазвернутьСПодчиненными = Ложь) Экспорт + + Результат = ПереадресацияМодуляСтандартныеПодсистемыКлиент(); + Если Результат.МодульСуществует Тогда + Результат.Модуль.РазвернутьУзлыДерева(Форма, ИмяЭлементаФормы, ИдентификаторСтрокиДерева, РазвернутьСПодчиненными); + Возврат; + КонецЕсли; + + ТаблицаЭлемент = Форма.Элементы[ИмяЭлементаФормы]; + Если ИдентификаторСтрокиДерева = "*" Тогда + Узлы = Форма[ИмяЭлементаФормы].ПолучитьЭлементы(); + Для Каждого Узел Из Узлы Цикл + ТаблицаЭлемент.Развернуть(Узел.ПолучитьИдентификатор(), РазвернутьСПодчиненными); + КонецЦикла; + Иначе + ТаблицаЭлемент.Развернуть(ИдентификаторСтрокиДерева, РазвернутьСПодчиненными); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#КонецОбласти + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +#Область МодульПереадресацииПоПодсистемам + +Функция ПереадресацияМодуляОбщегоНазначенияКлиент() + Возврат пбп_ПереадресацияКлиентПовтИсп.ОпределитьМодульПереадресации("ОбщегоНазначенияКлиент"); +КонецФункции + +Функция ПереадресацияМодуляСтандартныеПодсистемыКлиент() + Возврат пбп_ПереадресацияКлиентПовтИсп.ОпределитьМодульПереадресации("СтандартныеПодсистемыКлиент"); +КонецФункции + +Функция ПереадресацияМодуляФайловаяСистемаКлиент() + Возврат пбп_ПереадресацияКлиентПовтИсп.ОпределитьМодульПереадресации("ФайловаяСистемаКлиент"); +КонецФункции + +Функция ПереадресацияМодуляФайловаяСистемаСлужебныйКлиент() + Возврат пбп_ПереадресацияКлиентПовтИсп.ОпределитьМодульПереадресации("ФайловаяСистемаСлужебныйКлиент"); +КонецФункции + +#КонецОбласти + +#Область ПереадресацияМетодов + +#Область ФайловаяСистемаСлужебныйКлиент + +#Область РасширениеРаботыСФайлами + +// Аналог метода БСП. +// +Процедура НачатьПодключениеРасширенияРаботыСФайламиПриУстановкеРасширения(Подключено, Контекст) Экспорт + + Результат = ПереадресацияМодуляФайловаяСистемаСлужебныйКлиент(); + Если Результат.МодульСуществует Тогда + Результат.Модуль.НачатьПодключениеРасширенияРаботыСФайламиПриУстановкеРасширения(Подключено, Контекст); + Возврат; + КонецЕсли; + + // Если расширение и так уже подключено, незачем про него спрашивать. + Если Подключено Тогда + ВыполнитьОбработкуОповещения(Контекст.ОписаниеОповещенияЗавершение, "ПодключениеНеТребуется"); + Возврат; + КонецЕсли; + + ВызватьИсключение НСтр("ru = 'Невозможно работать с файловой системой из браузера';"); + +КонецПроцедуры + +// Аналог метода БСП. +// +Процедура НачатьПодключениеРасширенияРаботыСФайламиПриОтветеНаВопросОбУстановке(Действие, ОповещениеОЗакрытии) Экспорт + + Результат = ПереадресацияМодуляФайловаяСистемаСлужебныйКлиент(); + Если Результат.МодульСуществует Тогда + Результат.Модуль + .НачатьПодключениеРасширенияРаботыСФайламиПриОтветеНаВопросОбУстановке(Действие, ОповещениеОЗакрытии); + Возврат; + КонецЕсли; + + РасширениеПодключено = (Действие = "РасширениеПодключено" Или Действие = "ПодключениеНеТребуется"); + + ВыполнитьОбработкуОповещения(ОповещениеОЗакрытии, РасширениеПодключено); + +КонецПроцедуры + +#КонецОбласти // РасширениеРаботыСФайлам + +#Область ВременныеФайлы + +#Область СоздатьВременныйКаталог + +// Аналог метода БСП. Продолжение процедуры ФайловаяСистемаКлиент.СоздатьВременныйКаталог. +// +// Параметры: +// РасширениеПодключено - Булево +// Контекст - Структура: +// * Оповещение - ОписаниеОповещения +// * Расширение - Строка +// +Процедура СоздатьВременныйКаталогПослеПроверкиРасширенияРаботыСФайлами(РасширениеПодключено, Контекст) Экспорт + + Результат = ПереадресацияМодуляФайловаяСистемаСлужебныйКлиент(); + Если Результат.МодульСуществует Тогда + Результат.Модуль.СоздатьВременныйКаталогПослеПроверкиРасширенияРаботыСФайлами(РасширениеПодключено, Контекст); + Возврат; + КонецЕсли; + + Если РасширениеПодключено Тогда + Оповещение = Новый ОписаниеОповещения( + "СоздатьВременныйКаталогПослеПолученияВременногоКаталога", ЭтотОбъект, Контекст, + "СоздатьВременныйКаталогПриОбработкеОшибки", ЭтотОбъект); + НачатьПолучениеКаталогаВременныхФайлов(Оповещение); + Иначе + СоздатьВременныйКаталогОповеститьОбОшибке(НСтр("ru = 'Не удалось установить расширение для работы с 1С:Предприятием.'"), Контекст); + КонецЕсли; + +КонецПроцедуры + +// Аналог метода БСП. Продолжение процедуры ФайловаяСистемаКлиент.СоздатьВременныйКаталог. +// +// Параметры: +// ИмяКаталогаВременныхФайлов - Строка +// Контекст - Структура: +// * Оповещение - ОписаниеОповещения +// * Расширение - Строка +// +Процедура СоздатьВременныйКаталогПослеПолученияВременногоКаталога(ИмяКаталогаВременныхФайлов, Контекст) Экспорт + + Результат = ПереадресацияМодуляФайловаяСистемаСлужебныйКлиент(); + Если Результат.МодульСуществует Тогда + Результат.Модуль.СоздатьВременныйКаталогПослеПолученияВременногоКаталога(ИмяКаталогаВременныхФайлов, Контекст); + Возврат; + КонецЕсли; + + Оповещение = Контекст.Оповещение; + Расширение = Контекст.Расширение; + + ИмяКаталога = "v8_" + Строка(Новый УникальныйИдентификатор); + + Если Не ПустаяСтрока(Расширение) Тогда + ИмяКаталога = ИмяКаталога + "." + Расширение; + КонецЕсли; + + НачатьСозданиеКаталога(Оповещение, ИмяКаталогаВременныхФайлов + ИмяКаталога); + +КонецПроцедуры + +// Аналог метода БСП. Продолжение процедуры ФайловаяСистемаКлиент.СоздатьВременныйКаталог. +Процедура СоздатьВременныйКаталогПриОбработкеОшибки(ИнформацияОбОшибке, СтандартнаяОбработка, Контекст) Экспорт + + Результат = ПереадресацияМодуляФайловаяСистемаСлужебныйКлиент(); + Если Результат.МодульСуществует Тогда + Результат.Модуль.СоздатьВременныйКаталогПриОбработкеОшибки(ИнформацияОбОшибке, СтандартнаяОбработка, Контекст); + Возврат; + КонецЕсли; + + СтандартнаяОбработка = Ложь; + ОписаниеОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке); + СоздатьВременныйКаталогОповеститьОбОшибке(ОписаниеОшибки, Контекст); + +КонецПроцедуры + +// Аналог метода БСП. Продолжение процедуры ФайловаяСистемаКлиент.СоздатьВременныйКаталог. +Процедура СоздатьВременныйКаталогОповеститьОбОшибке(ОписаниеОшибки, Контекст) + + Результат = ПереадресацияМодуляФайловаяСистемаСлужебныйКлиент(); + Если Результат.МодульСуществует Тогда + Результат.Модуль.СоздатьВременныйКаталогОповеститьОбОшибке(ОписаниеОшибки, Контекст); + Возврат; + КонецЕсли; + + ПоказатьПредупреждение(, ОписаниеОшибки); + ИмяКаталога = ""; + ВыполнитьОбработкуОповещения(Контекст.Оповещение, ИмяКаталога); + +КонецПроцедуры + +#КонецОбласти + +#КонецОбласти + +#КонецОбласти + +#КонецОбласти + +#КонецОбласти \ No newline at end of file diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\244\320\260\320\271\320\273\320\276\320\262\320\260\321\217\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202.xml" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\265\321\200\320\265\320\260\320\264\321\200\320\265\321\201\320\260\321\206\320\270\321\217\320\232\320\273\320\270\320\265\320\275\321\202\320\237\320\276\320\262\321\202\320\230\321\201\320\277.xml" similarity index 82% rename from "src/cf/CommonModules/\320\277\320\261\320\277_\320\244\320\260\320\271\320\273\320\276\320\262\320\260\321\217\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202.xml" rename to "src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\265\321\200\320\265\320\260\320\264\321\200\320\265\321\201\320\260\321\206\320\270\321\217\320\232\320\273\320\270\320\265\320\275\321\202\320\237\320\276\320\262\321\202\320\230\321\201\320\277.xml" index 02cf8220..e4326226 100644 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\244\320\260\320\271\320\273\320\276\320\262\320\260\321\217\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202.xml" +++ "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\265\321\200\320\265\320\260\320\264\321\200\320\265\321\201\320\260\321\206\320\270\321\217\320\232\320\273\320\270\320\265\320\275\321\202\320\237\320\276\320\262\321\202\320\230\321\201\320\277.xml" @@ -1,12 +1,12 @@  - + - пбп_ФайловаяСистемаСлужебныйКлиент + пбп_ПереадресацияКлиентПовтИсп ru - Файловая система служебный клиент + Переадресация клиент повт исп @@ -17,7 +17,7 @@ false false false - DontUse + DuringSession \ No newline at end of file diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\265\321\200\320\265\320\260\320\264\321\200\320\265\321\201\320\260\321\206\320\270\321\217\320\232\320\273\320\270\320\265\320\275\321\202\320\237\320\276\320\262\321\202\320\230\321\201\320\277/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\265\321\200\320\265\320\260\320\264\321\200\320\265\321\201\320\260\321\206\320\270\321\217\320\232\320\273\320\270\320\265\320\275\321\202\320\237\320\276\320\262\321\202\320\230\321\201\320\277/Ext/Module.bsl" new file mode 100644 index 00000000..aefd1b7d --- /dev/null +++ "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\265\321\200\320\265\320\260\320\264\321\200\320\265\321\201\320\260\321\206\320\270\321\217\320\232\320\273\320\270\320\265\320\275\321\202\320\237\320\276\320\262\321\202\320\230\321\201\320\277/Ext/Module.bsl" @@ -0,0 +1,41 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Библиотека проектных подсистем для упрощения разработки архитектуры на 1С: Предприятие 8, +// включая доработку типовых конфигураций. +// +// Copyright First BIT company +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// URL: https://github.com/firstBitSportivnaya/PSSL/ +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область СлужебныйПрограммныйИнтерфейс + +// Функция ОпределитьМодульПереадресации предназначена для проверки наличия общего модуля +// БСП с указанным именем и получения этого модуля, если он существует. +// +// Параметры: +// ИмяМодуля - Строка - имя общего модуля, который необходимо найти. +// +// Возвращаемое значение: +// Структура - общий модуль и что он существует +// * Модуль - ОбщийМодуль - общий модуль из БСП. +// * МодульСуществует - Булево - Если флаг истина, модуль существует. +// +Функция ОпределитьМодульПереадресации(ИмяМодуля) Экспорт + + Возврат пбп_ПереадресацияКлиент.ОпределитьМодульПереадресации(ИмяМодуля); + +КонецФункции + +#КонецОбласти \ No newline at end of file diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.xml" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\265\321\200\320\265\320\260\320\264\321\200\320\265\321\201\320\260\321\206\320\270\321\217\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.xml" similarity index 86% rename from "src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.xml" rename to "src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\265\321\200\320\265\320\260\320\264\321\200\320\265\321\201\320\260\321\206\320\270\321\217\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.xml" index 97488806..ac56162c 100644 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.xml" +++ "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\265\321\200\320\265\320\260\320\264\321\200\320\265\321\201\320\260\321\206\320\270\321\217\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.xml" @@ -1,12 +1,12 @@  - + - пбп_ПользователиКлиентСервер + пбп_ПереадресацияКлиентСервер ru - Пользователи клиент сервер + Переадресация клиент сервер diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\265\321\200\320\265\320\260\320\264\321\200\320\265\321\201\320\260\321\206\320\270\321\217\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\265\321\200\320\265\320\260\320\264\321\200\320\265\321\201\320\260\321\206\320\270\321\217\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" new file mode 100644 index 00000000..587226eb --- /dev/null +++ "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\265\321\200\320\265\320\260\320\264\321\200\320\265\321\201\320\260\321\206\320\270\321\217\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" @@ -0,0 +1,775 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Библиотека проектных подсистем для упрощения разработки архитектуры на 1С: Предприятие 8, +// включая доработку типовых конфигураций. +// +// Copyright First BIT company +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// URL: https://github.com/firstBitSportivnaya/PSSL/ +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ПрограммныйИнтерфейс + +// Функция ОпределитьМодульПереадресации предназначена для проверки наличия общего модуля +// БСП с указанным именем и получения этого модуля, если он существует. +// +// Параметры: +// ИмяМодуля - Строка - имя общего модуля, который необходимо найти. +// +// Возвращаемое значение: +// Структура - общий модуль и что он существует +// * Модуль - ОбщийМодуль - общий модуль из БСП. +// * МодульСуществует - Булево - Если флаг истина, модуль существует. +// +Функция ОпределитьМодульПереадресации(ИмяМодуля) Экспорт + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + Возврат пбп_ПереадресацияПовтИсп.ОпределитьМодульПереадресации(ИмяМодуля); +#Иначе + Возврат пбп_ПереадресацияКлиентПовтИсп.ОпределитьМодульПереадресации(ИмяМодуля); +#КонецЕсли + +КонецФункции + +#Область ПереадресацияМетодов + +#Область ОбщегоНазначенияКлиентСервер + +// Аналог метода БСП. Устанавливает свойство ИмяСвойства элемента формы с именем ИмяЭлемента в значение Значение. +// Применяется в тех случаях, когда элемента формы может не быть на форме из-за отсутствия прав у пользователя +// на объект, реквизит объекта или команду. +// +// Параметры: +// ЭлементыФормы - ВсеЭлементыФормы +// - ЭлементыФормы - коллекция элементов управляемой формы. +// ИмяЭлемента - Строка - имя элемента формы. +// ИмяСвойства - Строка - имя устанавливаемого свойства элемента формы. +// Значение - Произвольный - новое значение элемента. +// +Процедура УстановитьСвойствоЭлементаФормы(ЭлементыФормы, ИмяЭлемента, ИмяСвойства, Значение) Экспорт + + Результат = ПереадресацияМодуляОбщегоНазначенияКлиентСервер(); + Если Результат.МодульСуществует Тогда + Результат.Модуль.УстановитьСвойствоЭлементаФормы(ЭлементыФормы, ИмяЭлемента, ИмяСвойства, Значение); + Возврат; + КонецЕсли; + + ЭлементФормы = ЭлементыФормы.Найти(ИмяЭлемента); + Если ЭлементФормы <> Неопределено И ЭлементФормы[ИмяСвойства] <> Значение Тогда + ЭлементФормы[ИмяСвойства] = Значение; + КонецЕсли; + +КонецПроцедуры + +// Аналог метода БСП. Возвращает значение свойства структуры. +// +// Параметры: +// Структура - Структура +// - ФиксированнаяСтруктура - объект, из которого необходимо прочитать значение ключа. +// Ключ - Строка - имя свойства структуры, для которого необходимо прочитать значение. +// ЗначениеПоУмолчанию - Произвольный - возвращается когда в структуре нет значения по указанному +// ключу. +// Для скорости рекомендуется передавать только быстро вычисляемые значения (например примитивные типы), +// а инициализацию более тяжелых значений выполнять после проверки полученного значения (только если это +// требуется). +// +// Возвращаемое значение: +// Произвольный - значение свойства структуры. ЗначениеПоУмолчанию если в структуре нет указанного свойства. +// +Функция СвойствоСтруктуры(Структура, Ключ, ЗначениеПоУмолчанию = Неопределено) Экспорт + + Результат = ПереадресацияМодуляОбщегоНазначенияКлиентСервер(); + Если Результат.МодульСуществует Тогда + Возврат Результат.Модуль.СвойствоСтруктуры(Структура, Ключ, ЗначениеПоУмолчанию); + КонецЕсли; + + Если Структура = Неопределено Тогда + Возврат ЗначениеПоУмолчанию; + КонецЕсли; + + Результат = ЗначениеПоУмолчанию; + Если Структура.Свойство(Ключ, Результат) Тогда + Возврат Результат; + Иначе + Возврат ЗначениеПоУмолчанию; + КонецЕсли; + +КонецФункции + +// Аналог метода БСП. Дополняет массив МассивПриемник значениями из массива МассивИсточник. +// +// Параметры: +// МассивПриемник - Массив - массив, в который необходимо добавить значения. +// МассивИсточник - Массив - массив значений для заполнения. +// ТолькоУникальныеЗначения - Булево - если истина, то в массив будут включены только уникальные значения. +// +Процедура ДополнитьМассив(МассивПриемник, МассивИсточник, ТолькоУникальныеЗначения = Ложь) Экспорт + + Результат = ПереадресацияМодуляОбщегоНазначенияКлиентСервер(); + Если Результат.МодульСуществует Тогда + Результат.Модуль.ДополнитьМассив(МассивПриемник, МассивИсточник, ТолькоУникальныеЗначения); + Возврат; + КонецЕсли; + + Если ТолькоУникальныеЗначения Тогда + + УникальныеЗначения = Новый Соответствие; + + Для Каждого Значение Из МассивПриемник Цикл + УникальныеЗначения.Вставить(Значение, Истина); + КонецЦикла; + + Для Каждого Значение Из МассивИсточник Цикл + Если УникальныеЗначения[Значение] = Неопределено Тогда + МассивПриемник.Добавить(Значение); + УникальныеЗначения.Вставить(Значение, Истина); + КонецЕсли; + КонецЦикла; + + Иначе + + Для Каждого Значение Из МассивИсточник Цикл + МассивПриемник.Добавить(Значение); + КонецЦикла; + + КонецЕсли; + +КонецПроцедуры + +// Аналог метода БСП. Возвращает копию исходного массива с уникальными значениями. +// +// Параметры: +// Массив - Массив - массив произвольных значений. +// +// Возвращаемое значение: +// Массив - массив уникальных элементов. +// +Функция СвернутьМассив(Знач Массив) Экспорт + + Результат = ПереадресацияМодуляОбщегоНазначенияКлиентСервер(); + Если Результат.МодульСуществует Тогда + Возврат Результат.Модуль.СвернутьМассив(Массив); + КонецЕсли; + + Результат = Новый Массив; + ДополнитьМассив(Результат, Массив, Истина); + Возврат Результат; +КонецФункции + +// Аналог метода БСП. Возвращает значение свойства ИмяСвойства элемента формы с именем ИмяЭлемента. +// Применяется в тех случаях, когда элемент формы может не быть на форме из-за отсутствия прав у пользователя +// на объект, реквизит объекта или команду. +// +// Параметры: +// ЭлементыФормы - ВсеЭлементыФормы +// - ЭлементыФормы - коллекция элементов управляемой формы. +// ИмяЭлемента - Строка - имя элемента формы. +// ИмяСвойства - Строка - имя свойства элемента формы. +// +// Возвращаемое значение: +// Произвольный - значение свойства ИмяСвойства элемента формы ИмяЭлемента. +// +Функция ЗначениеСвойстваЭлементаФормы(ЭлементыФормы, ИмяЭлемента, ИмяСвойства) Экспорт + + Результат = ПереадресацияМодуляОбщегоНазначенияКлиентСервер(); + Если Результат.МодульСуществует Тогда + Возврат Результат.Модуль.ЗначениеСвойстваЭлементаФормы(ЭлементыФормы, ИмяЭлемента, ИмяСвойства); + КонецЕсли; + + ЭлементФормы = ЭлементыФормы.Найти(ИмяЭлемента); + Возврат ?(ЭлементФормы <> Неопределено, ЭлементФормы[ИмяСвойства], Неопределено); + +КонецФункции + +// Аналог метода БСП. Проверяет наличие реквизита или свойства у произвольного объекта без обращения к метаданным. +// +// Параметры: +// Объект - Произвольный - объект, у которого нужно проверить наличие реквизита или свойства; +// ИмяРеквизита - Строка - имя реквизита или свойства. +// +// Возвращаемое значение: +// Булево - Истина, если есть. +// +Функция ЕстьРеквизитИлиСвойствоОбъекта(Объект, ИмяРеквизита) Экспорт + + Результат = ПереадресацияМодуляОбщегоНазначенияКлиентСервер(); + Если Результат.МодульСуществует Тогда + Возврат Результат.Модуль.ЕстьРеквизитИлиСвойствоОбъекта(Объект, ИмяРеквизита); + КонецЕсли; + + КлючУникальности = Новый УникальныйИдентификатор; + СтруктураРеквизита = Новый Структура(ИмяРеквизита, КлючУникальности); + ЗаполнитьЗначенияСвойств(СтруктураРеквизита, Объект); + + Возврат СтруктураРеквизита[ИмяРеквизита] <> КлючУникальности; + +КонецФункции + +// Аналог метода БСП. Дополняет структуру значениями из другой структуры. +// +// Параметры: +// Приемник - Структура - коллекция, в которую будут добавляться новые значения. +// Источник - Структура - коллекция, из которой будут считываться пары Ключ и Значение для заполнения. +// Заменять - Булево +// - Неопределено - что делать в местах пересечения ключей источника и приемника: +// Истина - заменять значения приемника (самый быстрый способ), +// Ложь - не заменять значения приемника (пропускать), +// Неопределено - значение по умолчанию. Бросать исключение. +// +Процедура ДополнитьСтруктуру(Приемник, Источник, Заменять = Неопределено) Экспорт + + Результат = ПереадресацияМодуляОбщегоНазначенияКлиентСервер(); + Если Результат.МодульСуществует Тогда + Результат.Модуль.ДополнитьСтруктуру(Приемник, Источник, Заменять); + Возврат; + КонецЕсли; + + Для Каждого Элемент Из Источник Цикл + Если Заменять <> Истина И Приемник.Свойство(Элемент.Ключ) Тогда + Если Заменять = Ложь Тогда + Продолжить; + Иначе + ВызватьИсключение пбп_ПереадресацияКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Пересечение ключей источника и приемника: ""%1"".'"), Элемент.Ключ); + КонецЕсли; + КонецЕсли; + Приемник.Вставить(Элемент.Ключ, Элемент.Значение); + КонецЦикла; + +КонецПроцедуры + +// Аналог метода БСП. Создает массив и помещает в него переданное значение. +// +// Параметры: +// Значение - Произвольный - любое значение. +// +// Возвращаемое значение: +// Массив - массив из одного элемента. +// +Функция ЗначениеВМассиве(Знач Значение) Экспорт + + Результат = ПереадресацияМодуляОбщегоНазначенияКлиентСервер(); + Если Результат.МодульСуществует Тогда + Возврат Результат.Модуль.ЗначениеВМассиве(Значение); + КонецЕсли; + + Результат = Новый Массив; + Результат.Добавить(Значение); + Возврат Результат; + +КонецФункции + +// Аналог метода БСП. Вызывает исключение с текстом Сообщение, если Условие не равно Истина. +// Применяется для самодиагностики кода. +// +// Параметры: +// Условие - Булево - если не равно Истина, то вызывается исключение. +// Сообщение - Строка - текст сообщения. Если не задан, то исключение вызывается с сообщением по умолчанию. +// КонтекстПроверки - Строка - например, имя процедуры или функции, в которой выполняется проверка. +// +Процедура Проверить(Знач Условие, Знач Сообщение = "", Знач КонтекстПроверки = "") Экспорт + + Результат = ПереадресацияМодуляОбщегоНазначенияКлиентСервер(); + Если Результат.МодульСуществует Тогда + Результат.Модуль.Проверить(Условие, Сообщение, КонтекстПроверки); + Возврат; + КонецЕсли; + + Если Условие <> Истина Тогда + + Если ПустаяСтрока(Сообщение) Тогда + ТекстИсключения = НСтр("ru = 'Недопустимая операция'"); // Assertion failed + Иначе + ТекстИсключения = Сообщение; + КонецЕсли; + + Если Не ПустаяСтрока(КонтекстПроверки) Тогда + ТекстИсключения = ПодставитьПараметрыВСтроку( + НСтр("ru = '%1 в %2'"), ТекстИсключения, КонтекстПроверки); + КонецЕсли; + + ВызватьИсключение ТекстИсключения; + + КонецЕсли; + +КонецПроцедуры + +// Аналог метода БСП. Возвращает признак того, что переданное значение является, либо не является, числом. +// +// Параметры: +// ПроверяемоеЗначение - Строка - значение, которое проверяется на соответствие числу. +// +// Возвращаемое значение: +// Булево - признак того, что переданное значение является, либо не является, числом. +// +Функция ЭтоЧисло(Знач ПроверяемоеЗначение) Экспорт + + Результат = ПереадресацияМодуляОбщегоНазначенияКлиентСервер(); + Если Результат.МодульСуществует Тогда + Возврат Результат.Модуль.ЭтоЧисло(ПроверяемоеЗначение); + КонецЕсли; + + Если ПроверяемоеЗначение = "0" Тогда + Возврат Истина; + КонецЕсли; + + ОписаниеЧисла = Новый ОписаниеТипов("Число"); + + Возврат ОписаниеЧисла.ПривестиЗначение(ПроверяемоеЗначение) <> 0; + +КонецФункции + +#КонецОбласти + +#Область СтроковыеФункцииКлиентСервер + +// Аналог метода БСП. Разбивает строку на несколько строк по указанному разделителю. Разделитель может иметь любую длину. +// В случаях, когда разделителем является строка из одного символа, и не используется параметр СокращатьНепечатаемыеСимволы, +// рекомендуется использовать функцию платформы СтрРазделить. +// +// Параметры: +// Значение - Строка - текст с разделителями. +// Разделитель - Строка - разделитель строк текста, минимум 1 символ. +// ПропускатьПустыеСтроки - Булево - признак необходимости включения в результат пустых строк. +// Если параметр не задан, то функция работает в режиме совместимости со своей предыдущей версией: +// > для разделителя-пробела пустые строки не включаются в результат, для остальных разделителей пустые строки +// включаются в результат; +// > если параметр Строка не содержит значащих символов или не содержит ни одного символа (пустая строка), то в +// случае разделителя-пробела результатом функции будет массив, содержащий одно значение "" (пустая строка), а +// при других разделителях результатом функции будет пустой массив. +// СокращатьНепечатаемыеСимволы - Булево - сокращать непечатаемые символы по краям каждой из найденных подстрок. +// +// Возвращаемое значение: +// Массив из Строка +// +// Пример: +// СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(",один,,два,", ",") +// - возвратит массив из 5 элементов, три из которых - пустые: "", "один", "", "два", ""; +// СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(",один,,два,", ",", Истина) +// - возвратит массив из двух элементов: "один", "два"; +// СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(" один два ", " ") +// - возвратит массив из двух элементов: "один", "два"; +// СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок("") +// - возвратит пустой массив; +// СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок("",,Ложь) +// - возвратит массив с одним элементом: ""(пустая строка); +// СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок("", " ") +// - возвратит массив с одним элементом: "" (пустая строка). +// +Функция РазложитьСтрокуВМассивПодстрок(Знач Значение, Знач Разделитель = ",", Знач ПропускатьПустыеСтроки = Неопределено, + СокращатьНепечатаемыеСимволы = Ложь) Экспорт + + Результат = ПереадресацияМодуляСтроковыеФункцииКлиентСервер(); + Если Результат.МодульСуществует Тогда + Возврат Результат.Модуль + .РазложитьСтрокуВМассивПодстрок(Значение, Разделитель, ПропускатьПустыеСтроки, СокращатьНепечатаемыеСимволы); + КонецЕсли; + + Если СтрДлина(Разделитель) = 1 + И ПропускатьПустыеСтроки = Неопределено + И СокращатьНепечатаемыеСимволы Тогда + + Результат = СтрРазделить(Значение, Разделитель, Ложь); + Для Индекс = 0 По Результат.ВГраница() Цикл + Результат[Индекс] = СокрЛП(Результат[Индекс]); + КонецЦикла; + Возврат Результат; + + КонецЕсли; + + Результат = Новый Массив; + + // Для обеспечения обратной совместимости. + Если ПропускатьПустыеСтроки = Неопределено Тогда + ПропускатьПустыеСтроки = ?(Разделитель = " ", Истина, Ложь); + Если ПустаяСтрока(Значение) Тогда + Если Разделитель = " " Тогда + Результат.Добавить(""); + КонецЕсли; + Возврат Результат; + КонецЕсли; + КонецЕсли; + // + + Позиция = СтрНайти(Значение, Разделитель); + Пока Позиция > 0 Цикл + Подстрока = Лев(Значение, Позиция - 1); + Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Подстрока) Тогда + Если СокращатьНепечатаемыеСимволы Тогда + Результат.Добавить(СокрЛП(Подстрока)); + Иначе + Результат.Добавить(Подстрока); + КонецЕсли; + КонецЕсли; + Значение = Сред(Значение, Позиция + СтрДлина(Разделитель)); + Позиция = СтрНайти(Значение, Разделитель); + КонецЦикла; + + Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Значение) Тогда + Если СокращатьНепечатаемыеСимволы Тогда + Результат.Добавить(СокрЛП(Значение)); + Иначе + Результат.Добавить(Значение); + КонецЕсли; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +// Аналог метода БСП. Подставляет параметры в строку. Максимально возможное число параметров - 9. +// Параметры в строке задаются как %<номер параметра>. Нумерация параметров начинается с единицы. +// +// Параметры: +// ШаблонСтроки - Строка - шаблон строки с параметрами (вхождениями вида "%<номер параметра>", +// например "%1 пошел в %2"); +// Параметр1 - Строка - значение подставляемого параметра. +// Параметр2 - Строка +// Параметр3 - Строка +// Параметр4 - Строка +// Параметр5 - Строка +// Параметр6 - Строка +// Параметр7 - Строка +// Параметр8 - Строка +// Параметр9 - Строка +// +// Возвращаемое значение: +// Строка - текстовая строка с подставленными параметрами. +// +// Пример: +// СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='%1 пошел в %2'"), "Вася", "Зоопарк") = "Вася пошел +// в Зоопарк". +// +Функция ПодставитьПараметрыВСтроку(Знач ШаблонСтроки, + Знач Параметр1, Знач Параметр2 = Неопределено, Знач Параметр3 = Неопределено, + Знач Параметр4 = Неопределено, Знач Параметр5 = Неопределено, Знач Параметр6 = Неопределено, + Знач Параметр7 = Неопределено, Знач Параметр8 = Неопределено, Знач Параметр9 = Неопределено) Экспорт + + Результат = ПереадресацияМодуляСтроковыеФункцииКлиентСервер(); + Если Результат.МодульСуществует Тогда + Возврат Результат.Модуль + .ПодставитьПараметрыВСтроку(ШаблонСтроки, + Параметр1, Параметр2, Параметр3, Параметр4, Параметр5, Параметр6, Параметр7, Параметр8, Параметр9); + КонецЕсли; + + ШаблонСтроки = СтрЗаменить(ШаблонСтроки, "%1", Параметр1); + ШаблонСтроки = СтрЗаменить(ШаблонСтроки, "%2", Параметр2); + ШаблонСтроки = СтрЗаменить(ШаблонСтроки, "%3", Параметр3); + ШаблонСтроки = СтрЗаменить(ШаблонСтроки, "%4", Параметр4); + ШаблонСтроки = СтрЗаменить(ШаблонСтроки, "%5", Параметр5); + ШаблонСтроки = СтрЗаменить(ШаблонСтроки, "%6", Параметр6); + ШаблонСтроки = СтрЗаменить(ШаблонСтроки, "%7", Параметр7); + ШаблонСтроки = СтрЗаменить(ШаблонСтроки, "%8", Параметр8); + ШаблонСтроки = СтрЗаменить(ШаблонСтроки, "%9", Параметр9); + Возврат ШаблонСтроки; + +КонецФункции + +// Аналог метода БСП. Преобразует исходную строку в число без вызова исключений. +// +// Параметры: +// Значение - Строка - строка, которую необходимо привести к числу. +// Например, "10", "+10", "010", вернет 10; +// "(10)", "-10",вернет -10; +// "10,2", "10.2",вернет 10.2; +// "000", " ", "",вернет 0; +// "10текст", вернет Неопределено. +// +// Возвращаемое значение: +// Число, Неопределено - полученное число, либо Неопределено, если строка не является числом. +// +Функция СтрокаВЧисло(Знач Значение) Экспорт + + Результат = ПереадресацияМодуляСтроковыеФункцииКлиентСервер(); + Если Результат.МодульСуществует Тогда + Возврат Результат.Модуль.СтрокаВЧисло(Значение); + КонецЕсли; + + Значение = СтрЗаменить(Значение, " ", ""); + Если СтрНачинаетсяС(Значение, "(") Тогда + Значение = СтрЗаменить(Значение, "(", "-"); + Значение = СтрЗаменить(Значение, ")", ""); + КонецЕсли; + + СтрокаБезНулей = СтрЗаменить(Значение, "0", ""); + Если ПустаяСтрока(СтрокаБезНулей) Или СтрокаБезНулей = "-" Тогда + Возврат 0; + КонецЕсли; + + ТипЧисло = Новый ОписаниеТипов("Число"); + Результат = ТипЧисло.ПривестиЗначение(Значение); + + Возврат ?(Результат <> 0 И Не ПустаяСтрока(СтрокаБезНулей), Результат, Неопределено); + +КонецФункции + +#КонецОбласти + +#Область ПользователиКлиентСервер + +// Аналог метода БСП. Только для внутреннего использования. +Функция ТекущийПользователь(АвторизованныйПользователь) Экспорт + + Результат = ПереадресацияМодуляПользователиКлиентСервер(); + Если Результат.МодульСуществует Тогда + Возврат Результат.Модуль.ТекущийПользователь(АвторизованныйПользователь); + КонецЕсли; + + Возврат АвторизованныйПользователь; + +КонецФункции + +#КонецОбласти + +#КонецОбласти + +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс + +#Область ПереадресацияМетодов + +#Область ОбщегоНазначенияСлужебныйКлиентСервер + +// Аналог метода БСП. Параметры: +// КомандаЗапуска - Строка +// +// Возвращаемое значение: +// Строка +// +Функция БезопаснаяСтрокаКоманды(КомандаЗапуска) Экспорт + + Результат = ПереадресацияМодуляОбщегоНазначенияСлужебныйКлиентСервер(); + Если Результат.МодульСуществует Тогда + Возврат Результат.Модуль.БезопаснаяСтрокаКоманды(КомандаЗапуска); + КонецЕсли; + + Результат = ""; + + Если ТипЗнч(КомандаЗапуска) = Тип("Строка") Тогда + + ПроверитьСодержитНебезопасныеДействия(КомандаЗапуска); + Результат = КомандаЗапуска; + + ИначеЕсли ТипЗнч(КомандаЗапуска) = Тип("Массив") Тогда + + Если КомандаЗапуска.Количество() > 0 Тогда + ПроверитьСодержитНебезопасныеДействия(КомандаЗапуска[0]); + Результат = МассивВСтрокуКоманды(КомандаЗапуска); + Иначе + ВызватьИсключение пбп_ПереадресацияКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Ожидалось, что первый элемент массива %1 будет командой или путем к исполняемому файлу.'"), + "КомандаЗапуска"); + КонецЕсли; + + Иначе + ВызватьИсключение пбп_ПереадресацияКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Ожидалось, что значение %1 будет типа %2 или %3.'"), + "КомандаЗапуска", "Строка", "Массив"); + КонецЕсли; + + Возврат Результат; + +КонецФункции + +#КонецОбласти + +#КонецОбласти + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +#Область МодульПереадресацииПоПодсистемам + +Функция ПереадресацияМодуляОбщегоНазначенияКлиентСервер() + Возврат ОпределитьМодульПереадресации("ОбщегоНазначенияКлиентСервер"); +КонецФункции + +Функция ПереадресацияМодуляОбщегоНазначенияСлужебныйКлиентСервер() + Возврат ОпределитьМодульПереадресации("ОбщегоНазначенияСлужебныйКлиентСервер"); +КонецФункции + +Функция ПереадресацияМодуляСтроковыеФункцииКлиентСервер() + Возврат ОпределитьМодульПереадресации("СтроковыеФункцииКлиентСервер"); +КонецФункции + +Функция ПереадресацияМодуляПользователиКлиентСервер() + Возврат ОпределитьМодульПереадресации("ПользователиКлиентСервер"); +КонецФункции + +#КонецОбласти + +#Область ПереадресацияМетодов + +#Область ОбщегоНазначенияСлужебныйКлиентСервер + +// Аналог метода БСП. +// +Функция СообщениеПользователю( + Знач ТекстСообщенияПользователю, + Знач КлючДанных, + Знач Поле, + Знач ПутьКДанным = "", + Отказ = Ложь, + ЭтоОбъект = Ложь) Экспорт + + Результат = ПереадресацияМодуляОбщегоНазначенияСлужебныйКлиентСервер(); + Если Результат.МодульСуществует Тогда + Возврат Результат.Модуль.СообщениеПользователю( + ТекстСообщенияПользователю, + КлючДанных, + Поле, + ПутьКДанным, + Отказ, + ЭтоОбъект); + КонецЕсли; + + Сообщение = Новый СообщениеПользователю; + Сообщение.Текст = ТекстСообщенияПользователю; + Сообщение.Поле = Поле; + + Если ЭтоОбъект Тогда + Сообщение.УстановитьДанные(КлючДанных); + Иначе + Сообщение.КлючДанных = КлючДанных; + КонецЕсли; + + Если НЕ ПустаяСтрока(ПутьКДанным) Тогда + Сообщение.ПутьКДанным = ПутьКДанным; + КонецЕсли; + + Отказ = Истина; + + Возврат Сообщение; + +КонецФункции + +#Если Не ВебКлиент И Не МобильныйКлиент Тогда + +// Аналог метода БСП. +// +Функция СтрокаЗапускаКомандыWindows(СтрокаКоманды, ТекущийКаталог, ДождатьсяЗавершения, КодировкаИсполнения) Экспорт + + НаборКоманд = ""; + + Если ЗначениеЗаполнено(КодировкаИсполнения) Тогда + + Если КодировкаИсполнения = "OEM" Тогда + КодировкаИсполнения = 437; + ИначеЕсли КодировкаИсполнения = "CP866" Тогда + КодировкаИсполнения = 866; + ИначеЕсли КодировкаИсполнения = "UTF8" Тогда + КодировкаИсполнения = 65001; + КонецЕсли; + + НаборКоманд = "(chcp " + Формат(КодировкаИсполнения, "ЧГ=") + ")"; + КонецЕсли; + + Если Не ПустаяСтрока(ТекущийКаталог) Тогда + НаборКоманд = НаборКоманд + ?(ЗначениеЗаполнено(НаборКоманд), "&&", "") + "(cd /D """ + ТекущийКаталог + """)"; + КонецЕсли; + НаборКоманд = НаборКоманд + ?(ЗначениеЗаполнено(НаборКоманд), "&&", "") + "(" + СокрЛП(СтрокаКоманды) + ")"; + + Возврат "cmd /S /C """ + НаборКоманд + """"; + +КонецФункции + +#КонецЕсли + +#КонецОбласти + +#КонецОбласти + +#Область Прочее + +#Область БезопаснаяСтрокаКоманды + +Функция СодержитНебезопасныеДействия(Знач СтрокаКоманды) + + Возврат СтрНайти(СтрокаКоманды, "${") <> 0 + Или СтрНайти(СтрокаКоманды, "$(") <> 0 + Или СтрНайти(СтрокаКоманды, "`") <> 0 + Или СтрНайти(СтрокаКоманды, "|") <> 0 + Или СтрНайти(СтрокаКоманды, ";") <> 0 + Или СтрНайти(СтрокаКоманды, "&") <> 0; + +КонецФункции + +Процедура ПроверитьСодержитНебезопасныеДействия(Знач КомандаЗапуска) + Если СодержитНебезопасныеДействия(КомандаЗапуска) Тогда + ВызватьИсключение пбп_ПереадресацияКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Не удалось запустить программу. + |Недопустимая строка команды + |%1 + | + |Строка команды не должна содержать символы: ""${"", ""$("", ""`"", ""|"", "";"", ""&"".'"), + КомандаЗапуска); + КонецЕсли; +КонецПроцедуры + +Функция МассивВСтрокуКоманды(КомандаЗапуска) + + Результат = Новый Массив; + НужныКавычки = Ложь; + Для Каждого Аргумент Из КомандаЗапуска Цикл + + Если Результат.Количество() > 0 Тогда + Результат.Добавить(" "); + КонецЕсли; + + НужныКавычки = Аргумент = Неопределено + Или ПустаяСтрока(Аргумент) + Или СтрНайти(Аргумент, " ") + Или СтрНайти(Аргумент, Символы.Таб) + Или СтрНайти(Аргумент, "&") + Или СтрНайти(Аргумент, "(") + Или СтрНайти(Аргумент, ")") + Или СтрНайти(Аргумент, "[") + Или СтрНайти(Аргумент, "]") + Или СтрНайти(Аргумент, "{") + Или СтрНайти(Аргумент, "}") + Или СтрНайти(Аргумент, "^") + Или СтрНайти(Аргумент, "=") + Или СтрНайти(Аргумент, ";") + Или СтрНайти(Аргумент, "!") + Или СтрНайти(Аргумент, "'") + Или СтрНайти(Аргумент, "+") + Или СтрНайти(Аргумент, ",") + Или СтрНайти(Аргумент, "`") + Или СтрНайти(Аргумент, "~") + Или СтрНайти(Аргумент, "$") + Или СтрНайти(Аргумент, "|"); + + Если НужныКавычки Тогда + Результат.Добавить(""""); + КонецЕсли; + + Результат.Добавить(СтрЗаменить(Аргумент, """", """""")); + + Если НужныКавычки Тогда + Результат.Добавить(""""); + КонецЕсли; + + КонецЦикла; + + Возврат СтрСоединить(Результат); + +КонецФункции + +#КонецОбласти // БезопаснаяСтрокаКоманды + +#КонецОбласти + +#КонецОбласти diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\226\321\203\321\200\320\275\320\260\320\273\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270.xml" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\265\321\200\320\265\320\260\320\264\321\200\320\265\321\201\320\260\321\206\320\270\321\217\320\237\320\276\320\262\321\202\320\230\321\201\320\277.xml" similarity index 84% rename from "src/cf/CommonModules/\320\277\320\261\320\277_\320\226\321\203\321\200\320\275\320\260\320\273\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270.xml" rename to "src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\265\321\200\320\265\320\260\320\264\321\200\320\265\321\201\320\260\321\206\320\270\321\217\320\237\320\276\320\262\321\202\320\230\321\201\320\277.xml" index 8a59ebbb..acc81bc4 100644 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\226\321\203\321\200\320\275\320\260\320\273\320\240\320\265\320\263\320\270\321\201\321\202\321\200\320\260\321\206\320\270\320\270.xml" +++ "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\265\321\200\320\265\320\260\320\264\321\200\320\265\321\201\320\260\321\206\320\270\321\217\320\237\320\276\320\262\321\202\320\230\321\201\320\277.xml" @@ -1,12 +1,12 @@  - + - пбп_ЖурналРегистрации + пбп_ПереадресацияПовтИсп ru - Журнал регистрации + Переадресация повт исп @@ -17,7 +17,7 @@ false false false - DontUse + DuringSession \ No newline at end of file diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213\320\237\320\276\320\262\321\202\320\230\321\201\320\277/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\265\321\200\320\265\320\260\320\264\321\200\320\265\321\201\320\260\321\206\320\270\321\217\320\237\320\276\320\262\321\202\320\230\321\201\320\277/Ext/Module.bsl" similarity index 50% rename from "src/cf/CommonModules/\320\277\320\261\320\277_\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213\320\237\320\276\320\262\321\202\320\230\321\201\320\277/Ext/Module.bsl" rename to "src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\265\321\200\320\265\320\260\320\264\321\200\320\265\321\201\320\260\321\206\320\270\321\217\320\237\320\276\320\262\321\202\320\230\321\201\320\277/Ext/Module.bsl" index cb9061ce..392db53e 100644 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213\320\237\320\276\320\262\321\202\320\230\321\201\320\277/Ext/Module.bsl" +++ "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\265\321\200\320\265\320\260\320\264\321\200\320\265\321\201\320\260\321\206\320\270\321\217\320\237\320\276\320\262\321\202\320\230\321\201\320\277/Ext/Module.bsl" @@ -1,4 +1,5 @@ -// Библиотека проектных подсистем для упрощения разработки архитектуры на 1С: Предприятие 8, +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Библиотека проектных подсистем для упрощения разработки архитектуры на 1С: Предприятие 8, // включая доработку типовых конфигураций. // // Copyright First BIT company @@ -15,28 +16,48 @@ // See the License for the specific language governing permissions and // limitations under the License. // -// URL: https://github.com/firstBitSportivnaya/PSSL/ -// +// URL: https://github.com/firstBitSportivnaya/PSSL/ +/////////////////////////////////////////////////////////////////////////////////////////////////////// #Область СлужебныйПрограммныйИнтерфейс -Функция ОписаниеТипаВсеСсылки() Экспорт +// Функция ОпределитьМодульПереадресации предназначена для проверки наличия общего модуля +// БСП с указанным именем и получения этого модуля, если он существует. +// +// Параметры: +// ИмяМодуля - Строка - имя общего модуля, который необходимо найти. +// +// Возвращаемое значение: +// Структура - общий модуль и что он существует +// * Модуль - ОбщийМодуль - общий модуль из БСП. +// * МодульСуществует - Булево - Если флаг истина, модуль существует. +// +Функция ОпределитьМодульПереадресации(ИмяМодуля) Экспорт - Возврат Новый ОписаниеТипов(Новый ОписаниеТипов(Новый ОписаниеТипов(Новый ОписаниеТипов(Новый ОписаниеТипов( - Новый ОписаниеТипов(Новый ОписаниеТипов(Новый ОписаниеТипов(Новый ОписаниеТипов( - Справочники.ТипВсеСсылки(), - Документы.ТипВсеСсылки().Типы()), - ПланыОбмена.ТипВсеСсылки().Типы()), - Перечисления.ТипВсеСсылки().Типы()), - ПланыВидовХарактеристик.ТипВсеСсылки().Типы()), - ПланыСчетов.ТипВсеСсылки().Типы()), - ПланыВидовРасчета.ТипВсеСсылки().Типы()), - БизнесПроцессы.ТипВсеСсылки().Типы()), - БизнесПроцессы.ТипВсеСсылкиТочекМаршрутаБизнесПроцессов().Типы()), - Задачи.ТипВсеСсылки().Типы()); + Возврат пбп_Переадресация.ОпределитьМодульПереадресации(ИмяМодуля); КонецФункции +#Область ПереадресацияМетодов + +#КонецОбласти + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +#Область МодульПереадресацииПоПодсистемам + +Функция ПереадресацияМодуляСтандартныеПодсистемыПовтИсп() + Возврат пбп_ПереадресацияПовтИсп.ОпределитьМодульПереадресации("СтандартныеПодсистемыПовтИсп"); +КонецФункции + +#КонецОбласти + +#Область ПереадресацияМетодов + +#Область СтандартныеПодсистемыПовтИсп + // Аналог метода БСП. Возвращает соответствие имен "функциональных" подсистем и значения Истина. // У "функциональной" подсистемы снят флажок "Включать в командный интерфейс". // @@ -47,18 +68,47 @@ // Функция ИменаПодсистем() Экспорт + Результат = ПереадресацияМодуляСтандартныеПодсистемыПовтИсп(); + Если Результат.МодульСуществует Тогда + Возврат Результат.Модуль.ИменаПодсистем(); + КонецЕсли; + + ОтключенныеПодсистемы = Новый Соответствие; + Имена = Новый Соответствие; - ВставитьИменаПодчиненныхПодсистем(Имена, Метаданные); + ВставитьИменаПодчиненныхПодсистем(Имена, Метаданные, ОтключенныеПодсистемы); Возврат Новый ФиксированноеСоответствие(Имена); КонецФункции -#КонецОбласти - -#Область СлужебныеПроцедурыИФункции +// Аналог метода БСП. +// +Функция ОписаниеТипаВсеСсылки() Экспорт + + Результат = ПереадресацияМодуляСтандартныеПодсистемыПовтИсп(); + Если Результат.МодульСуществует Тогда + Возврат Результат.Модуль.ОписаниеТипаВсеСсылки(); + КонецЕсли; + + Возврат Новый ОписаниеТипов(Новый ОписаниеТипов(Новый ОписаниеТипов(Новый ОписаниеТипов(Новый ОписаниеТипов( + Новый ОписаниеТипов(Новый ОписаниеТипов(Новый ОписаниеТипов(Новый ОписаниеТипов( + Справочники.ТипВсеСсылки(), + Документы.ТипВсеСсылки().Типы()), + ПланыОбмена.ТипВсеСсылки().Типы()), + Перечисления.ТипВсеСсылки().Типы()), + ПланыВидовХарактеристик.ТипВсеСсылки().Типы()), + ПланыСчетов.ТипВсеСсылки().Типы()), + ПланыВидовРасчета.ТипВсеСсылки().Типы()), + БизнесПроцессы.ТипВсеСсылки().Типы()), + БизнесПроцессы.ТипВсеСсылкиТочекМаршрутаБизнесПроцессов().Типы()), + Задачи.ТипВсеСсылки().Типы()); + +КонецФункции -Процедура ВставитьИменаПодчиненныхПодсистем(Имена, РодительскаяПодсистема, ИмяРодительскойПодсистемы = "") +// Аналог метода БСП. +// +Процедура ВставитьИменаПодчиненныхПодсистем(Имена, РодительскаяПодсистема, ОтключенныеПодсистемы, ИмяРодительскойПодсистемы = "") Для Каждого ТекущаяПодсистема Из РодительскаяПодсистема.Подсистемы Цикл @@ -67,15 +117,23 @@ КонецЕсли; ИмяТекущейПодсистемы = ИмяРодительскойПодсистемы + ТекущаяПодсистема.Имя; - Имена.Вставить(ИмяТекущейПодсистемы, Истина); + Если ОтключенныеПодсистемы.Получить(ИмяТекущейПодсистемы) = Истина Тогда + Продолжить; + Иначе + Имена.Вставить(ИмяТекущейПодсистемы, Истина); + КонецЕсли; Если ТекущаяПодсистема.Подсистемы.Количество() = 0 Тогда Продолжить; КонецЕсли; - ВставитьИменаПодчиненныхПодсистем(Имена, ТекущаяПодсистема, ИмяТекущейПодсистемы + "."); + ВставитьИменаПодчиненныхПодсистем(Имена, ТекущаяПодсистема, ОтключенныеПодсистемы, ИмяТекущейПодсистемы + "."); КонецЦикла; КонецПроцедуры -#КонецОбласти // СлужебныеПроцедурыИФункции \ No newline at end of file +#КонецОбласти + +#КонецОбласти + +#КонецОбласти \ No newline at end of file diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\320\265\320\244\320\260\320\271\320\273\320\276\320\262\320\230\320\267\320\230\320\275\321\202\320\265\321\200\320\275\320\265\321\202\320\260.xml" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\320\265\320\244\320\260\320\271\320\273\320\276\320\262\320\230\320\267\320\230\320\275\321\202\320\265\321\200\320\275\320\265\321\202\320\260.xml" deleted file mode 100644 index 7dc1a8a7..00000000 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\320\265\320\244\320\260\320\271\320\273\320\276\320\262\320\230\320\267\320\230\320\275\321\202\320\265\321\200\320\275\320\265\321\202\320\260.xml" +++ /dev/null @@ -1,23 +0,0 @@ - - - - - пбп_ПолучениеФайловИзИнтернета - - - ru - Получение файлов из Интернета - - - - false - false - true - true - true - false - false - DontUse - - - \ No newline at end of file diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\320\265\320\244\320\260\320\271\320\273\320\276\320\262\320\230\320\267\320\230\320\275\321\202\320\265\321\200\320\275\320\265\321\202\320\260/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\320\265\320\244\320\260\320\271\320\273\320\276\320\262\320\230\320\267\320\230\320\275\321\202\320\265\321\200\320\275\320\265\321\202\320\260/Ext/Module.bsl" deleted file mode 100644 index 43f62279..00000000 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\320\265\320\244\320\260\320\271\320\273\320\276\320\262\320\230\320\267\320\230\320\275\321\202\320\265\321\200\320\275\320\265\321\202\320\260/Ext/Module.bsl" +++ /dev/null @@ -1,125 +0,0 @@ -// Библиотека проектных подсистем для упрощения разработки архитектуры на 1С: Предприятие 8, -// включая доработку типовых конфигураций. -// -// Copyright First BIT company -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// URL: https://github.com/firstBitSportivnaya/PSSL/ -// - -#Область ПрограммныйИнтерфейс - -// Аналог метода БСП. Возвращает объект ИнтернетПрокси для доступа в Интернет. -// Допустимые протоколы для создания ИнтернетПрокси http, https, ftp и ftps. -// -// Параметры: -// URLИлиПротокол - Строка - url в формате [Протокол://]<Сервер>/<Путь к файлу на сервере>, -// либо идентификатор протокола (http, ftp, ...). -// -// Возвращаемое значение: -// ИнтернетПрокси - описывает параметры прокси-серверов для различных протоколов. -// Если не удалось распознать схему сетевой протокол, -// то будет создать прокси на основании протокола HTTP. -// -Функция ПолучитьПрокси(Знач URLИлиПротокол) Экспорт - - НастройкиПрокси = пбп_ОбщегоНазначенияСлужебный.ХранилищеОбщихНастроекЗагрузить("НастройкаПроксиСервера", ""); - Возврат НовыйИнтернетПрокси(НастройкиПрокси, URLИлиПротокол); - -КонецФункции - -// Аналог метода БСП. Возвращает прокси по настройкам НастройкаПроксиСервера для заданного протокола Протокол. -// -// Параметры: -// НастройкаПроксиСервера - Соответствие из КлючИЗначение: -// * Ключ - Строка - см. ниже список возможных ключей. -// * Значение - Произвольный -// ИспользоватьПрокси - Булево - использовать ли прокси-сервер. -// НеИспользоватьПроксиДляЛокальныхАдресов - использовать ли прокси-сервер для локальных адресов. -// НеИспользоватьПроксиДляАдресов - Массив из Строка -// ИспользоватьСистемныеНастройки - Булево - использовать ли системные настройки прокси-сервера. -// Сервер - Строка - адрес прокси-сервера. -// Порт - Строка - порт прокси-сервера. -// Пользователь - Строка - имя пользователя для авторизации на прокси-сервере. -// Пароль - Строка - пароль пользователя. -// ИспользоватьАутентификациюОС - Булево - признак использования аутентификации средствами операционной системы. -// URLИлиПротокол - Строка - адрес ресурса или протокол, для которого устанавливаются параметры прокси сервера, -// например "https://1c.ru", "http", "https", "ftp", "ftps". -// -// Возвращаемое значение: -// ИнтернетПрокси -// -Функция НовыйИнтернетПрокси(НастройкаПроксиСервера, URLИлиПротокол) Экспорт - - Если НастройкаПроксиСервера = Неопределено Тогда - // Системные установки прокси-сервера. - Возврат Неопределено; - КонецЕсли; - - ИспользоватьПрокси = НастройкаПроксиСервера.Получить("ИспользоватьПрокси"); - Если Не ИспользоватьПрокси Тогда - // Не использовать прокси-сервер. - Возврат Новый ИнтернетПрокси(Ложь); - КонецЕсли; - - ИспользоватьСистемныеНастройки = НастройкаПроксиСервера.Получить("ИспользоватьСистемныеНастройки"); - Если ИспользоватьСистемныеНастройки Тогда - // Системные настройки прокси-сервера. - Возврат Новый ИнтернетПрокси(Истина); - КонецЕсли; - - ИспользоватьАутентификациюОС = НастройкаПроксиСервера.Получить("ИспользоватьАутентификациюОС"); - ИспользоватьАутентификациюОС = ?(ИспользоватьАутентификациюОС = Истина, Истина, Ложь); - - ДополнительныеНастройки = НастройкаПроксиСервера.Получить("ДополнительныеНастройкиПрокси"); - Если ТипЗнч(ДополнительныеНастройки) <> Тип("Соответствие") Тогда - ДополнительныеНастройки = Новый Соответствие; - КонецЕсли; - - // Настройки прокси-сервера, заданные вручную. - Прокси = Новый ИнтернетПрокси; - - Протоколы = СтрРазделить("http,https,ftp,ftps", ",", Ложь); - Для Каждого Протокол Из Протоколы Цикл - АдресСервера = НастройкаПроксиСервера["Сервер"]; - Порт = НастройкаПроксиСервера["Порт"]; - - ПроксиПоПротоколу = ДополнительныеНастройки[Протокол]; - Если ТипЗнч(ПроксиПоПротоколу) = Тип("Структура") Тогда - АдресСервера = ПроксиПоПротоколу.Адрес; - Порт = ПроксиПоПротоколу.Порт; - КонецЕсли; - - Если Не ЗначениеЗаполнено(Порт) Тогда - Порт = Неопределено; - КонецЕсли; - - Прокси.Установить(Протокол, АдресСервера, Порт, - НастройкаПроксиСервера["Пользователь"], НастройкаПроксиСервера["Пароль"], ИспользоватьАутентификациюОС); - КонецЦикла; - - Прокси.НеИспользоватьПроксиДляЛокальныхАдресов = НастройкаПроксиСервера["НеИспользоватьПроксиДляЛокальныхАдресов"]; - - АдресаИсключений = НастройкаПроксиСервера.Получить("НеИспользоватьПроксиДляАдресов"); - Если ТипЗнч(АдресаИсключений) = Тип("Массив") Тогда - Для каждого АдресИсключения Из АдресаИсключений Цикл - Прокси.НеИспользоватьПроксиДляАдресов.Добавить(АдресИсключения); - КонецЦикла; - КонецЕсли; - - Возврат Прокси; - -КонецФункции - -#КонецОбласти diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\320\265\320\244\320\260\320\271\320\273\320\276\320\262\320\230\320\267\320\230\320\275\321\202\320\265\321\200\320\275\320\265\321\202\320\260\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.xml" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\320\265\320\244\320\260\320\271\320\273\320\276\320\262\320\230\320\267\320\230\320\275\321\202\320\265\321\200\320\275\320\265\321\202\320\260\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.xml" deleted file mode 100644 index de9b9a30..00000000 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\320\265\320\244\320\260\320\271\320\273\320\276\320\262\320\230\320\267\320\230\320\275\321\202\320\265\321\200\320\275\320\265\321\202\320\260\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.xml" +++ /dev/null @@ -1,23 +0,0 @@ - - - - - пбп_ПолучениеФайловИзИнтернетаСлужебный - - - ru - Получение файлов из Интернета служебный - - - - false - false - true - true - true - false - false - DontUse - - - \ No newline at end of file diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\320\265\320\244\320\260\320\271\320\273\320\276\320\262\320\230\320\267\320\230\320\275\321\202\320\265\321\200\320\275\320\265\321\202\320\260\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\320\265\320\244\320\260\320\271\320\273\320\276\320\262\320\230\320\267\320\230\320\275\321\202\320\265\321\200\320\275\320\265\321\202\320\260\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Ext/Module.bsl" deleted file mode 100644 index 6d3bdf63..00000000 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\276\320\273\321\203\321\207\320\265\320\275\320\270\320\265\320\244\320\260\320\271\320\273\320\276\320\262\320\230\320\267\320\230\320\275\321\202\320\265\321\200\320\275\320\265\321\202\320\260\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Ext/Module.bsl" +++ /dev/null @@ -1,46 +0,0 @@ -// Библиотека проектных подсистем для упрощения разработки архитектуры на 1С: Предприятие 8, -// включая доработку типовых конфигураций. -// -// Copyright First BIT company -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// URL: https://github.com/firstBitSportivnaya/PSSL/ -// - -#Область СлужебныйПрограммныйИнтерфейс - -#Область ПереадресацияМетодов - -// См. пбп_ПолучениеФайловИзИнтернета.ПолучитьПрокси. -Функция ПолучитьПрокси(Знач URLИлиПротокол) Экспорт - - Модуль = ПолучитьМодуль(); - Возврат Модуль.ПолучитьПрокси(URLИлиПротокол); - -КонецФункции - -#КонецОбласти - -#КонецОбласти - -#Область СлужебныеПроцедурыИФункции - -Функция ПолучитьМодуль() - Возврат пбп_ОбщегоНазначенияПовтИсп.ПереадресацияОбщегоМодуля( - "ПолучениеФайловИзИнтернета", - "пбп_ПолучениеФайловИзИнтернета"); -КонецФункции - -#КонецОбласти - diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Ext/Module.bsl" deleted file mode 100644 index ec2beb28..00000000 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270/Ext/Module.bsl" +++ /dev/null @@ -1,82 +0,0 @@ -// Библиотека проектных подсистем для упрощения разработки архитектуры на 1С: Предприятие 8, -// включая доработку типовых конфигураций. -// -// Copyright First BIT company -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// URL: https://github.com/firstBitSportivnaya/PSSL/ -// - -#Область ПрограммныйИнтерфейс - -#Область МетодыАналогиБСП - -// Аналог метода БСП. Возвращает текущего пользователя. -// Рекомендуется использовать в коде, который не поддерживает работу с внешними пользователями. -// -// Если вход в сеанс выполнил внешний пользователь, тогда будет вызвано исключение. -// -// Возвращаемое значение: -// СправочникСсылка.Пользователи - пользователь. -// -Функция ТекущийПользователь() Экспорт - - Возврат пбп_ПользователиКлиентСервер.ТекущийПользователь(АвторизованныйПользователь()); - -КонецФункции - -// Аналог метода БСП. Возвращает пользователя ИБ по ссылке справочника Пользователи или ВнешниеПользователи. -// Для поиска требуются административные права. Если административных прав нет, -// допустимо искать только пользователя для текущего пользователя ИБ. -// -// Параметры: -// Пользователь - СправочникСсылка.Пользователи -// - СправочникСсылка.ВнешниеПользователи -// -// Возвращаемое значение: -// ПользовательИнформационнойБазы - если найден. -// Неопределено - если пользователь ИБ не существует. -// -Функция НайтиПоСсылке(Пользователь) Экспорт - - Возврат Неопределено; - -КонецФункции - -#КонецОбласти - -#КонецОбласти - -#Область СлужебныйПрограммныйИнтерфейс - -#Область МетодыАналогиБСП - -// Аналог метода БСП. Только для внутреннего использования. -// -// Возвращаемое значение: -// Неопределено -// -Функция АвторизованныйПользователь() Экспорт - - Возврат Неопределено; - -КонецФункции - -#КонецОбласти - -#КонецОбласти - -#Область СлужебныеПроцедурыИФункции - -#КонецОбласти diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" deleted file mode 100644 index 22582303..00000000 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" +++ /dev/null @@ -1,38 +0,0 @@ -// Библиотека проектных подсистем для упрощения разработки архитектуры на 1С: Предприятие 8, -// включая доработку типовых конфигураций. -// -// Copyright First BIT company -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// URL: https://github.com/firstBitSportivnaya/PSSL/ -// - -#Область ПрограммныйИнтерфейс - -#КонецОбласти - -#Область СлужебныйПрограммныйИнтерфейс - -#Область МетодыАналогиБСП - -// Аналог метода БСП. Только для внутреннего использования. -Функция ТекущийПользователь(АвторизованныйПользователь) Экспорт - - Возврат АвторизованныйПользователь; - -КонецФункции - -#КонецОбласти - -#КонецОбласти \ No newline at end of file diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.xml" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.xml" deleted file mode 100644 index 63db1756..00000000 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.xml" +++ /dev/null @@ -1,23 +0,0 @@ - - - - - пбп_ПользователиСлужебный - - - ru - Пользователи служебный - - - - false - false - true - true - false - false - false - DontUse - - - \ No newline at end of file diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Ext/Module.bsl" deleted file mode 100644 index d290de30..00000000 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\320\270\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Ext/Module.bsl" +++ /dev/null @@ -1,51 +0,0 @@ -// Библиотека проектных подсистем для упрощения разработки архитектуры на 1С: Предприятие 8, -// включая доработку типовых конфигураций. -// -// Copyright First BIT company -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// URL: https://github.com/firstBitSportivnaya/PSSL/ -// - -#Область СлужебныйПрограммныйИнтерфейс - -#Область ПереадресацияМетодов - -// См. пбп_Пользователи.ТекущийПользователь. -Функция ТекущийПользователь() Экспорт - - Модуль = ПолучитьМодуль(); - Возврат Модуль.ТекущийПользователь(); - -КонецФункции - -// См. пбп_Пользователи.НайтиПоСсылке. -Функция НайтиПоСсылке(Пользователь) Экспорт - - Модуль = ПолучитьМодуль(); - Возврат Модуль.НайтиПоСсылке(Пользователь); - -КонецФункции - -#КонецОбласти - -#КонецОбласти - -#Область СлужебныеПроцедурыИФункции - -Функция ПолучитьМодуль() - Возврат пбп_ОбщегоНазначенияПовтИсп.ПереадресацияОбщегоМодуля("Пользователи", "пбп_Пользователи"); -КонецФункции - -#КонецОбласти \ No newline at end of file diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217/Ext/Module.bsl" index 3d0c973d..515f7554 100644 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217/Ext/Module.bsl" +++ "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217/Ext/Module.bsl" @@ -235,7 +235,7 @@ Для Каждого Строка Из ТаблицаПредопределенных Цикл КлючиХеша = ?(Строка.ЭтоГруппа, ДополнительныеПараметры.КлючиХешаГруппа, ДополнительныеПараметры.КлючиХешаЭлемент); ЗаполнитьЗначенияСвойств(КлючиХеша, Строка); - Строка.ХешСумма = пбп_ОбщегоНазначенияСлужебный.КонтрольнаяСуммаСтрокой(КлючиХеша, ХешФункция.MD5); + Строка.ХешСумма = пбп_Переадресация.КонтрольнаяСуммаСтрокой(КлючиХеша, ХешФункция.MD5); КонецЦикла; КонецПроцедуры @@ -355,9 +355,8 @@ // Процедура ОбновитьХешЭлемента(Объект) Экспорт - Флаг = пбп_ОбщегоНазначенияСлужебныйКлиентСервер - .СвойствоСтруктуры(Объект.ДополнительныеСвойства, "РучноеИзменение", Истина); - + Флаг = пбп_ПереадресацияКлиентСервер.СвойствоСтруктуры(Объект.ДополнительныеСвойства, "РучноеИзменение", Истина); + РегистрыСведений.пбп_СостоянияПредопределенныхЭлементов.ОбновитьХешЭлемента(Объект.Ссылка, Объект.ЭтоГруппа, Флаг); КонецПроцедуры @@ -387,7 +386,7 @@ ОбъектМетаданных = Метаданные.НайтиПоТипу(Тип); ПолноеИмя = ОбъектМетаданных.ПолноеИмя(); - Менеджер = пбп_ОбщегоНазначенияСлужебный.МенеджерОбъектаПоПолномуИмени(ПолноеИмя); + Менеджер = пбп_Переадресация.МенеджерОбъектаПоПолномуИмени(ПолноеИмя); Если Не ОтправитьСерверноеОповещение Тогда ИнициализироватьПредопределенныеЗначения(Менеджер); @@ -405,7 +404,7 @@ Результат.Вставить("ИмяОбъектаМетаданных", ПолноеИмя); Результат.Вставить("ПредставлениеОбъекта", ПредставлениеОбъекта); - пбп_СерверныеОповещенияСлужебный.ОтправитьСерверноеОповещение( + пбп_Переадресация.ОтправитьСерверноеОповещение( "пбп_ПредопределенныеЗначения", Результат, Неопределено); @@ -444,7 +443,7 @@ Попытка ЗаписатьЭлементИСвязанныеДанные(НоваяГруппа, КлючиХеша); Исключение - пбп_ОбщегоНазначенияСлужебный.СообщитьПользователю(ОписаниеОшибки()); + пбп_Переадресация.СообщитьПользователю(ОписаниеОшибки()); КонецПопытки; Группы.Вставить(СтрокаТаблицы.ИдентификаторНастройки, НоваяГруппа.Ссылка); @@ -468,7 +467,7 @@ Попытка ЗаписатьЭлементИСвязанныеДанные(НовыйЭлемент, КлючиХеша); Исключение - пбп_ОбщегоНазначенияСлужебный.СообщитьПользователю(ОписаниеОшибки()); + пбп_Переадресация.СообщитьПользователю(ОписаниеОшибки()); КонецПопытки; Если СтрокаТаблицы.Служебный_Иерархический И Не СтрокаТаблицы.Служебный_ИерархияГруппИЭлементов Тогда @@ -512,7 +511,7 @@ СообщитьОбИзмененииРасположенияЭлемента(Элемент); КонецЕсли; Исключение - пбп_ОбщегоНазначенияСлужебный.СообщитьПользователю(ОписаниеОшибки()); + пбп_Переадресация.СообщитьПользователю(ОписаниеОшибки()); КонецПопытки; КонецПроцедуры @@ -571,10 +570,10 @@ ТекстСообщения = ТекстСообщения + НСтр("ru = ', включая все его подчиненные элементы.'; |en = ', including all its subordinate items.'"); КонецЕсли; - ТекстСообщения = пбп_СтроковыеФункцииСлужебныйКлиентСервер.ПодставитьПараметрыВСтроку( + ТекстСообщения = пбп_ПереадресацияКлиентСервер.ПодставитьПараметрыВСтроку( ТекстСообщения, Элемент.Ссылка); - пбп_ОбщегоНазначенияСлужебный.СообщитьПользователю(ТекстСообщения, Элемент); + пбп_Переадресация.СообщитьПользователю(ТекстСообщения, Элемент); КонецПроцедуры @@ -583,11 +582,11 @@ ТекстСообщения = НСтр("ru = 'Расположение элемента ''%1'' изменено. Текущее положение: ''%2'''; |en = 'The location of element ''%1'' has changed. Current position: ''%2'''"); Родитель = ?(ЗначениеЗаполнено(Элемент.Родитель), Элемент.Родитель, НСтр("ru = '''<корень>'''; en = ''''''")); - ТекстСообщения = пбп_СтроковыеФункцииСлужебныйКлиентСервер.ПодставитьПараметрыВСтроку( + ТекстСообщения = пбп_ПереадресацияКлиентСервер.ПодставитьПараметрыВСтроку( ТекстСообщения, Элемент.Ссылка, Родитель); - пбп_ОбщегоНазначенияСлужебный.СообщитьПользователю(ТекстСообщения, Элемент); + пбп_Переадресация.СообщитьПользователю(ТекстСообщения, Элемент); КонецПроцедуры @@ -595,10 +594,10 @@ ТекстСообщения = НСтр("ru = 'Элемент ''%1'' успешно обновлен!'; |en = 'Item ''%1'' was successfully updated!'"); - ТекстСообщения = пбп_СтроковыеФункцииСлужебныйКлиентСервер.ПодставитьПараметрыВСтроку( + ТекстСообщения = пбп_ПереадресацияКлиентСервер.ПодставитьПараметрыВСтроку( ТекстСообщения, Элемент.Ссылка); - пбп_ОбщегоНазначенияСлужебный.СообщитьПользователю(ТекстСообщения, Элемент); + пбп_Переадресация.СообщитьПользователю(ТекстСообщения, Элемент); КонецПроцедуры @@ -606,10 +605,10 @@ ТекстСообщения = НСтр("ru = 'Идентификатор ''%1'' не уникален!'; |en = 'Identifier ''%1'' is not unique!'"); - ТекстСообщения = пбп_СтроковыеФункцииСлужебныйКлиентСервер.ПодставитьПараметрыВСтроку( + ТекстСообщения = пбп_ПереадресацияКлиентСервер.ПодставитьПараметрыВСтроку( ТекстСообщения, Идентификатор); - пбп_ОбщегоНазначенияСлужебный.СообщитьПользователю(ТекстСообщения); + пбп_Переадресация.СообщитьПользователю(ТекстСообщения); КонецПроцедуры @@ -617,10 +616,10 @@ ТекстСообщения = НСтр("ru = 'Идентификатор ''%1'' не заполнен!'; |en = 'Identifier ''%1'' is not filled!'"); - ТекстСообщения = пбп_СтроковыеФункцииСлужебныйКлиентСервер.ПодставитьПараметрыВСтроку( + ТекстСообщения = пбп_ПереадресацияКлиентСервер.ПодставитьПараметрыВСтроку( ТекстСообщения, Наименование); - пбп_ОбщегоНазначенияСлужебный.СообщитьПользователю(ТекстСообщения); + пбп_Переадресация.СообщитьПользователю(ТекстСообщения); КонецПроцедуры diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Ext/Module.bsl" index b2b9cf27..607f4e6a 100644 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Ext/Module.bsl" +++ "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Ext/Module.bsl" @@ -22,7 +22,7 @@ Функция ИнициализироватьПредопределенныеЗначения(ИмяФормы) Экспорт - Менеджер = пбп_ОбщегоНазначенияСлужебный.МенеджерОбъектаПоПолномуИмени(ИмяФормы); + Менеджер = пбп_Переадресация.МенеджерОбъектаПоПолномуИмени(ИмяФормы); ТаблицаКонфликтныхЭлементов = пбп_ПредопределенныеЗначения.ИнициализироватьПредопределенныеЗначения(Менеджер); АдресТаблицы = ""; diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\237\320\265\321\200\320\265\320\276\320\277\321\200\320\265\320\264\320\265\320\273\321\217\320\265\320\274\321\213\320\271/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\237\320\265\321\200\320\265\320\276\320\277\321\200\320\265\320\264\320\265\320\273\321\217\320\265\320\274\321\213\320\271/Ext/Module.bsl" index 0e0db170..576b8951 100644 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\237\320\265\321\200\320\265\320\276\320\277\321\200\320\265\320\264\320\265\320\273\321\217\320\265\320\274\321\213\320\271/Ext/Module.bsl" +++ "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\237\320\265\321\200\320\265\320\276\320\277\321\200\320\265\320\264\320\265\320\273\321\217\320\265\320\274\321\213\320\271/Ext/Module.bsl" @@ -27,7 +27,7 @@ Параметры = Новый Массив; Параметры.Добавить(Таблица); - пбп_ОбщегоНазначенияСервер.ВыполнитьМетодКонфигурации(Выражение, Параметры); + пбп_Переадресация.ВыполнитьМетодКонфигурации(Выражение, Параметры); Возврат Параметры[0]; @@ -240,9 +240,9 @@ Параметры = Новый Массив; Параметры.Добавить(Менеджер); - ДопКолонки = пбп_ОбщегоНазначенияСлужебный.ВычислитьВБезопасномРежиме(Выражение); + ДопКолонки = пбп_Переадресация.ВычислитьВБезопасномРежиме(Выражение); - пбп_ОбщегоНазначенияСлужебныйКлиентСервер.ДополнитьСтруктуру(Колонки, ДопКолонки); + пбп_ПереадресацияКлиентСервер.ДополнитьСтруктуру(Колонки, ДопКолонки); Возврат Колонки; @@ -313,14 +313,17 @@ // Функция КолонкиНастройкиИнтеграции() Экспорт + ДлинаСтрокиПодключения = 200; + ДлинаИмениОбъекта = 100; + Колонки = Новый Структура; // Добавление Колонки.Вставить("ИнтегрируемаяСистема" , Новый ОписаниеТипов("СправочникСсылка.пбп_ИнтегрируемыеСистемы")); Колонки.Вставить("ТипИнтеграции" , Новый ОписаниеТипов("СправочникСсылка.пбп_ТипыИнтеграций")); - Колонки.Вставить("СтрокаПодключения" , пбп_ОбщегоНазначенияСервер.ОписаниеТипаСтрока(200)); + Колонки.Вставить("СтрокаПодключения" , пбп_Переадресация.ОписаниеТипаСтрока(ДлинаСтрокиПодключения)); Колонки.Вставить("ТипАвторизации" , Новый ОписаниеТипов("ПеречислениеСсылка.пбп_ТипыАвторизации")); - Колонки.Вставить("ИмяОбъекта" , пбп_ОбщегоНазначенияСервер.ОписаниеТипаСтрока(100)); + Колонки.Вставить("ИмяОбъекта" , пбп_Переадресация.ОписаниеТипаСтрока(ДлинаИмениОбъекта)); // КонецДобавления Возврат Колонки; diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202/Ext/Module.bsl" index 32bffb88..c3f768a6 100644 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202/Ext/Module.bsl" +++ "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\320\265\320\227\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202/Ext/Module.bsl" @@ -24,10 +24,10 @@ Процедура ПриПолученииСерверногоОповещения(ИмяОповещения, Результат) Экспорт Если ТипЗнч(Результат) = Тип("Структура") Тогда - Текст = пбп_СтроковыеФункцииСлужебныйКлиентСервер.ПодставитьПараметрыВСтроку( + Текст = пбп_ПереадресацияКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Существуют конфликты предопределенных элементов ''%1'''"), Результат.ПредставлениеОбъекта); - Пояснение = пбп_СтроковыеФункцииСлужебныйКлиентСервер.ПодставитьПараметрыВСтроку( + Пояснение = пбп_ПереадресацияКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Разрешить конфликты предопределенных элементов ''%1'''"), Результат.ПредставлениеОбъекта); diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\244\320\276\321\200\320\274\320\260\320\274\320\270/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\244\320\276\321\200\320\274\320\260\320\274\320\270/Ext/Module.bsl" index 7b16e0e5..d1345ff8 100644 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\244\320\276\321\200\320\274\320\260\320\274\320\270/Ext/Module.bsl" +++ "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\244\320\276\321\200\320\274\320\260\320\274\320\270/Ext/Module.bsl" @@ -55,14 +55,14 @@ // Создание типа "Таблица значений" Функция ОписаниеТипаТаблицаЗначений() Экспорт - Возврат Новый ОписаниеТипов(пбп_ОбщегоНазначенияСлужебныйКлиентСервер.ЗначениеВМассиве(Тип("ТаблицаЗначений"))); + Возврат Новый ОписаниеТипов(пбп_ПереадресацияКлиентСервер.ЗначениеВМассиве(Тип("ТаблицаЗначений"))); КонецФункции // Создание типа "Динамический список" Функция ОписаниеТипаДинамическийСписок() Экспорт - Возврат Новый ОписаниеТипов(пбп_ОбщегоНазначенияСлужебныйКлиентСервер.ЗначениеВМассиве(Тип("ДинамическийСписок"))); + Возврат Новый ОписаниеТипов(пбп_ПереадресацияКлиентСервер.ЗначениеВМассиве(Тип("ДинамическийСписок"))); КонецФункции @@ -1293,7 +1293,7 @@ // ИмяРеквизита - Строка - Имя удаляемого реквизита, ТОЛЬКО СОЗДАННЫЕ ПРОГРАММНО! Процедура УдалитьРеквизит(Форма, ИмяРеквизита) Экспорт - УдалитьРеквизиты(Форма, пбп_ОбщегоНазначенияСлужебныйКлиентСервер.ЗначениеВМассиве(ИмяРеквизита)); + УдалитьРеквизиты(Форма, пбп_ПереадресацияКлиентСервер.ЗначениеВМассиве(ИмяРеквизита)); КонецПроцедуры @@ -1317,7 +1317,7 @@ // ИмяРеквизита - Строка - Имя удаляемого элемента на форме, ТОЛЬКО СОЗДАННЫЕ ПРОГРАММНО! Процедура УдалитьЭлемент(Форма, ИмяЭлемента) Экспорт - УдалитьЭлементы(Форма, пбп_ОбщегоНазначенияСлужебныйКлиентСервер.ЗначениеВМассиве(ИмяЭлемента)); + УдалитьЭлементы(Форма, пбп_ПереадресацияКлиентСервер.ЗначениеВМассиве(ИмяЭлемента)); КонецПроцедуры diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217\320\241\320\265\321\200\320\262\320\265\321\200.xml" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217\320\241\320\265\321\200\320\262\320\265\321\200.xml" deleted file mode 100644 index da0e728c..00000000 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217\320\241\320\265\321\200\320\262\320\265\321\200.xml" +++ /dev/null @@ -1,23 +0,0 @@ - - - - - пбп_РегламентныеЗаданияСервер - - - ru - Регламентные задания сервер - - - - false - false - true - true - false - false - false - DontUse - - - \ No newline at end of file diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" deleted file mode 100644 index 371698e5..00000000 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" +++ /dev/null @@ -1,339 +0,0 @@ -// Библиотека проектных подсистем для упрощения разработки архитектуры на 1С: Предприятие 8, -// включая доработку типовых конфигураций. -// -// Copyright First BIT company -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// URL: https://github.com/firstBitSportivnaya/PSSL/ -// - -#Область ПрограммныйИнтерфейс - -#Область МетодыАналогиБСП - -// Аналог метода БСП. В локальном режиме работы возвращает регламентные задания, соответствующие отбору. -// В модели сервиса - таблицу значений, в которой содержится описание найденных заданий -// в справочнике ОчередьЗаданий. -// -// Параметры: -// Отбор - Структура - со свойствами: -// 1) Общие для любого режима работы: -// * УникальныйИдентификатор - УникальныйИдентификатор - идентификатор регламентного задания в локальном -// режиме работы или идентификатор ссылки задания очереди в модели сервиса. -// - Строка - строка уникального идентификатора регламентного задания в локальном -// режиме работы или идентификатор ссылки задания очереди в модели сервиса. -// - СправочникСсылка.ОчередьЗаданий - идентификатор задания -// очереди в модели сервиса. -// - СтрокаТаблицыЗначений из см. НайтиЗадания -// * Метаданные - ОбъектМетаданныхРегламентноеЗадание - метаданные регламентного задания. -// - Строка - имя метаданных регламентного задания. -// * Использование - Булево - если Истина, задание включено. -// * Ключ - Строка - прикладной идентификатор задания. -// 2) Возможные ключи только локального режима: -// * Наименование - Строка - наименование регламентного задания. -// * Предопределенное - Булево - если Истина, регламентное задание определено в метаданных. -// 3) Возможные ключи только для модели сервиса: -// * ИмяМетода - Строка - имя метода (или псевдоним) обработчика очереди задании. -// * ОбластьДанных - Число - значение разделителя области данных задания. -// * СостояниеЗадания - ПеречислениеСсылка.СостоянияЗаданий - состояние задания очереди. -// * Шаблон - СправочникСсылка.ШаблоныЗаданийОчереди - шаблон задания, используется только -// для разделенных заданий очереди. -// -// Возвращаемое значение: -// Массив из РегламентноеЗадание - в локальном режиме работы массив регламентных заданий. -// ТаблицаЗначений - в модели сервиса с колонками: -// * Использование - Булево - если Истина, задание включено. -// * Ключ - Строка - прикладной идентификатор задания. -// * Параметры - Массив - параметры, передаваемые в обработчик задания. -// * Расписание - РасписаниеРегламентногоЗадания - расписание задания. -// * УникальныйИдентификатор - СправочникСсылка.ОчередьЗаданий - идентификатор задания -// очереди в модели сервиса. -// * ЗапланированныйМоментЗапуска - Дата - дата и время запланированного запуска задания -// (в часовом поясе области данных). -// * ИмяМетода - Строка - имя метода (или псевдоним) обработчика очереди задании. -// * ОбластьДанных - Число - значение разделителя области данных задания. -// * СостояниеЗадания - ПеречислениеСсылка.СостоянияЗаданий - состояние задания очереди. -// * Шаблон - СправочникСсылка.ШаблоныЗаданийОчереди - шаблон задания, -// используется только для разделенных заданий очереди. -// * ЭксклюзивноеВыполнение - Булево - при установленном флаге задание будет выполнено -// даже при установленной блокировке начала сеансов в области -// данных. Так же если в области есть задания с таким флагом -// сначала будут выполнены они. -// * ИнтервалПовтораПриАварийномЗавершении - Число - интервал в секундах, через который нужно перезапускать -// задание в случае его аварийного завершения. -// * КоличествоПовторовПриАварийномЗавершении - Число - количество повторов при аварийном завершении задания. -// -Функция НайтиЗадания(Отбор) Экспорт - - СписокЗаданий = РегламентныеЗадания.ПолучитьРегламентныеЗадания(Отбор); - - Возврат СписокЗаданий; - -КонецФункции - -// Аналог метода БСП. Удаляет задание из очереди или регламентное. -// -// Параметры: -// Идентификатор - ОбъектМетаданных - объект метаданных регламентного задания для поиска -// непредопределенного регламентного задания. -// - Строка - имя метаданных предопределенного регламентного задания в любом режиме работы -// или строка уникального идентификатора регламентного задания в локальном режиме работы -// или строка уникального идентификатора ссылки задания очереди в модели сервиса. -// - УникальныйИдентификатор - идентификатор регламентного задания в локальном режиме работы. -// или идентификатор ссылки задания очереди в модели сервиса. -// - РегламентноеЗадание - регламентное задание, уникальный идентификатор которого используется -// для определения удаляемого экземпляра регламентного задания в локальном режиме работы. -// - СправочникСсылка.ОчередьЗаданий - идентификатор задания очереди в модели сервиса. -// - СтрокаТаблицыЗначений из см. НайтиЗадания -// -Процедура УдалитьЗадание(Знач Идентификатор) Экспорт - - Идентификатор = УточненныйИдентификаторЗадания(Идентификатор); - - УдалитьРегламентноеЗадание(Идентификатор); - -КонецПроцедуры - -// Аналог метода БСП. Добавляет новое задание в очередь или регламентное. -// -// Параметры: -// Параметры - Структура - параметры добавляемого задания, возможные свойства: -// * Использование - Булево - Истина, если регламентное задание должно выполняться автоматически согласно расписанию. -// * Метаданные - ОбъектМетаданныхРегламентноеЗадание - обязательно для указания. Объект метаданных, на основе -// которого будет создано регламентное задание. -// * Параметры - Массив - параметры регламентного задания. Количество и состав параметров должны соответствовать -// параметрам метода регламентного задания. -// * Ключ - Строка - прикладной идентификатор регламентного задания. -// * ИнтервалПовтораПриАварийномЗавершении - Число - интервал в секундах, через который нужно перезапускать задание -// в случае его аварийного завершения. -// * Расписание - РасписаниеРегламентногоЗадания - расписание задания. -// * КоличествоПовторовПриАварийномЗавершении - Число - количество повторов при аварийном завершении задания. -// -// Возвращаемое значение: -// РегламентноеЗадание - в локальном режиме работы. -// СтрокаТаблицыЗначений из см. НайтиЗадания -// -Функция ДобавитьЗадание(Параметры) Экспорт - - Задание = ДобавитьРегламентноеЗадание(Параметры); - - Возврат Задание; - -КонецФункции - -// Аналог метода БСП. Добавляет новое регламентное задание (без учета очереди заданий модели сервиса). -// -// Параметры: -// Параметры - Структура - параметры добавляемого задания, возможные свойства: -// * Использование - Булево - Истина, если регламентное задание должно выполняться автоматически согласно расписанию. -// * Метаданные - ОбъектМетаданныхРегламентноеЗадание - обязательно для указания. Объект метаданных, на основе -// которого будет создано регламентное задание. -// * Параметры - Массив - параметры регламентного задания. Количество и состав параметров должны соответствовать -// параметрам метода регламентного задания. -// * Ключ - Строка - прикладной идентификатор регламентного задания. -// * ИнтервалПовтораПриАварийномЗавершении - Число - интервал в секундах, через который нужно перезапускать задание -// в случае его аварийного завершения. -// * Расписание - РасписаниеРегламентногоЗадания - расписание задания. -// * КоличествоПовторовПриАварийномЗавершении - Число - количество повторов при аварийном завершении задания. -// -// Возвращаемое значение: -// РегламентноеЗадание -// -Функция ДобавитьРегламентноеЗадание(Параметры) Экспорт - - МетаданныеЗадания = Параметры.Метаданные; - Задание = РегламентныеЗадания.СоздатьРегламентноеЗадание(МетаданныеЗадания); - - Если Параметры.Свойство("Наименование") Тогда - Задание.Наименование = Параметры.Наименование; - Иначе - Задание.Наименование = МетаданныеЗадания.Наименование; - КонецЕсли; - - Если Параметры.Свойство("Использование") Тогда - Задание.Использование = Параметры.Использование; - Иначе - Задание.Использование = МетаданныеЗадания.Использование; - КонецЕсли; - - Если Параметры.Свойство("Ключ") Тогда - Задание.Ключ = Параметры.Ключ; - Иначе - Задание.Ключ = МетаданныеЗадания.Ключ; - КонецЕсли; - - Если Параметры.Свойство("ИмяПользователя") Тогда - Задание.ИмяПользователя = Параметры.ИмяПользователя; - КонецЕсли; - - Если Параметры.Свойство("ИнтервалПовтораПриАварийномЗавершении") Тогда - Задание.ИнтервалПовтораПриАварийномЗавершении = Параметры.ИнтервалПовтораПриАварийномЗавершении; - Иначе - Задание.ИнтервалПовтораПриАварийномЗавершении = МетаданныеЗадания.ИнтервалПовтораПриАварийномЗавершении; - КонецЕсли; - - Если Параметры.Свойство("КоличествоПовторовПриАварийномЗавершении") Тогда - Задание.КоличествоПовторовПриАварийномЗавершении = Параметры.КоличествоПовторовПриАварийномЗавершении; - Иначе - Задание.КоличествоПовторовПриАварийномЗавершении = МетаданныеЗадания.КоличествоПовторовПриАварийномЗавершении; - КонецЕсли; - - Если Параметры.Свойство("Параметры") Тогда - Задание.Параметры = Параметры.Параметры; - КонецЕсли; - - Если Параметры.Свойство("Расписание") Тогда - Задание.Расписание = Параметры.Расписание; - КонецЕсли; - - Задание.Записать(); - - Возврат Задание; - -КонецФункции - -#КонецОбласти - -#КонецОбласти - -#Область СлужебныеПроцедурыИФункции - -#Область МетодыАналогиБСП - -// Аналог метода БСП. -// -Функция УточненныйИдентификаторЗадания(Знач Идентификатор) - - Если ТипЗнч(Идентификатор) = Тип("РегламентноеЗадание") Тогда - Идентификатор = Идентификатор.УникальныйИдентификатор; - КонецЕсли; - - Если ТипЗнч(Идентификатор) = Тип("Строка") Тогда - ОбъектМетаданных = Метаданные.РегламентныеЗадания.Найти(Идентификатор); - Если ОбъектМетаданных = Неопределено Тогда - Идентификатор = Новый УникальныйИдентификатор(Идентификатор); - Иначе - Идентификатор = ОбъектМетаданных; - КонецЕсли; - КонецЕсли; - - Возврат Идентификатор; - -КонецФункции - -// Аналог метода БСП. Удаляет непредопределенное регламентное задание (без учета очереди заданий модели сервиса). -// -// Параметры: -// Идентификатор - ОбъектМетаданных - объект метаданных регламентного задания для поиска -// непредопределенного регламентного задания. -// - Строка - имя метаданных предопределенного регламентного задания -// или строка уникального идентификатора регламентного задания. -// - УникальныйИдентификатор - идентификатор регламентного задания. -// - РегламентноеЗадание - регламентное задание, уникальный идентификатор которого используется -// для определения удаляемого экземпляра регламентного задания. -// -Процедура УдалитьРегламентноеЗадание(Знач Идентификатор) Экспорт - - Идентификатор = УточненныйИдентификаторЗадания(Идентификатор); - - СписокЗаданий = Новый Массив; // Массив из РегламентноеЗадание. - - Если ТипЗнч(Идентификатор) = Тип("ОбъектМетаданных") Тогда - Отбор = Новый Структура("Метаданные, Предопределенное", Идентификатор, Ложь); - СписокЗаданий = РегламентныеЗадания.ПолучитьРегламентныеЗадания(Отбор); - Иначе - РегламентноеЗадание = РегламентныеЗадания.НайтиПоУникальномуИдентификатору(Идентификатор); - Если РегламентноеЗадание <> Неопределено Тогда - СписокЗаданий.Добавить(РегламентноеЗадание); - КонецЕсли; - КонецЕсли; - - Для Каждого РегламентноеЗадание Из СписокЗаданий Цикл - ИдентификаторЗадания = УникальныйИдентификаторЗадания(РегламентноеЗадание); - - Если пбп_ОбщегоНазначенияВызовСервера.СуществуетБиблиотекаСтандартныхПодсистем() Тогда - УдалитьРегламентноеЗаданиеСИспользованиемКэша(ИдентификаторЗадания); - Иначе - УдалитьРегламентноеЗаданиеБезКэша(ИдентификаторЗадания); - КонецЕсли; - КонецЦикла; - -КонецПроцедуры - -// Аналог метода БСП. -// -Функция УникальныйИдентификаторЗадания(Знач Идентификатор, ВРазделенномРежимеИдентификаторЗаданияОчереди = Ложь) - - Если ТипЗнч(Идентификатор) = Тип("УникальныйИдентификатор") Тогда - Возврат Идентификатор; - КонецЕсли; - - Если ТипЗнч(Идентификатор) = Тип("РегламентноеЗадание") Тогда - Возврат Идентификатор.УникальныйИдентификатор; - КонецЕсли; - - Если ТипЗнч(Идентификатор) = Тип("Строка") Тогда - Возврат Новый УникальныйИдентификатор(Идентификатор); - КонецЕсли; - - Если ТипЗнч(Идентификатор) = Тип("ОбъектМетаданных") И Идентификатор.Предопределенное Тогда - Возврат РегламентныеЗадания.НайтиПредопределенное(Идентификатор).УникальныйИдентификатор; - ИначеЕсли ТипЗнч(Идентификатор) = Тип("ОбъектМетаданных") И НЕ Идентификатор.Предопределенное Тогда - СписокЗаданий = РегламентныеЗадания.ПолучитьРегламентныеЗадания(Новый Структура("Метаданные", Идентификатор)); - Для каждого РегламентноеЗадание Из СписокЗаданий Цикл - Возврат РегламентноеЗадание.УникальныйИдентификатор; - КонецЦикла; - КонецЕсли; - - Возврат Неопределено; - -КонецФункции - -#КонецОбласти - -Процедура УдалитьРегламентноеЗаданиеСИспользованиемКэша(ИдентификаторЗадания) - - Блокировка = Новый БлокировкаДанных; - ЭлементБлокировки = Блокировка.Добавить("РегистрСведений.КэшПрограммныхИнтерфейсов"); - ЭлементБлокировки.УстановитьЗначение("Идентификатор", Строка(ИдентификаторЗадания)); - - НачатьТранзакцию(); - Попытка - Блокировка.Заблокировать(); - Задание = РегламентныеЗадания.НайтиПоУникальномуИдентификатору(ИдентификаторЗадания); - Если Задание <> Неопределено Тогда - Задание.Удалить(); - КонецЕсли; - ЗафиксироватьТранзакцию(); - Исключение - ОтменитьТранзакцию(); - ВызватьИсключение; - КонецПопытки; - -КонецПроцедуры - -Процедура УдалитьРегламентноеЗаданиеБезКэша(ИдентификаторЗадания) - - Попытка - Задание = РегламентныеЗадания.НайтиПоУникальномуИдентификатору(ИдентификаторЗадания); - Если Задание <> Неопределено Тогда - Задание.Удалить(); - КонецЕсли; - Исключение - ВызватьИсключение; - КонецПопытки; - -КонецПроцедуры - -#КонецОбласти \ No newline at end of file diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\241\320\265\321\200\320\262\320\265\321\200.xml" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\241\320\265\321\200\320\262\320\265\321\200.xml" deleted file mode 100644 index 9b2584d9..00000000 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\241\320\265\321\200\320\262\320\265\321\200.xml" +++ /dev/null @@ -1,23 +0,0 @@ - - - - - пбп_РегламентныеЗаданияСлужебныйСервер - - - ru - Регламентные задания служебный сервер - - - - false - false - true - true - false - false - false - DontUse - - - \ No newline at end of file diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" deleted file mode 100644 index 6687f9ba..00000000 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" +++ /dev/null @@ -1,61 +0,0 @@ -// Библиотека проектных подсистем для упрощения разработки архитектуры на 1С: Предприятие 8, -// включая доработку типовых конфигураций. -// -// Copyright First BIT company -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// URL: https://github.com/firstBitSportivnaya/PSSL/ -// - -#Область СлужебныйПрограммныйИнтерфейс - -#Область ПереадресацияМетодов - -// См. пбп_РегламентныеЗаданияСервер.НайтиЗадания. -Функция НайтиЗадания(Отбор) Экспорт - - Модуль = ПолучитьМодуль(); - Возврат Модуль.НайтиЗадания(Отбор); - -КонецФункции - -// См. пбп_РегламентныеЗаданияСервер.ДобавитьЗадание. -Функция ДобавитьЗадание(Параметры) Экспорт - - Модуль = ПолучитьМодуль(); - Возврат Модуль.ДобавитьЗадание(Параметры); - -КонецФункции - -// См. пбп_РегламентныеЗаданияСервер.УдалитьЗадание. -Процедура УдалитьЗадание(Знач Идентификатор) Экспорт - - Модуль = ПолучитьМодуль(); - Модуль.НайтиЗадания(Идентификатор); - -КонецПроцедуры - -#КонецОбласти - -#КонецОбласти - -#Область СлужебныеПроцедурыИФункции - -Функция ПолучитьМодуль() - Возврат пбп_ОбщегоНазначенияПовтИсп.ПереадресацияОбщегоМодуля( - "РегламентныеЗаданияСервер", - "пбп_РегламентныеЗаданияСервер"); -КонецФункции - -#КонецОбласти \ No newline at end of file diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\320\265\321\200\320\262\320\265\321\200\320\275\321\213\320\265\320\236\320\277\320\276\320\262\320\265\321\211\320\265\320\275\320\270\321\217.xml" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\320\265\321\200\320\262\320\265\321\200\320\275\321\213\320\265\320\236\320\277\320\276\320\262\320\265\321\211\320\265\320\275\320\270\321\217.xml" deleted file mode 100644 index 90556b6b..00000000 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\320\265\321\200\320\262\320\265\321\200\320\275\321\213\320\265\320\236\320\277\320\276\320\262\320\265\321\211\320\265\320\275\320\270\321\217.xml" +++ /dev/null @@ -1,23 +0,0 @@ - - - - - пбп_СерверныеОповещения - - - ru - Серверные оповещения (пбп) - - - - false - false - true - true - true - false - false - DontUse - - - \ No newline at end of file diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\320\265\321\200\320\262\320\265\321\200\320\275\321\213\320\265\320\236\320\277\320\276\320\262\320\265\321\211\320\265\320\275\320\270\321\217/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\320\265\321\200\320\262\320\265\321\200\320\275\321\213\320\265\320\236\320\277\320\276\320\262\320\265\321\211\320\265\320\275\320\270\321\217/Ext/Module.bsl" deleted file mode 100644 index d0674d66..00000000 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\320\265\321\200\320\262\320\265\321\200\320\275\321\213\320\265\320\236\320\277\320\276\320\262\320\265\321\211\320\265\320\275\320\270\321\217/Ext/Module.bsl" +++ /dev/null @@ -1,57 +0,0 @@ -// Библиотека проектных подсистем для упрощения разработки архитектуры на 1С: Предприятие 8, -// включая доработку типовых конфигураций. -// -// Copyright First BIT company -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// URL: https://github.com/firstBitSportivnaya/PSSL/ -// - -//////////////////////////////////////////////////////////////////////////////// -// серверные оповещения: аналог модуля БСП - -#Область ПрограммныйИнтерфейс - -#Область МетодыАналогиБСП - -// Аналог метода БСП. Добавляет серверное оповещение в очередь для доставки на клиент. -// Оповещение доставляется через систему взаимодействия, -// либо забирается в рамках общего серверного вызова. -// -// Параметры: -// ИмяОповещения - Строка - смотри НовоеСерверноеОповещение.Имя. -// -// Результат - Произвольный - произвольное сериализуемое значение, -// которое будет отправлено в составе оповещения на клиент -// (должны быть как можно меньшего размера, желательно не более 1 Кб). -// -// Адресаты - Неопределено - все пользователи (и соответственно все сеансы). -// Если указано незаполненное соответствие, тогда возврат. -// - Соответствие из КлючИЗначение: -// * Ключ - УникальныйИдентификатор - идентификатор пользователя ИБ. -// * Значение - Массив из см. СерверныеОповещения.КлючСеанса -// -// ОтправитьСразу - Булево - если Истина, попытаться сразу отправить сообщение -// через систему взаимодействия перед добавлением в очередь. -// Отправка сразу не допускается из обработчиков ПриОтправкеСерверногоОповещения. -// Следует учесть (особенно при вызове в транзакции), что неудачное обращение -// к системе взаимодействия может занимать (3-5 сек)*2, а удачное не менее (50 мс)*2. -// -Процедура ОтправитьСерверноеОповещение(ИмяОповещения, Результат, Адресаты, ОтправитьСразу = Ложь) Экспорт - -КонецПроцедуры - -#КонецОбласти - -#КонецОбласти \ No newline at end of file diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\320\265\321\200\320\262\320\265\321\200\320\275\321\213\320\265\320\236\320\277\320\276\320\262\320\265\321\211\320\265\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.xml" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\320\265\321\200\320\262\320\265\321\200\320\275\321\213\320\265\320\236\320\277\320\276\320\262\320\265\321\211\320\265\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.xml" deleted file mode 100644 index 8f91ab28..00000000 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\320\265\321\200\320\262\320\265\321\200\320\275\321\213\320\265\320\236\320\277\320\276\320\262\320\265\321\211\320\265\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.xml" +++ /dev/null @@ -1,23 +0,0 @@ - - - - - пбп_СерверныеОповещенияСлужебный - - - ru - Серверные оповещения служебный (пбп) - - - - false - false - true - true - true - false - false - DontUse - - - \ No newline at end of file diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\320\265\321\200\320\262\320\265\321\200\320\275\321\213\320\265\320\236\320\277\320\276\320\262\320\265\321\211\320\265\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\320\265\321\200\320\262\320\265\321\200\320\275\321\213\320\265\320\236\320\277\320\276\320\262\320\265\321\211\320\265\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Ext/Module.bsl" deleted file mode 100644 index 0a4d0b72..00000000 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\320\265\321\200\320\262\320\265\321\200\320\275\321\213\320\265\320\236\320\277\320\276\320\262\320\265\321\211\320\265\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Ext/Module.bsl" +++ /dev/null @@ -1,46 +0,0 @@ -// Библиотека проектных подсистем для упрощения разработки архитектуры на 1С: Предприятие 8, -// включая доработку типовых конфигураций. -// -// Copyright First BIT company -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// URL: https://github.com/firstBitSportivnaya/PSSL/ -// - -//////////////////////////////////////////////////////////////////////////////// -// серверные оповещения служебный: аналог модуля БСП - -#Область ПрограммныйИнтерфейс - -#Область ПереадресацияМетодов - -// См. пбп_СерверныеОповещения.ОтправитьСерверноеОповещение. -Процедура ОтправитьСерверноеОповещение(ИмяОповещения, Результат, Адресаты, ОтправитьСразу = Ложь) Экспорт - - Модуль = ПолучитьМодуль(); - Модуль.ОтправитьСерверноеОповещение(ИмяОповещения, Результат, Адресаты, ОтправитьСразу); - -КонецПроцедуры - -#КонецОбласти - -#КонецОбласти - -#Область СлужебныеПроцедурыИФункции - -Функция ПолучитьМодуль() - Возврат пбп_ОбщегоНазначенияПовтИсп.ПереадресацияОбщегоМодуля("СерверныеОповещения", "пбп_СерверныеОповещения"); -КонецФункции - -#КонецОбласти \ No newline at end of file diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\270\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\260\320\241\320\276\320\261\321\213\321\202\320\270\320\271/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\270\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\260\320\241\320\276\320\261\321\213\321\202\320\270\320\271/Ext/Module.bsl" index 46890954..6bb15fec 100644 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\270\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\260\320\241\320\276\320\261\321\213\321\202\320\270\320\271/Ext/Module.bsl" +++ "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\320\277\321\200\320\260\320\262\320\276\321\207\320\275\320\270\320\272\320\270\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\260\320\241\320\276\320\261\321\213\321\202\320\270\320\271/Ext/Module.bsl" @@ -44,7 +44,7 @@ ПараметрыМетода.Добавить(Источник); ПараметрыМетода.Добавить(ОбъектКопирования); - пбп_ОбщегоНазначенияСервер.ВыполнитьМетодКонфигурации(ИмяМетода, ПараметрыМетода); + пбп_Переадресация.ВыполнитьМетодКонфигурации(ИмяМетода, ПараметрыМетода); Источник = ПараметрыМетода[0]; @@ -81,7 +81,7 @@ ПараметрыМетода.Добавить(ТекстЗаполнения); ПараметрыМетода.Добавить(СтандартнаяОбработка); - пбп_ОбщегоНазначенияСервер.ВыполнитьМетодКонфигурации(ИмяМетода, ПараметрыМетода); + пбп_Переадресация.ВыполнитьМетодКонфигурации(ИмяМетода, ПараметрыМетода); Источник = ПараметрыМетода[0]; СтандартнаяОбработка = ПараметрыМетода[3]; @@ -115,7 +115,7 @@ ПараметрыМетода.Добавить(Источник); ПараметрыМетода.Добавить(Отказ); - пбп_ОбщегоНазначенияСервер.ВыполнитьМетодКонфигурации(ИмяМетода, ПараметрыМетода); + пбп_Переадресация.ВыполнитьМетодКонфигурации(ИмяМетода, ПараметрыМетода); Источник = ПараметрыМетода[0]; Если ПараметрыМетода[1] Тогда @@ -151,7 +151,7 @@ ПараметрыМетода.Добавить(Источник); ПараметрыМетода.Добавить(Отказ); - пбп_ОбщегоНазначенияСервер.ВыполнитьМетодКонфигурации(ИмяМетода, ПараметрыМетода); + пбп_Переадресация.ВыполнитьМетодКонфигурации(ИмяМетода, ПараметрыМетода); Если ПараметрыМетода[1] Тогда Отказ = Истина; @@ -189,7 +189,7 @@ ПараметрыМетода.Добавить(Отказ); ПараметрыМетода.Добавить(ПроверяемыеРеквизиты); - пбп_ОбщегоНазначенияСервер.ВыполнитьМетодКонфигурации(ИмяМетода, ПараметрыМетода); + пбп_Переадресация.ВыполнитьМетодКонфигурации(ИмяМетода, ПараметрыМетода); Если ПараметрыМетода[1] Тогда Отказ = Истина; diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213\320\232\320\273\320\270\320\265\320\275\321\202.xml" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213\320\232\320\273\320\270\320\265\320\275\321\202.xml" deleted file mode 100644 index 20817793..00000000 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213\320\232\320\273\320\270\320\265\320\275\321\202.xml" +++ /dev/null @@ -1,23 +0,0 @@ - - - - - пбп_СтандартныеПодсистемыКлиент - - - ru - Стандартные подсистемы клиент - - - - false - true - false - false - true - false - false - DontUse - - - \ No newline at end of file diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213\320\232\320\273\320\270\320\265\320\275\321\202/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213\320\232\320\273\320\270\320\265\320\275\321\202/Ext/Module.bsl" deleted file mode 100644 index e7ec1cdd..00000000 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213\320\232\320\273\320\270\320\265\320\275\321\202/Ext/Module.bsl" +++ /dev/null @@ -1,58 +0,0 @@ -// Библиотека проектных подсистем для упрощения разработки архитектуры на 1С: Предприятие 8, -// включая доработку типовых конфигураций. -// -// Copyright First BIT company -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// URL: https://github.com/firstBitSportivnaya/PSSL/ -// - -#Область ПрограммныйИнтерфейс - -#КонецОбласти - -#Область СлужебныйПрограммныйИнтерфейс - -#Область МетодыАналогиБСП - -// Аналог метода БСП. Разворачивает узлы указанного дерева на форме. -// -// Параметры: -// Форма - ФормаКлиентскогоПриложения - форма, на которой размещен элемент управления с деревом значений. -// ИмяЭлементаФормы - Строка - имя элемента с таблицей формы (деревом значений) и связанного с ней -// реквизита формы (должны совпадать). -// ИдентификаторСтрокиДерева - Произвольный - идентификатор строки дерева, которую требуется развернуть. -// Если указано "*", то будут развернуты все узлы верхнего уровня. -// Если указано Неопределено, то строки дерева развернуты не будут. -// Значение по умолчанию: "*". -// РазвернутьСПодчиненными - Булево - если Истина, то следует раскрыть также и все подчиненные узлы. -// По умолчанию Ложь. -// -Процедура РазвернутьУзлыДерева(Форма, ИмяЭлементаФормы, ИдентификаторСтрокиДерева = "*", РазвернутьСПодчиненными = Ложь) Экспорт - - ТаблицаЭлемент = Форма.Элементы[ИмяЭлементаФормы]; - Если ИдентификаторСтрокиДерева = "*" Тогда - Узлы = Форма[ИмяЭлементаФормы].ПолучитьЭлементы(); - Для Каждого Узел Из Узлы Цикл - ТаблицаЭлемент.Развернуть(Узел.ПолучитьИдентификатор(), РазвернутьСПодчиненными); - КонецЦикла; - Иначе - ТаблицаЭлемент.Развернуть(ИдентификаторСтрокиДерева, РазвернутьСПодчиненными); - КонецЕсли; - -КонецПроцедуры - -#КонецОбласти - -#КонецОбласти diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213\320\237\320\276\320\262\321\202\320\230\321\201\320\277.xml" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213\320\237\320\276\320\262\321\202\320\230\321\201\320\277.xml" deleted file mode 100644 index f7dcf277..00000000 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213\320\237\320\276\320\262\321\202\320\230\321\201\320\277.xml" +++ /dev/null @@ -1,23 +0,0 @@ - - - - - пбп_СтандартныеПодсистемыПовтИсп - - - ru - Стандартные подсистемы повт исп - - - - false - false - true - true - true - false - false - DuringSession - - - \ No newline at end of file diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202.xml" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202.xml" deleted file mode 100644 index fc34e38d..00000000 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202.xml" +++ /dev/null @@ -1,23 +0,0 @@ - - - - - пбп_СтандартныеПодсистемыСлужебныйКлиент - - - ru - Стандартные подсистемы служебный клиент - - - - false - true - false - false - true - false - false - DontUse - - - \ No newline at end of file diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202/Ext/Module.bsl" deleted file mode 100644 index 7b7bc688..00000000 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202/Ext/Module.bsl" +++ /dev/null @@ -1,47 +0,0 @@ -// Библиотека проектных подсистем для упрощения разработки архитектуры на 1С: Предприятие 8, -// включая доработку типовых конфигураций. -// -// Copyright First BIT company -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// URL: https://github.com/firstBitSportivnaya/PSSL/ -// - -#Область ПрограммныйИнтерфейс - -#КонецОбласти - -#Область СлужебныйПрограммныйИнтерфейс - -#Область ПереадресацияМетодов - -// См. пбп_СтандартныеПодсистемыКлиент.РазвернутьУзлыДерева. -Процедура РазвернутьУзлыДерева(Форма, ИмяЭлементаФормы, ИдентификаторСтрокиДерева = "*", РазвернутьСПодчиненными = Ложь) Экспорт - - Модуль = ПолучитьМодуль(); - Модуль.РазвернутьУзлыДерева(Форма, ИмяЭлементаФормы, ИдентификаторСтрокиДерева, РазвернутьСПодчиненными); - -КонецПроцедуры - -#КонецОбласти - -#КонецОбласти - -#Область СлужебныеПроцедурыИФункции - -Функция ПолучитьМодуль() - Возврат пбп_ОбщегоНазначенияКлиент.ОбщийМодуль("СтандартныеПодсистемыКлиент", "пбп_СтандартныеПодсистемыКлиент"); -КонецФункции - -#КонецОбласти \ No newline at end of file diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\237\320\276\320\262\321\202\320\230\321\201\320\277.xml" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\237\320\276\320\262\321\202\320\230\321\201\320\277.xml" deleted file mode 100644 index 1bc1a3ac..00000000 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\237\320\276\320\262\321\202\320\230\321\201\320\277.xml" +++ /dev/null @@ -1,23 +0,0 @@ - - - - - пбп_СтандартныеПодсистемыСлужебныйПовтИсп - - - ru - Стандартные подсистемы служебный повт исп - - - - false - false - true - true - false - false - false - DuringSession - - - \ No newline at end of file diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\237\320\276\320\262\321\202\320\230\321\201\320\277/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\237\320\276\320\262\321\202\320\230\321\201\320\277/Ext/Module.bsl" deleted file mode 100644 index 10aab2cf..00000000 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\237\320\276\320\262\321\202\320\230\321\201\320\277/Ext/Module.bsl" +++ /dev/null @@ -1,53 +0,0 @@ -// Библиотека проектных подсистем для упрощения разработки архитектуры на 1С: Предприятие 8, -// включая доработку типовых конфигураций. -// -// Copyright First BIT company -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// URL: https://github.com/firstBitSportivnaya/PSSL/ -// - -#Область СлужебныйПрограммныйИнтерфейс - -#Область ПереадресацияМетодов - -// См. пбп_СтандартныеПодсистемыПовтИсп.ОписаниеТипаВсеСсылки. -Функция ОписаниеТипаВсеСсылки() Экспорт - - Модуль = ПолучитьМодуль(); - Возврат Модуль.ОписаниеТипаВсеСсылки(); - -КонецФункции - -// См. пбп_СтандартныеПодсистемыПовтИсп.ИменаПодсистем. -Функция ИменаПодсистем() Экспорт - - Модуль = ПолучитьМодуль(); - Возврат Модуль.ИменаПодсистем(); - -КонецФункции - -#КонецОбласти - -#КонецОбласти - -#Область СлужебныеПроцедурыИФункции - -Функция ПолучитьМодуль() - Возврат пбп_ОбщегоНазначенияПовтИсп.ПереадресацияОбщегоМодуля( - "СтандартныеПодсистемыПовтИсп", - "пбп_СтандартныеПодсистемыПовтИсп"); -КонецФункции - -#КонецОбласти diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" index 940012a3..138cb5e4 100644 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" +++ "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" @@ -115,187 +115,6 @@ КонецФункции -#Область МетодыАналогиБСП - -// Аналог метода БСП. Разбивает строку на несколько строк по указанному разделителю. Разделитель может иметь любую длину. -// В случаях, когда разделителем является строка из одного символа, и не используется параметр СокращатьНепечатаемыеСимволы, -// рекомендуется использовать функцию платформы СтрРазделить. -// -// Параметры: -// Значение - Строка - текст с разделителями. -// Разделитель - Строка - разделитель строк текста, минимум 1 символ. -// ПропускатьПустыеСтроки - Булево - признак необходимости включения в результат пустых строк. -// Если параметр не задан, то функция работает в режиме совместимости со своей предыдущей версией: -// > для разделителя-пробела пустые строки не включаются в результат, для остальных разделителей пустые строки -// включаются в результат; -// > если параметр Строка не содержит значащих символов или не содержит ни одного символа (пустая строка), то в -// случае разделителя-пробела результатом функции будет массив, содержащий одно значение "" (пустая строка), а -// при других разделителях результатом функции будет пустой массив. -// СокращатьНепечатаемыеСимволы - Булево - сокращать непечатаемые символы по краям каждой из найденных подстрок. -// -// Возвращаемое значение: -// Массив из Строка -// -// Пример: -// СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(",один,,два,", ",") -// - возвратит массив из 5 элементов, три из которых - пустые: "", "один", "", "два", ""; -// СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(",один,,два,", ",", Истина) -// - возвратит массив из двух элементов: "один", "два"; -// СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(" один два ", " ") -// - возвратит массив из двух элементов: "один", "два"; -// СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок("") -// - возвратит пустой массив; -// СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок("",,Ложь) -// - возвратит массив с одним элементом: ""(пустая строка); -// СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок("", " ") -// - возвратит массив с одним элементом: "" (пустая строка). -// -Функция РазложитьСтрокуВМассивПодстрок(Знач Значение, Знач Разделитель = ",", Знач ПропускатьПустыеСтроки = Неопределено, - СокращатьНепечатаемыеСимволы = Ложь) Экспорт - - Если СтрДлина(Разделитель) = 1 - И ПропускатьПустыеСтроки = Неопределено - И СокращатьНепечатаемыеСимволы Тогда - - Результат = СтрРазделить(Значение, Разделитель, Ложь); - Для Индекс = 0 По Результат.ВГраница() Цикл - Результат[Индекс] = СокрЛП(Результат[Индекс]) - КонецЦикла; - Возврат Результат; - - КонецЕсли; - - Результат = Новый Массив; - - // Для обеспечения обратной совместимости. - Если ПропускатьПустыеСтроки = Неопределено Тогда - ПропускатьПустыеСтроки = ?(Разделитель = " ", Истина, Ложь); - Если ПустаяСтрока(Значение) Тогда - Если Разделитель = " " Тогда - Результат.Добавить(""); - КонецЕсли; - Возврат Результат; - КонецЕсли; - КонецЕсли; - // - - Позиция = СтрНайти(Значение, Разделитель); - Пока Позиция > 0 Цикл - Подстрока = Лев(Значение, Позиция - 1); - Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Подстрока) Тогда - Если СокращатьНепечатаемыеСимволы Тогда - Результат.Добавить(СокрЛП(Подстрока)); - Иначе - Результат.Добавить(Подстрока); - КонецЕсли; - КонецЕсли; - Значение = Сред(Значение, Позиция + СтрДлина(Разделитель)); - Позиция = СтрНайти(Значение, Разделитель); - КонецЦикла; - - Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Значение) Тогда - Если СокращатьНепечатаемыеСимволы Тогда - Результат.Добавить(СокрЛП(Значение)); - Иначе - Результат.Добавить(Значение); - КонецЕсли; - КонецЕсли; - - Возврат Результат; - -КонецФункции - -// Аналог метода БСП. Подставляет параметры в строку. Максимально возможное число параметров - 9. -// Параметры в строке задаются как %<номер параметра>. Нумерация параметров начинается с единицы. -// -// Параметры: -// ШаблонСтроки - Строка - шаблон строки с параметрами (вхождениями вида "%<номер параметра>", -// например "%1 пошел в %2"); -// Параметр1 - Строка - значение подставляемого параметра. -// Параметр2 - Строка -// Параметр3 - Строка -// Параметр4 - Строка -// Параметр5 - Строка -// Параметр6 - Строка -// Параметр7 - Строка -// Параметр8 - Строка -// Параметр9 - Строка -// -// Возвращаемое значение: -// Строка - текстовая строка с подставленными параметрами. -// -// Пример: -// СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='%1 пошел в %2'"), "Вася", "Зоопарк") = "Вася пошел -// в Зоопарк". -// -Функция ПодставитьПараметрыВСтроку(Знач ШаблонСтроки, - Знач Параметр1, Знач Параметр2 = Неопределено, Знач Параметр3 = Неопределено, - Знач Параметр4 = Неопределено, Знач Параметр5 = Неопределено, Знач Параметр6 = Неопределено, - Знач Параметр7 = Неопределено, Знач Параметр8 = Неопределено, Знач Параметр9 = Неопределено) Экспорт - - ЕстьПараметрыСПроцентом = СтрНайти(Параметр1, "%") - Или СтрНайти(Параметр2, "%") - Или СтрНайти(Параметр3, "%") - Или СтрНайти(Параметр4, "%") - Или СтрНайти(Параметр5, "%") - Или СтрНайти(Параметр6, "%") - Или СтрНайти(Параметр7, "%") - Или СтрНайти(Параметр8, "%") - Или СтрНайти(Параметр9, "%"); - - Если ЕстьПараметрыСПроцентом Тогда - //Возврат ПодставитьПараметрыСПроцентом(ШаблонСтроки, Параметр1, - // Параметр2, Параметр3, Параметр4, Параметр5, Параметр6, Параметр7, Параметр8, Параметр9); - КонецЕсли; - - ШаблонСтроки = СтрЗаменить(ШаблонСтроки, "%1", Параметр1); - ШаблонСтроки = СтрЗаменить(ШаблонСтроки, "%2", Параметр2); - ШаблонСтроки = СтрЗаменить(ШаблонСтроки, "%3", Параметр3); - ШаблонСтроки = СтрЗаменить(ШаблонСтроки, "%4", Параметр4); - ШаблонСтроки = СтрЗаменить(ШаблонСтроки, "%5", Параметр5); - ШаблонСтроки = СтрЗаменить(ШаблонСтроки, "%6", Параметр6); - ШаблонСтроки = СтрЗаменить(ШаблонСтроки, "%7", Параметр7); - ШаблонСтроки = СтрЗаменить(ШаблонСтроки, "%8", Параметр8); - ШаблонСтроки = СтрЗаменить(ШаблонСтроки, "%9", Параметр9); - Возврат ШаблонСтроки; - -КонецФункции - -// Аналог метода БСП. Преобразует исходную строку в число без вызова исключений. -// -// Параметры: -// Значение - Строка - строка, которую необходимо привести к числу. -// Например, "10", "+10", "010", вернет 10; -// "(10)", "-10",вернет -10; -// "10,2", "10.2",вернет 10.2; -// "000", " ", "",вернет 0; -// "10текст", вернет Неопределено. -// -// Возвращаемое значение: -// Число, Неопределено - полученное число, либо Неопределено, если строка не является числом. -// -Функция СтрокаВЧисло(Знач Значение) Экспорт - - Значение = СтрЗаменить(Значение, " ", ""); - Если СтрНачинаетсяС(Значение, "(") Тогда - Значение = СтрЗаменить(Значение, "(", "-"); - Значение = СтрЗаменить(Значение, ")", ""); - КонецЕсли; - - СтрокаБезНулей = СтрЗаменить(Значение, "0", ""); - Если ПустаяСтрока(СтрокаБезНулей) Или СтрокаБезНулей = "-" Тогда - Возврат 0; - КонецЕсли; - - ТипЧисло = Новый ОписаниеТипов("Число"); - Результат = ТипЧисло.ПривестиЗначение(Значение); - - Возврат ?(Результат <> 0 И Не ПустаяСтрока(СтрокаБезНулей), Результат, Неопределено); - -КонецФункции - -#КонецОбласти - // Превращает строку camelCase в синоним // // Параметры: @@ -306,7 +125,7 @@ // Функция СинонимСтроки(ИсходнаяСтрока) Экспорт - Результат = пбп_СтроковыеФункцииСлужебныйКлиентСервер.РазложитьСтрокуВМассивПодстрок(ИсходнаяСтрока); + Результат = пбп_ПереадресацияКлиентСервер.РазложитьСтрокуВМассивПодстрок(ИсходнаяСтрока); Если Результат.Количество() > 1 Тогда Возврат ""; КонецЕсли; diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.xml" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.xml" deleted file mode 100644 index 8c55e286..00000000 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.xml" +++ /dev/null @@ -1,23 +0,0 @@ - - - - - пбп_СтроковыеФункцииСлужебныйКлиентСервер - - - ru - Строковые функции служебный клиент сервер - - - - false - true - true - true - false - false - false - DontUse - - - \ No newline at end of file diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" deleted file mode 100644 index e5d032ef..00000000 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" +++ /dev/null @@ -1,70 +0,0 @@ -// Библиотека проектных подсистем для упрощения разработки архитектуры на 1С: Предприятие 8, -// включая доработку типовых конфигураций. -// -// Copyright First BIT company -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// URL: https://github.com/firstBitSportivnaya/PSSL/ -// - -//////////////////////////////////////////////////////////////////////////////// -// Строковые функции клиент сервер служебный: Аналог общего модуля БСП - -#Область СлужебныйПрограммныйИнтерфейс - -#Область ПереадресацияМетодов - -// См. пбп_СтроковыеФункцииСлужебныйКлиентСервер.РазложитьСтрокуВМассивПодстрок. -Функция РазложитьСтрокуВМассивПодстрок(Знач Значение, Знач Разделитель = ",", Знач ПропускатьПустыеСтроки = Неопределено, - СокращатьНепечатаемыеСимволы = Ложь) Экспорт - - Модуль = ПолучитьМодуль(); - Возврат Модуль.РазложитьСтрокуВМассивПодстрок(Значение, Разделитель, ПропускатьПустыеСтроки, - СокращатьНепечатаемыеСимволы); - -КонецФункции - -// См. пбп_СтроковыеФункцииСлужебныйКлиентСервер.ПодставитьПараметрыВСтроку. -Функция ПодставитьПараметрыВСтроку(Знач ШаблонСтроки, - Знач Параметр1, Знач Параметр2 = Неопределено, Знач Параметр3 = Неопределено, - Знач Параметр4 = Неопределено, Знач Параметр5 = Неопределено, Знач Параметр6 = Неопределено, - Знач Параметр7 = Неопределено, Знач Параметр8 = Неопределено, Знач Параметр9 = Неопределено) Экспорт - - Модуль = ПолучитьМодуль(); - Возврат Модуль.ПодставитьПараметрыВСтроку(ШаблонСтроки, Параметр1, Параметр2, Параметр3, Параметр4 , Параметр5, - Параметр6, Параметр7, Параметр8, Параметр9); - -КонецФункции - -#КонецОбласти - -#КонецОбласти - -#Область СлужебныеПроцедурыИФункции - -Функция ПолучитьМодуль() - - #Если Клиент Тогда - Возврат пбп_ОбщегоНазначенияКлиент.ОбщийМодуль( - "СтроковыеФункцииКлиентСервер", - "пбп_СтроковыеФункцииКлиентСервер"); - #Иначе - Возврат пбп_ОбщегоНазначенияВызовСервера.ПереадресацияОбщегоМодуля( - "СтроковыеФункцииКлиентСервер", - "пбп_СтроковыеФункцииКлиентСервер"); - #КонецЕсли - -КонецФункции - -#КонецОбласти \ No newline at end of file diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\321\205\320\265\320\274\321\213\320\227\320\260\320\277\321\200\320\276\321\201\320\276\320\262/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\321\205\320\265\320\274\321\213\320\227\320\260\320\277\321\200\320\276\321\201\320\276\320\262/Ext/Module.bsl" index 94b0bb6c..d6a38932 100644 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\321\205\320\265\320\274\321\213\320\227\320\260\320\277\321\200\320\276\321\201\320\276\320\262/Ext/Module.bsl" +++ "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\321\205\320\265\320\274\321\213\320\227\320\260\320\277\321\200\320\276\321\201\320\276\320\262/Ext/Module.bsl" @@ -757,7 +757,7 @@ Если ТипЗнч(ДоступныеПоля) = Тип("Строка") Тогда Описание.Вставить( "ДоступныеПоля", - пбп_СтроковыеФункцииСлужебныйКлиентСервер.РазложитьСтрокуВМассивПодстрок( + пбп_ПереадресацияКлиентСервер.РазложитьСтрокуВМассивПодстрок( ДоступныеПоля, ",", Истина, Истина)); Иначе Описание.Вставить("ДоступныеПоля", ДоступныеПоля); diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\244\320\260\320\271\320\273\320\276\320\262\320\260\321\217\320\241\320\270\321\201\321\202\320\265\320\274\320\260.xml" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\244\320\260\320\271\320\273\320\276\320\262\320\260\321\217\320\241\320\270\321\201\321\202\320\265\320\274\320\260.xml" deleted file mode 100644 index 4759a1e9..00000000 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\244\320\260\320\271\320\273\320\276\320\262\320\260\321\217\320\241\320\270\321\201\321\202\320\265\320\274\320\260.xml" +++ /dev/null @@ -1,23 +0,0 @@ - - - - - пбп_ФайловаяСистема - - - ru - Файловая система - - - - false - false - true - true - true - false - false - DontUse - - - \ No newline at end of file diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\244\320\260\320\271\320\273\320\276\320\262\320\260\321\217\320\241\320\270\321\201\321\202\320\265\320\274\320\260/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\244\320\260\320\271\320\273\320\276\320\262\320\260\321\217\320\241\320\270\321\201\321\202\320\265\320\274\320\260/Ext/Module.bsl" deleted file mode 100644 index 99da6443..00000000 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\244\320\260\320\271\320\273\320\276\320\262\320\260\321\217\320\241\320\270\321\201\321\202\320\265\320\274\320\260/Ext/Module.bsl" +++ /dev/null @@ -1,355 +0,0 @@ -// Библиотека проектных подсистем для упрощения разработки архитектуры на 1С: Предприятие 8, -// включая доработку типовых конфигураций. -// -// Copyright First BIT company -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// URL: https://github.com/firstBitSportivnaya/PSSL/ -// - -//////////////////////////////////////////////////////////////////////////////// -// Файловая система: аналог модуля БСП - -#Область ПрограммныйИнтерфейс - -#Область МетодыАналогиБСП - -// Аналог метода БСП. Удаляет временный файл. -// -// Выбрасывает исключение, если передано имя не временного файла. -// -// Если временный файл не может быть удален (например, он занят каким-то процессом), -// то в журнал регистрации записывается соответствующее предупреждение, а процедура завершается. -// -// Для совместного использования с методом ПолучитьИмяВременногоФайла, -// после окончания работы с временным файлом. -// -// Параметры: -// Путь - Строка - полный путь к временному файлу. -// -Процедура УдалитьВременныйФайл(Знач Путь) Экспорт - - Если НЕ ЭтоИмяВременногоФайла(Путь) Тогда - ВызватьИсключение пбп_СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Неверное значение параметра %1 в %2: - |Файл не является временным ""%3"".'"), - "Путь", "ФайловаяСистема.УдалитьВременныйФайл", Путь); - КонецЕсли; - - УдалитьВременныеФайлы(Путь); - -КонецПроцедуры - -#Область ЗапускВнешнихПриложений - -//////////////////////////////////////////////////////////////////////////////// -// Процедуры и функции для работы с внешними приложениями. - -// Аналог метода БСП. Конструктор параметров для ФайловаяСистема.ЗапуститьПрограмму. -// -// Возвращаемое значение: -// Структура: -// * ТекущийКаталог - Строка - задает текущий каталог запускаемого приложения. -// * ДождатьсяЗавершения - Булево - Ложь - дожидаться завершения запущенного приложения -// перед продолжением работы. -// * ПолучитьПотокВывода - Булево - Ложь - результат, направленный в поток stdout, -// если не указан ДождатьсяЗавершения - игнорируется. -// * ПолучитьПотокОшибок - Булево - Ложь - ошибки, направленные в поток stderr, -// если не указан ДождатьсяЗавершения - игнорируется. -// * КодировкаПотоков - КодировкаТекста -// - Строка - кодировка, используемая для чтения stdout и stderr. -// По умолчанию используется для Windows "CP866", для остальных - "UTF-8". -// * КодировкаИсполнения - Строка -// - Число - кодировка, устанавливаемая в Windows с помощью команды chcp, -// возможные значения: "OEM", "CP866", "UTF8" или номер кодовой страницы. -// В Linux устанавливается переменной окружения "LANGUAGE" для конкретной команды, -// возможные значения можно определить выполнив команду "locale -a", например "ru_RU.UTF-8". -// В MacOS игнорируется. -// -Функция ПараметрыЗапускаПрограммы() Экспорт - - Параметры = Новый Структура; - Параметры.Вставить("ТекущийКаталог", ""); - Параметры.Вставить("ДождатьсяЗавершения", Ложь); - Параметры.Вставить("ПолучитьПотокВывода", Ложь); - Параметры.Вставить("ПолучитьПотокОшибок", Ложь); - Параметры.Вставить("КодировкаПотоков", Неопределено); - Параметры.Вставить("КодировкаИсполнения", Неопределено); - - Возврат Параметры; - -КонецФункции - -// Запускает внешнюю программу на исполнение (например, *.exe, *bat), -// или системную команду (например, ping, tracert или traceroute, обращаться к rac-клиенту), -// Позволяет также получать код возврата и значения потоков вывода (stdout) и ошибок (stderr) -// -// При запуске внешней программы в пакетном режиме поток вывода и поток ошибок может возвращаться на не ожидаемом языке. -// Для того чтобы передать внешней программе язык, на котором ожидается результат следует: -// - указать язык в параметре запуска этой программы (если такой параметр предусмотрен). -// Например, в пакетном режиме платформы 1С:Предприятие предусмотрен ключ "/L en"; -// - в других случаях явно установить кодировку исполнения пакетной команды. -// См. свойство КодировкаИсполнения возвращаемого значения ФайловаяСистема.ПараметрыЗапускаПрограммы. -// -// Параметры: -// КомандаЗапуска - Строка - командная строка для запуска программы. -// - Массив - первый элемент массива, путь к исполняемому приложению, -// остальные элементы массива - это передаваемые параметры, -// массив соответствует тому, который получит вызываемая программа в argv. -// ПараметрыЗапускаПрограммы - см. ФайловаяСистема.ПараметрыЗапускаПрограммы -// -// Возвращаемое значение: -// Структура: -// * КодВозврата - Число - код возврата программы; -// * ПотокВывода - Строка - результат работы программы, направленный в поток stdout; -// * ПотокОшибок - Строка - ошибки исполнения программы, направленные в поток stderr. -// -// Пример: -// // Простой запуск -// ФайловаяСистема.ЗапуститьПрограмму("calc"); -// -// // Запуск с ожиданием завершения -// ПараметрыЗапускаПрограммы = ФайловаяСистема.ПараметрыЗапускаПрограммы(); -// ПараметрыЗапускаПрограммы.ДождатьсяЗавершения = Истина; -// ФайловаяСистема.ЗапуститьПрограмму("C:\Program Files\1cv8\common\1cestart.exe", -// ПараметрыЗапускаПрограммы); -// -// // Запуск с ожиданием завершения и получением потока вывода -// ПараметрыЗапускаПрограммы = ФайловаяСистема.ПараметрыЗапускаПрограммы(); -// ПараметрыЗапускаПрограммы.ДождатьсяЗавершения = Истина; -// ПараметрыЗапускаПрограммы.ПолучитьПотокВывода = Истина; -// Результат = ФайловаяСистема("ping 127.0.0.1 -n 5", ПараметрыЗапускаПрограммы); -// ОбщегоНазначений.СообщитьПользователю(Результат.ПотокВывода); -// -// // Запуск с ожиданием завершения и получением потока вывода и с конкатенацией команды запуска -// ПараметрыЗапускаПрограммы = ФайловаяСистема.ПараметрыЗапускаПрограммы(); -// ПараметрыЗапускаПрограммы.ДождатьсяЗавершения = Истина; -// ПараметрыЗапускаПрограммы.ПолучитьПотокВывода = Истина; -// КомандаЗапуска = Новый Массив; -// КомандаЗапуска.Добавить("ping"); -// КомандаЗапуска.Добавить("127.0.0.1"); -// КомандаЗапуска.Добавить("-n"); -// КомандаЗапуска.Добавить(5); -// Результат = ФайловаяСистема.ЗапуститьПрограмму(КомандаЗапуска, ПараметрыЗапускаПрограммы); -// ОбщегоНазначений.СообщитьПользователю(Результат.ПотокВывода); -// -Функция ЗапуститьПрограмму(Знач КомандаЗапуска, ПараметрыЗапускаПрограммы = Неопределено) Экспорт - - // АПК:534-выкл методы безопасного запуска обеспечиваются этой функцией - - СтрокаКоманды = пбп_ОбщегоНазначенияСлужебныйКлиентСервер.БезопаснаяСтрокаКоманды(КомандаЗапуска); - - Если ПараметрыЗапускаПрограммы = Неопределено Тогда - ПараметрыЗапускаПрограммы = ПараметрыЗапускаПрограммы(); - КонецЕсли; - - ТекущийКаталог = ПараметрыЗапускаПрограммы.ТекущийКаталог; - ДождатьсяЗавершения = ПараметрыЗапускаПрограммы.ДождатьсяЗавершения; - ПолучитьПотокВывода = ПараметрыЗапускаПрограммы.ПолучитьПотокВывода; - ПолучитьПотокОшибок = ПараметрыЗапускаПрограммы.ПолучитьПотокОшибок; - КодировкаПотоков = ПараметрыЗапускаПрограммы.КодировкаПотоков; - КодировкаИсполнения = ПараметрыЗапускаПрограммы.КодировкаИсполнения; - - ПроверитьТекущийКаталог(СтрокаКоманды, ТекущийКаталог); - - Если ДождатьсяЗавершения Тогда - Если ПолучитьПотокВывода Тогда - // BSLLS:MissingTemporaryFileDeletion-off - ИмяФайлаПотокаВывода = ПолучитьИмяВременногоФайла("stdout.tmp"); - // BSLLS:MissingTemporaryFileDeletion-on - СтрокаКоманды = СтрокаКоманды + " > """ + ИмяФайлаПотокаВывода + """"; - КонецЕсли; - - Если ПолучитьПотокОшибок Тогда - // BSLLS:MissingTemporaryFileDeletion-off - ИмяФайлаПотокаОшибок = ПолучитьИмяВременногоФайла("stderr.tmp"); - // BSLLS:MissingTemporaryFileDeletion-on - СтрокаКоманды = СтрокаКоманды + " 2>""" + ИмяФайлаПотокаОшибок + """"; - КонецЕсли; - КонецЕсли; - - Если КодировкаПотоков = Неопределено Тогда - КодировкаПотоков = КодировкаСтандартныхПотоков(); - КонецЕсли; - - // Для cmd не всегда активна текущая кодовая страница, поэтому всегда задаем по-умолчанию. - Если КодировкаИсполнения = Неопределено И пбп_ОбщегоНазначенияСлужебный.ЭтоWindowsСервер() Тогда - КодировкаИсполнения = "CP866"; - КонецЕсли; - - КодВозврата = Неопределено; - - Если пбп_ОбщегоНазначенияСлужебный.ЭтоWindowsСервер() Тогда - - СтрокаКоманды = пбп_ОбщегоНазначенияСлужебныйКлиентСервер.СтрокаЗапускаКомандыWindows( - СтрокаКоманды, ТекущийКаталог, ДождатьсяЗавершения, КодировкаИсполнения); - - Если пбп_ОбщегоНазначенияСлужебный.ИнформационнаяБазаФайловая() Тогда - // В файловой информационной базе показывать окно консоли не следует и в серверном контексте. - Оболочка = Новый COMОбъект("Wscript.Shell"); - КодВозврата = Оболочка.Run(СтрокаКоманды, 0, ДождатьсяЗавершения); - Оболочка = Неопределено; - Иначе - // BSLLS:ExternalAppStarting-off - ЗапуститьПриложение(СтрокаКоманды, , ДождатьсяЗавершения, КодВозврата); - // BSLLS:ExternalAppStarting-on - КонецЕсли; - - Иначе - - Если пбп_ОбщегоНазначенияСлужебный.ЭтоLinuxСервер() И ЗначениеЗаполнено(КодировкаИсполнения) Тогда - СтрокаКоманды = "LANGUAGE=" + КодировкаИсполнения + " " + СтрокаКоманды; - КонецЕсли; - - // BSLLS:ExternalAppStarting-off - ЗапуститьПриложение(СтрокаКоманды, ТекущийКаталог, ДождатьсяЗавершения, КодВозврата); - // BSLLS:ExternalAppStarting-on - КонецЕсли; - - ПотокВывода = ""; - ПотокОшибок = ""; - - Если ДождатьсяЗавершения Тогда - Если ПолучитьПотокВывода Тогда - ПотокВывода = ПрочитатьФайлЕслиСуществует(ИмяФайлаПотокаВывода, КодировкаПотоков); - УдалитьВременныйФайл(ИмяФайлаПотокаВывода); - КонецЕсли; - - Если ПолучитьПотокОшибок Тогда - ПотокОшибок = ПрочитатьФайлЕслиСуществует(ИмяФайлаПотокаОшибок, КодировкаПотоков); - УдалитьВременныйФайл(ИмяФайлаПотокаОшибок); - КонецЕсли; - КонецЕсли; - - Результат = Новый Структура; - Результат.Вставить("КодВозврата", КодВозврата); - Результат.Вставить("ПотокВывода", ПотокВывода); - Результат.Вставить("ПотокОшибок", ПотокОшибок); - - Возврат Результат; - - // АПК:534-вкл - -КонецФункции - -#КонецОбласти - -#КонецОбласти // МетодыАналогиБСП - -#КонецОбласти - -#Область СлужебныеПроцедурыИФункции - -// Аналог метода БСП. -Процедура УдалитьВременныеФайлы(Знач Путь) - - Попытка - УдалитьФайлы(Путь); - Исключение - пбп_ЖурналРегистрацииСлужебный.ДобавитьСообщениеДляЖурналаРегистрации( - НСтр("ru = 'Стандартные подсистемы'", пбп_ОбщегоНазначенияСервер.КодОсновногоЯзыка()), - УровеньЖурналаРегистрации.Ошибка, , , - пбп_СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Не удалось удалить временный файл ""%1"" по причине: - |%2'"), - Путь, - ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()))); - КонецПопытки; - -КонецПроцедуры - -// Аналог метода БСП. -Функция ЭтоИмяВременногоФайла(Путь) - - // Ожидается, что Путь получен методом ПолучитьИмяВременногоФайла(). - // Перед проверкой разворачиваем слэши в одну сторону. - Возврат СтрНачинаетсяС(СтрЗаменить(Путь, "/", "\"), СтрЗаменить(КаталогВременныхФайлов(), "/", "\")); - -КонецФункции - -#Область ЗапуститьПрограмму - -// Аналог метода БСП. -Процедура ПроверитьТекущийКаталог(СтрокаКоманды, ТекущийКаталог) - - Если Не ПустаяСтрока(ТекущийКаталог) Тогда - - ФайлИнфо = Новый Файл(ТекущийКаталог); - - Если Не ФайлИнфо.Существует() Тогда - ВызватьИсключение пбп_СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Не удалось запустить программу - |%1 - |по причине: - |Не существует каталог %2 - |%3'"), - СтрокаКоманды, "ТекущийКаталог", ТекущийКаталог); - КонецЕсли; - - Если Не ФайлИнфо.ЭтоКаталог() Тогда - ВызватьИсключение пбп_СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Не удалось запустить программу - |%1 - |по причине: - |%2 не является каталогом - |%3'"), - СтрокаКоманды, "ТекущийКаталог", ТекущийКаталог); - КонецЕсли; - - КонецЕсли; - -КонецПроцедуры - -// Аналог метода БСП. -Функция ПрочитатьФайлЕслиСуществует(Путь, Кодировка) - - Результат = Неопределено; - ФайлИнфо = Новый Файл(Путь); - - Если ФайлИнфо.Существует() Тогда - - ЧтениеПотокаОшибок = Новый ЧтениеТекста(Путь, Кодировка); - Результат = ЧтениеПотокаОшибок.Прочитать(); - ЧтениеПотокаОшибок.Закрыть(); - - КонецЕсли; - - Если Результат = Неопределено Тогда - Результат = ""; - КонецЕсли; - - Возврат Результат; - -КонецФункции - -// // Аналог метода БСП. Возвращает кодировку стандартных поток вывода и ошибок, используемую в текущей ОС. -// -// Возвращаемое значение: -// КодировкаТекста -// -Функция КодировкаСтандартныхПотоков() - - Если пбп_ОбщегоНазначенияСлужебный.ЭтоWindowsСервер() Тогда - Кодировка = "CP866"; - Иначе - Кодировка = "UTF-8"; - КонецЕсли; - - Возврат Кодировка; - -КонецФункции - -#КонецОбласти - -#КонецОбласти \ No newline at end of file diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\244\320\260\320\271\320\273\320\276\320\262\320\260\321\217\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\232\320\273\320\270\320\265\320\275\321\202/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\244\320\260\320\271\320\273\320\276\320\262\320\260\321\217\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\232\320\273\320\270\320\265\320\275\321\202/Ext/Module.bsl" deleted file mode 100644 index 8842f0bd..00000000 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\244\320\260\320\271\320\273\320\276\320\262\320\260\321\217\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\232\320\273\320\270\320\265\320\275\321\202/Ext/Module.bsl" +++ /dev/null @@ -1,100 +0,0 @@ -// Библиотека проектных подсистем для упрощения разработки архитектуры на 1С: Предприятие 8, -// включая доработку типовых конфигураций. -// -// Copyright First BIT company -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// URL: https://github.com/firstBitSportivnaya/PSSL/ -// - -//////////////////////////////////////////////////////////////////////////////// -// Файловая система клиент: аналог модуля БСП - -#Область ПрограммныйИнтерфейс - -// Аналог метода БСП. Получение имени временного каталога. -// -// Параметры: -// Оповещение - ОписаниеОповещения - оповещение о результате получения со следующими параметрами. -// -- ИмяКаталога - Строка - путь к созданному каталогу. -// -- ДополнительныеПараметры - Структура - значение, которое было указано при создании объекта ОписаниеОповещения. -// Расширение - Строка - суффикс в имени каталога, который поможет идентифицировать каталог при анализе. -// -Процедура СоздатьВременныйКаталог(Знач Оповещение, Расширение = "") Экспорт - - Контекст = Новый Структура; - Контекст.Вставить("Оповещение", Оповещение); - Контекст.Вставить("Расширение", Расширение); - - Оповещение = Новый ОписаниеОповещения("СоздатьВременныйКаталогПослеПроверкиРасширенияРаботыСФайлами", - пбп_ФайловаяСистемаСлужебныйКлиент, Контекст); - ПодключитьРасширениеДляРаботыСФайлами(Оповещение, - НСтр("ru = 'Для создания временной папки установите расширение для работы с 1С:Предприятием.'"), Ложь); - -КонецПроцедуры - -// Аналог метода БСП. Предлагает пользователю установить расширение для работы с 1С:Предприятием в веб-клиенте. -// Предназначена для использования в начале участков кода, в которых ведется работа с файлами. -// -// Параметры: -// ОписаниеОповещенияОЗакрытии - ОписаниеОповещения - описание процедуры, которая будет вызвана после закрытия -// формы со следующими параметрами: -// -- РасширениеПодключено - Булево - Истина, если расширение было подключено. -// -- ДополнительныеПараметры - Произвольный - параметры, заданные в ОписаниеОповещенияОЗакрытии. -// ТекстПредложения - Строка - текст сообщения. Если не указан, то выводится текст по умолчанию. -// ВозможноПродолжениеБезУстановки - Булево - если Истина, будет показана кнопка ПродолжитьБезУстановки, -// если Ложь, будет показана кнопка Отмена. -// -// Пример: -// -// Оповещение = Новый ОписаниеОповещения("ПечатьДокументаЗавершение", ЭтотОбъект); -// ТекстСообщения = НСтр("ru = 'Для печати документа необходимо установить расширение для работы с 1С:Предприятием.'"); -// ФайловаяСистемаКлиент.ПодключитьРасширениеДляРаботыСФайлами(Оповещение, ТекстСообщения); -// -// Процедура ПечатьДокументаЗавершение(РасширениеПодключено, ДополнительныеПараметры) Экспорт -// Если РасширениеПодключено Тогда -// // код печати документа, рассчитывающий на то, что расширение подключено. -// // ... -// Иначе -// // код печати документа, который работает без подключенного расширения. -// // ... -// КонецЕсли; -// -Процедура ПодключитьРасширениеДляРаботыСФайлами( - ОписаниеОповещенияОЗакрытии, - ТекстПредложения = "", - ВозможноПродолжениеБезУстановки = Истина) Экспорт - - ОписаниеОповещенияЗавершение = Новый ОписаниеОповещения( - "НачатьПодключениеРасширенияРаботыСФайламиПриОтветеНаВопросОбУстановке", пбп_ФайловаяСистемаСлужебныйКлиент, - ОписаниеОповещенияОЗакрытии); - -#Если Не ВебКлиент Тогда - // В мобильном, тонком и толстом клиентах расширение подключено всегда. - ВыполнитьОбработкуОповещения(ОписаниеОповещенияЗавершение, "ПодключениеНеТребуется"); - Возврат; -#КонецЕсли - - Контекст = Новый Структура; - Контекст.Вставить("ОписаниеОповещенияЗавершение", ОписаниеОповещенияЗавершение); - Контекст.Вставить("ТекстПредложения", ТекстПредложения); - Контекст.Вставить("ВозможноПродолжениеБезУстановки", ВозможноПродолжениеБезУстановки); - - Оповещение = Новый ОписаниеОповещения( - "НачатьПодключениеРасширенияРаботыСФайламиПриУстановкеРасширения", пбп_ФайловаяСистемаСлужебныйКлиент, Контекст); - НачатьПодключениеРасширенияРаботыСФайлами(Оповещение); - -КонецПроцедуры - -#КонецОбласти // ПрограммныйИнтерфейс \ No newline at end of file diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\244\320\260\320\271\320\273\320\276\320\262\320\260\321\217\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\232\320\273\320\270\320\265\320\275\321\202\320\237\320\265\321\200\320\265\320\260\320\264\321\200\320\265\321\201\320\260\321\206\320\270\321\217.xml" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\244\320\260\320\271\320\273\320\276\320\262\320\260\321\217\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\232\320\273\320\270\320\265\320\275\321\202\320\237\320\265\321\200\320\265\320\260\320\264\321\200\320\265\321\201\320\260\321\206\320\270\321\217.xml" deleted file mode 100644 index 4aa41d5d..00000000 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\244\320\260\320\271\320\273\320\276\320\262\320\260\321\217\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\232\320\273\320\270\320\265\320\275\321\202\320\237\320\265\321\200\320\265\320\260\320\264\321\200\320\265\321\201\320\260\321\206\320\270\321\217.xml" +++ /dev/null @@ -1,23 +0,0 @@ - - - - - пбп_ФайловаяСистемаКлиентПереадресация - - - ru - Файловая система клиент переадресация - - - - false - true - false - false - false - false - false - DontUse - - - \ No newline at end of file diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\244\320\260\320\271\320\273\320\276\320\262\320\260\321\217\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\232\320\273\320\270\320\265\320\275\321\202\320\237\320\265\321\200\320\265\320\260\320\264\321\200\320\265\321\201\320\260\321\206\320\270\321\217/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\244\320\260\320\271\320\273\320\276\320\262\320\260\321\217\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\232\320\273\320\270\320\265\320\275\321\202\320\237\320\265\321\200\320\265\320\260\320\264\321\200\320\265\321\201\320\260\321\206\320\270\321\217/Ext/Module.bsl" deleted file mode 100644 index a3de5e79..00000000 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\244\320\260\320\271\320\273\320\276\320\262\320\260\321\217\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\232\320\273\320\270\320\265\320\275\321\202\320\237\320\265\321\200\320\265\320\260\320\264\321\200\320\265\321\201\320\260\321\206\320\270\321\217/Ext/Module.bsl" +++ /dev/null @@ -1,51 +0,0 @@ -// Библиотека проектных подсистем для упрощения разработки архитектуры на 1С: Предприятие 8, -// включая доработку типовых конфигураций. -// -// Copyright First BIT company -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// URL: https://github.com/firstBitSportivnaya/PSSL/ -// - -#Область СлужебныйПрограммныйИнтерфейс - -// См. пбп_ФайловаяСистемаКлиент.СоздатьВременныйКаталог. -Процедура СоздатьВременныйКаталог(Знач Оповещение, Расширение = "") Экспорт - - Модуль = ПолучитьМодуль(); - Модуль.СоздатьВременныйКаталог(Оповещение, Расширение); - -КонецПроцедуры - -// См. пбп_ФайловаяСистемаКлиент.ПодключитьРасширениеДляРаботыСФайлами. -Процедура ПодключитьРасширениеДляРаботыСФайлами( - ОписаниеОповещенияОЗакрытии, - ТекстПредложения = "", - ВозможноПродолжениеБезУстановки = Истина) Экспорт - - Модуль = ПолучитьМодуль(); - Модуль.ПодключитьРасширениеДляРаботыСФайлами(ОписаниеОповещенияОЗакрытии, - ТекстПредложения, ВозможноПродолжениеБезУстановки); - -КонецПроцедуры - -#КонецОбласти - -#Область СлужебныеПроцедурыИФункции - -Функция ПолучитьМодуль() - Возврат пбп_ОбщегоНазначенияКлиент.ОбщийМодуль("ФайловаяСистемаКлиент", "пбп_ФайловаяСистемаКлиент"); -КонецФункции - -#КонецОбласти \ No newline at end of file diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\244\320\260\320\271\320\273\320\276\320\262\320\260\321\217\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\237\320\265\321\200\320\265\320\260\320\264\321\200\320\265\321\201\320\260\321\206\320\270\321\217.xml" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\244\320\260\320\271\320\273\320\276\320\262\320\260\321\217\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\237\320\265\321\200\320\265\320\260\320\264\321\200\320\265\321\201\320\260\321\206\320\270\321\217.xml" deleted file mode 100644 index 67f89ebd..00000000 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\244\320\260\320\271\320\273\320\276\320\262\320\260\321\217\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\237\320\265\321\200\320\265\320\260\320\264\321\200\320\265\321\201\320\260\321\206\320\270\321\217.xml" +++ /dev/null @@ -1,23 +0,0 @@ - - - - - пбп_ФайловаяСистемаПереадресация - - - ru - Файловая система переадресация - - - - false - false - true - true - false - false - false - DontUse - - - \ No newline at end of file diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\244\320\260\320\271\320\273\320\276\320\262\320\260\321\217\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\237\320\265\321\200\320\265\320\260\320\264\321\200\320\265\321\201\320\260\321\206\320\270\321\217/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\244\320\260\320\271\320\273\320\276\320\262\320\260\321\217\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\237\320\265\321\200\320\265\320\260\320\264\321\200\320\265\321\201\320\260\321\206\320\270\321\217/Ext/Module.bsl" deleted file mode 100644 index e7e5768c..00000000 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\244\320\260\320\271\320\273\320\276\320\262\320\260\321\217\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\237\320\265\321\200\320\265\320\260\320\264\321\200\320\265\321\201\320\260\321\206\320\270\321\217/Ext/Module.bsl" +++ /dev/null @@ -1,57 +0,0 @@ -// Библиотека проектных подсистем для упрощения разработки архитектуры на 1С: Предприятие 8, -// включая доработку типовых конфигураций. -// -// Copyright First BIT company -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// URL: https://github.com/firstBitSportivnaya/PSSL/ -// - -#Область СлужебныйПрограммныйИнтерфейс - -// См. пбп_ФайловаяСистема.УдалитьВременныйФайл. -Процедура УдалитьВременныйФайл(Знач Путь) Экспорт - - Модуль = ПолучитьМодуль(); - Модуль.УдалитьВременныйФайл(Путь); - -КонецПроцедуры - -// См. пбп_ФайловаяСистема.ПараметрыЗапускаПрограммы. -Функция ПараметрыЗапускаПрограммы() Экспорт - - Модуль = ПолучитьМодуль(); - Возврат Модуль.ПараметрыЗапускаПрограммы(); - -КонецФункции - -// См. пбп_ФайловаяСистема.ЗапуститьПрограмму. -Функция ЗапуститьПрограмму(Знач КомандаЗапуска, ПараметрыЗапускаПрограммы = Неопределено) Экспорт - - Модуль = ПолучитьМодуль(); - // BSLLS:ExternalAppStarting-off - Возврат Модуль.ЗапуститьПрограмму(КомандаЗапуска, ПараметрыЗапускаПрограммы); - // BSLLS:ExternalAppStarting-on - -КонецФункции - -#КонецОбласти - -#Область СлужебныеПроцедурыИФункции - -Функция ПолучитьМодуль() - Возврат пбп_ОбщегоНазначенияПовтИсп.ПереадресацияОбщегоМодуля("ФайловаяСистема", "пбп_ФайловаяСистема"); -КонецФункции - -#КонецОбласти \ No newline at end of file diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\244\320\260\320\271\320\273\320\276\320\262\320\260\321\217\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\244\320\260\320\271\320\273\320\276\320\262\320\260\321\217\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202/Ext/Module.bsl" deleted file mode 100644 index e9dac51d..00000000 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\244\320\260\320\271\320\273\320\276\320\262\320\260\321\217\320\241\320\270\321\201\321\202\320\265\320\274\320\260\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202/Ext/Module.bsl" +++ /dev/null @@ -1,120 +0,0 @@ -// Библиотека проектных подсистем для упрощения разработки архитектуры на 1С: Предприятие 8, -// включая доработку типовых конфигураций. -// -// Copyright First BIT company -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// URL: https://github.com/firstBitSportivnaya/PSSL/ -// - -//////////////////////////////////////////////////////////////////////////////// -// Файловая система служебный клиент: аналог модуля БСП - -#Область СлужебныйПрограммныйИнтерфейс - -#Область РасширениеРаботыСФайлами - -Процедура НачатьПодключениеРасширенияРаботыСФайламиПриУстановкеРасширения(Подключено, Контекст) Экспорт - - // Если расширение и так уже подключено, незачем про него спрашивать. - Если Подключено Тогда - ВыполнитьОбработкуОповещения(Контекст.ОписаниеОповещенияЗавершение, "ПодключениеНеТребуется"); - Возврат; - КонецЕсли; - - ВызватьИсключение НСтр("ru = 'Невозможно работать с файловой системой из браузера';"); - -КонецПроцедуры - -Процедура НачатьПодключениеРасширенияРаботыСФайламиПриОтветеНаВопросОбУстановке(Действие, ОповещениеОЗакрытии) Экспорт - - РасширениеПодключено = (Действие = "РасширениеПодключено" Или Действие = "ПодключениеНеТребуется"); - - ВыполнитьОбработкуОповещения(ОповещениеОЗакрытии, РасширениеПодключено); - -КонецПроцедуры - -#КонецОбласти // РасширениеРаботыСФайлами - -#Область ВременныеФайлы - -#Область СоздатьВременныйКаталог - -// Аналог метода БСП. Продолжение процедуры ФайловаяСистемаКлиент.СоздатьВременныйКаталог. -// -// Параметры: -// РасширениеПодключено - Булево -// Контекст - Структура: -// * Оповещение - ОписаниеОповещения -// * Расширение - Строка -// -Процедура СоздатьВременныйКаталогПослеПроверкиРасширенияРаботыСФайлами(РасширениеПодключено, Контекст) Экспорт - - Если РасширениеПодключено Тогда - Оповещение = Новый ОписаниеОповещения( - "СоздатьВременныйКаталогПослеПолученияВременногоКаталога", ЭтотОбъект, Контекст, - "СоздатьВременныйКаталогПриОбработкеОшибки", ЭтотОбъект); - НачатьПолучениеКаталогаВременныхФайлов(Оповещение); - Иначе - СоздатьВременныйКаталогОповеститьОбОшибке(НСтр("ru = 'Не удалось установить расширение для работы с 1С:Предприятием.'"), Контекст); - КонецЕсли; - -КонецПроцедуры - -// Аналог метода БСП. Продолжение процедуры ФайловаяСистемаКлиент.СоздатьВременныйКаталог. -// -// Параметры: -// ИмяКаталогаВременныхФайлов - Строка -// Контекст - Структура: -// * Оповещение - ОписаниеОповещения -// * Расширение - Строка -// -Процедура СоздатьВременныйКаталогПослеПолученияВременногоКаталога(ИмяКаталогаВременныхФайлов, Контекст) Экспорт - - Оповещение = Контекст.Оповещение; - Расширение = Контекст.Расширение; - - ИмяКаталога = "v8_" + Строка(Новый УникальныйИдентификатор); - - Если Не ПустаяСтрока(Расширение) Тогда - ИмяКаталога = ИмяКаталога + "." + Расширение; - КонецЕсли; - - НачатьСозданиеКаталога(Оповещение, ИмяКаталогаВременныхФайлов + ИмяКаталога); - -КонецПроцедуры - -// Аналог метода БСП. Продолжение процедуры ФайловаяСистемаКлиент.СоздатьВременныйКаталог. -Процедура СоздатьВременныйКаталогПриОбработкеОшибки(ИнформацияОбОшибке, СтандартнаяОбработка, Контекст) Экспорт - - СтандартнаяОбработка = Ложь; - ОписаниеОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке); - СоздатьВременныйКаталогОповеститьОбОшибке(ОписаниеОшибки, Контекст); - -КонецПроцедуры - -// Аналог метода БСП. Продолжение процедуры ФайловаяСистемаКлиент.СоздатьВременныйКаталог. -Процедура СоздатьВременныйКаталогОповеститьОбОшибке(ОписаниеОшибки, Контекст) - - ПоказатьПредупреждение(, ОписаниеОшибки); - ИмяКаталога = ""; - ВыполнитьОбработкуОповещения(Контекст.Оповещение, ИмяКаталога); - -КонецПроцедуры - -#КонецОбласти - -#КонецОбласти - -#КонецОбласти // СлужебныйПрограммныйИнтерфейс \ No newline at end of file diff --git a/src/cf/Configuration.xml b/src/cf/Configuration.xml index 6f4d7325..aa6a486d 100644 --- a/src/cf/Configuration.xml +++ b/src/cf/Configuration.xml @@ -276,8 +276,6 @@ пбп_SimpleKafkaAdapter пбп_XMLEditor пбп_ДокументыОбработкаСобытий - пбп_ЖурналРегистрации - пбп_ЖурналРегистрацииСлужебный пбп_ЗагрузкаФайлаЧерезТабличныйДокументВызовСервера пбп_ЗагрузкаФайлаЧерезТабличныйДокументКлиент пбп_ЗагрузкаФайлаЧерезТабличныйДокументСервер @@ -295,19 +293,14 @@ пбп_МодификацияКонфигурацииПовтИсп пбп_ОбновлениеИнформационнойБазыПБП пбп_ОбщегоНазначенияВызовСервера - пбп_ОбщегоНазначенияКлиент пбп_ОбщегоНазначенияКлиентСервер пбп_ОбщегоНазначенияПовтИсп - пбп_ОбщегоНазначенияПолныеПрава пбп_ОбщегоНазначенияСервер - пбп_ОбщегоНазначенияСлужебный - пбп_ОбщегоНазначенияСлужебныйКлиент - пбп_ОбщегоНазначенияСлужебныйКлиентСервер - пбп_ПолучениеФайловИзИнтернета - пбп_ПолучениеФайловИзИнтернетаСлужебный - пбп_Пользователи - пбп_ПользователиКлиентСервер - пбп_ПользователиСлужебный + пбп_Переадресация + пбп_ПереадресацияКлиент + пбп_ПереадресацияКлиентПовтИсп + пбп_ПереадресацияКлиентСервер + пбп_ПереадресацияПовтИсп пбп_ПредопределенныеЗначения пбп_ПредопределенныеЗначенияВызовСервера пбп_ПредопределенныеЗначенияКлиент @@ -318,23 +311,9 @@ пбп_РаботаСДиалогамиСервер пбп_РаботаСКоллекциямиКлиентСервер пбп_РаботаСФормами - пбп_РегламентныеЗаданияСервер - пбп_РегламентныеЗаданияСлужебныйСервер - пбп_СерверныеОповещения - пбп_СерверныеОповещенияСлужебный пбп_СправочникиОбработкаСобытий - пбп_СтандартныеПодсистемыКлиент - пбп_СтандартныеПодсистемыПовтИсп - пбп_СтандартныеПодсистемыСлужебныйКлиент - пбп_СтандартныеПодсистемыСлужебныйПовтИсп пбп_СтроковыеФункцииКлиентСервер - пбп_СтроковыеФункцииСлужебныйКлиентСервер пбп_СхемыЗапросов - пбп_ФайловаяСистема - пбп_ФайловаяСистемаКлиент - пбп_ФайловаяСистемаКлиентПереадресация - пбп_ФайловаяСистемаПереадресация - пбп_ФайловаяСистемаСлужебныйКлиент пбп_ДокументыОбработкаЗаполнения пбп_ДокументыОбработкаПроведения пбп_ДокументыОбработкаПроверкиЗаполнения diff --git "a/src/cf/Documents/\320\224\320\265\320\274\320\276\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\244\320\276\321\200\320\274\320\260\320\274\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260/Ext/Form/Module.bsl" "b/src/cf/Documents/\320\224\320\265\320\274\320\276\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\244\320\276\321\200\320\274\320\260\320\274\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260/Ext/Form/Module.bsl" index 7c75f175..78486f9f 100644 --- "a/src/cf/Documents/\320\224\320\265\320\274\320\276\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\244\320\276\321\200\320\274\320\260\320\274\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260/Ext/Form/Module.bsl" +++ "b/src/cf/Documents/\320\224\320\265\320\274\320\276\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\244\320\276\321\200\320\274\320\260\320\274\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\224\320\276\320\272\321\203\320\274\320\265\320\275\321\202\320\260/Ext/Form/Module.bsl" @@ -54,9 +54,11 @@ &НаКлиенте Процедура ПодсказатьКогдаОбед(Команда) - пбп_ОбщегоНазначенияСлужебныйКлиент.СообщитьПользователю(СтрШаблон( - НСтр("ru='Привет, текущее время %1'; en='Hello, the current time is %1'"), - Формат(пбп_ОбщегоНазначенияВызовСервера.ТекущаяДатаПользователя(), "ДЛФ=DT"))); + ШаблонСообщения = НСтр("ru='Привет, текущее время %1'; en='Hello, the current time is %1'"); + ТекстСообщения = СтрШаблон(ШаблонСообщения, + Формат(пбп_ОбщегоНазначенияВызовСервера.ТекущаяДатаПользователя(), "ДЛФ=DT")); + + пбп_ПереадресацияКлиент.СообщитьПользователю(ТекстСообщения); КонецПроцедуры @@ -74,10 +76,10 @@ &НаСервере Процедура СкрытьОтцаНаСервере() - Если Не пбп_ОбщегоНазначенияСлужебныйКлиентСервер.ЗначениеСвойстваЭлементаФормы(Элементы, "_ДемоBotFather", "Видимость") Тогда - пбп_ОбщегоНазначенияСлужебный.СообщитьПользователю(НСтр("ru='Он и так не с нами.'; en='He`s not with us anyway.'")); + Если Не пбп_ПереадресацияКлиентСервер.ЗначениеСвойстваЭлементаФормы(Элементы, "_ДемоBotFather", "Видимость") Тогда + пбп_Переадресация.СообщитьПользователю(НСтр("ru='Он и так не с нами.'; en='He`s not with us anyway.'")); Иначе - пбп_ОбщегоНазначенияСлужебныйКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "_ДемоBotFather", "Видимость", Ложь); + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "_ДемоBotFather", "Видимость", Ложь); КонецЕсли; КонецПроцедуры @@ -85,10 +87,10 @@ &НаСервере Процедура ПоказатьОтцаНаСервере() - Если пбп_ОбщегоНазначенияСлужебныйКлиентСервер.ЗначениеСвойстваЭлементаФормы(Элементы, "_ДемоBotFather", "Видимость") Тогда - пбп_ОбщегоНазначенияСлужебный.СообщитьПользователю(НСтр("ru='Присмотрись получше.'; en='Take a closer look.'")); + Если пбп_ПереадресацияКлиентСервер.ЗначениеСвойстваЭлементаФормы(Элементы, "_ДемоBotFather", "Видимость") Тогда + пбп_Переадресация.СообщитьПользователю(НСтр("ru='Присмотрись получше.'; en='Take a closer look.'")); Иначе - пбп_ОбщегоНазначенияСлужебныйКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "_ДемоBotFather", "Видимость", Истина); + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "_ДемоBotFather", "Видимость", Истина); КонецЕсли; КонецПроцедуры diff --git "a/src/cf/InformationRegisters/\320\277\320\261\320\277_\320\241\320\276\320\276\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\221/Ext/ManagerModule.bsl" "b/src/cf/InformationRegisters/\320\277\320\261\320\277_\320\241\320\276\320\276\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\221/Ext/ManagerModule.bsl" index 0b372528..a0985b6b 100644 --- "a/src/cf/InformationRegisters/\320\277\320\261\320\277_\320\241\320\276\320\276\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\221/Ext/ManagerModule.bsl" +++ "b/src/cf/InformationRegisters/\320\277\320\261\320\277_\320\241\320\276\320\276\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\270\321\217\320\236\320\261\321\212\320\265\320\272\321\202\320\276\320\262\320\230\320\221/Ext/ManagerModule.bsl" @@ -123,7 +123,7 @@ Шаблон = НСтр("ru = 'В регистре сведений пбп_СоответствияОбъектовИБ не существует " + ?(КлючСуществует, "", "ключа %1") + ?(ОбъектСуществует, "", ?(КлючСуществует, "", "; ") + "объект %2") + "'"); - ВызватьИсключение пбп_СтроковыеФункцииСлужебныйКлиентСервер.ПодставитьПараметрыВСтроку( + ВызватьИсключение пбп_ПереадресацияКлиентСервер.ПодставитьПараметрыВСтроку( Шаблон, ИмяКлюча, ИмяОбъекта); diff --git "a/src/cf/InformationRegisters/\320\277\320\261\320\277_\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\321\205\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262/Ext/ManagerModule.bsl" "b/src/cf/InformationRegisters/\320\277\320\261\320\277_\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\321\205\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262/Ext/ManagerModule.bsl" index 22f37473..ac3c80ac 100644 --- "a/src/cf/InformationRegisters/\320\277\320\261\320\277_\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\321\205\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262/Ext/ManagerModule.bsl" +++ "b/src/cf/InformationRegisters/\320\277\320\261\320\277_\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\237\321\200\320\265\320\264\320\276\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\275\321\213\321\205\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\276\320\262/Ext/ManagerModule.bsl" @@ -27,7 +27,7 @@ Запись = Набор.Добавить(); Запись.Объект = Объект; - Запись.ХешСумма = пбп_ОбщегоНазначенияСлужебный.КонтрольнаяСуммаСтрокой(КлючиХеша, ХешФункция.MD5); + Запись.ХешСумма = пбп_Переадресация.КонтрольнаяСуммаСтрокой(КлючиХеша, ХешФункция.MD5); Набор.Записать(); @@ -50,7 +50,7 @@ КонецЕсли; ЗаполнитьЗначенияСвойств(КлючиХеша, Объект); - НовыйХешЭлемента = пбп_ОбщегоНазначенияСлужебный.КонтрольнаяСуммаСтрокой(КлючиХеша, ХешФункция.MD5); + НовыйХешЭлемента = пбп_Переадресация.КонтрольнаяСуммаСтрокой(КлючиХеша, ХешФункция.MD5); Набор = СоздатьНаборЗаписей(); Набор.Отбор.Объект.Установить(Объект); @@ -102,16 +102,16 @@ ТекстСообщения = НСтр("ru = 'При обновлении не найдена запись состояния по объекту ''%1'' не найдена!'; |en = 'No status record found during update for object ''%1'' not found!'"); - ТекстСообщения = пбп_СтроковыеФункцииСлужебныйКлиентСервер.ПодставитьПараметрыВСтроку( + ТекстСообщения = пбп_ПереадресацияКлиентСервер.ПодставитьПараметрыВСтроку( ТекстСообщения, Элемент.Ссылка); - пбп_ОбщегоНазначенияСлужебный.СообщитьПользователю(ТекстСообщения, Элемент); + пбп_Переадресация.СообщитьПользователю(ТекстСообщения, Элемент); КонецПроцедуры Функция КлючиХешаОбъект(Объект, ЭтоГруппа) - МенеджерОбъекта = пбп_ОбщегоНазначенияСлужебный.МенеджерОбъектаПоСсылке(Объект); + МенеджерОбъекта = пбп_Переадресация.МенеджерОбъектаПоСсылке(Объект); КлючевыеПоля = пбп_ПредопределенныеЗначенияПереопределяемый.КолонкиПредопределенныхЭлементов(МенеджерОбъекта); Если Не ЗначениеЗаполнено(КлючевыеПоля) Тогда Возврат Новый Структура; diff --git "a/src/cf/Subsystems/\320\277\320\261\320\277_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217.xml" "b/src/cf/Subsystems/\320\277\320\261\320\277_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217.xml" index 40f053fa..670fd6b4 100644 --- "a/src/cf/Subsystems/\320\277\320\261\320\277_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217.xml" +++ "b/src/cf/Subsystems/\320\277\320\261\320\277_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217.xml" @@ -20,10 +20,8 @@ - CommonModule.пбп_ОбщегоНазначенияКлиент CommonModule.пбп_ОбщегоНазначенияПовтИсп CommonModule.пбп_ОбщегоНазначенияСервер - CommonModule.пбп_ОбщегоНазначенияПолныеПрава Role.ПолныеПрава Role.АдминистраторСистемы Role.ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок @@ -33,36 +31,17 @@ CommonModule.пбп_РаботаСДиалогамиСервер CommonModule.пбп_РаботаСКоллекциямиКлиентСервер CommonModule.пбп_СтроковыеФункцииКлиентСервер - CommonModule.пбп_ЖурналРегистрации - CommonModule.пбп_ЖурналРегистрацииСлужебный CommonModule.пбп_МодификацияКонфигурацииКлиентПовтИсп CommonModule.пбп_ОбновлениеИнформационнойБазыПБП CommonModule.пбп_ОбщегоНазначенияВызовСервера - CommonModule.пбп_ОбщегоНазначенияСлужебный - CommonModule.пбп_ОбщегоНазначенияСлужебныйКлиент - CommonModule.пбп_ОбщегоНазначенияСлужебныйКлиентСервер - CommonModule.пбп_ПолучениеФайловИзИнтернета - CommonModule.пбп_ПолучениеФайловИзИнтернетаСлужебный - CommonModule.пбп_Пользователи - CommonModule.пбп_ПользователиКлиентСервер - CommonModule.пбп_ПользователиСлужебный - CommonModule.пбп_РегламентныеЗаданияСервер - CommonModule.пбп_РегламентныеЗаданияСлужебныйСервер - CommonModule.пбп_СтандартныеПодсистемыКлиент - CommonModule.пбп_СтандартныеПодсистемыПовтИсп - CommonModule.пбп_СтандартныеПодсистемыСлужебныйКлиент - CommonModule.пбп_СтандартныеПодсистемыСлужебныйПовтИсп - CommonModule.пбп_СтроковыеФункцииСлужебныйКлиентСервер CommonModule.пбп_СхемыЗапросов DefinedType.пбп_Пользователи DefinedType.пбп_УчетныеЗаписиЭлектроннойПочты - CommonModule.пбп_ФайловаяСистема - CommonModule.пбп_ФайловаяСистемаПереадресация - CommonModule.пбп_ФайловаяСистемаКлиент - CommonModule.пбп_ФайловаяСистемаКлиентПереадресация - CommonModule.пбп_ФайловаяСистемаСлужебныйКлиент - CommonModule.пбп_СерверныеОповещения - CommonModule.пбп_СерверныеОповещенияСлужебный + CommonModule.пбп_Переадресация + CommonModule.пбп_ПереадресацияКлиент + CommonModule.пбп_ПереадресацияКлиентСервер + CommonModule.пбп_ПереадресацияПовтИсп + CommonModule.пбп_ПереадресацияКлиентПовтИсп diff --git "a/src/cfe/YAXUnit/CommonModules/\320\236\320\234_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\260\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" "b/src/cfe/YAXUnit/CommonModules/\320\236\320\234_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\260\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" index e54ad905..3a2af271 100644 --- "a/src/cfe/YAXUnit/CommonModules/\320\236\320\234_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\260\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" +++ "b/src/cfe/YAXUnit/CommonModules/\320\236\320\234_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\260\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" @@ -20,14 +20,14 @@ Процедура ТестДолженСоздатьТипЧисло() Экспорт - Описание = пбп_ОбщегоНазначенияСервер.ОписаниеТипаЧисло(10, 2, ДопустимыйЗнак.Неотрицательный); + Описание = пбп_Переадресация.ОписаниеТипаЧисло(10, 2, ДопустимыйЗнак.Неотрицательный); ЮТест.ОжидаетЧто(Тип(Описание)).Равно(Тип("Число")); КонецПроцедуры Процедура ТестДолженВернутьОписаниеЧислаСКорректнымЗнаком() Экспорт - Описание = пбп_ОбщегоНазначенияСервер.ОписаниеТипаЧисло(10, 2, ДопустимыйЗнак.Неотрицательный); + Описание = пбп_Переадресация.ОписаниеТипаЧисло(10, 2, ДопустимыйЗнак.Неотрицательный); Проверка = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(10, 2, ДопустимыйЗнак.Неотрицательный)); ЮТест.ОжидаетЧто(Проверка).Равно(Проверка); @@ -36,8 +36,8 @@ Процедура ТестДолженУстановитьЗнакЛюбойПриОтсутствииЯвнойУказки() Экспорт - Описание = пбп_ОбщегоНазначенияСервер.ОписаниеТипаЧисло(10, 2); - Проверка = пбп_ОбщегоНазначенияСервер.ОписаниеТипаЧисло(10, 2, ДопустимыйЗнак.Любой); + Описание = пбп_Переадресация.ОписаниеТипаЧисло(10, 2); + Проверка = пбп_Переадресация.ОписаниеТипаЧисло(10, 2, ДопустимыйЗнак.Любой); ЮТест.ОжидаетЧто(Описание).Равно(Проверка);