├── .project
├── .settings
└── org.eclipse.core.resources.prefs
├── DT-INF
└── PROJECT.PMF
└── src
├── CommonForms
└── пс_ФормаПрогрессаЗагрузкиФайлов
│ ├── Form.form
│ ├── Module.bsl
│ └── пс_ФормаПрогрессаЗагрузкиФайлов.mdo
├── CommonModules
├── пс_РаботаСФайламиКлиент
│ ├── Module.bsl
│ └── пс_РаботаСФайламиКлиент.mdo
├── пс_Скрипты
│ ├── Module.bsl
│ └── пс_Скрипты.mdo
├── пс_СкриптыВызовСервера
│ ├── Module.bsl
│ └── пс_СкриптыВызовСервера.mdo
├── пс_СкриптыКлиент
│ ├── Module.bsl
│ └── пс_СкриптыКлиент.mdo
└── пс_СкриптыСерверПовтИсп
│ ├── Module.bsl
│ └── пс_СкриптыСерверПовтИсп.mdo
├── CommonPictures
└── пс_РазделСкрипты
│ ├── Picture.png
│ └── пс_РазделСкрипты.mdo
├── CommonTemplates
└── пс_ПодключаемыеСкрипты
│ ├── Template.txt
│ └── пс_ПодключаемыеСкрипты.mdo
├── Configuration
├── Configuration.mdo
├── ExternalConnectionModule.bsl
├── ManagedApplicationModule.bsl
├── OrdinaryApplicationModule.bsl
└── SessionModule.bsl
├── DataProcessors
├── пс_РедакторКода
│ ├── Forms
│ │ └── Форма
│ │ │ ├── Form.form
│ │ │ └── Module.bsl
│ ├── ManagerModule.bsl
│ ├── ObjectModule.bsl
│ ├── Templates
│ │ ├── app
│ │ │ └── Template.bin
│ │ ├── css_worker
│ │ │ └── Template.bin
│ │ ├── editor_worker
│ │ │ └── Template.bin
│ │ ├── html_worker
│ │ │ └── Template.bin
│ │ ├── index
│ │ │ └── Template.txt
│ │ ├── json_worker
│ │ │ └── Template.bin
│ │ └── ts_worker
│ │ │ └── Template.bin
│ └── пс_РедакторКода.mdo
└── пс_Тестирование
│ ├── Forms
│ └── Форма
│ │ ├── Form.form
│ │ └── Module.bsl
│ ├── ManagerModule.bsl
│ ├── ObjectModule.bsl
│ └── пс_Тестирование.mdo
└── Subsystems
└── пс_Скрипты
└── пс_Скрипты.mdo
/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | WMSRRCGIT.JS
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 |
--------------------------------------------------------------------------------
/.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.18
3 | Base-Project: Empty18
4 |
--------------------------------------------------------------------------------
/src/CommonForms/пс_ФормаПрогрессаЗагрузкиФайлов/Form.form:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | ГруппаСоставнойПрогресс
5 | 6
6 |
7 | ГруппаПрогрессСоставнойГоризонтальная
8 | 20
9 |
10 | ПрогрессВсего
11 | 8
12 | true
13 | true
14 |
15 | true
16 |
17 |
18 | ПрогрессВсего
19 |
20 | None
21 |
22 | ПрогрессВсегоРасширеннаяПодсказка
23 | 10
24 | true
25 | true
26 |
27 | true
28 |
29 | Label
30 | true
31 | true
32 |
33 | Left
34 |
35 |
36 |
37 | ПрогрессВсегоКонтекстноеМеню
38 | 9
39 | true
40 | true
41 |
42 | true
43 |
44 | true
45 |
46 | ProgressBarField
47 | Enter
48 | true
49 | Left
50 | true
51 |
52 | 32
53 | true
54 | 1
55 | true
56 | true
57 | 100
58 | true
59 |
60 |
61 |
62 | КомандаОтменитьВсе
63 | 26
64 | true
65 | true
66 |
67 | true
68 |
69 |
70 | КомандаОтменитьВсеРасширеннаяПодсказка
71 | 27
72 | true
73 | true
74 |
75 | true
76 |
77 | Label
78 | true
79 | true
80 |
81 | Left
82 |
83 |
84 | Hyperlink
85 | Form.Command.КомандаОтменитьВсе
86 | Auto
87 | true
88 | true
89 | true
90 | UserCmds
91 | Auto
92 |
93 | true
94 | true
95 |
96 | true
97 |
98 |
99 | ru
100 | Группа прогресс составной горизонтальная
101 |
102 | false
103 |
104 | ГруппаПрогрессСоставнойГоризонтальнаяРасширеннаяПодсказка
105 | 21
106 | true
107 | true
108 |
109 | true
110 |
111 | Label
112 | true
113 | true
114 |
115 | Left
116 |
117 |
118 | UsualGroup
119 |
120 | HorizontalIfPossible
121 | true
122 | true
123 | Auto
124 | Auto
125 |
126 |
127 |
128 | СоставнойПрогрессПодсказка
129 | 14
130 | true
131 | true
132 |
133 | true
134 |
135 |
136 | СоставнойПрогрессПодсказкаРасширеннаяПодсказка
137 | 16
138 | true
139 | true
140 |
141 | true
142 |
143 | Label
144 | true
145 | true
146 |
147 | Left
148 |
149 |
150 |
151 | СоставнойПрогрессПодсказкаКонтекстноеМеню
152 | 15
153 | true
154 | true
155 |
156 | true
157 |
158 | true
159 |
160 | Label
161 | true
162 | true
163 |
164 | Left
165 |
166 |
167 | true
168 | true
169 |
170 | true
171 |
172 |
173 | ru
174 | Составной прогресс
175 |
176 |
177 | ГруппаСоставнойПрогрессРасширеннаяПодсказка
178 | 7
179 | true
180 | true
181 |
182 | true
183 |
184 | Label
185 | true
186 | true
187 |
188 | Left
189 |
190 |
191 | UsualGroup
192 |
193 | Vertical
194 | NormalSeparation
195 | true
196 | true
197 | Auto
198 | Auto
199 |
200 |
201 |
202 | ГруппаПрогресс
203 | 4
204 |
205 | ГруппаПрогрессГоризонтальная
206 | 24
207 |
208 | Прогресс
209 | 11
210 | true
211 | true
212 |
213 | true
214 |
215 |
216 | Прогресс
217 |
218 | None
219 |
220 | ПрогрессРасширеннаяПодсказка
221 | 13
222 | true
223 | true
224 |
225 | true
226 |
227 | Label
228 | true
229 | true
230 |
231 | Left
232 |
233 |
234 |
235 | ПрогрессКонтекстноеМеню
236 | 12
237 | true
238 | true
239 |
240 | true
241 |
242 | true
243 |
244 | ProgressBarField
245 | Enter
246 | true
247 | Left
248 | true
249 |
250 | 32
251 | true
252 | 1
253 | true
254 | true
255 | 100
256 | true
257 |
258 |
259 |
260 | КомандаОтменитьТекщий
261 | 22
262 | true
263 | true
264 |
265 | true
266 |
267 |
268 | КомандаОтменитьТекщийРасширеннаяПодсказка
269 | 23
270 | true
271 | true
272 |
273 | true
274 |
275 | Label
276 | true
277 | true
278 |
279 | Left
280 |
281 |
282 | Hyperlink
283 | Form.Command.КомандаОтменитьТекщий
284 | Auto
285 | true
286 | true
287 | true
288 | UserCmds
289 | Auto
290 |
291 | true
292 | true
293 |
294 | true
295 |
296 |
297 | ru
298 | Группа прогресс горизонтальная
299 |
300 | false
301 |
302 | ГруппаПрогрессГоризонтальнаяРасширеннаяПодсказка
303 | 25
304 | true
305 | true
306 |
307 | true
308 |
309 | Label
310 | true
311 | true
312 |
313 | Left
314 |
315 |
316 | UsualGroup
317 |
318 | AlwaysHorizontal
319 | true
320 | true
321 | Auto
322 | Auto
323 |
324 |
325 |
326 | ПрогрессПодсказка
327 | 17
328 | true
329 | true
330 |
331 | true
332 |
333 |
334 | ПрогрессПодсказкаРасширеннаяПодсказка
335 | 19
336 | true
337 | true
338 |
339 | true
340 |
341 | Label
342 | true
343 | true
344 |
345 | Left
346 |
347 |
348 |
349 | ПрогрессПодсказкаКонтекстноеМеню
350 | 18
351 | true
352 | true
353 |
354 | true
355 |
356 | true
357 |
358 | Label
359 | true
360 | true
361 |
362 | Left
363 |
364 |
365 | true
366 | true
367 |
368 | true
369 |
370 |
371 | ru
372 | Группа прогресс
373 |
374 |
375 | ГруппаПрогрессРасширеннаяПодсказка
376 | 5
377 | true
378 | true
379 |
380 | true
381 |
382 | Label
383 | true
384 | true
385 |
386 | Left
387 |
388 |
389 | UsualGroup
390 |
391 | Vertical
392 | NormalSeparation
393 | true
394 | true
395 | Auto
396 | Auto
397 |
398 |
399 |
400 | ФормаКоманднаяПанель
401 | -1
402 | true
403 | true
404 |
405 | true
406 |
407 | Left
408 | true
409 |
410 |
411 | OnCreateAtServer
412 | ПриСозданииНаСервере
413 |
414 | LockOwnerWindow
415 | true
416 | true
417 | Vertical
418 | true
419 | true
420 | true
421 | true
422 | true
423 |
424 | ПрогрессВсего
425 |
426 | ru
427 | Прогресс всего
428 |
429 | 1
430 |
431 | Number
432 |
433 | 3
434 | true
435 |
436 |
437 |
438 | true
439 |
440 |
441 | true
442 |
443 |
444 |
445 | Прогресс
446 |
447 | ru
448 | Прогресс
449 |
450 | 2
451 |
452 | Number
453 |
454 | 3
455 | true
456 |
457 |
458 |
459 | true
460 |
461 |
462 | true
463 |
464 |
465 |
466 | Отменено
467 |
468 | ru
469 | Отменено
470 |
471 | 3
472 |
473 | Boolean
474 |
475 |
476 | true
477 |
478 |
479 | true
480 |
481 |
482 |
483 | ОтмененоСоставной
484 |
485 | ru
486 | Отменено составной
487 |
488 | 4
489 |
490 | String
491 |
492 |
493 |
494 | true
495 |
496 |
497 | true
498 |
499 |
500 |
501 | КомандаОтменитьТекщий
502 |
503 | ru
504 | Команда отменить текщий
505 |
506 | 1
507 |
508 | ru
509 | Отменить загрузку текущего файла
510 |
511 |
514 |
515 | StdPicture.Stop
516 |
517 |
518 |
519 | КомандаОтменитьТекщий
520 |
521 |
522 | Picture
523 | Auto
524 |
525 |
526 | КомандаОтменитьВсе
527 |
528 | ru
529 | Отменить все
530 |
531 | 2
532 |
533 | ru
534 | Отменить загрузку всех файлов
535 |
536 |
539 |
540 | StdPicture.Stop
541 |
542 |
543 |
544 | КомандаОтменитьВсе
545 |
546 |
547 | Picture
548 | Auto
549 |
550 |
551 | СоставнойПрогресс
552 |
553 | Boolean
554 |
555 |
556 |
557 |
558 |
559 |
560 |
561 |
--------------------------------------------------------------------------------
/src/CommonForms/пс_ФормаПрогрессаЗагрузкиФайлов/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 |
--------------------------------------------------------------------------------
/src/CommonForms/пс_ФормаПрогрессаЗагрузкиФайлов/пс_ФормаПрогрессаЗагрузкиФайлов.mdo:
--------------------------------------------------------------------------------
1 |
2 |
3 | пс_ФормаПрогрессаЗагрузкиФайлов
4 |
5 | ru
6 | Прогресс
7 |
8 | PersonalComputer
9 | MobileDevice
10 |
11 |
--------------------------------------------------------------------------------
/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 | Если ЭтоПлатформа15Плюс() Тогда
23 | ВыбратьФайлыПлатформа15Плюс(Параметры);
24 | Иначе
25 | ВыбратьФайлыПлатформа15Минус(Параметры);
26 | КонецЕсли;
27 |
28 | КонецПроцедуры
29 |
30 | #КонецОбласти
31 |
32 | #Область Платформа15Плюс
33 |
34 | // Открывает диалог выбора файла при использовании 15 и более новой версии платформы
35 | //
36 | // Параметры:
37 | // Параметры - Структура - Описание:
38 | // * МножественныйВыбор - Булево -
39 | // * Заголовок - Строка, Неопределено -
40 | // * Фильтр - Строка -
41 | Процедура ВыбратьФайлыПлатформа15Плюс(Параметры)
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 | // чтобы модуль скомпилировался в платформе менее 15
67 | НачатьПомещениеФайловНаСервер(ОписаниеОповещенияОЗавершении
68 | , ОписаниеОповещенияОХодеВыполнения, ОписаниеОповещенияПередНачалом
69 | , ПараметрыДиалога, ИДФормы);
70 | КонецПроцедуры
71 |
72 | // Процедура отображает процесс помещения файлов во временное хранилище
73 | //
74 | // Параметры:
75 | // ПомещаемыйФайл - СсылкаНаФайл
76 | // Помещено - Число
77 | // ОтказОтПомещенияФайла - Булево
78 | // ПомещеноВсего - Число
79 | // ОтказОтПомещенияВсехФайлов - Булево
80 | // ДополнительныеПараметры
81 | Процедура ОповещениеОХодеВыполненияПомещенияФайлов(ПомещаемыйФайл, Помещено
82 | , ОтказОтПомещенияФайла, ПомещеноВсего
83 | , ОтказОтПомещенияВсехФайлов, ФормаПрогресса) Экспорт
84 | Если Не ФормаПрогресса.Открыта() Тогда
85 | ОтказОтПомещенияВсехФайлов = Истина;
86 | Возврат;
87 | КонецЕсли;
88 | ОтказОтПомещенияФайла = ФормаПрогресса.Отменено;
89 | ОтказОтПомещенияВсехФайлов = ФормаПрогресса.ОтмененоСоставной;
90 | ФормаПрогресса.ОбновитьПрогресс(Помещено, СтрШаблон("Загружается файл %1", ПомещаемыйФайл.Имя));
91 | ФормаПрогресса.ОбновитьСоставнойПрогресс(ПомещеноВсего);
92 | КонецПроцедуры
93 |
94 | // Выполняется перед началом помещения файлов во временное хранилище
95 | //
96 | // Параметры:
97 | // ПомещаемыеФайлы - Массив - Массив элементов типа СсылкаНаФайл, готовых к помещению во временное хранилище.
98 | // ОтказОтПомещенияВсехФайлов - Булево - Признак отказа от дальнейшего помещения всех файлов
99 | // ДополнительныеПараметры
100 | Процедура ПередНачаломПомещенияФайлов(ПомещаемыеФайлы, ОтказОтПомещенияВсехФайлов
101 | , ФормаПрогресса) Экспорт
102 | ФормаПрогресса.Открыть();
103 | КонецПроцедуры
104 |
105 | #КонецОбласти
106 |
107 | #Область Платформа15Минус
108 |
109 | // Открывает диалог выбора файла при использовании 14 и более старой версии платформы
110 | //
111 | // Параметры:
112 | // Параметры - Структура - Описание:
113 | // * ИдентификаторФормы - УникальныйИдентификатор
114 | // * ОбработчикРезультата - ОписаниеОповещения
115 | // * МножественныйВыбор - Булево -
116 | // * Заголовок - Неопределено -
117 | // * Фильтр - Строка -
118 | Процедура ВыбратьФайлыПлатформа15Минус(Параметры)
119 | Описание = Новый ОписаниеОповещения(
120 | "ВыбратьФайлыПослеУстановкиРасширения"
121 | , ЭтотОбъект
122 | , Параметры);
123 | ПоказатьВопросУстановкиРасширенияРаботыСФайлами(Описание);
124 | КонецПроцедуры
125 |
126 | // Подключает расширение работы с файлами, для необзодимости
127 | //
128 | // Параметры:
129 | // ОписаниеОповещения - ОписаниеОповещения - Описание
130 | Процедура ПоказатьВопросУстановкиРасширенияРаботыСФайлами(ОписаниеОповещения)
131 | Если Не КлиентПоддерживаетСинхронныеВызовы() Тогда
132 | ВыполнитьОбработкуОповещения(ОписаниеОповещения, Ложь);
133 | Возврат;
134 | КонецЕсли;
135 | #Если Не ВебКлиент Тогда
136 | // В мобильном, тонком и толстом клиентах расширение подключено всегда.
137 | ВыполнитьОбработкуОповещения(ОписаниеОповещения, Истина);
138 | Возврат;
139 | #КонецЕсли
140 |
141 | // TODO: сделать поддержку вебклиента
142 |
143 | КонецПроцедуры
144 |
145 | // Проверяет, доступны ли синфронные вызовы
146 | //
147 | // Возвращаемое значение:
148 | // Булево - Описание
149 | Функция КлиентПоддерживаетСинхронныеВызовы()
150 |
151 | #Если ВебКлиент Тогда
152 | // В Chrome и Firefox синхронные методы не поддерживаются.
153 | СистемнаяИнформация = Новый СистемнаяИнформация;
154 | ИнформацияПрограммыМассив = СтрРазделить(СистемнаяИнформация.ИнформацияПрограммыПросмотра, " ", Ложь);
155 |
156 | Для Каждого ИнформацияПрограммы Из ИнформацияПрограммыМассив Цикл
157 | Если СтрНайти(ИнформацияПрограммы, "Chrome") > 0 ИЛИ СтрНайти(ИнформацияПрограммы, "Firefox") > 0 Тогда
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 | // Приводит помещённые файлы к виду ОписаниеПомещенногоФайла, добавленный в 15 версии
208 | //
209 | // Параметры:
210 | // ПомещенныеФайлы - Массив, Неопределено
211 | // ДополнительныеПараметры
212 | Процедура ПоместитьФайлыЗавершение(ПомещенныеФайлы, ДополнительныеПараметры) Экспорт
213 |
214 | Если ДополнительныеПараметры.Свойство("ФормаПрогресса")
215 | И ДополнительныеПараметры.ФормаПрогресса.Открыта() Тогда
216 | ДополнительныеПараметры.ФормаПрогресса.Закрыть();
217 | КонецЕсли;
218 | Если ПомещенныеФайлы = Неопределено Тогда
219 | Возврат;
220 | КонецЕсли;
221 |
222 | Если ПомещенныеФайлы.Количество() И ТипЗнч(ПомещенныеФайлы[0]) = Тип("ОписаниеПереданногоФайла") Тогда
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 | // Возвращает Истина, если версия платформы больше или равна 8.3.15
248 | //
249 | // Возвращаемое значение:
250 | // Булево
251 | Функция ЭтоПлатформа15Плюс()
252 | СистемнаяИнформация = Новый СистемнаяИнформация();
253 | МассивВерсий = СтрРазделить(СистемнаяИнформация.ВерсияПриложения, ".");
254 | Мажорная = МассивВерсий.Получить(1);
255 | Минорная = МассивВерсий.ПОлучить(2);
256 | Возврат Мажорная = "3" И Число(Минорная) >= 15;
257 | КонецФункции
258 |
259 |
260 |
261 |
262 | #КонецОбласти
263 |
--------------------------------------------------------------------------------
/src/CommonModules/пс_РаботаСФайламиКлиент/пс_РаботаСФайламиКлиент.mdo:
--------------------------------------------------------------------------------
1 |
2 |
3 | пс_РаботаСФайламиКлиент
4 |
5 | ru
6 | Работа с файлами
7 |
8 | true
9 | true
10 |
11 |
--------------------------------------------------------------------------------
/src/CommonModules/пс_Скрипты/Module.bsl:
--------------------------------------------------------------------------------
1 |
2 | #Область ПрограммныйИнтерфейс
3 |
4 | // Подключает скрипт к хтмл Полю по адресу временного хранилища
5 | //
6 | // Параметры:
7 | // Поле - ПолеФормы - Поле формы с видом ПолеHTMLДокумента
8 | // ДополнительныеПараметры - Структура
9 | //
10 | Процедура ПодключитьСрипт(АдесФайла, Поле) Экспорт
11 |
12 | МассивАдресов = Новый Массив;
13 | МассивАдресов.Добавить(СтруктураПодключаемогоФайла(АдесФайла));
14 | ПодключитьФайлы(МассивАдресов, Поле);
15 |
16 | КонецПроцедуры // ПодключитьСрипт()
17 |
18 | // Подключает основное расширение скриптов, и все настроенные файлы для переданного поля
19 | //
20 | // Параметры:
21 | // Поле - ПолеФормы - Поле формы с видом ПолеHTMLДокумента
22 | //
23 | Процедура ПодключитьРасширенныеСкрипты(Поле) Экспорт
24 |
25 | МассивАдресов = Новый Массив;
26 | АдресОсновногоСкрипта = пс_СкриптыСерверПовтИсп.АдресОсновногоРасширенияСкриптов();
27 | МассивАдресов.Добавить(СтруктураПодключаемогоФайла(АдресОсновногоСкрипта));
28 | ПриОпределенииПодключаемыхФайлов(МассивАдресов, Поле);
29 | ПодключитьФайлы(МассивАдресов, Поле);
30 |
31 | КонецПроцедуры // ПодключитьСкрипты()
32 |
33 | Процедура ИнициализироватьРедакторКода(Поле) Экспорт
34 |
35 | //@skip-warning
36 | АдресРедактора = пс_СкриптыВызовСервера.ПолучитьИзСерверногоКэша("АдресРедактораКода");
37 | //@skip-warning
38 | Форма = НайтиФормуЭлемента(Поле);
39 | //@skip-warning
40 | АдресБазы = ПолучитьНавигационнуюСсылкуИнформационнойБазы();
41 | Выполнить(СтрШаблон(
42 | "Форма.%1 = АдресБазы + ""/"" + АдресРедактора;", Поле.ПутьКДанным));
43 |
44 | КонецПроцедуры
45 |
46 | #КонецОбласти
47 |
48 | #Область HTML
49 |
50 | // Парсит хтмл документ в ДокументHTML
51 | //
52 | // Параметры:
53 | // текстХТМЛ - Строка - текст хтмл документа
54 | //
55 | // Возвращаемое значение:
56 | // ДокументHTML - распарсенный документ ХТМЛ
57 | //
58 | Функция ТекстВДокументХТМЛ(текстХТМЛ)
59 |
60 | Чтение = Новый ЧтениеHTML;
61 | Чтение.УстановитьСтроку(текстХТМЛ);
62 | Построитель = Новый ПостроительDOM;
63 | ДокументХТМЛ = Построитель.Прочитать(Чтение);
64 | Чтение.Закрыть();
65 | Возврат ДокументХТМЛ;
66 |
67 | КонецФункции // ТекстВДокументХТМЛ()
68 |
69 | // Преобразует ДокументHTML в строку
70 | //
71 | // Параметры:
72 | // Документ - ДокументHTML - Документ, который необходимо преобразовать в строку
73 | //
74 | // Возвращаемое значение:
75 | // Строка - <описание возвращаемого значения>
76 | //
77 | //@skip-warning
78 | Функция ДокументХТМЛВТекст(Документ)
79 |
80 | ЗаписьХТМЛ = Новый ЗаписьHTML;
81 | ЗаписьХТМЛ.УстановитьСтроку();
82 | ЗаписьДОМ = Новый ЗаписьDOM;
83 | ЗаписьДОМ.КонфигурацияDOM.УстановитьПараметр("discard-default-content", Истина);
84 | ЗаписьДОМ.Записать(Документ, ЗаписьХТМЛ);
85 | ХТМЛТекст = ЗаписьХТМЛ.Закрыть();
86 | Возврат СтрЗаменить(ХТМЛТекст, "", "");
87 |
88 | КонецФункции // ДокументХТМЛВТекст()
89 |
90 | #КонецОбласти
91 |
92 | #Область ПодключаемыеФайлы
93 |
94 | // Ищет в настройках все файлы, которые необходимо подключить к Полю и добавляет их адреса в массив
95 | //
96 | // Параметры:
97 | // МассивАдресов - Массив - Выходной параметр с массивом адресов подключаемых файлов
98 | // Поле - ПолеФормы - Поле формы, к которому подключаем файлы
99 | //@skip-warning
100 | Процедура ПриОпределенииПодключаемыхФайлов(МассивАдресов, Поле)
101 |
102 | КонецПроцедуры
103 |
104 | // Добавляет элементы ХТМЛ документа, переданные в параметре МассивПодключаемыхФайлов
105 | //
106 | // Параметры:
107 | // МассивПодключаемыхФайлов - Массив - см. СтруктураПодключаемогоФайла
108 | // Поле - ПолеФормы - Поле формы, в котором производится операция
109 | Процедура ПодключитьФайлы(Знач МассивПодключаемыхФайлов, Знач Поле)
110 |
111 | //@skip-warning
112 | Форма = НайтиФормуЭлемента(Поле);
113 |
114 | ТекстСтраницы = Вычислить("Форма." + Поле.ПутьКДанным);
115 | Если ПустаяСтрока(ТекстСтраницы) Тогда
116 | Документ = НовыйДокументХТМЛ();
117 | Иначе
118 | Документ = ТекстВДокументХТМЛ(ТекстСтраницы);
119 | КонецЕсли;
120 |
121 | Для Каждого текФайл Из МассивПодключаемыхФайлов Цикл
122 | ВыполнитьПодключениеФайла(Документ, текФайл);
123 | КонецЦикла;
124 |
125 | Выполнить("Форма." + Поле.ПутьКДанным + " = ДокументХТМЛВТекст(Документ);");
126 |
127 | КонецПроцедуры // ПодключитьФайлы()
128 |
129 | // см. ПодключитьФайлы
130 | //
131 | // Параметры:
132 | // Документ - ДокументHTML -
133 | // СтруктураПодключения - Структура -
134 | Процедура ВыполнитьПодключениеФайла(Документ, СтруктураПодключения)
135 | ПодключаемыйЭлемент = Документ.СоздатьЭлемент(СтруктураПодключения.ИмяТега);
136 | Для Каждого текАтрибут Из СтруктураПодключения.Атрибуты Цикл
137 | ПодключаемыйЭлемент.УстановитьАтрибут(текАтрибут.Ключ, текАтрибут.Значение);
138 | КонецЦикла;
139 | НайденныеУзлы = Документ.ПолучитьЭлементыПоИмени("HEAD");
140 | Если СтруктураПодключения.ПодключатьВЗаголовке
141 | И НайденныеУзлы.Количество() Тогда
142 | Родитель = НайденныеУзлы.Элемент(0);
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 | // Возвращает новый пустой Документ HTML. Добавляет теги HEAD и BODY
173 | //
174 | // Возвращаемое значение:
175 | // ДокументHTML -
176 | //
177 | Функция НовыйДокументХТМЛ()
178 |
179 | Документ = Новый ДокументHTML;
180 | УзелХЕАД = Документ.СоздатьЭлемент("HEAD");
181 | УзелБАДИ = Документ.СоздатьЭлемент("BODY");
182 | Документ.ЭлементДокумента.ДобавитьДочерний(УзелХЕАД);
183 | Документ.ЭлементДокумента.ДобавитьДочерний(УзелБАДИ);
184 | Возврат Документ;
185 |
186 | КонецФункции // НовыйДокументХТМЛ()
187 |
188 | // Возвращает структуру настроек, для подключения файла к документу
189 | //
190 | // Параметры:
191 | // АдресФайла - Строка - Описание
192 | // Возвращаемое значение:
193 | // Структура - Описание
194 | Функция СтруктураПодключаемогоФайла(АдресФайла = "",ИмяТега = "script", ПодключатьВЗаголовке = Ложь)
195 | Результат = Новый Структура;
196 | Результат.Вставить("ПодключатьВЗаголовке", ПодключатьВЗаголовке);
197 | Результат.Вставить("ИмяТега", ИмяТега);
198 | Результат.Вставить("Текст", "");
199 | Результат.Вставить("Атрибуты", Новый Структура);
200 | Если Не ПустаяСтрока(АдресФайла) Тогда
201 | Результат.Атрибуты.Вставить("src", АдресФайла);
202 | КонецЕсли;
203 | Возврат Результат;
204 | КонецФункции
205 |
206 |
207 |
208 | #КонецОбласти
209 |
--------------------------------------------------------------------------------
/src/CommonModules/пс_Скрипты/пс_Скрипты.mdo:
--------------------------------------------------------------------------------
1 |
2 |
3 | пс_Скрипты
4 |
5 | ru
6 | Скрипты
7 |
8 | (JS)
9 | true
10 | true
11 | true
12 |
13 |
--------------------------------------------------------------------------------
/src/CommonModules/пс_СкриптыВызовСервера/Module.bsl:
--------------------------------------------------------------------------------
1 |
2 | //получение значений параметров клиента, требующих дызов сервера
3 | //
4 | // Параметры:
5 | // Обработчики - Соответствие - ключ = имя параметра, Значение процедура обработчик, возвращающий значение
6 | //
7 | // Возвращаемое значение:
8 | // Соответстие - соответствие Ключ = имя параметра, значение = значение
9 | //
10 | Функция УстановкаПараметровКлиента(Обработчики) Экспорт
11 |
12 | Результат = Новый Соответствие;
13 |
14 | Для Каждого текОбработчик Из Обработчики Цикл
15 | Результат.Вставить(текОбработчик.Ключ, Вычислить(СтрШаблон("%1()", текОбработчик.Значение)));
16 | КонецЦикла;
17 |
18 | Возврат Результат
19 |
20 | КонецФункции // УстановкаПараметровКлиента()
21 |
22 | // Производит запись данных в журнал регистрации
23 | //
24 | // Параметры:
25 | // Событие - Соответствие - данные, полученные из js, для записи в журнал регистрации ("message", "eventName", "level")
26 | //
27 | Процедура ОбработкаСобытияЗаписьЖурналаРегистрации(Событие) Экспорт
28 |
29 | Сообщение = Событие.Получить("message");
30 | Если Сообщение = Неопределено Тогда
31 | Возврат;
32 | Иначе
33 | Сообщение = Сообщение.value;
34 | КонецЕсли;
35 |
36 | ИмяСобытия = Событие.Получить("eventName");
37 | Если ИмяСобытия <> Неопределено Тогда
38 | ИмяСобытия = ИмяСобытия.value;
39 | КонецЕсли;
40 |
41 | Уровень = Событие.Получить("level");
42 | Если Уровень = Неопределено Тогда
43 | Уровень = УровеньЖурналаРегистрации.Информация;
44 | Иначе
45 | Уровень = СоответствиеУровнейЗаписиЖурнала().Получить(Уровень.value);
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 | Результат.Вставить("info", УровеньЖурналаРегистрации.Информация);
75 | Результат.Вставить("Информация", УровеньЖурналаРегистрации.Информация);
76 | Результат.Вставить("error", УровеньЖурналаРегистрации.Ошибка);
77 | Результат.Вставить("Ошибка", УровеньЖурналаРегистрации.Ошибка);
78 | Результат.Вставить("warning", УровеньЖурналаРегистрации.Предупреждение);
79 | Результат.Вставить("Предупреждение", УровеньЖурналаРегистрации.Предупреждение);
80 | Результат.Вставить("Note", УровеньЖурналаРегистрации.Примечание);
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 | ПрефиксАдреса = КодироватьСтроку(СсылкаБазы, СпособКодированияСтроки.URLВКодировкеURL) + "/";
113 | Возврат ПрефиксАдреса + АдресВременногоХранилища;
114 | КонецФункции
115 |
116 |
--------------------------------------------------------------------------------
/src/CommonModules/пс_СкриптыВызовСервера/пс_СкриптыВызовСервера.mdo:
--------------------------------------------------------------------------------
1 |
2 |
3 | пс_СкриптыВызовСервера
4 |
5 | ru
6 | Скрипты вызов сервера
7 |
8 | (JS)
9 | true
10 | true
11 |
12 |
--------------------------------------------------------------------------------
/src/CommonModules/пс_СкриптыКлиент/Module.bsl:
--------------------------------------------------------------------------------
1 |
2 | #Область ОбщегоНазначения
3 |
4 | // Процедура инициализирует глобальную переменную для кеширования данных на клиенте
5 | //
6 | Процедура ПередНачаломРаботыСистемы() Экспорт
7 |
8 | пс_ПараметрыПриложения = Новый Соответствие;
9 |
10 | Обработчики = ПолучитьОбработчикиПолученияПараметров();
11 |
12 | // Установка параметров, требующих вызов сервера
13 | РезультатОбработкиНаСервере = пс_СкриптыВызовСервера.УстановкаПараметровКлиента(Обработчики);
14 | Для Каждого текПараметр Из РезультатОбработкиНаСервере Цикл
15 | пс_ПараметрыПриложения.Вставить(текПараметр.Ключ, текПараметр.Значение);
16 | КонецЦикла;
17 |
18 | КонецПроцедуры
19 |
20 | // Возвращает сохранённое значение из хранилища на клиенте
21 | // Значение получается по переданному ключу
22 | //
23 | // Параметры:
24 | // Ключ - Любой - Ключ, для поиска значения в глобальном кеше
25 | //
26 | // Возвращаемое значение:
27 | // Любой - Значение, сохранённое в глобальной клиентской переменной пс_ПараметрыПриложения
28 | //
29 | Функция ПолучитьИзКэша(Ключ) Экспорт
30 |
31 | Возврат пс_ПараметрыПриложения[Ключ];
32 |
33 | КонецФункции
34 |
35 | // сохраняет значение в клиентком кэше
36 | //
37 | // Параметры:
38 | // Ключ - Любой - Ключ для сохранения настройки
39 | // Значение - Любой - значение для сохранения в клиентском кэше
40 | //
41 | Процедура ПоместитьВКэш(Ключ, Значение) Экспорт
42 |
43 | пс_ПараметрыПриложения[Ключ] = Значение;
44 |
45 | КонецПроцедуры
46 |
47 | // Возвращает сохранённые данные формы.
48 | //
49 | // Параметры:
50 | // Форма - ФормаКлиентскогоПриложения - Форма, для который необходимо получить кэш
51 | //
52 | // Возвращаемое значение:
53 | // Соответствие - Хранилище для кеширование данных формы
54 | //
55 | Функция ПолучитьКешФормы(Форма) Экспорт
56 | КлючНастройки = СтрШаблон("КешФормы.%1", Форма.УникальныйИдентификатор);
57 | Кеш = пс_ПараметрыПриложения[КлючНастройки];
58 | Если Кеш = Неопределено Тогда
59 | Кеш = Новый Соответствие;
60 | ПоместитьКешФормы(Форма ,Кеш);
61 | КонецЕсли;
62 | Возврат Кеш;
63 | КонецФункции
64 |
65 | //Сохраняет данные формы в клиентской переменной пс_ПараметрыПриложения.
66 | //
67 | // Параметры:
68 | // Форма - ФормаКлиентскогоПриложения - Форма, для который необходимо сохранить кэш
69 | // Кеш - Соответствие - Данные, которые буут сохранены в хранилище
70 | //
71 | Процедура ПоместитьКешФормы(Форма, Кеш) Экспорт
72 | КлючНастройки = СтрШаблон("КешФормы.%1", Форма.УникальныйИдентификатор);
73 | пс_ПараметрыПриложения[КлючНастройки] = Кеш;
74 | КонецПроцедуры
75 |
76 | // Удаляет данные формы их хранилища
77 | //
78 | // Параметры:
79 | // Форма - ФормаКлиентскогоПриложения - Форма, для которой необходимо очистить хранилище
80 | //
81 | Процедура ОчиститьКешФормы(Форма) Экспорт
82 | КлючНастройки = СтрШаблон("КешФормы.%1", Форма.УникальныйИдентификатор);
83 | пс_ПараметрыПриложения.Удалить(КлючНастройки);
84 | КонецПроцедуры
85 |
86 | // Возвращает данные, сохранённые для переданного поля
87 | //
88 | // Параметры:
89 | // Ключ - Любой - Ключ для получения сохранённого значения
90 | // если передано неопределено, то будет возвращено соответствие со всеми сохранёнными данными
91 | // если передан ключ, то будет возращено значение по переданному ключу.
92 | // Поле - ПолеФормы - Поле, для которого будет получен кэш
93 | // Если передано неопределено, то будет получено поле из переменной пс_ПараметрыПриложения["ПолеПоУмолчанию"]
94 | //
95 | // Возвращаемое значение:
96 | // Соответствие, Любой - полный кэш формы, либо конкретное значение
97 | //
98 | Функция ПолучитьКешПоля(Ключ = Неопределено, Знач Поле = Неопределено) Экспорт
99 | Поле = ПолучитьПолеХТМЛ(Поле);
100 | Форма = НайтиФормуЭлемента(Поле);
101 | КешФормы = ПолучитьКешФормы(Форма);
102 | КешПоля = КешФормы[Поле.Имя];
103 | Если КешПоля = Неопределено Тогда
104 | КешПоля = Новый Соответствие();
105 | КешФормы[Поле.имя] = КешПоля;
106 | ПоместитьКешФормы(Форма, КешФормы);
107 | КонецЕсли;
108 | Если Ключ = Неопределено Тогда
109 | Возврат КешПоля;
110 | Иначе
111 | Возврат КешПоля[Ключ];
112 | КонецЕсли;
113 | КонецФункции
114 |
115 | // Сохраняет данные в хранилище клиентского кэша.
116 | //
117 | // Параметры:
118 | // Ключ - Любой - Ключ для сохранения значения в кэше поля
119 | // Значение - Любой - значение, которое будет сохранено в кэшк поля по переданному ключу
120 | // Поле - ПолеФормы - Поле, для которого будет сохранён кэш
121 | //
122 | Процедура ПоместитьКешПоля(Ключ, Значение, Знач Поле = Неопределено) Экспорт
123 | Поле = ПолучитьПолеХТМЛ(Поле);
124 | Форма = НайтиФормуЭлемента(Поле);
125 | КешФормы = ПолучитьКешФормы(Форма);
126 | КешПоля = ПолучитьКешПоля(,Поле);
127 | КешПоля[Ключ] = Значение;
128 | КешФормы[Поле.Имя] = КешПоля;
129 | ПоместитьКешФормы(Форма, КешФормы);
130 | КонецПроцедуры
131 |
132 | // функция возвращает соответствие клиентских параметров и обработчиков получения значения
133 | // В результате можно получить все параметры за один вызов сервера. Выполняется перед началом работы системы
134 | //
135 | // Возвращаемое значение:
136 | // Соответствие - Ключ = Имя параметра, Значение = функция получения значения.
137 | // Обработчик должен быт доступен на сервере и не содержать параметров.
138 | // Пример: "пс_СкриптыСерверПовтИсп.АдресОсновногоРасширенияСкриптов"
139 | //
140 | Функция ПолучитьОбработчикиПолученияПараметров()
141 |
142 | Результат = Новый Соответствие;
143 | Результат.Вставить("АдресОсновногоРасширенияСкриптов", "пс_СкриптыСерверПовтИсп.АдресОсновногоРасширенияСкриптов");
144 | Результат.Вставить("АдресАдресСкриптаРедактораКода", "пс_СкриптыСерверПовтИсп.АдресСкриптаРедактораКода");
145 | Результат.Вставить("АдресРедактораКода", "пс_СкриптыСерверПовтИсп.АдресРедактораКода");
146 | Возврат Результат;
147 |
148 | КонецФункции // ПолучитьОбработчикиПолученияПараметров()
149 |
150 |
151 |
152 | #КонецОбласти
153 |
154 | #Область КешированиеПоляИнтерпритатора
155 |
156 | // Сохраняет поле формы с видом "ПолеХТМЛ" для использования как поле по умолчанию.
157 | //
158 | // Параметры:
159 | // Поле - ПолеФормы - поле, которое будет использоваться по умолчанию
160 | // Тоесть в случае, когда в методы подсистемы параметр Поле не передаётся
161 | //
162 | Процедура УстановитьПолеХТМЛПоУмолчанию(Поле) Экспорт
163 |
164 | пс_ПараметрыПриложения["ПолеПоУмолчанию"] = Поле;
165 |
166 | КонецПроцедуры // УстановитьПолеХТМЛПоУмолчанию()
167 |
168 | // Возвращает ранее сохранённое поле по умолчанию
169 | //
170 | // Возвращаемое значение:
171 | // ПолеФормы, Неопределено - Значение поля по умолчанию
172 | //
173 | Функция ПолучитьПолеХТМЛПоУмолчанию() Экспорт
174 |
175 | Возврат пс_ПараметрыПриложения["ПолеПоУмолчанию"];
176 |
177 | КонецФункции // ПолучитьПолеХТМЛПоУмолчанию()
178 |
179 | #КонецОбласти
180 |
181 | #Область ДиалогиВзаимодействия
182 |
183 | // Вызывает оповещение пользователя, с помощью javascript метода alert
184 | //
185 | // Параметры:
186 | // текстСообщения - Строка - текст сообщения, который будет показан пользователю
187 | // ВычисляемоеСообщение - Булево - Если передано Ложь, то сообщение показывается как есть.
188 | // Если перено Истина, то текст сообщения будет вычислен в контексте "self"
189 | // Поле - ПолеФормы - Поле формы, в котором будет выполнена процедура
190 | //
191 | Процедура СообщитьСкриптом(Знач текстСообщения, ВычисляемоеСообщение = Ложь, Поле = Неопределено) Экспорт
192 |
193 | Если ВычисляемоеСообщение Тогда
194 | Команда = СтрШаблон("alert(eval(%1))",текстСообщения);
195 | Иначе
196 | Команда = СтрШаблон("alert('%1')", текстСообщения);
197 | КонецЕсли;
198 | ВыполнитьКоманду(Команда, Поле);
199 |
200 | КонецПроцедуры // СообщитьСкриптом()
201 |
202 | // Вызывает вопрос пользователю, с помощью javascript метода confirm
203 | //
204 | // Параметры:
205 | // текстВопроса - Строка - текст вопроса, который будет показан пользователю
206 | // ВычисляемоеСообщение - Булево - Если передано Ложь, то текст вопроса показывается как есть.
207 | // Если перено Истина, то текст вопроса будет вычислен в контексте "self"
208 | // Поле - ПолеФормы - Поле формы, в котором будет выполнена процедура
209 | //
210 | // Возвращаемое значение:
211 | // Булево - Истина, если была нажата кнопка Ok, в остальных случаях вернёт Ложь
212 | //
213 | Функция ВопросДаНет(Знач текстВопроса, ВычисляемоеСообщение = Ложь, Поле = Неопределено) Экспорт
214 |
215 | Если ВычисляемоеСообщение Тогда
216 | Команда = СтрШаблон("confirm(eval(%1))",текстВопроса);
217 | Иначе
218 | Команда = СтрШаблон("confirm('%1')", текстВопроса);
219 | КонецЕсли;
220 | Возврат ВыполнитьКоманду(Команда, Поле);
221 |
222 | КонецФункции // ВопросДаНет()
223 |
224 | #КонецОбласти
225 |
226 | #Область Команды
227 |
228 | // Выполняет переданное выражение javascript в глобальном контексте self.
229 | // для вычисления выражения ипользуется переданное поле формы или поле по умолчанию
230 | //
231 | // Параметры:
232 | // ТекстСкрипта - Строка - текст выражения на языке javascript. Контекст выполнения "self"
233 | // Поле - ПолеФормы - Поле формы, в котором будет выполнена процедура
234 | //
235 | // Возвращаемое значение:
236 | // ВнешнийОбъект, Число, Строка, Булево, Неопределено - Результат вычисления js выражения
237 | //
238 | Функция ВыполнитьКоманду(ТекстСкрипта, Поле = Неопределено) Экспорт
239 |
240 | Результат = ИнтерприаторСкриптов(Поле).adapter.eval(ТекстСкрипта);
241 | ПроверитьОтвет(Результат);
242 | Возврат Результат.result;
243 |
244 | КонецФункции // ВыполнитьКоманду()
245 |
246 | // Выполняет метод объекта по имени. Доступна передача произвольного списка параметров
247 | // Если "Объект" не передан, то выполняется метод глобального контекста
248 | //
249 | // Параметры:
250 | // Объект - ВнешнийОбъект, Неопределено - объект-владелец метода, или неопределено(глобальный контекст)
251 | // ИмяМетода - Строка - имя метода, который необходимо выполнить
252 | // Параметры - Массив, Неопределено - Массив параметров, для выхова метода
253 | // Поле - ПолеФормы - Поле формы, в котором будет выполнена процедура
254 | //
255 | // Возвращаемое значение:
256 | // ВнешнийОбъект, Число, Строка, Булево, Неопределено - Результат выполнения метода объекта
257 | //
258 | Функция ВыполнитьМетодОбъекта(Объект = Null, ИмяМетода, Параметры = Неопределено, Поле = Неопределено) Экспорт
259 |
260 | //@skip-warning
261 | Интерпритатор = ИнтерприаторСкриптов(Поле);
262 | Результат = Неопределено;
263 | ШаблонМетода = "Результат = Интерпритатор.methodCall(Объект, ""%1"", %2)";
264 | Выполнить(СтрШаблон(ШаблонМетода,ИмяМетода, СтрокаПередачиПараметровПоМассиву(Параметры)));
265 | ПроверитьОтвет(Результат);
266 | Возврат Результат.result;
267 |
268 | КонецФункции // ВыполнитьМетодОбъекта()
269 |
270 | // Считывает текущее значение объекта js. Если Объект не передан, то считывается свойство глобального контекста
271 | //
272 | // Параметры:
273 | // Объект - ВнешнийОбъект, Неопределено - Проверяемый контекст
274 | // ИмяСвойства - Строка - Имя проверяемого свойства
275 | // Поле - ПолеФормы - Поле формы, в котором будет выполнена процедура
276 | //
277 | // Возвращаемое значение:
278 | // ВнешнийОбъект, Число, Строка, Булево, Неопределено - Значение свойтсва объекта
279 | //
280 | Функция ЗначениеСвойстваОбъекта(Объект = null, ИмяСвойства, Поле = Неопределено) Экспорт
281 |
282 | Результат = ИнтерприаторСкриптов(Поле).propEval(Объект, ИмяСвойства);
283 | ПроверитьОтвет(Результат);
284 | Возврат Результат.result;
285 |
286 | КонецФункции // ЗначениеСвойстваОбъекта()
287 |
288 | // Перехватывает сбытие "ПриНажатии" поля формы. Используется для передачи управления из javascript в 1С
289 | //
290 | // Параметры:
291 | // ДанныеСобытия - ВнешнийОбъект - Значение переменной "ДанныеСобытия" из события "ПриНажатии" поля формы
292 | // Поле - ПолеФормы - Поле формы, в котором будет выполнена процедура
293 | //
294 | Процедура ПриНажатии(ДанныеСобытия, Поле = Неопределено) Экспорт
295 |
296 | ИнтерприаторСкриптов(Поле);
297 | Событие = ДанныеСобытия.Event;
298 | Если Событие.eventData1C <> Неопределено Тогда
299 | ОбработатьСобытиеИзСкрипта(Событие, Поле);
300 | КонецЕсли;
301 |
302 | КонецПроцедуры // ПриНажатии()
303 |
304 | // Описание
305 | //
306 | // Параметры:
307 | // РедактируемыйТекст - Строка
308 | // Владелец -
309 | // ОбработчикРезультата - ОписаниеОповещения
310 | // Язык - Строка
311 | Процедура РедактироватьТекст(РедактируемыйТекст, ОбработчикРезультата, Владелец = Неопределено, Язык = "bsl") Экспорт
312 | ПараметрыФормы = Новый Структура;
313 | ПараметрыФормы.Вставить("РедактируемыйТекст", РедактируемыйТекст);
314 | ПараметрыФормы.Вставить("Язык", Язык);
315 | ОткрытьФорму("Обработка.пс_РедакторКода.Форма.Форма", ПараметрыФормы, Владелец,,,,ОбработчикРезультата);
316 | КонецПроцедуры
317 |
318 | #КонецОбласти
319 |
320 | #Область СозданиеОбъектов
321 |
322 | // Создаёт новый массив javascript
323 | //
324 | // Параметры:
325 | // Поле - ПолеФормы - Поле формы, в котором будет выполнена процедура
326 | //
327 | // Возвращаемое значение:
328 | // ВнешнийОбъект - Ссылка на массив js
329 | //
330 | Функция НовыйМассив(Поле = Неопределено)
331 |
332 | Возврат ВыполнитьКоманду("[]", Поле);
333 |
334 | КонецФункции // НовыйМассив()
335 |
336 | // Создаёт новый object в javasript
337 | //
338 | // Параметры:
339 | // Поле - ПолеФормы - Поле формы, в котором будет выполнена процедура
340 | //
341 | // Возвращаемое значение:
342 | // ВнешнийОбъект - Ссылка на объект js
343 | //
344 | Функция НовыйОбъект(Поле = Неопределено)
345 |
346 | Возврат ВыполнитьКоманду("newObject()", Поле);
347 |
348 | КонецФункции // НовыйОбъект()
349 |
350 | // Создаёт новый массив и присваивает ему имя. Выполняется в глобальном контексте
351 | //
352 | // Параметры:
353 | // Имя - Строка - Имя создаваемого массива
354 | // Поле - ПолеФормы - Поле формы, в котором будет выполнена процедура
355 | //
356 | // Возвращаемое значение:
357 | // ВнешнийОбъект - Ссылка на массив js
358 | //
359 | Функция НовыйИменованныйМассив(Имя = "", Поле = Неопределено) Экспорт
360 |
361 | Массив = НовыйМассив(Поле);
362 | Если Не ПустаяСтрока(Имя) Тогда
363 | ИменованиеОбъекта(Имя, Массив, Поле);
364 | КонецЕсли;
365 | Возврат Массив;
366 |
367 | КонецФункции // НовыйИменованныйМассив()
368 |
369 | // Создаёт новый object и присваивает ему имя. Выполняется в глобальном контексте
370 | //
371 | // Параметры:
372 | // Имя - Строка - Имя создаваемого объекта
373 | // Поле - ПолеФормы - Поле формы, в котором будет выполнена процедура
374 | //
375 | // Возвращаемое значение:
376 | // ВнешнийОбъект - Ссылка на объект js
377 | //
378 | Функция НовыйИменованныйОбъект(Имя = "", Поле = Неопределено) Экспорт
379 |
380 | Объект = НовыйОбъект(Поле);
381 | Если Не ПустаяСтрока(Имя) Тогда
382 | ИменованиеОбъекта(Имя, Объект, Поле);
383 | КонецЕсли;
384 | Возврат Объект;
385 |
386 | КонецФункции // НовыйИменованныйОбъект()
387 |
388 | // Создаёт новую функцию js.
389 | //
390 | // Параметры:
391 | // Имя - Строка - Имя, которое будет присвоено функции
392 | // ОпределениеМетода - Строка - текст создаваемой процедуры
393 | // Пример: "function(a) { alert(a)}"
394 | // Поле - ПолеФормы - Поле формы, в котором будет создана функция
395 | //
396 | // Возвращаемое значение:
397 | // ВнешнийОбъект - ссылка на созданную функцию js
398 | //
399 | Функция НовыйМетод(Имя = "", ОпределениеМетода, Поле = Неопределено) Экспорт
400 |
401 | Метод = ВыполнитьКоманду(ОпределениеМетода, Поле);
402 | Если Не ПустаяСтрока(Имя) Тогда
403 | ИменованиеОбъекта(Имя, Метод);
404 | КонецЕсли;
405 | Возврат Метод;
406 |
407 | КонецФункции // НовыйМетод()
408 |
409 | // Присваивает имя переданному объекту js. Имя присваивается в глобальном контексте
410 | //
411 | // Параметры:
412 | // Имя - Строка - Имя, которое будет присвоено объекту
413 | // Объект - ВнешнийОбъект - ссылка на объект js, которому необходимо дать имя
414 | // Поле - ПолеФормы - Поле формы, в котором будет выполнена процедура
415 | //
416 | Процедура ИменованиеОбъекта(Имя, Объект, Поле = Неопределено) Экспорт
417 |
418 | Результат = ИнтерприаторСкриптов(Поле).giveName(Имя, Объект);
419 | ПроверитьОтвет(Результат);
420 |
421 | КонецПроцедуры // ИменованиеОбъекта()
422 |
423 | #КонецОбласти
424 |
425 | #Область WebSocket
426 |
427 | // Создаёт новый объект вебсокет. Добавляет обработчики событий, если они переданы
428 | //
429 | // Параметры:
430 | // УРЛ - Строка - строка для подключения к WebSocket серверу
431 | // Протокол - Строка - Протокол клиента, используемый при обмене.
432 | // Используется в случае если сервер поддерживает несколько протоколов
433 | // ИмяПеременной - Строка - имя, которое будет присвоено созданному объекту
434 | // ОбработчикСоединение - ОписаниеОповещения - обработчик, который будет вызван при возникновении события "connection"
435 | // ОбработчикОшибки - ОписаниеОповещения - обработчик, который будет вызван при возникновении события "error"
436 | // ОбработчикСообщения - ОписаниеОповещения - обработчик, который будет вызван при возникновении события "message"
437 | // ОбработчикЗакрытия - ОписаниеОповещения - обработчик, который будет вызван при возникновении события "close"
438 | // Поле - ПолеФормы - Поле формы, в котором будет выполнена процедура
439 | //
440 | // Возвращаемое значение:
441 | // ВнешнийОбъект - Ссылка на новый объект js WebSocket
442 | //
443 | Функция НовыйВебСокет(УРЛ, Протокол = "", ИмяПеременной = "", ОбработчикСоединение = Неопределено
444 | ,ОбработчикОшибки = Неопределено, ОбработчикСообщения = Неопределено
445 | ,ОбработчикЗакрытия = Неопределено , Поле = Неопределено) Экспорт
446 |
447 | Шаблон = ?(Протокол = "", "new WebSocket('%1') %2","new WebSocket('%1' , '%2')");
448 | Сокет = ВыполнитьКоманду(СтрШаблон(Шаблон, УРЛ, Протокол), Поле);
449 | Если Не ПустаяСтрока(ИмяПеременной) Тогда
450 | ИменованиеОбъекта(ИмяПеременной, Сокет, Поле);
451 | КонецЕсли;
452 | Если Не ОбработчикСоединение = Неопределено Тогда
453 | Если СтатусСокета(Сокет, Поле) = 1 Тогда
454 | ВыполнитьОбработкуОповещения(ОбработчикСоединение, Истина);
455 | КонецЕсли;
456 | СокетДобавитьОбработчикСоединения(Сокет, ОбработчикСоединение, Поле);
457 | КонецЕсли;
458 | Если Не ОбработчикОшибки = Неопределено Тогда
459 | СокетДобавитьОбработчикОшибки(Сокет, ОбработчикОшибки, Поле);
460 | КонецЕсли;
461 | Если Не ОбработчикСообщения = Неопределено Тогда
462 | СокетДобавитьОбработчикСообщения(Сокет, ОбработчикСообщения, Поле);
463 | КонецЕсли;
464 | Если Не ОбработчикЗакрытия = Неопределено Тогда
465 | СокетДобавитьОбработчикЗакрытия(Сокет, ОбработчикЗакрытия, Поле);
466 | КонецЕсли;
467 | Возврат Сокет;
468 |
469 | КонецФункции // НовыйВебСокет()
470 |
471 | // Возвращает строковое представление текущего состояния веб сокета
472 | //
473 | // Параметры:
474 | // ВебСокет - ВнешнийОбъект - ссылка на объект js с типом WebSocket
475 | // Поле - ПолеФормы - Поле формы, в котором будет выполнена процедура
476 | //
477 | // Возвращаемое значение:
478 | // Строка - текущий статус вебсокета
479 | //
480 | Функция СтатусСокета(ВебСокет, Поле = Неопределено) Экспорт
481 |
482 | Статус = ЗначениеСвойстваОбъекта(ВебСокет, "readyState", Поле);
483 | Если Статус = 0 Тогда
484 | Возврат "Соединение";
485 | ИначеЕсли Статус = 1 Тогда
486 | Возврат "Открыто";
487 | ИначеЕсли Статус = 2 Тогда
488 | Возврат "Закрывается";
489 | ИначеЕсли Статус = 3 Тогда
490 | Возврат "Закрыто";
491 | КонецЕсли;
492 |
493 | КонецФункции // СтатусСокета()
494 |
495 | // Закрывает текущее соединение WebSocket
496 | //
497 | // Параметры:
498 | // ВебСокет - ВнешнийОбъект - ссылка на объект js с типом WebSocket
499 | // Поле - ПолеФормы - Поле формы, в котором будет выполнена процедура
500 | //
501 | // Возвращаемое значение:
502 | // Неопределено - Возвращает результат метода WebSocket.close
503 | //
504 | Функция ЗакрытьСокет(ВебСокет, Поле = Неопределено) Экспорт
505 |
506 | Возврат ВыполнитьМетодОбъекта(ВебСокет, "close");
507 |
508 | КонецФункции // ЗакрытьСокет()
509 |
510 | // Посылает данные на сервер
511 | //
512 | // Параметры:
513 | // ВебСокет - ВнешнийОбъект - ссылка на объект js с типом WebSocket
514 | // Данные - Строка - Сообщение, которое будет отправлено на сервер методом WebSocket.send
515 | // Поле - ПолеФормы - Поле формы, в котором будет выполнена процедура
516 | //
517 | // Возвращаемое значение:
518 | // Неопределено - Возвращает результат метода WebSocket.send
519 | //
520 | Функция СокетПослатьДанные(ВебСокет, Данные = "", Поле = Неопределено) Экспорт
521 |
522 | ПараметрыМетода = Новый Массив;
523 | ПараметрыМетода.Добавить(Данные);
524 | Возврат ВыполнитьМетодОбъекта(ВебСокет, "send", ПараметрыМетода, Поле);
525 |
526 | КонецФункции // СокетПослатьДанные()
527 |
528 | // Добавляет подписку на событие "connection" объекта веб сокет.
529 | //
530 | // Параметры:
531 | // ВебСокет - ВнешнийОбъект - ссылка на объект js с типом WebSocket
532 | // Обработчик - ОписаниеОповещения - процедура, которая будет выполнена при возникновении события "connection"
533 | // Поле - ПолеФормы - Поле формы, в котором будет выполнена процедура
534 | //
535 | // Возвращаемое значение:
536 | // Неопределено -
537 | //
538 | Функция СокетДобавитьОбработчикСоединения(ВебСокет, Обработчик, Поле = Неопределено) Экспорт
539 |
540 | Возврат ДобавитьОбработчикСобытия(ВебСокет, "open", Обработчик, Поле);
541 |
542 | КонецФункции // СокетДобавитьОбработчикСоединения()
543 |
544 | // Добавляет подписку на событие "error" объекта веб сокет.
545 | //
546 | // Параметры:
547 | // ВебСокет - ВнешнийОбъект - ссылка на объект js с типом WebSocket
548 | // Обработчик - ОписаниеОповещения - процедура, которая будет выполнена при возникновении события "error"
549 | // Поле - ПолеФормы - Поле формы, в котором будет выполнена процедура
550 | //
551 | // Возвращаемое значение:
552 | // Неопределено -
553 | //
554 | Функция СокетДобавитьОбработчикОшибки(ВебСокет, Обработчик, Поле = Неопределено) Экспорт
555 |
556 | Возврат ДобавитьОбработчикСобытия(ВебСокет, "error", Обработчик, Поле);
557 |
558 | КонецФункции // СокетДобавитьОбработчикОшибки()
559 |
560 | // Добавляет подписку на событие "message" объекта веб сокет.
561 | //
562 | // Параметры:
563 | // ВебСокет - ВнешнийОбъект - ссылка на объект js с типом WebSocket
564 | // Обработчик - ОписаниеОповещения - процедура, которая будет выполнена при возникновении события "message"
565 | // Поле - ПолеФормы - Поле формы, в котором будет выполнена процедура
566 | //
567 | // Возвращаемое значение:
568 | // Неопределено -
569 | //
570 | Функция СокетДобавитьОбработчикСообщения(ВебСокет, Обработчик, Поле = Неопределено) Экспорт
571 |
572 | Возврат ДобавитьОбработчикСобытия(ВебСокет, "message", Обработчик, Поле);
573 |
574 | КонецФункции // СокетДобавитьОбработчикСообщения()
575 |
576 | // Добавляет подписку на событие "close" объекта веб сокет.
577 | //
578 | // Параметры:
579 | // ВебСокет - ВнешнийОбъект - ссылка на объект js с типом WebSocket
580 | // Обработчик - ОписаниеОповещения - процедура, которая будет выполнена при возникновении события "close"
581 | // Поле - ПолеФормы - Поле формы, в котором будет выполнена процедура
582 | //
583 | // Возвращаемое значение:
584 | // Неопределено -
585 | //
586 | Функция СокетДобавитьОбработчикЗакрытия(ВебСокет, Обработчик, Поле = Неопределено) Экспорт
587 |
588 | Возврат ДобавитьОбработчикСобытия(ВебСокет, "close", Обработчик, Поле);
589 |
590 | КонецФункции // СокетДобавитьОбработчикЗакрытия()
591 |
592 | #КонецОбласти
593 |
594 | #Область ОбработчикиОжидания
595 |
596 | // Добаляет вызов функции в очередь. Будет выполнен через указанное количество милисекунд
597 | // Добавляет вызов функцией setTimeout
598 | //
599 | // Параметры:
600 | // ОбъектФункцияИлиОпределение - ВнешнийОбъект, Строка - сслыка на функцию или строка
601 | // , в результате вычисления которого получит ссылку на объект функции (ВнешнийОбъект)
602 | // Параметры - Массив, Неопределено - Параметры функции, с которыми будет вызвана функция
603 | // Таймаут - Число - через сколько милисекунд будет вызвана функция
604 | // Поле - ПолеФормы - Поле формы, в котором будет выполнена процедура
605 | //
606 | // Возвращаемое значение:
607 | // Число - Идентификатор добавленного таймаута
608 | //
609 | Функция ДобавитьОбработчикОжиданияВнутр(ОбъектФункцияИлиОпределение, Параметры = Неопределено
610 | , Таймаут = 0, Поле = Неопределено) Экспорт
611 |
612 | Если ТипЗнч(ОбъектФункцияИлиОпределение) = Тип("Строка") Тогда
613 | ОбъектФункцияИлиОпределение = НовыйМетод(,ОбъектФункцияИлиОпределение, Поле);
614 | КонецЕсли;
615 | Если Не ТипЗнч(ОбъектФункцияИлиОпределение) = Тип("ВнешнийОбъект") Тогда
616 | ВызватьИсключение "Ожидается внешний объект сооветствующий функции или определение анонимной функции";
617 | КонецЕсли;
618 |
619 | МенеджерОжиданий = ВыполнитьКоманду("timerManager", Поле);
620 | ПараметрыМетода = Новый Массив;
621 | ПараметрыМетода.Добавить(ОбъектФункцияИлиОпределение);
622 | ПараметрыМетода.Добавить(Таймаут);
623 | Если Параметры <> Неопределено И Параметры.Количество() Тогда
624 | Для Каждого текПараметр Из Параметры Цикл
625 | ПараметрыМетода.Добавить(текПараметр);
626 | КонецЦикла;
627 | КонецЕсли;
628 | Возврат ВыполнитьМетодОбъекта(МенеджерОжиданий, "addTimer", ПараметрыМетода, Поле);
629 |
630 | КонецФункции // ДобавитьОбработчикОжиданияВнутр()
631 |
632 | // Возвращаем массив (js) активных обработчиков ожидания.
633 | //
634 | // Параметры:
635 | // Поле - ПолеФормы - Поле формы, в котором будет выполнена процедура
636 | //
637 | // Возвращаемое значение:
638 | // ВнешнийОбъект - Ссылка на массив javascript содержащий идентификаторы активных обработчиков ожиданий.
639 | //
640 | Функция ПолучитьАктивныеОбработчикиОжиданияВнутр(Поле = Неопределено) Экспорт
641 |
642 | Возврат ВыполнитьКоманду("timerManager.getTimers()", Поле);
643 |
644 | КонецФункции // ПолучитьАктивныеОбработчикиОжиданияВнутр()
645 |
646 | // Добавляет вызов функции в очередь. Будет вызываться каждые {Таймаут} милисекунд
647 | // Добавляет вызов функцией setInterval
648 | //
649 | // Параметры:
650 | // ОбъектФункцияИлиОпределение - ВнешнийОбъект, Строка - сслыка на функцию или строка
651 | // , в результате вычисления которого получит ссылку на объект функции (ВнешнийОбъект)
652 | // Параметры - Массив, Неопределено - Параметры функции, с которыми будет вызвана функция
653 | // Таймаут - Число - через сколько милисекунд будет вызвана функция
654 | // Поле - ПолеФормы - Поле формы, в котором будет выполнена процедура
655 | //
656 | // Возвращаемое значение:
657 | // Число - Идентификатор добавленного "интервала"
658 | //
659 | Функция ДобавитьОбработчикПовторенияВнутр(ОбъектФункцияИлиОпределение, Параметры = Неопределено
660 | , Таймаут = 0, Поле = Неопределено) Экспорт
661 |
662 | Если ТипЗнч(ОбъектФункцияИлиОпределение) = Тип("Строка") Тогда
663 | ОбъектФункцияИлиОпределение = НовыйМетод(,ОбъектФункцияИлиОпределение, Поле);
664 | КонецЕсли;
665 | Если Не ТипЗнч(ОбъектФункцияИлиОпределение) = Тип("ВнешнийОбъект") Тогда
666 | ВызватьИсключение "Ожидается внешний объект сооветствующий функции или определение анонимной функции";
667 | КонецЕсли;
668 |
669 | МенеджерОжиданий = ВыполнитьКоманду("timerManager", Поле);
670 | ПараметрыМетода = Новый Массив;
671 | ПараметрыМетода.Добавить(ОбъектФункцияИлиОпределение);
672 | ПараметрыМетода.Добавить(Таймаут);
673 | Если Параметры <> Неопределено И Параметры.Количество() Тогда
674 | Для Каждого текПараметр Из Параметры Цикл
675 | ПараметрыМетода.Добавить(текПараметр);
676 | КонецЦикла;
677 | КонецЕсли;
678 | Возврат ВыполнитьМетодОбъекта(МенеджерОжиданий, "addInterval", ПараметрыМетода, Поле);
679 |
680 | КонецФункции // ДобавитьОбработчикПовторенияВнутр()
681 |
682 | // Возвращаем массив (js) активных "интервалов"
683 | //
684 | // Параметры:
685 | // Поле - ПолеФормы - Поле формы, в котором будет выполнена процедура
686 | //
687 | // Возвращаемое значение:
688 | // ВнешнийОбъект - Ссылка на массив javascript содержащий идентификаторы активных "интервалов".
689 | //
690 | Функция ПолучитьАктивныеОбработчикиПовторенияВнутр(Поле = Неопределено) Экспорт
691 |
692 | Возврат ВыполнитьКоманду("timerManager.getIntervals()", Поле);
693 |
694 | КонецФункции // ПолучитьАктивныеОбработчикиПовторенияВнутр()
695 |
696 | // Добавляет подписку к переданному объекту
697 | //
698 | // Параметры:
699 | // ОбъектИлиКодПолученияОбъекта - ВнешнийОбъект, Строка - Ссылка на объект подписки, или выражение,
700 | // которое вернёт ссылку на объект подписки
701 | // МетодИлиОпределениеМетода - ВнешнийОбъект, Строка - Ссылка на метод, или выражение
702 | // ТипСобытия - Строка - Тип события, на которое будет добавлена подписка
703 | // ИспользоватьЗахват - Булево - "useCapture"
704 | // Поле - ПолеФормы - Поле формы, в котором будет выполнена процедура
705 | //
706 | // Возвращаемое значение:
707 | // Неопределено -
708 | //
709 | Функция ДобавитьПодпискуНаСобытияВнутр(ОбъектИлиКодПолученияОбъекта, МетодИлиОпределениеМетода
710 | , ТипСобытия = "click", ИспользоватьЗахват = Ложь, Поле = Неопределено) Экспорт
711 |
712 | Если ТипЗнч(ОбъектИлиКодПолученияОбъекта) = Тип("Строка") Тогда
713 | ОбъектИлиКодПолученияОбъекта = ВыполнитьКоманду(ОбъектИлиКодПолученияОбъекта, Поле);
714 | КонецЕсли;
715 | Если Не ТипЗнч(ОбъектИлиКодПолученияОбъекта) = Тип("ВнешнийОбъект") Тогда
716 | ВызватьИсключение "Ожидается внешний объект или определение получения элемента html";
717 | КонецЕсли;
718 |
719 | Если ТипЗнч(МетодИлиОпределениеМетода) = Тип("Строка") Тогда
720 | МетодИлиОпределениеМетода = ВыполнитьКоманду(МетодИлиОпределениеМетода, Поле);
721 | КонецЕсли;
722 | Если Не ТипЗнч(МетодИлиОпределениеМетода) = Тип("ВнешнийОбъект") Тогда
723 | ВызватьИсключение "Ожидается внешний объект или определение получения элемента html";
724 | КонецЕсли;
725 |
726 | МенеджерСобытий = ВыполнитьКоманду("eventManager", Поле);
727 | ПараметрыМетода = Новый Массив;
728 | ПараметрыМетода.Добавить(ОбъектИлиКодПолученияОбъекта);
729 | ПараметрыМетода.Добавить(ТипСобытия);
730 | ПараметрыМетода.Добавить(МетодИлиОпределениеМетода);
731 | ПараметрыМетода.Добавить(ИспользоватьЗахват);
732 | Возврат ВыполнитьМетодОбъекта(МенеджерСобытий, "addEventListener", ПараметрыМетода, Поле);
733 |
734 | КонецФункции // ДобавитьПодпискуНаСобытияВнутр()
735 |
736 | // Возвращаем массив (js) активных подписок на события переданного объекта
737 | //
738 | // Параметры:
739 | // Объект - ВнешнийОбъект - Ссылка на объект js
740 | // Поле - ПолеФормы - Поле формы, в котором будет выполнена процедура
741 | //
742 | // Возвращаемое значение:
743 | // ВнешнийОбъект - Ссылка на массив javascript содержащий подписки на события переданного объекта
744 | //
745 | Функция ПолучитьАктивныеПодпискиНаСобытияВнутр(Объект = Неопределено, Поле = Неопределено) Экспорт
746 |
747 | Результат = ИнтерприаторСкриптов(Поле).adapter.eventManager.getEventListeners(Объект);
748 | ПроверитьОтвет(Результат);
749 | Возврат Результат.result;
750 |
751 | КонецФункции // ПолучитьАктивныеПодпискиНаСобытияВнутр()
752 |
753 | #КонецОбласти
754 |
755 | #Область СлужебныеФункции
756 |
757 | // Возвращает ссылку на объект window, в котором доступны метода глобального контекста
758 | //
759 | // Параметры:
760 | // Поле - ПолеФормы - Поле формы, в котором будет выполнена процедура
761 | // Если поле не передано, то будет использовано поле по умолчанию.
762 | //
763 | // Возвращаемое значение:
764 | // ВнешнийОбъект - Ссылка на объект window
765 | //
766 | Функция ИнтерприаторСкриптов(Знач Поле = Неопределено) Экспорт
767 |
768 | Поле = ПолучитьПолеХТМЛ(Поле);
769 | Контекст = Поле.Документ.defaultView;
770 | Если Контекст = Неопределено Тогда
771 | Контекст = Поле.Документ.parentWindow;
772 | КонецЕсли;
773 | Возврат Контекст;
774 |
775 | КонецФункции // КонтекстВыполнения()
776 |
777 | // Возвращает описание доступного контекста переданной области видимости (объекта)
778 | //
779 | // Параметры:
780 | // ОбластьВидимости - ВнешнийОбъект, Неопределено - Исследуемая область видимости
781 | // Обновить - Булево - Если Ложь, то доступный контекст будет получен из кэша. Иначе будет прочитан.
782 | // Поле - ПолеФормы - Поле формы, в котором будет выполнена процедура
783 | //
784 | // Возвращаемое значение:
785 | // Соответствие - Описание доступного контекста
786 | //
787 | //@skip-warning
788 | Функция ПолучитьКонтекст(ОбластьВидимости = Null, Обновить = Ложь, Поле = Неопределено) Экспорт
789 |
790 | ИнтерприаторСкриптов(Поле);
791 | Кэш = пс_ПараметрыПриложения[Поле];
792 | Если Кэш = Неопределено Тогда
793 | Кэш = Новый Соответствие;
794 | КонецЕсли;
795 | Контекст = Кэш.Получить(ОбластьВидимости);
796 | Если Контекст = Неопределено Тогда
797 | Контекст = Новый Соответствие;
798 | КонецЕсли;
799 | #Если Не ВебКлиент Тогда
800 | Если Не Контекст.Количество() Или Обновить Тогда
801 | Контекст.Очистить();
802 | РезультатВыполненияСкрипта = ИнтерприаторСкриптов(Поле).adapter.getContext(ОбластьВидимости);
803 | Если РезультатВыполненияСкрипта.error <> Неопределено Тогда
804 | ВызватьИсключение СтрШаблон("{%1, %2} %3",РезультатВыполненияСкрипта.error.line, РезультатВыполненияСкрипта.error.column, РезультатВыполненияСкрипта.error.message);
805 | КонецЕсли;
806 | Чтение = Новый ЧтениеJSON;
807 | Чтение.УстановитьСтроку(РезультатВыполненияСкрипта.result);
808 | РезультатДесериализации = ПрочитатьJSON(Чтение, Ложь);
809 | Для Каждого текИмя Из РезультатДесериализации Цикл
810 | Если Не ЗначениеЗаполнено(ОбластьВидимости) Тогда
811 | текИмя.Вставить("Значение", ИнтерприаторСкриптов(Поле).adapter.eval(текИмя.name).result);
812 | Иначе
813 | текИмя.Вставить("Значение", текИмя.value);
814 | КонецЕсли;
815 | Контекст.Вставить(текИмя.name, текИмя);
816 | КонецЦикла;
817 | Кэш.Вставить(ОбластьВидимости, Контекст);
818 | пс_ПараметрыПриложения.Вставить(Поле, Кэш);
819 | КонецЕсли;
820 | #КонецЕсли
821 | Возврат Контекст;
822 |
823 | КонецФункции // ПолучитьКонтекст()
824 |
825 | // Обработчик событий javascript
826 | //
827 | // Параметры:
828 | // Событие - ВнешнийОбъект - Ссылка на событие.
829 | // Поле - ПолеФормы - Поле формы, в котором будет выполнена процедура
830 | //
831 | Функция ОбработатьСобытиеИзСкрипта(Событие, Поле)
832 |
833 | Данные = Событие.eventData1C;
834 | Если Данные.event = "showMessage" Тогда
835 | Сообщить(Данные.params);
836 | ИначеЕсли Данные.event = "trowError" Тогда
837 | ВызватьИсключение Данные.params;
838 | ИначеЕсли Данные.event = "eventLog" Тогда
839 | // СтруктураСобытия = ПолучитьКонтекст(Данные.params, Истина, Поле);
840 | // пс_СкриптыВызовСервера.ОбработкаСобытияЗаписьЖурналаРегистрации(СтруктураСобытия);
841 | ИначеЕсли Данные.event = "callback1C" Тогда
842 | Обработчик = ПолучитьКешПоля(КлючКешОбработчикаОповещения(Данные.params.idHandler), Поле);
843 | ВыполнитьОбработкуОповещения(Обработчик, Данные.params);
844 | //ИначеЕсли пс_ОбработкаСобытийСкриптовПереопределяемый.ОбработатьСобытие(Событие, Поле) Тогда
845 | // Иначе
846 | // Возврат ПользовательскаяОбработкаСобытий(Событие, Поле);
847 | КонецЕсли;
848 | Возврат Неопределено;
849 |
850 | КонецФункции // ОбработатьСобытиеИзСкрипта()
851 |
852 | // Проверяет ответ js. Если вернулась ошибка, то вызывает исключение с текстом
853 | //
854 | // Параметры:
855 | // Объект - ВнешнийОбъект - Объект, возвращаемый из js, для перехвала исключений
856 | //
857 | Процедура ПроверитьОтвет(Объект)
858 |
859 | Если Объект.error <> Неопределено Тогда
860 | ВызватьИсключение СтрШаблон("{%1, %2} %3",Объект.error.line, Объект.error.column, Объект.error.description);
861 | КонецЕсли;
862 |
863 | КонецПроцедуры // ПроверитьОтвет()
864 |
865 | // Возвращает строку, для передали параметров в вычисляемый метод с произвольным набором параметров
866 | //
867 | // Параметры:
868 | // МассивПараметров - Массив, Неопределено -
869 | //
870 | // Возвращаемое значение:
871 | // Строка - Строка для вызова метода и передачи в него переметров
872 | //
873 | //@skip-warning
874 | Функция СтрокаПередачиПараметровПоМассиву(МассивПараметров)
875 |
876 | ПараметрыСтрока = "";
877 | Если МассивПараметров <> Неопределено И МассивПараметров.Количество() > 0 Тогда
878 | Для Индекс = 0 По МассивПараметров.ВГраница() Цикл
879 | ПараметрыСтрока = ПараметрыСтрока + "Параметры[" + Индекс + "],";
880 | КонецЦикла;
881 | ПараметрыСтрока = Сред(ПараметрыСтрока, 1, СтрДлина(ПараметрыСтрока) - 1);
882 | КонецЕсли;
883 | Возврат ПараметрыСтрока;
884 |
885 | КонецФункции // СтрокаПередачиПараметровПоМассиву()
886 |
887 | // Возвращает форму владелец переданного элемента
888 | //
889 | // Параметры:
890 | // Поле - ПолеФормы
891 | //
892 | // Возвращаемое значение:
893 | // ФормаКлиентскогоПриложения
894 | //
895 | Функция НайтиФормуЭлемента(Поле)
896 |
897 | Родитель = Поле.Родитель;
898 | Если ТипЗнч(Родитель) = Тип("ФормаКлиентскогоПриложения") Тогда
899 | Возврат Родитель;
900 | Иначе
901 | Возврат НайтиФормуЭлемента(Родитель);
902 | КонецЕсли;
903 |
904 | КонецФункции // НайтиФормуЭлемента()
905 |
906 | // Возвращает поле хтмл по умолчанию, если поле не передано.
907 | //
908 | // Параметры:
909 | // Поле - ПолеФормы - Поле формы с видом поле хтмл
910 | //
911 | // Возвращаемое значение:
912 | // ПолеФормы -
913 | //
914 | Функция ПолучитьПолеХТМЛ(Поле = Неопределено)
915 | Если Поле = Неопределено Тогда
916 | Поле = ПолучитьПолеХТМЛПоУмолчанию();
917 | Если Поле = Неопределено Тогда
918 | ВызватьИсключение "Поле документа HTML не удалось определить";
919 | КонецЕсли;
920 | КонецЕсли;
921 | Возврат Поле;
922 | КонецФункции
923 |
924 | // Возвращает ключ обработчика для сохранения кэша
925 | //
926 | // Параметры:
927 | // ИД - Строка - Уникальный идентификатор обработчика оповещения
928 | //
929 | // Возвращаемое значение:
930 | // Строка - Ключ обработчика
931 | //
932 | Функция КлючКешОбработчикаОповещения(ИД)
933 | Возврат СтрШаблон("ОбработчикиОповещения.%1", ИД);
934 | КонецФункции
935 |
936 | // Добавляет подписку на события javascript, подключает к событию обработчик оповещения 1С
937 | //
938 | // Параметры:
939 | // ОбъектОтслеживания - ВнешнийОбъект - Ссылка на объект прослушки
940 | // Событие - Строка - событие js, на которое добавляется подписка
941 | // Обработчик - ОписаниеОповещения - Обработчик обработки события
942 | // Поле - ПолеФормы - Поле формы с видом поле хтмл
943 | //
944 | // Возвращаемое значение:
945 | // Неопределено -
946 | //
947 | Функция ДобавитьОбработчикСобытия(ОбъектОтслеживания, Событие, Обработчик, Поле = Неопределено) Экспорт
948 | ИДОбработчика = Новый УникальныйИдентификатор;
949 |
950 | ИДДляКэш = КлючКешОбработчикаОповещения(ИДОбработчика);
951 | ПоместитьКешПоля(ИДДляКэш, Обработчик, Поле);
952 | ШаблонМетода = "(eventData) => { eventData.idHandler = '%1'; return sendEvent('callback1C', eventData); }";
953 | Скрипт = ВыполнитьКоманду(СтрШаблон(ШаблонМетода, ИДОбработчика), Поле);
954 | Возврат ДобавитьПодпискуНаСобытияВнутр(ОбъектОтслеживания, Скрипт, Событие, , Поле);
955 |
956 | КонецФункции // ДобавитьОбработчикСобытия()
957 |
958 | #КонецОбласти
959 |
960 |
961 |
--------------------------------------------------------------------------------
/src/CommonModules/пс_СкриптыКлиент/пс_СкриптыКлиент.mdo:
--------------------------------------------------------------------------------
1 |
2 |
3 | пс_СкриптыКлиент
4 |
5 | ru
6 | Скрипты клиент
7 |
8 | true
9 | true
10 |
11 |
--------------------------------------------------------------------------------
/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 | app = Обработки.пс_РедакторКода.ПолучитьМакет("app");
23 | // отключаем проверку парава "Вывод"
24 | УстановитьПривилегированныйРежим(Истина);
25 | Чтение = Новый ЧтениеТекста(app.ОткрытьПотокДляЧтения(), КодировкаТекста.UTF8);
26 | ТекстСкрипта = Чтение.Прочитать();
27 | Чтение.Закрыть();
28 |
29 | ТекстСкрипта = СтрЗаменить(ТекстСкрипта, "[ts_worker]"
30 | , пс_СкриптыВызовСервера.НавигационнаяойСсылкаВременногоХранилища(АдресВоркераПоИмени("ts_worker")));
31 | ТекстСкрипта = СтрЗаменить(ТекстСкрипта, "[editor_worker]"
32 | , пс_СкриптыВызовСервера.НавигационнаяойСсылкаВременногоХранилища(АдресВоркераПоИмени("editor_worker")));
33 | ТекстСкрипта = СтрЗаменить(ТекстСкрипта, "[html_worker]"
34 | , пс_СкриптыВызовСервера.НавигационнаяойСсылкаВременногоХранилища(АдресВоркераПоИмени("html_worker")));
35 | ТекстСкрипта = СтрЗаменить(ТекстСкрипта, "[json_worker]"
36 | , пс_СкриптыВызовСервера.НавигационнаяойСсылкаВременногоХранилища( АдресВоркераПоИмени("json_worker")));
37 | ТекстСкрипта = СтрЗаменить(ТекстСкрипта, "[css_worker]"
38 | , пс_СкриптыВызовСервера.НавигационнаяойСсылкаВременногоХранилища(АдресВоркераПоИмени("css_worker")));
39 |
40 | Поток = Новый ПотокВПамяти;
41 | Запись = Новый ЗаписьТекста(Поток, КодировкаТекста.UTF8);
42 | Запись.Записать(ТекстСкрипта);
43 | Запись.Закрыть();
44 | Возврат ПоместитьДанныеВоВременноеХранилище(Поток.ЗакрытьИПолучитьДвоичныеДанные());
45 |
46 | КонецФункции
47 |
48 | Функция АдресРедактораКода() Экспорт
49 |
50 | АдресСкрипта = АдресСкриптаРедактораКода();
51 | Поток = Новый ПотокВПамяти;
52 | // отключаем проверку парава "Вывод"
53 | УстановитьПривилегированныйРежим(Истина);
54 | ХТМЛРедактора = Обработки.пс_РедакторКода.ПолучитьМакет("index");
55 | ХТМЛРедактора.УстановитьТекст(СтрЗаменить(ХТМЛРедактора.ПолучитьТекст()
56 | , "[АдресСкрипта]", пс_СкриптыВызовСервера.НавигационнаяойСсылкаВременногоХранилища(АдресСкрипта)));
57 | ХТМЛРедактора.Записать(Поток);
58 | АдресРедактора = ПоместитьДанныеВоВременноеХранилище(Поток.ЗакрытьИПолучитьДвоичныеДанные());
59 | пс_СкриптыВызовСервера.ПоместитьВСерверныйКэш("АдресРедактораКода", АдресРедактора);
60 | Возврат АдресРедактора;
61 |
62 | КонецФункции
63 |
64 | Функция ПоместитьДанныеВоВременноеХранилище(Данные)
65 | Возврат ПоместитьВоВременноеХранилище(Данные, Новый УникальныйИдентификатор);
66 | КонецФункции
67 |
68 | Функция АдресВоркераПоИмени(Имя)
69 |
70 | Воркер = Обработки.пс_РедакторКода.ПолучитьМакет(Имя);
71 | Возврат ПоместитьДанныеВоВременноеХранилище(Воркер);
72 |
73 | КонецФункции
74 |
--------------------------------------------------------------------------------
/src/CommonModules/пс_СкриптыСерверПовтИсп/пс_СкриптыСерверПовтИсп.mdo:
--------------------------------------------------------------------------------
1 |
2 |
3 | пс_СкриптыСерверПовтИсп
4 |
5 | ru
6 | Общего назначения сервер повт исп
7 |
8 | true
9 | true
10 | true
11 | DuringSession
12 |
13 |
--------------------------------------------------------------------------------
/src/CommonPictures/пс_РазделСкрипты/Picture.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DimaSSV/JavaScriptControl/1c3af640a39881dd70010c5dd5bd78436ae3afd7/src/CommonPictures/пс_РазделСкрипты/Picture.png
--------------------------------------------------------------------------------
/src/CommonPictures/пс_РазделСкрипты/пс_РазделСкрипты.mdo:
--------------------------------------------------------------------------------
1 |
2 |
3 | пс_РазделСкрипты
4 |
5 | ru
6 | Скрипты (JS)
7 |
8 | true
9 | true
10 |
11 |
--------------------------------------------------------------------------------
/src/CommonTemplates/пс_ПодключаемыеСкрипты/Template.txt:
--------------------------------------------------------------------------------
1 |
2 | 'use strict';
3 |
4 |
5 | // переопределение подписок на события
6 | (() => {
7 | EventTarget.prototype.eventListenerList = {};
8 | EventTarget.prototype._addEventListener = EventTarget.prototype.addEventListener;
9 |
10 | EventTarget.prototype.addEventListener = function (type, listener, useCapture) {
11 | var target;
12 | if (!this) {
13 | target = self;
14 | } else {
15 | target = this;
16 | };
17 | target._addEventListener(type, listener, useCapture);
18 | if (!EventTarget.prototype.eventListenerList[target])
19 | EventTarget.prototype.eventListenerList[target] = {};
20 |
21 | if (!EventTarget.prototype.eventListenerList[target][type])
22 | EventTarget.prototype.eventListenerList[target][type] = [];
23 |
24 | EventTarget.prototype.eventListenerList[target][type].push({
25 | func: listener,
26 | remove: function () {
27 | target.removeEventListener(type, this.func, useCapture);
28 | }
29 | });
30 | };
31 |
32 | EventTarget.prototype._removeEventListener = EventTarget.prototype.removeEventListener;
33 | EventTarget.prototype.removeEventListener = function (type, listener, useCapture) {
34 | var target;
35 | if (!this) {
36 | target = self;
37 | } else {
38 | target = this;
39 | };
40 | if (!EventTarget.prototype.eventListenerList[target])
41 | EventTarget.prototype.eventListenerList[target] = {};
42 |
43 | if (!EventTarget.prototype.eventListenerList[target][type])
44 | EventTarget.prototype.eventListenerList[target][type] = [];
45 | target._removeEventListener(type, listener, useCapture);
46 | target.eventListenerList[target][type].splice(target.eventListenerList[target][type].indexOf(listener), 1);
47 | };
48 | })();
49 |
50 | // класс для управления событиями
51 | self.adapter = {
52 | addEventListener: function (target, type, listener, useCapture) {
53 | try {
54 | return resultSuccess(target.addEventListener(type, listener, useCapture));
55 | } catch (error) {
56 | return resultError(error);
57 | }
58 | },
59 | getEventListeners: function (target) {
60 | if (!target) {
61 | target = self;
62 | }
63 | if (!target.eventListenerList[target]) {
64 | target.eventListenerList[target] = {}
65 | }
66 | try {
67 | return resultSuccess(target.eventListenerList[target]);
68 | } catch (error) {
69 | return resultError(error);
70 | }
71 | }
72 | }
73 |
74 | // класс для управления обработчиками ожидания
75 | self.adapter.timerManager = {
76 | timers : [],
77 | intervals : [],
78 | addTimer(callback, timeout, ...args) {
79 | try {
80 | var timer, that = this;
81 | timer = setTimeout(function () {
82 | that.removeTimer(timer);
83 | callback(...args);
84 | }, timeout);
85 | this.timers.push({
86 | id: timer,
87 | func: callback,
88 | timeout: timeout,
89 | remove: function () {
90 | that.removeTimer(timer)
91 | }
92 | });
93 | return resultSuccess(timer);
94 | } catch (error) {
95 | return resultError(error)
96 | }
97 |
98 | },
99 | addInterval(callback, timeout, ...args) {
100 | try {
101 | var interval, that = this;
102 | interval = setInterval(function () {
103 | callback(...args);
104 | }, timeout);
105 | this.intervals.push({
106 | id: interval,
107 | func: callback,
108 | timeout: timeout,
109 | remove: function () {
110 | that.removeInterval(interval)
111 | }
112 | });
113 | return resultSuccess(interval);
114 | } catch (error) {
115 | return resultError(error)
116 | }
117 | },
118 | removeTimer(timer) {
119 | clearTimeout(timer);
120 | this.timers.splice(this.timers.indexOf(this.timers.find(el => el.id === timer)), 1);
121 | },
122 | removeInterval(interval) {
123 | clearInterval(interval);
124 | this.intervals.splice(this.intervals.indexOf(this.intervals.find(el => el.id === interval)), 1);
125 | },
126 | getTimers() {
127 | return this.timers;
128 | },
129 | getIntervals() {
130 | return this.intervals;
131 | }
132 | }
133 |
134 |
135 |
136 | self.adapter.eval = (paramToEval) => {
137 | try {
138 | return resultSuccess(eval(paramToEval))
139 | } catch (error) {
140 | error.description = error.toString()
141 | return resultError(error)
142 | }
143 | }
144 |
145 | self.adapter.giveName = (name, object) => {
146 | try {
147 | self[name] = object
148 | return resultSuccess(object)
149 | } catch (error) {
150 | error.description = error.toString()
151 | return resultError(error)
152 | }
153 | }
154 |
155 | self.adapter.newObject = () => {
156 | return {}
157 | }
158 |
159 | self.adapter.sendEvent = (eventName, eventParams) => {
160 | let newEvent = new MouseEvent('click')
161 | newEvent.eventData1C = { event: eventName, params: eventParams }
162 | return dispatchEvent(newEvent)
163 | }
164 |
165 | self.adapter.log1C = (message, eventName, level = 'info') => {
166 | return sendEvent('eventLog', { message: message, eventName: eventName, level: level })
167 | }
168 |
169 | self.adapter.error1C = (errorMessage) => {
170 | return sendEvent('trowError', errorMessage)
171 | }
172 |
173 | self.adapter.message1C = (message) => {
174 | return sendEvent('showMessage', message)
175 | }
176 |
177 | self.adapter.Dir = (object) => {
178 | try {
179 | stuff = [];
180 | for (const s in object) {
181 | stuff.push(s);
182 | }
183 | stuff.sort();
184 | return resultSuccess(stuff);
185 | } catch (error) {
186 | error.description = error.toString()
187 | return resultError(error)
188 | }
189 |
190 | }
191 |
192 | self.adapter.objToString = (obj) => {
193 | try {
194 | return resultSuccess(obj.toString())
195 | } catch (error) {
196 | error.description = error.toString()
197 | return resultError(error)
198 | }
199 | }
200 |
201 | self.adapter.getContext = (obj = null) => {
202 |
203 | if (obj === null) {
204 | obj = self
205 | }
206 | let response = [];
207 | try {
208 | for (const key in obj) {
209 | if (key != 'webkitStorageInfo') {
210 | try {
211 | response.push({ name: key, type: typeof obj[key], value: (!obj[key]) ? null : obj[key].toString() })
212 | } catch (error) {
213 | //return resultError(error)
214 | }
215 | }
216 | }
217 | return resultSuccess(JSON.stringify(response))
218 | } catch (error) {
219 | error.description = error.toString()
220 | return resultError(error)
221 | }
222 | }
223 |
224 | self.adapter.methodCall = (object = null, methodName, ...params) => {
225 | if (object === null) {
226 | object = self
227 | }
228 | try {
229 | return resultSuccess(object[methodName](...params))
230 | } catch (error) {
231 | error.description = error.toString()
232 | return resultError(error)
233 | }
234 | }
235 |
236 | self.adapter.propEval = (object = null, propertyName) => {
237 | if (object === null) {
238 | object = self
239 | }
240 | try {
241 | return resultSuccess(object[propertyName])
242 | } catch (error) {
243 | error.description = error.toString()
244 | return resultError(error)
245 | }
246 | }
247 |
248 | self.adapter.getFullHTML = () => {
249 | return document.getElementsByTagName("HTML")[0].innerHTML
250 | }
251 |
252 |
253 | //#region results
254 |
255 | self.result = (obj = null, error = '') => {
256 | return { result: obj, error: error };
257 | }
258 |
259 | self.resultError = (e) => {
260 | return result(null, e);
261 | }
262 |
263 | self.resultSuccess = (o) => {
264 | return result(o, null);
265 | }
266 |
267 | //#endregion
268 |
--------------------------------------------------------------------------------
/src/CommonTemplates/пс_ПодключаемыеСкрипты/пс_ПодключаемыеСкрипты.mdo:
--------------------------------------------------------------------------------
1 |
2 |
3 | пс_ПодключаемыеСкрипты
4 |
5 | ru
6 | Подключаемые скрипты (JS)
7 |
8 | (JS)
9 | TextDocument
10 |
11 |
--------------------------------------------------------------------------------
/src/Configuration/Configuration.mdo:
--------------------------------------------------------------------------------
1 |
2 |
3 | JS
4 |
5 | ru
6 | JS
7 |
8 | Adopted
9 |
10 | Checked
11 | Extended
12 | Checked
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 | true
22 | пс_
23 | 8.3.12
24 | AddOn
25 | PersonalComputer
26 | Russian
27 | Language.Русский
28 | 8.3.18
29 |
30 | Русский
31 | Adopted
32 |
33 | Checked
34 |
35 | ru
36 |
37 | Subsystem.пс_Скрипты
38 | CommonPicture.пс_РазделСкрипты
39 | CommonTemplate.пс_ПодключаемыеСкрипты
40 | CommonModule.пс_СкриптыСерверПовтИсп
41 | CommonModule.пс_Скрипты
42 | CommonModule.пс_СкриптыВызовСервера
43 | CommonModule.пс_СкриптыКлиент
44 | CommonModule.пс_РаботаСФайламиКлиент
45 | CommonForm.пс_ФормаПрогрессаЗагрузкиФайлов
46 | DataProcessor.пс_Тестирование
47 | DataProcessor.пс_РедакторКода
48 |
49 |
--------------------------------------------------------------------------------
/src/Configuration/ExternalConnectionModule.bsl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DimaSSV/JavaScriptControl/1c3af640a39881dd70010c5dd5bd78436ae3afd7/src/Configuration/ExternalConnectionModule.bsl
--------------------------------------------------------------------------------
/src/Configuration/ManagedApplicationModule.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 | //@skip-warning
29 | &После("ПередНачаломРаботыСистемы")
30 | Процедура пс_ПередНачаломРаботыСистемы(Отказ)
31 | пс_СкриптыКлиент.ПередНачаломРаботыСистемы();
32 | КонецПроцедуры
33 |
34 |
35 |
--------------------------------------------------------------------------------
/src/Configuration/OrdinaryApplicationModule.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 | //@skip-warning
29 | &После("ПередНачаломРаботыСистемы")
30 | Процедура пс_ПередНачаломРаботыСистемы(Отказ)
31 | пс_СкриптыКлиент.ПередНачаломРаботыСистемы();
32 | КонецПроцедуры
33 |
34 |
35 |
--------------------------------------------------------------------------------
/src/Configuration/SessionModule.bsl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DimaSSV/JavaScriptControl/1c3af640a39881dd70010c5dd5bd78436ae3afd7/src/Configuration/SessionModule.bsl
--------------------------------------------------------------------------------
/src/DataProcessors/пс_РедакторКода/Forms/Форма/Form.form:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Язык
5 | 11
6 | true
7 | true
8 |
9 | true
10 |
11 |
12 | Язык
13 |
14 |
15 | OnChange
16 | ЯзыкПриИзменении
17 |
18 |
19 | ЯзыкРасширеннаяПодсказка
20 | 13
21 | true
22 | true
23 |
24 | true
25 |
26 | Label
27 | true
28 | true
29 |
30 | Left
31 |
32 |
33 |
34 | ЯзыкКонтекстноеМеню
35 | 12
36 | true
37 | true
38 |
39 | true
40 |
41 | true
42 |
43 | InputField
44 | Enter
45 | true
46 | Left
47 | true
48 |
49 | true
50 | true
51 | true
52 | true
53 | true
54 | true
55 | true
56 |
57 |
58 |
59 | ХТМЛ
60 | 1
61 | true
62 | true
63 |
64 | true
65 |
66 |
67 | Объект.ХТМЛ
68 |
69 | None
70 |
71 | ХТМЛРасширеннаяПодсказка
72 | 3
73 | true
74 | true
75 |
76 | true
77 |
78 | Label
79 | true
80 | true
81 |
82 | Left
83 |
84 |
85 |
86 | ХТМЛКонтекстноеМеню
87 | 2
88 | true
89 | true
90 |
91 | true
92 |
93 |
94 | HTMLDocumentField
95 | Enter
96 | true
97 | Left
98 | true
99 |
100 |
101 | DocumentComplete
102 | ХТМЛДокументСформирован
103 |
104 | 50
105 | true
106 | 10
107 | true
108 | true
109 | true
110 |
111 |
112 |
113 | ФормаКоманднаяПанель
114 | -1
115 |
116 | ФормаЗавершитьРедактирование
117 | 14
118 | true
119 | true
120 |
121 | true
122 |
123 |
124 | ФормаЗавершитьРедактированиеРасширеннаяПодсказка
125 | 15
126 | true
127 | true
128 |
129 | true
130 |
131 | Label
132 | true
133 | true
134 |
135 | Left
136 |
137 |
138 | Form.Command.ЗавершитьРедактирование
139 | Auto
140 | true
141 | true
142 | true
143 | UserCmds
144 | Auto
145 |
146 | true
147 | true
148 |
149 | true
150 |
151 | Left
152 | true
153 |
154 |
155 | OnCreateAtServer
156 | ПриСозданииНаСервере
157 |
158 | true
159 | true
160 | Vertical
161 | true
162 | true
163 | true
164 | true
165 | true
166 |
167 | Объект
168 | 1
169 |
170 | DataProcessorObject.пс_РедакторКода
171 |
172 |
173 | true
174 |
175 |
176 | true
177 |
178 | true
179 |
180 |
181 | Язык
182 |
183 | ru
184 | Язык
185 |
186 | 3
187 |
188 | String
189 |
190 |
191 |
192 | true
193 |
194 |
195 | true
196 |
197 |
198 |
199 | РедактируемыйТекст
200 |
201 | ru
202 | Редактируемый текст
203 |
204 | 4
205 |
206 | String
207 |
208 |
209 |
210 | true
211 |
212 |
213 | true
214 |
215 |
216 |
217 | ЗавершитьРедактирование
218 |
219 | ru
220 | Завершить редактирование
221 |
222 | 3
223 |
226 |
227 |
228 | ЗавершитьРедактирование
229 |
230 |
231 | Auto
232 |
233 |
234 | РедактируемыйТекст
235 |
236 | String
237 |
238 |
239 |
240 |
241 |
242 |
243 |
244 |
245 |
246 |
--------------------------------------------------------------------------------
/src/DataProcessors/пс_РедакторКода/Forms/Форма/Module.bsl:
--------------------------------------------------------------------------------
1 | &НаСервере
2 | Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
3 | пс_Скрипты.ИнициализироватьРедакторКода(Элементы.ХТМЛ);
4 | РедактируемыйТекст = СтрЗаменить(Параметры.РедактируемыйТекст, Символы.ПС, "\n");
5 | РедактируемыйТекст = СтрЗаменить(РедактируемыйТекст, Символы.ВК, "\r");
6 | РедактируемыйТекст = СтрЗаменить(РедактируемыйТекст, "'", "\'");
7 | КонецПроцедуры
8 |
9 | &НаКлиенте
10 | Процедура ХТМЛДокументСформирован(Элемент)
11 | Результат = пс_СкриптыКлиент.ВыполнитьКоманду("monaco.languages.getLanguages()", Элементы.ХТМЛ);
12 | Для Каждого текЯзык Из Результат Цикл
13 | Элементы.Язык.СписокВыбора.Добавить(текЯзык.id);
14 | КонецЦикла;
15 | Язык = пс_СкриптыКлиент.ВыполнитьКоманду("scriptEdit.getModel().getLanguageIdentifier().language;", Элементы.ХТМЛ);
16 | пс_СкриптыКлиент.ВыполнитьКоманду(СтрШаблон("scriptEdit.getModel().setValue('%1')", РедактируемыйТекст),
17 | Элементы.ХТМЛ);
18 | КонецПроцедуры
19 |
20 | &НаКлиенте
21 | Процедура ЗавершитьРедактирование(Команда)
22 | Закрыть(пс_СкриптыКлиент.ВыполнитьКоманду("scriptEdit.getModel().getValue()", Элементы.ХТМЛ));
23 | КонецПроцедуры
24 | &НаКлиенте
25 | Процедура ЯзыкПриИзменении(Элемент)
26 | пс_СкриптыКлиент.ВыполнитьКоманду(СтрШаблон(
27 | "monaco.editor.setModelLanguage(scriptEdit.getModel(),'%1')", Язык), Элементы.ХТМЛ);
28 | КонецПроцедуры
--------------------------------------------------------------------------------
/src/DataProcessors/пс_РедакторКода/ManagerModule.bsl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DimaSSV/JavaScriptControl/1c3af640a39881dd70010c5dd5bd78436ae3afd7/src/DataProcessors/пс_РедакторКода/ManagerModule.bsl
--------------------------------------------------------------------------------
/src/DataProcessors/пс_РедакторКода/ObjectModule.bsl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DimaSSV/JavaScriptControl/1c3af640a39881dd70010c5dd5bd78436ae3afd7/src/DataProcessors/пс_РедакторКода/ObjectModule.bsl
--------------------------------------------------------------------------------
/src/DataProcessors/пс_РедакторКода/Templates/index/Template.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Page Title
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/src/DataProcessors/пс_РедакторКода/пс_РедакторКода.mdo:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | пс_РедакторКода
8 |
9 | ru
10 | Редактор кода (JS)
11 |
12 | true
13 | DataProcessor.пс_РедакторКода.Form.Форма
14 |
15 | ХТМЛ
16 |
17 | ru
18 | ХТМЛ
19 |
20 |
21 | String
22 |
23 |
24 |
25 |
26 |
27 |
28 | Форма
29 |
30 | ru
31 | Форма
32 |
33 | PersonalComputer
34 | MobileDevice
35 |
36 |
37 | app
38 |
39 | ru
40 | App
41 |
42 | BinaryData
43 |
44 |
45 | index
46 |
47 | ru
48 | Index
49 |
50 | TextDocument
51 |
52 |
53 | ts_worker
54 |
55 | ru
56 | Ts worker
57 |
58 | BinaryData
59 |
60 |
61 | editor_worker
62 |
63 | ru
64 | Editor worker
65 |
66 | BinaryData
67 |
68 |
69 | html_worker
70 |
71 | ru
72 | Html worker
73 |
74 | BinaryData
75 |
76 |
77 | json_worker
78 |
79 | ru
80 | Json worker
81 |
82 | BinaryData
83 |
84 |
85 | css_worker
86 |
87 | ru
88 | Css worker
89 |
90 | BinaryData
91 |
92 |
93 |
--------------------------------------------------------------------------------
/src/DataProcessors/пс_Тестирование/Forms/Форма/Form.form:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Группа1
5 | 4
6 |
7 | ХТМЛ
8 | 1
9 | true
10 | true
11 |
12 | true
13 |
14 |
15 |
16 | ХТМЛ
17 |
18 |
19 | None
20 |
21 | ХТМЛРасширеннаяПодсказка
22 | 3
23 | true
24 | true
25 |
26 | true
27 |
28 | Label
29 | true
30 | true
31 |
32 | Left
33 |
34 |
35 |
36 | ХТМЛКонтекстноеМеню
37 | 2
38 | true
39 | true
40 |
41 | true
42 |
43 | true
44 |
45 | HTMLDocumentField
46 | Enter
47 | true
48 | Left
49 | true
50 |
51 |
52 | OnClick
53 | ХТМЛПриНажатии
54 |
55 | 50
56 | true
57 | 10
58 | true
59 | true
60 | true
61 |
62 |
63 |
64 | Группа3
65 | 47
66 |
67 | ДеревоКонтекста
68 | 6
69 | true
70 | true
71 |
72 | true
73 |
74 |
75 | ДеревоКонтекста
76 |
77 | None
78 |
79 | ДеревоКонтекстаИмя
80 | 19
81 | true
82 | true
83 |
84 | true
85 |
86 |
87 |
88 | ДеревоКонтекста.name
89 |
90 |
91 |
92 | ДеревоКонтекстаИмяРасширеннаяПодсказка
93 | 21
94 | true
95 | true
96 |
97 | true
98 |
99 | Label
100 | true
101 | true
102 |
103 | Left
104 |
105 |
106 |
107 | ДеревоКонтекстаИмяКонтекстноеМеню
108 | 20
109 | true
110 | true
111 |
112 | true
113 |
114 | true
115 |
116 | InputField
117 | true
118 | EnterOnInput
119 | true
120 | Left
121 | true
122 |
123 | true
124 | true
125 | true
126 | true
127 | true
128 |
129 |
130 |
131 | ДеревоКонтекстаТип
132 | 22
133 | true
134 | true
135 |
136 | true
137 |
138 |
139 |
140 | ДеревоКонтекста.type
141 |
142 |
143 |
144 | ДеревоКонтекстаТипРасширеннаяПодсказка
145 | 24
146 | true
147 | true
148 |
149 | true
150 |
151 | Label
152 | true
153 | true
154 |
155 | Left
156 |
157 |
158 |
159 | ДеревоКонтекстаТипКонтекстноеМеню
160 | 23
161 | true
162 | true
163 |
164 | true
165 |
166 | true
167 |
168 | InputField
169 | true
170 | EnterOnInput
171 | true
172 | Left
173 | true
174 |
175 | true
176 | true
177 | true
178 | true
179 | true
180 |
181 |
182 |
183 | ДеревоКонтекстаvalue
184 | 27
185 | true
186 | true
187 |
188 | true
189 |
190 |
191 |
192 | ДеревоКонтекста.value
193 |
194 |
195 |
196 | ДеревоКонтекстаvalueРасширеннаяПодсказка
197 | 29
198 | true
199 | true
200 |
201 | true
202 |
203 | Label
204 | true
205 | true
206 |
207 | Left
208 |
209 |
210 |
211 | ДеревоКонтекстаvalueКонтекстноеМеню
212 | 28
213 | true
214 | true
215 |
216 | true
217 |
218 | true
219 |
220 | InputField
221 | EnterOnInput
222 | true
223 | Left
224 | true
225 |
226 | true
227 | true
228 | true
229 | true
230 | true
231 |
232 |
233 |
234 | ДеревоКонтекстаКоманднаяПанель
235 | 8
236 | true
237 | true
238 |
239 | true
240 |
241 | Left
242 |
243 |
244 | BeforeExpand
245 | ДеревоКонтекстаПередРазворачиванием
246 |
247 |
248 | true
249 | true
250 |
251 | true
252 |
253 | ДеревоКонтекстаСтрокаПоиска
254 | 10
255 |
256 | ДеревоКонтекстаСтрокаПоискаРасширеннаяПодсказка
257 | 12
258 | true
259 | true
260 |
261 | true
262 |
263 | Label
264 | true
265 | true
266 |
267 | Left
268 |
269 |
270 |
271 | ДеревоКонтекстаСтрокаПоискаКонтекстноеМеню
272 | 11
273 | true
274 | true
275 |
276 | true
277 |
278 | true
279 |
280 |
281 | true
282 |
283 |
284 |
285 | true
286 | true
287 |
288 | true
289 |
290 | ДеревоКонтекстаСостояниеПросмотра
291 | 13
292 |
293 | ДеревоКонтекстаСостояниеПросмотраРасширеннаяПодсказка
294 | 15
295 | true
296 | true
297 |
298 | true
299 |
300 | Label
301 | true
302 | true
303 |
304 | Left
305 |
306 |
307 |
308 | ДеревоКонтекстаСостояниеПросмотраКонтекстноеМеню
309 | 14
310 | true
311 | true
312 |
313 | true
314 |
315 | true
316 |
317 | ViewStatusAddition
318 |
319 | true
320 |
321 |
322 |
323 | true
324 | true
325 |
326 | true
327 |
328 | ДеревоКонтекстаУправлениеПоиском
329 | 16
330 |
331 | ДеревоКонтекстаУправлениеПоискомРасширеннаяПодсказка
332 | 18
333 | true
334 | true
335 |
336 | true
337 |
338 | Label
339 | true
340 | true
341 |
342 | Left
343 |
344 |
345 |
346 | ДеревоКонтекстаУправлениеПоискомКонтекстноеМеню
347 | 17
348 | true
349 | true
350 |
351 | true
352 |
353 | true
354 |
355 | SearchControlAddition
356 |
357 | true
358 |
359 |
360 |
361 | ДеревоКонтекстаРасширеннаяПодсказка
362 | 9
363 | true
364 | true
365 |
366 | true
367 |
368 | Label
369 | true
370 | true
371 |
372 | Left
373 |
374 |
375 |
376 | ДеревоКонтекстаКонтекстноеМеню
377 | 7
378 | true
379 | true
380 |
381 | true
382 |
383 | true
384 |
385 | Tree
386 | true
387 | true
388 | true
389 | MultiRow
390 |
391 | 1
392 | 1
393 | AutoUse
394 | AutoUse
395 | true
396 | true
397 | true
398 | Auto
399 | Auto
400 | true
401 | true
402 | true
403 | true
404 | AsFileRef
405 |
406 | true
407 | true
408 |
409 | true
410 |
411 |
412 | ru
413 | Доступный контекст
414 |
415 |
416 | Группа3РасширеннаяПодсказка
417 | 48
418 | true
419 | true
420 |
421 | true
422 |
423 | Label
424 | true
425 | true
426 |
427 | Left
428 |
429 |
430 | UsualGroup
431 |
432 | HorizontalIfPossible
433 | Collapsible
434 | true
435 | Picture
436 | WeakSeparation
437 | true
438 | true
439 | true
440 | Auto
441 | Auto
442 |
443 |
444 | true
445 | true
446 |
447 | true
448 |
449 |
450 | Группа1РасширеннаяПодсказка
451 | 5
452 | true
453 | true
454 |
455 | true
456 |
457 | Label
458 | true
459 | true
460 |
461 | Left
462 |
463 |
464 | UsualGroup
465 |
466 | Vertical
467 | WeakSeparation
468 | true
469 | true
470 | true
471 | Auto
472 | Auto
473 |
474 |
475 |
476 | Группа2
477 | 30
478 |
479 | Консоль
480 | 32
481 | true
482 | true
483 |
484 | true
485 |
486 |
487 |
488 | Консоль
489 |
490 |
491 | None
492 |
493 | КонсольРасширеннаяПодсказка
494 | 34
495 | true
496 | true
497 |
498 | true
499 |
500 | Label
501 | true
502 | true
503 |
504 | Left
505 |
506 |
507 |
508 | КонсольКонтекстноеМеню
509 | 33
510 | true
511 | true
512 |
513 | true
514 |
515 | true
516 |
517 | InputField
518 | Enter
519 | true
520 | Left
521 | true
522 |
523 | 50
524 | true
525 | true
526 | true
527 | true
528 | true
529 |
530 |
531 |
532 | ВыполнитьКомандуКонсоли
533 | 35
534 | true
535 | true
536 |
537 | true
538 |
539 |
540 | ВыполнитьКомандуКонсолиРасширеннаяПодсказка
541 | 36
542 | true
543 | true
544 |
545 | true
546 |
547 | Label
548 | true
549 | true
550 |
551 | Left
552 |
553 |
554 | UsualButton
555 | Form.Command.ВыполнитьКомандуКонсоли
556 | Auto
557 | true
558 | true
559 | UserCmds
560 | Auto
561 |
562 | true
563 | true
564 |
565 | true
566 |
567 |
568 | Группа2РасширеннаяПодсказка
569 | 31
570 | true
571 | true
572 |
573 | true
574 |
575 | Label
576 | true
577 | true
578 |
579 | Left
580 |
581 |
582 | UsualGroup
583 |
584 | AlwaysHorizontal
585 | true
586 | true
587 | Auto
588 | Auto
589 |
590 |
591 |
592 | ФормаКоманднаяПанель
593 | -1
594 |
595 | ГруппаКоммандыОсновные
596 | 59
597 |
598 | ФормаЗаполнитьКонтекст
599 | 25
600 | true
601 | true
602 |
603 | true
604 |
605 |
606 | ФормаЗаполнитьКонтекстРасширеннаяПодсказка
607 | 26
608 | true
609 | true
610 |
611 | true
612 |
613 | Label
614 | true
615 | true
616 |
617 | Left
618 |
619 |
620 | Form.Command.ЗаполнитьКонтекст
621 | Auto
622 | true
623 | true
624 | UserCmds
625 | Auto
626 |
627 |
628 | ФормаКомандаНовыйВебСокет
629 | 55
630 | true
631 | true
632 |
633 | true
634 |
635 |
636 | ФормаКомандаНовыйВебСокетРасширеннаяПодсказка
637 | 56
638 | true
639 | true
640 |
641 | true
642 |
643 | Label
644 | true
645 | true
646 |
647 | Left
648 |
649 |
650 | Form.Command.КомандаНовыйВебСокет
651 | Auto
652 | true
653 | true
654 | UserCmds
655 | Auto
656 |
657 |
658 | ФормаТестОжиданияОповещения
659 | 57
660 | true
661 | true
662 |
663 | true
664 |
665 |
666 | ФормаТестОжиданияОповещенияРасширеннаяПодсказка
667 | 58
668 | true
669 | true
670 |
671 | true
672 |
673 | Label
674 | true
675 | true
676 |
677 | Left
678 |
679 |
680 | Form.Command.ТестОжиданияОповещения
681 | Auto
682 | true
683 | true
684 | UserCmds
685 | Auto
686 |
687 | true
688 | true
689 |
690 | true
691 |
692 |
693 | ru
694 | Команды
695 |
696 |
697 | ГруппаКоммандыОсновныеРасширеннаяПодсказка
698 | 60
699 | true
700 | true
701 |
702 | true
703 |
704 | Label
705 | true
706 | true
707 |
708 | Left
709 |
710 |
711 | Popup
712 |
713 | Auto
714 |
715 |
716 | true
717 | true
718 |
719 | true
720 |
721 | Left
722 | true
723 |
724 |
725 | OnCreateAtServer
726 | ПриСозданииНаСервере
727 |
728 |
729 | OnClose
730 | ПриЗакрытии
731 |
732 | true
733 | true
734 | Vertical
735 | true
736 | true
737 | true
738 | true
739 | true
740 |
741 | Объект
742 | 1
743 |
744 | DataProcessorObject.пс_Тестирование
745 |
746 |
747 | true
748 |
749 |
750 | true
751 |
752 | true
753 |
754 |
755 | ХТМЛ
756 |
757 | ru
758 | ХТМЛ
759 |
760 | 2
761 |
762 | String
763 |
764 |
765 |
766 | true
767 |
768 |
769 | true
770 |
771 |
772 |
773 | ДеревоКонтекста
774 |
775 | ru
776 | Дерево контекста
777 |
778 | 3
779 |
780 | ValueTree
781 |
782 |
783 | true
784 |
785 |
786 | true
787 |
788 |
789 | name
790 |
791 | ru
792 | Имя
793 |
794 | 1
795 |
796 | String
797 |
798 |
799 |
800 | true
801 |
802 |
803 | true
804 |
805 |
806 |
807 | type
808 |
809 | ru
810 | Тип
811 |
812 | 2
813 |
814 | String
815 |
816 |
817 |
818 | true
819 |
820 |
821 | true
822 |
823 |
824 |
825 | value
826 |
827 | ru
828 | Значение
829 |
830 | 3
831 |
832 | String
833 |
834 |
835 |
836 | true
837 |
838 |
839 | true
840 |
841 |
842 |
843 |
844 | Консоль
845 |
846 | ru
847 | Консоль
848 |
849 | 4
850 |
851 | String
852 |
853 |
854 |
855 | true
856 |
857 |
858 | true
859 |
860 |
861 |
862 | ЗаполнитьКонтекст
863 |
864 | ru
865 | Заполнить контекст
866 |
867 | 1
868 |
869 | ru
870 | Заполнить контекст
871 |
872 |
875 |
876 |
877 | ЗаполнитьКонтекст
878 |
879 |
880 | Auto
881 |
882 |
883 | ВыполнитьКомандуКонсоли
884 |
885 | ru
886 | Выполнить команду
887 |
888 | 2
889 |
890 | ru
891 | Выполнить команду
892 |
893 |
896 |
897 | StdPicture.GenerateReport
898 |
899 |
900 |
901 | ВыполнитьКомандуКонсоли
902 |
903 |
904 | Picture
905 | Auto
906 |
907 |
908 | КомандаНовыйВебСокет
909 |
910 | ru
911 | Новый веб сокет
912 |
913 | 6
914 |
915 | ru
916 | Новый веб сокет
917 |
918 |
921 |
922 |
923 | КомандаНовыйВебСокет
924 |
925 |
926 | Auto
927 |
928 |
929 | ТестОжиданияОповещения
930 |
931 | ru
932 | Ожидания оповещения
933 |
934 | 8
935 |
938 |
939 |
940 | ТестОжиданияОповещения
941 |
942 |
943 | Auto
944 |
945 |
946 |
947 |
948 |
949 |
950 |
951 |
--------------------------------------------------------------------------------
/src/DataProcessors/пс_Тестирование/Forms/Форма/Module.bsl:
--------------------------------------------------------------------------------
1 |
2 | &НаСервере
3 | Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
4 |
5 | пс_Скрипты.ПодключитьРасширенныеСкрипты(Элементы.ХТМЛ);
6 |
7 | КонецПроцедуры
8 |
9 | &НаКлиенте
10 | Процедура ХТМЛПриНажатии(Элемент, ДанныеСобытия, СтандартнаяОбработка)
11 | пс_СкриптыКлиент.ПриНажатии(ДанныеСобытия, Элемент);
12 | КонецПроцедуры
13 |
14 | &НаКлиенте
15 | Процедура ВыполнитьКомандуКонсоли(Команда)
16 | //@skip-warning
17 | Результат = пс_СкриптыКлиент.ВыполнитьКоманду(Консоль, Элементы.ХТМЛ);
18 | КонецПроцедуры
19 |
20 | &НаКлиенте
21 | Процедура ЗаполнитьКонтекст(Команда)
22 | ГлобальныйКонтекст = пс_СкриптыКлиент.ПолучитьКонтекст(,Истина, Элементы.ХТМЛ);
23 | УзелДерева = ДеревоКонтекста.ПолучитьЭлементы();
24 | УзелДерева.Очистить();
25 | Для Каждого текЭлемент Из ГлобальныйКонтекст Цикл
26 | ДобавляемыйОбъект = УзелДерева.Добавить();
27 | ЗаполнитьЗначенияСвойств(ДобавляемыйОбъект,текЭлемент.Значение);
28 | ДобавляемыйОбъект.ПолучитьЭлементы().Добавить();
29 | КонецЦикла;
30 | КонецПроцедуры
31 |
32 | &НаКлиенте
33 | Процедура ДеревоКонтекстаПередРазворачиванием(Элемент, Строка, Отказ)
34 | СтрокаКонтекста = ДеревоКонтекста.НайтиПоИдентификатору(Строка);
35 | ПутьКОбъекту = "self." + ПолучитьПутьКДанным(СтрокаКонтекста);
36 | ИсследуемыйОбъект = пс_СкриптыКлиент.ВыполнитьКоманду(ПутьКОбъекту, Элементы.ХТМЛ);
37 | РазворачиваемыйУзел = СтрокаКонтекста.ПолучитьЭлементы();
38 | РазворачиваемыйУзел.Очистить();
39 | Если ИсследуемыйОбъект = Неопределено Тогда
40 | Возврат;
41 | КонецЕсли;
42 | ДоступныйКонтекстОбъекта = пс_СкриптыКлиент.ПолучитьКонтекст(ИсследуемыйОбъект, Истина, Элементы.ХТМЛ);
43 | Для Каждого текСвойство Из ДоступныйКонтекстОбъекта Цикл
44 | ДобавляемыйУзел = РазворачиваемыйУзел.Добавить();
45 | ЗаполнитьЗначенияСвойств(ДобавляемыйУзел, текСвойство.Значение);
46 | ДобавляемыйУзел.ПолучитьЭлементы().Добавить();
47 | КонецЦикла;
48 | КонецПроцедуры
49 |
50 | &НаКлиенте
51 | Функция ПолучитьПутьКДанным(ЭлементКонтекста, ПутьКДанным = "")
52 |
53 | Родитель = ЭлементКонтекста.ПолучитьРодителя();
54 | Если Родитель = Неопределено Тогда
55 | Возврат ЭлементКонтекста.name + ПутьКДанным;
56 | КонецЕсли;
57 | ЭтоИндекс = Ложь;
58 | Попытка
59 | //@skip-warning
60 | ф=Число(ЭлементКонтекста.name);
61 | ЭтоИндекс = Истина;
62 | Исключение
63 | КонецПопытки;
64 | Если ЭтоИндекс Тогда
65 | Шаблон = "[%1]%2";
66 | Иначе
67 | Шаблон = ".%1%2";
68 | КонецЕсли;
69 | Возврат ПолучитьПутьКДанным(Родитель, СтрШаблон(Шаблон, ЭлементКонтекста.name, ПутьКДанным));
70 |
71 | КонецФункции // ПолучитьПутьКДанным()
72 |
73 | &НаКлиенте
74 | Процедура КомандаНовыйВебСокет(Команда)
75 | ОписаниеЗакрыт = Новый ОписаниеОповещения("СокетЗакрыт", ЭтаФорма);
76 | ОписаниеОткрыт = Новый ОписаниеОповещения("СокетОткрыт", ЭтаФорма);
77 | ОписаниеСообщение = Новый ОписаниеОповещения("СокетСообщение", ЭтаФорма);
78 | ОписаниеОшибка = Новый ОписаниеОповещения("СокетОшибка", ЭтаФорма);
79 | пс_СкриптыКлиент.НовыйВебСокет("wss://echo.websocket.org",,"f",ОписаниеОткрыт
80 | ,ОписаниеОшибка, ОписаниеСообщение, ОписаниеЗакрыт, Элементы.ХТМЛ);
81 | КонецПроцедуры
82 |
83 |
84 | // <Описание процедуры>
85 | //
86 | // Параметры:
87 | // <Параметр1> - <Тип.Вид> - <описание параметра>
88 | // <продолжение описания параметра>
89 | // <Параметр2> - <Тип.Вид> - <описание параметра>
90 | // <продолжение описания параметра>
91 | //
92 | &НаКлиенте
93 | Процедура СокетЗакрыт(ДанныеСобытия, ДополнительныеПараметры) Экспорт
94 |
95 | Сообщить("Сокет закрыт!");
96 |
97 | КонецПроцедуры // СокетЗакрыт()
98 |
99 |
100 | // <Описание процедуры>
101 | //
102 | // Параметры:
103 | // <Параметр1> - <Тип.Вид> - <описание параметра>
104 | // <продолжение описания параметра>
105 | // <Параметр2> - <Тип.Вид> - <описание параметра>
106 | // <продолжение описания параметра>
107 | //
108 | &НаКлиенте
109 | Процедура СокетОткрыт(ДанныеСобытия, ДополнительныеПараметры) Экспорт
110 |
111 | Сообщить("Сокет открыт!");
112 |
113 | КонецПроцедуры // СокетОткрыт()
114 |
115 |
116 | // <Описание процедуры>
117 | //
118 | // Параметры:
119 | // <Параметр1> - <Тип.Вид> - <описание параметра>
120 | // <продолжение описания параметра>
121 | // <Параметр2> - <Тип.Вид> - <описание параметра>
122 | // <продолжение описания параметра>
123 | //
124 | &НаКлиенте
125 | Процедура СокетСообщение(ДанныеСобытия, ДополнительныеПараметры) Экспорт
126 |
127 | Сообщить(СтрШаблон("Сокет сообщение: %1", ДанныеСобытия.data));
128 |
129 | КонецПроцедуры // СокетСообщение()
130 |
131 |
132 | // <Описание процедуры>
133 | //
134 | // Параметры:
135 | // <Параметр1> - <Тип.Вид> - <описание параметра>
136 | // <продолжение описания параметра>
137 | // <Параметр2> - <Тип.Вид> - <описание параметра>
138 | // <продолжение описания параметра>
139 | //
140 | &НаКлиенте
141 | Процедура СокетОшибка(ДанныеСобытия, ДополнительныеПараметры) Экспорт
142 |
143 | Сообщить("Сокет ошибка!");
144 |
145 | КонецПроцедуры
146 | // СокетОшибка()
147 |
148 | &НаКлиенте
149 | Процедура ПриЗакрытии(ЗавершениеРаботы)
150 | пс_СкриптыКлиент.ОчиститьКешФормы(ЭтаФорма);
151 | КонецПроцедуры
152 |
153 | &НаКлиенте
154 | Процедура ТестОжиданияОповещения(Команда)
155 | пс_СкриптыКлиент.ДобавитьОбработчикСобытия(Элементы.ХТМЛ.Документ.body,"click"
156 | , Новый ОписаниеОповещения("тестСообщитьАдресКлика", ЭтаФорма), Элементы.ХТМЛ)
157 | КонецПроцедуры
158 |
159 | &НаКлиенте
160 | Процедура тестСообщитьАдресКлика(ДанныеСобытия, ДополнительныеПараметры) Экспорт
161 | Сообщить(СтрШаблон("Произошёл клик в координатах %1, %2", ДанныеСобытия.x, ДанныеСобытия.y));
162 | КонецПроцедуры
163 |
164 |
165 |
166 |
167 |
--------------------------------------------------------------------------------
/src/DataProcessors/пс_Тестирование/ManagerModule.bsl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DimaSSV/JavaScriptControl/1c3af640a39881dd70010c5dd5bd78436ae3afd7/src/DataProcessors/пс_Тестирование/ManagerModule.bsl
--------------------------------------------------------------------------------
/src/DataProcessors/пс_Тестирование/ObjectModule.bsl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DimaSSV/JavaScriptControl/1c3af640a39881dd70010c5dd5bd78436ae3afd7/src/DataProcessors/пс_Тестирование/ObjectModule.bsl
--------------------------------------------------------------------------------
/src/DataProcessors/пс_Тестирование/пс_Тестирование.mdo:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | пс_Тестирование
8 |
9 | ru
10 | Тестирование (JS)
11 |
12 | true
13 | DataProcessor.пс_Тестирование.Form.Форма
14 |
15 | Форма
16 |
17 | ru
18 | Форма
19 |
20 | PersonalComputer
21 | MobileDevice
22 |
23 |
24 |
--------------------------------------------------------------------------------
/src/Subsystems/пс_Скрипты/пс_Скрипты.mdo:
--------------------------------------------------------------------------------
1 |
2 |
3 | пс_Скрипты
4 |
5 | ru
6 | Скрипты (JS)
7 |
8 | true
9 | true
10 |
11 | CommonPicture.пс_РазделСкрипты
12 |
13 | DataProcessor.пс_Тестирование
14 | CommonPicture.пс_РазделСкрипты
15 | c9569b78-f0e5-49bb-ae23-3b660a3fbf5c
16 | a2147d30-8543-40ba-b2e2-a854c3d7df0e
17 | DataProcessor.пс_РедакторКода
18 |
19 |
--------------------------------------------------------------------------------