├── .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 |
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 |
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 |
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 |
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 | }
--------------------------------------------------------------------------------