|
5 | 5 | Перем Лог; |
6 | 6 |
|
7 | 7 | Перем Настройки; // Соответствие |
8 | | -Перем НаименованиеПараметров; // Строка |
9 | 8 | Перем СинонимыПараметров; // Массив строка |
10 | 9 | Перем ИндексПолей; // Соответствие ключа и типа элемента массива |
11 | 10 | Перем ИндексСинонимовПолей; // Соответствие синонимов полей и наименования полей |
12 | | -Перем ИндексПараметров; // Соответствие текущий настроек |
13 | 11 | Перем КонструкторИспользован; // Булево, признак использования объекта при чтении из соответсвтия |
14 | 12 | Перем ИнтерфейсКонструктора; // Класс объект ИнтерфейсОбъекта |
15 | 13 | Перем МожетСодержатьПроизвольныеПоля; // Булево, признак возможность не указывать поля |
|
18 | 16 |
|
19 | 17 | // Создает и возвращает новый экземпляр конструктора параметров |
20 | 18 | // |
21 | | -// Параметры: |
22 | | -// НовоеНаименованиеПараметров - Строка - наименование конструктора параметров |
23 | | -// |
24 | 19 | // Возвращаемое значение: |
25 | 20 | // Объект.КонструкторПараметров - ссылка на новый элемент класса <КонструкторПараметров> |
26 | 21 | // |
27 | | -Функция НовыеПараметры(Знач НовоеНаименованиеПараметров) Экспорт |
| 22 | +Функция НовыеПараметры() Экспорт |
28 | 23 |
|
29 | | - НовыйЭлемент = Новый КонструкторПараметров(ИндексПараметров, НовоеНаименованиеПараметров); |
| 24 | + НовыйЭлемент = Новый КонструкторПараметров(); |
30 | 25 |
|
31 | 26 | Возврат НовыйЭлемент; |
32 | 27 |
|
33 | 28 | КонецФункции |
34 | 29 |
|
35 | | -// Возвращает текущее наименование параметров |
36 | | -// |
37 | | -// Возвращаемое значение: |
38 | | -// Строка - текущее наименование параметров |
39 | | -// |
40 | | -Функция ПолучитьНаименованиеПараметров() Экспорт |
41 | | - |
42 | | - Возврат НаименованиеПараметров; |
43 | | - |
44 | | -КонецФункции |
45 | 30 |
|
46 | 31 | // (Заготовка) Устанавливает дополнительное наименование узла параметров |
47 | 32 | // |
|
58 | 43 |
|
59 | 44 | КонецФункции |
60 | 45 |
|
61 | | -// Устанавливает новое наименование параметров |
62 | | -// |
63 | | -// Параметры: |
64 | | -// НовоеНаименованиеПараметров - Строка - новое наименование текущего класса параметров |
65 | | -// |
66 | | -// Возвращаемое значение: |
67 | | -// Объект.КонструкторПараметров - ссылка на текущий элемент класса <КонструкторПараметров> |
68 | | -// |
69 | | -Функция Наименование(НовоеНаименованиеПараметров) Экспорт |
70 | | - |
71 | | - НаименованиеПараметров = НовоеНаименованиеПараметров; |
72 | | - |
73 | | - ИндексПараметров.Вставить(НаименованиеПараметров, ЭтотОбъект); |
74 | | - |
75 | | - Возврат ЭтотОбъект; |
76 | | - |
77 | | -КонецФункции |
78 | | - |
79 | 46 | // Выполняет заполнение описания параметров из произвольного объекта |
80 | 47 | // |
81 | 48 | // Параметры: |
|
86 | 53 | // |
87 | 54 | Функция ИзКласса(КлассОбъект) Экспорт |
88 | 55 |
|
89 | | - НовоеНаименованиеПараметров = Строка(ТипЗнч(КлассОбъект)); |
90 | | - |
91 | 56 | РефлекторОбъекта = Новый РефлекторОбъекта(КлассОбъект); |
92 | 57 | РезультатПроверки = РефлекторОбъекта.РеализуетИнтерфейс(ИнтерфейсКонструктора); |
93 | 58 |
|
94 | 59 | Если Не РезультатПроверки Тогда |
95 | 60 | ВызватьИсключение СтрШаблон("Класс <%1> не реализовывает интерфейс <%2>", КлассОбъект, ИнтерфейсКонструктора); |
96 | 61 | КонецЕсли; |
97 | 62 |
|
98 | | - Если РефлекторОбъекта.ЕстьФункция("ПолучитьНаименованиеПараметров") Тогда |
99 | | - НовоеНаименованиеПараметров = КлассОбъект.ПолучитьНаименованиеПараметров(); |
100 | | - КонецЕсли; |
101 | | - |
102 | | - Наименование(НовоеНаименованиеПараметров); |
103 | | - |
104 | 63 | КлассОбъект.ОписаниеПараметров(ЭтотОбъект); |
105 | 64 |
|
106 | 65 | Возврат ЭтотОбъект; |
|
109 | 68 |
|
110 | 69 | // Копирует текущий конструктор параметров |
111 | 70 | // |
112 | | -// Параметры: |
113 | | -// НовоеНаименованиеПараметров - Строка - наименование конструктора в индексе параметров |
114 | | -// |
115 | 71 | // Возвращаемое значение: |
116 | 72 | // Объект.КонструкторПараметров - ссылка на текущий элемент класса <КонструкторПараметров> |
117 | 73 | // |
118 | | -Функция Скопировать(Знач НовоеНаименованиеПараметров = Неопределено) Экспорт |
| 74 | +Функция Скопировать() Экспорт |
119 | 75 |
|
120 | | - Лог.Отладка("Выполняю копирование элемента <%1> -> <%2>", НаименованиеПараметров, НовоеНаименованиеПараметров); |
121 | | - НовыйЭлемент = НовыеПараметры(НовоеНаименованиеПараметров); |
| 76 | + Лог.Отладка("Выполняю копирование элемента конструтор парамеров"); |
| 77 | + НовыйЭлемент = НовыеПараметры(); |
122 | 78 |
|
123 | 79 | Если МожетСодержатьПроизвольныеПоля Тогда |
124 | 80 | НовыйЭлемент.ПроизвольныеПоля(); |
|
247 | 203 |
|
248 | 204 | Если Тип("ПолеКонструктораПараметров") = ТипЗнч(ОбъектПоля) Тогда |
249 | 205 |
|
250 | | - ОбъектПоля = ОбъектПоля.Конструктор(); |
| 206 | + ОбъектПоля = ОбъектПоля.Конструктор().Скопировать(); |
251 | 207 |
|
252 | 208 | ИначеЕсли НЕ Тип("КонструкторПараметров") = ТипЗнч(ОбъектПоля) Тогда |
253 | 209 |
|
254 | 210 | ОбъектПоля = ПолучитьПолеПараметров(ОбъектПоля); |
255 | 211 |
|
| 212 | + Иначе |
| 213 | + |
| 214 | + ОбъектПоля = ОбъектПоля.Скопировать(); |
| 215 | + |
256 | 216 | КонецЕсли; |
257 | 217 |
|
258 | | - Лог.Отладка("Добавляю поле объект <%1>, <%2>, <%3>", ИмяПоля, ТипПоля, ОбъектПоля.ПолучитьНаименованиеПараметров()); |
| 218 | + Лог.Отладка("Добавляю поле объект <%1>, <%2>", ИмяПоля, ТипПоля); |
259 | 219 |
|
260 | 220 | Возврат Поле(ИмяПоля, ТипПоля, ОбъектПоля, , ОбъектПоля); |
261 | 221 |
|
|
420 | 380 |
|
421 | 381 | КонструкторИспользован = Истина; |
422 | 382 |
|
423 | | - Лог.Отладка("Читаю настройки <%1>", НаименованиеПараметров); |
424 | | - |
425 | 383 | ПрочитатьИзСоответствия(ВходящиеСоответствие); |
426 | 384 |
|
427 | 385 | ПоказатьНастройкиВРежимеОтладки(Настройки); |
|
478 | 436 |
|
479 | 437 | ОписаниеПоля = КлассПоля.ОписаниеПоля(); |
480 | 438 |
|
| 439 | + Если ТипЗнч(ОписаниеПоля.ОбъектЭлемента) = Тип("КонструкторПараметров") Тогда |
| 440 | + ОбъектЭлемента = ОписаниеПоля.ОбъектЭлемента.Скопировать(); |
| 441 | + Иначе |
| 442 | + ОбъектЭлемента = ОписаниеПоля.ОбъектЭлемента; |
| 443 | + КонецЕсли; |
| 444 | + |
481 | 445 | НовыйЭлемент.Поле(ОписаниеПоля.Имя, |
482 | 446 | ОписаниеПоля.Тип, |
483 | 447 | ОписаниеПоля.ЗначениеПоУмолчанию, |
484 | 448 | ОписаниеПоля.ТипЭлемента, |
485 | | - ОписаниеПоля.ОбъектЭлемента |
| 449 | + ОбъектЭлемента |
486 | 450 | ); |
487 | 451 |
|
488 | 452 | КонецЦикла; |
|
509 | 473 | ВызватьИсключение СтрШаблон("Класс <%1> не реализовывает интерфейс <%2>", КлассОбъект, ИнтерфейсКонструктора); |
510 | 474 | КонецЕсли; |
511 | 475 |
|
512 | | - Если РефлекторОбъекта.ЕстьФункция("ПолучитьНаименованиеПараметров") Тогда |
513 | | - ИмяПараметров = КлассОбъект.ПолучитьНаименованиеПараметров(); |
514 | | - КонецЕсли; |
515 | | - |
516 | | - Если ПараметрЕстьВИндексе(ИмяПараметров) Тогда |
517 | | - Возврат ИндексПараметров[ИмяПараметров]; |
518 | | - КонецЕсли; |
519 | | - |
520 | | - КонструкторПараметровКласса = НовыеПараметры(ИмяПараметров); |
| 476 | + КонструкторПараметровКласса = НовыеПараметры(); |
521 | 477 |
|
522 | 478 | КлассОбъект.ОписаниеПараметров(КонструкторПараметровКласса); |
523 | 479 |
|
524 | 480 | Возврат КонструкторПараметровКласса; |
525 | 481 |
|
526 | 482 | КонецФункции |
527 | 483 |
|
528 | | -Функция ПараметрЕстьВИндексе(Знач ИмяПараметров) |
529 | | - Возврат НЕ ИндексПараметров[ИмяПараметров] = Неопределено; |
530 | | -КонецФункции |
531 | | - |
532 | 484 | Функция ЗначениеВСоответствие(Значение) |
533 | 485 |
|
534 | 486 | ТипЗначения = ТипЗнч(Значение); |
|
704 | 656 |
|
705 | 657 | КонецПроцедуры |
706 | 658 |
|
707 | | -Процедура ПриСозданииОбъекта(ВходящийИндексПараметров, Знач НовоеНаименованиеПараметров) |
| 659 | +Процедура ПриСозданииОбъекта() |
708 | 660 |
|
709 | | - НаименованиеПараметров = НовоеНаименованиеПараметров; |
710 | 661 | Настройки = Новый Соответствие; |
711 | 662 | ИндексПолей = Новый Соответствие; |
712 | 663 | ИндексСинонимовПолей = Новый Соответствие; |
713 | | - ИндексПараметров = ВходящийИндексПараметров; |
714 | | - |
715 | | - Если ИндексПараметров = Неопределено Тогда |
716 | | - ИндексПараметров = Новый Соответствие; |
717 | | - КонецЕсли; |
718 | | - |
719 | | - Если ЗначениеЗаполнено(НаименованиеПараметров) Тогда |
720 | | - ИндексПараметров.Вставить(НаименованиеПараметров, ЭтотОбъект); |
721 | | - КонецЕсли; |
722 | 664 |
|
723 | 665 | КонструкторИспользован = Ложь; |
724 | 666 | МожетСодержатьПроизвольныеПоля = Ложь; |
|
0 commit comments