├── ПредопределенныеЗначенияПодсистема ├── DT-INF │ └── PROJECT.PMF ├── .settings │ ├── com.e1c.v8codestyle.autosort.prefs │ ├── org.eclipse.core.resources.prefs │ ├── com.e1c.v8codestyle.prefs │ └── com.e1c.v8codestyle.bsl.prefs ├── src │ ├── Configuration │ │ ├── CommandInterface.cmi │ │ ├── MainSectionCommandInterface.cmi │ │ ├── HomePageWorkArea.hpwa │ │ └── Configuration.mdo │ ├── Subsystems │ │ └── СервисныеПодсистемы │ │ │ ├── CommandInterface.cmi │ │ │ ├── Subsystems │ │ │ └── ПредопределенныеЗначения │ │ │ │ ├── CommandInterface.cmi │ │ │ │ └── ПредопределенныеЗначения.mdo │ │ │ └── СервисныеПодсистемы.mdo │ ├── CommonPictures │ │ └── ТипыЗначений │ │ │ ├── Picture.zip │ │ │ └── ТипыЗначений.mdo │ ├── DataProcessors │ │ └── ПредопределенныеНастройкиТестирование │ │ │ ├── Forms │ │ │ └── ФормаТестирования │ │ │ │ ├── Items │ │ │ │ ├── НастройкиСозданы │ │ │ │ │ └── Picture.png │ │ │ │ ├── НастройкиУдалены │ │ │ │ │ └── Picture.png │ │ │ │ └── НастройкиУстановлены │ │ │ │ │ └── Picture.png │ │ │ │ └── Module.bsl │ │ │ └── ПредопределенныеНастройкиТестирование.mdo │ ├── Roles │ │ ├── ЧтениеПредопределенныеЗначения │ │ │ ├── ЧтениеПредопределенныеЗначения.mdo │ │ │ └── Rights.rights │ │ └── ДобавлениеИзменениеПредопределенныеЗначения │ │ │ ├── ДобавлениеИзменениеПредопределенныеЗначения.mdo │ │ │ └── Rights.rights │ ├── Catalogs │ │ └── ПредопределенныеНастройки │ │ │ ├── Forms │ │ │ ├── ФормаСписка │ │ │ │ ├── Module.bsl │ │ │ │ ├── Attributes │ │ │ │ │ └── Список │ │ │ │ │ │ └── ExtInfo │ │ │ │ │ │ └── ListSettings.dcss │ │ │ │ └── Form.form │ │ │ └── ФормаЭлемента │ │ │ │ └── Module.bsl │ │ │ ├── ObjectModule.bsl │ │ │ └── ПредопределенныеНастройки.mdo │ ├── CommonModules │ │ ├── ПредопределенныеНастройки │ │ │ ├── ПредопределенныеНастройки.mdo │ │ │ └── Module.bsl │ │ ├── ПредопределенныеНастройкиПереопределяемый │ │ │ ├── ПредопределенныеНастройкиПереопределяемый.mdo │ │ │ └── Module.bsl │ │ └── ПредопределенныеНастройкиПовтИсп │ │ │ ├── ПредопределенныеНастройкиПовтИсп.mdo │ │ │ └── Module.bsl │ └── Enums │ │ └── ТипыЗначенияПредопределенныхЗначений │ │ └── ТипыЗначенияПредопределенныхЗначений.mdo ├── .continuerules └── .project ├── Docs ├── code_helper.png ├── Predefined_Demo.gif ├── under-construction.png └── infostart-logo.svg ├── LICENSE └── README.md /ПредопределенныеЗначенияПодсистема/DT-INF/PROJECT.PMF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Runtime-Version: 8.3.25 3 | -------------------------------------------------------------------------------- /Docs/code_helper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/huxuxuya/1cPredefinedValuesSubsystem/HEAD/Docs/code_helper.png -------------------------------------------------------------------------------- /Docs/Predefined_Demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/huxuxuya/1cPredefinedValuesSubsystem/HEAD/Docs/Predefined_Demo.gif -------------------------------------------------------------------------------- /Docs/under-construction.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/huxuxuya/1cPredefinedValuesSubsystem/HEAD/Docs/under-construction.png -------------------------------------------------------------------------------- /ПредопределенныеЗначенияПодсистема/.settings/com.e1c.v8codestyle.autosort.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | topObjects=true 3 | -------------------------------------------------------------------------------- /ПредопределенныеЗначенияПодсистема/.settings/org.eclipse.core.resources.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | encoding/=UTF-8 3 | -------------------------------------------------------------------------------- /ПредопределенныеЗначенияПодсистема/.settings/com.e1c.v8codestyle.prefs: -------------------------------------------------------------------------------- 1 | commonChecks=true 2 | eclipse.preferences.version=1 3 | standardChecks=true 4 | -------------------------------------------------------------------------------- /ПредопределенныеЗначенияПодсистема/.settings/com.e1c.v8codestyle.bsl.prefs: -------------------------------------------------------------------------------- 1 | addModuleStrictTypesAnnotation=false 2 | createModuleStructure=false 3 | eclipse.preferences.version=1 4 | -------------------------------------------------------------------------------- /ПредопределенныеЗначенияПодсистема/src/Configuration/CommandInterface.cmi: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /ПредопределенныеЗначенияПодсистема/src/Configuration/MainSectionCommandInterface.cmi: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /ПредопределенныеЗначенияПодсистема/src/Subsystems/СервисныеПодсистемы/CommandInterface.cmi: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /ПредопределенныеЗначенияПодсистема/src/CommonPictures/ТипыЗначений/Picture.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/huxuxuya/1cPredefinedValuesSubsystem/HEAD/ПредопределенныеЗначенияПодсистема/src/CommonPictures/ТипыЗначений/Picture.zip -------------------------------------------------------------------------------- /ПредопределенныеЗначенияПодсистема/src/Subsystems/СервисныеПодсистемы/Subsystems/ПредопределенныеЗначения/CommandInterface.cmi: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /ПредопределенныеЗначенияПодсистема/src/DataProcessors/ПредопределенныеНастройкиТестирование/Forms/ФормаТестирования/Items/НастройкиСозданы/Picture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/huxuxuya/1cPredefinedValuesSubsystem/HEAD/ПредопределенныеЗначенияПодсистема/src/DataProcessors/ПредопределенныеНастройкиТестирование/Forms/ФормаТестирования/Items/НастройкиСозданы/Picture.png -------------------------------------------------------------------------------- /ПредопределенныеЗначенияПодсистема/src/DataProcessors/ПредопределенныеНастройкиТестирование/Forms/ФормаТестирования/Items/НастройкиУдалены/Picture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/huxuxuya/1cPredefinedValuesSubsystem/HEAD/ПредопределенныеЗначенияПодсистема/src/DataProcessors/ПредопределенныеНастройкиТестирование/Forms/ФормаТестирования/Items/НастройкиУдалены/Picture.png -------------------------------------------------------------------------------- /ПредопределенныеЗначенияПодсистема/src/DataProcessors/ПредопределенныеНастройкиТестирование/Forms/ФормаТестирования/Items/НастройкиУстановлены/Picture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/huxuxuya/1cPredefinedValuesSubsystem/HEAD/ПредопределенныеЗначенияПодсистема/src/DataProcessors/ПредопределенныеНастройкиТестирование/Forms/ФормаТестирования/Items/НастройкиУстановлены/Picture.png -------------------------------------------------------------------------------- /ПредопределенныеЗначенияПодсистема/src/CommonPictures/ТипыЗначений/ТипыЗначений.mdo: -------------------------------------------------------------------------------- 1 | 2 | 3 | ТипыЗначений 4 | 5 | ru 6 | Типы значений 7 | 8 | 9 | -------------------------------------------------------------------------------- /ПредопределенныеЗначенияПодсистема/src/Roles/ЧтениеПредопределенныеЗначения/ЧтениеПредопределенныеЗначения.mdo: -------------------------------------------------------------------------------- 1 | 2 | 3 | ЧтениеПредопределенныеЗначения 4 | 5 | ru 6 | Чтение предопределенные значения 7 | 8 | 9 | -------------------------------------------------------------------------------- /ПредопределенныеЗначенияПодсистема/src/Roles/ДобавлениеИзменениеПредопределенныеЗначения/ДобавлениеИзменениеПредопределенныеЗначения.mdo: -------------------------------------------------------------------------------- 1 | 2 | 3 | ДобавлениеИзменениеПредопределенныеЗначения 4 | 5 | ru 6 | Добавление изменение предопределенные значения 7 | 8 | 9 | -------------------------------------------------------------------------------- /ПредопределенныеЗначенияПодсистема/.continuerules: -------------------------------------------------------------------------------- 1 | Ты программист на языке 1С, пишешь код только на русском. 2 | Весь код который ты пишешь соответствует стандартам разработки на 1С. 3 | Код не содержит ошибок и работает корректно. 4 | Перед методами пишешь описание в виде комментария в соответствии со стандартами 1С. 5 | В описании должны быть описаны входящие и исходящие параметы, их типы и назначение. 6 | В коде комментарии не пишешь. 7 | Ты сразу пишешь оптимальный, понятный и быстрый код. 8 | Синтаксис используется только от языка 1С. 9 | -------------------------------------------------------------------------------- /ПредопределенныеЗначенияПодсистема/src/Subsystems/СервисныеПодсистемы/СервисныеПодсистемы.mdo: -------------------------------------------------------------------------------- 1 | 2 | 3 | СервисныеПодсистемы 4 | 5 | ru 6 | Сервисные подсистемы 7 | 8 | true 9 | ПредопределенныеЗначения 10 | 11 | -------------------------------------------------------------------------------- /ПредопределенныеЗначенияПодсистема/src/Catalogs/ПредопределенныеНастройки/Forms/ФормаСписка/Module.bsl: -------------------------------------------------------------------------------- 1 | #Область ОбработчикиКомандФормы 2 | 3 | &НаКлиенте 4 | Процедура СоздатьПредопределенные(Команда) 5 | СоздатьПредопределенныеНаСервере(); 6 | КонецПроцедуры 7 | 8 | #КонецОбласти 9 | 10 | #Область СлужебныеПроцедурыИФункции 11 | 12 | &НаСервере 13 | Процедура СоздатьПредопределенныеНаСервере() 14 | 15 | ПредопределенныеНастройки.СоздатьОтсутствующиеПредопределенныеНастройки(); 16 | 17 | КонецПроцедуры 18 | 19 | #КонецОбласти 20 | -------------------------------------------------------------------------------- /ПредопределенныеЗначенияПодсистема/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | ПредопределенныеЗначенияПодсистема 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.xtext.ui.shared.xtextBuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.xtext.ui.shared.xtextNature 16 | com._1c.g5.v8.dt.core.V8ConfigurationNature 17 | 18 | 19 | -------------------------------------------------------------------------------- /ПредопределенныеЗначенияПодсистема/src/CommonModules/ПредопределенныеНастройки/ПредопределенныеНастройки.mdo: -------------------------------------------------------------------------------- 1 | 2 | 3 | ПредопределенныеНастройки 4 | 5 | ru 6 | Предопределенные настройки 7 | 8 | true 9 | true 10 | true 11 | 12 | -------------------------------------------------------------------------------- /ПредопределенныеЗначенияПодсистема/src/CommonModules/ПредопределенныеНастройкиПереопределяемый/ПредопределенныеНастройкиПереопределяемый.mdo: -------------------------------------------------------------------------------- 1 | 2 | 3 | ПредопределенныеНастройкиПереопределяемый 4 | 5 | ru 6 | Предопределенные настройки переопределяемый 7 | 8 | true 9 | true 10 | true 11 | 12 | -------------------------------------------------------------------------------- /ПредопределенныеЗначенияПодсистема/src/CommonModules/ПредопределенныеНастройкиПовтИсп/ПредопределенныеНастройкиПовтИсп.mdo: -------------------------------------------------------------------------------- 1 | 2 | 3 | ПредопределенныеНастройкиПовтИсп 4 | 5 | ru 6 | Предопределенные настройки повт исп 7 | 8 | true 9 | true 10 | true 11 | DuringSession 12 | 13 | -------------------------------------------------------------------------------- /ПредопределенныеЗначенияПодсистема/src/Subsystems/СервисныеПодсистемы/Subsystems/ПредопределенныеЗначения/ПредопределенныеЗначения.mdo: -------------------------------------------------------------------------------- 1 | 2 | 3 | ПредопределенныеЗначения 4 | 5 | ru 6 | Предопределенные значения 7 | 8 | true 9 | true 10 | Catalog.ПредопределенныеНастройки 11 | DataProcessor.ПредопределенныеНастройкиТестирование 12 | Subsystem.СервисныеПодсистемы 13 | 14 | -------------------------------------------------------------------------------- /ПредопределенныеЗначенияПодсистема/src/Configuration/HomePageWorkArea.hpwa: -------------------------------------------------------------------------------- 1 | 2 | 3 | TwoColumnsEqualWidth 4 | 5 | 6 |
DataProcessor.ПредопределенныеНастройкиТестирование.Form.ФормаТестирования
7 | 10 8 | 9 | true 10 | 11 |
12 |
13 | 14 | 15 |
Catalog.ПредопределенныеНастройки.Form.ФормаСписка
16 | 10 17 | 18 | true 19 | 20 |
21 |
22 |
23 | -------------------------------------------------------------------------------- /ПредопределенныеЗначенияПодсистема/src/CommonModules/ПредопределенныеНастройкиПереопределяемый/Module.bsl: -------------------------------------------------------------------------------- 1 | #Область ПрограммныйИнтерфейс 2 | 3 | // Процедура заполняет таблицу предопределенных настроек значением версии подсистемы. 4 | // 5 | // Параметры: 6 | // ТаблицаНастроек - ТаблицаЗначений - Таблица в которую будут добавляться предопределенные настройки. 7 | // 8 | Процедура ПриЗаполненииТаблицыПредопределенныхНастроек(ТаблицаНастроек) Экспорт 9 | 10 | НоваяНастройка = ТаблицаНастроек.Добавить(); 11 | НоваяНастройка.Идентификатор = Новый УникальныйИдентификатор("87548614-5423-299a-af9c-a08e5ca86056");; 12 | НоваяНастройка.Наименование = НСтр("ru ='Версия подсистемы'"); 13 | НоваяНастройка.ИмяНастройки = "ВерсияПодсистемы"; 14 | НоваяНастройка.ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Строка"); 15 | НоваяНастройка.Описание = НСтр("ru ='Информация о версии текущей подсистемы.'"); 16 | НоваяНастройка.Значение = "1.0.0"; 17 | 18 | КонецПроцедуры 19 | 20 | #КонецОбласти -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2025 Fedor Timokhov 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /ПредопределенныеЗначенияПодсистема/src/DataProcessors/ПредопределенныеНастройкиТестирование/ПредопределенныеНастройкиТестирование.mdo: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | ПредопределенныеНастройкиТестирование 8 | 9 | ru 10 | Предопределенные настройки тестирование 11 | 12 | true 13 | DataProcessor.ПредопределенныеНастройкиТестирование.Form.ФормаТестирования 14 | 15 | ФормаТестирования 16 | 17 | ru 18 | Форма тестирования 19 | 20 | PersonalComputer 21 | MobileDevice 22 | 23 | 24 | -------------------------------------------------------------------------------- /ПредопределенныеЗначенияПодсистема/src/Catalogs/ПредопределенныеНастройки/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Normal 5 | dfcece9d-5077-440b-b6b3-45a5cb4538eb 6 | 7 | 8 | Normal 9 | 88619765-ccb3-46c6-ac52-38e9c992ebd4 10 | 11 | 12 | Normal 13 | b75fecce-942b-4aed-abc9-e6a02e460fb3 14 | 15 | Normal 16 | 911b6018-f537-43e8-a417-da56b22f9aec 17 | 18 | -------------------------------------------------------------------------------- /ПредопределенныеЗначенияПодсистема/src/Roles/ЧтениеПредопределенныеЗначения/Rights.rights: -------------------------------------------------------------------------------- 1 | 2 | 3 | false 4 | true 5 | false 6 | 7 | Catalog.ПредопределенныеНастройки 8 | 9 | Read 10 | true 11 | 12 | 13 | View 14 | true 15 | 16 | 17 | 18 | Configuration.ПредопределенныеНастройкиПодсистема 19 | 20 | ThinClient 21 | true 22 | 23 | 24 | WebClient 25 | true 26 | 27 | 28 | MainWindowModeNormal 29 | true 30 | 31 | 32 | MainWindowModeWorkplace 33 | true 34 | 35 | 36 | MainWindowModeEmbeddedWorkplace 37 | true 38 | 39 | 40 | MainWindowModeFullscreenWorkplace 41 | true 42 | 43 | 44 | MainWindowModeKiosk 45 | true 46 | 47 | 48 | AnalyticsSystemClient 49 | true 50 | 51 | 52 | SaveUserData 53 | true 54 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /ПредопределенныеЗначенияПодсистема/src/CommonModules/ПредопределенныеНастройкиПовтИсп/Module.bsl: -------------------------------------------------------------------------------- 1 | #Область СлужебныйПрограммныйИнтерфейс 2 | 3 | // Возвращает значение предопределенной настройки по ее имени. 4 | // 5 | // Параметры: 6 | // ИмяНастройки - Строка - имя предопределенной настройки 7 | // ВызыватьИсключение - Булево - признак вызова исключения при отсутствии настройки 8 | // 9 | // Возвращаемое значение: 10 | // Произвольный - значение предопределенной настройки или результат для отсутствующей настройки 11 | Функция Значение(ИмяНастройки, ВызыватьИсключение = Ложь) Экспорт 12 | 13 | РезультатЗначение = ПредопределенныеНастройки.ЗначениеПредопределеннойНастройкиПоИмени(ИмяНастройки, ВызыватьИсключение); 14 | 15 | Если РезультатЗначение = ПредопределенноеЗначение("Справочник.ПредопределенныеНастройки.ПустаяСсылка") Тогда 16 | Возврат ПредопределенныеНастройки.РезультатДляОтсутствующейНастройки(ИмяНастройки, ВызыватьИсключение); 17 | ИначеЕсли РезультатЗначение = Неопределено Тогда 18 | Возврат ПредопределенныеНастройки.РезультатДляОтсутствующейНастройки(ИмяНастройки, ВызыватьИсключение); 19 | КонецЕсли; 20 | 21 | Возврат РезультатЗначение; 22 | 23 | КонецФункции 24 | 25 | // Возвращает ссылку на предопределенную настройку по ее имени. 26 | // 27 | // Параметры: 28 | // ИмяНастройки - Строка - имя предопределенной настройки 29 | // 30 | // Возвращаемое значение: 31 | // СправочникСсылка.ПредопределенныеНастройки, Неопределено - ссылка на найденную предопределенную настройку или Неопределено, если настройка не найдена 32 | Функция СсылкаПредопределеннойНастройки(ИмяНастройки) Экспорт 33 | 34 | Возврат Справочники.ПредопределенныеНастройки.НайтиПоРеквизиту("ИмяНастройки", ИмяНастройки); 35 | 36 | КонецФункции 37 | 38 | #КонецОбласти 39 | -------------------------------------------------------------------------------- /ПредопределенныеЗначенияПодсистема/src/Roles/ДобавлениеИзменениеПредопределенныеЗначения/Rights.rights: -------------------------------------------------------------------------------- 1 | 2 | 3 | false 4 | true 5 | false 6 | 7 | Catalog.ПредопределенныеНастройки 8 | 9 | Read 10 | true 11 | 12 | 13 | Insert 14 | true 15 | 16 | 17 | Update 18 | true 19 | 20 | 21 | View 22 | true 23 | 24 | 25 | InteractiveInsert 26 | true 27 | 28 | 29 | Edit 30 | true 31 | 32 | 33 | InteractiveSetDeletionMark 34 | true 35 | 36 | 37 | InteractiveClearDeletionMark 38 | true 39 | 40 | 41 | 42 | Configuration.ПредопределенныеНастройкиПодсистема 43 | 44 | MainWindowModeNormal 45 | true 46 | 47 | 48 | MainWindowModeWorkplace 49 | true 50 | 51 | 52 | MainWindowModeEmbeddedWorkplace 53 | true 54 | 55 | 56 | MainWindowModeFullscreenWorkplace 57 | true 58 | 59 | 60 | MainWindowModeKiosk 61 | true 62 | 63 | 64 | AnalyticsSystemClient 65 | true 66 | 67 | 68 | 69 | -------------------------------------------------------------------------------- /ПредопределенныеЗначенияПодсистема/src/Enums/ТипыЗначенияПредопределенныхЗначений/ТипыЗначенияПредопределенныхЗначений.mdo: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | ТипыЗначенияПредопределенныхЗначений 9 | 10 | ru 11 | Типы значения предопределенных значений 12 | 13 | true 14 | BothWays 15 | 16 | Дата 17 | 18 | ru 19 | Дата 20 | 21 | 22 | 23 | Массив 24 | 25 | ru 26 | Массив 27 | 28 | 29 | 30 | Строка 31 | 32 | ru 33 | Строка 34 | 35 | 36 | 37 | Булево 38 | 39 | ru 40 | Булево 41 | 42 | 43 | 44 | Ссылка 45 | 46 | ru 47 | Ссылка 48 | 49 | 50 | 51 | КлючЗначение 52 | 53 | ru 54 | Ключ значение 55 | 56 | 57 | 58 | ТаблицаЗначений 59 | 60 | ru 61 | Таблица значений 62 | 63 | 64 | 65 | КаталогПредопределенныхНастроек 66 | 67 | ru 68 | Каталог предопределенных настроек 69 | 70 | Группа настроек, без установки значения 71 | 72 | 73 | -------------------------------------------------------------------------------- /ПредопределенныеЗначенияПодсистема/src/Configuration/Configuration.mdo: -------------------------------------------------------------------------------- 1 | 2 | 3 | ПредопределенныеНастройкиПодсистема 4 | 5 | ru 6 | Предопределенные настройки подсистема 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | ManagedApplication 16 | PersonalComputer 17 | Russian 18 | Fedor Timokhov 19 | 1.0 20 | 21 | 22 | true 23 | 24 | 25 | OSBackup 26 | true 27 | 28 | 29 | Language.Русский 30 | Managed 31 | NotAutoFree 32 | DontUse 33 | DontUse 34 | 8.3.25 35 | 36 | Русский 37 | 38 | ru 39 | Русский 40 | 41 | ru 42 | 43 | Subsystem.СервисныеПодсистемы 44 | CommonPicture.ТипыЗначений 45 | Role.ДобавлениеИзменениеПредопределенныеЗначения 46 | Role.ЧтениеПредопределенныеЗначения 47 | CommonModule.ПредопределенныеНастройки 48 | CommonModule.ПредопределенныеНастройкиПереопределяемый 49 | CommonModule.ПредопределенныеНастройкиПовтИсп 50 | Catalog.ПредопределенныеНастройки 51 | Enum.ТипыЗначенияПредопределенныхЗначений 52 | DataProcessor.ПредопределенныеНастройкиТестирование 53 | 54 | -------------------------------------------------------------------------------- /Docs/infostart-logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /ПредопределенныеЗначенияПодсистема/src/Catalogs/ПредопределенныеНастройки/ObjectModule.bsl: -------------------------------------------------------------------------------- 1 | #Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда 2 | 3 | #Область ОбработчикиСобытий 4 | 5 | Процедура ПередЗаписью(Отказ) 6 | 7 | Если ОбменДанными.Загрузка Тогда 8 | Возврат; 9 | КонецЕсли; 10 | 11 | Если ЭтоНовый() И Не ЭтоГруппа Тогда 12 | ДатаСоздания = ТекущаяДатаСеанса(); 13 | КонецЕсли; 14 | 15 | Если ТипЗначения = Перечисления.ТипыЗначенияПредопределенныхЗначений.Массив Тогда 16 | 17 | МассивЗначение = Хранилище.Получить(); 18 | Если ТипЗнч(МассивЗначение) = Тип("Массив") Тогда 19 | ПредставлениеМассива = СтрСоединить(МассивЗначение, ", "); 20 | ПредставлениеЗначения = СтрШаблон(НСтр("ru = '[%1]'"), ПредставлениеМассива); 21 | КонецЕсли; 22 | 23 | ИначеЕсли ТипЗначения = Перечисления.ТипыЗначенияПредопределенныхЗначений.ТаблицаЗначений Тогда 24 | 25 | ТаблицаЗначенийНастройки = Хранилище.Получить(); 26 | Если ТипЗнч(ТаблицаЗначенийНастройки) = Тип("ТаблицаЗначений") Тогда 27 | МассивИменКолонок = Новый Массив; 28 | Для Каждого Колонка Из ТаблицаЗначенийНастройки.Колонки Цикл 29 | МассивИменКолонок.Добавить(Колонка.Имя); 30 | КонецЦикла; 31 | 32 | МассивПредставленийСтрок = Новый Массив; 33 | 34 | ПредставлениеДанныхТаблицы = ""; 35 | Для Каждого Строка Из ТаблицаЗначенийНастройки Цикл 36 | ПредставлениеСтроки = ""; 37 | Для Каждого Колонка Из ТаблицаЗначенийНастройки.Колонки Цикл 38 | 39 | ЗначениеЯчейки = Строка[Колонка.Имя]; 40 | Если ПустаяСтрока(ПредставлениеСтроки) Тогда 41 | ПредставлениеСтроки = ЗначениеЯчейки; 42 | Иначе 43 | ПредставлениеСтроки = СтрШаблон("%1, %2", ПредставлениеСтроки, ЗначениеЯчейки); 44 | КонецЕсли; 45 | 46 | КонецЦикла; 47 | ПредставлениеСтроки = СтрШаблон("[%1]", ПредставлениеСтроки); 48 | МассивПредставленийСтрок.Добавить(ПредставлениеСтроки); 49 | КонецЦикла; 50 | 51 | ПредставлениеТаблицы = СтрСоединить(МассивПредставленийСтрок, ", "); 52 | ПредставлениеЗначения = СтрШаблон(НСтр("ru = '[%1]'"), ПредставлениеТаблицы); 53 | КонецЕсли; 54 | 55 | ИначеЕсли ТипЗначения = Перечисления.ТипыЗначенияПредопределенныхЗначений.КлючЗначение Тогда 56 | 57 | ТаблицаЗначенийНастройки = Хранилище.Получить(); 58 | Если ТипЗнч(ТаблицаЗначенийНастройки) = Тип("ТаблицаЗначений") Тогда 59 | ПредставлениеТаблицы = СтрСоединить(ТаблицаЗначенийНастройки.ВыгрузитьКолонку("Ключ"), ", "); 60 | ПредставлениеЗначения = СтрШаблон(НСтр("ru = 'Ключ и значение[%1]'"), ПредставлениеТаблицы); 61 | ИначеЕсли ТипЗнч(ТаблицаЗначенийНастройки) = Тип("Соответствие") Тогда 62 | МассивПредставлений = Новый Массив; 63 | Для Каждого КлючЗначение Из ТаблицаЗначенийНастройки Цикл 64 | 65 | КлючЗначениеПредставление = СтрШаблон(НСтр("ru = '[%1: %2]'"), КлючЗначение.Ключ, КлючЗначение.Значение); 66 | МассивПредставлений.Добавить(КлючЗначениеПредставление); 67 | 68 | КонецЦикла; 69 | ПредставлениеЗначения = СтрСоединить(МассивПредставлений, ", "); 70 | КонецЕсли; 71 | 72 | ИначеЕсли ЭтоГруппа Тогда 73 | ПредставлениеЗначения = СокрЛП(Наименование); 74 | Иначе 75 | ПредставлениеЗначения = СокрЛП(Значение); 76 | КонецЕсли; 77 | 78 | КонецПроцедуры 79 | 80 | Процедура ПриЗаписи(Отказ) 81 | 82 | Если ОбменДанными.Загрузка Тогда 83 | Возврат; 84 | КонецЕсли; 85 | 86 | ОбновитьПовторноИспользуемыеЗначения(); 87 | 88 | КонецПроцедуры 89 | 90 | #КонецОбласти 91 | 92 | #КонецЕсли 93 | 94 | -------------------------------------------------------------------------------- /ПредопределенныеЗначенияПодсистема/src/Catalogs/ПредопределенныеНастройки/Forms/ФормаЭлемента/Module.bsl: -------------------------------------------------------------------------------- 1 | 2 | #Область ОбработчикиСобытийФормы 3 | 4 | &НаСервере 5 | Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) 6 | 7 | ОтобразитьСоставнойПараметр(); 8 | ОтобразитьПараметрБулево(); 9 | ЗаполнитьИсходноеЗначение(); 10 | УстановитьВидимостьЭлементовФормы(); 11 | УстановитьОформлениеЭлементаОтображенияЗначения(); 12 | УстановитьПодсказкуПрограммногоДобавления(); 13 | 14 | КонецПроцедуры 15 | 16 | &НаКлиенте 17 | Процедура ПриОткрытии(Отказ) 18 | ПереключитьСтраницу(); 19 | КонецПроцедуры 20 | 21 | &НаКлиенте 22 | Процедура ПередЗаписью(Отказ, ПараметрыЗаписи) 23 | 24 | Если Отказ Тогда 25 | Возврат; 26 | КонецЕсли; 27 | 28 | КонецПроцедуры 29 | 30 | &НаСервере 31 | Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) 32 | 33 | Если Отказ Тогда 34 | Возврат; 35 | КонецЕсли; 36 | 37 | Если Не Объект.ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Булево") 38 | И Не Объект.ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Дата") 39 | И Не Объект.ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Строка") 40 | И Не Объект.ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Ссылка") Тогда 41 | ТекущийОбъект.Значение = Неопределено; 42 | КонецЕсли; 43 | 44 | Если Объект.ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.КлючЗначение") Тогда 45 | ПередЗаписьюНаСервереСоставнойПараметр(ТекущийОбъект); 46 | КонецЕсли; 47 | 48 | Если Объект.ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Массив") Тогда 49 | 50 | ПользовательскиеЗначения = СписокМассив.ВыгрузитьЗначения(); 51 | ТекущийОбъект.Хранилище = Новый ХранилищеЗначения(ПользовательскиеЗначения); 52 | 53 | КонецЕсли; 54 | 55 | Если Объект.ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.ТаблицаЗначений") Тогда 56 | 57 | ТекущийОбъект.Хранилище = Новый ХранилищеЗначения(РеквизитФормыВЗначение("ТаблицаНастройки")); 58 | 59 | КонецЕсли; 60 | 61 | Если Объект.ТипЗначения <> ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.ТаблицаЗначений") 62 | И Объект.ТипЗначения <> ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Массив") 63 | И Объект.ТипЗначения <> ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.КлючЗначение") Тогда 64 | ТекущийОбъект.Хранилище = Новый ХранилищеЗначения(Неопределено); 65 | ТаблицаПараметры.Очистить(); 66 | КонецЕсли; 67 | 68 | КонецПроцедуры 69 | 70 | #КонецОбласти 71 | 72 | #Область ОбработчикиСобытийЭлементовШапкиФормы 73 | 74 | &НаКлиенте 75 | Процедура ТипЗначенияПриИзменении(Элемент) 76 | //TODO: Вставить содержимое обработчика 77 | КонецПроцедуры 78 | 79 | &НаКлиенте 80 | Процедура ЗначениеБулевоПриИзменении(Элемент) 81 | 82 | Объект.Значение = ЗначениеБулево; 83 | 84 | КонецПроцедуры 85 | 86 | #КонецОбласти 87 | 88 | #Область СлужебныеПроцедурыИФункции 89 | 90 | &НаСервере 91 | Процедура ПередЗаписьюНаСервереСоставнойПараметр(ТекущийОбъект) 92 | 93 | Если ТекущийОбъект.ЭтоНовый() Тогда 94 | СтруктураХранилищаРанее = Новый Соответствие; 95 | Иначе 96 | СтруктураХранилищаРанее = ПредопределенныеНастройки.ЗначениеПредопределеннойНастройки(ТекущийОбъект.Ссылка, Ложь); 97 | КонецЕсли; 98 | 99 | Соответствие = Новый Соответствие; 100 | Для Каждого Строка Из ЭтаФорма.ТаблицаНастройки Цикл 101 | Соответствие.Вставить(Строка.Ключ, Строка.Значение); 102 | КонецЦикла; 103 | 104 | ТекущийОбъект.Хранилище = Новый ХранилищеЗначения(Соответствие, Новый СжатиеДанных()); 105 | 106 | КонецПроцедуры 107 | 108 | &НаКлиенте 109 | Процедура ПереключитьСтраницу() 110 | 111 | Если Объект.ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Булево") Тогда 112 | НоваяСтраница = Элементы.СтраницаЗначениеБулево; 113 | 114 | ИначеЕсли Объект.ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Строка") Тогда 115 | НоваяСтраница = Элементы.СтраницаСтрока; 116 | 117 | ИначеЕсли Объект.ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Ссылка") Тогда 118 | НоваяСтраница = Элементы.СтраницаПараметр; 119 | 120 | ИначеЕсли Объект.ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Массив") Тогда 121 | НоваяСтраница = Элементы.СтраницаМассив; 122 | 123 | ИначеЕсли Объект.ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.КлючЗначение") Тогда 124 | НоваяСтраница = Элементы.СтраницаСоставной; 125 | 126 | ИначеЕсли Объект.ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Дата") Тогда 127 | НоваяСтраница = Элементы.СтраницаПараметр; 128 | 129 | ИначеЕсли Объект.ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.ТаблицаЗначений") Тогда 130 | НоваяСтраница = Элементы.СтраницаСоставной; 131 | 132 | Иначе 133 | НоваяСтраница = Элементы.СтраницаПараметр; 134 | КонецЕсли; 135 | 136 | 137 | Если Объект.ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Булево") Тогда 138 | // Ничего не надо 139 | ИначеЕсли Объект.ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Строка") Тогда 140 | 141 | ДоступныеТипы = Новый Массив; 142 | ДоступныеТипы.Добавить("Строка"); 143 | Элементы.ЗначениеСтрока.ОграничениеТипа = Новый ОписаниеТипов(ДоступныеТипы); 144 | 145 | ИначеЕсли Объект.ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Ссылка") Тогда 146 | 147 | //Элементы.Значение.ОграничениеТипа = Новый ОписаниеТипов("СправочникСсылка.ПредопределенныеНастройки"); 148 | 149 | КонецЕсли; 150 | 151 | Если Элементы.ГруппаСтраницы.ТекущаяСтраница <> НоваяСтраница Тогда 152 | Элементы.ГруппаСтраницы.ТекущаяСтраница = НоваяСтраница; 153 | КонецЕсли; 154 | 155 | Для Каждого Элемент Из Элементы.ГруппаСтраницы.ПодчиненныеЭлементы Цикл 156 | Если Элемент = НоваяСтраница Тогда 157 | Элемент.Видимость = Истина; 158 | Иначе 159 | Элемент.Видимость = Ложь; 160 | КонецЕсли; 161 | КонецЦикла; 162 | 163 | Элементы.ГруппаСтраницы.ОтображениеСтраниц = ОтображениеСтраницФормы.Нет; 164 | 165 | КонецПроцедуры 166 | 167 | &НаСервере 168 | Процедура ОтобразитьСоставнойПараметр() 169 | 170 | ОбъектОбъект = РеквизитФормыВЗначение("Объект"); 171 | ЗначениеХранилища = ОбъектОбъект.Хранилище.Получить(); 172 | 173 | Если Объект.ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.ТаблицаЗначений") Тогда 174 | 175 | ЭтоТаблицаЗначений = Истина; 176 | ОтобразитьТаблицуЗначения(ЗначениеХранилища); 177 | 178 | ИначеЕсли Объект.ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.КлючЗначение") Тогда 179 | 180 | ТаблицаЗначений = Новый ТаблицаЗначений; 181 | ТаблицаЗначений.Колонки.Добавить("Ключ"); 182 | ТаблицаЗначений.Колонки.Добавить("Значение"); 183 | 184 | Для Каждого Элемент Из ЗначениеХранилища Цикл 185 | НоваяСтрока = ТаблицаЗначений.Добавить(); 186 | НоваяСтрока.Ключ = Элемент.Ключ; 187 | НоваяСтрока.Значение = Элемент.Значение; 188 | КонецЦикла; 189 | 190 | ОтобразитьТаблицуЗначения(ТаблицаЗначений); 191 | 192 | КонецЕсли; 193 | 194 | КонецПроцедуры 195 | 196 | &НаСервере 197 | Процедура ОтобразитьТаблицуЗначения(ЗначениеХранилища) 198 | 199 | ДобавляемыеРеквизиты = Новый Массив; 200 | ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("ТаблицаНастройки", Новый ОписаниеТипов("ТаблицаЗначений"))); 201 | 202 | Для Каждого Колонка Из ЗначениеХранилища.Колонки Цикл 203 | ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы(Колонка.Имя, Колонка.ТипЗначения, "ТаблицаНастройки", Колонка.Заголовок)); 204 | КонецЦикла; 205 | 206 | ИзменитьРеквизиты(ДобавляемыеРеквизиты, Новый Массив); 207 | 208 | Элементы.ТаблицаПараметры.Видимость = Ложь; 209 | 210 | ТаблицаФормы = Элементы.Добавить("ТаблицаНастройки", Тип("ТаблицаФормы"), Элементы.СтраницаСоставной); 211 | ТаблицаФормы.ПутьКДанным = "ТаблицаНастройки"; 212 | 213 | Для Каждого Колонка Из ЗначениеХранилища.Колонки Цикл 214 | ПолеВвода = Элементы.Добавить("ТаблицаНастройки" + Колонка.Имя, Тип("ПолеФормы"), Элементы.ТаблицаНастройки); 215 | ПолеВвода.Вид = ВидПоляФормы.ПолеВвода; 216 | ПолеВвода.ПутьКДанным = "ТаблицаНастройки." + Колонка.Имя; 217 | КонецЦикла; 218 | 219 | Для Каждого СтрокаХранилища Из ЗначениеХранилища Цикл 220 | ЗаполнитьЗначенияСвойств(ЭтотОбъект.ТаблицаНастройки.Добавить(), СтрокаХранилища); 221 | КонецЦикла; 222 | 223 | КонецПроцедуры 224 | 225 | &НаСервере 226 | Процедура ОтобразитьПараметрБулево() 227 | 228 | Если ТипЗнч(Объект.Значение) = Тип("Булево") Тогда 229 | Элементы.ЗначениеБулево.Заголовок = Объект.Наименование; 230 | ЗначениеБулево = Объект.Значение 231 | КонецЕсли; 232 | 233 | КонецПроцедуры 234 | 235 | &НаСервере 236 | Процедура УстановитьОформлениеЭлементаОтображенияЗначения() 237 | 238 | Если Объект.ТипЗначения = Перечисления.ТипыЗначенияПредопределенныхЗначений.Массив Тогда 239 | 240 | ХранилищеЗначений = РеквизитФормыВЗначение("Объект").Хранилище; 241 | МассивЗначений = ХранилищеЗначений.Получить(); 242 | Если ТипЗнч(МассивЗначений) = Тип("Массив") Тогда 243 | Для Каждого Элемент Из МассивЗначений Цикл 244 | СписокМассив.Добавить(Элемент); 245 | КонецЦикла; 246 | КонецЕсли; 247 | 248 | КонецЕсли; 249 | 250 | Если Объект.Ссылка.Пустая() Тогда 251 | Возврат; 252 | КонецЕсли; 253 | 254 | КонецПроцедуры 255 | 256 | &НаСервере 257 | Процедура ЗаполнитьИсходноеЗначение() 258 | 259 | Ссылка = Объект.Ссылка; 260 | Если Ссылка.Пустая() Тогда 261 | Возврат; 262 | КонецЕсли; 263 | 264 | ТаблицаОписанияПредопределенныхНастроек = ПредопределенныеНастройки.НоваяТаблицаПредопределенныхНастроек(); 265 | ПредопределенныеНастройки.ИнициализироватьТаблицуПредопределенныхНастроек(ТаблицаОписанияПредопределенныхНастроек); 266 | 267 | СтрокаТекущейНастройки = ТаблицаОписанияПредопределенныхНастроек.Найти(Объект.ИмяНастройки, "ИмяНастройки"); 268 | Если СтрокаТекущейНастройки = Неопределено Тогда 269 | Возврат; 270 | Иначе 271 | ИсходноеЗначение = СтрокаТекущейНастройки.Значение; 272 | СозданПрограммно = Истина; 273 | КонецЕсли; 274 | 275 | КонецПроцедуры 276 | 277 | &НаСервере 278 | Процедура УстановитьВидимостьЭлементовФормы() 279 | 280 | Если СозданПрограммно Тогда 281 | Элементы.ГруппаПредупреждение.Видимость = Ложь; 282 | ЗначенияРазличаются = (Объект.Значение <> ИсходноеЗначение); 283 | Элементы.ГруппаИнформация.Видимость = ЗначенияРазличаются; 284 | Иначе 285 | Элементы.ГруппаПредупреждение.Видимость = Истина; 286 | Элементы.ГруппаИнформация.Видимость = Ложь; 287 | КонецЕсли; 288 | 289 | КонецПроцедуры 290 | 291 | &НаСервере 292 | Процедура УстановитьПодсказкуПрограммногоДобавления() 293 | 294 | Если ЗначениеЗаполнено(Объект.Ссылка) Тогда 295 | Возврат; 296 | КонецЕсли; 297 | 298 | Идентификатор = Новый УникальныйИдентификатор; 299 | // Создаем подсказку в виде текста, как шаблон для программного описания добавления элемента 300 | ШаблонПодсказки = НСтр("ru = 'Новые элементы справочника должны создаваться через программыный интерфейс: 301 | | ПредопределенныеНастройкиПереопределяемый.ПриЗаполненииТаблицыПредопределенныхНастроек 302 | | 303 | | Пример для строкового парметра: 304 | | 305 | | НоваяНастройка = ТаблицаНастроек.Добавить(); 306 | | НоваяНастройка.Идентификатор = Новый УникальныйИдентификатор(""%1""); 307 | | НоваяНастройка.Наименование = НСтр(""ru =''<Наименование настройки>''""); 308 | | НоваяНастройка.ИмяНастройки = ""<ИмяНастройки>""; 309 | | НоваяНастройка.ТипЗначения = ПредопределенноеЗначение(""Перечисление.ТипыЗначенияПредопределенныхЗначений.Строка""); 310 | | НоваяНастройка.Описание = НСтр(""ru =''<Описание настройки>''""); 311 | | НоваяНастройка.Значение = ""Значение""; 312 | | 313 | | Идентификатор уже сгенерирован. Просто скопируй и вставь в метод ""ПриЗаполненииТаблицыПредопределенныхНастроек"".'"); 314 | Подсказка = СтрШаблон(ШаблонПодсказки, СокрЛП(Идентификатор)); 315 | Объект.Описание = Подсказка; 316 | 317 | КонецПроцедуры 318 | 319 | #КонецОбласти 320 | -------------------------------------------------------------------------------- /ПредопределенныеЗначенияПодсистема/src/Catalogs/ПредопределенныеНастройки/ПредопределенныеНастройки.mdo: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | ПредопределенныеНастройки 11 | 12 | ru 13 | Предопределенные настройки 14 | 15 | true 16 | Catalog.ПредопределенныеНастройки.StandardAttribute.Description 17 | Catalog.ПредопределенныеНастройки.StandardAttribute.Code 18 | DontUse 19 | 20 | Use 21 | PredefinedDataName 22 | 23 | Use 24 | 25 | 26 | 27 | 28 | Use 29 | Predefined 30 | 31 | Use 32 | 33 | 34 | 35 | 36 | Use 37 | Ref 38 | 39 | Use 40 | 41 | 42 | 43 | 44 | Use 45 | DeletionMark 46 | 47 | Use 48 | 49 | 50 | 51 | 52 | Use 53 | IsFolder 54 | 55 | Use 56 | 57 | 58 | 59 | 60 | Use 61 | Owner 62 | true 63 | 64 | ShowError 65 | Use 66 | 67 | 68 | 69 | 70 | Use 71 | Parent 72 | 73 | ru 74 | Родитель 75 | 76 | true 77 | 78 | Use 79 | 80 | 81 | 82 | 83 | Use 84 | Description 85 | 86 | ShowError 87 | Use 88 | 89 | 90 | 91 | 92 | Use 93 | Code 94 | 95 | Use 96 | 97 | 98 | 99 | Use 100 | Managed 101 | Use 102 | 103 | ru 104 | Предопределенные настройки 105 | 106 | true 107 | 2 108 | true 109 | 9 110 | 55 111 | String 112 | Variable 113 | true 114 | true 115 | AsDescription 116 | InDialog 117 | BothWays 118 | Catalog.ПредопределенныеНастройки.Form.ФормаЭлемента 119 | Catalog.ПредопределенныеНастройки.Form.ФормаСписка 120 | 121 | Значение 122 | 123 | ru 124 | Значение 125 | 126 | 127 | Boolean 128 | String 129 | Date 130 | Number 131 | AnyRef 132 | 133 | 18 134 | 3 135 | 136 | 137 | 256 138 | 139 | 140 | 141 | 142 | 143 | 144 | Use 145 | Use 146 | 147 | 148 | Хранилище 149 | 150 | ru 151 | Хранилище 152 | 153 | 154 | ValueStorage 155 | 156 | 157 | 158 | 159 | Use 160 | Use 161 | 162 | 163 | ИмяНастройки 164 | 165 | ru 166 | Имя настройки 167 | 168 | 169 | String 170 | 171 | 100 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | Index 180 | Use 181 | ForFolderAndItem 182 | Use 183 | 184 | 185 | ТипЗначения 186 | 187 | ru 188 | Тип значения 189 | 190 | 191 | EnumRef.ТипыЗначенияПредопределенныхЗначений 192 | 193 | 194 | 195 | 196 | Use 197 | ForFolderAndItem 198 | Use 199 | 200 | 201 | Описание 202 | 203 | ru 204 | Описание 205 | 206 | 207 | String 208 | 209 | 1024 210 | 211 | 212 | 213 | 214 | 215 | Use 216 | Use 217 | 218 | 219 | ПредставлениеЗначения 220 | 221 | ru 222 | Представление значения 223 | 224 | 225 | String 226 | 227 | 100 228 | 229 | 230 | 231 | 232 | 233 | Use 234 | ForFolderAndItem 235 | Use 236 | 237 | 238 | ДатаСоздания 239 | 240 | ru 241 | Дата создания 242 | 243 | 244 | Date 245 | 246 | Date 247 | 248 | 249 | 250 | 251 | 252 | Use 253 | Use 254 | 255 | 256 | 257 | 258 | 259 | 260 | Параметры 261 | 262 | ru 263 | Параметры 264 | 265 | 266 | Use 267 | LineNumber 268 | 269 | Use 270 | 271 | 272 | 273 | 274 | Значение 275 | 276 | ru 277 | Значение 278 | 279 | 280 | Boolean 281 | String 282 | Date 283 | Number 284 | AnyRef 285 | 286 | 18 287 | 3 288 | 289 | 290 | 256 291 | 292 | 293 | 294 | 295 | 296 | Use 297 | Use 298 | 299 | 300 | 301 | ФормаЭлемента 302 | 303 | ru 304 | Форма элемента 305 | 306 | PersonalComputer 307 | MobileDevice 308 | 309 | 310 | ФормаСписка 311 | 312 | ru 313 | Форма списка 314 | 315 | PersonalComputer 316 | MobileDevice 317 | 318 | 319 | -------------------------------------------------------------------------------- /ПредопределенныеЗначенияПодсистема/src/CommonModules/ПредопределенныеНастройки/Module.bsl: -------------------------------------------------------------------------------- 1 | #Область ПрограммныйИнтерфейс 2 | 3 | // Возвращает значение предопределенной настройки по ее имени. 4 | // 5 | // Параметры: 6 | // ИмяНастройки - Строка - Имя настройки. 7 | // ВызыватьИсключение - Булево - Флаг, указывающий, нужно ли вызывать исключение, если настройка не найдена. 8 | // 9 | // Возвращаемое значение: 10 | // Произвольный - Значение настройки или Справочник.ПредопределенныеНастройки.ПустаяСсылка, если настройка не найдена и ВызыватьИсключение = Ложь. 11 | // 12 | Функция Значение(ИмяНастройки, ВызыватьИсключение = Ложь) Экспорт 13 | 14 | Возврат ПредопределенныеНастройкиПовтИсп.Значение(ИмяНастройки, ВызыватьИсключение); 15 | 16 | КонецФункции 17 | 18 | // Возвращает ссылку на предопределенную настройку по имени. 19 | // 20 | // Параметры: 21 | // ИмяНастройки - Строка - Имя настройки 22 | // 23 | // Возвращаемое значение: 24 | // СправочникСсылка.ПредопределенныеНастройки - Ссылка на предопределенную настройку 25 | // 26 | Функция НастройкаПоИмени(ИмяНастройки) Экспорт 27 | 28 | Возврат ПредопределенныеНастройкиПовтИсп.СсылкаПредопределеннойНастройки(ИмяНастройки); 29 | 30 | КонецФункции 31 | 32 | // Инициализирует таблицу предопределенных настроек. 33 | // 34 | // Параметры: 35 | // ТаблицаОписанияПредопределенныхНастроек - ТаблицаЗначений - Таблица для заполнения предопределенными настройками 36 | Процедура ИнициализироватьТаблицуПредопределенныхНастроек(ТаблицаОписанияПредопределенныхНастроек) Экспорт 37 | 38 | ТаблицаОписанияПредопределенныхНастроек = НоваяТаблицаПредопределенныхНастроек(); 39 | ЗаполнитьТаблицуПредопределенныхНастроек(ТаблицаОписанияПредопределенныхНастроек); 40 | ПредопределенныеНастройкиПереопределяемый.ПриЗаполненииТаблицыПредопределенныхНастроек(ТаблицаОписанияПредопределенныхНастроек); 41 | 42 | КонецПроцедуры 43 | 44 | // Возвращает новую таблицу значений с предопределенными настройками. 45 | // 46 | // Возвращаемое значение: 47 | // ТаблицаЗначений - таблица со следующими колонками: 48 | // ИмяНастройкиРодителя - Строка - имя настройки ролдителя. 49 | // Идентификатор - УникальныйИдентификатор - уникальный идентификатор настройки. 50 | // ИмяНастройки - Строка - имя настройки. 51 | // Хранилище - ValueStorage - хранилище значений. 52 | // Наименование - Строка - содержание настройки. 53 | // Описание - Строка - описание настройки. 54 | // ТипЗначения - ПеречислениеСсылка.ТипыЗначенияПредопределенныхЗначений - ссылка на тип значения. 55 | // Значение - Произваольнй - значение параметра настройки. 56 | // Удалена - Булево - признак удаления настройки. 57 | Функция НоваяТаблицаПредопределенныхНастроек() Экспорт 58 | 59 | ТаблицаНастроек = Новый ТаблицаЗначений(); 60 | ТаблицаНастроек.Колонки.Добавить("ИмяНастройкиРодителя", Новый ОписаниеТипов("Строка")); 61 | ТаблицаНастроек.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("УникальныйИдентификатор")); 62 | ТаблицаНастроек.Колонки.Добавить("ИмяНастройки", Новый ОписаниеТипов("Строка")); 63 | ТаблицаНастроек.Колонки.Добавить("Хранилище", Новый ОписаниеТипов("ValueStorage")); 64 | ТаблицаНастроек.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка")); 65 | ТаблицаНастроек.Колонки.Добавить("Описание", Новый ОписаниеТипов("Строка")); 66 | ТаблицаНастроек.Колонки.Добавить("ТипЗначения", Новый ОписаниеТипов("ПеречислениеСсылка.ТипыЗначенияПредопределенныхЗначений")); 67 | ТаблицаНастроек.Колонки.Добавить("Значение"); 68 | ТаблицаНастроек.Колонки.Добавить("Удалена", Новый ОписаниеТипов("Булево")); 69 | 70 | Возврат ТаблицаНастроек; 71 | 72 | КонецФункции 73 | 74 | // Процедура обновления настроек в базе данных. 75 | // Параметры: 76 | // ТаблицаНастроекВБазе - ТаблицаЗначений - содержащая данные для обновления настроек. Обязательный параметр. 77 | // Идентификатор: Строка - уникальный идентификатор настройки. 78 | // ИмяНастройки: Строка - наименование настройки. 79 | // Хранилище: ValueStorage - хранилище значений. 80 | // Наименование: Строка - содержание настройки. 81 | // Описание - Строка - описание настройки. 82 | // ТипЗначения: Перечисление.ТипыЗначенияПредопределенныхЗначений - ссылка на тип значения. 83 | // Значение: значение параметра. 84 | Процедура ОбновитьНастройкиВБазе(ТаблицаНастроекВБазе) Экспорт 85 | 86 | Для Каждого СтрокаНастройки Из ТаблицаНастроекВБазе Цикл 87 | 88 | НайденныйЭлемент = Справочники.ПредопределенныеНастройки.ПолучитьСсылку(СтрокаНастройки.Идентификатор); 89 | 90 | НайденныйРодитель = Справочники.ПредопределенныеНастройки.ПустаяСсылка(); 91 | Если ЗначениеЗаполнено(СтрокаНастройки.ИмяНастройкиРодителя) Тогда 92 | НайденныйРодитель = Справочники.ПредопределенныеНастройки.НайтиПоРеквизиту("ИмяНастройки", СтрокаНастройки.ИмяНастройкиРодителя); 93 | КонецЕсли; 94 | 95 | Если НайденныйЭлемент = Справочники.ПредопределенныеНастройки.ПустаяСсылка() Тогда 96 | НайденныйЭлемент = Справочники.ПредопределенныеНастройки.НайтиПоРеквизиту("ИмяНастройки", СтрокаНастройки.ИмяНастройки); 97 | КонецЕсли; 98 | 99 | Если СтрокаНастройки.Удалена Тогда 100 | Если НайденныйЭлемент <> Справочники.ПредопределенныеНастройки.ПустаяСсылка() 101 | И СсылкаСуществует(НайденныйЭлемент) Тогда 102 | 103 | МассивСсылок = Новый Массив; 104 | МассивСсылок.Добавить(НайденныйЭлемент); 105 | 106 | НайденныеСсылки = НайтиПоСсылкам(МассивСсылок); 107 | Если НайденныеСсылки.Количество() > 0 Тогда 108 | Шаблон = НСтр("ru = 'Настройка ""%1"" не может быть удалена, так как она используется в других настройках.'"); 109 | ТекстСообщение = СтрШаблон(Шаблон, СтрокаНастройки.ИмяНастройки); 110 | ВызватьИсключение ТекстСообщение; 111 | КонецЕсли; 112 | 113 | ОбъектНастройки = НайденныйЭлемент.ПолучитьОбъект(); 114 | ОбъектНастройки.Удалить(); 115 | 116 | КонецЕсли; 117 | Продолжить; 118 | КонецЕсли; 119 | 120 | Если НайденныйЭлемент <> Справочники.ПредопределенныеНастройки.ПустаяСсылка() 121 | И СсылкаСуществует(НайденныйЭлемент) Тогда 122 | Элемент = НайденныйЭлемент.ПолучитьОбъект(); 123 | ИначеЕсли СтрокаНастройки.ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.КаталогПредопределенныхНастроек") Тогда 124 | 125 | Элемент = Справочники.ПредопределенныеНастройки.СоздатьГруппу(); 126 | СсылкаНового = Справочники.ПредопределенныеНастройки.ПолучитьСсылку(СтрокаНастройки.Идентификатор); 127 | Элемент.УстановитьСсылкуНового(СсылкаНового); 128 | Элемент.ТипЗначения = СтрокаНастройки.ТипЗначения; 129 | Элемент.ИмяНастройки = СтрокаНастройки.ИмяНастройки; 130 | Элемент.Наименование = СтрокаНастройки.Наименование; 131 | Элемент.Родитель = НайденныйРодитель; 132 | Элемент.Записать(); 133 | Продолжить; 134 | Иначе 135 | Элемент = Справочники.ПредопределенныеНастройки.СоздатьЭлемент(); 136 | СсылкаНового = Справочники.ПредопределенныеНастройки.ПолучитьСсылку(СтрокаНастройки.Идентификатор); 137 | Элемент.УстановитьСсылкуНового(СсылкаНового); 138 | КонецЕсли; 139 | 140 | Элемент.Родитель = НайденныйРодитель; 141 | Элемент.ТипЗначения = СтрокаНастройки.ТипЗначения; 142 | Элемент.ИмяНастройки = СтрокаНастройки.ИмяНастройки; 143 | Элемент.Наименование = СтрокаНастройки.Наименование; 144 | Элемент.Значение = СтрокаНастройки.Значение; 145 | Элемент.Описание = СтрокаНастройки.Описание; 146 | Элемент.Хранилище = СтрокаНастройки.Хранилище; 147 | 148 | Элемент.ТипЗначения = ТипЗначенияПредопределеннойНастройки (СтрокаНастройки.Значение); 149 | Если Элемент.ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.КлючЗначение") 150 | ИЛИ Элемент.ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.ТаблицаЗначений") 151 | ИЛИ Элемент.ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Массив") Тогда 152 | 153 | Элемент.Хранилище = Новый ХранилищеЗначения(СтрокаНастройки.Значение); 154 | КонецЕсли; 155 | 156 | Элемент.Записать(); 157 | 158 | КонецЦикла; 159 | 160 | КонецПроцедуры 161 | 162 | // Создает отсутствующие предопределенные настройки в базе данных. 163 | // 164 | // Параметры: 165 | // ТаблицаОписанияПредопределенныхНастроек - ТаблицаЗначений, Неопределено - таблица с описанием предопределенных настроек 166 | Процедура СоздатьОтсутствующиеПредопределенныеНастройки(ТаблицаОписанияПредопределенныхНастроек = Неопределено) Экспорт 167 | 168 | Если ТаблицаОписанияПредопределенныхНастроек = Неопределено Тогда 169 | ИнициализироватьТаблицуПредопределенныхНастроек(ТаблицаОписанияПредопределенныхНастроек); 170 | КонецЕсли; 171 | 172 | ТаблицаОтсутствующихНастроекВБазе = ОтсутствующиеНастройкиВБазе(ТаблицаОписанияПредопределенныхНастроек); 173 | 174 | ОбновитьНастройкиВБазе(ТаблицаОтсутствующихНастроекВБазе); 175 | 176 | КонецПроцедуры 177 | 178 | #КонецОбласти 179 | 180 | #Область СлужебныйПрограммныйИнтерфейс 181 | 182 | // Определяет тип значения предопределенной настройки. 183 | // 184 | // Параметры: 185 | // Значение - Произвольный - Значение предопределенной настройки, для которого необходимо определить тип. 186 | // 187 | // Возвращаемое значение: 188 | // ПеречислениеСсылка.ТипыЗначенияПредопределенныхЗначений - Тип значения предопределенной настройки. 189 | Функция ТипЗначенияПредопределеннойНастройки(Значение) Экспорт 190 | 191 | Если ТипЗнч(Значение) = Тип("Строка") Тогда 192 | Возврат ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Строка"); 193 | ИначеЕсли ТипЗнч(Значение) = Тип("Булево") Тогда 194 | Возврат ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Булево"); 195 | ИначеЕсли ТипЗнч(Значение) = Тип("Массив") Тогда 196 | Возврат ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Массив"); 197 | ИначеЕсли ТипЗнч(Значение) = Тип("Соответствие") Тогда 198 | Возврат ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.КлючЗначение"); 199 | ИначеЕсли Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(Значение)) Тогда 200 | Возврат ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Ссылка"); 201 | ИначеЕсли Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(Значение)) Тогда 202 | Возврат ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Ссылка"); 203 | ИначеЕсли ТипЗнч(Значение) = Тип("ТаблицаЗначений") Тогда 204 | 205 | Если Значение.Колонки.Найти("Ключ") = Неопределено Или Значение.Колонки.Найти("Значение") = Неопределено Тогда 206 | Возврат ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.ТаблицаЗначений"); 207 | Иначе 208 | Возврат ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.КлючЗначение"); 209 | КонецЕсли; 210 | ИначеЕсли ТипЗнч(Значение) = Тип("Дата") Тогда 211 | Возврат ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Дата"); 212 | Иначе 213 | Возврат Неопределено; 214 | КонецЕсли; 215 | 216 | КонецФункции 217 | 218 | // Возвращает значение предопределенной настройки по ее имени. 219 | // 220 | // Параметры: 221 | // ИмяНастройки - Строка - имя предопределенной настройки 222 | // ВызыватьИсключение - Булево - признак вызова исключения при отсутствии настройки 223 | // 224 | // Возвращаемое значение: 225 | // Произвольный- значение предопределенной настройки или Неопределено 226 | Функция ЗначениеПредопределеннойНастройкиПоИмени(ИмяНастройки, ВызыватьИсключение) Экспорт 227 | 228 | НастройкаСсылка = ПредопределенныеНастройкиПовтИсп.СсылкаПредопределеннойНастройки(ИмяНастройки); 229 | Возврат ЗначениеПредопределеннойНастройки(НастройкаСсылка, ВызыватьИсключение); 230 | 231 | КонецФункции 232 | 233 | // Возвращает значение предопределенной настройки по ссылке на нее. 234 | // 235 | // Параметры: 236 | // НастройкаСсылка - СправочникСсылка.ПредопределенныеНастройки - Ссылка на предопределенную настройку 237 | // ВызыватьИсключение - Булево - Флаг, указывающий, вызывать ли исключение, если настройка отсутствует 238 | // 239 | // Возвращаемое значение: 240 | // Произвольный - Значение предопределенной настройки 241 | Функция ЗначениеПредопределеннойНастройки(НастройкаСсылка, ВызыватьИсключение) Экспорт 242 | 243 | Запрос = Новый Запрос; 244 | Запрос.Текст = 245 | "ВЫБРАТЬ РАЗРЕШЕННЫЕ 246 | | ПредопределенныеНастройки.Значение КАК Значение 247 | |ИЗ 248 | | Справочник.ПредопределенныеНастройки КАК ПредопределенныеНастройки 249 | |ГДЕ 250 | | ПредопределенныеНастройки.Ссылка = &Ссылка 251 | | И ПредопределенныеНастройки.ТипЗначения <> ЗНАЧЕНИЕ(Перечисление.ТипыЗначенияПредопределенныхЗначений.Массив) 252 | | И ПредопределенныеНастройки.ТипЗначения <> ЗНАЧЕНИЕ(Перечисление.ТипыЗначенияПредопределенныхЗначений.ТаблицаЗначений) 253 | | И ПредопределенныеНастройки.ТипЗначения <> ЗНАЧЕНИЕ(Перечисление.ТипыЗначенияПредопределенныхЗначений.КлючЗначение) 254 | | 255 | |ОБЪЕДИНИТЬ ВСЕ 256 | | 257 | |ВЫБРАТЬ 258 | | ПредопределенныеНастройки.Хранилище 259 | |ИЗ 260 | | Справочник.ПредопределенныеНастройки КАК ПредопределенныеНастройки 261 | |ГДЕ 262 | | ПредопределенныеНастройки.Ссылка = &Ссылка 263 | | И (ПредопределенныеНастройки.ТипЗначения = ЗНАЧЕНИЕ(Перечисление.ТипыЗначенияПредопределенныхЗначений.Массив) 264 | | ИЛИ ПредопределенныеНастройки.ТипЗначения = ЗНАЧЕНИЕ(Перечисление.ТипыЗначенияПредопределенныхЗначений.ТаблицаЗначений) 265 | | ИЛИ ПредопределенныеНастройки.ТипЗначения = ЗНАЧЕНИЕ(Перечисление.ТипыЗначенияПредопределенныхЗначений.КлючЗначение)) "; 266 | 267 | Запрос.УстановитьПараметр("Ссылка", НастройкаСсылка); 268 | 269 | РезультатЗапроса = Запрос.Выполнить(); 270 | 271 | Если РезультатЗапроса.Пустой() Тогда 272 | ИмяНастройки = НастройкаСсылка.ИмяНастройки; 273 | Возврат РезультатДляОтсутствующейНастройки(ИмяНастройки, ВызыватьИсключение); 274 | КонецЕсли; 275 | 276 | ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); 277 | 278 | Пока ВыборкаДетальныеЗаписи.Следующий() Цикл 279 | ЗначениеНастройки = ВыборкаДетальныеЗаписи.Значение; 280 | Если ТипЗнч(ЗначениеНастройки) = Тип("ХранилищеЗначения") Тогда 281 | ЗначениеНастройки = ЗначениеНастройки.Получить(); 282 | Иначе 283 | ЗначениеНастройки = ВыборкаДетальныеЗаписи.Значение; 284 | КонецЕсли; 285 | Возврат ЗначениеНастройки; 286 | КонецЦикла; 287 | 288 | КонецФункции 289 | 290 | // Возвращает результат для отсутствующей настройки. 291 | // 292 | // Параметры: 293 | // ИмяНастройки - Строка - имя отсутствующей настройки 294 | // ВызыватьИсключение - Булево - признак вызова исключения 295 | // 296 | // Возвращаемое значение: 297 | // СправочникСсылка.ПредопределенныеНастройки - ссылка на пустую настройку или исключение, если ВызыватьИсключение = Истина 298 | Функция РезультатДляОтсутствующейНастройки(ИмяНастройки, ВызыватьИсключение) Экспорт 299 | 300 | Если ВызыватьИсключение Тогда 301 | Сообщение = СтрШаблон( 302 | НСтр("ru ='Настройка с именем ""%1"" не найдена.'"), 303 | ИмяНастройки); 304 | ВызватьИсключение Сообщение; 305 | Иначе 306 | Возврат ПредопределенноеЗначение("Справочник.ПредопределенныеНастройки.ПустаяСсылка"); 307 | КонецЕсли; 308 | 309 | КонецФункции 310 | 311 | // Заполняет таблицу описаний предопределенных настроек. 312 | // 313 | // Параметры: 314 | // ТаблицаОписанияПредопределенныхНастроек - ТаблицаЗначений - Таблица для заполнения описания предопределенных настроек 315 | Процедура ЗаполнитьТаблицуПредопределенныхНастроек(ТаблицаОписанияПредопределенныхНастроек) Экспорт 316 | 317 | КонецПроцедуры 318 | 319 | // Возвращает таблицу предопределенных настроек, отсутствующих в базе данных. 320 | // 321 | // Параметры: 322 | // ТаблицаОписанияПредопределенныхНастроек - ТаблицаЗначений - таблица с описанием предопределенных настроек 323 | // 324 | // Возвращаемое значение: 325 | // ТаблицаЗначений - таблица отсутствующих настроек в базе данных 326 | Функция ОтсутствующиеНастройкиВБазе(ТаблицаОписанияПредопределенныхНастроек) Экспорт 327 | 328 | ТаблицаНовыхНастроек = НоваяТаблицаПредопределенныхНастроек(); 329 | 330 | Для Каждого СтрокаНастройки Из ТаблицаОписанияПредопределенныхНастроек Цикл 331 | 332 | Элемент = Справочники.ПредопределенныеНастройки.ПолучитьСсылку(СтрокаНастройки.Идентификатор); 333 | Если Не СсылкаСуществует(Элемент) Тогда 334 | Элемент = Справочники.ПредопределенныеНастройки.НайтиПоРеквизиту("ИмяНастройки", СтрокаНастройки.ИмяНастройки); 335 | КонецЕсли; 336 | 337 | Если ЗначениеЗаполнено(Элемент) = Ложь Тогда 338 | НоваяНастройка = ТаблицаНовыхНастроек.Добавить(); 339 | ЗаполнитьЗначенияСвойств(НоваяНастройка, СтрокаНастройки); 340 | КонецЕсли; 341 | 342 | КонецЦикла; 343 | 344 | Возврат ТаблицаНовыхНастроек; 345 | 346 | КонецФункции 347 | 348 | // Проверяет физическое наличие записи в информационной базе данных о переданном значении ссылки. 349 | // 350 | // Параметры: 351 | // ПроверяемаяСсылка - ЛюбаяСсылка - значение любой ссылки информационной базы данных. 352 | // 353 | // Возвращаемое значение: 354 | // Булево - Истина, если существует. 355 | // 356 | Функция СсылкаСуществует(ПроверяемаяСсылка) Экспорт 357 | 358 | ТекстЗапроса = " 359 | |ВЫБРАТЬ ПЕРВЫЕ 1 360 | | 1 361 | |ИЗ 362 | | [ИмяТаблицы] 363 | |ГДЕ 364 | | Ссылка = &Ссылка 365 | |"; 366 | 367 | ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "[ИмяТаблицы]", ПроверяемаяСсылка.Метаданные().ПолноеИмя()); 368 | 369 | Запрос = Новый Запрос; 370 | Запрос.Текст = ТекстЗапроса; 371 | Запрос.УстановитьПараметр("Ссылка", ПроверяемаяСсылка); 372 | 373 | УстановитьПривилегированныйРежим(Истина); 374 | 375 | Возврат НЕ Запрос.Выполнить().Пустой(); 376 | 377 | КонецФункции 378 | 379 | #КонецОбласти -------------------------------------------------------------------------------- /ПредопределенныеЗначенияПодсистема/src/Catalogs/ПредопределенныеНастройки/Forms/ФормаСписка/Form.form: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Список 5 | 1 6 | true 7 | true 8 | 9 | true 10 | 11 | 12 | Список 13 | 14 | true 15 | None 16 | 17 | Код 18 | 17 19 | true 20 | true 21 | 22 | 23 | Список.Код 24 | 25 | 26 | КодРасширеннаяПодсказка 27 | 19 28 | true 29 | true 30 | 31 | true 32 | 33 | Label 34 | true 35 | true 36 | 37 | Left 38 | 39 | 40 | 41 | КодКонтекстноеМеню 42 | 18 43 | true 44 | true 45 | 46 | true 47 | 48 | true 49 | 50 | LabelField 51 | Enter 52 | true 53 | Left 54 | true 55 | 56 | 8 57 | true 58 | true 59 | 60 | 61 | 62 | ИмяНастройки 63 | 41 64 | 65 | <key>ru</key> 66 | <value>Имя</value> 67 | 68 | true 69 | true 70 | 71 | true 72 | 73 | 74 | Список.ИмяНастройки 75 | 76 | 77 | ИмяНастройкиРасширеннаяПодсказка 78 | 43 79 | true 80 | true 81 | 82 | true 83 | 84 | Label 85 | true 86 | true 87 | 88 | Left 89 | 90 | 91 | 92 | ИмяНастройкиКонтекстноеМеню 93 | 42 94 | true 95 | true 96 | 97 | true 98 | 99 | true 100 | 101 | LabelField 102 | Enter 103 | true 104 | Left 105 | true 106 | 107 | true 108 | true 109 | 110 | 111 | 112 | Ссылка 113 | 38 114 | true 115 | 116 | 117 | Список.Ссылка 118 | 119 | 120 | СсылкаРасширеннаяПодсказка 121 | 40 122 | true 123 | true 124 | 125 | true 126 | 127 | Label 128 | true 129 | true 130 | 131 | Left 132 | 133 | 134 | 135 | СсылкаКонтекстноеМеню 136 | 39 137 | true 138 | true 139 | 140 | true 141 | 142 | true 143 | 144 | LabelField 145 | Enter 146 | true 147 | Left 148 | true 149 | 150 | true 151 | true 152 | 153 | 154 | 155 | СписокГруппаИмя 156 | 64 157 | 158 | Картинка 159 | 61 160 | 161 | <key>ru</key> 162 | <value>Картинка</value> 163 | 164 | true 165 | true 166 | 167 | true 168 | 169 | 170 | Список.Картинка 171 | 172 | None 173 | 174 | КартинкаРасширеннаяПодсказка 175 | 63 176 | true 177 | true 178 | 179 | true 180 | 181 | Label 182 | true 183 | true 184 | 185 | Left 186 | 187 | 188 | 189 | КартинкаКонтекстноеМеню 190 | 62 191 | true 192 | true 193 | 194 | true 195 | 196 | true 197 | 198 | PictureField 199 | Enter 200 | Left 201 | 202 | true 203 | true 204 | true 205 | true 206 | 207 | CommonPicture.ТипыЗначений 208 | 209 | AsFileRef 210 | 211 | 212 | 213 | ПредставлениеЗначения 214 | 52 215 | 216 | <key>ru</key> 217 | <value>Значение</value> 218 | 219 | true 220 | true 221 | 222 | true 223 | 224 | 225 | Список.ПредставлениеЗначения 226 | 227 | 228 | ПредставлениеЗначенияРасширеннаяПодсказка 229 | 54 230 | true 231 | true 232 | 233 | true 234 | 235 | Label 236 | true 237 | true 238 | 239 | Left 240 | 241 | 242 | 243 | ПредставлениеЗначенияКонтекстноеМеню 244 | 53 245 | true 246 | true 247 | 248 | true 249 | 250 | true 251 | 252 | InputField 253 | Enter 254 | true 255 | Left 256 | true 257 | 258 | true 259 | true 260 | true 261 | true 262 | true 263 | true 264 | 265 | 266 | true 267 | true 268 | 269 | true 270 | 271 | 272 | <key>ru</key> 273 | <value>Список группа1</value> 274 | 275 | 276 | СписокГруппаИмяРасширеннаяПодсказка 277 | 65 278 | true 279 | true 280 | 281 | true 282 | 283 | Label 284 | true 285 | true 286 | 287 | Left 288 | 289 | 290 | ColumnGroup 291 | 292 | InCell 293 | 294 | 295 | 296 | Описание 297 | 44 298 | true 299 | true 300 | 301 | true 302 | 303 | 304 | Список.Описание 305 | 306 | 307 | ОписаниеРасширеннаяПодсказка 308 | 46 309 | true 310 | true 311 | 312 | true 313 | 314 | Label 315 | true 316 | true 317 | 318 | Left 319 | 320 | 321 | 322 | ОписаниеКонтекстноеМеню 323 | 45 324 | true 325 | true 326 | 327 | true 328 | 329 | true 330 | 331 | InputField 332 | Enter 333 | true 334 | Left 335 | true 336 | 337 | true 338 | true 339 | true 340 | true 341 | true 342 | true 343 | 344 | 345 | 346 | ТипЗначения 347 | 47 348 | true 349 | true 350 | 351 | 352 | Список.ТипЗначения 353 | 354 | 355 | ТипЗначенияРасширеннаяПодсказка 356 | 49 357 | true 358 | true 359 | 360 | true 361 | 362 | Label 363 | true 364 | true 365 | 366 | Left 367 | 368 | 369 | 370 | ТипЗначенияКонтекстноеМеню 371 | 48 372 | true 373 | true 374 | 375 | true 376 | 377 | true 378 | 379 | InputField 380 | Enter 381 | true 382 | Left 383 | true 384 | 385 | true 386 | true 387 | true 388 | true 389 | true 390 | true 391 | 392 | 393 | None 394 | 395 | СписокКоманднаяПанель 396 | 3 397 | true 398 | true 399 | 400 | true 401 | 402 | Left 403 | 404 | 405 | true 406 | true 407 | 408 | true 409 | 410 | СписокСтрокаПоиска 411 | 5 412 | 413 | СписокСтрокаПоискаРасширеннаяПодсказка 414 | 7 415 | true 416 | true 417 | 418 | true 419 | 420 | Label 421 | true 422 | true 423 | 424 | Left 425 | 426 | 427 | 428 | СписокСтрокаПоискаКонтекстноеМеню 429 | 6 430 | true 431 | true 432 | 433 | true 434 | 435 | true 436 | 437 | Список 438 | 439 | true 440 | 441 | 442 | 443 | true 444 | true 445 | 446 | true 447 | 448 | СписокСостояниеПросмотра 449 | 8 450 | 451 | СписокСостояниеПросмотраРасширеннаяПодсказка 452 | 10 453 | true 454 | true 455 | 456 | true 457 | 458 | Label 459 | true 460 | true 461 | 462 | Left 463 | 464 | 465 | 466 | СписокСостояниеПросмотраКонтекстноеМеню 467 | 9 468 | true 469 | true 470 | 471 | true 472 | 473 | true 474 | 475 | ViewStatusAddition 476 | Список 477 | 478 | true 479 | 480 | 481 | 482 | true 483 | true 484 | 485 | true 486 | 487 | СписокУправлениеПоиском 488 | 11 489 | 490 | СписокУправлениеПоискомРасширеннаяПодсказка 491 | 13 492 | true 493 | true 494 | 495 | true 496 | 497 | Label 498 | true 499 | true 500 | 501 | Left 502 | 503 | 504 | 505 | СписокУправлениеПоискомКонтекстноеМеню 506 | 12 507 | true 508 | true 509 | 510 | true 511 | 512 | true 513 | 514 | SearchControlAddition 515 | Список 516 | 517 | true 518 | 519 | 520 | 521 | СписокРасширеннаяПодсказка 522 | 4 523 | true 524 | true 525 | 526 | true 527 | 528 | Label 529 | true 530 | true 531 | 532 | Left 533 | 534 | 535 | 536 | СписокКонтекстноеМеню 537 | 2 538 | true 539 | true 540 | 541 | true 542 | 543 | true 544 | 545 | HierarchicalList 546 | true 547 | true 548 | true 549 | true 550 | true 551 | MultiRow 552 |
true
553 | 1 554 | 1 555 | AutoUse 556 | AutoUse 557 | true 558 | true 559 | true 560 | Auto 561 | Auto 562 | ExpandTopLevel 563 | true 564 | true 565 | true 566 | true 567 | AsFileRef 568 | 569 | Список.DefaultPicture 570 | 571 | 572 | 60 573 | 574 | 0001-01-01T00:00:00 575 | 0001-01-01T00:00:00 576 | 577 | 578 | true 579 | true 580 | 581 |
582 | 583 | ФормаКоманднаяПанель 584 | -1 585 | 586 | СоздатьПредопределенные 587 | 50 588 | true 589 | true 590 | 591 | true 592 | 593 | 594 | СоздатьПредопределенныеРасширеннаяПодсказка 595 | 51 596 | true 597 | true 598 | 599 | true 600 | 601 | Label 602 | true 603 | true 604 | 605 | Left 606 | 607 | 608 | Form.Command.СоздатьПредопределенные 609 | Auto 610 | true 611 | true 612 | UserCmds 613 | Auto 614 | 615 | true 616 | true 617 | 618 | true 619 | 620 | Left 621 | true 622 | 623 | true 624 | true 625 | true 626 | Vertical 627 | true 628 | true 629 | true 630 | true 631 | true 632 | 633 | Список 634 | 1 635 | 636 | DynamicList 637 | 638 | 639 | true 640 | 641 | 642 | true 643 | 644 | 645 | Список.Ссылка 646 | 647 |
true
648 | 649 | ВЫБРАТЬ 650 | ПредопределенныеНастройки.Ссылка, 651 | ПредопределенныеНастройки.ПометкаУдаления, 652 | ПредопределенныеНастройки.Родитель, 653 | ПредопределенныеНастройки.ЭтоГруппа, 654 | ПредопределенныеНастройки.Код, 655 | ПредопределенныеНастройки.Наименование, 656 | ПредопределенныеНастройки.Значение, 657 | ПредопределенныеНастройки.Хранилище, 658 | "[" + ПредопределенныеНастройки.ИмяНастройки+"]" как ИмяНастройки, 659 | ПредопределенныеНастройки.ТипЗначения, 660 | ПредопределенныеНастройки.Описание, 661 | ПредопределенныеНастройки.ПредставлениеЗначения, 662 | ПредопределенныеНастройки.Параметры.*, 663 | ПредопределенныеНастройки.Предопределенный, 664 | ПредопределенныеНастройки.ИмяПредопределенныхДанных, 665 | ВЫБОР 666 | КОГДА ПредопределенныеНастройки.ТипЗначения = Значение(Перечисление.ТипыЗначенияПредопределенныхЗначений.Булево) ТОГДА 0 667 | КОГДА ПредопределенныеНастройки.ТипЗначения = Значение(Перечисление.ТипыЗначенияПредопределенныхЗначений.Дата) ТОГДА 2 668 | КОГДА ПредопределенныеНастройки.ТипЗначения = Значение(Перечисление.ТипыЗначенияПредопределенныхЗначений.Строка) ТОГДА 8 669 | 670 | КОГДА ПредопределенныеНастройки.ТипЗначения = Значение(Перечисление.ТипыЗначенияПредопределенныхЗначений.КлючЗначение) ТОГДА 15 671 | КОГДА ПредопределенныеНастройки.ТипЗначения = Значение(Перечисление.ТипыЗначенияПредопределенныхЗначений.Массив) ТОГДА 9 672 | КОГДА ПредопределенныеНастройки.ТипЗначения = Значение(Перечисление.ТипыЗначенияПредопределенныхЗначений.Ссылка) ТОГДА 7 673 | КОГДА ПредопределенныеНастройки.ТипЗначения = Значение(Перечисление.ТипыЗначенияПредопределенныхЗначений.ТаблицаЗначений) ТОГДА 1 674 | 675 | ИНАЧЕ 0 КОНЕЦ Как Картинка 676 | 677 | ИЗ 678 | Справочник.ПредопределенныеНастройки 679 | КАК 680 | ПредопределенныеНастройки 681 | Catalog.ПредопределенныеНастройки 682 | true 683 | true 684 | true 685 | true 686 | true 687 | 688 | Ссылка 689 | Ссылка 690 | 691 | 692 | ПометкаУдаления 693 | ПометкаУдаления 694 | 695 | 696 | Родитель 697 | Родитель 698 | 699 | 700 | ЭтоГруппа 701 | ЭтоГруппа 702 | 703 | 704 | Код 705 | Код 706 | 707 | 708 | Наименование 709 | Наименование 710 | 711 | 712 | Предопределенный 713 | Предопределенный 714 | 715 | 716 | ИмяПредопределенныхДанных 717 | ИмяПредопределенныхДанных 718 | 719 | 720 | Значение 721 | Значение 722 | 723 | 724 | Хранилище 725 | Хранилище 726 | 727 | 728 | ИмяНастройки 729 | ИмяНастройки 730 | 731 | 732 | ТипЗначения 733 | ТипЗначения 734 | 735 | 736 | Описание 737 | Описание 738 | 739 | 740 | ПредставлениеЗначения 741 | ПредставлениеЗначения 742 | 743 | 744 | Параметры.Ссылка 745 | Параметры.Ссылка 746 | 747 | 748 | Параметры.НомерСтроки 749 | Параметры.НомерСтроки 750 | 751 | 752 | Параметры.Значение 753 | Параметры.Значение 754 | 755 | 756 | Параметры 757 | Параметры 758 | 759 | 760 | Картинка 761 | Картинка 762 | 763 | <localValue> 764 | <content> 765 | <key>ru</key> 766 | <value>Картинка</value> 767 | </content> 768 | </localValue> 769 | 770 | 771 | 772 |
773 | 774 | СоздатьПредопределенные 775 | 776 | <key>ru</key> 777 | <value>Создать предопределенные</value> 778 | 779 | 1 780 | 781 | true 782 | 783 | 784 | StdPicture.DataCompositionStandardSettings 785 | 786 | 787 | 788 | СоздатьПредопределенные 789 | 790 | 791 | Auto 792 | 793 | 794 | 795 | 796 | 797 | 0 798 | Added 799 | FormCommandBarImportant 800 | 0 801 | 802 | true 803 | 804 | 805 | 806 | 807 | 808 |
809 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 1С:Подсистема предопределенных значений 2 | 3 | [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) 4 | [![1C:Enterprise](https://img.shields.io/badge/1C%3AEnterprise-8.3.19-blue)](https://v8.1c.ru/) 5 | [![Version](https://img.shields.io/badge/version-1.0.0-green)](https://github.com/fedortimokhov/1cPredefinedValuesSubsystem) 6 | 7 | Подсистема для элегантного управления предопределенными настройками в конфигурациях 1С:Предприятие 8.3. 8 | 9 | ## Оглавление 10 | 11 | - [Описание](#описание) 12 | - [Возможности](#возможности) 13 | - [Архитектура](#архитектура) 14 | - [Быстрый старт](#быстрый-старт) 15 | - [Установка](#установка) 16 | - [Справочник по типам данных](#справочник-по-типам-данных) 17 | - [Справочник программного интерфейса](#справочник-программного-интерфейса) 18 | - [Сценарии использования](#сценарии-использования) 19 | - [Best Practices](#best-practices) 20 | - [Продвинутые техники](#продвинутые-техники) 21 | - [Тестирование](#тестирование) 22 | - [Лицензия](#лицензия) 23 | - [Контакты](#контакты) 24 | - [Публикация](#публикация) 25 | 26 | ## Описание 27 | 28 | Подсистема для управления предопределенными настройками в конфигурациях 1С:Предприятие 8.3. 29 | 30 | **Версия:** 1.0.0 31 | **Совместимость:** 1С:Предприятие 8.3.19+ 32 | **Язык:** Русский 33 | 34 | ### Введение 35 | 36 | ![](Docs/Predefined_Demo.gif) 37 | 38 | Данная подсистема создана в виде минималистичного набора объектов, предназначенная для очень простой интеграции в любые конфигурации на проектной работе. 39 | 40 | Основной плюс это простота и наличие, помимо программного интерфейса еще и пользовательского. 41 | 42 | Программное создание настроек реализовано для минимизации количества реструктуризаций. 43 | 44 | - **7 типов данных**: Строка, Булево, Дата, Ссылка, Массив, Ключ-Значение, Таблица значений 45 | - **Иерархическая структура**: Группировка настроек через родительские элементы 46 | - **Автоматическое создание**: Настройки создаются программно с уникальными идентификаторами 47 | - **Кеширование**: Быстрый доступ благодаря повторно используемым значениям 48 | - **Типобезопасность**: Автоматическое определение и валидация типов 49 | - **Права доступа**: Система доступа через роли 50 | 51 | Эта подсистема решает проблему хранения и управления конфигурационными настройками в 1С. Вместо создания множества констант или регистров, вы получаете единую систему для работы с настройками любого типа данных. 52 | 53 | Простота использования - ключевая особенность подсистемы. Достаточно одного вызова: 54 | 55 | 56 | ```bsl 57 | ЗначениеНастройки = ПредопределенныеНастройки.Значение("ИмяНастройки"); 58 | ``` 59 | 60 | Для добавления настройки можно использовать шаблон, который выводится в описании при создании нового элемента: 61 | ![](Docs/code_helper.png) 62 | 63 | ## Возможности 64 | 65 |
66 | Поддерживаемые типы данных 67 | 68 | 1. **Строка** - текстовые значения 69 | 2. **Булево** - логические флаги 70 | 3. **Дата** - даты и время 71 | 4. **Ссылка** - ссылки на объекты конфигурации 72 | 5. **Массив** - массивы произвольных значений 73 | 6. **Ключ-Значение** - соответствия (ключ: значение) 74 | 7. **Таблица значений** - сложные структурированные данные 75 | 76 |
77 | 78 |
79 | Иерархия настроек 80 | 81 | Настройки могут иметь родительские элементы для создания логических групп: 82 | 83 | ``` 84 | Настройки интеграции 85 | ├── Токен подключения 86 | ├── URL сервиса 87 | └── Таймаут 88 | ├── Таймаут подключения 89 | └── Таймаут чтения 90 | ``` 91 | 92 |
93 | 94 |
95 | Автоматическое кеширование 96 | 97 | Подсистема использует механизм повторно используемых значений для быстрого доступа к настройкам без обращения к базе данных на каждом запросе. 98 | 99 |
100 | 101 | ## Архитектура 102 | 103 |
104 | Компоненты подсистемы 105 | 106 | Подсистема состоит из следующих компонентов: 107 | 108 | ``` 109 | ПредопределенныеЗначенияПодсистема 110 | │ 111 | ├── 📁 Справочники 112 | │ └── ПредопределенныеНастройки 113 | │ ├── Реквизиты: ИмяНастройки, ТипЗначения, Значение, Хранилище 114 | │ ├── Форма списка 115 | │ └── Форма элемента 116 | │ 117 | ├── 📁 Общие модули 118 | │ ├── ПредопределенныеНастройки (основной программный интерфейс) 119 | │ ├── ПредопределенныеНастройкиПереопределяемый (точка расширения) 120 | │ └── ПредопределенныеНастройкиПовтИсп (кеширование) 121 | │ 122 | ├── 📁 Перечисления 123 | │ └── ТипыЗначенияПредопределенныхЗначений 124 | │ 125 | ├── 📁 Роли 126 | │ ├── ЧтениеПредопределенныеЗначения 127 | │ └── ДобавлениеИзменениеПредопределенныеЗначения 128 | │ 129 | └── 📁 Обработки 130 | └── ПредопределенныеНастройкиТестирование 131 | ``` 132 | 133 |
134 | 135 |
136 | Структура справочника 137 | 138 | Справочник `ПредопределенныеНастройки` содержит следующие реквизиты: 139 | 140 | - **ИмяНастройки** (Строка, 100) - уникальное имя настройки для поиска 141 | - **ТипЗначения** (Перечисление) - тип хранимого значения 142 | - **Значение** (Любое) - значение настройки для простых типов 143 | - **Хранилище** (ValueStorage) - для сложных типов (массив, таблица, соответствие) 144 | - **Описание** (Строка, 1024) - описание назначения настройки 145 | - **ДатаСоздания** (Дата) - дата создания настройки 146 | - **Наименование** (стандартный) - наименование настройки 147 | - **Родитель** - для создания иерархии 148 | 149 |
150 | 151 |
152 | Архитектурные диаграммы 153 | 154 | Схема ниже показывает взаимодействие компонентов: 155 | 156 | ```mermaid 157 | graph TB 158 | A["Ваша конфигурация"] --> B["Программный интерфейс"] 159 | B --> C["Слой кеширования"] 160 | C --> D["Справочник"] 161 | D --> E["База данных"] 162 | 163 | B --> F["Точка расширения"] 164 | F --> D 165 | 166 | style A fill:#2c3e50,stroke:#34495e,stroke-width:2px,color:#fff 167 | style B fill:#3498db,stroke:#2980b9,stroke-width:2px,color:#fff 168 | style C fill:#1abc9c,stroke:#16a085,stroke-width:2px,color:#fff 169 | style D fill:#95a5a6,stroke:#7f8c8d,stroke-width:2px,color:#fff 170 | style E fill:#34495e,stroke:#2c3e50,stroke-width:2px,color:#fff 171 | style F fill:#e67e22,stroke:#d35400,stroke-width:2px,color:#fff 172 | ``` 173 | 174 | Поток работы с настройками: 175 | 176 | ```mermaid 177 | sequenceDiagram 178 | participant Dev as Разработчик 179 | participant API as ПредопределенныеНастройки 180 | participant Cache as Кеш 181 | participant DB as База данных 182 | 183 | Dev->>API: Определение настроек 184 | Note right of API: Вызов ПриЗаполненииТаблицыПредопределенныхНастроек 185 | API->>DB: Создание настроек с UUID 186 | DB-->>API: Подтверждение 187 | 188 | Dev->>API: Получение значения 189 | API->>Cache: Поиск в кеше 190 | alt Найдено в кеше 191 | Cache-->>API: Возврат значения 192 | else Не найдено 193 | API->>DB: Запрос к базе 194 | DB-->>API: Значение 195 | API->>Cache: Сохранение в кеш 196 | Cache-->>API: Кешировано 197 | end 198 | API-->>Dev: Результат 199 | ``` 200 | 201 |
202 | 203 | ## Быстрый старт 204 | 205 |
206 | Шаг 1: Определение настроек 207 | 208 | Переопределите процедуру `ПриЗаполненииТаблицыПредопределенныхНастроек` в модуле `ПредопределенныеНастройкиПереопределяемый`: 209 | 210 | ```bsl 211 | Процедура ПриЗаполненииТаблицыПредопределенныхНастроек(ТаблицаНастроек) Экспорт 212 | 213 | // Строковая настройка 214 | НоваяНастройка = ТаблицаНастроек.Добавить(); 215 | НоваяНастройка.Идентификатор = Новый УникальныйИдентификатор("87548614-5423-299a-af9c-a08e5ca86056"); 216 | НоваяНастройка.ИмяНастройки = "ВерсияПодсистемы"; 217 | НоваяНастройка.Наименование = НСтр("ru ='Версия подсистемы'"); 218 | НоваяНастройка.ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Строка"); 219 | НоваяНастройка.Описание = НСтр("ru ='Информация о версии текущей подсистемы.'"); 220 | НоваяНастройка.Значение = "1.0.0"; 221 | 222 | // Булева настройка 223 | НоваяНастройка = ТаблицаНастроек.Добавить(); 224 | НоваяНастройка.Идентификатор = Новый УникальныйИдентификатор("bfc480f2-023e-40d3-ab52-fecb853edf3c"); 225 | НоваяНастройка.ИмяНастройки = "ВключеноРегистрирование"; 226 | НоваяНастройка.Наименование = НСтр("ru ='Регистрация событий включена'"); 227 | НоваяНастройка.ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Булево"); 228 | НоваяНастройка.Описание = НСтр("ru ='Разрешает регистрацию событий в системе.'"); 229 | НоваяНастройка.Значение = Ложь; 230 | 231 | // Настройка с массивом 232 | НоваяНастройка = ТаблицаНастроек.Добавить(); 233 | НоваяНастройка.Идентификатор = Новый УникальныйИдентификатор("6f205348-2c73-46a8-98a6-851a40a12bbe"); 234 | НоваяНастройка.ИмяНастройки = "РазрешенныеПользователи"; 235 | НоваяНастройка.Наименование = НСтр("ru ='Разрешенные пользователи'"); 236 | НоваяНастройка.ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Массив"); 237 | 238 | МассивПользователей = Новый Массив; 239 | МассивПользователей.Добавить("Администратор"); 240 | МассивПользователей.Добавить("Аудит"); 241 | 242 | НоваяНастройка.Значение = МассивПользователей; 243 | 244 | КонецПроцедуры 245 | ``` 246 | 247 |
248 | 249 |
250 | Шаг 2: Инициализация 251 | 252 | При первом запуске создайте отсутствующие настройки: 253 | 254 | ```bsl 255 | // В модуле приложения или при старте системы 256 | ПредопределенныеНастройки.СоздатьОтсутствующиеПредопределенныеНастройки(); 257 | ``` 258 | 259 |
260 | 261 |
262 | Шаг 3: Использование 263 | 264 | Получение значений настроек: 265 | 266 | ```bsl 267 | // Получение строковой настройки 268 | Версия = ПредопределенныеНастройки.Значение("ВерсияПодсистемы"); 269 | Сообщить(Версия); // "1.0.0" 270 | 271 | // Получение булевой настройки 272 | Если ПредопределенныеНастройки.Значение("ВключеноРегистрирование") Тогда 273 | ЗарегистрироватьСобытие(); 274 | КонецЕсли; 275 | 276 | // Получение массива 277 | РазрешенныеПользователи = ПредопределенныеНастройки.Значение("РазрешенныеПользователи"); 278 | Для Каждого Пользователь Из РазрешенныеПользователи Цикл 279 | Сообщить(Пользователь); 280 | КонецЦикла; 281 | ``` 282 | 283 |
284 | 285 | ## Установка 286 | 287 |
288 | Требования 289 | 290 | - 1С:Предприятие 8.3.19 или выше 291 | - EDT 2023.1+ (для разработки в EDT) или Конфигуратор 292 | - Права администратора конфигурации 293 | 294 |
295 | 296 |
297 | Установка через EDT 298 | 299 | ### Подготовка 300 | 301 | 1. Создайте резервную копию вашей конфигурации 302 | 2. Убедитесь, что используете EDT версии, совместимой версии 303 | 304 | ### Импорт исходников подсистемы 305 | 306 | 1. Скачайте исходники подсистемы из репозитория (папку `ПредопределенныеЗначенияПодсистема`) 307 | 2. В EDT: File → Import → General → Existing Projects into Workspace 308 | 3. Выберите папку с подсистемой `ПредопределенныеЗначенияПодсистема` 309 | 4. Выберите "Import as separate project" (не объединять сразу) 310 | 311 | ### Сравнение и объединение конфигураций 312 | 313 | 1. Откройте вашу основную конфигурацию в EDT 314 | 2. Правой кнопкой мыши на конфигурации → Сравнить/объединить 315 | 3. Выберите проект подсистемы `ПредопределенныеЗначенияПодсистема` 316 | 4. В окне сравнения: 317 | - Просмотрите добавляемые объекты (справочник, модули, роли) 318 | - Проверьте конфликты (если есть объекты с такими же именами) 319 | 5. Нажмите "Merge" для объединения 320 | 6. Выберите режим объединения: 321 | - "Copy from source" для новых объектов 322 | - "Three-way merge" если есть конфликты 323 | 7. Подтвердите изменения 324 | 325 | ### Проверка после объединения 326 | 327 | - Проверьте структуру подсистем 328 | - Убедитесь, что все модули на месте 329 | - Проверьте роли в конфигурации 330 | 331 |
332 | 333 |
334 | Установка через Конфигуратор 335 | 336 | **Установка через сравнение/объединение конфигураций** 337 | 338 | ### Подготовка 339 | 340 | 1. Создайте резервную копию информационной базы 341 | 2. Убедитесь, что находитесь в режиме "Конфигуратор" 342 | 343 | ### Сравнение и объединение конфигураций 344 | 345 | 1. Скачайте файл конфигурации подсистемы (.cf) из репозитория 346 | 2. В вашей рабочей ИБ (режим Конфигуратор): 347 | - Конфигурация → Сравнить, объединить с конфигурацией из файла... 348 | 3. Выберите файл конфигурации подсистемы (.cf) 349 | 4. В окне "Сравнение, объединение конфигураций" настройте объединение 350 | 351 | ### Объединение конфигураций 352 | 353 | 1. В окне сравнения нажмите кнопку "Выполнить" 354 | 2. Режим обновления выберите: "Обновить конфигурацию базы данных" 355 | 3. При наличии конфликтов: 356 | - Выберите "Принять из файла" для всех объектов подсистемы 357 | 4. Подтвердите объединение 358 | 5. Дождитесь завершения процесса объединения 359 | 360 | ### Постановка на поддержку 361 | 362 | **ВАЖНО!** При объединении, конфигурацию рекомендуется ставить на поддержку: 363 | 364 | 1. Конфигурация → Поддержка → Настройка поддержки 365 | 2. Проверьте, что конфигурация находится на поддержке 366 | 367 | ### Обновление конфигурации БД 368 | 369 | 1. Конфигурация → Обновить конфигурацию базы данных 370 | 2. Просмотрите список изменений в структуре БД 371 | 3. Нажмите "Выполнить" для применения изменений 372 | 4. Дождитесь завершения обновления 373 | 374 |
375 | 376 |
377 | Интеграция с БСП 378 | 379 | Для автоматического обновления настроек при обновлении информационной базы добавьте обработчики. 380 | 381 | #### Добавление в обработчики обновления БСП 382 | 383 | В модуле `ОбщийМодуль.ОбновлениеИнформационнойБазы` (серверный, без контекста): 384 | 385 | ```bsl 386 | // Процедура добавления обработчиков обновления 387 | Процедура ДобавитьОбработчикиОбновления(Обработчики) Экспорт 388 | 389 | Обработчик = Обработчики.Добавить(); 390 | Обработчик.Версия = "1.0.0.1"; 391 | Обработчик.Процедура = "ОбновлениеИнформационнойБазы.ОбновитьПредопределенныеНастройки"; 392 | Обработчик.РежимВыполнения = "Отложенно"; 393 | Обработчик.Комментарий = НСтр("ru = 'Создание отсутствующих предопределенных настроек'"); 394 | 395 | КонецПроцедуры 396 | 397 | // Процедура обновления предопределенных настроек 398 | Процедура ОбновитьПредопределенныеНастройки() Экспорт 399 | 400 | ПредопределенныеНастройки.СоздатьОтсутствующиеПредопределенныеНастройки(); 401 | 402 | КонецПроцедуры 403 | ``` 404 | 405 | #### Добавление в начальное заполнение 406 | 407 | В модуле `ОбщийМодуль.НачальноеЗаполнениеПереопределяемый`: 408 | 409 | ```bsl 410 | // При начальном заполнении информационной базы 411 | Процедура ПриНачальномЗаполненииЭлементов(Настройки) Экспорт 412 | 413 | Настройки.ПриДобавлении = "НачальноеЗаполнение.СоздатьПредопределенныеНастройки"; 414 | 415 | КонецПроцедуры 416 | ``` 417 | 418 | В модуле `ОбщийМодуль.НачальноеЗаполнение` (серверный): 419 | 420 | ```bsl 421 | Процедура СоздатьПредопределенныеНастройки() Экспорт 422 | 423 | ПредопределенныеНастройки.СоздатьОтсутствующиеПредопределенныеНастройки(); 424 | 425 | КонецПроцедуры 426 | ``` 427 | 428 | #### Настройка прав доступа через профили БСП 429 | 430 | 1. Роль "ЧтениеПредопределенныеЗначения" должна включаться в базовые роли. 431 | 432 |
433 | 434 |
435 | Проверка установки 436 | 437 | ### Контрольный список после установки 438 | 439 | - [ ] Подсистема "ПредопределенныеЗначения" видна в дереве конфигурации 440 | - [ ] Справочник "ПредопределенныеНастройки" доступен 441 | - [ ] 3 общих модуля присутствуют 442 | - [ ] Перечисление "ТипыЗначенияПредопределенныхЗначений" содержит 8 значений 443 | - [ ] Обработка тестирования открывается 444 | - [ ] Роли добавлены в систему 445 | 446 | ### Функциональная проверка 447 | 448 | Выполните код в консоли запросов для проверки: 449 | 450 | ```bsl 451 | // Создание отсутствующих настроек 452 | ПредопределенныеНастройки.СоздатьОтсутствующиеПредопределенныеНастройки(); 453 | 454 | // Проверка создания тестовой настройки 455 | ТаблицаНастроек = ПредопределенныеНастройки.НоваяТаблицаПредопределенныхНастроек(); 456 | НоваяНастройка = ТаблицаНастроек.Добавить(); 457 | НоваяНастройка.Идентификатор = Новый УникальныйИдентификатор(); 458 | НоваяНастройка.ИмяНастройки = "ТестоваяНастройка"; 459 | НоваяНастройка.Наименование = НСтр("ru ='Настройка для тестирования'"); 460 | НоваяНастройка.ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Строка"); 461 | НоваяНастройка.Значение = "Тест"; 462 | ПредопределенныеНастройки.ОбновитьНастройкиВБазе(ТаблицаНастроек); 463 | 464 | // Проверить получение 465 | Сообщить(ПредопределенныеНастройки.Значение("ТестоваяНастройка")); // Должно вывести "Тест" 466 | ``` 467 | 468 |
469 | 470 | ## Справочник по типам данных 471 | 472 |
473 | 1. Строка (String) 474 | 475 | **Назначение:** Текстовые значения, конфигурационные параметры 476 | 477 | **Пример создания:** 478 | ```bsl 479 | НоваяНастройка = ТаблицаНастроек.Добавить(); 480 | НоваяНастройка.Идентификатор = Новый УникальныйИдентификатор("..."); 481 | НоваяНастройка.Наименование = НСтр("ru ='Адрес API системы'"); 482 | НоваяНастройка.ИмяНастройки = "URL_API"; 483 | НоваяНастройка.ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Строка"); 484 | НоваяНастройка.Значение = "https://api.example.com"; 485 | ``` 486 | 487 | **Получение значения:** 488 | ```bsl 489 | URLAPI = ПредопределенныеНастройки.Значение("URL_API"); 490 | // URLAPI = "https://api.example.com" 491 | ``` 492 | 493 |
494 | 495 |
496 | 2. Булево (Boolean) 497 | 498 | **Назначение:** Флаги включения/выключения функций 499 | 500 | **Пример создания:** 501 | ```bsl 502 | НоваяНастройка = ТаблицаНастроек.Добавить(); 503 | НоваяНастройка.Идентификатор = Новый УникальныйИдентификатор("..."); 504 | НоваяНастройка.Наименование = НСтр("ru ='Отладка включена'"); 505 | НоваяНастройка.ИмяНастройки = "РазрешенаОтладка"; 506 | НоваяНастройка.ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Булево"); 507 | НоваяНастройка.Значение = Ложь; 508 | ``` 509 | 510 | **Получение значения:** 511 | ```bsl 512 | РазрешенаОтладка = ПредопределенныеНастройки.Значение("РазрешенаОтладка"); 513 | Если РазрешенаОтладка Тогда 514 | // Логика отладки 515 | КонецЕсли; 516 | ``` 517 | 518 |
519 | 520 |
521 | 3. Дата (Date) 522 | 523 | **Назначение:** Хранение дат и времени 524 | 525 | **Пример создания:** 526 | ```bsl 527 | НоваяНастройка = ТаблицаНастроек.Добавить(); 528 | НоваяНастройка.Идентификатор = Новый УникальныйИдентификатор("..."); 529 | НоваяНастройка.Наименование = НСтр("ru ='Дата обновления'"); 530 | НоваяНастройка.ИмяНастройки = "ДатаОбновления"; 531 | НоваяНастройка.ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Дата"); 532 | НоваяНастройка.Значение = ТекущаяДата(); 533 | ``` 534 | 535 | **Получение значения:** 536 | ```bsl 537 | ДатаОбновления = ПредопределенныеНастройки.Значение("ДатаОбновления"); 538 | ``` 539 | 540 |
541 | 542 |
543 | 4. Ссылка (Reference) 544 | 545 | **Назначение:** Ссылки на объекты конфигурации 546 | 547 | **Пример создания:** 548 | ```bsl 549 | НоваяНастройка = ТаблицаНастроек.Добавить(); 550 | НоваяНастройка.Идентификатор = Новый УникальныйИдентификатор("..."); 551 | НоваяНастройка.Наименование = НСтр("ru ='Подразделение центральное'"); 552 | НоваяНастройка.ИмяНастройки = "УмолчательноеПодразделение"; 553 | НоваяНастройка.ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Ссылка"); 554 | НоваяНастройка.Значение = Справочники.Подразделения.НайтиПоНаименованию("Главный офис"); 555 | ``` 556 | 557 | **Получение значения:** 558 | ```bsl 559 | УмолчательноеПодразделение = ПредопределенныеНастройки.Значение("УмолчательноеПодразделение"); 560 | ``` 561 | 562 |
563 | 564 |
565 | 5. Массив (Array) 566 | 567 | **Назначение:** Списки значений произвольного типа 568 | 569 | **Важно:** Используйте `Хранилище` вместо `Значение` для массивов! 570 | 571 | **Пример создания:** 572 | ```bsl 573 | НоваяНастройка = ТаблицаНастроек.Добавить(); 574 | НоваяНастройка.Идентификатор = Новый УникальныйИдентификатор("..."); 575 | НоваяНастройка.Наименование = НСтр("ru ='Приоритетные статусы'"); 576 | НоваяНастройка.ИмяНастройки = "ПриоритетныеСтатусы"; 577 | НоваяНастройка.ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Массив"); 578 | 579 | МассивСтатусов = Новый Массив; 580 | МассивСтатусов.Добавить(Перечисления.СтатусыДокументов.ВРаботе); 581 | МассивСтатусов.Добавить(Перечисления.СтатусыДокументов.НаСогласовании); 582 | 583 | НоваяНастройка.Значение = МассивСтатусов; 584 | ``` 585 | 586 | **Получение значения:** 587 | ```bsl 588 | ПриоритетныеСтатусы = ПредопределенныеНастройки.Значение("ПриоритетныеСтатусы"); 589 | Для Каждого Статус Из ПриоритетныеСтатусы Цикл 590 | Сообщить(Строка(Статус)); 591 | КонецЦикла; 592 | ``` 593 | 594 |
595 | 596 |
597 | 6. Ключ-Значение (Key-Value / Соответствие) 598 | 599 | **Назначение:** Для пары ключ-значение используется Хранилище! 600 | 601 | **Важно:** Используйте `Хранилище` для соответствий! 602 | 603 | **Пример создания:** 604 | ```bsl 605 | НоваяНастройка = ТаблицаНастроек.Добавить(); 606 | НоваяНастройка.Идентификатор = Новый УникальныйИдентификатор("..."); 607 | НоваяНастройка.Наименование = НСтр("ru ='Настройки интеграции'"); 608 | НоваяНастройка.ИмяНастройки = "НастройкиИнтеграции"; 609 | НоваяНастройка.ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.КлючЗначение"); 610 | 611 | СоответствиеНастроек = Новый Соответствие; 612 | СоответствиеНастроек.Вставить("URL", "https://api.example.com"); 613 | СоответствиеНастроек.Вставить("Token", "secret123"); 614 | СоответствиеНастроек.Вставить("Timeout", 30); 615 | 616 | НоваяНастройка.Значение = СоответствиеНастроек; 617 | ``` 618 | 619 | **Получение значения:** 620 | ```bsl 621 | НастройкиИнтеграции = ПредопределенныеНастройки.Значение("НастройкиИнтеграции"); 622 | URLAPI = НастройкиИнтеграции.Получить("URL"); 623 | ВремяОжидания = НастройкиИнтеграции.Получить("Timeout"); 624 | ``` 625 | 626 |
627 | 628 |
629 | 7. Таблица значений 630 | 631 | **Назначение:** Сложные структурированные данные 632 | 633 | **Важно:** Для таблиц значений используется Хранилище! 634 | 635 | **Пример создания:** 636 | ```bsl 637 | НоваяНастройка = ТаблицаНастроек.Добавить(); 638 | НоваяНастройка.Идентификатор = Новый УникальныйИдентификатор("..."); 639 | НоваяНастройка.Наименование = НСтр("ru ='Правила обработки'"); 640 | НоваяНастройка.ИмяНастройки = "ПравилаОбработки"; 641 | НоваяНастройка.ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.ТаблицаЗначений"); 642 | 643 | ТаблицаПравил = Новый ТаблицаЗначений; 644 | ТаблицаПравил.Колонки.Добавить("ТипДокумента", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(100))); 645 | ТаблицаПравил.Колонки.Добавить("АвтоматическиПровести", Новый ОписаниеТипов("Булево")); 646 | ТаблицаПравил.Колонки.Добавить("ТребуетсяСогласование", Новый ОписаниеТипов("Булево")); 647 | 648 | СтрокаПравила = ТаблицаПравил.Добавить(); 649 | СтрокаПравила.ТипДокумента = "ЗаказКлиента"; 650 | СтрокаПравила.АвтоматическиПровести = Ложь; 651 | СтрокаПравила.ТребуетсяСогласование = Истина; 652 | 653 | НоваяНастройка.Значение = ТаблицаПравил; 654 | ``` 655 | 656 | **Получение значения:** 657 | ```bsl 658 | ПравилаОбработки = ПредопределенныеНастройки.Значение("ПравилаОбработки"); 659 | Для Каждого Правило Из ПравилаОбработки Цикл 660 | Если Правило.ТребуетсяСогласование Тогда 661 | ОтправитьНаСогласование(Правило.ТипДокумента); 662 | КонецЕсли; 663 | КонецЦикла; 664 | ``` 665 | 666 |
667 | 668 |
669 | 8. Группа настроек (Каталог) 670 | 671 | **Назначение:** Организация иерархии настроек 672 | 673 | **Пример создания группы:** 674 | ```bsl 675 | НоваяНастройка = ТаблицаНастроек.Добавить(); 676 | НоваяНастройка.Идентификатор = Новый УникальныйИдентификатор("..."); 677 | НоваяНастройка.Наименование = НСтр("ru ='Настройки интеграции'"); 678 | НоваяНастройка.ИмяНастройки = "НастройкиИнтеграции"; 679 | НоваяНастройка.ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.КаталогПредопределенныхНастроек"); 680 | // Группы не имеют значения 681 | ``` 682 | 683 | **Настройки внутри группы:** 684 | ```bsl 685 | НоваяНастройка = ТаблицаНастроек.Добавить(); 686 | НоваяНастройка.ИмяНастройкиРодителя = "НастройкиИнтеграции"; // Указание родителя 687 | НоваяНастройка.Идентификатор = Новый УникальныйИдентификатор("..."); 688 | НоваяНастройка.Наименование = НСтр("ru ='Адрес API system'"); 689 | НоваяНастройка.ИмяНастройки = "URL_API"; 690 | НоваяНастройка.ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Строка"); 691 | НоваяНастройка.Значение = "https://api.example.com"; 692 | ``` 693 | 694 |
695 | 696 | ## Справочник программного интерфейса 697 | 698 |
699 | Модуль ПредопределенныеНастройки 700 | 701 | Основной модуль для работы с настройками. 702 | 703 | #### Функция `Значение(ИмяНастройки, ВызыватьИсключение = Ложь)` 704 | 705 | Возвращает значение предопределенной настройки по ее имени. 706 | 707 | **Параметры:** 708 | - `ИмяНастройки` (Строка) - имя настройки 709 | - `ВызыватьИсключение` (Булево) - вызывать ли исключение, если настройка не найдена 710 | 711 | **Возвращаемое значение:** 712 | - `Произвольный` - значение настройки 713 | 714 | **Примеры:** 715 | ```bsl 716 | // Без исключения (вернет пустую ссылку, если не найдено) 717 | URL = ПредопределенныеНастройки.Значение("URL_API"); 718 | 719 | // С исключением 720 | Попытка 721 | Token = ПредопределенныеНастройки.Значение("API_Token", Истина); 722 | Исключение 723 | Сообщить("Токен API не настроен!"); 724 | КонецПопытки; 725 | ``` 726 | 727 | #### Функция `НастройкаПоИмени(ИмяНастройки)` 728 | 729 | Возвращает ссылку на предопределенную настройку по имени. 730 | 731 | **Параметры:** 732 | - `ИмяНастройки` (Строка) - имя настройки 733 | 734 | **Возвращаемое значение:** 735 | - `СправочникСсылка.ПредопределенныеНастройки` - ссылка на настройку 736 | 737 | **Пример:** 738 | ```bsl 739 | Настройка = ПредопределенныеНастройки.НастройкаПоИмени("URL_API"); 740 | Если Не ЗначениеЗаполнено(Настройка) Тогда 741 | СоздатьНастройку(); 742 | КонецЕсли; 743 | ``` 744 | 745 | #### Функция `НоваяТаблицаПредопределенныхНастроек()` 746 | 747 | Возвращает новую таблицу значений с колонками для описания настроек. 748 | 749 | **Возвращаемое значение:** 750 | - `ТаблицаЗначений` - таблица с колонками: 751 | - ИмяНастройкиРодителя 752 | - Идентификатор 753 | - ИмяНастройки 754 | - Хранилище 755 | - Наименование 756 | - Описание 757 | - ТипЗначения 758 | - Значение 759 | - Удалена 760 | 761 | **Пример:** 762 | ```bsl 763 | ТаблицаНастроек = ПредопределенныеНастройки.НоваяТаблицаПредопределенныхНастроек(); 764 | НоваяНастройка = ТаблицаНастроек.Добавить(); 765 | // Заполнение настройки... 766 | ``` 767 | 768 | #### Процедура `СоздатьОтсутствующиеПредопределенныеНастройки(ТаблицаОписанияПредопределенныхНастроек = Неопределено)` 769 | 770 | Создает отсутствующие предопределенные настройки в базе данных. 771 | 772 | **Параметры:** 773 | - `ТаблицаОписанияПредопределенныхНастроек` - таблица описаний настроек (опционально) 774 | 775 | **Пример:** 776 | ```bsl 777 | // При первом запуске 778 | ПредопределенныеНастройки.СоздатьОтсутствующиеПредопределенныеНастройки(); 779 | ``` 780 | 781 | #### Процедура `ОбновитьНастройкиВБазе(ТаблицаНастроекВБазе)` 782 | 783 | Обновляет настройки в базе данных согласно переданной таблице. 784 | 785 | **Параметры:** 786 | - `ТаблицаНастроекВБазе` - таблица с данными для обновления 787 | 788 | **Пример:** 789 | ```bsl 790 | ТаблицаНастроек = ПредопределенныеНастройки.НоваяТаблицаПредопределенныхНастроек(); 791 | // Заполнение таблицы... 792 | ПредопределенныеНастройки.ОбновитьНастройкиВБазе(ТаблицаНастроек); 793 | ``` 794 | 795 | #### Процедура `ИнициализироватьТаблицуПредопределенныхНастроек(ТаблицаОписанияПредопределенныхНастроек)` 796 | 797 | Инициализирует таблицу предопределенных настроек. 798 | 799 | **Параметры:** 800 | - `ТаблицаОписанияПредопределенныхНастроек` - таблица для заполнения 801 | 802 | **Пример:** 803 | ```bsl 804 | ТаблицаНастроек = ПредопределенныеНастройки.НоваяТаблицаПредопределенныхНастроек(); 805 | ПредопределенныеНастройки.ИнициализироватьТаблицуПредопределенныхНастроек(ТаблицаНастроек); 806 | ``` 807 | 808 | ### Модуль `ПредопределенныеНастройкиПереопределяемый` 809 | 810 | Модуль для определения настроек вашей конфигурации. 811 | 812 | #### Процедура `ПриЗаполненииТаблицыПредопределенныхНастроек(ТаблицаНастроек)` 813 | 814 | Процедура для определения пользовательских настроек. 815 | 816 | **Параметры:** 817 | - `ТаблицаНастроек` - таблица для добавления описаний настроек 818 | 819 | **Пример:** 820 | ```bsl 821 | Процедура ПриЗаполненииТаблицыПредопределенныхНастроек(ТаблицаНастроек) Экспорт 822 | 823 | НоваяНастройка = ТаблицаНастроек.Добавить(); 824 | НоваяНастройка.Идентификатор = Новый УникальныйИдентификатор("87548614-5423-299a-af9c-a08e5ca86056"); 825 | НоваяНастройка.Наименование = НСтр("ru ='Моя настройка'"); 826 | НоваяНастройка.ИмяНастройки = "МояНастройка"; 827 | НоваяНастройка.ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Строка"); 828 | НоваяНастройка.Значение = "Значение"; 829 | 830 | КонецПроцедуры 831 | ``` 832 | 833 |
834 | 835 | ## Сценарии использования 836 | 837 |
838 | Сценарий 1: Хранение настроек интеграции 839 | 840 | **Задача:** Хранение параметров подключения к внешним сервисам 841 | 842 | ```bsl 843 | // Определение настроек 844 | Процедура ПриЗаполненииТаблицыПредопределенныхНастроек(ТаблицаНастроек) Экспорт 845 | 846 | НоваяНастройка = ТаблицаНастроек.Добавить(); 847 | НоваяНастройка.Идентификатор = Новый УникальныйИдентификатор("a1b2c3d4-e5f6-..."); 848 | НоваяНастройка.ИмяНастройки = "API_URL"; 849 | НоваяНастройка.ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Строка"); 850 | НоваяНастройка.Значение = "https://api.service.com"; 851 | 852 | НоваяНастройка = ТаблицаНастроек.Добавить(); 853 | НоваяНастройка.Идентификатор = Новый УникальныйИдентификатор("b2c3d4e5-f6g7-..."); 854 | НоваяНастройка.ИмяНастройки = "API_Timeout"; 855 | НоваяНастройка.ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Число"); 856 | НоваяНастройка.Значение = 30; 857 | 858 | КонецПроцедуры 859 | 860 | // Использование 861 | Процедура ВыполнитьЗапросКAPI() 862 | 863 | URLAPI = ПредопределенныеНастройки.Значение("API_URL"); 864 | TimeoutAPI = ПредопределенныеНастройки.Значение("API_Timeout"); 865 | 866 | HTTPСоединение = Новый HTTPСоединение(URLAPI, , , , TimeoutAPI); 867 | // Выполнение запроса... 868 | 869 | КонецПроцедуры 870 | ``` 871 | 872 |
873 | 874 |
875 | Сценарий 2: Конфигурационные справочники выбора 876 | 877 | **Задача:** Хранение списка разрешенных типов документов для выбора 878 | 879 | ```bsl 880 | // Определение настроек 881 | Процедура ПриЗаполненииТаблицыПредопределенныхНастроек(ТаблицаНастроек) Экспорт 882 | 883 | ТаблицаЗначений = Новый ТаблицаЗначений; 884 | ТаблицаЗначений.Колонки.Добавить("ТипДокумента"); 885 | ТаблицаЗначений.Колонки.Добавить("Наименование"); 886 | 887 | Строка = ТаблицаЗначений.Добавить(); 888 | Строка.ТипДокумента = "ЗаказКлиента"; 889 | Строка.Наименование = "Заказ клиента"; 890 | 891 | Строка = ТаблицаЗначений.Добавить(); 892 | Строка.ТипДокумента = "СчетНаОплату"; 893 | Строка.Наименование = "Счет на оплату"; 894 | 895 | НоваяНастройка = ТаблицаНастроек.Добавить(); 896 | НоваяНастройка.Идентификатор = Новый УникальныйИдентификатор("..."); 897 | НоваяНастройка.ИмяНастройки = "РазрешенныеДокументы"; 898 | НоваяНастройка.ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.ТаблицаЗначений"); 899 | НоваяНастройка.Значение = ТаблицаЗначений; 900 | 901 | КонецПроцедуры 902 | 903 | // Использование 904 | Функция ПроверитьРазрешенныйДокумент(ТипДокумента) 905 | 906 | РазрешенныеДокументы = ПредопределенныеНастройки.Значение("РазрешенныеДокументы"); 907 | 908 | Для Каждого Строка Из РазрешенныеДокументы Цикл 909 | Если Строка.ТипДокумента = ТипДокумента Тогда 910 | Возврат Истина; 911 | КонецЕсли; 912 | КонецЦикла; 913 | 914 | Возврат Ложь; 915 | 916 | КонецФункции 917 | 918 |
919 | 920 |
921 | Сценарий 3: Настройки ролей и разрешений 922 | 923 | **Задача:** Хранение прав доступа для различных ролей 924 | 925 | ```bsl 926 | // Определение настроек 927 | Процедура ПриЗаполненииТаблицыПредопределенныхНастроек(ТаблицаНастроек) Экспорт 928 | 929 | СоответствиеПрав = Новый Соответствие; 930 | СоответствиеПрав.Вставить("Администратор", Новый Массив); // Все права 931 | СоответствиеПрав.Вставить("Пользователь", Массив(["Чтение", "Создание"])); 932 | СоответствиеПрав.Вставить("Гость", Массив(["Чтение"])); 933 | 934 | НоваяНастройка = ТаблицаНастроек.Добавить(); 935 | НоваяНастройка.Идентификатор = Новый УникальныйИдентификатор("..."); 936 | НоваяНастройка.Наименование = НСтр("ru ='Права доступа'"); 937 | НоваяНастройка.ИмяНастройки = "ПраваДоступа"; 938 | НоваяНастройка.ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.КлючЗначение"); 939 | НоваяНастройка.Хранилище = СоответствиеПрав; 940 | 941 | КонецПроцедуры 942 | 943 | // Использование 944 | Функция ПроверитьПраво(Роль, Право) 945 | 946 | ПраваДоступа = ПредопределенныеНастройки.Значение("ПраваДоступа"); 947 | ПраваРоли = ПраваДоступа.Получить(Роль); 948 | 949 | Если ПраваРоли <> Неопределено Тогда 950 | Возврат ПраваРоли.Найти(Право) <> Неопределено; 951 | КонецЕсли; 952 | 953 | Возврат Ложь; 954 | 955 | КонецФункции 956 | 957 |
958 | 959 |
960 | Сценарий 4: Настройки печатных форм 961 | 962 | **Задача:** Хранение параметров печатных форм (отступы, размеры, шрифты) 963 | 964 | ```bsl 965 | // Определение настроек 966 | Процедура ПриЗаполненииТаблицыПредопределенныхНастроек(ТаблицаНастроек) Экспорт 967 | 968 | НоваяНастройка = ТаблицаНастроек.Добавить(); 969 | НоваяНастройка.Идентификатор = Новый УникальныйИдентификатор("..."); 970 | НоваяНастройка.Наименование = НСтр("ru ='Отступ слева'"); 971 | НоваяНастройка.ИмяНастройки = "ОтступЛево"; 972 | НоваяНастройка.ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Число"); 973 | НоваяНастройка.Значение = 20; // мм 974 | 975 | НоваяНастройка = ТаблицаНастроек.Добавить(); 976 | НоваяНастройка.Идентификатор = Новый УникальныйИдентификатор("..."); 977 | НоваяНастройка.Наименование = НСтр("ru ='Размер шрифта печатной формы'"); 978 | НоваяНастройка.ИмяНастройки = "РазмерШрифта"; 979 | НоваяНастройка.ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Число"); 980 | НоваяНастройка.Значение = 10; 981 | 982 | КонецПроцедуры 983 | 984 | // Использование 985 | Процедура СформироватьПечатнуюФорму() 986 | 987 | ОтступЛевый = ПредопределенныеНастройки.Значение("ОтступЛево"); 988 | РазмерШрифта = ПредопределенныеНастройки.Значение("РазмерШрифта"); 989 | 990 | // Применение настроек к форме... 991 | 992 | КонецПроцедуры 993 | 994 |
995 | 996 | ## Best Practices 997 | 998 |
999 | Именование настроек 1000 | 1001 | - ✅ Используйте понятные имена: `API_URL`, `ВключенаОтладка`, `МаксимальноеКоличествоПопыток` 1002 | - ❌ Избегайте: `setting1`, `Настройка123`, `param` 1003 | 1004 | ```bsl 1005 | // ✅ Хорошо 1006 | НоваяНастройка.ИмяНастройки = "EmailАдминистратора"; 1007 | НоваяНастройка.ИмяНастройки = "ВключеноПротоколирование"; 1008 | 1009 | // ❌ Плохо 1010 | НоваяНастройка.ИмяНастройки = "Настройка1"; 1011 | НоваяНастройка.ИмяНастройки = "param"; 1012 | ``` 1013 | 1014 |
1015 | 1016 |
1017 | Структурирование через группы 1018 | 1019 | Используйте родительские элементы для логической группировки: 1020 | 1021 | ```bsl 1022 | // Создание группы 1023 | НоваяНастройка = ТаблицаНастроек.Добавить(); 1024 | НоваяНастройка.ИмяНастройки = "НастройкиИнтеграции"; 1025 | НоваяНастройка.ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.КаталогПредопределенныхНастроек"); 1026 | 1027 | // Элементы группы 1028 | НоваяНастройка = ТаблицаНастроек.Добавить(); 1029 | НоваяНастройка.ИмяНастройкиРодителя = "НастройкиИнтеграции"; 1030 | НоваяНастройка.Наименование = НСтр("ru ='Адрес сайта'"); 1031 | НоваяНастройка.ИмяНастройки = "URL_API"; 1032 | НоваяНастройка.ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Строка"); 1033 | НоваяНастройка.Значение = "https://api.example.com"; 1034 | 1035 |
1036 | 1037 | ## Продвинутые техники 1038 | 1039 |
1040 | Обновление настроек при изменении конфигурации 1041 | 1042 | При обновлении конфигурации настройки могут требовать миграции: 1043 | 1044 | ```bsl 1045 | Процедура ОбновитьНастройкиПослеОбновленияКонфигурации() 1046 | 1047 | ТаблицаНастроек = ПредопределенныеНастройки.НоваяТаблицаПредопределенныхНастроек(); 1048 | 1049 | // Изменение существующей настройки 1050 | СуществующаяНастройка = ТаблицаНастроек.Добавить(); 1051 | СуществующаяНастройка.ИмяНастройки = "СтароеИмя"; 1052 | СуществующаяНастройка.НовоеЗначение = "Новое значение"; 1053 | 1054 | // Удаление устаревших настроек 1055 | УстаревшаяНастройка = ТаблицаНастроек.Добавить(); 1056 | УстаревшаяНастройка.ИмяНастройки = "УстаревшаяНастройка"; 1057 | УстаревшаяНастройка.Удалена = Истина; 1058 | 1059 | ПредопределенныеНастройки.ОбновитьНастройкиВБазе(ТаблицаНастроек); 1060 | 1061 | КонецПроцедуры 1062 | ``` 1063 | 1064 |
1065 | 1066 | ## Тестирование 1067 | 1068 |
1069 | Запуск тестов 1070 | 1071 | Подсистема включает обработку `ПредопределенныеНастройкиТестирование` для проверки работоспособности. 1072 | 1073 | 1. Откройте обработку в запущенном приложении 1074 | 2. Нажмите "Создать тестовые настройки" 1075 | 3. Проверьте, что все настройки созданы (должен появиться зеленый индикатор) 1076 | 4. Нажмите "Установить тестовые значения" 1077 | 5. Проверьте корректность значений 1078 | 6. Нажмите "Удалить тестовые настройки" 1079 | 7. Убедитесь, что настройки удалены 1080 | 1081 |
1082 | 1083 | ## Лицензия 1084 | 1085 | [MIT License](LICENSE) - Copyright (c) 2025 Fedor Timokhov 1086 | 1087 | ## Контакты 1088 | 1089 | Автор: **Fedor Timokhov** 1090 | 1091 | ## Публикация 1092 | 1093 |
1094 | Infostart.ru 1095 |
1096 | 1097 |

📄 Читать публикацию

1098 | -------------------------------------------------------------------------------- /ПредопределенныеЗначенияПодсистема/src/DataProcessors/ПредопределенныеНастройкиТестирование/Forms/ФормаТестирования/Module.bsl: -------------------------------------------------------------------------------- 1 | #Область ОбработчикиКомандФормы 2 | 3 | &НаКлиенте 4 | Процедура СозданиеПредопределенныхНастроек(Команда) 5 | СозданиеПредопределенныхНастроекНаСервере(); 6 | КонецПроцедуры 7 | 8 | &НаКлиенте 9 | Процедура УстановитьТестовые(Команда) 10 | УстановитьТестовыеНаСервере(); 11 | КонецПроцедуры 12 | 13 | &НаКлиенте 14 | Процедура УдалениеПредопределенныхНастроек(Команда) 15 | ОбновитьПовторноИспользуемыеЗначения(); 16 | УдалениеПредопределенныхНастроекНаСервере(); 17 | ОбновитьПовторноИспользуемыеЗначения(); 18 | ПроверитьУдаленныеНастройки(); 19 | КонецПроцедуры 20 | 21 | &НаКлиенте 22 | Процедура УдалениеПредопределеннойНастройкиСтрока(Команда) 23 | УдалениеПредопределеннойНастройкиСтрокаНаСервере(); 24 | КонецПроцедуры 25 | 26 | &НаКлиенте 27 | Процедура УстановитьЗначениеПредопределеннойНастройкиСтрока(Команда) 28 | УстановитьЗначениеПредопределеннойНастройкиСтрокаНаСервере(); 29 | КонецПроцедуры 30 | 31 | &НаКлиенте 32 | Процедура СозданиеПредопределеннойНастройкиСтрока(Команда) 33 | СозданиеПредопределеннойНастройкиСтрокаНаСервере(); 34 | КонецПроцедуры 35 | 36 | &НаКлиенте 37 | Процедура СозданиеПредопределеннойНастройкиБулево(Команда) 38 | СозданиеПредопределеннойНастройкиБулевоНаСервере(); 39 | КонецПроцедуры 40 | 41 | &НаКлиенте 42 | Процедура УстановитьЗначениеПредопределеннойНастройкиБулево(Команда) 43 | УстановитьЗначениеПредопределеннойНастройкиБулевоНаСервере(); 44 | КонецПроцедуры 45 | 46 | &НаКлиенте 47 | Процедура УдалениеПредопределеннойНастройкиБулево(Команда) 48 | УдалениеПредопределеннойНастройкиБулевоНаСервере(); 49 | КонецПроцедуры 50 | 51 | &НаКлиенте 52 | Процедура СозданиеПредопределеннойНастройкиСсылка(Команда) 53 | СозданиеПредопределеннойНастройкиСсылкаНаСервере(); 54 | КонецПроцедуры 55 | 56 | &НаКлиенте 57 | Процедура УстановитьЗначениеПредопределеннойНастройкиСсылка(Команда) 58 | УстановитьЗначениеПредопределеннойНастройкиСсылкаНаСервере(); 59 | КонецПроцедуры 60 | 61 | &НаКлиенте 62 | Процедура УдалениеПредопределеннойНастройкиСсылка(Команда) 63 | УдалениеПредопределеннойНастройкиСсылкаНаСервере(); 64 | КонецПроцедуры 65 | 66 | &НаКлиенте 67 | Процедура СозданиеПредопределеннойНастройкиМассив(Команда) 68 | СозданиеПредопределеннойНастройкиМассивНаСервере(); 69 | КонецПроцедуры 70 | 71 | &НаКлиенте 72 | Процедура УстановитьЗначениеПредопределеннойНастройкиМассив(Команда) 73 | УстановитьЗначениеПредопределеннойНастройкиМассивНаСервере(); 74 | КонецПроцедуры 75 | 76 | &НаКлиенте 77 | Процедура УдалениеПредопределеннойНастройкиМассив(Команда) 78 | УдалениеПредопределеннойНастройкиМассивНаСервере(); 79 | КонецПроцедуры 80 | 81 | &НаКлиенте 82 | Процедура СозданиеПредопределеннойНастройкиТаблицаЗначений(Команда) 83 | СозданиеПредопределеннойНастройкиТаблицаЗначенийНаСервере(); 84 | КонецПроцедуры 85 | 86 | &НаКлиенте 87 | Процедура УстановитьЗначениеПредопределеннойНастройкиТаблицаЗначений(Команда) 88 | УстановитьЗначениеПредопределеннойНастройкиТаблицаЗначенийНаСервере(); 89 | КонецПроцедуры 90 | 91 | &НаКлиенте 92 | Процедура УдалениеПредопределеннойНастройкиТаблицаЗначений(Команда) 93 | УдалениеПредопределеннойНастройкиТаблицаЗначенийНаСервере(); 94 | КонецПроцедуры 95 | 96 | &НаКлиенте 97 | Процедура СозданиеПредопределеннойНастройкиКлючЗначение(Команда) 98 | СозданиеПредопределеннойНастройкиКлючЗначениеНаСервере(); 99 | КонецПроцедуры 100 | 101 | &НаКлиенте 102 | Процедура УстановитьЗначениеПредопределеннойНастройкиКлючЗначение(Команда) 103 | УстановитьЗначениеПредопределеннойНастройкиКлючЗначениеНаСервере(); 104 | КонецПроцедуры 105 | 106 | &НаКлиенте 107 | Процедура УдалениеПредопределеннойНастройкиКлючЗначение(Команда) 108 | УдалениеПредопределеннойНастройкиКлючЗначениеНаСервере(); 109 | КонецПроцедуры 110 | 111 | 112 | &НаКлиенте 113 | Процедура СозданиеПредопределеннойНастройкиКаталогПредопределенныхНастроек(Команда) 114 | СозданиеПредопределеннойНастройкиКаталогПредопределенныхНастроекНаСервере(); 115 | КонецПроцедуры 116 | 117 | &НаКлиенте 118 | Процедура УдалениеПредопределеннойНастройкиКаталогПредопределенныхНастроек(Команда) 119 | УдалениеПредопределеннойНастройкиКаталогПредопределенныхНастроекНаСервере(); 120 | КонецПроцедуры 121 | #КонецОбласти 122 | 123 | #Область СлужебныеПроцедурыИФункции 124 | 125 | // Процедура выполняет создание предопределенных настроек на сервере. 126 | &НаСервере 127 | Процедура СозданиеПредопределенныхНастроекНаСервере() 128 | 129 | ОбновитьПовторноИспользуемыеЗначения(); 130 | 131 | ТаблицаНастроек = ТаблицаПредопределенныхТестовыхНастроек(); 132 | ПредопределенныеНастройки.ОбновитьНастройкиВБазе(ТаблицаНастроек); 133 | ПроверитьСозданныеНастройки(ТаблицаНастроек); 134 | 135 | КонецПроцедуры 136 | 137 | &НаСервере 138 | Процедура УстановитьТестовыеНаСервере() 139 | 140 | ТаблицаНастроек = ТаблицаПредопределенныхТестовыхНастроек(); 141 | 142 | ТаблицаНастроек = ПредопределенныеНастройки.НоваяТаблицаПредопределенныхНастроек(); 143 | ДобавитьТестовоеБулево(ТаблицаНастроек); 144 | ИзменитьТестовоеБулево(ТаблицаНастроек); 145 | 146 | ДобавитьТестовуюСтроку(ТаблицаНастроек); 147 | ИзменитьТестовуюСтроку(ТаблицаНастроек); 148 | 149 | ДобавитьТестовуюСсылку(ТаблицаНастроек); 150 | ИзменитьТестовуюСсылку(ТаблицаНастроек); 151 | 152 | ДобавитьТестовыйМассив(ТаблицаНастроек); 153 | ИзменитьТестовыйМассив(ТаблицаНастроек); 154 | 155 | 156 | ДобавитьТестовыйКлючЗначение(ТаблицаНастроек); 157 | ДобавитьТестовуюТаблицуЗначений(ТаблицаНастроек); 158 | 159 | 160 | 161 | ПредопределенныеНастройки.ОбновитьНастройкиВБазе(ТаблицаНастроек); 162 | 163 | ПроверитьУстановленныеНастройки(ТаблицаНастроек); 164 | 165 | КонецПроцедуры 166 | 167 | // Функция возвращает таблицу предопределенных тестовых настроек. 168 | // Возвращаемое значение: 169 | // ТаблицаЗначений - ТаблицаЗначений, содержащая информацию о предопределенных тестовых настройках. 170 | &НаСервере 171 | Функция ТаблицаПредопределенныхТестовыхНастроек() 172 | 173 | ТаблицаНастроек = ПредопределенныеНастройки.НоваяТаблицаПредопределенныхНастроек(); 174 | 175 | ДобавитьТестовуюСтроку(ТаблицаНастроек); 176 | ДобавитьТестовоеБулево(ТаблицаНастроек); 177 | ДобавитьТестовуюСсылку(ТаблицаНастроек); 178 | ДобавитьТестовыйМассив(ТаблицаНастроек); 179 | ДобавитьТестовыйКлючЗначение(ТаблицаНастроек); 180 | ДобавитьТестовуюТаблицуЗначений(ТаблицаНастроек); 181 | 182 | Возврат ТаблицаНастроек; 183 | 184 | КонецФункции 185 | 186 | // Процедура проверяет, были ли созданы предопределенные настройки. 187 | &НаСервере 188 | Процедура ПроверитьСозданныеНастройки(ТаблицаНастроек) 189 | 190 | НастройкиНайдены = Истина; 191 | ИменаКнопокПоТипуНастроек = ИменаКнопокСозданияПоТипамЗначений(); 192 | 193 | Для Каждого Строка Из ТаблицаНастроек Цикл 194 | ПроверитьЗначениеНастройки(Строка.ИмяНастройки, Строка.Значение, ИменаКнопокПоТипуНастроек); 195 | 196 | Настройка = ПредопределенныеНастройкиПовтИсп.СсылкаПредопределеннойНастройки(Строка.ИмяНастройки); 197 | Если Настройка = ПредопределенноеЗначение("Справочник.ПредопределенныеНастройки.ПустаяСсылка") Тогда 198 | НастройкиНайдены = Ложь; 199 | КонецЕсли; 200 | КонецЦикла; 201 | 202 | Если НастройкиНайдены Тогда 203 | Элементы.НастройкиСозданы.Картинка = БиблиотекаКартинок.ОформлениеКругЗеленый; 204 | Элементы.НастройкиСозданы.Подсказка = НСтр("ru ='Тестовые настройки созданы'"); 205 | Иначе 206 | Элементы.НастройкиСозданы.Картинка = БиблиотекаКартинок.ОформлениеКругКрасный; 207 | Элементы.НастройкиСозданы.Подсказка = НСтр("ru ='Тестовые настройки не найдены'"); 208 | КонецЕсли; 209 | 210 | КонецПроцедуры 211 | 212 | &НаСервере 213 | Процедура ПроверитьУстановленныеНастройки(ТаблицаНастроек) 214 | 215 | НастройкиУстановлены = Истина; 216 | ИменаКнопокПоТипуНастроек = ИменаКнопокУстановкиПоТипамЗначений(); 217 | 218 | Для Каждого Строка Из ТаблицаНастроек Цикл 219 | ПроверитьЗначениеНастройки(Строка.ИмяНастройки, Строка.Значение, ИменаКнопокПоТипуНастроек); 220 | 221 | Настройка = ПредопределенныеНастройкиПовтИсп.СсылкаПредопределеннойНастройки(Строка.ИмяНастройки); 222 | Если Настройка = ПредопределенноеЗначение("Справочник.ПредопределенныеНастройки.ПустаяСсылка") Тогда 223 | НастройкиУстановлены = Ложь; 224 | КонецЕсли; 225 | КонецЦикла; 226 | 227 | Если НастройкиУстановлены Тогда 228 | Элементы.НастройкиУстановлены.Картинка = БиблиотекаКартинок.ОформлениеКругЗеленый; 229 | Элементы.НастройкиУстановлены.Подсказка = НСтр("ru ='Тестовые настройки созданы'"); 230 | Иначе 231 | Элементы.НастройкиУстановлены.Картинка = БиблиотекаКартинок.ОформлениеКругКрасный; 232 | Элементы.НастройкиУстановлены.Подсказка = НСтр("ru ='Тестовые настройки не найдены'"); 233 | КонецЕсли; 234 | 235 | КонецПроцедуры 236 | 237 | &НаСервере 238 | Функция ЗначениеНастройкиВерно(ИмяНастройки, ЗначениеИсходное) 239 | 240 | ТипЗначения = ПредопределенныеНастройки.ТипЗначенияПредопределеннойНастройки(ЗначениеИсходное); 241 | Возврат ЗначениеНастройкиСоответствуетЗначению(ИмяНастройки, ТипЗначения, ЗначениеИсходное); 242 | 243 | КонецФункции 244 | 245 | &НаСервере 246 | Процедура УстановитьОформлениеКнопки(ИмяКнопки, ЗначенияИдентичны) 247 | 248 | Кнопка = Элементы[ИмяКнопки]; 249 | Команда = Команды[ИмяКнопки]; 250 | 251 | Кнопка.Картинка = БиблиотекаКартинок.ОформлениеКругЖелтый; 252 | Кнопка.Отображение = ОтображениеКнопки.КартинкаИТекст; 253 | Кнопка.ОтображениеПодсказки = ОтображениеПодсказки.Всплывающая; 254 | 255 | Если ЗначенияИдентичны Тогда 256 | ТекстПодсказки = СтрШаблон(НСтр("ru = 'Значение настройки корректно (%1)'"), ИмяКнопки); 257 | УстановитьСтатусКнопки(Кнопка, Команда, Истина, ТекстПодсказки); 258 | Иначе 259 | ТекстПодсказки = СтрШаблон(НСтр("ru = 'Значение настройки не совпадает (%1)'"), ИмяКнопки); 260 | УстановитьСтатусКнопки(Кнопка, Команда, Ложь, ТекстПодсказки); 261 | КонецЕсли; 262 | 263 | КонецПроцедуры 264 | 265 | &НаСервере 266 | Процедура ПроверитьЗначениеНастройки(ИмяНастройки, ЗначениеИсходное, ИменаКнопокПоТипуНастроек) 267 | 268 | ТипЗначения = ПредопределенныеНастройки.ТипЗначенияПредопределеннойНастройки(ЗначениеИсходное); 269 | ИмяКнопки = ИменаКнопокПоТипуНастроек[ТипЗначения]; 270 | 271 | ЗначенияИдентичны = ЗначениеНастройкиВерно(ИмяНастройки, ЗначениеИсходное); 272 | 273 | УстановитьОформлениеКнопки(ИмяКнопки, ЗначенияИдентичны); 274 | 275 | КонецПроцедуры 276 | 277 | &НаСервере 278 | Функция ЗначениеНастройкиСоответствуетЗначению(ИмяНастройки, Знач ТипЗначения, Значение) 279 | Если ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Строка") 280 | Или ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Булево") 281 | Или ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Ссылка") Тогда 282 | 283 | ЗначенияИдентичны = Значение = ПредопределенныеНастройки.Значение(ИмяНастройки) ; 284 | 285 | ИначеЕсли ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Массив") Тогда 286 | 287 | ЗначенияИдентичны = МассивыИдентичны(Значение, ПредопределенныеНастройки.Значение(ИмяНастройки)); 288 | 289 | ИначеЕсли ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.ТаблицаЗначений") Тогда 290 | 291 | ЗначенияИдентичны = Не КоллекцияРазличаются(Значение, ПредопределенныеНастройки.Значение(ИмяНастройки)); 292 | 293 | ИначеЕсли ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.КлючЗначение") Тогда 294 | 295 | ЗначенияИдентичны = СоответствияИдентичны(Значение, ПредопределенныеНастройки.Значение(ИмяНастройки)); 296 | 297 | КонецЕсли; 298 | Возврат ЗначенияИдентичны 299 | КонецФункции 300 | 301 | &НаСервере 302 | Процедура УстановитьСтатусКнопки(Кнопка, Команда, Статус, ТекстПодсказки) 303 | 304 | Если Статус Тогда 305 | Кнопка.Картинка = БиблиотекаКартинок.ОформлениеКругЗеленый; 306 | Иначе 307 | Кнопка.Картинка = БиблиотекаКартинок.ОформлениеКругКрасный; 308 | КонецЕсли; 309 | 310 | ДобавитьПодсказку(Команда, ТекстПодсказки); 311 | 312 | КонецПроцедуры 313 | 314 | &НаСервере 315 | Функция МассивыИдентичны(ПервыйМассив, ВторойМассив) 316 | ЭлементовМассива = ПервыйМассив.Количество(); 317 | МассивыСовпадают = (ЭлементовМассива = ВторойМассив.Количество()); 318 | Если МассивыСовпадают Тогда 319 | Для Сч = 1 По ЭлементовМассива Цикл 320 | Если ПервыйМассив[Сч - 1] <> ВторойМассив[Сч - 1] Тогда 321 | Возврат Ложь 322 | КонецЕсли 323 | ; 324 | КонецЦикла; 325 | КонецЕсли; 326 | Возврат МассивыСовпадают 327 | КонецФункции 328 | 329 | Функция СоответствияИдентичны(Соответствие1, Соответствие2) 330 | Если Соответствие1.Количество() <> Соответствие2.Количество() Тогда 331 | Возврат Ложь 332 | КонецЕсли; 333 | Для Каждого Элемент Из Соответствие1 Цикл 334 | Если Соответствие2.Получить(Элемент.Ключ) <> Элемент.Значение Тогда 335 | Возврат Ложь 336 | КонецЕсли; 337 | КонецЦикла; 338 | Для Каждого Элемент Из Соответствие2 Цикл 339 | Если Соответствие1.Получить(Элемент.Ключ) <> Элемент.Значение Тогда 340 | Возврат Ложь 341 | КонецЕсли; 342 | КонецЦикла; 343 | Возврат Истина 344 | КонецФункции 345 | 346 | &НаСервере 347 | Функция КоллекцияРазличаются(ТЗ1,ТЗ2,ИсключаемыеКолонки="") 348 | 349 | ИсклКол = СтрРазделить(ИсключаемыеКолонки, ",", Ложь); 350 | 351 | Если ТЗ1.Количество()<>ТЗ2.Количество() Тогда 352 | Если ТЗ1.Количество()=1 И ТЗ2.Количество()=0 Тогда 353 | Для К=0 По ТЗ1.Количество()-1 Цикл 354 | Стр1=ТЗ1[К]; 355 | Для М=0 По ТЗ1.Колонки.Количество()-1 Цикл 356 | Имя=ТЗ1.Колонки[М].Имя; 357 | Если ИсклКол.Найти(Имя)<>Неопределено Тогда 358 | Продолжить; 359 | КонецЕсли; 360 | Если ЗначениеЗаполнено(Стр1[Имя]) Тогда 361 | Возврат Истина; 362 | КонецЕсли; 363 | КонецЦикла; 364 | КонецЦикла; 365 | Возврат Ложь; 366 | ИначеЕсли ТЗ1.Количество()=0 И ТЗ2.Количество()=1 Тогда 367 | Для К=0 По ТЗ2.Количество()-1 Цикл 368 | Стр2=ТЗ2[К]; 369 | Для М=0 По ТЗ1.Колонки.Количество()-1 Цикл 370 | Имя=ТЗ1.Колонки[М].Имя; 371 | Если ИсклКол.Найти(Имя)<>Неопределено Тогда 372 | Продолжить; 373 | КонецЕсли; 374 | Если ЗначениеЗаполнено(Стр2[Имя]) Тогда 375 | Возврат Истина; 376 | КонецЕсли; 377 | КонецЦикла; 378 | КонецЦикла; 379 | Возврат Ложь; 380 | Иначе 381 | Возврат Истина; 382 | КонецЕсли; 383 | КонецЕсли; 384 | Для К=0 По ТЗ1.Количество()-1 Цикл 385 | Стр1=ТЗ1[К]; 386 | Стр2=ТЗ2[К]; 387 | Для М=0 По ТЗ1.Колонки.Количество()-1 Цикл 388 | Имя=ТЗ1.Колонки[М].Имя; 389 | Если ИсклКол.Найти(Имя)<>Неопределено Тогда 390 | Продолжить; 391 | КонецЕсли; 392 | Если Стр1[Имя]<>Стр2[Имя] Тогда 393 | Возврат Истина; 394 | КонецЕсли; 395 | КонецЦикла; 396 | КонецЦикла; 397 | Возврат Ложь; 398 | КонецФункции 399 | 400 | &НаСервере 401 | Процедура ДобавитьПодсказку(Команда, ТекстЭтапа) 402 | 403 | Подсказка = Команда.Подсказка; 404 | Если ПустаяСтрока(Команда.Подсказка) Тогда 405 | Команда.Подсказка = ТекстЭтапа; 406 | Иначе 407 | Команда.Подсказка = СтрШаблон(НСтр("ru = '%1 408 | |%2'"), Подсказка, ТекстЭтапа); 409 | КонецЕсли; 410 | 411 | КонецПроцедуры 412 | 413 | &НаСервере 414 | Функция ИменаКнопокСозданияПоТипамЗначений() 415 | 416 | ИменаКнопокПоТипуНастроек = Новый Соответствие; 417 | 418 | ИменаКнопокПоТипуНастроек.Вставить(ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Строка"), "СозданиеПредопределеннойНастройкиСтрока"); 419 | ИменаКнопокПоТипуНастроек.Вставить(ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Булево"), "СозданиеПредопределеннойНастройкиБулево"); 420 | ИменаКнопокПоТипуНастроек.Вставить(ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Ссылка"), "СозданиеПредопределеннойНастройкиСсылка"); 421 | ИменаКнопокПоТипуНастроек.Вставить(ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Массив"), "СозданиеПредопределеннойНастройкиМассив"); 422 | ИменаКнопокПоТипуНастроек.Вставить(ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.КлючЗначение"), "СозданиеПредопределеннойНастройкиКлючЗначение"); 423 | ИменаКнопокПоТипуНастроек.Вставить(ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.ТаблицаЗначений"), "СозданиеПредопределеннойНастройкиТаблицаЗначений"); 424 | Возврат ИменаКнопокПоТипуНастроек 425 | 426 | КонецФункции 427 | 428 | &НаСервере 429 | Функция ИменаКнопокУдаленияПоТипамЗначений() 430 | 431 | ИменаКнопокПоТипуНастроек = Новый Соответствие; 432 | 433 | ИменаКнопокПоТипуНастроек.Вставить(ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Строка"), "УдалениеПредопределеннойНастройкиСтрока"); 434 | ИменаКнопокПоТипуНастроек.Вставить(ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Булево"), "УдалениеПредопределеннойНастройкиБулево"); 435 | ИменаКнопокПоТипуНастроек.Вставить(ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Ссылка"), "УдалениеПредопределеннойНастройкиСсылка"); 436 | ИменаКнопокПоТипуНастроек.Вставить(ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Массив"), "УдалениеПредопределеннойНастройкиМассив"); 437 | ИменаКнопокПоТипуНастроек.Вставить(ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.КлючЗначение"), "УдалениеПредопределеннойНастройкиКлючЗначение"); 438 | ИменаКнопокПоТипуНастроек.Вставить(ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.ТаблицаЗначений"), "УдалениеПредопределеннойНастройкиТаблицаЗначений"); 439 | ИменаКнопокПоТипуНастроек.Вставить(ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.КаталогПредопределенныхНастроек"), "УдалениеПредопределеннойНастройкиКаталогПредопределенныхНастроек"); 440 | Возврат ИменаКнопокПоТипуНастроек 441 | 442 | КонецФункции 443 | 444 | &НаСервере 445 | Функция ИменаКнопокУстановкиПоТипамЗначений() 446 | 447 | ИменаКнопокПоТипуНастроек = Новый Соответствие; 448 | 449 | ИменаКнопокПоТипуНастроек.Вставить(ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Строка"), "УстановитьЗначениеПредопределеннойНастройкиСтрока"); 450 | ИменаКнопокПоТипуНастроек.Вставить(ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Булево"), "УстановитьЗначениеПредопределеннойНастройкиБулево"); 451 | ИменаКнопокПоТипуНастроек.Вставить(ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Ссылка"), "УстановитьЗначениеПредопределеннойНастройкиСсылка"); 452 | ИменаКнопокПоТипуНастроек.Вставить(ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Массив"), "УстановитьЗначениеПредопределеннойНастройкиМассив"); 453 | ИменаКнопокПоТипуНастроек.Вставить(ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.КлючЗначение"), "УстановитьЗначениеПредопределеннойНастройкиКлючЗначение"); 454 | ИменаКнопокПоТипуНастроек.Вставить(ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.ТаблицаЗначений"), "УстановитьЗначениеПредопределеннойНастройкиТаблицаЗначений"); 455 | Возврат ИменаКнопокПоТипуНастроек 456 | 457 | КонецФункции 458 | 459 | &НаСервере 460 | Процедура ДобавитьТестовуюГруппу(ТаблицаНастроек) 461 | 462 | НоваяНастройка = ТаблицаНастроек.Добавить(); 463 | НоваяНастройка.Идентификатор = Новый УникальныйИдентификатор("63728614-6322-466a-af5c-a41e5ca55436"); 464 | НоваяНастройка.ИмяНастройки = ИмяНастройкиТестовойГруппы(); 465 | НоваяНастройка.Наименование = НСтр("ru ='Группа настроек проверки тестирования'"); 466 | НоваяНастройка.ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.КаталогПредопределенныхНастроек"); 467 | НоваяНастройка.Значение = НСтр("ru ='Ваше будущее - за 1С!'"); 468 | 469 | КонецПроцедуры 470 | 471 | &НаСервере 472 | Процедура ДобавитьТестовуюСтроку(ТаблицаНастроек) 473 | 474 | НоваяНастройка = ТаблицаНастроек.Добавить(); 475 | НоваяНастройка.ИмяНастройкиРодителя = ИмяНастройкиТестовойГруппы(); 476 | НоваяНастройка.Идентификатор = Новый УникальныйИдентификатор("98048614-6212-466a-af5c-a08e5ca56056"); 477 | НоваяНастройка.ИмяНастройки = ИмяНастройкиТестовойСтрки(); 478 | НоваяНастройка.Наименование = "Насройка проверки строкового значения"; 479 | НоваяНастройка.Описание = НСтр("ru ='Проврерка тескстовой настройки.Данная настройка создаетсяся для проверки правильности работы механизма предопределенных настроек.'"); 480 | НоваяНастройка.ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Строка"); 481 | НоваяНастройка.Значение = НСтр("ru ='Ваше будущее - за 1С!'"); 482 | 483 | КонецПроцедуры 484 | 485 | &НаСервере 486 | Процедура ДобавитьТестовоеБулево(ТаблицаНастроек) 487 | 488 | НоваяНастройка = ТаблицаНастроек.Добавить(); 489 | НоваяНастройка.Идентификатор = Новый УникальныйИдентификатор("bfc480f2-023e-40d3-ab52-fecb853edf3c"); 490 | НоваяНастройка.ИмяНастройки = ИмяНастройкиТестовогоБулево(); 491 | НоваяНастройка.Хранилище = Неопределено; 492 | НоваяНастройка.Наименование = НСтр("ru ='Кошки любят виноград?'"); 493 | НоваяНастройка.Описание = НСтр("ru ='Проврерка булевой настройки. Данная настройка создаетсяся для проверки правильности работы механизма предопределенных настроек.'"); 494 | НоваяНастройка.Значение = Истина; 495 | НоваяНастройка.ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Булево"); 496 | 497 | КонецПроцедуры 498 | 499 | &НаСервере 500 | Процедура ИзменитьТестовоеБулево(ТаблицаНастроек) 501 | 502 | СуществующаяНастройка = ТаблицаНастроек.Найти(ИмяНастройкиТестовогоБулево(), "ИмяНастройки"); 503 | Если СуществующаяНастройка <> Неопределено Тогда 504 | СуществующаяНастройка.Значение = Ложь; 505 | КонецЕсли; 506 | 507 | КонецПроцедуры 508 | 509 | &НаСервере 510 | Процедура ИзменитьТестовуюСтроку(ТаблицаНастроек) 511 | 512 | СуществующаяНастройка = ТаблицаНастроек.Найти(ИмяНастройкиТестовойСтрки(), "ИмяНастройки"); 513 | Если СуществующаяНастройка <> Неопределено Тогда 514 | СуществующаяНастройка.Значение = СуществующаяНастройка.Значение + " - 1"; 515 | КонецЕсли; 516 | 517 | КонецПроцедуры 518 | 519 | &НаСервере 520 | Процедура ИзменитьТестовуюСсылку(ТаблицаНастроек) 521 | 522 | СуществующаяНастройка = ТаблицаНастроек.Найти(ИмяНастройкиТестовойСсылки(), "ИмяНастройки"); 523 | Если СуществующаяНастройка <> Неопределено Тогда 524 | СуществующаяНастройка.Значение = Справочники.ПредопределенныеНастройки.ПустаяСсылка(); 525 | КонецЕсли; 526 | 527 | КонецПроцедуры 528 | 529 | &НаСервере 530 | Процедура ИзменитьТестовыйМассив(ТаблицаНастроек) 531 | 532 | МассивПример = Новый Массив; 533 | МассивПример.Добавить(5); 534 | МассивПример.Добавить("Семь"); 535 | МассивПример.Добавить(3.14); 536 | 537 | СуществующаяНастройка = ТаблицаНастроек.Найти(ИмяНастройкиТестовыйМассив(), "ИмяНастройки"); 538 | Если СуществующаяНастройка <> Неопределено Тогда 539 | СуществующаяНастройка.Значение = МассивПример; 540 | СуществующаяНастройка.Хранилище = Новый ХранилищеЗначения(МассивПример);; 541 | КонецЕсли; 542 | 543 | КонецПроцедуры 544 | 545 | &НаСервере 546 | Процедура ИзменитьТестовыйКлючЗначение(ТаблицаНастроек) 547 | 548 | Соответствие = Новый Соответствие; 549 | Соответствие.Вставить("Ключ5", "Значение1"); 550 | Соответствие.Вставить("Ключ6", "Значение2"); 551 | Соответствие.Вставить("Ключ7", "Значение3"); 552 | 553 | СуществующаяНастройка = ТаблицаНастроек.Найти(ИмяНастройкиТестовыйКлючЗначение(), "ИмяНастройки"); 554 | Если СуществующаяНастройка <> Неопределено Тогда 555 | СуществующаяНастройка.Значение = Соответствие; 556 | СуществующаяНастройка.Хранилище = Новый ХранилищеЗначения(Соответствие);; 557 | КонецЕсли; 558 | 559 | КонецПроцедуры 560 | 561 | &НаСервере 562 | Процедура ИзменитьТестовуюТаблицуЗначений(ТаблицаНастроек) 563 | 564 | ТаблицаЗначенийПример = Новый ТаблицаЗначений; 565 | ТаблицаЗначенийПример.Колонки.Добавить("Колонка1", Новый ОписаниеТипов("Строка")); 566 | ТаблицаЗначенийПример.Колонки.Добавить("Колонка2",); 567 | ТаблицаЗначенийПример.Колонки.Добавить("Колонка3",); 568 | Строка = ТаблицаЗначенийПример.Добавить(); 569 | Строка.Колонка1 = "Ключ1"; 570 | Строка.Колонка2 = "Значение1"; 571 | Строка.Колонка3 = "Значение1"; 572 | 573 | Строка = ТаблицаЗначенийПример.Добавить(); 574 | Строка.Колонка1 = "Ключ2"; 575 | Строка.Колонка2 = "Значение2"; 576 | Строка.Колонка3 = "Значение3"; 577 | 578 | Строка = ТаблицаЗначенийПример.Добавить(); 579 | Строка.Колонка1 = "Ключ3"; 580 | Строка.Колонка2 = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.ТаблицаЗначений"); 581 | Строка.Колонка3 = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Строка"); 582 | 583 | СуществующаяНастройка = ТаблицаНастроек.Найти(ИмяНастройкиТаблицаЗначений(), "ИмяНастройки"); 584 | Если СуществующаяНастройка <> Неопределено Тогда 585 | СуществующаяНастройка.Значение = ТаблицаЗначенийПример; 586 | СуществующаяНастройка.Хранилище = Новый ХранилищеЗначения(ТаблицаЗначенийПример);; 587 | КонецЕсли; 588 | 589 | КонецПроцедуры 590 | 591 | 592 | &НаСервере 593 | Процедура ДобавитьТестовуюСсылку(ТаблицаНастроек) 594 | 595 | НоваяНастройка = ТаблицаНастроек.Добавить(); 596 | НоваяНастройка.Идентификатор = Новый УникальныйИдентификатор("afc120f2-645d-12d3-ab52-faab754edf3c"); 597 | НоваяНастройка.ИмяНастройки = ИмяНастройкиТестовойСсылки(); 598 | НоваяНастройка.Наименование = НСтр("ru ='Настройка текущего релиза подсистемы'"); 599 | НоваяНастройка.Описание = НСтр("ru ='Проврерка ссылочной настройки. Данная настройка создаетсяся для проверки правильности работы механизма предопределенных настроек.'"); 600 | НоваяНастройка.Значение = ПредопределенныеНастройки.НастройкаПоИмени("ВерсияПодсистемы"); 601 | 602 | //НоваяНастройка.ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Ссылка"); 603 | //НоваяНастройка.Хранилище = Неопределено; 604 | 605 | КонецПроцедуры 606 | 607 | &НаСервере 608 | Процедура ДобавитьТестовуюТаблицуЗначений(ТаблицаНастроек) 609 | 610 | ТаблицаЗначенийПример = Новый ТаблицаЗначений; 611 | ТаблицаЗначенийПример.Колонки.Добавить("Столбец1", Новый ОписаниеТипов("Число")); 612 | ТаблицаЗначенийПример.Колонки.Добавить("Столбец2", Новый ОписаниеТипов("Строка")); 613 | ТаблицаЗначенийПример.Колонки.Добавить("Столбец3"); 614 | Строка = ТаблицаЗначенийПример.Добавить(); 615 | 616 | Строка.Столбец1 = 1; 617 | Строка.Столбец2 = "Значение1"; 618 | Строка = ТаблицаЗначенийПример.Добавить(); 619 | Строка.Столбец1 = 2; 620 | Строка.Столбец2 = "Значение2"; 621 | Строка.Столбец3 = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.ТаблицаЗначений"); 622 | 623 | 624 | НоваяНастройка = ТаблицаНастроек.Добавить(); 625 | НоваяНастройка.Идентификатор = Новый УникальныйИдентификатор("7f988333-8c73-46a8-14a6-455a55a15bbe"); 626 | НоваяНастройка.ИмяНастройки = ИмяНастройкиТаблицаЗначений(); 627 | //НоваяНастройка.Хранилище = Новый ХранилищеЗначения(ТаблицаЗначенийПример); 628 | НоваяНастройка.Наименование = "Таблица значений тестовых настроек"; 629 | НоваяНастройка.Значение = ТаблицаЗначенийПример; 630 | //НоваяНастройка.ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.ТаблицаЗначений"); 631 | НоваяНастройка.Описание = НСтр("ru ='Проврерка настройки с данными таблицы значений. Данная настройка создаетсяся для проверки правильности работы механизма предопределенных настроек.'"); 632 | 633 | КонецПроцедуры 634 | 635 | &НаСервере 636 | Процедура ДобавитьТестовыйКлючЗначение(ТаблицаНастроек) 637 | 638 | Соответствие = Новый Соответствие; 639 | Соответствие.Вставить("Ключ1", "Значение1"); 640 | Соответствие.Вставить("Ключ2", "Значение2"); 641 | Соответствие.Вставить("Ключ3", "Значение3"); 642 | 643 | НоваяНастройка = ТаблицаНастроек.Добавить(); 644 | НоваяНастройка.Идентификатор = Новый УникальныйИдентификатор("2f111348-2c73-32a8-12a6-121a40a88bbe"); 645 | НоваяНастройка.ИмяНастройки = ИмяНастройкиТестовыйКлючЗначение(); 646 | //НоваяНастройка.Хранилище = Новый ХранилищеЗначения(ТаблицаЗначенийПример); 647 | НоваяНастройка.Наименование = "Соответствие"; 648 | НоваяНастройка.Значение = Соответствие; 649 | //НоваяНастройка.ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.КлючЗначение"); 650 | НоваяНастройка.Описание = НСтр("ru ='Проврерка настройки с данными соответствия. Данная настройка создаетсяся для проверки правильности работы механизма предопределенных настроек.'"); 651 | 652 | КонецПроцедуры 653 | 654 | &НаСервере 655 | Процедура ДобавитьТестовыйМассив(ТаблицаНастроек) 656 | 657 | МассивПример = Новый Массив; 658 | МассивПример.Добавить(1); 659 | МассивПример.Добавить("Два"); 660 | МассивПример.Добавить(3.14); 661 | 662 | НоваяНастройка = ТаблицаНастроек.Добавить(); 663 | НоваяНастройка.Идентификатор = Новый УникальныйИдентификатор("6f205348-2c73-46a8-98a6-851a40a12bbe"); 664 | НоваяНастройка.ИмяНастройки = ИмяНастройкиТестовыйМассив(); 665 | //НоваяНастройка.Хранилище = Новый ХранилищеЗначения(МассивПример); 666 | НоваяНастройка.Значение = МассивПример; 667 | НоваяНастройка.Наименование = "Массив тестовых настроек"; 668 | //НоваяНастройка.ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Массив"); 669 | КонецПроцедуры 670 | 671 | 672 | // Процедура удаляет предопределенные настройки с сервера. 673 | &НаСервере 674 | Процедура УдалениеПредопределенныхНастроекНаСервере() 675 | 676 | ОбновитьПовторноИспользуемыеЗначения(); 677 | ТаблицаНастроек = ТаблицаПредопределенныхТестовыхНастроек(); 678 | 679 | Для Каждого Строка Из ТаблицаНастроек Цикл 680 | Настройка = ПредопределенныеНастройкиПовтИсп.СсылкаПредопределеннойНастройки(Строка.ИмяНастройки); 681 | 682 | Если ЗначениеЗаполнено(Настройка) И ТипЗнч(Настройка) = Тип("СправочникСсылка.ПредопределенныеНастройки") Тогда 683 | ОбъектНастройки = Настройка.ПолучитьОбъект(); 684 | ОбъектНастройки.Удалить(); 685 | КонецЕсли; 686 | КонецЦикла; 687 | 688 | КонецПроцедуры 689 | 690 | // Процедура проверяет, были ли удалены предопределенные настройки. 691 | &НаСервере 692 | Процедура ПроверитьУдаленныеНастройки() 693 | 694 | НастройкиУдалены = Истина; 695 | ТаблицаНастроек = ТаблицаПредопределенныхТестовыхНастроек(); 696 | 697 | Для Каждого Строка Из ТаблицаНастроек Цикл 698 | 699 | ИмяНастройки = Строка.ИмяНастройки; 700 | ТипЗначения = ПредопределенныеНастройки.ТипЗначенияПредопределеннойНастройки(Строка.Значение); 701 | 702 | НастройкаУдалена = НастройкаУдалена(ИмяНастройки, ТипЗначения); 703 | ОбновитьИнформациюНаФормеНастройкаУдалена(ИмяНастройки, ТипЗначения, НастройкаУдалена); 704 | 705 | Если Не НастройкаУдалена Тогда 706 | НастройкиУдалены = Ложь; 707 | КонецЕсли; 708 | 709 | КонецЦикла; 710 | 711 | Если НастройкиУдалены Тогда 712 | Элементы.НастройкиУдалены.Картинка = БиблиотекаКартинок.ОформлениеКругЗеленый; 713 | Элементы.НастройкиУдалены.Подсказка = НСтр("ru ='Тестовые настройки не обнаружены'"); 714 | Иначе 715 | Элементы.НастройкиУдалены.Картинка = БиблиотекаКартинок.ОформлениеКругКрасный; 716 | Элементы.НастройкиУдалены.Подсказка = НСтр("ru ='Тестовые настройки найдены в базе'"); 717 | КонецЕсли; 718 | 719 | КонецПроцедуры 720 | 721 | &НаСервере 722 | Процедура ОбновитьИнформациюНаФормеНастройкаУдалена(ИмяНастройки, ТипЗначения, НастройкаУдалена) 723 | 724 | ИменаКнопок = ИменаКнопокУдаленияПоТипамЗначений(); 725 | ИмяКнопки = ИменаКнопок[ТипЗначения]; 726 | Кнопка = Элементы[ИмяКнопки]; 727 | Команда = Команды[ИмяКнопки]; 728 | 729 | Если НастройкаУдалена Тогда 730 | Кнопка.Картинка = БиблиотекаКартинок.ОформлениеКругЗеленый; 731 | ДобавитьПодсказку(Команда, СтрШаблон(НСтр("ru = 'Удаление настройки %1 корректно'"), ИмяНастройки)); 732 | Иначе 733 | Кнопка.Картинка = БиблиотекаКартинок.ОформлениеКругКрасный; 734 | ДобавитьПодсказку(Команда, НСтр("ru = 'Настройка не удалена'")); 735 | КонецЕсли; 736 | 737 | Кнопка.Отображение = ОтображениеКнопки.КартинкаИТекст; 738 | Кнопка.ОтображениеПодсказки = ОтображениеПодсказки.Всплывающая; 739 | 740 | КонецПроцедуры 741 | 742 | &НаСервере 743 | Функция НастройкаУдалена(ИмяНастройки, ТипЗначения) 744 | Настройка = ПредопределенныеНастройки.Значение(ИмяНастройки); 745 | НастройкаУдалена = Настройка = ПредопределенноеЗначение("Справочник.ПредопределенныеНастройки.ПустаяСсылка"); 746 | Возврат НастройкаУдалена; 747 | КонецФункции 748 | 749 | &НаСервере 750 | Процедура УдалитьНастройкуИзКоманды(ИмяНастройки) 751 | 752 | ПредопределеннаяНастройка = ПредопределенныеНастройки.НастройкаПоИмени(ИмяНастройки); 753 | ТипЗначения = ПредопределеннаяНастройка.ТипЗначения; 754 | 755 | ТаблицаНастроек = ПредопределенныеНастройки.НоваяТаблицаПредопределенныхНастроек(); 756 | ДобавитьТестовуюНастройкуПоТипуЗначения(ТаблицаНастроек, ТипЗначения); 757 | Для Каждого Элемент Из ТаблицаНастроек Цикл 758 | Элемент.Удалена = Истина; 759 | КонецЦикла; 760 | ПредопределенныеНастройки.ОбновитьНастройкиВБазе(ТаблицаНастроек); 761 | 762 | НастройкаУдалена = НастройкаУдалена(ИмяНастройки, ТипЗначения); 763 | ОбновитьИнформациюНаФормеНастройкаУдалена(ИмяНастройки, ТипЗначения, НастройкаУдалена); 764 | 765 | КонецПроцедуры 766 | 767 | &НаСервере 768 | Функция ИмяНастройкиТестовойГруппы() 769 | Возврат "Группа тестовых настроек"; 770 | КонецФункции 771 | 772 | &НаСервере 773 | Функция ИмяНастройкиТестовойСтрки() 774 | Возврат "ТестированиеСтроковогоЗначения"; 775 | КонецФункции 776 | 777 | &НаСервере 778 | Функция ИмяНастройкиТестовогоБулево() 779 | Возврат "ТестБулево"; 780 | КонецФункции 781 | 782 | &НаСервере 783 | Функция ИмяНастройкиТестовойСсылки() 784 | Возврат "ТестСсылки"; 785 | КонецФункции 786 | 787 | &НаСервере 788 | Функция ИмяНастройкиТестовыйМассив() 789 | Возврат "ТестМассива"; 790 | КонецФункции 791 | 792 | &НаСервере 793 | Функция ИмяНастройкиТестовыйКлючЗначение() 794 | Возврат "ТестКлючЗначение"; 795 | КонецФункции 796 | 797 | &НаСервере 798 | Функция ИмяНастройкиТаблицаЗначений() 799 | Возврат "ТестТаблицаЗначений"; 800 | КонецФункции 801 | 802 | &НаСервере 803 | Процедура СозданиеПредопределеннойНастройкиКаталогПредопределенныхНастроекНаСервере() 804 | 805 | ТаблицаНастроек = ПредопределенныеНастройки.НоваяТаблицаПредопределенныхНастроек(); 806 | ТипНастройки = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.КаталогПредопределенныхНастроек"); 807 | ДобавитьТестовуюНастройкуПоТипуЗначения(ТаблицаНастроек, ТипНастройки); 808 | ПредопределенныеНастройки.ОбновитьНастройкиВБазе(ТаблицаНастроек); 809 | 810 | КонецПроцедуры 811 | 812 | &НаСервере 813 | Процедура СозданиеПредопределеннойНастройкиСтрокаНаСервере() 814 | 815 | ТаблицаНастроек = ПредопределенныеНастройки.НоваяТаблицаПредопределенныхНастроек(); 816 | ДобавитьТестовуюСтроку(ТаблицаНастроек); 817 | ПредопределенныеНастройки.ОбновитьНастройкиВБазе(ТаблицаНастроек); 818 | 819 | ЗаполнитьДанныеНаФормеПоТекущейНастройке(ИмяНастройкиТестовойСтрки()); 820 | 821 | ПроверитьЗначениеНастройки(ИмяНастройкиТестовойСтрки(), ТаблицаНастроек[0].Значение, ИменаКнопокСозданияПоТипамЗначений()); 822 | 823 | КонецПроцедуры 824 | 825 | Процедура ДобавитьТестовуюНастройкуПоТипуЗначения(ТаблицаНастроек, ТипЗначения) 826 | 827 | Если ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Массив") Тогда 828 | ДобавитьТестовыйМассив(ТаблицаНастроек); 829 | ИначеЕсли ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Строка") Тогда 830 | ДобавитьТестовуюСтроку(ТаблицаНастроек); 831 | ИначеЕсли ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Булево") Тогда 832 | ДобавитьТестовоеБулево(ТаблицаНастроек); 833 | ИначеЕсли ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.Ссылка") Тогда 834 | ДобавитьТестовуюСсылку(ТаблицаНастроек); 835 | ИначеЕсли ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.КлючЗначение") Тогда 836 | ДобавитьТестовыйКлючЗначение(ТаблицаНастроек); 837 | ИначеЕсли ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.ТаблицаЗначений") Тогда 838 | ДобавитьТестовуюТаблицуЗначений(ТаблицаНастроек); 839 | ИначеЕсли ТипЗначения = ПредопределенноеЗначение("Перечисление.ТипыЗначенияПредопределенныхЗначений.КаталогПредопределенныхНастроек") Тогда 840 | ДобавитьТестовуюГруппу(ТаблицаНастроек); 841 | КонецЕсли; 842 | 843 | КонецПроцедуры 844 | 845 | &НаСервере 846 | Процедура СозданиеПредопределеннойНастройкиБулевоНаСервере() 847 | 848 | ТаблицаНастроек = ПредопределенныеНастройки.НоваяТаблицаПредопределенныхНастроек(); 849 | ДобавитьТестовоеБулево(ТаблицаНастроек); 850 | ПредопределенныеНастройки.ОбновитьНастройкиВБазе(ТаблицаНастроек); 851 | 852 | ЗаполнитьДанныеНаФормеПоТекущейНастройке(ИмяНастройкиТестовогоБулево()); 853 | 854 | ПроверитьЗначениеНастройки(ИмяНастройкиТестовогоБулево(), ТаблицаНастроек[0].Значение, ИменаКнопокСозданияПоТипамЗначений()); 855 | 856 | КонецПроцедуры 857 | 858 | &НаСервере 859 | Процедура СозданиеПредопределеннойНастройкиСсылкаНаСервере() 860 | 861 | ТаблицаНастроек = ПредопределенныеНастройки.НоваяТаблицаПредопределенныхНастроек(); 862 | ДобавитьТестовуюСсылку(ТаблицаНастроек); 863 | ПредопределенныеНастройки.ОбновитьНастройкиВБазе(ТаблицаНастроек); 864 | 865 | ЗаполнитьДанныеНаФормеПоТекущейНастройке(ИмяНастройкиТестовойСсылки()); 866 | 867 | ПроверитьЗначениеНастройки(ИмяНастройкиТестовойСсылки(), ТаблицаНастроек[0].Значение, ИменаКнопокСозданияПоТипамЗначений()); 868 | 869 | КонецПроцедуры 870 | 871 | &НаСервере 872 | Процедура СозданиеПредопределеннойНастройкиМассивНаСервере() 873 | 874 | ТаблицаНастроек = ПредопределенныеНастройки.НоваяТаблицаПредопределенныхНастроек(); 875 | ДобавитьТестовыйМассив(ТаблицаНастроек); 876 | ПредопределенныеНастройки.ОбновитьНастройкиВБазе(ТаблицаНастроек); 877 | 878 | ЗаполнитьДанныеНаФормеПоТекущейНастройке(ИмяНастройкиТестовыйМассив()); 879 | 880 | ПроверитьЗначениеНастройки(ИмяНастройкиТестовыйМассив(), ТаблицаНастроек[0].Значение, ИменаКнопокСозданияПоТипамЗначений()); 881 | 882 | КонецПроцедуры 883 | 884 | &НаСервере 885 | Процедура СозданиеПредопределеннойНастройкиКлючЗначениеНаСервере() 886 | 887 | ТаблицаНастроек = ПредопределенныеНастройки.НоваяТаблицаПредопределенныхНастроек(); 888 | ДобавитьТестовыйКлючЗначение(ТаблицаНастроек); 889 | ПредопределенныеНастройки.ОбновитьНастройкиВБазе(ТаблицаНастроек); 890 | 891 | ЗаполнитьДанныеНаФормеПоТекущейНастройке(ИмяНастройкиТестовыйКлючЗначение()); 892 | 893 | ПроверитьЗначениеНастройки(ИмяНастройкиТестовыйКлючЗначение(), ТаблицаНастроек[0].Значение, ИменаКнопокСозданияПоТипамЗначений()); 894 | 895 | КонецПроцедуры 896 | 897 | &НаСервере 898 | Процедура СозданиеПредопределеннойНастройкиТаблицаЗначенийНаСервере() 899 | 900 | ТаблицаНастроек = ПредопределенныеНастройки.НоваяТаблицаПредопределенныхНастроек(); 901 | ДобавитьТестовуюТаблицуЗначений(ТаблицаНастроек); 902 | ПредопределенныеНастройки.ОбновитьНастройкиВБазе(ТаблицаНастроек); 903 | 904 | ЗаполнитьДанныеНаФормеПоТекущейНастройке(ИмяНастройкиТаблицаЗначений()); 905 | 906 | ПроверитьЗначениеНастройки(ИмяНастройкиТаблицаЗначений(), ТаблицаНастроек[0].Значение, ИменаКнопокСозданияПоТипамЗначений()); 907 | 908 | КонецПроцедуры 909 | 910 | &НаСервере 911 | Процедура УстановитьЗначениеПредопределеннойНастройкиСтрокаНаСервере() 912 | 913 | ТаблицаНастроек = ПредопределенныеНастройки.НоваяТаблицаПредопределенныхНастроек(); 914 | ДобавитьТестовуюСтроку(ТаблицаНастроек); 915 | ИзменитьТестовуюСтроку(ТаблицаНастроек); 916 | 917 | ПредопределенныеНастройки.ОбновитьНастройкиВБазе(ТаблицаНастроек); 918 | 919 | ЗаполнитьДанныеНаФормеПоТекущейНастройке(ИмяНастройкиТестовойСтрки()); 920 | 921 | ПроверитьЗначениеНастройки(ИмяНастройкиТестовойСтрки(), ТаблицаНастроек[0].Значение, ИменаКнопокУстановкиПоТипамЗначений()); 922 | 923 | КонецПроцедуры 924 | 925 | &НаСервере 926 | Процедура УстановитьЗначениеПредопределеннойНастройкиБулевоНаСервере() 927 | 928 | ТаблицаНастроек = ПредопределенныеНастройки.НоваяТаблицаПредопределенныхНастроек(); 929 | ДобавитьТестовоеБулево(ТаблицаНастроек); 930 | ИзменитьТестовоеБулево(ТаблицаНастроек); 931 | 932 | ПредопределенныеНастройки.ОбновитьНастройкиВБазе(ТаблицаНастроек); 933 | 934 | ЗаполнитьДанныеНаФормеПоТекущейНастройке(ИмяНастройкиТестовогоБулево()); 935 | 936 | ПроверитьЗначениеНастройки(ИмяНастройкиТестовогоБулево(), ТаблицаНастроек[0].Значение, ИменаКнопокУстановкиПоТипамЗначений()); 937 | 938 | КонецПроцедуры 939 | 940 | &НаСервере 941 | Процедура УстановитьЗначениеПредопределеннойНастройкиСсылкаНаСервере() 942 | 943 | ТаблицаНастроек = ПредопределенныеНастройки.НоваяТаблицаПредопределенныхНастроек(); 944 | ДобавитьТестовуюСсылку(ТаблицаНастроек); 945 | ИзменитьТестовуюСсылку(ТаблицаНастроек); 946 | 947 | ПредопределенныеНастройки.ОбновитьНастройкиВБазе(ТаблицаНастроек); 948 | 949 | ЗаполнитьДанныеНаФормеПоТекущейНастройке(ИмяНастройкиТестовойСсылки()); 950 | 951 | ПроверитьЗначениеНастройки(ИмяНастройкиТестовойСсылки(), ТаблицаНастроек[0].Значение, ИменаКнопокУстановкиПоТипамЗначений()); 952 | 953 | КонецПроцедуры 954 | 955 | &НаСервере 956 | Процедура УстановитьЗначениеПредопределеннойНастройкиМассивНаСервере() 957 | 958 | МассивПример = Новый Массив; 959 | МассивПример.Добавить(5); 960 | МассивПример.Добавить("Семь"); 961 | МассивПример.Добавить(3.14); 962 | 963 | ТаблицаНастроек = ПредопределенныеНастройки.НоваяТаблицаПредопределенныхНастроек(); 964 | ДобавитьТестовыйМассив(ТаблицаНастроек); 965 | ТаблицаНастроек[0].Значение = МассивПример; 966 | ТаблицаНастроек[0].Хранилище = Новый ХранилищеЗначения(МассивПример); 967 | 968 | ИзменитьТестовыйМассив(ТаблицаНастроек); 969 | ПредопределенныеНастройки.ОбновитьНастройкиВБазе(ТаблицаНастроек); 970 | 971 | ЗаполнитьДанныеНаФормеПоТекущейНастройке(ИмяНастройкиТестовыйМассив()); 972 | 973 | ПроверитьЗначениеНастройки(ИмяНастройкиТестовыйМассив(), ТаблицаНастроек[0].Значение, ИменаКнопокУстановкиПоТипамЗначений()); 974 | 975 | КонецПроцедуры 976 | 977 | &НаСервере 978 | Процедура УстановитьЗначениеПредопределеннойНастройкиКлючЗначениеНаСервере() 979 | 980 | Соответствие = Новый Соответствие; 981 | Соответствие.Вставить("Ключ6", "Значение1"); 982 | Соответствие.Вставить("Ключ9", "Значение2"); 983 | Соответствие.Вставить("Ключ3", "Значение3"); 984 | 985 | ТаблицаНастроек = ПредопределенныеНастройки.НоваяТаблицаПредопределенныхНастроек(); 986 | ДобавитьТестовыйКлючЗначение(ТаблицаНастроек); 987 | ИзменитьТестовыйКлючЗначение(ТаблицаНастроек); 988 | ТаблицаНастроек[0].Значение = Соответствие; 989 | ТаблицаНастроек[0].Хранилище = Новый ХранилищеЗначения(Соответствие); 990 | 991 | ПредопределенныеНастройки.ОбновитьНастройкиВБазе(ТаблицаНастроек); 992 | 993 | ЗаполнитьДанныеНаФормеПоТекущейНастройке(ИмяНастройкиТестовыйКлючЗначение()); 994 | 995 | ПроверитьЗначениеНастройки(ИмяНастройкиТестовыйКлючЗначение(), ТаблицаНастроек[0].Значение, ИменаКнопокУстановкиПоТипамЗначений()); 996 | 997 | КонецПроцедуры 998 | 999 | &НаСервере 1000 | Процедура УдалениеПредопределеннойНастройкиСтрокаНаСервере() 1001 | 1002 | УдалитьНастройкуИзКоманды(ИмяНастройкиТестовойСтрки()); 1003 | 1004 | КонецПроцедуры 1005 | 1006 | &НаСервере 1007 | Процедура УдалениеПредопределеннойНастройкиБулевоНаСервере() 1008 | 1009 | УдалитьНастройкуИзКоманды(ИмяНастройкиТестовогоБулево()); 1010 | 1011 | КонецПроцедуры 1012 | 1013 | &НаСервере 1014 | Процедура УдалениеПредопределеннойНастройкиСсылкаНаСервере() 1015 | 1016 | УдалитьНастройкуИзКоманды(ИмяНастройкиТестовойСсылки()); 1017 | 1018 | КонецПроцедуры 1019 | 1020 | &НаСервере 1021 | Процедура УдалениеПредопределеннойНастройкиМассивНаСервере() 1022 | 1023 | УдалитьНастройкуИзКоманды(ИмяНастройкиТестовыйМассив()); 1024 | 1025 | КонецПроцедуры 1026 | 1027 | &НаСервере 1028 | Процедура УдалениеПредопределеннойНастройкиКлючЗначениеНаСервере() 1029 | 1030 | УдалитьНастройкуИзКоманды(ИмяНастройкиТестовыйКлючЗначение()); 1031 | 1032 | КонецПроцедуры 1033 | 1034 | &НаСервере 1035 | Процедура УстановитьЗначениеПредопределеннойНастройкиТаблицаЗначенийНаСервере() 1036 | 1037 | ТаблицаНастроек = ПредопределенныеНастройки.НоваяТаблицаПредопределенныхНастроек(); 1038 | ДобавитьТестовуюТаблицуЗначений(ТаблицаНастроек); 1039 | ИзменитьТестовуюТаблицуЗначений(ТаблицаНастроек); 1040 | 1041 | ПредопределенныеНастройки.ОбновитьНастройкиВБазе(ТаблицаНастроек); 1042 | 1043 | ЗаполнитьДанныеНаФормеПоТекущейНастройке(ИмяНастройкиТаблицаЗначений()); 1044 | 1045 | ПроверитьЗначениеНастройки(ИмяНастройкиТаблицаЗначений(), ТаблицаНастроек[0].Значение, ИменаКнопокУстановкиПоТипамЗначений()); 1046 | 1047 | КонецПроцедуры 1048 | 1049 | &НаСервере 1050 | Процедура УдалениеПредопределеннойНастройкиТаблицаЗначенийНаСервере() 1051 | 1052 | УдалитьНастройкуИзКоманды(ИмяНастройкиТаблицаЗначений()); 1053 | 1054 | КонецПроцедуры 1055 | 1056 | &НаСервере 1057 | Процедура УдалениеПредопределеннойНастройкиКаталогПредопределенныхНастроекНаСервере() 1058 | 1059 | УдалитьНастройкуИзКоманды(ИмяНастройкиТестовойГруппы()); 1060 | 1061 | КонецПроцедуры 1062 | 1063 | &НаСервере 1064 | Процедура ЗаполнитьДанныеНаФормеПоТекущейНастройке(ИмяНастройки) 1065 | ПредопределеннаяНастройка = ПредопределенныеНастройки.НастройкаПоИмени(ИмяНастройки); 1066 | ЗначениеПредопределеннойНастройки = ПредопределенныеНастройки.Значение(ИмяНастройки, Истина); 1067 | КонецПроцедуры 1068 | 1069 | #КонецОбласти --------------------------------------------------------------------------------