-
Notifications
You must be signed in to change notification settings - Fork 19
/
SSLDataExchange.st
723 lines (603 loc) · 56.8 KB
/
SSLDataExchange.st
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
{1,
{2,
{"Подсистема Обмен данными, БСП 3.1.8",1,0,"",""},
{8,
{"RU",1,0,"",""},
{0,
{"01 Модуль инициализации подсистемы",0,0,"ПланОбмена=","#Область ПрограммныйИнтерфейс
#Область ДляВызоваИзДругихПодсистем
// СтандартныеПодсистемы.ОбновлениеВерсииИБ
////////////////////////////////////////////////////////////////////////////////
// Сведения о библиотеке (или конфигурации).
// Заполняет основные сведения о библиотеке или основной конфигурации.
// Библиотека, имя которой имя совпадает с именем конфигурации в метаданных, определяется как основная конфигурация.
//
// Параметры:
// Описание - Структура:
//
// * Имя - Строка - имя библиотеки, например, ""СтандартныеПодсистемы"".
// * Версия - Строка - версия в формате из 4-х цифр, например, ""2.1.3.1"".
//
// * ИдентификаторИнтернетПоддержки - Строка - уникальное имя программы в сервисах Интернет-поддержки.
// * ТребуемыеПодсистемы - Массив - имена других библиотек (Строка), от которых зависит данная библиотека.
// Обработчики обновления таких библиотек должны быть вызваны ранее
// обработчиков обновления данной библиотеки.
// При циклических зависимостях или, напротив, отсутствии каких-либо зависимостей,
// порядок вызова обработчиков обновления определяется порядком добавления модулей
// в процедуре ПриДобавленииПодсистем общего модуля
// ПодсистемыКонфигурацииПереопределяемый.
// * РежимВыполненияОтложенныхОбработчиков - Строка - ""Последовательно"" - отложенные обработчики обновления выполняются
// последовательно в интервале от номера версии информационной базы до номера
// версии конфигурации включительно или ""Параллельно"" - отложенный обработчик после
// обработки первой порции данных передает управление следующему обработчику, а после
// выполнения последнего обработчика цикл повторяется заново.
// * ЗаполнятьДанныеНовыхПодсистемПриПереходеСДругойПрограммы - Булево - если установить Истина, то при переходе с
// другой программы будут автоматически выполнены обработчики начального заполнения
// новых подсистем. При описании обработчика обновления можно при необходимости
// отключить его выполнение, указав свойство НеВыполнятьПриПереходеСДругойПрограммы.
//
Процедура ПриДобавленииПодсистемы(Описание) Экспорт
Описание.Имя = ""<ИмяПодсистемы>""; //?
Описание.Версия = ""<РР.ПП.вв.сс>""; //?
Описание.ИдентификаторИнтернетПоддержки = ""SSL"";
Описание.РежимВыполненияОтложенныхОбработчиков = ""<Параллельно|Последовательно>""; //?
Описание.ПараллельноеОтложенноеОбновлениеСВерсии = ""1.0.0.1"";
Описание.ЗаполнятьДанныеНовыхПодсистемПриПереходеСДругойПрограммы = Истина;
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
// Обработчики обновления информационной базы.
// Добавляет в список процедуры-обработчики обновления данных ИБ
// для всех поддерживаемых версий библиотеки или конфигурации.
// Вызывается перед началом обновления данных ИБ для построения плана обновления.
//
// Параметры:
// Обработчики - см. ОбновлениеИнформационнойБазы.НоваяТаблицаОбработчиковОбновления
//
// Пример:
// Для добавления своей процедуры-обработчика в список:
// Обработчик = Обработчики.Добавить();
// Обработчик.Версия = ""1.1.0.0"";
// Обработчик.Процедура = ""ОбновлениеИБ.ПерейтиНаВерсию_1_1_0_0"";
// Обработчик.РежимВыполнения = ""Оперативно"";
//
Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт
КонецПроцедуры
// См. ОбновлениеИнформационнойБазыПереопределяемый.ПередОбновлениемИнформационнойБазы.
Процедура ПередОбновлениемИнформационнойБазы() Экспорт
КонецПроцедуры
// Вызывается после завершения обновления данных ИБ.
// В зависимости от тех или иных условий можно отключить штатное открытие формы
// с описанием изменений в новой версии программы при первом входе в нее (после обновления),
// а также выполнить другие действия.
//
// Не рекомендуется выполнять в данной процедуре какую-либо обработку данных.
// Такие процедуры следует оформлять штатными обработчиками обновления, выполняемыми на каждую версию ""*"".
//
// Параметры:
// ПредыдущаяВерсия - Строка - версия до обновления. ""0.0.0.0"" для ""пустой"" ИБ.
// ТекущаяВерсия - Строка - версия после обновления. Как правило, соответствует Метаданные.Версия.
// ВыполненныеОбработчики - ДеревоЗначений:
// * НачальноеЗаполнение - Булево - если Истина, то обработчик должен срабатывать при запуске на ""пустой"" базе.
// * Версия - Строка - например, ""2.1.3.39"". Номер версии конфигурации, при переходе
// на которую должна быть выполнена процедура-обработчик обновления.
// Если указана пустая строка, то это обработчик только для начального заполнения
// (должно быть указано свойство НачальноеЗаполнение).
// * Процедура - Строка - полное имя процедуры-обработчика обновления/начального заполнения.
// Например, ""ОбновлениеИнформационнойБазыУПП.ЗаполнитьНовыйРеквизит""
// Обязательно должна быть экспортной.
// * РежимВыполнения - Строка - режим выполнения обработчика обновления. Допустимые значения:
// Монопольно, Отложенно, Оперативно. Если значение не заполнено, обработчик
// считается монопольным.
// * ОбщиеДанные - Булево - если Истина, то обработчик должен срабатывать до
// выполнения любых обработчиков, использующих разделенные данные.
// Допустимо указывать только для обработчиков с режимом выполнения Монопольно и Оперативно.
// Если указать значение Истина для обработчика с режимом
// выполнения Отложенно, будет выдано исключение.
// * УправлениеОбработчиками - Булево - если Истина, то обработчик должен иметь параметр типа Структура, в котором
// есть свойство РазделенныеОбработчики - таблица значений со структурой,
// возвращаемой этой функцией.
// При этом колонка Версия игнорируется. В случае необходимости выполнения
// разделенного обработчика в данную таблицу необходимо добавить строку с
// описанием процедуры обработчика.
// Имеет смысл только для обязательных (Версия = *) обработчиков обновления
// с установленным флагом ОбщиеДанные.
// * Комментарий - Строка - описание действий, выполняемых обработчиком обновления.
// * Идентификатор - УникальныйИдентификатор - необходимо заполнять для обработчиков отложенного обновления,
// для остальных заполнение не требуется. Требуется для идентификации
// обработчика в случае его переименования.
//
// * БлокируемыеОбъекты - Строка - необходимо заполнять для обработчиков отложенного обновления,
// для остальных заполнение не требуется. Полные имена объектов через запятую,
// которые следует блокировать от изменения до завершения процедуры обработки данных.
// Если заполнено, то также требуется заполнить и свойство ПроцедураПроверки.
// * ПроцедураПроверки - Строка - необходимо заполнять для обработчиков отложенного обновления,
// для остальных заполнение не требуется. Имя функции, которая для переданного объекта
// определяет, завершена ли для него процедура обработки данных.
// Если переданный объект обработан, то следует вернуть значение Истина.
// Вызывается из процедуры ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан.
// Параметры, передаваемые в функцию:
// Параметры - см. ОбновлениеИнформационнойБазы.МетаданныеИОтборПоДанным.
// * ПроцедураЗаполненияДанныхОбновления - Строка - указывается процедура, которая регистрирует данные,
// подлежащие обновлению данным обработчиком.
// * ЗапускатьТолькоВГлавномУзле - Булево - только для обработчиков отложенного обновления с режимом выполнения Параллельно.
// Указать Истина, если обработчик обновления должен выполняться только в главном
// узле РИБ.
// * ЗапускатьИВПодчиненномУзлеРИБСФильтрами - Булево - только для обработчиков отложенного обновления с режимом
// выполнения Параллельно.
// Указать Истина, если обработчик обновления должен также выполняться в
// подчиненном узле РИБ с фильтрами.
// * ЧитаемыеОбъекты - Строка - объекты, которые обработчик обновления будет читать при обработке данных.
// * ИзменяемыеОбъекты - Строка - объекты, которые обработчик обновления будет изменять при обработке данных.
// * ПриоритетыВыполнения - ТаблицаЗначений - таблица приоритетов выполнения между отложенными обработчиками,
// изменяющими или читающими одни и те же данные. Подробнее см. в комментарии
// к функции ОбновлениеИнформационнойБазы.ПриоритетыВыполненияОбработчика.
// * ВыполнятьВГруппеОбязательных - Булево - следует указывать, если обработчик требуется
// выполнять в одной группе с обработчиками на версии ""*"".
// При этом возможно менять порядок выполнения обработчика
// относительно других путем изменения приоритета.
// * Приоритет - Число - для внутреннего использования.
// * МонопольныйРежим - Неопределено
// - Булево - если указано Неопределено, то обработчик
// должен безусловно выполняться в монопольном режиме.
// Для обработчиков перехода на конкретную версию (версия <> *):
// Ложь - обработчик не требует монопольного режима для выполнения.
// Истина - обработчик требует монопольного режима для выполнения.
// Для обязательных обработчиков обновления (Версия = ""*""):
// Ложь - обработчик не требует монопольного режима.
// Истина - обработчик может требовать монопольного режима для выполнения.
// В такие обработчики передается параметр типа структура
// со свойством МонопольныйРежим (типа Булево).
// При запуске обработчика в монопольном режиме передается
// значение Истина. В этом случае обработчик должен выполнить
// требуемые действия по обновлению. Изменение параметра
// в теле обработчика игнорируется.
// При запуске обработчика в немонопольном режиме передается
// значение Ложь. В этом случае обработчик не должен вносить никакие
// изменения в ИБ.
// Если в результате анализа выясняется, что обработчику требуется
// изменить данные ИБ, следует установить значение параметра в Истина
// и прекратить выполнение обработчика.
// В этом случае оперативное (немонопольное) обновление ИБ будет
// отменено и будет выдана ошибка с требованием выполнить обновление в
// монопольном режиме.
// ВыводитьОписаниеОбновлений - Булево - если установить Ложь, то не будет открыта форма
// с описанием изменений в новой версии программы. По умолчанию Истина.
// МонопольныйРежим - Булево - признак того, что обновление выполнилось в монопольном режиме.
//
Процедура ПослеОбновленияИнформационнойБазы(Знач ПредыдущаяВерсия, Знач ТекущаяВерсия,
Знач ВыполненныеОбработчики, ВыводитьОписаниеОбновлений, Знач МонопольныйРежим) Экспорт
КонецПроцедуры
// См. ОбновлениеИнформационнойБазыПереопределяемый.ПриПодготовкеМакетаОписанияОбновлений.
Процедура ПриПодготовкеМакетаОписанияОбновлений(Знач Макет) Экспорт
КонецПроцедуры
// Позволяет переопределить режим обновления данных информационной базы.
// Для использования в редких (нештатных) случаях перехода, не предусмотренных в
// стандартной процедуре определения режима обновления.
//
// Параметры:
// РежимОбновленияДанных - Строка - в обработчике можно присвоить одно из значений:
// ""НачальноеЗаполнение"" - если это первый запуск пустой базы (области данных);
// ""ОбновлениеВерсии"" - если выполняется первый запуск после обновление конфигурации базы данных;
// ""ПереходСДругойПрограммы"" - если выполняется первый запуск после обновление конфигурации базы данных,
// в которой изменилось имя основной конфигурации.
//
// СтандартнаяОбработка - Булево - если присвоить Ложь, то стандартная процедура
// определения режима обновления не выполняется,
// а используется значение РежимОбновленияДанных.
//
Процедура ПриОпределенииРежимаОбновленияДанных(РежимОбновленияДанных, СтандартнаяОбработка) Экспорт
КонецПроцедуры
// Добавляет в список процедуры-обработчики перехода с другой программы (с другим именем конфигурации).
// Например, для перехода между разными, но родственными конфигурациями: базовая -> проф -> корп.
// Вызывается перед началом обновления данных ИБ.
//
// Параметры:
// Обработчики - ТаблицаЗначений:
// * ПредыдущееИмяКонфигурации - Строка - имя конфигурации, с которой выполняется переход;
// или ""*"", если нужно выполнять при переходе с любой конфигурации.
// * Процедура - Строка - полное имя процедуры-обработчика перехода с программы
// ПредыдущееИмяКонфигурации.
// Например, ""ОбновлениеИнформационнойБазыУПП.ЗаполнитьУчетнуюПолитику""
// Обязательно должна быть экспортной.
//
// Пример:
// Обработчик = Обработчики.Добавить();
// Обработчик.ПредыдущееИмяКонфигурации = ""УправлениеТорговлей"";
// Обработчик.Процедура = ""ОбновлениеИнформационнойБазыУПП.ЗаполнитьУчетнуюПолитику"";
//
Процедура ПриДобавленииОбработчиковПереходаСДругойПрограммы(Обработчики) Экспорт
КонецПроцедуры
// Вызывается после выполнения всех процедур-обработчиков перехода с другой программы (с другим именем конфигурации),
// и до начала выполнения обновления данных ИБ.
//
// Параметры:
// ПредыдущееИмяКонфигурации - Строка - имя конфигурации до перехода.
// ПредыдущаяВерсияКонфигурации - Строка - имя предыдущей конфигурации (до перехода).
// Параметры - Структура:
// * ВыполнитьОбновлениеСВерсии - Булево - по умолчанию Истина. Если установить Ложь,
// то будут выполнена только обязательные обработчики обновления (с версией ""*"").
// * ВерсияКонфигурации - Строка - номер версии после перехода.
// По умолчанию, равен значению версии конфигурации в свойствах метаданных.
// Для того чтобы выполнить, например, все обработчики обновления с версии ПредыдущаяВерсияКонфигурации,
// следует установить значение параметра в ПредыдущаяВерсияКонфигурации.
// Для того чтобы выполнить вообще все обработчики обновления, установить значение ""0.0.0.1"".
// * ОчиститьСведенияОПредыдущейКонфигурации - Булево - по умолчанию Истина.
// Для случаев когда предыдущая конфигурация совпадает по имени с подсистемой текущей конфигурации, следует
// указать Ложь.
//
Процедура ПриЗавершенииПереходаСДругойПрограммы(ПредыдущееИмяКонфигурации, ПредыдущаяВерсияКонфигурации, Параметры) Экспорт
КонецПроцедуры
// Конец СтандартныеПодсистемы.ОбновлениеВерсииИБ
#КонецОбласти
#КонецОбласти
"}
},
{0,
{"02 Настройка подсистемы - префикс ИБ",0,0,"ПланОбмена=","Префикс = НСтр(""ru = '<?""Префикс из 2 символов"">'"");"}
},
{0,
{"03 Настройка подсистемы - Соответствие версий формата",0,0,"ПланОбмена=","ВерсииФормата.Вставить(""1.3"", <?""Имя модуля"">);
ВерсииФормата.Вставить(""1.4"", <?""Имя модуля"">);
ВерсииФормата.Вставить(""1.5"", <?""Имя модуля"">);
ВерсииФормата.Вставить(""1.6"", <?""Имя модуля"">);
ВерсииФормата.Вставить(""1.7"", <?""Имя модуля"">);
ВерсииФормата.Вставить(""1.8"", <?""Имя модуля"">);
ВерсииФормата.Вставить(""1.10"", <?""Имя модуля"">);"}
},
{0,
{"04 План обмена - подключение нового плана",0,0,"ПланОбмена=","ПланыОбменаПодсистемы.Добавить(Метаданные.ПланыОбмена.<?""Имя плана обмена"">);"}
},
{0,
{"05 План обмена - модуль менеджера",0,0,"ПланОбмена=","#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
#Область ПриПолученииНастроек
// Заполняет настройки, влияющие на использование плана обмена.
//
// Параметры:
// Настройки - см. ОбменДаннымиСервер.НастройкиПланаОбменаПоУмолчанию
//
Процедура ПриПолученииНастроек(Настройки) Экспорт
// {{ не используются в рассматриваемых примерах:
//Настройки.Алгоритмы.ОбработчикПроверкиПараметровУчета = Истина; // при обмене через интернет
//Настройки.Алгоритмы.ПриПодключенииККорреспонденту = Истина; // при обмене через интернет или прямое подключение
//Настройки.Алгоритмы.ПриОтправкеДанныхОтправителя = Истина;
//Настройки.Алгоритмы.ПриПолученииДанныхОтправителя = Истина;
//Настройки.Алгоритмы.НастроитьИнтерактивнуюВыгрузку = Истина; // кроме [РИБ]
//Настройки.Алгоритмы.НастроитьИнтерактивнуюВыгрузкуВМоделиСервиса = Истина;
//Настройки.Алгоритмы.ОписаниеОграниченийПередачиДанных = Истина; // [АРМ], при наличии отборов
//Настройки.Алгоритмы.ОписаниеЗначенийПоУмолчанию = Истина; // работа в модели сервиса
//Настройки.Алгоритмы.ПредставлениеОтбораИнтерактивнойВыгрузки = Истина; // кроме [РИБ]
//Настройки.ВариантыНастроекОбмена = Новый ТаблицаЗначений; // определяется в ПриПолученииВариантовНастроекОбмена()
//Настройки.ИмяПланаОбменаДляПереходаНаНовыйОбмен = """";
//Настройки.ПланОбменаИспользуетсяВМоделиСервиса = Ложь; // [Модель сервиса]
//Настройки.ИмяКонфигурацииИсточника = ""Источник""; // [Модель сервиса]
//Настройки.ИмяКонфигурацииПриемника = Новый Структура(""Приемник""); // [Модель сервиса], только если НЕ [ОУФ]
// }}
Настройки.Алгоритмы.ПриПолученииВариантовНастроекОбмена = Истина;
Настройки.Алгоритмы.ПриПолученииОписанияВариантаНастройки = Истина;
Настройки.НазначениеПланаОбмена = ""СинхронизацияСДругойПрограммой""; // РИБ | РИБСФильтром
//Настройки.Алгоритмы.ПриСохраненииНастроекСинхронизацииДанных = Истина;
//Настройки.Алгоритмы.ПередНастройкойСинхронизацииДанных = Истина;
//Настройки.НаличиеПравилКонвертацииОбязательно = Истина;
//Настройки.РежимВыборочнойРегистрации = Неопределено;
// {{ Вариант [УОП] }}
Настройки.ПредупреждатьОНесоответствииВерсийПравилОбмена = Истина;
// {{ Вариант [ОУФ] }}
//Настройки.Алгоритмы.ОбработчикПроверкиОграниченийПередачиДанных = Истина;
//Настройки.Алгоритмы.ОбработчикПроверкиЗначенийПоУмолчанию = Истина;
//Настройки.Алгоритмы.ПриОпределенииПоддерживаемыхОбъектовФормата = Истина;
//Настройки.Алгоритмы.ПриОпределенииПоддерживаемыхКорреспондентомОбъектовФормата = Истина;
Настройки.ЭтоПланОбменаXDTO = Истина;
Настройки.ФорматОбмена = ""http://v8.1c.ru/edi/edi_stnd/EnterpriseData"";
Настройки.РасширенияФорматаОбмена = Новый Соответствие;
ВерсииФормата = Новый Соответствие;
ОбменДаннымиПереопределяемый.ПриПолученииДоступныхВерсийФормата(ВерсииФормата);
Настройки.ВерсииФорматаОбмена = ВерсииФормата;
Настройки.ПравилаРегистрацииВМенеджере = Истина; // если Ложь, тогда правила регистрации хранятся в макете ПравилаРегистрации
Настройки.ИмяМенеджераРегистрации = ""МодульМенеджераРегистрации""; // Не задавать, если ПравилаРегистрацииВМенеджере = Ложь
КонецПроцедуры
// Заполняет коллекцию вариантов настроек, предусмотренных для плана обмена.
//
// Параметры:
// ВариантыНастроекОбмена - ТаблицаЗначений - коллекция вариантов настроек обмена, см. описание возвращаемого значения
// функции НастройкиПланаОбменаПоУмолчанию общего модуля ОбменДаннымиСервер.
// ПараметрыКонтекста - Структура - см. ОбменДаннымиСервер.ПараметрыКонтекстаПолученияВариантовНастроек,
// описание возвращаемого значения функции.
//
Процедура ПриПолученииВариантовНастроекОбмена(ВариантыНастроекОбмена, ПараметрыКонтекста) Экспорт
ВариантНастройки = ВариантыНастроекОбмена.Добавить();
ВариантНастройки.ИдентификаторНастройки = ""ОбменПоПравилам"";
ВариантНастройки.КорреспондентВМоделиСервиса = Ложь;
ВариантНастройки.КорреспондентВЛокальномРежиме = Истина;
ВариантНастройки = ВариантыНастроекОбмена.Добавить();
ВариантНастройки.ИдентификаторНастройки = ""УниверсальныйОбмен"";
ВариантНастройки.КорреспондентВМоделиСервиса = Ложь;
ВариантНастройки.КорреспондентВЛокальномРежиме = Истина;
ВариантНастройки = ВариантыНастроекОбмена.Добавить();
ВариантНастройки.ИдентификаторНастройки = ""УниверсальныйОбменТолькоОтправка"";
ВариантНастройки.КорреспондентВМоделиСервиса = Ложь;
ВариантНастройки.КорреспондентВЛокальномРежиме = Истина;
КонецПроцедуры
// Заполняет набор параметров, определяющих вариант настройки обмена.
//
// Параметры:
// ОписаниеВарианта - Структура - набор варианта настройки по умолчанию,
// см. ОбменДаннымиСервер.ОписаниеВариантаНастройкиОбменаПоУмолчанию,
// описание возвращаемого значения.
// ИдентификаторНастройки - Строка - идентификатор варианта настройки обмена.
// ПараметрыКонтекста - Структура - см. ОбменДаннымиСервер.ПараметрыКонтекстаПолученияОписанияВариантаНастройки,
// описание возвращаемого значения функции.
//
Процедура ПриПолученииОписанияВариантаНастройки(ОписаниеВарианта, ИдентификаторНастройки, ПараметрыКонтекста) Экспорт
// {{ не используются в рассматриваемых примерах:
//ОписаниеВарианта.ИмяФормыСозданияНачальногоОбраза = """"; // [РИБ]
//ОписаниеВарианта.ЗначенияПоУмолчанию = Новый Структура; // [АРМ]
// }}
ОписаниеВарианта.ИспользоватьПомощникСозданияОбменаДанными = Истина;
ОписаниеВарианта.ИмяФайлаНастроекДляПриемника = ""Exchange settings"";
ОписаниеВарианта.ИспользуемыеТранспортыСообщенийОбмена.Добавить(Перечисления.ВидыТранспортаСообщенийОбмена.FILE); // добавить необходимые варианты
ОписаниеВарианта.ПодробнаяИнформацияПоОбмену = """";
//ОписаниеВарианта.ИмяФормыПомощникаНастройкиСинхронизацииДанных = """";
//ОписаниеВарианта.ИмяКонфигурацииКорреспондента = """";
//ОписаниеВарианта.НаименованиеКонфигурацииКорреспондента = """";
//ОписаниеВарианта.ПутьКФайлуКомплектаПравилНаПользовательскомСайте = """";
//ОписаниеВарианта.ПутьКФайлуКомплектаПравилВКаталогеШаблонов = """";
//ОписаниеВарианта.ОбщиеДанныеУзлов = """";
//ОписаниеВарианта.ПояснениеДляНастройкиПараметровУчета = """";
//ОписаниеВарианта.ПоддерживаетсяСопоставлениеДанных = Истина;
Если ИдентификаторНастройки = ""ОбменПоПравилам"" Тогда
ОписаниеВарианта.ЗаголовокКомандыДляСозданияНовогоОбменаДанными = ""Обмен по правилам обмена (УОП)"";
ОписаниеВарианта.ЗаголовокПомощникаСозданияОбмена = ""Новый обмен по правилам"";
ОписаниеВарианта.ЗаголовокУзлаПланаОбмена = ""Приемник (обмен по правилам)"";
ОписаниеВарианта.КраткаяИнформацияПоОбмену = ""Обмен по правилам обмена, с использованием Конвертации данных 2.1"";
ИначеЕсли ИдентификаторНастройки = ""УниверсальныйОбмен"" Тогда
ОписаниеВарианта.ЗаголовокКомандыДляСозданияНовогоОбменаДанными = ""Универсальный обмен (ОУФ)"";
ОписаниеВарианта.ЗаголовокПомощникаСозданияОбмена = ""Новый универсальный обмен"";
ОписаниеВарианта.ЗаголовокУзлаПланаОбмена = ""Приемник (универсальный обмен)"";
ОписаниеВарианта.КраткаяИнформацияПоОбмену = ""Обмен через универсальный формат (EnterpriceData)"";
//ОписаниеВарианта.РасширениеФормата = """"; // [ОУФ]
ИначеЕсли ИдентификаторНастройки = ""УниверсальныйОбменТолькоОтправка"" Тогда
ОписаниеВарианта.ЗаголовокКомандыДляСозданияНовогоОбменаДанными = ""Универсальный обмен (ОУФ), только отправка"";
ОписаниеВарианта.ЗаголовокПомощникаСозданияОбмена = ""Новый универсальный обмен (только отправка)"";
ОписаниеВарианта.ЗаголовокУзлаПланаОбмена = ""Приемник (универсальный обмен, только отправка)"";
ОписаниеВарианта.КраткаяИнформацияПоОбмену = ""Обмен через универсальный формат (EnterpriceData), используется только для выгрузки данных в формат"";
//ОписаниеВарианта.РасширениеФормата = """"; // [ОУФ]
КонецЕсли;
ОтборыУзла = Новый Структура;
ОтборыУзла.Вставить(""ВерсияФорматаОбмена"", ""1.6""); // Ключи структуры повторяют реквизиты ПО, предназначенные для отборов
ОписаниеВарианта.Отборы = ОтборыУзла;
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#КонецЕсли
"}
},
{0,
{"06 План обмена - модуль формы узла",0,0,"ПланОбмена=","
//!!! Не забудьте подключить обработчики к форме
#Область ОбработчикиСобытийФормы
&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
Оповестить(""Запись_УзелПланаОбмена"");
КонецПроцедуры
&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
ОбменДаннымиСервер.ФормаУзлаПриЗаписиНаСервере(ТекущийОбъект, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
ОбменДаннымиКлиент.ПередЗаписью(ЭтотОбъект, Отказ, ПараметрыЗаписи);
КонецПроцедуры
#КонецОбласти
"}
},
{0,
{"07 Подписки - модуль обработчиков событий",0,0,"ПланОбмена=","#Область СлужебныйПрограммныйИнтерфейс
Процедура <?""Имя плана обмена"">РегистрацияДокументаПередЗаписью(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт
ОбменДаннымиСобытия.МеханизмРегистрацииОбъектовПередЗаписьюДокумента(""<?""Имя плана обмена"">"", Источник, Отказ, РежимЗаписи, РежимПроведения);
КонецПроцедуры
Процедура <?""Имя плана обмена"">РегистрацияПередЗаписью(Источник, Отказ) Экспорт
ОбменДаннымиСобытия.МеханизмРегистрацииОбъектовПередЗаписью(""<?""Имя плана обмена"">"", Источник, Отказ);
КонецПроцедуры
Процедура <?""Имя плана обмена"">РегистрацияНабораПередЗаписью(Источник, Отказ, Замещение) Экспорт
ОбменДаннымиСобытия.МеханизмРегистрацииОбъектовПередЗаписьюРегистра(""<?""Имя плана обмена"">"", Источник, Отказ, Замещение);
КонецПроцедуры
Процедура <?""Имя плана обмена"">РегистрацияНабораРасчетаПередЗаписью(Источник, Отказ, Замещение, ТолькоЗапись, ЗаписьФактическогоПериодаДействия, ЗаписьПерерасчетов) Экспорт
ОбменДаннымиСобытия.МеханизмРегистрацииОбъектовПередЗаписьюРегистра(""<?""Имя плана обмена"">"", Источник, Отказ, Замещение);
КонецПроцедуры
Процедура <?""Имя плана обмена"">РегистрацияКонстантыПередЗаписью(Источник, Отказ) Экспорт
ОбменДаннымиСобытия.МеханизмРегистрацииОбъектовПередЗаписьюКонстанты(""<?""Имя плана обмена"">"", Источник, Отказ);
КонецПроцедуры
Процедура <?""Имя плана обмена"">РегистрацияУдаленияПередУдалением(Источник, Отказ) Экспорт
ОбменДаннымиСобытия.МеханизмРегистрацииОбъектовПередУдалением(""<?""Имя плана обмена"">"", Источник, Отказ);
КонецПроцедуры
#КонецОбласти
"}
},
{0,
{"08 Вставка в обработчики объектов: ПередЗаписью, ПриЗаписи, ПередУдалением",0,0,"ПланОбмена=","Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;"}
}
},
{5,
{"EN",1,0,"",""},
{0,
{"04 Exchange plan - append the new exchange plan",0,0,"ExchPlan=","SubsystemExchangePlans.Add(Metadata.ExchangePlans.<?""Exchange plan name"">);"}
},
{0,
{"05 Exchange plan - manager module",0,0,"ПланОбмена=","#If Server Or ThickClientOrdinaryApplication Or ExternalConnection Then
#Region Public
#Region ForCallsFromOtherSubsystems
// Fills in the settings that affect the exchange plan usage.
//
// Parameters:
// Settings - Structure - default exchange plan settings, see DataExchangeServer.
// DefaultExchangePlanSettings details of the function return value.
//
Procedure WhenReceivingSettings(Settings) Export
// {{ Not use at this case:
//Settings.Algorithms.AccountingSettingsCheckHandler = True; // through internet
//Settings.Algorithms.OnConnectToCorrespondent = True; // through internet or directly
//Settings.Algorithms.OnSendSenderData = True;
//Settings.Algorithms.OnGetSenderData = True;
//Settings.Algorithms.SetUpInteractiveExport = True; // except [DIB]
//Settings.Algorithms.SetUpInteractiveExportSaaS = True;
//Settings.Algorithms.DataTransferRestrictionsDetails = True;
//Settings.Algorithms.DefaultValuesDetails = True; // [SaaS]
//Settings.Algorithms.InteractiveExportFilterPresentation = True; // except [DIB]
//Settings.ExchangeSettingsOptions = New ValueTable; // see OnGetExchangeSettingsOptions()
//Settings.ExchangePlanNameToMigrateToNewExchange = """";
//Settings.ExchangePlanUsedInSaaS = False; // [SaaS]
//Settings.SourceConfigurationName = ""Suurce""; // [SaaS]
//Settings.DestinationConfigurationName = New Structure(""Destination""); // [SaaS], is NOT [XDTO]
// }}
Settings.Algorithms.OnGetExchangeSettingsOptions = True;
Settings.Algorithms.OnGetSettingOptionDetails = True;
Settings.ExchangePlanPurpose = ""SynchronizationWithAnotherApplication""; // DIB
//Settings.Algorithms.OnSaveDataSynchronizationSettings = True;
//Settings.Algorithms.BeforeDataSynchronizationSetup = True;
//Settings.ConversionRulesAreRequired = True;
//Settings.SelectiveRegistrationMode = Undefined;
// {{ Option [XML] }}
Settings.WarnAboutExchangeRuleVersionMismatch = True;
// {{ Option [XDTO] }}
//Settings.Algorithms.DataTransferLimitsCheckHandler = True;
//Settings.Algorithms.DefaultValuesCheckHandler = True;
//Settings.Algorithms.OnDefineSupportedFormatObjects = True;
//Settings.Algorithms.OnDefineFormatObjectsSupportedByCorrespondent = True;
Settings.IsXDTOExchangePlan = True;
Settings.ExchangeFormat = ""http://v8.1c.ru/edi/edi_stnd/EnterpriseData"";
Settings.ExchangeFormatExtensions = New Map;
FormatVersions = New Map;
DataExchangeOverridable.OnGetAvailableFormatVersions(FormatVersions);
Settings.ExchangeFormatVersions = FormatVersions;
Settings.RulesForRegisteringInManager = True;
Settings.RegistrationManagerName = ""RegisteringManagerModule""; // module name
EndProcedure
// Populates the collection of configuration options provided for the exchange plan.
//
// Parameters:
// ExchangeSettingsOptions - ValueTable - a collection of exchange setting options, see return
// value description of the DefaultExchangePlanSettings function of the DataExchangeServer common module.
// ContextParameters - Structure - see DataExchangeServer.ContextParametersOfSettingsOptionsReceipt
// details of the function return value.
//
Procedure OnGetExchangeSettingsOptions(ExchangeSettingsOptions, ContextParameters) Export
SetupOption = ExchangeSettingsOptions.Add();
SetupOption.SettingID = ""XMLExchange"";
SetupOption.CorrespondentInSaaS = False;
SetupOption.CorrespondentInLocalMode = True;
SetupOption = ExchangeSettingsOptions.Add();
SetupOption.SettingID = ""XDTOExchange"";
SetupOption.CorrespondentInSaaS = False;
SetupOption.CorrespondentInLocalMode = True;
SetupOption = ExchangeSettingsOptions.Add();
SetupOption.SettingID = ""XDTOExchangeSendOnly"";
SetupOption.CorrespondentInSaaS = False;
SetupOption.CorrespondentInLocalMode = True;
EndProcedure
// Fills in a set of parameters that define the exchange settings option.
//
// Parameters:
// OptionDetails - Structure - a default setting option set, see DataExchangeServer.
// DefaultExchangeSettingOptionDetails, details of the return
// value.
// SettingID - String - an ID of data exchange settings option.
// ContextParameters - Structure - see DataExchangeServer.
// ContextParametersSettingOptionDetailsReceiving details of the function return value.
//
Procedure OnGetSettingOptionDetails(OptionDetails, SettingID, ContextParameters) Export
// {{ Not use at this case:
//OptionDetails.InitialImageCreationFormName = """"; // [DIB]
//OptionDetails.DefaultValues = New Structure; //
// }}
OptionDetails.UseDataExchangeCreationWizard = True;
OptionDetails.SettingsFileNameForDestination = ""Exchange settings"";
OptionDetails.UsedExchangeMessagesTransports.Add(Enums.ExchangeMessagesTransportTypes.FILE); // Add the necessary options
OptionDetails.DetailedExchangeInformation = """";
//OptionDetails.DataSyncSettingsWizardFormName = """";
//OptionDetails.CorrespondentConfigurationName = """";
//OptionDetails.CorrespondentConfigurationDescription = """";
//OptionDetails.PathToRulesSetFileOnUserSite = """";
//OptionDetails.PathToRulesSetFileInTemplateDirectory = """";
//OptionDetails.CommonNodeData = """";
//OptionDetails.AccountingSettingsSetupNote = """";
//OptionDetails.DataMappingSupported = True;
If SettingID = ""XMLExchange"" Then
OptionDetails.NewDataExchangeCreationCommandTitle = ""Data exchange by rules (XML)"";
OptionDetails.ExchangeCreateWizardTitle = ""The new data exchange process by rules"";
OptionDetails.ExchangePlanNodeTitle = ""Destination (data exchange by rules)"";
OptionDetails.BriefExchangeInfo = ""Data exchange by rules, using Conversasion data v 2.1"";
ElsIf SettingID = ""XDTOExchange"" Then
OptionDetails.NewDataExchangeCreationCommandTitle = ""Universal data exchange (XDTO)"";
OptionDetails.ExchangeCreateWizardTitle = ""The new universal data exchange"";
OptionDetails.ExchangePlanNodeTitle = ""Destination (universal data exchange)"";
OptionDetails.BriefExchangeInfo = ""Data exchange by universal format (EnterpriceData)"";
//OptionDetails.FormatExtension = """"; // [XDTO]
ElsIf SettingID = ""XDTOExchangeSendOnly"" Then
OptionDetails.NewDataExchangeCreationCommandTitle = ""Universal data exchange (XDTO), send only"";
OptionDetails.ExchangeCreateWizardTitle = ""The new universal data exchange (send only)"";
OptionDetails.ExchangePlanNodeTitle = ""Destination (universal data exchange, send only)"";
OptionDetails.BriefExchangeInfo = ""Data exchange by universal format (EnterpriceData), send only"";
//OptionDetails.FormatExtension = """"; // [XDTO]
EndIf;
NodeFilters = New Structure;
NodeFilters.Insert(""ExchangeFormatVersion"", ""1.6""); // Structure's keys are repeated the exchange plan requisites names
OptionDetails.Filters = NodeFilters;
EndProcedure
#EndRegion
#EndRegion
#EndIf
"}
},
{0,
{"06 Exchange plan - node form module",0,0,"ПланОбмена=","
//!!! Don't ferget to connect the form event handlers to form
#Region FormEventHandlers
&AtClient
Procedure OnClose(Exit)
Notify(""Record_ExchangePlanNode"");
EndProcedure
&AtServer
Procedure OnWriteAtServer(Cancel, CurrentObject, WriteParameters)
DataExchangeServer.NodeFormOnWriteAtServer(CurrentObject, Cancel);
EndProcedure
&AtClient
Procedure BeforeWrite(Cancel, WriteParameters)
DataExchangeClient.BeforeWrite(ThisObject, Cancel, WriteParameters);
EndProcedure
#EndRegion
"}
},
{0,
{"07 Event subscriptions - event handlers module",0,0,"ПланОбмена=","#Region Internal
Procedure <?""Exchange plan name"">DocumentRegistrationBeforeWrite(Source, Cancel, WriteMode, PostingMode) Export
DataExchangeEvents.ObjectsRegistrationMechanismBeforeWriteDocument(""<?""Exchange plan name"">"", Source, Cancel, WriteMode, PostingMode);
EndProcedure
Procedure <?""Exchange plan name"">RegistrationBeforeWrite(Source, Cancel) Export
DataExchangeEvents.ObjectsRegistrationMechanismBeforeWrite(""<?""Exchange plan name"">"", Source, Cancel);
EndProcedure
Procedure <?""Exchange plan name"">RecordsSetRegistrationBeforeWrite(Source, Cancel, Replacing) Export
DataExchangeEvents.ObjectsRegistrationMechanismBeforeWriteRegister(""<?""Exchange plan name"">"", Source, Cancel, Replacing);
EndProcedure
Procedure <?""Exchange plan name"">CalculationRecordsSetRegistrationBeforeWrite(Source, Cancel, Replacing, WriteOnly, WriteActualActionPeriod, WriteRecalculations) Export
DataExchangeEvents.ObjectsRegistrationMechanismBeforeWriteRegister(""<?""Exchange plan name"">"", Source, Cancel, Replacing);
EndProcedure
Procedure <?""Exchange plan name"">ConstantRegistrationBeforeWrite(Source, Cancel) Export
DataExchangeEvents.ObjectsRegistrationMechanismBeforeWriteConstant(""<?""Exchange plan name"">"", Source, Cancel);
EndProcedure
Procedure <?""Exchange plan name"">DeleteRegistrationBeforeDelete(Source, Cancel) Export
DataExchangeEvents.ObjectsRegistrationMechanismBeforeDelete(""<?""Exchange plan name"">"", Source, Cancel);
EndProcedure
#EndRegion
"}
},
{0,
{"08 Starting code of the object handlers: BeforeWrite, OnWrite, BeforDelete",0,0,"ПланОбмена=","If DataExchange.Load Then
Return;
EndIf;"}
}
}
}
}