├── .gitignore ├── .gitlab-ci.yml ├── InitDB ├── .project ├── DT-INF │ └── PROJECT.PMF └── src │ └── ExternalDataProcessors │ └── InitDB │ ├── Forms │ └── Форма │ │ ├── Form.form │ │ └── Module.bsl │ ├── InitDB.mdo │ └── ObjectModule.bsl ├── Model ├── .project ├── DT-INF │ └── PROJECT.PMF └── src │ ├── Configuration │ ├── CommandInterface.cmi │ ├── Configuration.mdo │ └── MainSectionCommandInterface.cmi │ └── Roles │ ├── ПолныеПрава │ ├── Rights.rights │ └── ПолныеПрава.mdo │ ├── Роль1 │ ├── Rights.rights │ └── Роль1.mdo │ └── Роль2 │ ├── Rights.rights │ └── Роль2.mdo ├── README.md ├── sonar-project.properties ├── tools └── Конфигурация Тонкий клиент.launch └── users.json /.gitignore: -------------------------------------------------------------------------------- 1 | *.epf 2 | .settings 3 | .metadata 4 | -------------------------------------------------------------------------------- /.gitlab-ci.yml: -------------------------------------------------------------------------------- 1 | variables: 2 | #CI_DEBUG_TRACE: "true" 3 | 4 | workflow: 5 | rules: 6 | - if: $CI_COMMIT_TAG 7 | - if: $CI_MERGE_REQUEST_IID 8 | 9 | stages: 10 | - test 11 | 12 | .sonarqube: 13 | stage: test 14 | variables: 15 | GIT_DEPTH: 0 16 | image: 17 | name: $CI_REGISTRY/devops/sonar-scanner-cli:latest 18 | entrypoint: [""] 19 | tags: 20 | - 1c 21 | 22 | .cacerts: &cacerts 23 | - keytool -cacerts -storepass changeit -noprompt -trustcacerts -importcert 24 | -alias ${SONAR_SSL_SERVER} 25 | -file "${SONAR_SSL_CERTIFICATE}" 26 | 27 | sonarqube_on_merge_request: 28 | extends: .sonarqube 29 | script: 30 | - *cacerts 31 | - export SONAR_SCANNER_OPTS="-Xmx4g" 32 | - sonar-scanner 33 | -D"sonar.host.url=$SONAR_SERVER" 34 | -D"sonar.projectVersion=$CI_COMMIT_TAG" 35 | -D"sonar.login=$SONAR_LOGIN" 36 | -D"sonar.pullrequest.key=$CI_MERGE_REQUEST_IID" 37 | -D"sonar.pullrequest.branch=$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME" 38 | -D"sonar.pullrequest.base=$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" 39 | rules: 40 | - if: $CI_MERGE_REQUEST_IID 41 | 42 | sonarqube_on_tag: 43 | extends: .sonarqube 44 | script: 45 | - *cacerts 46 | - export SONAR_SCANNER_OPTS="-Xmx4g" 47 | - sonar-scanner 48 | -D"sonar.host.url=$SONAR_SERVER" 49 | -D"sonar.projectVersion=$CI_COMMIT_TAG" 50 | -D"sonar.branch.name=$CI_DEFAULT_BRANCH" 51 | -D"sonar.login=$SONAR_LOGIN" 52 | rules: 53 | - if: $CI_COMMIT_TAG -------------------------------------------------------------------------------- /InitDB/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | InitDB 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 | -------------------------------------------------------------------------------- /InitDB/DT-INF/PROJECT.PMF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Runtime-Version: 8.3.17 3 | Base-Project: Конфигурация 4 | -------------------------------------------------------------------------------- /InitDB/src/ExternalDataProcessors/InitDB/Forms/Форма/Form.form: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ФормаКоманднаяПанель 5 | -1 6 | true 7 | true 8 | 9 | true 10 | 11 | Left 12 | true 13 | 14 | 15 | OnOpen 16 | ПриОткрытии 17 | 18 | true 19 | true 20 | Vertical 21 | true 22 | true 23 | true 24 | true 25 | true 26 | 27 | Объект 28 | 1 29 | 30 | ExternalDataProcessor.InitDB 31 | 32 | 33 | true 34 | 35 | 36 | true 37 | 38 |
true
39 |
40 | 41 | 42 | 43 | 44 | 45 |
46 | -------------------------------------------------------------------------------- /InitDB/src/ExternalDataProcessors/InitDB/Forms/Форма/Module.bsl: -------------------------------------------------------------------------------- 1 | #Область ОбработчикиСобытийФормы 2 | 3 | &НаКлиенте 4 | Процедура ПриОткрытии(Отказ) 5 | 6 | Перем ПараметрыЗапуска; 7 | Перем Данные; 8 | Перем РольПолныеПрава; 9 | Перем Пользователи; 10 | 11 | #Если ВебКлиент Тогда 12 | 13 | Закрыть(); 14 | 15 | #Иначе 16 | 17 | Если ( ПустаяСтрока(ПараметрЗапуска) ) Тогда 18 | 19 | ЗавершитьРаботуСистемы(Ложь); 20 | 21 | КонецЕсли; 22 | 23 | ПараметрыЗапуска = РазобратьПараметрЗапуска( ПараметрЗапуска ); 24 | Данные = ПолучитьДанные( ПараметрыЗапуска ); 25 | 26 | РольПолныеПрава = ПолучитьРольПолныеПрава( Данные ); 27 | Пользователи = Данные.Получить( "users" ); 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 | ПутьКФайлу = ПараметрыЗапуска.Получить( "file" ); 78 | 79 | Если ( ПутьКФайлу = Неопределено ) Тогда 80 | 81 | Возврат Неопределено; 82 | 83 | КонецЕсли; 84 | 85 | Файл = Новый Файл( ПутьКФайлу ); 86 | 87 | Если ( НЕ Файл.Существует() ) Тогда 88 | 89 | Возврат Неопределено; 90 | 91 | КонецЕсли; 92 | 93 | Возврат ПрочитатьДанные( Файл ); 94 | 95 | КонецФункции 96 | 97 | &НаКлиенте 98 | Функция ПрочитатьДанные( Знач Файл ) 99 | 100 | Перем Чтение; 101 | Перем Результат; 102 | 103 | Чтение = Новый ЧтениеJSON(); 104 | Чтение.ОткрытьФайл( Файл.ПолноеИмя ); 105 | Результат = ПрочитатьJSON( Чтение, Истина ); 106 | Чтение.Закрыть(); 107 | 108 | Возврат Результат; 109 | 110 | КонецФункции 111 | 112 | &НаКлиенте 113 | Процедура ДобавитьПараметр( Результат, Знач Параметр ) 114 | 115 | Перем Запись; 116 | 117 | СОДЕРЖИТ_КЛЮЧ_И_ЗНАЧЕНИЕ = 2; 118 | 119 | Запись = СтрРазделить( Параметр, "=", Ложь ); 120 | 121 | Если ( Запись.Количество() = СОДЕРЖИТ_КЛЮЧ_И_ЗНАЧЕНИЕ ) Тогда 122 | 123 | Результат.Вставить( Запись[0], Запись[1] ); 124 | 125 | КонецЕсли; 126 | 127 | КонецПроцедуры 128 | 129 | #КонецОбласти 130 | 131 | #Область ПеременныеСреды 132 | 133 | &НаКлиенте 134 | Функция IsLinux() 135 | 136 | Перем СистемнаяИнформация; 137 | Перем ТипыПлатформы; 138 | 139 | СистемнаяИнформация = Новый СистемнаяИнформация(); 140 | 141 | ТипыПлатформы = Новый Массив(); 142 | ТипыПлатформы.Добавить( ТипПлатформы.Linux_x86 ); 143 | ТипыПлатформы.Добавить( ТипПлатформы.Linux_x86_64 ); 144 | ТипыПлатформы.Добавить( ТипПлатформы.MacOS_x86 ); 145 | ТипыПлатформы.Добавить( ТипПлатформы.MacOS_x86_64 ); 146 | 147 | Возврат ( ТипыПлатформы.Найти(СистемнаяИнформация.ТипПлатформы) <> Неопределено ); 148 | 149 | КонецФункции 150 | 151 | &НаКлиенте 152 | Функция ПолучитьПеременныеСреды() 153 | 154 | Перем ИмяВременногоФайла; 155 | Перем ПеременныеСреды; 156 | 157 | ИмяВременногоФайла = ПолучитьИмяВременногоФайла( "tmp" ); 158 | 159 | Попытка 160 | 161 | Если ( IsLinux() ) Тогда 162 | 163 | КомандаСистемы( "sh -c 'env > " + ИмяВременногоФайла + "'" ); 164 | 165 | Иначе 166 | 167 | КомандаСистемы( "set > """ + ИмяВременногоФайла + """" ); 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 | Чтение = Новый ЧтениеТекста( ИмяФайла, КодировкаТекста.UTF8 ); 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 | Если ( СтрНачинаетсяС(Запись.Значение, "$") И СтрДлина(Запись.Значение) > 1 ) Тогда 251 | 252 | НовоеЗначение = ПеременныеСреды.Получить( ВРег(Сред(Запись.Значение, 2)) ); 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 | Результат = Данные.Получить( "full-rights" ); 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 | Роли = Пользователь.Получить( "roles" ); 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 | Пароль = ДанныеЗаполнения.Получить( "password" ); 351 | 352 | Если ( Пароль = Неопределено ) Тогда 353 | 354 | Возврат; 355 | 356 | КонецЕсли; 357 | 358 | Пользователь.Пароль = Пароль; 359 | 360 | КонецПроцедуры 361 | 362 | &НаСервереБезКонтекста 363 | Процедура УстановитьРоли( Пользователь, Знач ДанныеЗаполнения ) 364 | 365 | Перем Роли; 366 | 367 | Роли = ДанныеЗаполнения.Получить("roles"); 368 | 369 | Если ( Роли = Неопределено ) Тогда 370 | 371 | Возврат; 372 | 373 | КонецЕсли; 374 | 375 | Для Каждого Роль Из Роли Цикл 376 | 377 | Пользователь.Роли.Добавить( Метаданные.Роли[Роль] ); 378 | 379 | КонецЦикла; 380 | 381 | КонецПроцедуры 382 | 383 | &НаСервереБезКонтекста 384 | Процедура УстановитьЯзык( Пользователь, Знач ДанныеЗаполнения ) 385 | 386 | Перем КодЯзыка; 387 | Перем Языки; 388 | 389 | КодЯзыка = ДанныеЗаполнения.Получить("lang"); 390 | 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 | НовыйПользователь = ПолучитьПользователя( ДанныеЗаполнения.Получить("name") ); 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 | #КонецЕсли -------------------------------------------------------------------------------- /InitDB/src/ExternalDataProcessors/InitDB/InitDB.mdo: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | InitDB 7 | 8 | ru 9 | InitDB 10 | 11 | 12 | ExternalDataProcessor.InitDB.Form.Форма 13 | 14 | Форма 15 | 16 | ru 17 | Форма 18 | 19 | PersonalComputer 20 | MobileDevice 21 | 22 | 23 | -------------------------------------------------------------------------------- /InitDB/src/ExternalDataProcessors/InitDB/ObjectModule.bsl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/astrizhachuk/Init-db-1c/eca238a5ea4d1ad30ff7c6a4a7a4bc05d03c990d/InitDB/src/ExternalDataProcessors/InitDB/ObjectModule.bsl -------------------------------------------------------------------------------- /Model/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | Конфигурация 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.xtext.ui.shared.xtextBuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.xtext.ui.shared.xtextNature 16 | com._1c.g5.v8.dt.core.V8ConfigurationNature 17 | 18 | 19 | -------------------------------------------------------------------------------- /Model/DT-INF/PROJECT.PMF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Runtime-Version: 8.3.17 3 | -------------------------------------------------------------------------------- /Model/src/Configuration/CommandInterface.cmi: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /Model/src/Configuration/Configuration.mdo: -------------------------------------------------------------------------------- 1 | 2 | 3 | Конфигурация 4 | 5 | ru 6 | Конфигурация 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 8.3.17 16 | ManagedApplication 17 | PersonalComputer 18 | Russian 19 | 20 | AllowOSBackup 21 | true 22 | 23 | Language.Русский 24 | Managed 25 | NotAutoFree 26 | DontUse 27 | DontUse 28 | 8.3.17 29 | 30 | Русский 31 | 32 | ru 33 | Русский 34 | 35 | ru 36 | 37 | Role.Роль1 38 | Role.Роль2 39 | Role.ПолныеПрава 40 | 41 | -------------------------------------------------------------------------------- /Model/src/Configuration/MainSectionCommandInterface.cmi: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /Model/src/Roles/ПолныеПрава/Rights.rights: -------------------------------------------------------------------------------- 1 | 2 | 3 | false 4 | true 5 | false 6 | 7 | Configuration.Конфигурация 8 | 9 | SaveUserData 10 | true 11 | 12 | 13 | ThinClient 14 | true 15 | 16 | 17 | WebClient 18 | true 19 | 20 | 21 | MainWindowModeEmbeddedWorkplace 22 | true 23 | 24 | 25 | MainWindowModeKiosk 26 | true 27 | 28 | 29 | MainWindowModeNormal 30 | true 31 | 32 | 33 | MainWindowModeFullscreenWorkplace 34 | true 35 | 36 | 37 | MainWindowModeWorkplace 38 | true 39 | 40 | 41 | AnalyticsSystemClient 42 | true 43 | 44 | 45 | Administration 46 | true 47 | 48 | 49 | DataAdministration 50 | true 51 | 52 | 53 | UpdateDataBaseConfiguration 54 | true 55 | 56 | 57 | ExclusiveMode 58 | true 59 | 60 | 61 | ActiveUsers 62 | true 63 | 64 | 65 | EventLog 66 | true 67 | 68 | 69 | MobileClient 70 | true 71 | 72 | 73 | ThickClient 74 | true 75 | 76 | 77 | ExternalConnection 78 | true 79 | 80 | 81 | Automation 82 | true 83 | 84 | 85 | TechnicalSpecialistMode 86 | true 87 | 88 | 89 | CollaborationSystemInfoBaseRegistration 90 | true 91 | 92 | 93 | ConfigurationExtensionsAdministration 94 | true 95 | 96 | 97 | InteractiveOpenExtDataProcessors 98 | true 99 | 100 | 101 | InteractiveOpenExtReports 102 | true 103 | 104 | 105 | Output 106 | true 107 | 108 | 109 | 110 | -------------------------------------------------------------------------------- /Model/src/Roles/ПолныеПрава/ПолныеПрава.mdo: -------------------------------------------------------------------------------- 1 | 2 | 3 | ПолныеПрава 4 | 5 | ru 6 | Полные права 7 | 8 | 9 | -------------------------------------------------------------------------------- /Model/src/Roles/Роль1/Rights.rights: -------------------------------------------------------------------------------- 1 | 2 | 3 | false 4 | true 5 | false 6 | 7 | Configuration.Конфигурация 8 | 9 | SaveUserData 10 | true 11 | 12 | 13 | ThinClient 14 | true 15 | 16 | 17 | WebClient 18 | true 19 | 20 | 21 | MainWindowModeEmbeddedWorkplace 22 | true 23 | 24 | 25 | MainWindowModeKiosk 26 | true 27 | 28 | 29 | MainWindowModeNormal 30 | true 31 | 32 | 33 | MainWindowModeFullscreenWorkplace 34 | true 35 | 36 | 37 | MainWindowModeWorkplace 38 | true 39 | 40 | 41 | AnalyticsSystemClient 42 | true 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /Model/src/Roles/Роль1/Роль1.mdo: -------------------------------------------------------------------------------- 1 | 2 | 3 | Роль1 4 | 5 | ru 6 | Роль1 7 | 8 | 9 | -------------------------------------------------------------------------------- /Model/src/Roles/Роль2/Rights.rights: -------------------------------------------------------------------------------- 1 | 2 | 3 | false 4 | true 5 | false 6 | 7 | Configuration.Конфигурация 8 | 9 | SaveUserData 10 | true 11 | 12 | 13 | ThinClient 14 | true 15 | 16 | 17 | WebClient 18 | true 19 | 20 | 21 | MainWindowModeEmbeddedWorkplace 22 | true 23 | 24 | 25 | MainWindowModeKiosk 26 | true 27 | 28 | 29 | MainWindowModeNormal 30 | true 31 | 32 | 33 | MainWindowModeFullscreenWorkplace 34 | true 35 | 36 | 37 | MainWindowModeWorkplace 38 | true 39 | 40 | 41 | AnalyticsSystemClient 42 | true 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /Model/src/Roles/Роль2/Роль2.mdo: -------------------------------------------------------------------------------- 1 | 2 | 3 | Роль2 4 | 5 | ru 6 | Роль2 7 | 8 | 9 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Описание 2 | 3 | Генерация данных при создании пустой базы данны для целей CI/CD с помощью внешней обработки при запуске в режиме "Предприятие" (см. [пример разработки в своей ветке](https://github.com/astrizhachuk/bootstrap-1c#пример-разработки-в-своей-ветке)). 4 | 5 | [См. также](https://github.com/astrizhachuk/bootstrap-1c/tree/master/tools) 6 | 7 | ## Требования 8 | 9 | * Платформа 1С не ниже 8.3.6; 10 | * Обработка не предназначена для запуска в веб-клиенте; 11 | 12 | ## Инструменты разработки 13 | 14 | * Разработка ведется в [EDT](https://releases.1c.ru/project/DevelopmentTools10). 15 | * Платформа 1С не ниже 8.3.10.2667; 16 | 17 | ## Параметры 18 | 19 | Параметры обработки передаются через аргумент `/C` при её запуске в пакетном режиме через `/Execute`. Каждая пара параметров разделяется символом "`;`". Ключ и значение параметра разделяются символом "`=`". 20 | 21 | ### Возможные значения 22 | 23 | * file - путь к файлу с данными создаваемых пользователей (см. пример). 24 | 25 | ### Пример "users.json" 26 | 27 | ```json 28 | { 29 | "full-rights": "ПолныеПрава", 30 | "users": [ 31 | { 32 | "name": "Иванов_И_И", 33 | "roles": [ 34 | "Роль1", 35 | "Роль2" 36 | ], 37 | "password": "12345" 38 | }, 39 | { 40 | "name": "Петров_П_П", 41 | "roles": [ 42 | "Роль1", 43 | "Роль2" 44 | ], 45 | "password": "$ONEC_PASSWORD" 46 | }, 47 | { 48 | "name": "Администратор", 49 | "roles": [ 50 | "ПолныеПрава" 51 | ] 52 | }, 53 | { 54 | "name": "Сидоров_С_С", 55 | "roles": [ 56 | "Роль2" 57 | ], 58 | "lang": "ru" 59 | }, 60 | { 61 | "name": "Буржуй_Б_Б", 62 | "lang": "en" 63 | }, 64 | { 65 | "name": "Патриот_П_П", 66 | "lang": "ru" 67 | } 68 | ] 69 | } 70 | ``` 71 | 72 | * full-rights - (необязательный) имя роли с полными правами (как в конфигураторе), если в списке пользователей добавляются как администраторы, так и обычные пользователи (чтобы исключить ошибку "в базе не осталось пользователей без административных прав"); 73 | * users - добавляемые пользователи: 74 | 75 | ---- 76 | 77 | * name - имя пользователя (краткое имя пользователя при заведении его в конфигураторе); 78 | * roles - массив доступных пользователю ролей (имя роли как в метаданных); 79 | * lang - код языка пользователя (как указано в метаданных); 80 | * password - пароль пользователя, поддерживаются переменные окружения (в формате `linux`); 81 | -------------------------------------------------------------------------------- /sonar-project.properties: -------------------------------------------------------------------------------- 1 | sonar.projectName=init-db-1c 2 | sonar.projectKey=init-db-1c 3 | 4 | sonar.sourceEncoding=UTF-8 5 | 6 | sonar.sources=InitDB 7 | sonar.exclusions=Model/* 8 | 9 | sonar.scm.enabled=true 10 | sonar.scm.provider=git 11 | 12 | sonar.bsl.languageserver.diagnosticLanguage=ru 13 | -------------------------------------------------------------------------------- /tools/Конфигурация Тонкий клиент.launch: -------------------------------------------------------------------------------- 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 | -------------------------------------------------------------------------------- /users.json: -------------------------------------------------------------------------------- 1 | { 2 | "full-rights": "ПолныеПрава", 3 | "exceptions": true, 4 | "users": [ 5 | { 6 | "name": "Иванов_И_И", 7 | "roles": [ 8 | "Роль1", 9 | "Роль2" 10 | ], 11 | "password": "12345" 12 | }, 13 | { 14 | "name": "Петров_П_П", 15 | "roles": [ 16 | "Роль1", 17 | "Роль2" 18 | ], 19 | "password": "$ONEC_PASSWORD" 20 | }, 21 | { 22 | "name": "Администратор", 23 | "roles": [ 24 | "ПолныеПрава" 25 | ] 26 | }, 27 | { 28 | "name": "Сидоров_С_С", 29 | "roles": [ 30 | "Роль2" 31 | ], 32 | "lang": "ru" 33 | }, 34 | { 35 | "name": "Буржуй_Б_Б", 36 | "lang": "en" 37 | }, 38 | { 39 | "name": "Патриот_П_П", 40 | "lang": "ru" 41 | } 42 | ] 43 | } --------------------------------------------------------------------------------