├── .gitignore ├── doc └── img │ └── screen_main.png ├── ИТМ_ОбновлениеВариантовОтчетов ├── .settings │ ├── com.e1c.v8codestyle.autosort.prefs │ ├── org.eclipse.core.resources.prefs │ ├── com.e1c.v8codestyle.prefs │ ├── com.e1c.v8codestyle.bsl.prefs │ └── com._1c.g5.v8.dt.platform.services.core.prefs ├── DT-INF │ └── PROJECT.PMF ├── .project └── src │ └── ExternalDataProcessors │ └── ИТМ_ОбновлениеВариантовОтчетов │ ├── Templates │ └── СхемаВыбора │ │ └── Template.dcs │ ├── ИТМ_ОбновлениеВариантовОтчетов.mdo │ ├── Forms │ └── Форма │ │ ├── Module.bsl │ │ └── Form.form │ └── ObjectModule.bsl ├── ИТМ_ОбновлениеВариантовОтчетов_Тесты ├── .settings │ ├── com.e1c.v8codestyle.autosort.prefs │ ├── org.eclipse.core.resources.prefs │ ├── com.e1c.v8codestyle.prefs │ ├── com.e1c.v8codestyle.bsl.prefs │ └── Default.cset ├── DT-INF │ └── PROJECT.PMF ├── src │ ├── Configuration │ │ ├── CommandInterface.cmi │ │ ├── MainSectionCommandInterface.cmi │ │ └── Configuration.mdo │ ├── CommonModules │ │ └── ИТМ_ОбновлениеВариантовОтчетов_Тесты_Сервер │ │ │ ├── ИТМ_ОбновлениеВариантовОтчетов_Тесты_Сервер.mdo │ │ │ └── Module.bsl │ ├── DataProcessors │ │ └── ИТМ_ОбновлениеВариантовОтчетов_Интерфейс │ │ │ ├── ObjectModule.bsl │ │ │ └── ИТМ_ОбновлениеВариантовОтчетов_Интерфейс.mdo │ ├── Catalogs │ │ └── ВариантыОтчетов │ │ │ └── ВариантыОтчетов.mdo │ └── Reports │ │ └── ИТМ_ОбновлениеВариантовОтчетов_Тесты_Отчет │ │ ├── ИТМ_ОбновлениеВариантовОтчетов_Тесты_Отчет.mdo │ │ └── Templates │ │ ├── СхемаПосле │ │ └── Template.dcs │ │ └── СхемаДо │ │ └── Template.dcs └── .project ├── bsl-language-server.json ├── sonar-project.properties ├── README.MD └── LICENSE /.gitignore: -------------------------------------------------------------------------------- 1 | #EDT собирает обработку для открытия в предприятии 2 | **/bin/*.epf 3 | .vscode 4 | .scannerwork -------------------------------------------------------------------------------- /doc/img/screen_main.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/magnit-tech/update-users-reports-1c/HEAD/doc/img/screen_main.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 | -------------------------------------------------------------------------------- /ИТМ_ОбновлениеВариантовОтчетов/DT-INF/PROJECT.PMF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Runtime-Version: 8.3.23 3 | Base-Project: configuration 4 | -------------------------------------------------------------------------------- /ИТМ_ОбновлениеВариантовОтчетов_Тесты/.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 | -------------------------------------------------------------------------------- /ИТМ_ОбновлениеВариантовОтчетов_Тесты/DT-INF/PROJECT.PMF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Runtime-Version: 8.3.23 3 | Base-Project: configuration 4 | -------------------------------------------------------------------------------- /ИТМ_ОбновлениеВариантовОтчетов/.settings/com.e1c.v8codestyle.prefs: -------------------------------------------------------------------------------- 1 | commonChecks=true 2 | eclipse.preferences.version=1 3 | standardChecks=true 4 | -------------------------------------------------------------------------------- /ИТМ_ОбновлениеВариантовОтчетов_Тесты/.settings/com.e1c.v8codestyle.prefs: -------------------------------------------------------------------------------- 1 | commonChecks=false 2 | eclipse.preferences.version=1 3 | standardChecks=false 4 | -------------------------------------------------------------------------------- /ИТМ_ОбновлениеВариантовОтчетов/.settings/com.e1c.v8codestyle.bsl.prefs: -------------------------------------------------------------------------------- 1 | addModuleStrictTypesAnnotation=true 2 | createModuleStructure=true 3 | eclipse.preferences.version=1 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 | -------------------------------------------------------------------------------- /ИТМ_ОбновлениеВариантовОтчетов/.settings/com._1c.g5.v8.dt.platform.services.core.prefs: -------------------------------------------------------------------------------- 1 | com._1c.g5.v8.dt.platform.services.core.PREF_AUTO_EXT_OBJECT_DUMP_GENERATION=true 2 | eclipse.preferences.version=1 3 | -------------------------------------------------------------------------------- /ИТМ_ОбновлениеВариантовОтчетов/.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.V8ExternalObjectsNature 17 | 18 | 19 | -------------------------------------------------------------------------------- /ИТМ_ОбновлениеВариантовОтчетов_Тесты/.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.V8ExtensionNature 17 | 18 | 19 | -------------------------------------------------------------------------------- /ИТМ_ОбновлениеВариантовОтчетов_Тесты/src/CommonModules/ИТМ_ОбновлениеВариантовОтчетов_Тесты_Сервер/ИТМ_ОбновлениеВариантовОтчетов_Тесты_Сервер.mdo: -------------------------------------------------------------------------------- 1 | 2 | 3 | ИТМ_ОбновлениеВариантовОтчетов_Тесты_Сервер 4 | 5 | ru 6 | Сервер 7 | 8 | true 9 | true 10 | true 11 | 12 | -------------------------------------------------------------------------------- /bsl-language-server.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://1c-syntax.github.io/bsl-language-server/configuration/schema.json", 3 | "language": "ru", 4 | "diagnostics": { 5 | "computeTrigger": "onType", 6 | "parameters": { 7 | "LineLength": { 8 | "maxLineLength": 140 9 | }, 10 | "SpaceAtStartComment": { 11 | "commentsAnnotation": "//@,//(c),//©,//<<,//>>" 12 | }, 13 | "MissingSpace": { 14 | "allowMultipleCommas": true 15 | }, 16 | "Typo": { 17 | "minWordLength": 4, 18 | "userWordsToIgnore": "SVOD" 19 | } 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /sonar-project.properties: -------------------------------------------------------------------------------- 1 | sonar.projectKey=BSPM_UpdateUsersReports 2 | sonar.projectVersion=2.2.1 3 | 4 | #Используйте https://native2ascii.net/ для вставки русских наименований проектов, не используйте английский если ваша команда русскоязычная и кодите вы на русском 5 | sonar.projectName=\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u043e\u0442\u0447\u0435\u0442\u043e\u0432 6 | 7 | sonar.sources=./\u0418\u0422\u041c_\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435\u0412\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432\u041e\u0442\u0447\u0435\u0442\u043e\u0432 8 | 9 | sonar.sourceEncoding=UTF-8 10 | 11 | sonar.dbcleaner.branchesToKeepWhenInactive=main,develop,release-.* 12 | sonar.inclusions=**/*.bsl,**/*.os,**/*.xml 13 | sonar.lang.patterns.xml=**/*.xsd,**/*.xsl 14 | 15 | sonar.bsl.platformEdition=8.3.23 16 | sonar.bsl.maxDepthSearchConfiguration=6 17 | sonar.bsl.skipAbsorptionComments=false -------------------------------------------------------------------------------- /ИТМ_ОбновлениеВариантовОтчетов_Тесты/src/DataProcessors/ИТМ_ОбновлениеВариантовОтчетов_Интерфейс/ObjectModule.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 | -------------------------------------------------------------------------------- /README.MD: -------------------------------------------------------------------------------- 1 | # Обновление вариантов отчетов 2 | 3 | Инструмент предназначен для массовой замены полей в пользовательских отчетах на основе БСП. 4 | 5 | В процессе поддержки какого-то отчета периодически появляется необходимость изменения имен полей так, что пользовательские варианты отчетов после этого перестают работать корректно. Например, поле меняет имя или путь. В таком случае нужно или вручную "чинить" варианты отчета или же писать свой код для их массового изменения. Для этого и нужен данный инструмент. 6 | 7 | Обработка позволяет: 8 | 9 | - Указать заменяемые поля вручную на форме обработки 10 | - Сохранять и загружать поля замены из файла json 11 | - По настройкам сформировать код, который с использованием самого инструмента программно выполнит замену (для вызова из обработчика обновления) 12 | 13 | При выполнении замены инструмент обрабатывает: 14 | 15 | - Выбранные поля 16 | - Структуру (Группировки\таблицы\диаграммы) 17 | - Отборы 18 | - Сортировки 19 | - Условные оформления 20 | - Пользовательские поля выбора 21 | 22 | При обработке заменяются как непосредственно сами поля, так и обращения к их подчиненным 23 | 24 | ![Окно обработки](doc/img/screen_main.png) -------------------------------------------------------------------------------- /ИТМ_ОбновлениеВариантовОтчетов_Тесты/src/Catalogs/ВариантыОтчетов/ВариантыОтчетов.mdo: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | ВариантыОтчетов 11 | Adopted 12 | 13 | Checked 14 | 15 | true 16 | 17 | -------------------------------------------------------------------------------- /ИТМ_ОбновлениеВариантовОтчетов_Тесты/src/Reports/ИТМ_ОбновлениеВариантовОтчетов_Тесты_Отчет/ИТМ_ОбновлениеВариантовОтчетов_Тесты_Отчет.mdo: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | ИТМ_ОбновлениеВариантовОтчетов_Тесты_Отчет 8 | 9 | ru 10 | Отчет 11 | 12 | true 13 | Report.ИТМ_ОбновлениеВариантовОтчетов_Тесты_Отчет.Template.СхемаДо 14 | 15 | СхемаДо 16 | 17 | ru 18 | Схема до 19 | 20 | DataCompositionSchema 21 | 22 | 23 | СхемаПосле 24 | 25 | ru 26 | Схема после 27 | 28 | DataCompositionSchema 29 | 30 | 31 | -------------------------------------------------------------------------------- /ИТМ_ОбновлениеВариантовОтчетов_Тесты/src/Configuration/Configuration.mdo: -------------------------------------------------------------------------------- 1 | 2 | 3 | ИТМ_ОбновлениеВариантовОтчетов_Тесты 4 | 5 | ru 6 | Обновление вариантов отчетов. Тесты. ИТМ 7 | 8 | Adopted 9 | 10 | Checked 11 | Checked 12 | Checked 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | true 22 | ИТМ_ОбновлениеВариантовОтчетов_Тесты_ 23 | 8.3.14 24 | Customization 25 | ManagedApplication 26 | Russian 27 | Language.Русский 28 | TaxiEnableVersion8_2 29 | 30 | Русский 31 | Adopted 32 | 33 | Checked 34 | 35 | ru 36 | 37 | CommonModule.ИТМ_ОбновлениеВариантовОтчетов_Тесты_Сервер 38 | Catalog.ВариантыОтчетов 39 | Report.ИТМ_ОбновлениеВариантовОтчетов_Тесты_Отчет 40 | DataProcessor.ИТМ_ОбновлениеВариантовОтчетов_Интерфейс 41 | 42 | -------------------------------------------------------------------------------- /ИТМ_ОбновлениеВариантовОтчетов/src/ExternalDataProcessors/ИТМ_ОбновлениеВариантовОтчетов/Templates/СхемаВыбора/Template.dcs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ИсточникДанных1 5 | Local 6 | 7 | 8 | НаборДанных1 9 | 10 | Отчет 11 | Отчет 12 | 13 | <v8:item> 14 | <v8:lang>ru</v8:lang> 15 | <v8:content>Отчет</v8:content> 16 | </v8:item> 17 | 18 | 19 | 20 | ПредопределенныйВариант 21 | ПредопределенныйВариант 22 | 23 | 24 | ВариантОтчета 25 | ВариантОтчета 26 | 27 | <v8:item> 28 | <v8:lang>ru</v8:lang> 29 | <v8:content>Вариант отчета</v8:content> 30 | </v8:item> 31 | 32 | 33 | 34 | Пользовательский 35 | Пользовательский 36 | 37 | ИсточникДанных1 38 | ВЫБРАТЬ 39 | ВариантыОтчетов.Ссылка КАК ВариантОтчета 40 | {ВЫБРАТЬ 41 | ВариантОтчета.* КАК ВариантОтчета} 42 | ИЗ 43 | Справочник.ВариантыОтчетов КАК ВариантыОтчетов 44 | {ГДЕ 45 | ВариантыОтчетов.Отчет.*, 46 | ВариантыОтчетов.ПредопределенныйВариант.*, 47 | ВариантыОтчетов.Ссылка.* КАК ВариантОтчета, 48 | ВариантыОтчетов.Пользовательский} 49 | false 50 | 51 | 52 | Основной 53 | Основной 54 | 55 | 56 | 57 | ВариантОтчета 58 | 59 | 60 | 61 | 62 | Пользовательский 63 | Equal 64 | true 65 | 66 | dc3f28b6-32ea-45e8-bf05-3975980b1ef2 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | -------------------------------------------------------------------------------- /ИТМ_ОбновлениеВариантовОтчетов_Тесты/src/DataProcessors/ИТМ_ОбновлениеВариантовОтчетов_Интерфейс/ИТМ_ОбновлениеВариантовОтчетов_Интерфейс.mdo: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | ИТМ_ОбновлениеВариантовОтчетов_Интерфейс 8 | 9 | ru 10 | ИТМ обновление вариантов отчетов интерфейс 11 | 12 | true 13 | 14 | КомпоновщикНастроек 15 | 16 | ru 17 | Компоновщик настроек 18 | 19 | 20 | DataCompositionSettingsComposer 21 | 22 | 23 | 24 | 25 | 26 | АдресСхемыКомпоновки 27 | 28 | ru 29 | Адрес схемы компоновки 30 | 31 | 32 | String 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | ЗаменяемыеПоля 44 | 45 | ru 46 | Заменяемые поля 47 | 48 | 49 | Заменять 50 | 51 | ru 52 | Заменять 53 | 54 | 55 | Boolean 56 | 57 | 58 | 59 | 60 | 61 | ПутьДо 62 | 63 | ru 64 | Путь до 65 | 66 | 67 | String 68 | 69 | 250 70 | 71 | 72 | 73 | 74 | 75 | 76 | ПутьПосле 77 | 78 | ru 79 | Путь после 80 | 81 | 82 | String 83 | 84 | 250 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | ОбновляемыеВарианты 97 | 98 | ru 99 | Обновляемые варианты 100 | 101 | 102 | ВариантОтчета 103 | 104 | ru 105 | Вариант отчета 106 | 107 | 108 | CatalogRef.ВариантыОтчетов 109 | 110 | 111 | 112 | 113 | 114 | Изменен 115 | 116 | ru 117 | Изменен 118 | 119 | Изменен ли вариант отчета в результате обработки 120 | 121 | Boolean 122 | 123 | 124 | 125 | 126 | 127 | 128 | -------------------------------------------------------------------------------- /ИТМ_ОбновлениеВариантовОтчетов/src/ExternalDataProcessors/ИТМ_ОбновлениеВариантовОтчетов/ИТМ_ОбновлениеВариантовОтчетов.mdo: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | ИТМ_ОбновлениеВариантовОтчетов 7 | 8 | ru 9 | Обновление вариантов отчетов (ИТМ) 10 | 11 | 12 | ExternalDataProcessor.ИТМ_ОбновлениеВариантовОтчетов.Form.Форма 13 | 14 | КомпоновщикНастроек 15 | 16 | ru 17 | Компоновщик настроек 18 | 19 | 20 | DataCompositionSettingsComposer 21 | 22 | 23 | 24 | 25 | 26 | АдресСхемыКомпоновки 27 | 28 | ru 29 | Адрес схемы компоновки 30 | 31 | 32 | String 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | ЗаменяемыеПоля 44 | 45 | ru 46 | Заменяемые поля 47 | 48 | 49 | Заменять 50 | 51 | ru 52 | Заменять 53 | 54 | 55 | Boolean 56 | 57 | 58 | 59 | 60 | 61 | ПутьДо 62 | 63 | ru 64 | Путь до 65 | 66 | 67 | String 68 | 69 | 250 70 | 71 | 72 | 73 | 74 | 75 | 76 | ПутьПосле 77 | 78 | ru 79 | Путь после 80 | 81 | 82 | String 83 | 84 | 250 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | ОбновляемыеВарианты 97 | 98 | ru 99 | Обновляемые варианты 100 | 101 | 102 | ВариантОтчета 103 | 104 | ru 105 | Вариант отчета 106 | 107 | 108 | CatalogRef.ВариантыОтчетов 109 | 110 | 111 | 112 | 113 | 114 | Изменен 115 | 116 | ru 117 | Изменен 118 | 119 | Изменен ли вариант отчета в результате обработки 120 | 121 | Boolean 122 | 123 | 124 | 125 | 126 | 127 | 128 | Форма 129 | 130 | ru 131 | Форма 132 | 133 | PersonalComputer 134 | MobileDevice 135 | 136 | 137 | СхемаВыбора 138 | 139 | ru 140 | Схема выбора 141 | 142 | DataCompositionSchema 143 | 144 | 145 | -------------------------------------------------------------------------------- /ИТМ_ОбновлениеВариантовОтчетов_Тесты/.settings/Default.cset: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "settings": { 4 | "deprecated-procedure-outside-deprecated-region": { 5 | "enabled": false 6 | }, 7 | "md-standard-attribute-synonym-empty": { 8 | "enabled": false 9 | }, 10 | "right-administration": { 11 | "enabled": false 12 | }, 13 | "use-non-recommended-method": { 14 | "enabled": false 15 | }, 16 | "module-region-empty": { 17 | "enabled": false 18 | }, 19 | "mdo-scheduled-job-description": { 20 | "enabled": false 21 | }, 22 | "new-font": { 23 | "enabled": false 24 | }, 25 | "using-form-data-to-value": { 26 | "enabled": false 27 | }, 28 | "right-configuration-extensions-administration": { 29 | "enabled": false 30 | }, 31 | "common-module-name-client-cached": { 32 | "enabled": false 33 | }, 34 | "module-empty-method": { 35 | "enabled": false 36 | }, 37 | "use-goto-operator": { 38 | "enabled": false 39 | }, 40 | "right-data-administration": { 41 | "enabled": false 42 | }, 43 | "change-and-validate-instead-of-around": { 44 | "enabled": false 45 | }, 46 | "right-interactive-clear-deletion-mark-predefined-data": { 47 | "enabled": false 48 | }, 49 | "role-right-has-rls": { 50 | "enabled": false 51 | }, 52 | "method-too-many-params": { 53 | "enabled": false 54 | }, 55 | "scheduled-job-periodicity-too-short": { 56 | "enabled": false 57 | }, 58 | "doc-comment-ref-link": { 59 | "enabled": false 60 | }, 61 | "doc-comment-return-section-type": { 62 | "enabled": false 63 | }, 64 | "right-interactive-set-deletion-mark-predefined-data": { 65 | "enabled": false 66 | }, 67 | "module-structure-event-regions": { 68 | "enabled": false 69 | }, 70 | "right-start-thick-client": { 71 | "enabled": false 72 | }, 73 | "right-update-database-configuration": { 74 | "enabled": false 75 | }, 76 | "module-structure-var-in-region": { 77 | "enabled": false 78 | }, 79 | "right-start-web-client": { 80 | "enabled": false 81 | }, 82 | "right-interactive-open-external-data-processors": { 83 | "enabled": false 84 | }, 85 | "form-item-visible-settings-by-roles": { 86 | "enabled": false 87 | }, 88 | "ql-constants-in-binary-operation": { 89 | "enabled": false 90 | }, 91 | "new-color": { 92 | "enabled": false 93 | }, 94 | "object-module-export-variable": { 95 | "enabled": false 96 | }, 97 | "data-exchange-load": { 98 | "enabled": false 99 | }, 100 | "common-module-type": { 101 | "enabled": false 102 | }, 103 | "bsl-variable-name-invalid": { 104 | "enabled": false 105 | }, 106 | "doc-comment-collection-item-type": { 107 | "enabled": false 108 | }, 109 | "module-unused-local-variable": { 110 | "enabled": false 111 | }, 112 | "right-delete": { 113 | "enabled": false 114 | }, 115 | "extension-variable-prefix": { 116 | "enabled": false 117 | }, 118 | "common-module-name-global": { 119 | "enabled": false 120 | }, 121 | "common-module-name-cached": { 122 | "enabled": false 123 | }, 124 | "right-view-event-log": { 125 | "enabled": false 126 | }, 127 | "notify-description-to-server-procedure": { 128 | "enabled": false 129 | }, 130 | "mdo-name-length": { 131 | "enabled": false 132 | }, 133 | "functional-option-privileged-get-mode": { 134 | "enabled": false 135 | }, 136 | "missing-temporary-file-deletion": { 137 | "enabled": false 138 | }, 139 | "right-interactive-delete-predefined-data": { 140 | "enabled": false 141 | }, 142 | "method-isinrole-role-exist": { 143 | "enabled": false 144 | }, 145 | "module-structure-init-code-in-region": { 146 | "enabled": false 147 | }, 148 | "right-start-external-connection": { 149 | "enabled": false 150 | }, 151 | "doc-comment-use-minus": { 152 | "enabled": false 153 | }, 154 | "right-interactive-delete-marked-predefined-data": { 155 | "enabled": false 156 | }, 157 | "optional-form-parameter-access": { 158 | "enabled": false 159 | }, 160 | "unsafe-password-ib-storage": { 161 | "enabled": false 162 | }, 163 | "common-module-missing-api": { 164 | "enabled": false 165 | }, 166 | "mdo-ru-name-unallowed-letter": { 167 | "enabled": false 168 | }, 169 | "right-exclusive-mode": { 170 | "enabled": false 171 | }, 172 | "module-unused-method": { 173 | "enabled": false 174 | }, 175 | "form-commands-single-action-handler": { 176 | "enabled": false 177 | }, 178 | "right-interactive-open-external-reports": { 179 | "enabled": false 180 | }, 181 | "configuration-data-lock-mode": { 182 | "enabled": false 183 | }, 184 | "code-after-async-call": { 185 | "enabled": false 186 | }, 187 | "manager-module-named-self-reference": { 188 | "enabled": false 189 | }, 190 | "common-module-name-client-server": { 191 | "enabled": false 192 | }, 193 | "export-procedure-missing-comment": { 194 | "enabled": false 195 | }, 196 | "doc-comment-procedure-return-section": { 197 | "enabled": false 198 | }, 199 | "public-method-caching": { 200 | "enabled": false 201 | }, 202 | "md-object-attribute-comment-incorrect-type": { 203 | "enabled": false 204 | }, 205 | "bsl-canonical-pragma": { 206 | "enabled": false 207 | }, 208 | "form-list-ref-use-always-flag-disabled": { 209 | "enabled": false 210 | }, 211 | "subsystem-synonym-too-long": { 212 | "enabled": false 213 | }, 214 | "ql-temp-table-index": { 215 | "enabled": false 216 | }, 217 | "extension-md-object-prefix": { 218 | "enabled": false 219 | }, 220 | "doc-comment-export-procedure-description-section": { 221 | "enabled": false 222 | }, 223 | "lock-out-of-try": { 224 | "enabled": false 225 | }, 226 | "db-object-ref-non-ref-type": { 227 | "enabled": false 228 | }, 229 | "doc-comment-redundant-parameter-section": { 230 | "enabled": false 231 | }, 232 | "right-interactive-delete": { 233 | "enabled": false 234 | }, 235 | "event-heandler-boolean-param": { 236 | "enabled": false 237 | }, 238 | "doc-comment-parameter-in-description-suggestion": { 239 | "enabled": false 240 | }, 241 | "doc-comment-export-function-return-section": { 242 | "enabled": false 243 | }, 244 | "doc-comment-complex-type-with-link": { 245 | "enabled": false 246 | }, 247 | "ql-like-expression-with-field": { 248 | "enabled": false 249 | }, 250 | "input-field-list-choice-mode": { 251 | "enabled": false 252 | }, 253 | "doc-comment-parameter-section": { 254 | "enabled": false 255 | }, 256 | "extension-method-prefix": { 257 | "enabled": false 258 | }, 259 | "form-self-reference": { 260 | "enabled": false 261 | }, 262 | "empty-except-statement": { 263 | "enabled": false 264 | }, 265 | "form-module-missing-pragma": { 266 | "enabled": false 267 | }, 268 | "doc-comment-field-name": { 269 | "enabled": false 270 | }, 271 | "doc-comment-field-in-description-suggestion": { 272 | "enabled": false 273 | }, 274 | "right-active-users": { 275 | "enabled": false 276 | }, 277 | "module-structure-top-region": { 278 | "enabled": false 279 | }, 280 | "data-composition-conditional-appearance-use": { 281 | "enabled": false 282 | }, 283 | "right-output-to-printer-file-clipboard": { 284 | "enabled": false 285 | }, 286 | "right-all-functions-mode": { 287 | "enabled": false 288 | }, 289 | "register-resource-precision": { 290 | "enabled": false 291 | }, 292 | "common-module-name-server-call": { 293 | "enabled": false 294 | }, 295 | "ql-camel-case-string-literal": { 296 | "enabled": false 297 | }, 298 | "common-module-named-self-reference": { 299 | "enabled": false 300 | }, 301 | "module-accessibility-at-client": { 302 | "enabled": false 303 | }, 304 | "module-structure-method-in-regions": { 305 | "enabled": false 306 | }, 307 | "doc-comment-field-type": { 308 | "enabled": false 309 | }, 310 | "ql-virtual-table-filters": { 311 | "enabled": false 312 | }, 313 | "server-execution-safe-mode": { 314 | "enabled": false 315 | }, 316 | "ql-join-to-sub-query": { 317 | "enabled": false 318 | }, 319 | "using-isinrole": { 320 | "enabled": false 321 | }, 322 | "common-module-name-server-call-cached": { 323 | "enabled": false 324 | }, 325 | "doc-comment-type": { 326 | "enabled": false 327 | }, 328 | "method-optional-parameter-before-required": { 329 | "enabled": false 330 | }, 331 | "module-attachable-event-handler-name": { 332 | "enabled": false 333 | }, 334 | "form-dynamic-list-item-title": { 335 | "enabled": false 336 | }, 337 | "reading-attribute-from-database": { 338 | "enabled": false 339 | }, 340 | "invocation-form-event-handler": { 341 | "enabled": false 342 | }, 343 | "right-start-automation": { 344 | "enabled": false 345 | }, 346 | "common-module-name-client": { 347 | "enabled": false 348 | }, 349 | "bsl-nstr-string-literal-format": { 350 | "enabled": false 351 | }, 352 | "ql-cast-to-max-number": { 353 | "enabled": false 354 | }, 355 | "common-module-name-full-access": { 356 | "enabled": false 357 | }, 358 | "unknown-form-parameter-access": { 359 | "enabled": false 360 | }, 361 | "md-object-attribute-comment-not-exist": { 362 | "enabled": false 363 | }, 364 | "ql-using-for-update": { 365 | "enabled": false 366 | }, 367 | "export-method-in-command-form-module": { 368 | "enabled": false 369 | }, 370 | "form-module-pragma": { 371 | "enabled": false 372 | }, 373 | "common-module-name-global-client": { 374 | "enabled": false 375 | }, 376 | "db-object-anyref-type": { 377 | "enabled": false 378 | }, 379 | "md-list-object-presentation": { 380 | "enabled": false 381 | }, 382 | "right-start-thin-client": { 383 | "enabled": false 384 | }, 385 | "form-list-ref-user-visibility-enabled": { 386 | "enabled": false 387 | }, 388 | "module-structure-form-event-regions": { 389 | "enabled": false 390 | }, 391 | "form-items-single-event-handler": { 392 | "enabled": false 393 | }, 394 | "query-in-loop": { 395 | "enabled": false 396 | }, 397 | "structure-consructor-too-many-keys": { 398 | "enabled": false 399 | }, 400 | "document-post-in-privileged-mode": { 401 | "enabled": false 402 | }, 403 | "form-list-field-ref-not-added": { 404 | "enabled": false 405 | }, 406 | "module-self-reference": { 407 | "enabled": false 408 | }, 409 | "right-save-user-data": { 410 | "enabled": false 411 | } 412 | } 413 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright 2023 chernenko_vv 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /ИТМ_ОбновлениеВариантовОтчетов/src/ExternalDataProcessors/ИТМ_ОбновлениеВариантовОтчетов/Forms/Форма/Module.bsl: -------------------------------------------------------------------------------- 1 | // @strict-types 2 | 3 | #Область ОбработчикиСобытийФормы 4 | 5 | &НаСервере 6 | Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) 7 | 8 | СейОбъект = РеквизитФормыВЗначение("Объект"); 9 | СейОбъект.Инициализировать(, УникальныйИдентификатор); 10 | ЗначениеВРеквизитФормы(СейОбъект, "Объект"); 11 | 12 | Заголовок = СтрШаблон("%1 (ver. %2)", 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 | //@skip-check property-return-type - баг ЕДТ 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 | ДиалогВыбораФайла.Фильтр = "JSON (*.json)|*.json"; 191 | Результат = Ждать ДиалогВыбораФайла.ВыбратьАсинх(); 192 | Если ЗначениеЗаполнено(Результат) Тогда 193 | ИмяФайлаНастроек = Результат[0]; 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 | ИмяВременногоФайла = ПолучитьИмяВременногоФайла("json"); 283 | ФайлНастроек.Записать(ИмяВременногоФайла); 284 | 285 | ЧтениеJSON = Новый ЧтениеJSON(); 286 | ЧтениеJSON.ОткрытьФайл(ИмяВременногоФайла); 287 | НастройкиИзФайла = ПрочитатьJSON(ЧтениеJSON, Ложь); 288 | ЧтениеJSON.Закрыть(); 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 | // 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 | Возврат НастойкиОбновленияВСтрокуJSON(НастройкиОбновления); 360 | 361 | КонецФункции 362 | 363 | &НаСервере 364 | Функция НастойкиОбновленияВСтрокуJSON(НастройкиОбновления) 365 | 366 | ПараметрыЗаписи = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Unix,Символы.Таб); //Читабельное оформление 367 | 368 | ЗаписьJSON = Новый ЗаписьJSON; 369 | ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписи); 370 | ЗаписатьJSON(ЗаписьJSON, НастройкиОбновления); 371 | 372 | Возврат ЗаписьJSON.Закрыть(); 373 | 374 | КонецФункции 375 | 376 | // Новый настройки обновления. 377 | // 378 | // Возвращаемое значение: 379 | // Структура - Новый настройки обновления: 380 | // * ЗаменяемыеПоля - Массив из Структура 381 | &НаСервереБезКонтекста 382 | Функция НовыйНастройкиОбновления() 383 | 384 | Результат = Новый Структура; 385 | Результат.Вставить("ЗаменяемыеПоля", Новый Массив); 386 | Возврат Результат; 387 | 388 | КонецФункции 389 | 390 | &НаСервере 391 | Процедура СброситьНастройкиОтборов() 392 | 393 | СейОбъект = РеквизитФормыВЗначение("Объект"); 394 | СейОбъект.СброситьНастройкиОтборов(,УникальныйИдентификатор); 395 | ЗначениеВРеквизитФормы(СейОбъект, "Объект"); 396 | 397 | //Баг платформы. Если не обратиться к коллекции, то изменения на форме не применятся 398 | //@skip-check module-unused-local-variable 399 | НовыеПользовательскиеНастройки = СейОбъект.КомпоновщикНастроек.ПользовательскиеНастройки; 400 | 401 | КонецПроцедуры 402 | 403 | &НаКлиенте 404 | Процедура ОбработатьИзменениеНастроек() 405 | 406 | ЗаполнитьТекстКодаВызоваОбработки(); 407 | 408 | КонецПроцедуры 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 | -------------------------------------------------------------------------------- /ИТМ_ОбновлениеВариантовОтчетов_Тесты/src/Reports/ИТМ_ОбновлениеВариантовОтчетов_Тесты_Отчет/Templates/СхемаПосле/Template.dcs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ИсточникДанных1 5 | Local 6 | 7 | 8 | НаборДанных2 9 | 10 | НовыйПуть.Ссылка 11 | Ссылка 12 | 13 | <v8:item> 14 | <v8:lang>ru</v8:lang> 15 | <v8:content>Ссылка</v8:content> 16 | </v8:item> 17 | 18 | 19 | d5p1:AnyRef 20 | 21 | 22 | 23 | НовыйПуть.Код 24 | Код 25 | 26 | <v8:item> 27 | <v8:lang>ru</v8:lang> 28 | <v8:content>Код</v8:content> 29 | </v8:item> 30 | 31 | 32 | xs:string 33 | 34 | 10 35 | Variable 36 | 37 | 38 | 39 | 40 | НовыйПуть.Наименование 41 | Наименование 42 | 43 | <v8:item> 44 | <v8:lang>ru</v8:lang> 45 | <v8:content>Наименование</v8:content> 46 | </v8:item> 47 | 48 | 49 | xs:string 50 | 51 | 10 52 | Variable 53 | 54 | 55 | 56 | ИсточникДанных1 57 | ТЗ 58 | 59 | 60 | Основной 61 | Основной 62 | 63 | 64 | 65 | ПользовательскиеПоля.Поле1 66 | 67 | 68 | ru 69 | п1 70 | 71 | 72 | 73 | 74 | 75 | 76 | НовыйПуть.Код 77 | Contains 78 | 79 | 80 | 81 | НовыйПуть.Наименование 82 | 83 | 84 | ru 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | НовыйПуть.Наименование 95 | 96 | 97 | НовыйПуть.Ссылка 98 | 99 | 100 | 101 | 102 | НовыйПуть.Код 103 | Contains 104 | 105 | 106 | 107 | AndGroup 108 | 109 | НовыйПуть.Наименование 110 | Contains 111 | 112 | 113 | 114 | НовыйПуть.Ссылка.Код 115 | Equal 116 | НовыйПуть.Код 117 | 118 | 119 | 120 | 121 | 122 | НовыйПуть.Ссылка.Код 123 | Asc 124 | 125 | 126 | 127 | 128 | 129 | 130 | НовыйПуть.Наименование 131 | 132 | 133 | 134 | 135 | НовыйПуть.Код 136 | Contains 137 | 138 | 139 | 140 | 141 | 142 | ЦветФона 143 | #000000 144 | 145 | 146 | Текст 147 | НовыйПуть.Наименование 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | НовыйПуть.Код 156 | Items 157 | None 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | AndGroup 170 | 171 | НовыйПуть.Наименование 172 | Contains 173 | 174 | 175 | 176 | НовыйПуть.Ссылка.Код 177 | Equal 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | НовыйПуть.Ссылка 189 | 190 | 191 | 192 | 193 | 194 | 195 | НовыйПуть.Наименование 196 | 197 | 198 | 199 | 200 | НовыйПуть.Код 201 | Contains 202 | 203 | 204 | 205 | 206 | 207 | ЦветФона 208 | #000000 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | НовыйПуть.Ссылка 220 | Items 221 | None 222 | 223 | 224 | 225 | 226 | AndGroup 227 | 228 | НовыйПуть.Наименование 229 | Contains 230 | 231 | 232 | 233 | НовыйПуть.Ссылка 234 | Equal 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | НовыйПуть.Наименование 250 | 251 | 252 | 253 | 254 | НовыйПуть.Код 255 | Contains 256 | 257 | 258 | 259 | 260 | 261 | ЦветФона 262 | #000000 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | НовыйПуть.Код 272 | Items 273 | None 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | НовыйПуть.Наименование 286 | Items 287 | None 288 | 289 | 290 | 291 | 292 | AndGroup 293 | 294 | НовыйПуть.Наименование 295 | Contains 296 | 297 | 298 | 299 | НовыйПуть.Ссылка 300 | Equal 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 309 | 310 | 311 | 312 | 313 | 314 | 315 | НовыйПуть.Наименование 316 | 317 | 318 | 319 | 320 | НовыйПуть.Код 321 | Contains 322 | 323 | 324 | 325 | 326 | 327 | ЦветФона 328 | #000000 329 | 330 | 331 | 332 | 333 | 334 | 335 | 336 | 337 | 338 | 339 | 340 | НовыйПуть.Код 341 | Items 342 | None 343 | 344 | 345 | 346 | 347 | AndGroup 348 | 349 | НовыйПуть.Наименование 350 | Contains 351 | 352 | 353 | 354 | НовыйПуть.Ссылка 355 | Equal 356 | 357 | 358 | 359 | 360 | 361 | 362 | 363 | 364 | 365 | 366 | 367 | 368 | 369 | 370 | НовыйПуть.Наименование 371 | 372 | 373 | 374 | 375 | НовыйПуть.Код 376 | Contains 377 | 378 | 379 | 380 | 381 | 382 | ЦветФона 383 | #000000 384 | 385 | 386 | 387 | 388 | 389 | 390 | 391 | 392 | НовыйПуть.Наименование 393 | Items 394 | None 395 | 396 | 397 | 398 | 399 | AndGroup 400 | 401 | НовыйПуть.Наименование 402 | Contains 403 | 404 | 405 | 406 | НовыйПуть.Ссылка 407 | Equal 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 419 | 420 | 421 | 422 | НовыйПуть.Наименование 423 | 424 | 425 | 426 | 427 | НовыйПуть.Код 428 | Contains 429 | 430 | 431 | 432 | 433 | 434 | ЦветФона 435 | #000000 436 | 437 | 438 | 439 | 440 | 441 | 442 | 443 | 444 | 445 | 446 | 447 | -------------------------------------------------------------------------------- /ИТМ_ОбновлениеВариантовОтчетов_Тесты/src/Reports/ИТМ_ОбновлениеВариантовОтчетов_Тесты_Отчет/Templates/СхемаДо/Template.dcs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ИсточникДанных1 5 | Local 6 | 7 | 8 | НаборДанных2 9 | 10 | Ссылка 11 | Ссылка 12 | 13 | <v8:item> 14 | <v8:lang>ru</v8:lang> 15 | <v8:content>Ссылка</v8:content> 16 | </v8:item> 17 | 18 | 19 | d5p1:AnyRef 20 | 21 | 22 | 23 | Код 24 | Код 25 | 26 | <v8:item> 27 | <v8:lang>ru</v8:lang> 28 | <v8:content>Код</v8:content> 29 | </v8:item> 30 | 31 | 32 | xs:string 33 | 34 | 10 35 | Variable 36 | 37 | 38 | 39 | 40 | Наименование 41 | Наименование 42 | 43 | <v8:item> 44 | <v8:lang>ru</v8:lang> 45 | <v8:content>Наименование</v8:content> 46 | </v8:item> 47 | 48 | 49 | xs:string 50 | 51 | 10 52 | Variable 53 | 54 | 55 | 56 | ИсточникДанных1 57 | ТЗ 58 | 59 | 60 | Основной 61 | Основной 62 | 63 | 64 | 65 | ПользовательскиеПоля.Поле1 66 | 67 | 68 | ru 69 | п1 70 | 71 | 72 | 73 | 74 | 75 | 76 | Код 77 | Contains 78 | 79 | 80 | 81 | Наименование 82 | 83 | 84 | ru 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | Наименование 95 | 96 | 97 | Ссылка 98 | 99 | 100 | 101 | 102 | Код 103 | Contains 104 | 105 | 106 | 107 | AndGroup 108 | 109 | Наименование 110 | Contains 111 | 112 | 113 | 114 | Ссылка.Код 115 | Equal 116 | Код 117 | 118 | 119 | 120 | 121 | 122 | Ссылка.Код 123 | Asc 124 | 125 | 126 | 127 | 128 | 129 | 130 | Наименование 131 | 132 | 133 | 134 | 135 | Код 136 | Contains 137 | 138 | 139 | 140 | 141 | 142 | ЦветФона 143 | #000000 144 | 145 | 146 | Текст 147 | Наименование 148 | 149 | 150 | 151 | 152 | 153 | 154 | false 155 | Заголовок 156 | 157 | 158 | ru 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | Код 168 | Items 169 | None 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | AndGroup 182 | 183 | Наименование 184 | Contains 185 | 186 | 187 | 188 | Ссылка.Код 189 | Equal 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | Ссылка 201 | 202 | 203 | 204 | 205 | 206 | 207 | Наименование 208 | 209 | 210 | 211 | 212 | Код 213 | Contains 214 | 215 | 216 | 217 | 218 | 219 | ЦветФона 220 | #000000 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | Ссылка 232 | Items 233 | None 234 | 235 | 236 | 237 | 238 | AndGroup 239 | 240 | Наименование 241 | Contains 242 | 243 | 244 | 245 | Ссылка 246 | Equal 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | Наименование 262 | 263 | 264 | 265 | 266 | Код 267 | Contains 268 | 269 | 270 | 271 | 272 | 273 | ЦветФона 274 | #000000 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | Код 284 | Items 285 | None 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | Наименование 298 | Items 299 | None 300 | 301 | 302 | 303 | 304 | AndGroup 305 | 306 | Наименование 307 | Contains 308 | 309 | 310 | 311 | Ссылка 312 | Equal 313 | 314 | 315 | 316 | 317 | 318 | 319 | 320 | 321 | 322 | 323 | 324 | 325 | 326 | 327 | Наименование 328 | 329 | 330 | 331 | 332 | Код 333 | Contains 334 | 335 | 336 | 337 | 338 | 339 | ЦветФона 340 | #000000 341 | 342 | 343 | 344 | 345 | 346 | 347 | 348 | 349 | 350 | 351 | 352 | Код 353 | Items 354 | None 355 | 356 | 357 | 358 | 359 | AndGroup 360 | 361 | Наименование 362 | Contains 363 | 364 | 365 | 366 | Ссылка 367 | Equal 368 | 369 | 370 | 371 | 372 | 373 | 374 | 375 | 376 | 377 | 378 | 379 | 380 | 381 | 382 | Наименование 383 | 384 | 385 | 386 | 387 | Код 388 | Contains 389 | 390 | 391 | 392 | 393 | 394 | ЦветФона 395 | #000000 396 | 397 | 398 | 399 | 400 | 401 | 402 | 403 | 404 | Наименование 405 | Items 406 | None 407 | 408 | 409 | 410 | 411 | AndGroup 412 | 413 | Наименование 414 | Contains 415 | 416 | 417 | 418 | Ссылка 419 | Equal 420 | 421 | 422 | 423 | 424 | 425 | 426 | 427 | 428 | 429 | 430 | 431 | 432 | 433 | 434 | Наименование 435 | 436 | 437 | 438 | 439 | Код 440 | Contains 441 | 442 | 443 | 444 | 445 | 446 | ЦветФона 447 | #000000 448 | 449 | 450 | 451 | 452 | 453 | 454 | 455 | 456 | 457 | 458 | 459 | -------------------------------------------------------------------------------- /ИТМ_ОбновлениеВариантовОтчетов/src/ExternalDataProcessors/ИТМ_ОбновлениеВариантовОтчетов/ObjectModule.bsl: -------------------------------------------------------------------------------- 1 | // @strict-types 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 | Для НомерСтроки = 1 По КоличествоСтрок Цикл 50 | ТекущаяСтрока = СтрПолучитьСтроку(СтрокаПолей, НомерСтроки); 51 | Если ЗначениеЗаполнено(ТекущаяСтрока) Тогда 52 | ТекущиеПоля = СтрРазделить(ТекущаяСтрока, РазделительПолей); 53 | НовоеЗаменяемоеПоле(ТекущиеПоля[0], ТекущиеПоля[1]); 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 | ЧастиТекста.Добавить(СтрШаблон("Обработка = Обработки.%1.Создать();", Метаданные().Имя)); 103 | ЧастиТекста.Добавить(""); 104 | ЧастиТекста.Добавить("//Инициализация с указанием отчета"); 105 | ЧастиТекста.Добавить("СсылкаНаОтчет = ОбщегоНазначения.ИдентификаторОбъектаМетаданных(Метаданные.Отчеты.<ИмяОтчета>);"); 106 | ЧастиТекста.Добавить("Обработка.Инициализировать(СсылкаНаОтчет);"); 107 | ЧастиТекста.Добавить(""); 108 | ЧастиТекста.Добавить("//Заполнение списка вариантов отчетов. Возможна настройка отборов через Обработка.КомпоновщикНастроек"); 109 | ЧастиТекста.Добавить("Обработка.ЗаполнитьВариантыОтчетов();"); 110 | ЧастиТекста.Добавить(""); 111 | ЧастиТекста.Добавить("//Заменяемые поля"); 112 | ЧастиТекста.Добавить("ЗаменяемыеПоля = """); 113 | Для Каждого ТекущиеДанные Из ЗаменяемыеПоля() Цикл 114 | ТекущаяСтрока = "| %1 %2 %3"; 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 | СтрокаНастроекДо = ОбщегоНазначения.ЗначениеВСтрокуXML(НастройкиОтчета); 168 | ОбработатьНастройкиОтчета(НастройкиОтчета, ПараметрыВыполнения); 169 | СтрокаНастроекПосле = ОбщегоНазначения.ЗначениеВСтрокуXML(НастройкиОтчета); 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 | Возврат "2.2.1"; 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 | 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 | НовыйПуть = ПутьПосле + Сред(ТекущийПуть, СтрДлина(ПутьДо) + 1); 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 | КонецПроцедуры 360 | 361 | Процедура Инициализировать_ОтборОтчета(Знач Отчет = Неопределено) 362 | 363 | Если Отчет = Неопределено Тогда 364 | Отчет = Справочники.ИдентификаторыОбъектовМетаданных.ПустаяСсылка(); 365 | КонецЕсли; 366 | 367 | ОтборКомпоновки = КомпоновщикНастроек.Настройки.Отбор.Элементы; 368 | ЭлементОтбора = ОтборКомпоновки.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); 369 | ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Отчет"); 370 | ЭлементОтбора.ПравоеЗначение = Отчет; 371 | ЭлементОтбора.ИдентификаторПользовательскойНастройки = "Отбор по отчету"; 372 | 373 | КонецПроцедуры 374 | 375 | Процедура ОбработатьПоляНастройкиОтчета(Знач Данные, Знач ПроверяемыеСвойства, ПараметрыВыполнения) 376 | 377 | Для Каждого ПроверяемоеСвойство Из ПроверяемыеСвойства Цикл 378 | 379 | ТекущееПолеКомпоновки = Данные[ПроверяемоеСвойство]; //ПолеКомпоновкиДанных 380 | ТекущийПутьПоля = Строка(ТекущееПолеКомпоновки); 381 | 382 | Для Каждого ПолеЗамены Из ПараметрыВыполнения.ЗаменяемыеПоля Цикл 383 | 384 | Если ТипЗнч(ТекущееПолеКомпоновки) = Тип("ПолеКомпоновкиДанных") Тогда 385 | 386 | НовыйАдресКомпоновки = НовыйПутьПоляКомпоновки( 387 | ТекущийПутьПоля, ПолеЗамены.ПутьДо, ПолеЗамены.ПутьПосле); 388 | 389 | Если ЗначениеЗаполнено(НовыйАдресКомпоновки) Тогда 390 | //@skip-check statement-type-change 391 | Данные[ПроверяемоеСвойство] = Новый ПолеКомпоновкиДанных(НовыйАдресКомпоновки); 392 | Прервать; 393 | КонецЕсли; 394 | 395 | КонецЕсли; 396 | 397 | КонецЦикла; 398 | 399 | КонецЦикла; 400 | 401 | КонецПроцедуры 402 | 403 | // Это тип НастройкиКомпоновкиДанных и подобное им по составу свойств. 404 | // 405 | // Параметры: 406 | // Тип - Тип 407 | // 408 | // Возвращаемое значение: 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 | // Параметры: 464 | // Тип - Тип 465 | // 466 | // Возвращаемое значение: 467 | // Булево 468 | Функция ЭтоТипЭлементаКомпоновкиСоСвойствомПоле(Тип) 469 | 470 | Возврат Тип = Тип("ВыбранноеПолеКомпоновкиДанных") 471 | ИЛИ Тип = Тип("ЭлементПорядкаКомпоновкиДанных") 472 | ИЛИ Тип = Тип("ОформляемоеПолеКомпоновкиДанных") 473 | ИЛИ Тип = Тип("ПолеГруппировкиКомпоновкиДанных"); 474 | 475 | КонецФункции 476 | 477 | // Это тип элемента компоновки со значением параметра. 478 | // 479 | // Параметры: 480 | // Тип - Тип 481 | // 482 | // Возвращаемое значение: 483 | // Булево 484 | Функция ЭтоТипЗначениеПараметра(Тип) 485 | 486 | Возврат Тип = Тип("ЗначениеПараметраКомпоновкиДанных") 487 | ИЛИ Тип = Тип("ЗначениеПараметраНастроекКомпоновкиДанных"); 488 | 489 | КонецФункции 490 | 491 | Процедура ОбработатьНастройкиОтчета_ОбработатьДанные(КоллекцияДанных, Данные, ПроверяемыеСвойства) 492 | 493 | ТипДанных = ТипЗнч(Данные); 494 | 495 | Если ЭтоТипНастройкиКомпоновкиДанныхИПодобныеИм(ТипДанных) Тогда // sonar:IfWithoutElse - не требуется 496 | 497 | ОбработатьНастройкиОтчета_НастройкиКомпоновкиДанныхИПодобныеИм(Данные, КоллекцияДанных); 498 | 499 | ИначеЕсли ЭтоТипСЭлементамиКомпоновки(ТипДанных) Тогда 500 | 501 | ОбработатьНастройкиОтчета_ТипСЭлементами(Данные, КоллекцияДанных); 502 | 503 | ИначеЕсли ЭтоТипКоллекцияЭлементовКомпоновки(ТипДанных) Тогда 504 | 505 | ОбработатьНастройкиОтчета_КоллекцияЭлементов(Данные, КоллекцияДанных); 506 | 507 | ИначеЕсли ТипДанных = Тип("НастройкиВложенногоОбъектаКомпоновкиДанных") Тогда 508 | 509 | КоллекцияДанных.Добавить(Данные.Настройки); 510 | 511 | ИначеЕсли ТипДанных = Тип("ПользовательскоеПолеВыборКомпоновкиДанных") Тогда 512 | 513 | КоллекцияДанных.Добавить(Данные.Варианты); 514 | 515 | ИначеЕсли ТипДанных = Тип("ВариантПользовательскогоПоляВыборКомпоновкиДанных") Тогда 516 | 517 | КоллекцияДанных.Добавить(Данные.Отбор); 518 | ПроверяемыеСвойства.Добавить("Значение"); 519 | 520 | ИначеЕсли ТипДанных = Тип("ГруппировкаКомпоновкиДанных") Тогда 521 | 522 | КоллекцияДанных.Добавить(Данные.Отбор); 523 | 524 | ИначеЕсли ТипДанных = Тип("ЭлементУсловногоОформленияКомпоновкиДанных") Тогда 525 | 526 | КоллекцияДанных.Добавить(Данные.Отбор); 527 | КоллекцияДанных.Добавить(Данные.Поля); 528 | КоллекцияДанных.Добавить(Данные.Оформление); 529 | 530 | ИначеЕсли ЭтоТипЭлементаКомпоновкиСоСвойствомПоле(ТипДанных) Тогда 531 | 532 | ПроверяемыеСвойства.Добавить("Поле"); 533 | 534 | ИначеЕсли ТипДанных = Тип("ЭлементОтбораКомпоновкиДанных") Тогда 535 | 536 | ПроверяемыеСвойства.Добавить("ЛевоеЗначение"); 537 | ПроверяемыеСвойства.Добавить("ПравоеЗначение"); 538 | 539 | ИначеЕсли ЭтоТипЗначениеПараметра(ТипДанных) Тогда 540 | 541 | ПроверяемыеСвойства.Добавить("Значение"); 542 | КоллекцияДанных.Добавить(Данные.ЗначенияВложенныхПараметров); 543 | 544 | КонецЕсли; 545 | 546 | КонецПроцедуры 547 | 548 | Процедура ОбработатьНастройкиОтчета_НастройкиКомпоновкиДанныхИПодобныеИм(Данные, КоллекцияДанных) 549 | 550 | ИменаТребуемыхСвойств = "Выбор,Отбор,Порядок,УсловноеОформление, 551 | |ПользовательскиеПоля,ПоляГруппировки,Структура,Колонки,Строки,Серии,Точки"; 552 | ТребуемыеСвойства = Новый Структура(ИменаТребуемыхСвойств); 553 | 554 | ЗаполнитьЗначенияСвойств(ТребуемыеСвойства, Данные); 555 | Для Каждого КлючИЗначение Из ТребуемыеСвойства Цикл 556 | ТекущаяКоллекция = КлючИЗначение.Значение; //см. ОбработатьНастройкиОтчета.ИсточникДанных 557 | Если ТекущаяКоллекция <> Неопределено Тогда 558 | КоллекцияДанных.Добавить(ТекущаяКоллекция); 559 | КонецЕсли; 560 | КонецЦикла; 561 | 562 | КонецПроцедуры 563 | 564 | Процедура ОбработатьНастройкиОтчета_ТипСЭлементами(Данные, КоллекцияДанных) 565 | 566 | Для Каждого Элемент Из Данные.Элементы Цикл 567 | КоллекцияДанных.Добавить(Элемент); 568 | КонецЦикла; 569 | 570 | КонецПроцедуры 571 | 572 | Процедура ОбработатьНастройкиОтчета_КоллекцияЭлементов(Данные, КоллекцияДанных) 573 | 574 | Для Каждого Элемент Из Данные Цикл 575 | КоллекцияДанных.Добавить(Элемент); 576 | КонецЦикла; 577 | 578 | КонецПроцедуры 579 | 580 | Процедура СообщитьОбИзмененииВариантаОтчета(ВариантОтчета) 581 | 582 | ТекстСообщения = СтрШаблон("Изменены настройки варианта %1", ВариантОтчета); 583 | ОбщегоНазначения.СообщитьПользователю(ТекстСообщения); 584 | ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации, УровеньЖурналаРегистрации.Информация, 585 | ВариантОтчета.Метаданные(), ВариантОтчета.Ссылка, ТекстСообщения, 586 | РежимТранзакцииЗаписиЖурналаРегистрации.Транзакционная); 587 | 588 | КонецПроцедуры 589 | 590 | Функция РазделительДляЗаполненияЗаменяемыхПолей() 591 | 592 | Возврат "-"; 593 | 594 | КонецФункции 595 | 596 | #КонецОбласти 597 | 598 | #Область Инициализация 599 | 600 | СобытиеЖурналаРегистрации = СтрШаблон("Обработка.%1", Метаданные().Имя); 601 | 602 | #КонецОбласти 603 | 604 | #Иначе 605 | ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'"); 606 | #КонецЕсли 607 | -------------------------------------------------------------------------------- /ИТМ_ОбновлениеВариантовОтчетов_Тесты/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 | .СПараметрами("Ссылка.Реквизит.Реквизит2", "СсыЛка", "Поле", "Поле.Реквизит.Реквизит2") 47 | .СПараметрами("Ссылка", "Ссылка1", "Поле", "") 48 | .СПараметрами("Ссылка1", "Ссылка", "Поле", "") 49 | .ДобавитьТест("Тест_ЗаполнитьЗаменяемыеПоля") 50 | ; 51 | 52 | КонецПроцедуры 53 | 54 | Процедура ПередВсемиТестами() Экспорт 55 | 56 | Перем ЮТест; 57 | ЮТест = ЮТест(); 58 | 59 | ОтчетПример = Отчеты.ИТМ_ОбновлениеВариантовОтчетов_Тесты_Отчет.Создать(); 60 | СхемаДо = ОтчетПример.ПолучитьМакет("СхемаДо"); 61 | СхемаПосле = ОтчетПример.ПолучитьМакет("СхемаПосле"); 62 | 63 | ПримерОбработка = НоваяОбработка(); 64 | ПримерОбработка.Инициализировать(); 65 | ПоляНабораДо = СхемаДо.НаборыДанных.Получить(0).Поля; 66 | ПоляНабораПосле = СхемаПосле.НаборыДанных.Получить(0).Поля; 67 | Для ИндексПоля = 0 По ПоляНабораДо.Количество() - 1 Цикл 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 | ЮТест.ОжидаетЧто(НужныйТип).Равно(0); 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 | .Свойство("ЗаменяемыеПоля").ИмеетДлину(1) 129 | .Что(Обработка.ЗаменяемыеПоля[0]) 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 | .Свойство("ОбновляемыеВарианты").ИмеетДлину(1) 155 | .Что(Обработка.ОбновляемыеВарианты[0]) 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 | ПодчиненноеПолеДо = Новый ПолеКомпоновкиДанных(СтрШаблон("%1.%2", ЗаменяемоеПоле.ПутьДо, СлучайнаяСтрока)); 256 | ПодчиненноеПолеПосле = Новый ПолеКомпоновкиДанных(СтрШаблон("%1.%2", ЗаменяемоеПоле.ПутьПосле, СлучайнаяСтрока)); 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 | Процедура Тест_ОбработатьНастройки_ТипСоСвойством(ИмяТипа, ИмяСвойства, Заменить) Экспорт 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 | .ИмеетДлину(1) 349 | .Свойство("[0].ВариантОтчета").Равно(ТестовыеДанные.Вариант) 350 | ; 351 | 352 | КонецПроцедуры 353 | 354 | Процедура Тест_ОбновитьВариантыОтчетов() Экспорт 355 | 356 | Перем ЮТест; 357 | ЮТест = ЮТест(); 358 | 359 | ТестовыеДанные = ТестовыеДанные_ЗаполнитьОбновитьВариантыОтчетов(); 360 | 361 | СтрокаНастройки = СтрокаНастроек(ТестовыеДанные.Вариант.Настройки); 362 | СтрокаНастройкиЭталон = СтрокаНастроек(ТестовыеДанные.НастройкиДо); 363 | ЮТест.ОжидаетЧто(СтрокаНастройки, "В варианте корректные настройки ДО изменений").Равно(СтрокаНастройкиЭталон); 364 | 365 | Обработка = НоваяОбработка(); 366 | Обработка.Инициализировать(ТестовыеДанные.Отчет); 367 | Обработка.ЗаменяемыеПоля.Загрузить( 368 | ТестовыеДанные.Обработка.ЗаменяемыеПоля.Выгрузить()); 369 | 370 | Обработка.ЗаполнитьВариантыОтчетов(); 371 | Обработка.ОбновитьВариантыОтчетов(); 372 | 373 | ОбновляемыеВарианты = Обработка.ОбновляемыеВарианты; 374 | ЮТест.ОжидаетЧто(ОбновляемыеВарианты.Количество(), "Найден один обновляемый вариант").Равно(1); 375 | ЮТест.ОжидаетЧто(ОбновляемыеВарианты[0].Изменен, "Обновляемый вариант изменен").Равно(Истина); 376 | 377 | СтрокаНастройки = СтрокаНастроек(ТестовыеДанные.Вариант.Настройки); 378 | СтрокаНастройкиЭталон = СтрокаНастроек(ТестовыеДанные.НастройкиПосле); 379 | ЮТест.ОжидаетЧто(СтрокаНастройки, "В варианте корректные настройки ПОСЛЕ изменений").Равно(СтрокаНастройкиЭталон); 380 | 381 | Обработка.ОбновитьВариантыОтчетов(); 382 | ЮТест.ОжидаетЧто(ОбновляемыеВарианты[0].Изменен, "Обновляемый вариант не изменен повторно").Равно(Ложь); 383 | 384 | КонецПроцедуры 385 | 386 | Процедура Тест_ОбновитьВариантыОтчетовИзСгенерированногоКода() Экспорт 387 | 388 | Перем ЮТест; 389 | ЮТест = ЮТест(); 390 | 391 | ТестовыеДанные = ТестовыеДанные_ЗаполнитьОбновитьВариантыОтчетов(); 392 | 393 | //Проверим, что в варианте настройки ДО изменений 394 | СтрокаНастройки = СтрокаНастроек(ТестовыеДанные.Вариант.Настройки); 395 | СтрокаНастройкиЭталон = СтрокаНастроек(ТестовыеДанные.НастройкиДо); 396 | 397 | ЮТест.ОжидаетЧто(СтрокаНастройки).Равно(СтрокаНастройкиЭталон); 398 | 399 | ТекстОбработки = ТестовыеДанные.Обработка.ТекстКодаВызоваОбработки(); 400 | 401 | //Заменим создание внутренней обработки на внешнюю 402 | ИмяТестируемойОбработки = ИмяОбработки(); 403 | ТекстСозданияОбработки = СтрШаблон("Обработки.%1.Создать()", ИмяТестируемойОбработки); 404 | ТекстСозданияВнешнейОбработки = СтрШаблон("ВнешниеОбработки.Создать(""%1"")", ИмяТестируемойОбработки); 405 | ТекстОбработки = СтрЗаменить(ТекстОбработки, ТекстСозданияОбработки, ТекстСозданияВнешнейОбработки); 406 | 407 | //Заменим создание внутренней обработки на внешнюю 408 | ИмяТестируемойОбработки = ИмяОбработки(); 409 | ТекстСозданияОбработки = СтрШаблон("Обработки.%1.Создать()", ИмяТестируемойОбработки); 410 | ТекстСозданияВнешнейОбработки = СтрШаблон("ВнешниеОбработки.Создать(""%1"")", ИмяТестируемойОбработки); 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 | Перем ЮТест; 464 | ЮТест = ЮТест(); 465 | 466 | Контекст = КонтекстНабора_НовыйПутьПоляКомпоновки(); 467 | Результат = Контекст.Обработка.НовыйПутьПоляКомпоновки(ТекущийПуть, ПутьДо, ПутьПосле); 468 | 469 | ЮТест.ОжидаетЧто(Результат).Равно(НовыйПуть); 470 | 471 | КонецПроцедуры 472 | 473 | #КонецОбласти 474 | 475 | #Область Набор_ЗаполнитьЗаменяемыеПоля 476 | 477 | Процедура Тест_ЗаполнитьЗаменяемыеПоля() Экспорт 478 | 479 | Перем ЮТест; 480 | ЮТест = ЮТест(); 481 | 482 | ЗаменяемыеПоля = " 483 | | 484 | |Поле1-Поле2 485 | | 486 | | Поле3.Поле4 - Поле5 487 | | 488 | | Поле6 - Поле7.Поле8 489 | | 490 | |"; 491 | 492 | Обработка = НоваяОбработка(); 493 | Обработка.ЗаполнитьЗаменяемыеПоля(ЗаменяемыеПоля); 494 | 495 | ЗаменяемыеПоля = Обработка.ЗаменяемыеПоля; 496 | ЮТест.ОжидаетЧто(ЗаменяемыеПоля.Количество(), "Верное количество полей").Равно(3); 497 | 498 | ЮТест.ОжидаетЧто(ЗаменяемыеПоля[0], "Первая строка") 499 | .Свойство("ПутьДо").Равно("Поле1") 500 | .Свойство("ПутьПосле").Равно("Поле2"); 501 | 502 | ЮТест.ОжидаетЧто(ЗаменяемыеПоля[1], "Вторая строка") 503 | .Свойство("ПутьДо").Равно("Поле3.Поле4") 504 | .Свойство("ПутьПосле").Равно("Поле5"); 505 | 506 | ЮТест.ОжидаетЧто(ЗаменяемыеПоля[2], "Третья строка") 507 | .Свойство("ПутьДо").Равно("Поле6") 508 | .Свойство("ПутьПосле").Равно("Поле7.Поле8"); 509 | 510 | КонецПроцедуры 511 | 512 | #КонецОбласти 513 | 514 | #КонецОбласти 515 | 516 | #Область СлужебныеПроцедурыИФункции 517 | 518 | #Область ТестовыйДвижок 519 | 520 | // ЮТТесты 521 | // 522 | // Возвращаемое значение: 523 | // ОбщийМодуль 524 | Функция ЮТТесты() 525 | 526 | Возврат ОбщийМодуль("ЮТТесты") 527 | 528 | КонецФункции 529 | 530 | // ЮТТест 531 | // 532 | // Возвращаемое значение: 533 | // ОбщийМодуль 534 | Функция ЮТест() 535 | 536 | Возврат ОбщийМодуль("ЮТест") 537 | 538 | КонецФункции 539 | 540 | #КонецОбласти 541 | 542 | #Область ТестируемаяОбработка 543 | 544 | // Обработка. 545 | // 546 | // Возвращаемое значение: 547 | // см. ИнтерфейсОбработки 548 | Функция НоваяОбработка() 549 | 550 | Возврат ВнешниеОбработки.Создать(ИмяОбработки()); 551 | 552 | КонецФункции 553 | 554 | // Имя обработки. 555 | // 556 | // Возвращаемое значение: 557 | // Строка 558 | Функция ИмяОбработки() 559 | 560 | Возврат "ИТМ_ОбновлениеВариантовОтчетов"; 561 | 562 | КонецФункции 563 | 564 | #КонецОбласти 565 | 566 | #Область ТестовыеДанные 567 | 568 | // Обработка. 569 | // 570 | // Возвращаемое значение: 571 | // см. ИнтерфейсОбработки 572 | Функция ПримерОбработка() 573 | 574 | Возврат ЮТест().КонтекстМодуля().ПримерОбработка; 575 | 576 | КонецФункции 577 | 578 | // Пример настроек ДО изменений полей 579 | // 580 | // Параметры: 581 | // Копия - Булево 582 | // 583 | // Возвращаемое значение: 584 | // НастройкиКомпоновкиДанных 585 | Функция ПримерНастройкиДо(Копия = Истина) 586 | 587 | Возврат ЗначениеИзКонтекстаМодуля("ПримерНастройкиДо", Копия); 588 | 589 | КонецФункции 590 | 591 | // Пример настроек ПОСЛЕ изменений полей (эталонный результат) 592 | // 593 | // Параметры: 594 | // Копия - Булево 595 | // 596 | // Возвращаемое значение: 597 | // НастройкиКомпоновкиДанных 598 | Функция ПримерНастройкиПосле(Копия = Ложь) 599 | 600 | Возврат ЗначениеИзКонтекстаМодуля("ПримерНастройкиПосле", Копия); 601 | 602 | КонецФункции 603 | 604 | // ИЗМЕНЯЕТ БД! Тестовые данные набора заполнить\обновить варианты отчетов. 605 | // 606 | // Возвращаемое значение: 607 | // Структура - : 608 | // * Обработка - см. НовыйОбъект 609 | // * Отчет - СправочникСсылка.ИдентификаторыОбъектовРасширений 610 | // * Вариант - СправочникСсылка.ВариантыОтчетов 611 | // * НастройкиПосле - НастройкиКомпоновкиДанных 612 | Функция ТестовыеДанные_ЗаполнитьОбновитьВариантыОтчетов() 613 | 614 | Перем ЮТест; 615 | ЮТест = ЮТест(); 616 | 617 | НастройкиКомпоновкиДо = ПримерНастройкиДо(); 618 | 619 | МетаданныеТестовогоОтчета = Метаданные.Отчеты.ИТМ_ОбновлениеВариантовОтчетов_Тесты_Отчет; 620 | 621 | ТестовыйОтчет = ОбщегоНазначения.ИдентификаторОбъектаМетаданных(МетаданныеТестовогоОтчета); 622 | 623 | РеквизитыТестовогоВарианта = Новый Структура("Отчет,Пользовательский,Настройки", 624 | ТестовыйОтчет, Истина, Новый ХранилищеЗначения(НастройкиКомпоновкиДо)); 625 | ТестовыйВариант = ЮТест.Данные().СоздатьЭлемент( 626 | "Справочник.ВариантыОтчетов", 627 | МетаданныеТестовогоОтчета.Имя, 628 | РеквизитыТестовогоВарианта, 629 | Новый Структура("ОбменДаннымиЗагрузка", Истина)); //СправочникСсылка.ВариантыОтчетов 630 | 631 | Обработка = ПримерОбработка(); 632 | ДанныеКонтекста = Новый Структура(); 633 | ДанныеКонтекста.Вставить("Обработка", Обработка); 634 | ДанныеКонтекста.Вставить("Отчет", ТестовыйОтчет); 635 | ДанныеКонтекста.Вставить("Вариант", ТестовыйВариант); 636 | ДанныеКонтекста.Вставить("НастройкиДо", НастройкиКомпоновкиДо); 637 | ДанныеКонтекста.Вставить("НастройкиПосле", ПримерНастройкиПосле()); 638 | 639 | //@skip-check constructor-function-return-section - баг ЕДТ 640 | Возврат ДанныеКонтекста; 641 | 642 | КонецФункции 643 | 644 | Функция ЗначениеИзКонтекстаМодуля(ИмяСвойства, Копия) 645 | 646 | Значение = ЮТест().КонтекстМодуля()[ИмяСвойства]; 647 | Если Копия Тогда 648 | Возврат КопияЗначения(Значение); 649 | Иначе 650 | Возврат Значение; 651 | КонецЕсли; 652 | 653 | КонецФункции 654 | 655 | // Интерфейс обработки. 656 | // 657 | // Возвращаемое значение: 658 | // ОбработкаОбъект.ИТМ_ОбновлениеВариантовОтчетов_Интерфейс 659 | Функция ИнтерфейсОбработки() 660 | 661 | Возврат Обработки.ИТМ_ОбновлениеВариантовОтчетов_Интерфейс.Создать(); 662 | 663 | КонецФункции 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 | Функция СтрокаНастроек(Знач Настройки) 714 | 715 | Если ТипЗнч(Настройки) = Тип("ХранилищеЗначения") Тогда 716 | Возврат СтрокаНастроек(Настройки.Получить()); 717 | ИначеЕсли ТипЗнч(Настройки) = Тип("НастройкиКомпоновкиДанных") Тогда 718 | Возврат ОбщегоНазначения.ЗначениеВСтрокуXML(Настройки); 719 | Иначе 720 | Возврат ""; 721 | КонецЕсли; 722 | 723 | КонецФункции 724 | 725 | #КонецОбласти 726 | 727 | #КонецОбласти 728 | -------------------------------------------------------------------------------- /ИТМ_ОбновлениеВариантовОтчетов/src/ExternalDataProcessors/ИТМ_ОбновлениеВариантовОтчетов/Forms/Форма/Form.form: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ГруппаШапка 5 | 215 6 | 7 | ГруппаКоманднаяПанель 8 | 217 9 | 10 | ФормаОбновитьВариантыОтчетов 11 | 131 12 | true 13 | true 14 | 15 | true 16 | 17 | 18 | ФормаОбновитьВариантыОтчетовРасширеннаяПодсказка 19 | 132 20 | true 21 | true 22 | 23 | true 24 | 25 | Label 26 | true 27 | true 28 | 29 | Left 30 | 31 | 32 | Form.Command.ОбновитьВариантыОтчетов 33 | Auto 34 | true 35 | true 36 | true 37 | UserCmds 38 | Auto 39 | 40 | true 41 | true 42 | 43 | true 44 | 45 | 46 | <key>ru</key> 47 | <value>Командная панель</value> 48 | 49 | 50 | ГруппаКоманднаяПанельРасширеннаяПодсказка 51 | 218 52 | true 53 | true 54 | 55 | true 56 | 57 | Label 58 | true 59 | true 60 | 61 | Left 62 | 63 | 64 | CommandBar 65 | 66 | Left 67 | 68 | 69 | 70 | ГруппаТекстКодаВызоваОбработки 71 | 210 72 | 73 | ТекстКодаВызоваОбработки 74 | 212 75 | true 76 | true 77 | 78 | true 79 | 80 | 81 | ТекстКодаВызоваОбработки 82 | 83 | 84 | ТекстКодаВызоваОбработкиРасширеннаяПодсказка 85 | 214 86 | true 87 | true 88 | 89 | true 90 | 91 | Label 92 | true 93 | true 94 | 95 | Left 96 | 97 | 98 | 99 | ТекстКодаВызоваОбработкиКонтекстноеМеню 100 | 213 101 | true 102 | true 103 | 104 | true 105 | 106 | true 107 | 108 | TextDocumentField 109 | Enter 110 | true 111 | Left 112 | true 113 | 114 | 50 115 | 10 116 | true 117 | true 118 | 119 | 120 | true 121 | true 122 | 123 | true 124 | 125 | 126 | <key>ru</key> 127 | <value>Текст кода вызова обработки</value> 128 | 129 | 130 | ГруппаТекстКодаВызоваОбработкиРасширеннаяПодсказка 131 | 211 132 | true 133 | true 134 | 135 | true 136 | 137 | Label 138 | true 139 | true 140 | 141 | Left 142 | 143 | 144 | UsualGroup 145 | 146 | HorizontalIfPossible 147 | PopUp 148 | WeakSeparation 149 | true 150 | true 151 | true 152 | Auto 153 | Auto 154 | 155 | 156 | true 157 | true 158 | 159 | true 160 | 161 | 162 | <key>ru</key> 163 | <value>Группа шапка</value> 164 | 165 | 166 | ГруппаШапкаРасширеннаяПодсказка 167 | 216 168 | true 169 | true 170 | 171 | true 172 | 173 | Label 174 | true 175 | true 176 | 177 | Left 178 | 179 | 180 | UsualGroup 181 | 182 | AlwaysHorizontal 183 | Auto 184 | true 185 | true 186 | Auto 187 | Auto 188 | 189 | 190 | 191 | ГруппаОсновная 192 | 58 193 | 194 | ГруппаЛево 195 | 56 196 | 197 | ГруппаФайлНастроек 198 | 11 199 | 200 | ИмяФайлаНастроек 201 | 4 202 | true 203 | true 204 | 205 | true 206 | 207 | 208 | ИмяФайлаНастроек 209 | 210 | 211 | OnChange 212 | ИмяФайлаНастроекПриИзменении 213 | 214 | 215 | ИмяФайлаНастроекРасширеннаяПодсказка 216 | 6 217 | true 218 | true 219 | 220 | true 221 | 222 | Label 223 | true 224 | true 225 | 226 | Left 227 | 228 | 229 | 230 | ИмяФайлаНастроекКонтекстноеМеню 231 | 5 232 | true 233 | true 234 | 235 | true 236 | 237 | true 238 | 239 | InputField 240 | Enter 241 | true 242 | Left 243 | true 244 | 245 | 246 | StartChoice 247 | ИмяФайлаНастроекНачалоВыбора 248 | 249 | 250 | Opening 251 | ИмяФайлаНастроекОткрытие 252 | 253 | true 254 | true 255 | true 256 | true 257 | true 258 | true 259 | true 260 | true 261 | 262 | 263 | 264 | СохранитьВФайл 265 | 15 266 | true 267 | true 268 | 269 | true 270 | 271 | 272 | СохранитьВФайлРасширеннаяПодсказка 273 | 16 274 | true 275 | true 276 | 277 | true 278 | 279 | Label 280 | true 281 | true 282 | 283 | Left 284 | 285 | 286 | UsualButton 287 | Form.Command.СохранитьВФайл 288 | Auto 289 | true 290 | true 291 | UserCmds 292 | Auto 293 | 294 | true 295 | true 296 | 297 | true 298 | 299 | 300 | <key>ru</key> 301 | <value>Группа файл настроек</value> 302 | 303 | 304 | ru 305 | Группа файл настроек 306 | 307 | 308 | ГруппаФайлНастроекРасширеннаяПодсказка 309 | 12 310 | true 311 | true 312 | 313 | true 314 | 315 | Label 316 | true 317 | true 318 | 319 | Left 320 | 321 | 322 | UsualGroup 323 | 324 | AlwaysHorizontal 325 | true 326 | true 327 | Auto 328 | Auto 329 | 330 | 331 | 332 | ЗаменяемыеПоля 333 | 177 334 | true 335 | true 336 | 337 | true 338 | 339 | 340 | Объект.ЗаменяемыеПоля 341 | 342 | None 343 | 344 | ЗаменяемыеПоляНомерСтроки 345 | 190 346 | true 347 | true 348 | 349 | true 350 | 351 | 352 | Объект.ЗаменяемыеПоля.LineNumber 353 | 354 | 355 | ЗаменяемыеПоляНомерСтрокиРасширеннаяПодсказка 356 | 192 357 | true 358 | true 359 | 360 | true 361 | 362 | Label 363 | true 364 | true 365 | 366 | Left 367 | 368 | 369 | 370 | ЗаменяемыеПоляНомерСтрокиКонтекстноеМеню 371 | 191 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 | 394 | ЗаменяемыеПоляЗаменять 395 | 193 396 | true 397 | true 398 | 399 | true 400 | 401 | 402 | Объект.ЗаменяемыеПоля.Заменять 403 | 404 | 405 | ЗаменяемыеПоляЗаменятьРасширеннаяПодсказка 406 | 195 407 | true 408 | true 409 | 410 | true 411 | 412 | Label 413 | true 414 | true 415 | 416 | Left 417 | 418 | 419 | 420 | ЗаменяемыеПоляЗаменятьКонтекстноеМеню 421 | 194 422 | true 423 | true 424 | 425 | true 426 | 427 | true 428 | 429 | CheckBoxField 430 | Enter 431 | true 432 | Left 433 | true 434 | 435 | 436 | 437 | ЗаменяемыеПоляПутьДо 438 | 196 439 | true 440 | true 441 | 442 | true 443 | 444 | 445 | Объект.ЗаменяемыеПоля.ПутьДо 446 | 447 | 448 | ЗаменяемыеПоляПутьДоРасширеннаяПодсказка 449 | 198 450 | true 451 | true 452 | 453 | true 454 | 455 | Label 456 | true 457 | true 458 | 459 | Left 460 | 461 | 462 | 463 | ЗаменяемыеПоляПутьДоКонтекстноеМеню 464 | 197 465 | true 466 | true 467 | 468 | true 469 | 470 | true 471 | 472 | InputField 473 | Enter 474 | true 475 | Left 476 | true 477 | 478 | true 479 | true 480 | true 481 | true 482 | true 483 | true 484 | 485 | 486 | 487 | ЗаменяемыеПоляПутьПосле 488 | 199 489 | true 490 | true 491 | 492 | true 493 | 494 | 495 | Объект.ЗаменяемыеПоля.ПутьПосле 496 | 497 | 498 | ЗаменяемыеПоляПутьПослеРасширеннаяПодсказка 499 | 201 500 | true 501 | true 502 | 503 | true 504 | 505 | Label 506 | true 507 | true 508 | 509 | Left 510 | 511 | 512 | 513 | ЗаменяемыеПоляПутьПослеКонтекстноеМеню 514 | 200 515 | true 516 | true 517 | 518 | true 519 | 520 | true 521 | 522 | InputField 523 | Enter 524 | true 525 | Left 526 | true 527 | 528 | true 529 | true 530 | true 531 | true 532 | true 533 | true 534 | 535 | 536 | 537 | ЗаменяемыеПоляКоманднаяПанель 538 | 178 539 | true 540 | true 541 | 542 | true 543 | 544 | Left 545 | true 546 | 547 | 548 | OnChange 549 | ЗаменяемыеПоляПриИзменении 550 | 551 | 552 | true 553 | true 554 | 555 | true 556 | 557 | ЗаменяемыеПоляСтрокаПоиска 558 | 181 559 | 560 | ЗаменяемыеПоляСтрокаПоискаРасширеннаяПодсказка 561 | 183 562 | true 563 | true 564 | 565 | true 566 | 567 | Label 568 | true 569 | true 570 | 571 | Left 572 | 573 | 574 | 575 | ЗаменяемыеПоляСтрокаПоискаКонтекстноеМеню 576 | 182 577 | true 578 | true 579 | 580 | true 581 | 582 | true 583 | 584 | ЗаменяемыеПоляСтрокаПоиска 585 | 586 | true 587 | 588 | 589 | 590 | true 591 | true 592 | 593 | true 594 | 595 | ЗаменяемыеПоляСостояниеПросмотра 596 | 187 597 | 598 | ЗаменяемыеПоляСостояниеПросмотраРасширеннаяПодсказка 599 | 189 600 | true 601 | true 602 | 603 | true 604 | 605 | Label 606 | true 607 | true 608 | 609 | Left 610 | 611 | 612 | 613 | ЗаменяемыеПоляСостояниеПросмотраКонтекстноеМеню 614 | 188 615 | true 616 | true 617 | 618 | true 619 | 620 | true 621 | 622 | ViewStatusAddition 623 | ЗаменяемыеПоляСостояниеПросмотра 624 | 625 | true 626 | 627 | 628 | 629 | true 630 | true 631 | 632 | true 633 | 634 | ЗаменяемыеПоляУправлениеПоиском 635 | 184 636 | 637 | ЗаменяемыеПоляУправлениеПоискомРасширеннаяПодсказка 638 | 186 639 | true 640 | true 641 | 642 | true 643 | 644 | Label 645 | true 646 | true 647 | 648 | Left 649 | 650 | 651 | 652 | ЗаменяемыеПоляУправлениеПоискомКонтекстноеМеню 653 | 185 654 | true 655 | true 656 | 657 | true 658 | 659 | true 660 | 661 | SearchControlAddition 662 | ЗаменяемыеПоляУправлениеПоиском 663 | 664 | true 665 | 666 | 667 | 668 | ЗаменяемыеПоляРасширеннаяПодсказка 669 | 180 670 | true 671 | true 672 | 673 | true 674 | 675 | Label 676 | true 677 | true 678 | 679 | Left 680 | 681 | 682 | 683 | ЗаменяемыеПоляКонтекстноеМеню 684 | 179 685 | true 686 | true 687 | 688 | true 689 | 690 | true 691 | 692 | true 693 | true 694 | true 695 | true 696 | true 697 | MultiRow 698 |
true
699 | 1 700 | 1 701 | AutoUse 702 | AutoUse 703 | true 704 | true 705 | Auto 706 | Auto 707 | true 708 | true 709 | AsFileRef 710 | 711 |
712 | true 713 | true 714 | 715 | true 716 | 717 | 718 | <key>ru</key> 719 | <value>Настройки</value> 720 | 721 | 722 | ru 723 | Группа лево 724 | 725 | 726 | ГруппаЛевоРасширеннаяПодсказка 727 | 57 728 | true 729 | true 730 | 731 | true 732 | 733 | Label 734 | true 735 | true 736 | 737 | Left 738 | 739 | 740 | UsualGroup 741 | 742 | Vertical 743 | StrongSeparation 744 | true 745 | true 746 | true 747 | Auto 748 | Auto 749 | 750 |
751 | 752 | ГруппаПраво 753 | 60 754 | 755 | КомпоновщикНастроекПользовательскиеНастройки 756 | 133 757 | true 758 | true 759 | 760 | true 761 | 762 | 763 | Объект.КомпоновщикНастроек.UserSettings 764 | 765 | None 766 | 767 | КомпоновщикНастроекПользовательскиеНастройкиКоманднаяПанель 768 | 134 769 | 770 | КомпоновщикНастроекПользовательскиеНастройкиЗаполнитьВариантыОтчетов 771 | 208 772 | true 773 | true 774 | 775 | true 776 | 777 | 778 | КомпоновщикНастроекПользовательскиеНастройкиЗаполнитьВариантыОтчетовРасширеннаяПодсказка 779 | 209 780 | true 781 | true 782 | 783 | true 784 | 785 | Label 786 | true 787 | true 788 | 789 | Left 790 | 791 | 792 | Form.Command.ЗаполнитьВариантыОтчетов 793 | Auto 794 | true 795 | true 796 | UserCmds 797 | Auto 798 | 799 | 800 | КомпоновщикНастроекПользовательскиеНастройкиСброситьНастройкиОтборов 801 | 204 802 | true 803 | true 804 | 805 | true 806 | 807 | 808 | КомпоновщикНастроекПользовательскиеНастройкиСброситьНастройкиОтборовРасширеннаяПодсказка 809 | 205 810 | true 811 | true 812 | 813 | true 814 | 815 | Label 816 | true 817 | true 818 | 819 | Left 820 | 821 | 822 | Form.Command.СброситьНастройкиОтборов 823 | Auto 824 | true 825 | true 826 | UserCmds 827 | Auto 828 | 829 | true 830 | true 831 | 832 | true 833 | 834 | Left 835 | true 836 | 837 | 838 | OnChange 839 | КомпоновщикНастроекПользовательскиеНастройкиПриИзменении 840 | 841 | 842 | true 843 | true 844 | 845 | true 846 | 847 | КомпоновщикНастроекПользовательскиеНастройкиСтрокаПоиска 848 | 137 849 | 850 | КомпоновщикНастроекПользовательскиеНастройкиСтрокаПоискаРасширеннаяПодсказка 851 | 139 852 | true 853 | true 854 | 855 | true 856 | 857 | Label 858 | true 859 | true 860 | 861 | Left 862 | 863 | 864 | 865 | КомпоновщикНастроекПользовательскиеНастройкиСтрокаПоискаКонтекстноеМеню 866 | 138 867 | true 868 | true 869 | 870 | true 871 | 872 | true 873 | 874 | КомпоновщикНастроекПользовательскиеНастройкиСтрокаПоиска 875 | 876 | true 877 | 878 | 879 | 880 | true 881 | true 882 | 883 | true 884 | 885 | КомпоновщикНастроекПользовательскиеНастройкиСостояниеПросмотра 886 | 143 887 | 888 | КомпоновщикНастроекПользовательскиеНастройкиСостояниеПросмотраРасширеннаяПодсказка 889 | 145 890 | true 891 | true 892 | 893 | true 894 | 895 | Label 896 | true 897 | true 898 | 899 | Left 900 | 901 | 902 | 903 | КомпоновщикНастроекПользовательскиеНастройкиСостояниеПросмотраКонтекстноеМеню 904 | 144 905 | true 906 | true 907 | 908 | true 909 | 910 | true 911 | 912 | ViewStatusAddition 913 | КомпоновщикНастроекПользовательскиеНастройкиСостояниеПросмотра 914 | 915 | true 916 | 917 | 918 | 919 | true 920 | true 921 | 922 | true 923 | 924 | КомпоновщикНастроекПользовательскиеНастройкиУправлениеПоиском 925 | 140 926 | 927 | КомпоновщикНастроекПользовательскиеНастройкиУправлениеПоискомРасширеннаяПодсказка 928 | 142 929 | true 930 | true 931 | 932 | true 933 | 934 | Label 935 | true 936 | true 937 | 938 | Left 939 | 940 | 941 | 942 | КомпоновщикНастроекПользовательскиеНастройкиУправлениеПоискомКонтекстноеМеню 943 | 141 944 | true 945 | true 946 | 947 | true 948 | 949 | true 950 | 951 | SearchControlAddition 952 | КомпоновщикНастроекПользовательскиеНастройкиУправлениеПоиском 953 | 954 | true 955 | 956 | 957 | 958 | КомпоновщикНастроекПользовательскиеНастройкиРасширеннаяПодсказка 959 | 136 960 | true 961 | true 962 | 963 | true 964 | 965 | Label 966 | true 967 | true 968 | 969 | Left 970 | 971 | 972 | 973 | КомпоновщикНастроекПользовательскиеНастройкиКонтекстноеМеню 974 | 135 975 | true 976 | true 977 | 978 | true 979 | 980 | true 981 | 982 | HierarchicalList 983 | true 984 | true 985 | true 986 | true 987 | true 988 | 3 989 | true 990 | MultiRow 991 |
true
992 | 1 993 | 1 994 | AutoUse 995 | AutoUse 996 | true 997 | true 998 | Auto 999 | Auto 1000 | true 1001 | true 1002 | AsFileRef 1003 |
1004 | 1005 | ОбновляемыеВарианты 1006 | 146 1007 | true 1008 | true 1009 | 1010 | true 1011 | 1012 | 1013 | Объект.ОбновляемыеВарианты 1014 | 1015 | None 1016 | 1017 | ВариантыОтчетовНомерСтроки 1018 | 159 1019 | true 1020 | true 1021 | 1022 | 1023 | Объект.ОбновляемыеВарианты.LineNumber 1024 | 1025 | 1026 | ВариантыОтчетовНомерСтрокиРасширеннаяПодсказка 1027 | 161 1028 | true 1029 | true 1030 | 1031 | true 1032 | 1033 | Label 1034 | true 1035 | true 1036 | 1037 | Left 1038 | 1039 | 1040 | 1041 | ВариантыОтчетовНомерСтрокиКонтекстноеМеню 1042 | 160 1043 | true 1044 | true 1045 | 1046 | true 1047 | 1048 | true 1049 | 1050 | InputField 1051 | Enter 1052 | true 1053 | Left 1054 | true 1055 | 1056 | true 1057 | true 1058 | true 1059 | true 1060 | true 1061 | true 1062 | 1063 | 1064 | 1065 | ВариантыОтчетовВариантОтчета 1066 | 162 1067 | true 1068 | true 1069 | 1070 | true 1071 | 1072 | 1073 | Объект.ОбновляемыеВарианты.ВариантОтчета 1074 | 1075 | 1076 | ВариантыОтчетовВариантОтчетаРасширеннаяПодсказка 1077 | 164 1078 | true 1079 | true 1080 | 1081 | true 1082 | 1083 | Label 1084 | true 1085 | true 1086 | 1087 | Left 1088 | 1089 | 1090 | 1091 | ВариантыОтчетовВариантОтчетаКонтекстноеМеню 1092 | 163 1093 | true 1094 | true 1095 | 1096 | true 1097 | 1098 | true 1099 | 1100 | InputField 1101 | Enter 1102 | true 1103 | Left 1104 | true 1105 | 1106 | true 1107 | true 1108 | true 1109 | true 1110 | true 1111 | true 1112 | 1113 | 1114 | 1115 | ОбновляемыеВариантыКоманднаяПанель 1116 | 147 1117 | true 1118 | true 1119 | 1120 | true 1121 | 1122 | Left 1123 | 1124 | 1125 | Selection 1126 | ОбновляемыеВариантыВыбор 1127 | 1128 | 1129 | true 1130 | true 1131 | 1132 | true 1133 | 1134 | ОбновляемыеВариантыСтрокаПоиска 1135 | 150 1136 | 1137 | ОбновляемыеВариантыСтрокаПоискаРасширеннаяПодсказка 1138 | 152 1139 | true 1140 | true 1141 | 1142 | true 1143 | 1144 | Label 1145 | true 1146 | true 1147 | 1148 | Left 1149 | 1150 | 1151 | 1152 | ОбновляемыеВариантыСтрокаПоискаКонтекстноеМеню 1153 | 151 1154 | true 1155 | true 1156 | 1157 | true 1158 | 1159 | true 1160 | 1161 | ОбновляемыеВариантыСтрокаПоиска 1162 | 1163 | true 1164 | 1165 | 1166 | 1167 | true 1168 | true 1169 | 1170 | true 1171 | 1172 | ОбновляемыеВариантыСостояниеПросмотра 1173 | 156 1174 | 1175 | ОбновляемыеВариантыСостояниеПросмотраРасширеннаяПодсказка 1176 | 158 1177 | true 1178 | true 1179 | 1180 | true 1181 | 1182 | Label 1183 | true 1184 | true 1185 | 1186 | Left 1187 | 1188 | 1189 | 1190 | ОбновляемыеВариантыСостояниеПросмотраКонтекстноеМеню 1191 | 157 1192 | true 1193 | true 1194 | 1195 | true 1196 | 1197 | true 1198 | 1199 | ViewStatusAddition 1200 | ОбновляемыеВариантыСостояниеПросмотра 1201 | 1202 | true 1203 | 1204 | 1205 | 1206 | true 1207 | true 1208 | 1209 | true 1210 | 1211 | ОбновляемыеВариантыУправлениеПоиском 1212 | 153 1213 | 1214 | ОбновляемыеВариантыУправлениеПоискомРасширеннаяПодсказка 1215 | 155 1216 | true 1217 | true 1218 | 1219 | true 1220 | 1221 | Label 1222 | true 1223 | true 1224 | 1225 | Left 1226 | 1227 | 1228 | 1229 | ОбновляемыеВариантыУправлениеПоискомКонтекстноеМеню 1230 | 154 1231 | true 1232 | true 1233 | 1234 | true 1235 | 1236 | true 1237 | 1238 | SearchControlAddition 1239 | ОбновляемыеВариантыУправлениеПоиском 1240 | 1241 | true 1242 | 1243 | 1244 | 1245 | ОбновляемыеВариантыРасширеннаяПодсказка 1246 | 149 1247 | true 1248 | true 1249 | 1250 | true 1251 | 1252 | Label 1253 | true 1254 | true 1255 | 1256 | Left 1257 | 1258 | 1259 | 1260 | ОбновляемыеВариантыКонтекстноеМеню 1261 | 148 1262 | true 1263 | true 1264 | 1265 | true 1266 | 1267 | true 1268 | 1269 | true 1270 | true 1271 | true 1272 | true 1273 | true 1274 | true 1275 | MultiRow 1276 |
true
1277 | 1 1278 | 1 1279 | AutoUse 1280 | AutoUse 1281 | true 1282 | true 1283 | Auto 1284 | Auto 1285 | true 1286 | true 1287 | AsFileRef 1288 | 1289 |
1290 | true 1291 | true 1292 | 1293 | true 1294 | 1295 | 1296 | <key>ru</key> 1297 | <value>Варианты отчетов</value> 1298 | 1299 | 1300 | ru 1301 | Группа право 1302 | 1303 | 1304 | ГруппаПравоРасширеннаяПодсказка 1305 | 61 1306 | true 1307 | true 1308 | 1309 | true 1310 | 1311 | Label 1312 | true 1313 | true 1314 | 1315 | Left 1316 | 1317 | 1318 | UsualGroup 1319 | 1320 | Vertical 1321 | StrongSeparation 1322 | true 1323 | true 1324 | true 1325 | Auto 1326 | Auto 1327 | 1328 |
1329 | true 1330 | true 1331 | 1332 | true 1333 | 1334 | 1335 | <key>ru</key> 1336 | <value>Группа основная</value> 1337 | 1338 | 1339 | ru 1340 | Группа основная 1341 | 1342 | 1343 | ГруппаОсновнаяРасширеннаяПодсказка 1344 | 59 1345 | true 1346 | true 1347 | 1348 | true 1349 | 1350 | Label 1351 | true 1352 | true 1353 | 1354 | Left 1355 | 1356 | 1357 | UsualGroup 1358 | 1359 | AlwaysHorizontal 1360 | true 1361 | true 1362 | Auto 1363 | Auto 1364 | 1365 |
1366 | None 1367 | 1368 | ФормаКоманднаяПанель 1369 | -1 1370 | true 1371 | true 1372 | 1373 | true 1374 | 1375 | Left 1376 | true 1377 | 1378 | 1379 | OnOpen 1380 | ПриОткрытии 1381 | 1382 | 1383 | BeforeClose 1384 | ПередЗакрытием 1385 | 1386 | 1387 | OnCreateAtServer 1388 | ПриСозданииНаСервере 1389 | 1390 | 1391 | OnSaveDataInSettingsAtServer 1392 | ПриСохраненииДанныхВНастройкахНаСервере 1393 | 1394 | 1395 | OnLoadDataFromSettingsAtServer 1396 | ПриЗагрузкеДанныхИзНастроекНаСервере 1397 | 1398 | Use 1399 | true 1400 | true 1401 | Vertical 1402 | true 1403 | true 1404 | true 1405 | true 1406 | true 1407 | 1408 | Объект 1409 | 1 1410 | 1411 | ExternalDataProcessor.ИТМ_ОбновлениеВариантовОтчетов 1412 | 1413 | 1414 | true 1415 | 1416 | 1417 | true 1418 | 1419 |
true
1420 |
1421 | 1422 | ИмяФайлаНастроек 1423 | 1424 | <key>ru</key> 1425 | <value>Файл настроек</value> 1426 | 1427 | 4 1428 | 1429 | String 1430 | 1431 | 1432 | 1433 | true 1434 | 1435 | 1436 | true 1437 | 1438 | 1439 | ИмяФайлаНастроек 1440 | 1441 | 1442 | 1443 | ТекстКодаВызоваОбработки 1444 | 1445 | <key>ru</key> 1446 | <value>Текст кода вызова обработки</value> 1447 | 1448 | 5 1449 | 1450 | String 1451 | 1452 | 1453 | 1454 | true 1455 | 1456 | 1457 | true 1458 | 1459 | 1460 | 1461 | СохранитьВФайл 1462 | 1463 | <key>ru</key> 1464 | <value>Сохранить в файл</value> 1465 | 1466 | 2 1467 | 1468 | true 1469 | 1470 | 1471 | StdPicture.SaveReportSettings 1472 | 1473 | 1474 | 1475 | Команда_СохранитьВФайл 1476 | 1477 | 1478 | Picture 1479 | Auto 1480 | 1481 | 1482 | ОбновитьВариантыОтчетов 1483 | 1484 | <key>ru</key> 1485 | <value>Обновить варианты отчетов</value> 1486 | 1487 | 1 1488 | 1489 | ru 1490 | Обновить варианты отчетов 1491 | 1492 | 1493 | true 1494 | 1495 | 1496 | StdPicture.GenerateReport 1497 | 1498 | 1499 | 1500 | Команда_ОбновитьВариантыОтчетов 1501 | 1502 | 1503 | TextPicture 1504 | Auto 1505 | 1506 | 1507 | ЗаполнитьВариантыОтчетов 1508 | 1509 | <key>ru</key> 1510 | <value>Обновить</value> 1511 | 1512 | 3 1513 | 1514 | true 1515 | 1516 | 1517 | StdPicture.Refresh 1518 | 1519 | 1520 | 1521 | Команда_ЗаполнитьВариантыОтчетов 1522 | 1523 | 1524 | TextPicture 1525 | Auto 1526 | 1527 | 1528 | СброситьНастройкиОтборов 1529 | 1530 | <key>ru</key> 1531 | <value>Стандратные отборы</value> 1532 | 1533 | 4 1534 | 1535 | true 1536 | 1537 | 1538 | StdPicture.DataCompositionStandardSettings 1539 | 1540 | 1541 | 1542 | Команда_СброситьНастройкиОтборов 1543 | 1544 | 1545 | TextPicture 1546 | Auto 1547 | 1548 | 1549 | 1550 | 1551 | 1552 | 1553 |
1554 | --------------------------------------------------------------------------------