3_1_2_189

This commit is contained in:
Компания 1С committed 2019-10-25 17:01:00 +03:00
1 parent 5bd3d521a7
commit 0295e038df
77 files changed
+1587 -924

No files matched your search

@@ -105,7 +105,7 @@
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("Шрифт", Новый Шрифт(,,Истина));
Элемент.Оформление.УстановитьЗначениеПараметра("Шрифт", ШрифтыСтиля.ВажнаяНадписьШрифт);
КонецПроцедуры
@@ -82,7 +82,7 @@
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("Шрифт", Новый Шрифт(,,Истина));
Элемент.Оформление.УстановитьЗначениеПараметра("Шрифт", ШрифтыСтиля.ВажнаяНадписьШрифт);
КонецПроцедуры
@@ -482,6 +482,10 @@
<horizontalAlign>Left</horizontalAlign>
<autoFill>true</autoFill>
</autoCommandBar>
<handlers>
<event>OnOpen</event>
<name>ПриОткрытии</name>
</handlers>
<handlers>
<event>OnCreateAtServer</event>
<name>ПриСозданииНаСервере</name>
@@ -521,11 +525,10 @@
</extInfo>
</attributes>
<attributes>
<name>РеквизитВладельца</name>
<id>2</id>
<name>ПредлагатьЗагрузкуКлассификатора</name>
<id>3</id>
<valueType>
<types>String</types>
<stringQualifiers/>
<types>Boolean</types>
</valueType>
<view>
<common>true</common>
@@ -17,9 +17,9 @@
ЕстьИсточникЗагрузкиДанных = Метаданные.Обработки.Найти(ИмяОбработки) <> Неопределено;
МожноОбновлятьКлассификатор = Ложь;
Если ОбщегоНазначения.ПодсистемаСуществует("ИнтернетПоддержкаПользователей.РаботаСКлассификаторами") Тогда
МодульРаботаСКлассификаторами = ОбщегоНазначения.ОбщийМодуль("РаботаСКлассификаторами");
МожноОбновлятьКлассификатор = МодульРаботаСКлассификаторами.ИнтерактивнаяЗагрузкаКлассификаторовДоступна();
ИмяОбработки = "ЗагрузкаКлассификатораБанков";
Если Метаданные.Обработки.Найти(ИмяОбработки) <> Неопределено Тогда
МожноОбновлятьКлассификатор = Обработки[ИмяОбработки].ДоступнаЗагрузкаКлассификатора();
КонецЕсли;
МожноОбновлятьКлассификатор = МожноОбновлятьКлассификатор
@@ -28,14 +28,26 @@
Элементы.ФормаЗагрузитьКлассификатор.Видимость = МожноОбновлятьКлассификатор И ЕстьИсточникЗагрузкиДанных;
Если Не Пользователи.ЭтоПолноправныйПользователь() Или Не МожноОбновлятьКлассификатор Тогда
Если ОбщегоНазначения.РазделениеВключено() Или ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ() Тогда
ТолькоПросмотр = Истина;
КонецЕсли;
ПредлагатьЗагрузкуКлассификатора = МожноОбновлятьКлассификатор И ЕстьИсточникЗагрузкиДанных
И РаботаСБанкамиСлужебный.ПредлагатьЗагрузкуКлассификатора();
ПереключитьВидимостьНедействующихБанков(Ложь);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Если ПредлагатьЗагрузкуКлассификатора Тогда
ПодключитьОбработчикОжидания("ПредложитьЗагрузкуКлассификатора", 1, Истина);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
@@ -79,4 +91,11 @@
КонецПроцедуры
&НаКлиенте
Процедура ПредложитьЗагрузкуКлассификатора()
РаботаСБанкамиКлиент.ПредложитьЗагрузкуКлассификатора();
КонецПроцедуры
#КонецОбласти
@@ -493,6 +493,10 @@
<id>-1</id>
<horizontalAlign>Left</horizontalAlign>
</autoCommandBar>
<handlers>
<event>OnOpen</event>
<name>ПриОткрытии</name>
</handlers>
<handlers>
<event>OnCreateAtServer</event>
<name>ПриСозданииНаСервере</name>
@@ -536,6 +540,19 @@
<getInvisibleFieldPresentations>true</getInvisibleFieldPresentations>
</extInfo>
</attributes>
<attributes>
<name>ПредлагатьЗагрузкуКлассификатора</name>
<id>2</id>
<valueType>
<types>Boolean</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<formCommands>
<name>ЗагрузитьКлассификатор</name>
<title>
@@ -17,9 +17,9 @@
ЕстьИсточникЗагрузкиДанных = Метаданные.Обработки.Найти(ИмяОбработки) <> Неопределено;
МожноОбновлятьКлассификатор = Ложь;
Если ОбщегоНазначения.ПодсистемаСуществует("ИнтернетПоддержкаПользователей.РаботаСКлассификаторами") Тогда
МодульРаботаСКлассификаторами = ОбщегоНазначения.ОбщийМодуль("РаботаСКлассификаторами");
МожноОбновлятьКлассификатор = МодульРаботаСКлассификаторами.ИнтерактивнаяЗагрузкаКлассификаторовДоступна();
ИмяОбработки = "ЗагрузкаКлассификатораБанков";
Если Метаданные.Обработки.Найти(ИмяОбработки) <> Неопределено Тогда
МожноОбновлятьКлассификатор = Обработки[ИмяОбработки].ДоступнаЗагрузкаКлассификатора();
КонецЕсли;
МожноОбновлятьКлассификатор = МожноОбновлятьКлассификатор
@@ -32,6 +32,18 @@
ТолькоПросмотр = Истина;
КонецЕсли;
ПредлагатьЗагрузкуКлассификатора = МожноОбновлятьКлассификатор И ЕстьИсточникЗагрузкиДанных
И РаботаСБанкамиСлужебный.ПредлагатьЗагрузкуКлассификатора();
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Если ПредлагатьЗагрузкуКлассификатора Тогда
ПодключитьОбработчикОжидания("ПредложитьЗагрузкуКлассификатора", 1, Истина);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
@@ -40,12 +52,13 @@
&НаКлиенте
Процедура ЗагрузитьКлассификатор(Команда)
РаботаСБанкамиКлиент.ОткрытьФормуЗагрузкиКлассификатора();
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
@@ -63,4 +76,11 @@
КонецПроцедуры
&НаКлиенте
Процедура ПредложитьЗагрузкуКлассификатора()
РаботаСБанкамиКлиент.ПредложитьЗагрузкуКлассификатора();
КонецПроцедуры
#КонецОбласти
@@ -362,7 +362,16 @@
</notDefaultUseAlwaysAttributes>
<main>true</main>
<extInfo xsi:type="form:DynamicListExtInfo">
<queryText>ВЫБРАТЬ
<queryText>ВЫБРАТЬ РАЗЛИЧНЫЕ
ИсполнителиЗадачПереопределяемый.РольИсполнителя КАК РольИсполнителя
ПОМЕСТИТЬ Исполнители
ИЗ
РегистрСведений.ИсполнителиЗадач КАК ИсполнителиЗадачПереопределяемый
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.РолиИсполнителей КАК СправочникРолиИсполнителейПереопределяемый
ПО (ИсполнителиЗадачПереопределяемый.РольИсполнителя = СправочникРолиИсполнителейПереопределяемый.Ссылка)
;
ВЫБРАТЬ
СправочникРолиИсполнителейПереопределяемый.Ссылка,
СправочникРолиИсполнителейПереопределяемый.ПометкаУдаления,
СправочникРолиИсполнителейПереопределяемый.Предопределенный,
@@ -377,12 +386,12 @@
КОГДА СправочникРолиИсполнителейПереопределяемый.ИспользуетсяСОбъектамиАдресации
ТОГДА ИСТИНА
КОГДА СправочникРолиИсполнителейПереопределяемый.Ссылка В
(ВЫБРАТЬ ПЕРВЫЕ 1
РегистрСведений.ИсполнителиЗадач.РольИсполнителя.Ссылка
(ВЫБРАТЬ
Исполнители.РольИсполнителя
ИЗ
РегистрСведений.ИсполнителиЗадач
Исполнители
ГДЕ
РегистрСведений.ИсполнителиЗадач.РольИсполнителя = СправочникРолиИсполнителейПереопределяемый.Ссылка)
Исполнители.РольИсполнителя = СправочникРолиИсполнителейПереопределяемый.Ссылка)
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ КАК ЕстьИсполнители,
@@ -565,7 +565,16 @@
</notDefaultUseAlwaysAttributes>
<main>true</main>
<extInfo xsi:type="form:DynamicListExtInfo">
<queryText>ВЫБРАТЬ
<queryText>ВЫБРАТЬ РАЗЛИЧНЫЕ
ИсполнителиЗадачПереопределяемый.РольИсполнителя КАК РольИсполнителя
ПОМЕСТИТЬ Исполнители
ИЗ
РегистрСведений.ИсполнителиЗадач КАК ИсполнителиЗадачПереопределяемый
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.РолиИсполнителей КАК СправочникРолиИсполнителейПереопределяемый
ПО (ИсполнителиЗадачПереопределяемый.РольИсполнителя = СправочникРолиИсполнителейПереопределяемый.Ссылка)
;
ВЫБРАТЬ
СправочникРолиИсполнителейПереопределяемый.Ссылка,
СправочникРолиИсполнителейПереопределяемый.ПометкаУдаления,
СправочникРолиИсполнителейПереопределяемый.Предопределенный,
@@ -580,12 +589,12 @@
КОГДА СправочникРолиИсполнителейПереопределяемый.ИспользуетсяСОбъектамиАдресации
ТОГДА ИСТИНА
КОГДА СправочникРолиИсполнителейПереопределяемый.Ссылка В
(ВЫБРАТЬ ПЕРВЫЕ 1
РегистрСведений.ИсполнителиЗадач.РольИсполнителя.Ссылка
(ВЫБРАТЬ
Исполнители.РольИсполнителя
ИЗ
РегистрСведений.ИсполнителиЗадач
Исполнители
ГДЕ
РегистрСведений.ИсполнителиЗадач.РольИсполнителя = СправочникРолиИсполнителейПереопределяемый.Ссылка)
Исполнители.РольИсполнителя = СправочникРолиИсполнителейПереопределяемый.Ссылка)
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ КАК ЕстьИсполнители,
@@ -598,7 +607,6 @@
ГДЕ
РолиИсполнителейНазначениеПереопределяемый.ТипПользователей = Значение(Справочник.Пользователи.ПустаяСсылка)</queryText>
<mainTable>Catalog.РолиИсполнителей</mainTable>
<dynamicDataRead>true</dynamicDataRead>
<autoFillAvailableFields>true</autoFillAvailableFields>
<customQuery>true</customQuery>
<autoSaveUserSettings>true</autoSaveUserSettings>
@@ -33,9 +33,18 @@
&НаСервере
Процедура НастроитьОтображениеСпискаРолей()
ТекстЗапроса = "ВЫБРАТЬ РАЗЛИЧНЫЕ
| ИсполнителиЗадач.РольИсполнителя КАК РольИсполнителя
|ПОМЕСТИТЬ Исполнители
|ИЗ
| РегистрСведений.ИсполнителиЗадач КАК ИсполнителиЗадач
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.РолиИсполнителей КАК СправочникРолиИсполнителей
| ПО ИсполнителиЗадач.РольИсполнителя = СправочникРолиИсполнителей.Ссылка
|;";
Если ПолучитьФункциональнуюОпцию("ИспользоватьВнешнихПользователей") Тогда
ТекстЗапроса = "ВЫБРАТЬ
ТекстЗапроса = ТекстЗапроса + "ВЫБРАТЬ
| СправочникРолиИсполнителей.Ссылка,
| СправочникРолиИсполнителей.ПометкаУдаления,
| СправочникРолиИсполнителей.Предопределенный,
@@ -50,12 +59,12 @@
| КОГДА СправочникРолиИсполнителей.ИспользуетсяСОбъектамиАдресации
| ТОГДА ИСТИНА
| КОГДА СправочникРолиИсполнителей.Ссылка В
| (ВЫБРАТЬ ПЕРВЫЕ 1
| РегистрСведений.ИсполнителиЗадач.РольИсполнителя.Ссылка
| (ВЫБРАТЬ
| Исполнители.РольИсполнителя
| ИЗ
| РегистрСведений.ИсполнителиЗадач
| Исполнители
| ГДЕ
| РегистрСведений.ИсполнителиЗадач.РольИсполнителя = СправочникРолиИсполнителей.Ссылка)
| Исполнители.РольИсполнителя = СправочникРолиИсполнителей.Ссылка)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ЕстьИсполнители,
@@ -66,7 +75,7 @@
Иначе
ТекстЗапроса = "ВЫБРАТЬ
ТекстЗапроса = ТекстЗапроса + "ВЫБРАТЬ
| СправочникРолиИсполнителей.Ссылка,
| СправочникРолиИсполнителей.ПометкаУдаления,
| СправочникРолиИсполнителей.Предопределенный,
@@ -81,12 +90,12 @@
| КОГДА СправочникРолиИсполнителей.ИспользуетсяСОбъектамиАдресации
| ТОГДА ИСТИНА
| КОГДА СправочникРолиИсполнителей.Ссылка В
| (ВЫБРАТЬ ПЕРВЫЕ 1
| РегистрСведений.ИсполнителиЗадач.РольИсполнителя.Ссылка
| (ВЫБРАТЬ
| Исполнители.РольИсполнителя
| ИЗ
| РегистрСведений.ИсполнителиЗадач
| Исполнители
| ГДЕ
| РегистрСведений.ИсполнителиЗадач.РольИсполнителя = СправочникРолиИсполнителей.Ссылка)
| Исполнители.РольИсполнителя = СправочникРолиИсполнителей.Ссылка)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ЕстьИсполнители,
@@ -160,4 +160,22 @@
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
// Регистрирует к обработке в обработчике обновления
//
Процедура ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию(Параметры) Экспорт
МультиязычностьСервер.ЗарегистрироватьПредопределенныеЭлементыДляОбновления(Параметры, Метаданные.Справочники.РолиИсполнителей);
КонецПроцедуры
Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию(Параметры) Экспорт
МультиязычностьСервер.ОбновитьПредставленияПредопределенныхЭлементов(Параметры, Метаданные.Справочники.РолиИсполнителей);
КонецПроцедуры
#КонецОбласти
#КонецЕсли
@@ -58,11 +58,11 @@
#Область СлужебныйПрограммныйИнтерфейс
// Определяет данные страны по справочнику стран или классификатору ОКСМ.
// Определяет данные страны по справочнику стран или классификатору стран.
// Рекомендуется использовать УправлениеКонтактнойИнформацией.ДанныеСтраныМира.
//
// Параметры:
// КодСтраны - Строка, Число - код ОКСМ страны. Если не указано, то поиск по коду не производится.
// КодСтраны - Строка, Число - код страны по классификатору. Если не указано, то поиск по коду не производится.
// Наименование - Строка - наименование страны. Если не указано, то поиск по наименованию не производится.
//
// Возвращаемое значение:
@@ -79,11 +79,11 @@
Возврат УправлениеКонтактнойИнформацией.ДанныеСтраныМира(КодСтраны, Наименование);
КонецФункции
// Определяет данные страны по классификатору ОКСМ.
// Определяет данные страны по классификатору стран мира.
// Рекомендуется использовать УправлениеКонтактнойИнформацией.ДанныеКлассификатораСтранМираПоКоду.
//
// Параметры:
// Код - Строка, Число - код ОКСМ страны.
// Код - Строка, Число - код страны по классификатору.
// ТипКода - Строка - Варианты: КодСтраны (по умолчанию), Альфа2, Альфа3.
//
// Возвращаемое значение:
@@ -99,7 +99,7 @@
Возврат УправлениеКонтактнойИнформацией.ДанныеКлассификатораСтранМираПоКоду(Код, ТипКода);
КонецФункции
// Определяет данные страны по классификатору ОКСМ.
// Определяет данные страны по классификатору.
// Рекомендуется использовать УправлениеКонтактнойИнформацией.ДанныеКлассификатораСтранМираПоНаименованию.
//
// Параметры:
@@ -155,15 +155,18 @@
//
Процедура ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию(Параметры) Экспорт
ЗначенияОКСМ = УправлениеКонтактнойИнформацией.СтраныУчастникиЕАЭС();
// Если наименования были обновлены, то их следует обновить
МультиязычностьСервер.ЗарегистрироватьПредопределенныеЭлементыДляОбновления(Параметры, Метаданные.Справочники.СтраныМира);
НоваяСтрока = ЗначенияОКСМ.Добавить();
СписокСтран = УправлениеКонтактнойИнформацией.СтраныУчастникиЕАЭС();
НоваяСтрока = СписокСтран.Добавить();
НоваяСтрока.Код = "203";
НоваяСтрока.Наименование = НСтр("ru = 'ЧЕШСКАЯ РЕСПУБЛИКА'");
НоваяСтрока.КодАльфа2 = "CZ";
НоваяСтрока.КодАльфа3 = "CZE";
НоваяСтрока = ЗначенияОКСМ.Добавить();
НоваяСтрока = СписокСтран.Добавить();
НоваяСтрока.Код = "270";
НоваяСтрока.Наименование = НСтр("ru = 'ГАМБИЯ'");
НоваяСтрока.КодАльфа2 = "GM";
@@ -194,7 +197,7 @@
| И (СтраныМира.КодАльфа3 = СписокСтран.КодАльфа3)
| И (СтраныМира.НаименованиеПолное = СписокСтран.НаименованиеПолное)";
Запрос.УстановитьПараметр("СписокСтран", ЗначенияОКСМ);
Запрос.УстановитьПараметр("СписокСтран", СписокСтран);
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
СтраныКОбработке = РезультатЗапроса.ВыгрузитьКолонку("Ссылка");
@@ -205,6 +208,7 @@
Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию(Параметры) Экспорт
СтранаМираСсылка = ОбновлениеИнформационнойБазы.ВыбратьСсылкиДляОбработки(Параметры.Очередь, "Справочник.СтраныМира");
НастройкиОбновления = МультиязычностьСервер.НастройкиОбновлениеПредопределенныхДанных(Метаданные.Справочники.СтраныМира);
ПроблемныхОбъектов = 0;
ОбъектовОбработано = 0;
@@ -212,14 +216,19 @@
Пока СтранаМираСсылка.Следующий() Цикл
Попытка
ДанныеОКСМ = УправлениеКонтактнойИнформацией.ДанныеКлассификатораСтранМираПоКоду(СтранаМираСсылка.Ссылка.Код);
ДанныеКлассификатора = УправлениеКонтактнойИнформацией.ДанныеКлассификатораСтранМираПоКоду(СтранаМираСсылка.Ссылка.Код);
Если ДанныеОКСМ <> Неопределено Тогда
Если ДанныеКлассификатора <> Неопределено Тогда
СтранаМира = СтранаМираСсылка.Ссылка.ПолучитьОбъект();
ЗаполнитьЗначенияСвойств(СтранаМира, ДанныеОКСМ);
ЗаполнитьЗначенияСвойств(СтранаМира, ДанныеКлассификатора);
ОбновлениеИнформационнойБазы.ЗаписатьДанные(СтранаМира);
КонецЕсли;
// Обновление наименований
Если НастройкиОбновления.ЛокализуемыеРеквизитыОбъекта.Количество() > 0 Тогда
МультиязычностьСервер.ОбновитьМультиязычныеСтрокиПредопределенногоЭлемента(СтранаМираСсылка, НастройкиОбновления);
КонецЕсли;
ОбъектовОбработано = ОбъектовОбработано + 1;
Исключение
@@ -238,13 +247,13 @@
Если ОбъектовОбработано = 0 И ПроблемныхОбъектов <> 0 Тогда
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Процедуре ОбновитьСтраныМираПоОКСМ не удалось обработать некоторые страны мира(пропущены): %1'"),
НСтр("ru = 'Процедуре ОбработатьДанныеДляПереходаНаНовуюВерсию не удалось обработать некоторые страны мира(пропущены): %1'"),
ПроблемныхОбъектов);
ВызватьИсключение ТекстСообщения;
Иначе
ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация,
Метаданные.Справочники.СтраныМира,,
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Процедура ОбновитьСтраныМираПоОКСМ обработала очередную порцию стран мира: %1'"),
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Процедура обновления обработала очередную порцию стран мира: %1'"),
ОбъектовОбработано));
КонецЕсли;
@@ -181,19 +181,13 @@
ЭлементСпискаВФорме = СписокЗначенийВФорме.НайтиПоИдентификатору(СтрокаИдентификатор);
Значение = ЭлементСпискаВФорме.Значение;
Если Значение = Неопределено
Или Значение = Тип("Неопределено")
Или Значение = Новый ОписаниеТипов("Неопределено")
Или Не ЗначениеЗаполнено(Значение) Тогда
ОтменаЗавершенияРедактирования = Истина; // Запрет пустых значений.
Иначе
Для Каждого ЭлементСпискаДубльВФорме Из СписокЗначенийВФорме Цикл
Если ЭлементСпискаДубльВФорме.Значение = Значение И ЭлементСпискаДубльВФорме <> ЭлементСпискаВФорме Тогда
ОтменаЗавершенияРедактирования = Истина; // Запрет дублей.
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
ЕстьИнформация = (ЭлементСпискаДоНачалаИзменения <> Неопределено И ЭлементСпискаДоНачалаИзменения.Идентификатор = СтрокаИдентификатор);
Если Не ОтменаЗавершенияРедактирования И ЕстьИнформация И ЭлементСпискаДоНачалаИзменения.Значение <> Значение Тогда
@@ -1095,7 +1095,7 @@
ПодстрокаПослеВхождения = Сред(ПредставлениеАдреса, Позиция + СтрДлина(Строка));
СтрокаСПодсветкой = Новый ФорматированнаяСтрока(
ПодстрокаДоВхождения,
Новый ФорматированнаяСтрока(ПодстрокаВхождения, Новый Шрифт( , , Истина), РезультатУспехЦвет),
Новый ФорматированнаяСтрока(ПодстрокаВхождения, ШрифтСтиляВажнаяНадписьШрифт(), РезультатУспехЦвет),
ПодстрокаПослеВхождения);
Результат.Добавить(ПредставлениеАдреса, СтрокаСПодсветкой);
КонецЕсли;
@@ -1118,7 +1118,7 @@
КонецЕсли;
КонецЦикла;
ПредставлениеВыбор = Новый ФорматированнаяСтрока(Текст, Новый Шрифт(,, Истина), РезультатУспехЦвет);
ПредставлениеВыбор = Новый ФорматированнаяСтрока(Текст, ШрифтСтиляВажнаяНадписьШрифт(), РезультатУспехЦвет);
ДлинаТекста = СтрДлина(Текст);
Для Каждого Почта Из ПолучателиСообщения Цикл
Адрес = ПочтовыйАдресИзПредставления(Почта.Значение);
@@ -1135,4 +1135,10 @@
КонецФункции
&НаКлиенте
Функция ШрифтСтиляВажнаяНадписьШрифт()
Возврат ОбщегоНазначенияКлиент.ШрифтСтиля("ВажнаяНадписьШрифт");
КонецФункции
#КонецОбласти
@@ -1406,9 +1406,7 @@
<title>
<key>ru</key>
<value>Удаление расширения необратимо.
Чтобы установить расширение повторно после удаления, проверьте что
имеется файл с этим расширением или его можно скачать из Интернет.</value>
Будут потеряны сделанные настройки (например, варианты отчетов).</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
@@ -1417,8 +1415,8 @@
</userVisible>
<toolTip>
<key>ru</key>
<value>Чтобы сохранить расширение в файл выберите команду
&quot;Сохранить как ...&quot; в контекстном меню.</value>
<value>1. Если требуется обновить расширение следует использовать кнопку Обновить.
2. Если требуется временно отключить расширение следует снять флажок &quot;Подключать расширение при входе&quot;.</value>
</toolTip>
<toolTipRepresentation>ShowBottom</toolTipRepresentation>
<extendedTooltip>
@@ -1443,6 +1441,81 @@
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</items>
<items xsi:type="form:Decoration">
<name>ПредупреждениеПередУдалениемРасширенияБезДанныхРезервноеКопирование</name>
<id>234</id>
<title>
<key>ru</key>
<value>Перед удалением расширения рекомендуется
выполнить резервное копирование информационной базы.</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ПредупреждениеПередУдалениемРасширенияБезДанныхРезервноеКопированиеРасширеннаяПодсказка</name>
<id>236</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ПредупреждениеПередУдалениемРасширенияБезДанныхРезервноеКопированиеКонтекстноеМеню</name>
<id>235</id>
<autoFill>true</autoFill>
</contextMenu>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<handlers>
<event>URLProcessing</event>
<name>ПредупреждениеПередУдалениемРасширенияРезервноеКопированиеОбработкаНавигационнойСсылки</name>
</handlers>
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</items>
<items xsi:type="form:Decoration">
<name>ПредупреждениеПередУдалениемРасширенияБезДанныхТекстУдалить</name>
<id>240</id>
<title>
<key>ru</key>
<value>&lt;&lt;Удалить выделенные расширения?>>
&lt;&lt;Удалить расширение?>></value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ПредупреждениеПередУдалениемРасширенияБезДанныхТекстУдалитьРасширеннаяПодсказка</name>
<id>242</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ПредупреждениеПередУдалениемРасширенияБезДанныхТекстУдалитьКонтекстноеМеню</name>
<id>241</id>
<autoFill>true</autoFill>
</contextMenu>
<formatted>true</formatted>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>КоманднаяПанель12</name>
<id>222</id>
@@ -1568,15 +1641,17 @@
<userVisible>
<common>true</common>
</userVisible>
<toolTip>
<key>ru</key>
<value>Ознакомьтесь с документацией по расширению,
которую можно получить от поставщика расширения.</value>
</toolTip>
<toolTipRepresentation>ShowBottom</toolTipRepresentation>
<extendedTooltip>
<name>ПредупреждениеПередУдалениемРасширенияРасширеннаяПодсказка</name>
<id>230</id>
<title>
<key>ru</key>
<value>1. Ознакомьтесь с документацией по расширению,
которую можно получить от поставщика расширения.
2. Если требуется обновить расширение следует использовать кнопку Обновить.
3. Если требуется временно отключить расширение следует снять флажок &quot;Подключать расширение при входе&quot;.</value>
</title>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
@@ -1597,7 +1672,7 @@
</extInfo>
</items>
<items xsi:type="form:Decoration">
<name>ПредупреждениеПередУдалениемРасширенияРезервноеКопирование</name>
<name>ПредупреждениеПередУдалениемРасширенияСДаннымиРезервноеКопирование</name>
<id>205</id>
<title>
<key>ru</key>
@@ -1610,7 +1685,7 @@
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ПредупреждениеПередУдалениемРасширенияРезервноеКопированиеРасширеннаяПодсказка</name>
<name>ПредупреждениеПередУдалениемРасширенияСДаннымиРезервноеКопированиеРасширеннаяПодсказка</name>
<id>207</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -1620,7 +1695,7 @@
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ПредупреждениеПередУдалениемРасширенияРезервноеКопированиеКонтекстноеМеню</name>
<name>ПредупреждениеПередУдалениемРасширенияСДаннымиРезервноеКопированиеКонтекстноеМеню</name>
<id>206</id>
<autoFill>true</autoFill>
</contextMenu>
@@ -1636,7 +1711,7 @@
</extInfo>
</items>
<items xsi:type="form:Decoration">
<name>ПредупреждениеПередУдалениемРасширенияТекстУдалить</name>
<name>ПредупреждениеПередУдалениемРасширенияСДаннымиТекстУдалить</name>
<id>208</id>
<title>
<key>ru</key>
@@ -1649,7 +1724,7 @@
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ПредупреждениеПередУдалениемРасширенияТекстУдалитьРасширеннаяПодсказка</name>
<name>ПредупреждениеПередУдалениемРасширенияСДаннымиТекстУдалитьРасширеннаяПодсказка</name>
<id>210</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -1659,7 +1734,7 @@
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ПредупреждениеПередУдалениемРасширенияТекстУдалитьКонтекстноеМеню</name>
<name>ПредупреждениеПередУдалениемРасширенияСДаннымиТекстУдалитьКонтекстноеМеню</name>
<id>209</id>
<autoFill>true</autoFill>
</contextMenu>
@@ -38,20 +38,25 @@
КонецЕсли;
Если ОбщегоНазначения.РазделениеВключено() Тогда
Элементы.ПредупреждениеПередУдалениемРасширенияРезервноеКопирование.Видимость = Ложь;
Элементы.ПредупреждениеПередУдалениемРасширенияСДаннымиРезервноеКопирование.Видимость = Ложь;
Элементы.ПредупреждениеПередУдалениемРасширенияБезДанныхРезервноеКопирование.Видимость = Ложь;
ИначеЕсли ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РезервноеКопированиеИБ") Тогда
МодульРезервноеКопированиеИБСервер = ОбщегоНазначения.ОбщийМодуль("РезервноеКопированиеИБСервер");
Элементы.ПредупреждениеПередУдалениемРасширенияРезервноеКопирование.Заголовок =
Элементы.ПредупреждениеПередУдалениемРасширенияСДаннымиРезервноеКопирование.Заголовок =
СтроковыеФункции.ФорматированнаяСтрока(НСтр("ru = 'Перед удалением расширения рекомендуется
|<a href=""%1"">выполнить резервное копирование информационной базы</a>.'"),
МодульРезервноеКопированиеИБСервер.НавигационнаяСсылкаОбработкиРезервногоКопирования());
Элементы.ПредупреждениеПередУдалениемРасширенияБезДанныхРезервноеКопирование.Заголовок =
Элементы.ПредупреждениеПередУдалениемРасширенияСДаннымиРезервноеКопирование.Заголовок;
КонецЕсли;
Если Параметры.МножественныйВыбор Тогда
Элементы.ПредупреждениеПередУдалениемРасширенияТекстУдалить.Заголовок = НСтр("ru = 'Удалить выделенные расширения?'");
Элементы.ПредупреждениеПередУдалениемРасширенияСДаннымиТекстУдалить.Заголовок = НСтр("ru = 'Удалить выделенные расширения?'");
Иначе
Элементы.ПредупреждениеПередУдалениемРасширенияТекстУдалить.Заголовок = НСтр("ru = 'Удалить расширение?'");
Элементы.ПредупреждениеПередУдалениемРасширенияСДаннымиТекстУдалить.Заголовок = НСтр("ru = 'Удалить расширение?'");
КонецЕсли;
Элементы.ПредупреждениеПередУдалениемРасширенияБезДанныхТекстУдалить.Заголовок =
Элементы.ПредупреждениеПередУдалениемРасширенияСДаннымиТекстУдалить.Заголовок;
Если ТекущаяСтраница = Элементы.ПередУдалениемРасширенияСДанными
Или ТекущаяСтраница = Элементы.ПередУдалениемРасширенияБезДанных
@@ -2896,7 +2896,7 @@
Если Строка.ДоступенСписокЗначений
Или ОтчетыКлиентСервер.ЭтоВидСравненияСписка(Строка.ВидСравнения) Тогда
Значение = ОтчетыКлиентСервер.ЗначенияСписком(ТекущееЗначение, Истина);
Значение = ОтчетыКлиентСервер.ЗначенияСписком(ТекущееЗначение);
Значение.ЗаполнитьПометки(Истина);
Если Строка.ДоступныеЗначения <> Неопределено Тогда
@@ -1212,18 +1212,25 @@
Сведения.ЭлементПользовательскойНастройки.ИдентификаторПользовательскойНастройки,
Элемент.ДоступныеТипы);
ОграничиватьВыборУказаннымиЗначениями = ДоступныеЗначения <> Неопределено;
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("Отмеченные", ОтчетыКлиентСервер.ЗначенияСписком(ТекущееЗначение));
ПараметрыОткрытия.Вставить("ОписаниеТипов", Элемент.ДоступныеТипы);
ПараметрыОткрытия.Вставить("ЗначенияДляВыбора", ЗначенияДляВыбора);
ПараметрыОткрытия.Вставить("ЗначенияДляВыбораЗаполнены", Элемент.СписокВыбора.Количество() > 0);
ПараметрыОткрытия.Вставить("ОграничиватьВыборУказаннымиЗначениями", ДоступныеЗначения <> Неопределено);
ПараметрыОткрытия.Вставить("ОграничиватьВыборУказаннымиЗначениями", ОграничиватьВыборУказаннымиЗначениями);
ПараметрыОткрытия.Вставить("Представление", Элемент.Заголовок);
ПараметрыОткрытия.Вставить("ПараметрыВыбора", Новый Массив(ПараметрыВыбора));
ПараметрыОткрытия.Вставить("ВыборГруппИЭлементов", ВыборГруппИЭлементов);
ПараметрыОткрытия.Вставить("БыстрыйВыбор", ?(ОписаниеНастроек = Неопределено, Ложь, ОписаниеНастроек.БыстрыйВыбор));
Обработчик = Новый ОписаниеОповещения("ЗавершитьВыборИзСписка", ЭтотОбъект, Сведения.ЭлементПользовательскойНастройки);
ПараметрыОбработчика = Новый Структура;
ПараметрыОбработчика.Вставить("ЭлементПользовательскойНастройки", Сведения.ЭлементПользовательскойНастройки);
ПараметрыОбработчика.Вставить("ОграничиватьВыборУказаннымиЗначениями", ОграничиватьВыборУказаннымиЗначениями);
ПараметрыОбработчика.Вставить("ИмяЭлемента", Элемент.Имя);
Обработчик = Новый ОписаниеОповещения("ЗавершитьВыборИзСписка", ЭтотОбъект, ПараметрыОбработчика);
Режим = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца;
ОткрытьФорму("ОбщаяФорма.ВводЗначенийСпискомСФлажками", ПараметрыОткрытия, ЭтотОбъект,,,, Обработчик, Режим);
@@ -1253,7 +1260,7 @@
КонецФункции
&НаКлиенте
Процедура ЗавершитьВыборИзСписка(Список, ЭлементПользовательскойНастройки) Экспорт
Процедура ЗавершитьВыборИзСписка(Список, ПараметрыВыбора) Экспорт
Если ТипЗнч(Список) <> Тип("СписокЗначений") Тогда
Возврат;
КонецЕсли;
@@ -1265,12 +1272,26 @@
КонецЕсли;
КонецЦикла;
ЭлементПользовательскойНастройки = ПараметрыВыбора.ЭлементПользовательскойНастройки;
ЭлементПользовательскойНастройки.Использование = Истина;
Если ТипЗнч(ЭлементПользовательскойНастройки) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда
ЭлементПользовательскойНастройки.Значение = ВыбранныеЗначения;
Иначе
ЭлементПользовательскойНастройки.ПравоеЗначение = ВыбранныеЗначения;
КонецЕсли;
ЭлементПользовательскойНастройки.Использование = Истина;
Если Не ПараметрыВыбора.ОграничиватьВыборУказаннымиЗначениями Тогда
Элемент = Элементы.Найти(ПараметрыВыбора.ИмяЭлемента);
Если Элемент <> Неопределено Тогда
Элемент.СписокВыбора.Очистить();
Для Каждого ЭлементСписка Из Список Цикл
ЗаполнитьЗначенияСвойств(Элемент.СписокВыбора.Добавить(), ЭлементСписка);
КонецЦикла;
КонецЕсли;
КонецЕсли;
ОтчетыКлиент.КэшироватьЗначениеОтбора(
Список, ЭлементПользовательскойНастройки.ИдентификаторПользовательскойНастройки, Отчет.КомпоновщикНастроек);
@@ -6083,14 +6083,6 @@
| ПО СоставыГруппПользователей.Пользователь = &ТекущийПользователь
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиВариантовОтчетов КАК ДоступныеВариантыОтчетов
| ПО ДоступныеВариантыОтчетов.Вариант = ВариантыОтчетов.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиВариантовОтчетов КАК НедоступныеВариантыОтчетов
| ПО НедоступныеВариантыОтчетов.Вариант = ВариантыОтчетов.Ссылка
| И (НедоступныеВариантыОтчетов.Пользователь В (&ТекущийПользователь, НЕОПРЕДЕЛЕНО)
| ИЛИ ТИПЗНАЧЕНИЯ(&ТекущийПользователь) = ТИП(Справочник.Пользователи)
| И НедоступныеВариантыОтчетов.Пользователь = ЗНАЧЕНИЕ(Справочник.ГруппыПользователей.ВсеПользователи)
| ИЛИ ТИПЗНАЧЕНИЯ(&ТекущийПользователь) = ТИП(Справочник.ВнешниеПользователи)
| И НедоступныеВариантыОтчетов.Пользователь = ЗНАЧЕНИЕ(Справочник.ГруппыВнешнихПользователей.ВсеВнешниеПользователи))
| И НЕ НедоступныеВариантыОтчетов.Видимость
|ГДЕ
| ВариантыОтчетов.Отчет В (&ОтчетыПользователя)
| И (НЕ &ЕстьОтборПоТипамОтчетов
@@ -6106,8 +6098,7 @@
| ИЛИ НЕ ВариантыОтчетов.ТолькоДляАвтора
| ИЛИ ВариантыОтчетов.Автор = &ТекущийПользователь)
| И ЕСТЬNULL(ДоступныеВариантыОтчетов.Пользователь, НЕОПРЕДЕЛЕНО) В (СоставыГруппПользователей.ГруппаПользователей, НЕОПРЕДЕЛЕНО)
| И ЕСТЬNULL(ДоступныеВариантыОтчетов.Видимость, ИСТИНА)
| И НедоступныеВариантыОтчетов.Вариант ЕСТЬ NULL";
| И ЕСТЬNULL(ДоступныеВариантыОтчетов.Видимость, ИСТИНА)";
КонецПроцедуры
@@ -1727,7 +1727,17 @@
МетаданныеОбъекта = Метаданные.НайтиПоТипу(ОписаниеКонтакта.Тип);
СписокПолей = МетаданныеОбъекта.ВводПоСтроке;
Для Каждого Поле Из СписокПолей Цикл
ПолеСтроковогоТипа = Ложь;
Если ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(МетаданныеОбъекта.СтандартныеРеквизиты, Поле.Имя) Тогда
Если МетаданныеОбъекта.СтандартныеРеквизиты[Поле.Имя].Тип.Типы()[0] = Тип("Строка") Тогда
ПолеСтроковогоТипа = Истина;
КонецЕсли;
ИначеЕсли ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(МетаданныеОбъекта.Реквизиты, Поле.Имя) Тогда
Если МетаданныеОбъекта.Реквизиты[Поле.Имя].Тип.Типы()[0] = Тип("Строка") Тогда
ПолеСтроковогоТипа = Истина;
КонецЕсли;
КонецЕсли;
Если ПолеСтроковогоТипа Тогда
УсловиеПолейВводаПоСтроке = УсловиеПолейВводаПоСтроке + " ИЛИ СправочникКонтакт." + Поле.Имя + " ПОДОБНО &ВведеннаяСтрока";
КонецЕсли;
КонецЦикла;
@@ -372,6 +372,8 @@
Для Каждого СтрокаСобытие Из СобытияЖурнала Цикл
Если ПустаяСтрока(СтрокаСобытие.АдресДанных) Тогда
АдресДанных = "";
ИначеЕсли СтрНачинаетсяС(СтрокаСобытие.АдресДанных, "e1cib") Тогда
АдресДанных = ПолучитьИзВременногоХранилища(СтрокаСобытие.АдресДанных);
Иначе
ЧтениеXML = Новый ЧтениеXML();
ЧтениеXML.УстановитьСтроку(СтрокаСобытие.АдресДанных);
@@ -36,13 +36,16 @@
ВнутренняяТаблица= Таблица;
КонецЕсли;
Позиция = 1;
Если ТипЗнч(ВнутренняяТаблица) = Тип("ТаблицаЗначений") Тогда
Для каждого Колонка Из ВнутренняяТаблица.Колонки Цикл
Если ИзвлекатьНеВсеКолонки И СписокКолонокДляИзвлечения.Найти(Колонка.Имя) = Неопределено Тогда
Продолжить;
КонецЕсли;
НоваяКолонка = ЗагрузкаДанныхИзФайлаКлиентСервер.ОписаниеКолонкиМакета(Колонка.Имя, Колонка.ТипЗначения, Колонка.Заголовок, Колонка.Ширина);
НоваяКолонка.Позиция = Позиция;
СписокКолонок.Добавить(НоваяКолонка);
Позиция = Позиция + 1;
КонецЦикла;
ИначеЕсли ТипЗнч(ВнутренняяТаблица) = Тип("Строка") Тогда
Объект = Метаданные.НайтиПоПолномуИмени(ВнутренняяТаблица);
@@ -53,7 +56,9 @@
НоваяКолонка = ЗагрузкаДанныхИзФайлаКлиентСервер.ОписаниеКолонкиМакета(Колонка.Имя, Колонка.Тип, Колонка.Представление());
НоваяКолонка.Подсказка = Колонка.Подсказка;
НоваяКолонка.Ширина = 30;
НоваяКолонка.Позиция = Позиция;
СписокКолонок.Добавить(НоваяКолонка);
Позиция = Позиция + 1;
КонецЦикла;
КонецЕсли;
Возврат СписокКолонок;
@@ -4400,6 +4400,7 @@
События.Вставить("ПриНастройкеПодчиненногоУзлаРИБ", Ложь);
//ОбновлениеВерсииИБ
События.Вставить("ПриДобавленииОбработчиковОбновления", Ложь); // Для обратной совместимости с БТС 1.2.2.
События.Вставить("ПослеОбновленияИнформационнойБазы", Ложь);
События.Вставить("ПриПолученииПриоритетаОбновления", Ложь);
@@ -304,52 +304,6 @@
КонецПроцедуры
// Добавляет отложенный обработчик обновления, который обновляет значения у мультиязычных реквизитов объекта.
// Следует вызывать, если в процедурах ПриНачальномЗаполненииЭлементов у объектов были изменено содержимое
// строк заполнения этих реквизитов. Если пользователь интерактивно изменял значения этих реквизитов,
// то эти изменения будут утеряны.
//
// Параметры:
// Версия - Строка - см. ОбновлениеИнформационнойБазыБСП.ПриДобавленииОбработчиковОбновления.
// Обработчики - ТаблицаЗначений - см. ОбновлениеИнформационнойБазыБСП.ПриДобавленииОбработчиковОбновления.
//
// Возвращаемое значение:
// СтрокаТаблицыЗначений - см. ОбновлениеИнформационнойБазыБСП.ПриДобавленииОбработчиковОбновления.
//
// Пример:
// Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт
// МультиязычностьСервер.ДобавитьОбработчикОбновленияПредставленийПредопределенныхЭлементов("3.1.2.73", Обработчики);
// КонецПроцедуры
//
Функция ДобавитьОбработчикОбновленияПредставленийПредопределенныхЭлементов(Версия, Обработчики) Экспорт
ОбъектыСПредопределеннымиЭлементами = ОбъектыСПредопределеннымиЭлементамиСтрокой();
Обработчик = Обработчики.Добавить();
Обработчик.Версия = Версия;
Обработчик.Идентификатор = Новый УникальныйИдентификатор("d57859ca-1543-4c60-8427-5c2a41832831");
Обработчик.Процедура = "МультиязычностьСервер.ОбновитьПредставленияПредопределенныхЭлементов";
Обработчик.Комментарий = НСтр("ru = 'Обновление наименований предопределенных элементов.
|До завершения обработки наименования этих элементов в ряде случаев будет отображаться некорректно.'");
Обработчик.РежимВыполнения = "Отложенно";
Обработчик.ОчередьОтложеннойОбработки = 2;
Обработчик.ПроцедураЗаполненияДанныхОбновления = "МультиязычностьСервер.ЗарегистрироватьПредопределенныеЭлементыДляОбновления";
Обработчик.ЧитаемыеОбъекты = ОбъектыСПредопределеннымиЭлементами;
Обработчик.ИзменяемыеОбъекты = ОбъектыСПредопределеннымиЭлементами;
Обработчик.ПроцедураПроверки = "ОбновлениеИнформационнойБазы.ДанныеОбновленыНаНовуюВерсиюПрограммы";
Обработчик.БлокируемыеОбъекты = ОбъектыСПредопределеннымиЭлементами;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонтактнаяИнформация") Тогда
Обработчик.ПриоритетыВыполнения = ОбновлениеИнформационнойБазы.ПриоритетыВыполненияОбработчика();
Приоритет = Обработчик.ПриоритетыВыполнения.Добавить();
Приоритет.Процедура = "Справочники.СтраныМира.ОбработатьДанныеДляПереходаНаНовуюВерсию";
Приоритет.Порядок = "Любой";
КонецЕсли;
Возврат Обработчик;
КонецФункции
#КонецОбласти
#Область СлужебныйПрограммныйИнтерфейс
@@ -441,12 +395,6 @@
КонецФункции
Функция ИмяЛокализуемогоРеквизита(ИмяРеквизита, КодЯзыка) Экспорт
Возврат ИмяРеквизита + "_" + КодЯзыка;
КонецФункции
// Возвращает метаданные по коду языка конфигурации.
//
// Параметры:
@@ -464,14 +412,6 @@
Возврат Неопределено;
КонецФункции
Процедура ЗарегистрироватьПредопределенныеЭлементыДляОбновления(Параметры) Экспорт
СтандартныеПодсистемыСервер.ЗарегистрироватьПредопределенныеЭлементыДляОбновления(Параметры);
КонецПроцедуры
Процедура ОбновитьПредставленияПредопределенныхЭлементов(Параметры) Экспорт
СтандартныеПодсистемыСервер.ОбновитьПредставленияПредопределенныхЭлементов(Параметры);
КонецПроцедуры
Функция ИспользуетсяПервыйДополнительныйЯзык() Экспорт
Возврат Константы.ИспользоватьДополнительныйЯзык1.Получить() = Истина;
@@ -484,10 +424,337 @@
КонецФункции
////////////////////////////////////////////////////////////////////////////////
// Начальное заполнение элементов данными.
// Регистрация для отложенного обработчика.
//
Процедура ЗарегистрироватьПредопределенныеЭлементыДляОбновления(Параметры, ОбъектМетаданных = Неопределено) Экспорт
Если ОбъектМетаданных <> Неопределено Тогда
ОбъектыСПредопределеннымиЭлементами = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ОбъектМетаданных);
Иначе
ОбъектыСПредопределеннымиЭлементами = ОбъектыСНачальнымЗаполнением();
КонецЕсли;
ОбъектыКОбработке = Новый Массив;
Язык1 = КодПервогоДополнительногоЯзыкаИнформационнойБазы();
Язык2 = КодВторогоДополнительногоЯзыкаИнформационнойБазы();
ОсновнойЯзык = ОбщегоНазначения.КодОсновногоЯзыка();
ШаблонаЗапроса = "ВЫБРАТЬ
| Таблица.Ссылка КАК Ссылка,
| Таблица.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных,
| %1
|ИЗ
| %2 КАК Таблица
|ГДЕ
| Таблица.Предопределенный = ИСТИНА";
Для каждого ОбъектМетаданныхСЭлементами Из ОбъектыСПредопределеннымиЭлементами Цикл
ЛокализуемыеРеквизитыОбъекта = НаименованияЛокализуемыхРеквизитыОбъекта(ОбъектМетаданныхСЭлементами);
Если ЛокализуемыеРеквизитыОбъекта.Количество() = 0 Тогда
Продолжить;
КонецЕсли;
ИмяРеквизитОбъекта = Новый Массив;
Для каждого РеквизитОбъекта Из ЛокализуемыеРеквизитыОбъекта Цикл
ИмяРеквизита = "Таблица." + РеквизитОбъекта.Ключ;
ИмяРеквизитОбъекта.Добавить(ИмяРеквизита);
Если ЗначениеЗаполнено(Язык1) Тогда
ИмяРеквизитОбъекта.Добавить(ИмяРеквизита + "Язык1");
КонецЕсли;
Если ЗначениеЗаполнено(Язык2) Тогда
ИмяРеквизитОбъекта.Добавить(ИмяРеквизита + "Язык2");
КонецЕсли;
КонецЦикла;
ТекстЗапроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонаЗапроса, СтрСоединить(ИмяРеквизитОбъекта, ", " + Символы.ПС), ОбъектМетаданныхСЭлементами.ПолноеИмя());
Запрос = Новый Запрос(ТекстЗапроса);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Продолжить;
КонецЕсли;
МенеджерОбъекта = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ОбъектМетаданныхСЭлементами.ПолноеИмя());
ПредопределенныеДанные = ПредопределенныеДанныеОбъекта(ОбъектМетаданныхСЭлементами, МенеджерОбъекта, ЛокализуемыеРеквизитыОбъекта);
НастройкиПредопределенныхЭлементов = НастройкиПредопределенныхЭлементов(МенеджерОбъекта, ПредопределенныеДанные);
ДанныеЗапроса = РезультатЗапроса.Выбрать();
Пока ДанныеЗапроса.Следующий() Цикл
Элемент = ПредопределенныеДанные.Найти(ДанныеЗапроса.ИмяПредопределенныхДанных, "ИмяПредопределенныхДанных");
Если Элемент <> Неопределено Тогда
Для каждого ОписаниеРеквизита Из ЛокализуемыеРеквизитыОбъекта Цикл
ИмяРеквизита = ОписаниеРеквизита.Ключ;
Если СтрСравнить(Элемент[ИмяЛокализуемогоРеквизита(ИмяРеквизита, ОсновнойЯзык)], ДанныеЗапроса[ИмяРеквизита]) <> 0 Тогда
ОбъектыКОбработке.Добавить(ДанныеЗапроса.Ссылка);
Продолжить;
КонецЕсли;
Если ЗначениеЗаполнено(Язык1)
И СтрСравнить(Элемент[ИмяЛокализуемогоРеквизита(ИмяРеквизита, Язык1)], ДанныеЗапроса[ИмяРеквизита + "Язык1"]) <> 0 Тогда
ОбъектыКОбработке.Добавить(ДанныеЗапроса.Ссылка);
Продолжить;
КонецЕсли;
Если ЗначениеЗаполнено(Язык2)
И СтрСравнить(Элемент[ИмяЛокализуемогоРеквизита(ИмяРеквизита, Язык2)], ДанныеЗапроса[ИмяРеквизита + "Язык2"]) <> 0 Тогда
ОбъектыКОбработке.Добавить(ДанныеЗапроса.Ссылка);
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецЦикла;
Если ОбъектыКОбработке.Количество() > 0 Тогда
ОбновлениеИнформационнойБазы.ОтметитьКОбработке(Параметры, ОбъектыКОбработке);
КонецЕсли;
КонецПроцедуры
Процедура ОбновитьПредставленияПредопределенныхЭлементов(Параметры, ОбъектМетаданных = Неопределено) Экспорт
ОбъектыДляОбработкиОтсутствуют = Истина;
Параметры.ОбработкаЗавершена = Ложь;
СсылкиНаОбъект = Неопределено;
Если ОбъектМетаданных <> Неопределено Тогда
СсылкиНаОбъект = ОбновлениеИнформационнойБазы.ВыбратьСсылкиДляОбработки(Параметры.Очередь, ОбъектМетаданных.ПолноеИмя());
ОбъектыДляОбработкиОтсутствуют = СсылкиНаОбъект.Количество() = 0;
Иначе
ОбъектыСПредопределеннымиЭлементами = ОбъектыСНачальнымЗаполнением();
Для каждого ОбъектСПредопределеннымиЭлементами Из ОбъектыСПредопределеннымиЭлементами Цикл
СсылкиНаОбъект = ОбновлениеИнформационнойБазы.ВыбратьСсылкиДляОбработки(Параметры.Очередь, ОбъектСПредопределеннымиЭлементами.ПолноеИмя());
Если СсылкиНаОбъект.Количество() > 0 Тогда
ОбъектыДляОбработкиОтсутствуют = Ложь;
ОбъектМетаданных = ОбъектСПредопределеннымиЭлементами;
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если ОбъектыДляОбработкиОтсутствуют Или СсылкиНаОбъект = Неопределено Тогда
Параметры.ОбработкаЗавершена = Истина;
Возврат;
КонецЕсли;
Результат = ОбновитьМультиязычныеСтрокиПредопределенныхЭлементов(СсылкиНаОбъект, ОбъектМетаданных);
Если Результат.ОбъектовОбработано = 0 И Результат.ПроблемныхОбъектов <> 0 Тогда
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Процедуре ОбновитьПредставленияПредопределенныхЭлементов не удалось обработать некоторые элементы(пропущены): %1'"),
Результат.ПроблемныхОбъектов);
ВызватьИсключение ТекстСообщения;
Иначе
ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация,
ОбъектМетаданных,, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Процедура ОбновитьПредставленияПредопределенныхЭлементов обработала очередную порцию элементов: %1'"),
Результат.ОбъектовОбработано));
КонецЕсли;
КонецПроцедуры
Процедура ОбновитьМультиязычныеСтрокиПредопределенногоЭлемента(СсылкаНаОбъект, НастройкиОбновления) Экспорт
ИмяПредопределенныхДанных = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СсылкаНаОбъект.Ссылка, "ИмяПредопределенныхДанных");
Если Не ЗначениеЗаполнено(ИмяПредопределенныхДанных) Тогда
ОбновлениеИнформационнойБазы.ОтметитьВыполнениеОбработки(СсылкаНаОбъект.Ссылка);
Возврат;
КонецЕсли;
Элемент = НастройкиОбновления.ПредопределенныеДанные.Найти(ИмяПредопределенныхДанных, "ИмяПредопределенныхДанных");
Если Элемент <> Неопределено Тогда
НачатьТранзакцию();
Попытка
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить(НастройкиОбновления.ИмяОбъектМетаданных);
ЭлементБлокировки.УстановитьЗначение("Ссылка", СсылкаНаОбъект.Ссылка);
Блокировка.Заблокировать();
Объект = СсылкаНаОбъект.Ссылка.ПолучитьОбъект();
Если Объект = Неопределено Тогда // объект может быть уже удален в других сеансах
Возврат;
КонецЕсли;
ЗаблокироватьДанныеДляРедактирования(СсылкаНаОбъект.Ссылка);
Для каждого ЛокализуемыйРеквизитОбъекта Из НастройкиОбновления.ЛокализуемыеРеквизитыОбъекта Цикл
Имя = ЛокализуемыйРеквизитОбъекта.Ключ;
Объект[Имя] = Элемент[ИмяЛокализуемогоРеквизита(Имя, НастройкиОбновления.ОсновнойЯзык)];
Если ИспользуетсяПервыйДополнительныйЯзык() Тогда
Объект[Имя + "Язык1"] = Элемент[ИмяЛокализуемогоРеквизита(Имя, НастройкиОбновления.КодЯзыка1)];
КонецЕсли;
Если ИспользуетсяВторойДополнительныйЯзык() Тогда
Объект[Имя + "Язык2"] = Элемент[ИмяЛокализуемогоРеквизита(Имя, НастройкиОбновления.КодЯзыка2)];
КонецЕсли;
КонецЦикла;
ОбновлениеИнформационнойБазы.ЗаписатьОбъект(Объект);
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
КонецЕсли;
КонецПроцедуры
Функция НастройкиОбновлениеПредопределенныхДанных(ОбъектМетаданных) Экспорт
Результат = Новый Структура;
Результат.Вставить("ЛокализуемыеРеквизитыОбъекта", Новый Соответствие);
Результат.Вставить("КодЯзыка1", КодПервогоДополнительногоЯзыкаИнформационнойБазы());
Результат.Вставить("КодЯзыка2", КодВторогоДополнительногоЯзыкаИнформационнойБазы());
Результат.Вставить("ОсновнойЯзык", ОбщегоНазначения.КодОсновногоЯзыка());
Результат.Вставить("ИмяОбъектМетаданных", ОбъектМетаданных.ПолноеИмя());
Результат.Вставить("ПредопределенныеДанные", Неопределено);
МенеджерОбъекта = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(Результат.ИмяОбъектМетаданных);
Результат.ЛокализуемыеРеквизитыОбъекта = НаименованияЛокализуемыхРеквизитыОбъекта(ОбъектМетаданных);
Результат.ПредопределенныеДанные = ПредопределенныеДанныеОбъекта(ОбъектМетаданных, МенеджерОбъекта, Результат.ЛокализуемыеРеквизитыОбъекта);
НастройкиПредопределенныхЭлементов(МенеджерОбъекта, Результат.ПредопределенныеДанные);
Возврат Результат;
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Процедура ЗаполнитьЭлементыНачальнымиДанными(ОбновитьМультиязычныеСтроки = Ложь) Экспорт
ОбъектыСНачальнымЗаполнением = ОбъектыСНачальнымЗаполнением();
Языки = ЯзыкиКонфигурации();
ЛокализуемыеРеквизиты = Новый Соответствие;
Для Каждого МетаданныеОбъекта Из ОбъектыСНачальнымЗаполнением Цикл
ЛокализуемыеРеквизитыОбъекта = НаименованияЛокализуемыхРеквизитыОбъекта(МетаданныеОбъекта);
МультиязычныеСтрокиВРеквизитах = МультиязычныеСтрокиВРеквизитах(МетаданныеОбъекта);
МенеджерОбъекта = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(МетаданныеОбъекта.ПолноеИмя());
ПредопределенныеДанные = ПредопределенныеДанныеОбъекта(МетаданныеОбъекта, МенеджерОбъекта, ЛокализуемыеРеквизитыОбъекта);
НастройкиПредопределенныхЭлементов = НастройкиПредопределенныхЭлементов(МенеджерОбъекта, ПредопределенныеДанные);
РеквизитыИсключения = ?(СтрНачинаетсяС(МетаданныеОбъекта.ПолноеИмя(), "ПланВидовХарактеристик"), "ТипЗначения", "");
ПоддерживаетсяИерархия = ПредопределенныеДанные.Колонки.Найти("ЭтоГруппа") <> Неопределено;
НачатьТранзакцию();
Попытка
Для каждого СтрокаТаблицы Из ПредопределенныеДанные Цикл
Если ЗначениеЗаполнено(СтрокаТаблицы.ИмяПредопределенныхДанных) Тогда
СсылкаНаОбъект = МенеджерОбъекта[СтрокаТаблицы.ИмяПредопределенныхДанных];
БлокировкаДанных = Новый БлокировкаДанных;
ЭлементБлокировкиДанных = БлокировкаДанных.Добавить(МетаданныеОбъекта.ПолноеИмя());
ЭлементБлокировкиДанных.УстановитьЗначение("Ссылка", СсылкаНаОбъект);
БлокировкаДанных.Заблокировать();
ЗаполняемыйЭлемент = СсылкаНаОбъект.ПолучитьОбъект();
ИначеЕсли Не ОбновитьМультиязычныеСтроки Тогда
Если ПоддерживаетсяИерархия И СтрокаТаблицы.ЭтоГруппа = Истина Тогда
ЗаполняемыйЭлемент = МенеджерОбъекта.СоздатьГруппу();
Иначе
ЗаполняемыйЭлемент = МенеджерОбъекта.СоздатьЭлемент();
КонецЕсли;
Иначе
Продолжить;
КонецЕсли;
Если Не ОбновитьМультиязычныеСтроки Тогда
ЗаполнитьЗначенияСвойств(ЗаполняемыйЭлемент, СтрокаТаблицы,, РеквизитыИсключения);
КонецЕсли;
Если ЛокализуемыеРеквизитыОбъекта.Количество() > 0 Тогда
Если МультиязычныеСтрокиВРеквизитах Тогда
КодЯзыка = ОбщегоНазначения.КодОсновногоЯзыка();
Если ЗначениеЗаполнено(КодЯзыка) Тогда
Для каждого ИмяЛокализуемогоРеквизита Из ЛокализуемыеРеквизитыОбъекта Цикл
ЗаполняемыйЭлемент[ИмяЛокализуемогоРеквизита.Ключ] = СтрокаТаблицы[ИмяЛокализуемогоРеквизита.Ключ + "_" + КодЯзыка];
КонецЦикла;
КонецЕсли;
КодЯзыка = КодПервогоДополнительногоЯзыкаИнформационнойБазы();
Если ЗначениеЗаполнено(КодЯзыка) Тогда
Для каждого ИмяЛокализуемогоРеквизита Из ЛокализуемыеРеквизитыОбъекта Цикл
ЗаполняемыйЭлемент[ИмяЛокализуемогоРеквизита.Ключ + "Язык1"] = СтрокаТаблицы[ИмяЛокализуемогоРеквизита.Ключ + "_" + КодЯзыка];
КонецЦикла;
КонецЕсли;
КодЯзыка = КодВторогоДополнительногоЯзыкаИнформационнойБазы();
Если ЗначениеЗаполнено(КодЯзыка) Тогда
Для каждого ИмяЛокализуемогоРеквизита Из ЛокализуемыеРеквизитыОбъекта Цикл
ЗаполняемыйЭлемент[ИмяЛокализуемогоРеквизита.Ключ + "Язык2"] = СтрокаТаблицы[ИмяЛокализуемогоРеквизита.Ключ + "_" + КодЯзыка];
КонецЦикла;
КонецЕсли;
Иначе
Для каждого КодЯзыка Из Языки Цикл
НовоеПредставление = ЗаполняемыйЭлемент.Представления.Добавить();
НовоеПредставление.КодЯзыка = КодЯзыка;
Для каждого ИмяЛокализуемогоРеквизита Из ЛокализуемыеРеквизитыОбъекта Цикл
Значение = СтрокаТаблицы[ИмяЛокализуемогоРеквизита.Ключ + "_" + КодЯзыка];
НовоеПредставление[ИмяЛокализуемогоРеквизита.Ключ] = ?(ЗначениеЗаполнено(Значение), Значение, СтрокаТаблицы[ИмяЛокализуемогоРеквизита.Ключ]);
КонецЦикла;
КонецЦикла;
КонецЕсли;
КонецЕсли;
Если Не ОбновитьМультиязычныеСтроки И НастройкиПредопределенныхЭлементов.ПриНачальномЗаполненииЭлемента Тогда
МенеджерОбъекта.ПриНачальномЗаполненииЭлемента(ЗаполняемыйЭлемент, СтрокаТаблицы, НастройкиПредопределенныхЭлементов.ДополнительныеПараметры);
КонецЕсли;
ОбновлениеИнформационнойБазы.ЗаписатьОбъект(ЗаполняемыйЭлемент);
СтрокаТаблицы.Ссылка = ЗаполняемыйЭлемент.Ссылка;
КонецЦикла;
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
КонецЦикла;
КонецПроцедуры
Функция ИмяЛокализуемогоРеквизита(ИмяРеквизита, КодЯзыка)
Возврат ИмяРеквизита + "_" + КодЯзыка;
КонецФункции
// Код основного языка информационной базы
//
// Возвращаемое значение:
@@ -600,7 +867,7 @@
КонецФункции
Функция НаименованияЛокализуемыхРеквизитыОбъекта(ОбъектМетаданных, Префикс = "") Экспорт
Функция НаименованияЛокализуемыхРеквизитыОбъекта(ОбъектМетаданных, Префикс = "")
СписокРеквизитовОбъекта = Новый Соответствие;
Если МультиязычныеСтрокиВРеквизитах(ОбъектМетаданных) Тогда
@@ -679,7 +946,7 @@
КонецФункции
Процедура ПерезаполнитьМультиязычныеСтрокиВОбъектах(Параметры, Адрес) Экспорт
СтандартныеПодсистемыСервер.ЗаполнитьЭлементыНачальнымиДанными(Истина);
ЗаполнитьЭлементыНачальнымиДанными(Истина);
КонецПроцедуры
Функция ЭтоОсновнойЯзык() Экспорт
@@ -704,16 +971,129 @@
КонецФункции
Функция ОбъектыСПредопределеннымиЭлементамиСтрокой()
////////////////////////////////////////////////////////////////////////////////
// Начальное заполнение элементов данными.
Процедура ДобавитьКолонкуТаблицыПредопределенныхДанных(ПредопределенныеДанные, Реквизит, ЛокализуемыеРеквизиты, Языки)
Если ЛокализуемыеРеквизиты[Реквизит.Имя] = Истина Тогда
ПредопределенныеДанные.Колонки.Добавить(Реквизит.Имя, Реквизит.Тип, ПризнакЛокализуемогоРеквизита());
Для каждого Язык Из Языки Цикл
ПредопределенныеДанные.Колонки.Добавить(Реквизит.Имя + "_" + Язык, Реквизит.Тип, ПризнакЛокализуемогоРеквизита());
КонецЦикла;
Иначе
Если ЭтоЛокализуемыйРеквизит(Реквизит) Тогда
ИмяБезСуффикса = ИмяБезСуффиксаЯзык(Реквизит);
ЛокализуемыеРеквизиты.Вставить(ИмяБезСуффикса, Истина);
Для каждого Язык Из Языки Цикл
ПредопределенныеДанные.Колонки.Добавить(ИмяБезСуффикса + "_" + Язык, Реквизит.Тип, ПризнакЛокализуемогоРеквизита());
КонецЦикла;
Иначе
ПредопределенныеДанные.Колонки.Добавить(Реквизит.Имя, Реквизит.Тип);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Функция ОбновитьМультиязычныеСтрокиПредопределенныхЭлементов(СсылкиНаОбъекты, ОбъектМетаданных)
Результат = Новый Структура();
Результат.Вставить("ПроблемныхОбъектов", 0);
Результат.Вставить("ОбъектовОбработано", 0);
НастройкиОбновление = НастройкиОбновлениеПредопределенныхДанных(ОбъектМетаданных);
Пока СсылкиНаОбъекты.Следующий() Цикл
Попытка
ОбновитьМультиязычныеСтрокиПредопределенногоЭлемента(СсылкиНаОбъекты, НастройкиОбновление);
Результат.ОбъектовОбработано = Результат.ОбъектовОбработано + 1;
Исключение
// Если не удалось обработать элемент, повторяем попытку снова.
Результат.ПроблемныхОбъектов = Результат.ПроблемныхОбъектов + 1;
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось обработать элемент: %1 по причине: %2'"),
СсылкиНаОбъекты.Ссылка, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Предупреждение,
ОбъектМетаданных, СсылкиНаОбъекты.Ссылка, ТекстСообщения);
КонецПопытки;
КонецЦикла;
Возврат Результат;
КонецФункции
Функция ИмяБезСуффиксаЯзык(Знач Реквизит)
Возврат Лев(Реквизит.Имя, СтрДлина(Реквизит.Имя) - 5);
КонецФункции
Функция ЭтоЛокализуемыйРеквизит(Реквизит)
Возврат СтрЗаканчиваетсяНа(Реквизит.Имя, "Язык1") Или СтрЗаканчиваетсяНа(Реквизит.Имя, "Язык2");
КонецФункции
Функция ПризнакЛокализуемогоРеквизита()
Возврат "Локализуемый";
КонецФункции
Функция ЯзыкиКонфигурации()
Языки = Новый Массив;
Для каждого Язык Из Метаданные.Языки Цикл
Языки.Добавить(Язык.КодЯзыка);
КонецЦикла;
Возврат Языки;
КонецФункции
Функция ОбъектыСНачальнымЗаполнением()
НастройкиПодсистемы = ОбновлениеИнформационнойБазыСлужебный.НастройкиПодсистемы();
ОбъектыСНачальнымЗаполнением = НастройкиПодсистемы.ОбъектыСНачальнымЗаполнением;
Список = Новый Массив;
Для каждого ОбъектСПредопределеннымиЭлементами Из ОбъектыСНачальнымЗаполнением Цикл
Список.Добавить(ОбъектСПредопределеннымиЭлементами.ПолноеИмя());
Возврат ОбъектыСНачальнымЗаполнением;
КонецФункции
Функция НастройкиПредопределенныхЭлементов(МенеджерОбъекта, ПредопределенныеДанные)
НастройкиЗаполненияЭлементов = Новый Структура;
НастройкиЗаполненияЭлементов.Вставить("ПриНачальномЗаполненииЭлемента", Ложь);
НастройкиЗаполненияЭлементов.Вставить("ДополнительныеПараметры", Новый Структура);
НастройкиЗаполненияЭлементов.ДополнительныеПараметры.Вставить("ПредопределенныеДанные", ПредопределенныеДанные);
МенеджерОбъекта.ПриНастройкеНачальногоЗаполненияЭлементов(НастройкиЗаполненияЭлементов);
Возврат НастройкиЗаполненияЭлементов;
КонецФункции
Функция ПредопределенныеДанныеОбъекта(Знач МетаданныеОбъекта, МенеджерОбъекта, ЛокализуемыеРеквизитыОбъекта)
Языки = ЯзыкиКонфигурации();
ПредопределенныеДанные = Новый ТаблицаЗначений;
Для Каждого Реквизит Из МетаданныеОбъекта.СтандартныеРеквизиты Цикл
ДобавитьКолонкуТаблицыПредопределенныхДанных(ПредопределенныеДанные, Реквизит, ЛокализуемыеРеквизитыОбъекта, Языки);
КонецЦикла;
Возврат СтрСоединить(Список, ",");
Для Каждого Реквизит Из МетаданныеОбъекта.Реквизиты Цикл
ДобавитьКолонкуТаблицыПредопределенныхДанных(ПредопределенныеДанные, Реквизит, ЛокализуемыеРеквизитыОбъекта, Языки);
КонецЦикла;
Если ПредопределенныеДанные.Колонки.Найти("ИмяПредопределенныхДанных") <> Неопределено Тогда
ПредопределенныеДанные.Индексы.Добавить("ИмяПредопределенныхДанных");
КонецЕсли;
МенеджерОбъекта.ПриНачальномЗаполненииЭлементов(Языки, ПредопределенныеДанные);
Возврат ПредопределенныеДанные;
КонецФункции
@@ -876,6 +876,7 @@
Если ИндексСтрокиСценария > СценарийОбменаДанными.Количество() - 1 Тогда
ЗавершитьВыполнениеСценарияОбменаДанными(ИндексСтрокиСценария, СценарийОбменаДанными);
Возврат;
КонецЕсли;
ОписаниеВыполняемогоДействияЖР = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
@@ -749,7 +749,15 @@
ОбщиеНастройки = РегистрыСведений.ОбщиеНастройкиУзловИнформационныхБаз.Получить(Отбор);
Если ЗначениеЗаполнено(ОбщиеНастройки.СообщениеДляСопоставленияДанных) Тогда
ИмяВременногоФайла = "";
Попытка
ИмяВременногоФайла = ОбменДаннымиСервер.ПолучитьФайлИзХранилища(ОбщиеНастройки.СообщениеДляСопоставленияДанных);
Исключение
РегистрыСведений.ОбщиеНастройкиУзловИнформационныхБаз.ПоместитьСообщениеДляСопоставленияДанных(
УзелОбмена, "");
КонецПопытки;
Если Не ПустаяСтрока(ИмяВременногоФайла) Тогда
Файл = Новый Файл(ИмяВременногоФайла);
Если Файл.Существует() И Файл.ЭтоФайл() Тогда
Попытка
@@ -761,6 +769,7 @@
КонецПопытки;
КонецЕсли;
КонецЕсли;
КонецЕсли;
РегистрыСведений.ОбщиеНастройкиУзловИнформационныхБаз.ПоместитьСообщениеДляСопоставленияДанных(
УзелОбмена, ИдентификаторСообщения);
@@ -41,7 +41,7 @@
Процедура ПриДобавленииПодсистемы(Описание) Экспорт
Описание.Имя = "СтандартныеПодсистемы";
Описание.Версия = "3.1.2.182";
Описание.Версия = "3.1.2.189";
Описание.ИдентификаторИнтернетПоддержки = "SSL";
Описание.РежимВыполненияОтложенныхОбработчиков = "Параллельно";
Описание.ПараллельноеОтложенноеОбновлениеСВерсии = "2.3.3.0";
@@ -93,6 +93,16 @@
Возврат Новый ОписаниеТипов(ТипЗначения,, ВычитаемыеТипы);
КонецФункции
// Выполняет поиск элемента настройки по полю компоновки данных.
//
// Параметры:
// Настройки - НастройкиКомпоновкиДанных -
// ПользовательскиеНастройки - КоллекцияЭлементовПользовательскихНастроекКомпоновкиДанных -
// Поле - ПолеКомпоновкиДанных -
//
// Возвращаемое значение:
// Неопределено - Описание
//
Функция ЭлементНастройкиПоПолю(Настройки, ПользовательскиеНастройки, Поле)
ЭлементНастройки = ЭлементПараметровДанныхПоПолю(Настройки, ПользовательскиеНастройки, Поле);
@@ -143,6 +153,26 @@
КонецЦикла;
КонецПроцедуры
// Возвращает полное описание элемента настройки, включая элемент пользовательской настройки, доступное поле отбора
// компоновки данных, индекс и сами настройки компоновки данных, которым подчинен текущий элемент.
//
// Параметры:
// КомпоновщикНастроек - КомпоновщикНастроекКомпоновкиДанных -
// Идентификатор - Число, Строка -
//
// Возвращаемое значение:
// Структура - Описание:
// * Описание - Неопределено, ДоступныйОбъектНастройкиКомпоновкиДанных, ДоступноеПолеКомпоновкиДанных -
// * Элемент - КоллекцияЭлементовСтруктурыТаблицыКомпоновкиДанных, ДиаграммаКомпоновкиДанных,
// НастройкиВложенногоОбъектаКомпоновкиДанных, ВыбранныеПоляКомпоновкиДанных, НастройкиКомпоновкиДанных,
// ГруппировкаКомпоновкиДанных, ГруппировкаТаблицыКомпоновкиДанных, УсловноеОформлениеКомпоновкиДанных,
// Неопределено, ОтборКомпоновкиДанных, КоллекцияЭлементовСтруктурыНастроекКомпоновкиДанных,
// ПорядокКомпоновкиДанных, ТаблицаКомпоновкиДанных, ГруппировкаДиаграммыКомпоновкиДанных,
// КоллекцияЭлементовСтруктурыДиаграммыКомпоновкиДанных -
// * ЭлементПользовательскойНастройки - ЭлементОтбораКомпоновкиДанных, ЗначениеПараметраКомпоновкиДанных -
// * Индекс - Число -
// * Настройки - НастройкиКомпоновкиДанных -
//
Функция СведенияОЭлементеНастройки(КомпоновщикНастроек, Идентификатор) Экспорт
Настройки = КомпоновщикНастроек.Настройки;
ПользовательскиеНастройки = КомпоновщикНастроек.ПользовательскиеНастройки;
@@ -248,6 +278,11 @@
// Инициализирует значение элемента настройки периода.
//
// Параметры:
// Форма - ФормаКлиентскогоПриложения, РасширениеФормыОтчета - где:
// * Отчет - ОтчетОбъект -
// Путь - Строка -
//
Процедура УстановитьПериод(Форма, Знач Путь) Экспорт
КомпоновщикНастроек = Форма.Отчет.КомпоновщикНастроек;
@@ -296,8 +331,15 @@
// Определяет полный путь к элементу компоновки данных.
//
// Параметры:
// НастройкиКД - НастройкиКомпоновкиДанных - Корневой узел настроек, от которого строится полный путь.
// ЭлементКД - Произвольный - Узел настроек, к которому строится полный путь.
// Настройки - НастройкиКомпоновкиДанных - Корневой узел настроек, от которого строится полный путь.
// ЭлементНастроек - НастройкиКомпоновкиДанных -
// - НастройкиВложенногоОбъектаКомпоновкиДанных -
// - ТаблицаКомпоновкиДанных -
// - ДиаграммаКомпоновкиДанных -
// - ЭлементОтбораКомпоновкиДанных -
// - ГруппаЭлементовОтбораКомпоновкиДанных -
// - ЗначениеПараметраКомпоновкиДанных -
// - ГруппаЭлементовОтбораКомпоновкиДанных -
//
// Возвращаемое значение:
// Строка - полный путь к элементу. Может использоваться в функции НайтиЭлементПоПолномуПути().
@@ -1807,7 +1807,7 @@
Список = Новый СписокЗначений;
Если ТипЗнч(Значения) = Тип("Массив") Тогда
Список.ЗагрузитьЗначения(Значения);
ИначеЕсли Значения <> Неопределено Тогда
ИначеЕсли ЗначениеЗаполнено(Значения) Тогда
Список.Добавить(Значения);
КонецЕсли;
КонецЕсли;
@@ -1918,9 +1918,17 @@
КонецФункции
Процедура ПривестиЗначениеКТипу(Значение, ОписаниеТипов) Экспорт
Если ТипЗнч(Значение) = Тип("СписокЗначений") Тогда
Для Каждого ЭлементСписка Из Значение Цикл
Если Не ОписаниеТипов.СодержитТип(ТипЗнч(ЭлементСписка.Значение)) Тогда
ЭлементСписка.Значение = ОписаниеТипов.ПривестиЗначение();
КонецЕсли;
КонецЦикла;
Иначе
Если Не ОписаниеТипов.СодержитТип(ТипЗнч(Значение)) Тогда
Значение = ОписаниеТипов.ПривестиЗначение();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
// Индекс картинки в коллекции ПиктограммыНастроекОтчета.
@@ -2063,7 +2063,11 @@
ПараметрКД.Значение = Значение;
Продолжить;
КонецЕсли;
Если ТипЗнч(Значение) = Тип("СписокЗначений") Тогда
Если ТипЗнч(Значение) = Тип("Структура") Тогда
ВидСравненияКД = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(
Значение, "ВидСравнения", ВидСравненияКомпоновкиДанных.Равно);
Значение = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Значение, "ПравоеЗначение");
ИначеЕсли ТипЗнч(Значение) = Тип("СписокЗначений") Тогда
ВидСравненияКД = ВидСравненияКомпоновкиДанных.ВСписке;
Иначе
ВидСравненияКД = ВидСравненияКомпоновкиДанных.Равно;
@@ -899,6 +899,8 @@
КонецЕсли;
УдалитьИзВременногоХранилища(ПараметрыКлиента.АдресТаблицыКоманд);
КонецЕсли;
Команды.Колонки.Удалить("СочетаниеКлавиш");
ПараметрыКлиента.АдресТаблицыКоманд = ПоместитьВоВременноеХранилище(Команды, Форма.УникальныйИдентификатор);
КонецПроцедуры
@@ -517,7 +517,8 @@
ОписаниеСтроения = РазделитьДомаСтроения(ДополнительнаяИнформацияАдреса.НомерСтроения, "Корпус");
Строение = УправлениеКонтактнойИнформациейКлиентСервер.ЗначениеСтроенияИлиПомещения(ОписаниеСтроения.Тип, ОписаниеСтроения.Номер);
Адрес.buildings.Добавить(Строение);
СписокСтроенийАдреса = Адрес.buildings; // Массив
СписокСтроенийАдреса.Добавить(Строение);
КонецЕсли;
@@ -525,7 +526,8 @@
ОписаниеПомещения = РазделитьДомаСтроения(ДополнительнаяИнформацияАдреса.НомерОфиса, "Офис");
Помещение = УправлениеКонтактнойИнформациейКлиентСервер.ЗначениеСтроенияИлиПомещения(ОписаниеПомещения.Тип, ОписаниеПомещения.Номер);
Адрес.apartments.Добавить(Помещение);
СписокПомещенийАдреса = Адрес.apartments; // Массив
СписокПомещенийАдреса.Добавить(Помещение);
КонецЕсли;
@@ -533,7 +535,8 @@
ОписаниеАбонентскийЯщик = РазделитьДомаСтроения(ДополнительнаяИнформацияАдреса.АбонентскийЯщик, "А/Я");
АбонентскийЯщик = УправлениеКонтактнойИнформациейКлиентСервер.ЗначениеСтроенияИлиПомещения(ОписаниеАбонентскийЯщик.Тип, ОписаниеАбонентскийЯщик.Номер);
Адрес.apartments.Добавить(АбонентскийЯщик);
СписокПомещенийАдреса = Адрес.apartments; // Массив
СписокПомещенийАдреса.Добавить(АбонентскийЯщик);
КонецЕсли;
Если ДополнительнаяИнформацияАдреса.Свойство("ПочтовыйИндекс") И ЗначениеЗаполнено(ДополнительнаяИнформацияАдреса.ПочтовыйИндекс) Тогда
@@ -987,6 +990,11 @@
// ИнтернетПоддержкаПользователей.РаботаСКлассификаторами
// См. РаботаСКлассификаторамиПереопределяемый.ПриДобавленииКлассификаторов.
//
// Параметры:
// Классификаторы - См. РаботаСКлассификаторамиПереопределяемый.ПриДобавленииКлассификаторов.Классификаторы
// ОписаниеКлассификатора - Строка -
//
Процедура ПриДобавленииКлассификаторов(Классификаторы, ОписаниеКлассификатора) Экспорт
ОписаниеКлассификатора.Идентификатор = ИдентификаторКлассификатора();
@@ -1037,7 +1045,14 @@
// Возвращает массив структур с информацией о частях адреса согласно приказу ФНС ММВ-7-1/525 от 31.08.2011.
//
// Возвращаемое значение:
// Массив - содержит структуры - описания.
// Массив из Структура, где:
// * Код - Строка -
// * Наименование - Строка-
// * Тип - Строка -
// * Порядок - Строка -
// * КодФИАС - Строка -
// * Сокращение - Строка -
// * Ключ - Строка -
//
Функция ТипыОбъектовАдресацииАдресаРФ()
@@ -1182,6 +1197,12 @@
Возврат Неопределено;
КонецФункции
// Изменяет в адресе часто используемые сокращения
//
// Параметры:
// ДанныеАнализа - см. УправлениеКонтактнойИнформациейСлужебный.ЧастиАдреса
//
Процедура ОбработкаЧастыхСокращенийВАдресах(Знач ДанныеАнализа) Экспорт
СубъектРФ = Новый Соответствие();
@@ -1835,16 +1856,7 @@
ЭтоНациональныйАдрес = ?(СтрСравнить(Адрес.Country, РаботаСАдресамиКлиентСервер.ОсновнаяСтрана().Наименование) = 0, Истина, Ложь);
Результат.КодРегиона = ?(ЭтоНациональныйАдрес, КодРегиона(НаименованиеРегиона), "");;
СоответствиеУровней = Новый Соответствие;
СоответствиеУровней.Вставить("area", Новый Структура("Имя, Уровень", "Регион", 1));
СоответствиеУровней.Вставить("district", Новый Структура("Имя, Уровень", "Район", 3));
СоответствиеУровней.Вставить("munDistrict", Новый Структура("Имя, Уровень", "МуниципальныйРайон", 31));
СоответствиеУровней.Вставить("city", Новый Структура("Имя, Уровень", "Город", 4));
СоответствиеУровней.Вставить("settlement", Новый Структура("Имя, Уровень", "Поселение", 41));
СоответствиеУровней.Вставить("cityDistrict", Новый Структура("Имя, Уровень", "ВнутригородскойРайон", 5));
СоответствиеУровней.Вставить("locality", Новый Структура("Имя, Уровень", "НаселенныйПункт", 6));
СоответствиеУровней.Вставить("territory", Новый Структура("Имя, Уровень", "Территория", 65));
СоответствиеУровней.Вставить("street", Новый Структура("Имя, Уровень", "Улица", 7));
СоответствиеУровней = СоответствиеУровней();
Если Параметры.ВозвращатьКоды Тогда
Идентификаторы = Новый Структура();
@@ -1974,6 +1986,32 @@
КонецФункции
// Описание
//
// Возвращаемое значение:
// Соответствие из Структура - где:
// * Ключ - Строка -
// * Значение - Структура - содержит поля:
// ** Имя - Строка -
// ** Уровень - Число -
//
Функция СоответствиеУровней()
СоответствиеУровней = Новый Соответствие;
СоответствиеУровней.Вставить("area", Новый Структура("Имя, Уровень", "Регион", 1));
СоответствиеУровней.Вставить("district", Новый Структура("Имя, Уровень", "Район", 3));
СоответствиеУровней.Вставить("munDistrict", Новый Структура("Имя, Уровень", "МуниципальныйРайон", 31));
СоответствиеУровней.Вставить("city", Новый Структура("Имя, Уровень", "Город", 4));
СоответствиеУровней.Вставить("settlement", Новый Структура("Имя, Уровень", "Поселение", 41));
СоответствиеУровней.Вставить("cityDistrict", Новый Структура("Имя, Уровень", "ВнутригородскойРайон", 5));
СоответствиеУровней.Вставить("locality", Новый Структура("Имя, Уровень", "НаселенныйПункт", 6));
СоответствиеУровней.Вставить("territory", Новый Структура("Имя, Уровень", "Территория", 65));
СоответствиеУровней.Вставить("street", Новый Структура("Имя, Уровень", "Улица", 7));
Возврат СоответствиеУровней;
КонецФункции
Функция ИнициализироватьПараметрыСведенийОбАдресе(Знач ДополнительныеПараметры)
Параметры = Новый Структура();
@@ -2658,12 +2696,13 @@
// Возвращает поля поиска в порядке предпочтения для справочника стран мира.
//
// Возвращаемое значение:
// Массив - содержит структуры с полями:
// * Имя - Строка - имя реквизита поиска.
// * ШаблонПредставления - Строка - шаблон для формирования значения представления по именам реквизитов,
// Структура - где:
// * СписокПолей - Массив из Структура, поля:
// ** Имя - Строка - имя реквизита поиска.
// ** ШаблонПредставления - Строка - шаблон для формирования значения представления по именам реквизитов,
// например: "%1.Наименование (%1.Код)". Здесь "Наименование" и "Код" - имена
// реквизитов,
// "%1" - заполнитель для передачи псевдонима таблицы.
// реквизитов, "%1" - заполнитель для передачи псевдонима таблицы.
// * ИменаПолейДляОтбораВКлассификаторе - Массив -
//
Функция ПоляПоиска(ПоляОтбора)
@@ -2698,6 +2737,7 @@
КонецЦикла;
Возврат Новый Структура("СписокПолей, ИменаПолейДляОтбораВКлассификаторе", Результат, ПоляОтбора);
КонецФункции
// Экранирует символы для использования в функции запроса ПОДОБНО.
@@ -14,4 +14,8 @@
РаботаСБанкамиКлиент.ОповеститьКлассификаторУстарел();
КонецПроцедуры
Процедура РаботаСБанкамиОткрытьФормуЗагрузкиКлассификатора() Экспорт
РаботаСБанкамиКлиент.ПерейтиКЗагрузкеКлассификатора();
КонецПроцедуры
#КонецОбласти
@@ -47,7 +47,33 @@
КонецФункции
Процедура ОткрытьФормуЗагрузкиКлассификатора() Экспорт
ПодключитьОбработчикОжидания("РаботаСБанкамиОткрытьФормуЗагрузкиКлассификатора", 0.1, Истина);
КонецПроцедуры
Процедура ПерейтиКЗагрузкеКлассификатора() Экспорт
ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку(НавигационнаяСсылкаФормыЗагрузки());
КонецПроцедуры
Процедура ПредложитьЗагрузкуКлассификатора() Экспорт
ОписаниеОповещения = Новый ОписаниеОповещения("ПриПолученииОтветаНаВопросОЗагрузкеКлассификатора", ЭтотОбъект);
ЗаголовокВопроса = НСтр("ru = 'Загрузка классификатора банков'");
ТекстВопроса = НСтр("ru = 'Классификатор банков еще не загружен. Загрузить сейчас?'");
Кнопки = Новый СписокЗначений;
Кнопки.Добавить(КодВозвратаДиалога.Да, НСтр("ru = 'Загрузить'"));
Кнопки.Добавить(КодВозвратаДиалога.Отмена);
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, Кнопки, , Кнопки[0].Значение, ЗаголовокВопроса);
КонецПроцедуры
Процедура ПриПолученииОтветаНаВопросОЗагрузкеКлассификатора(Ответ, ДополнительныеПараметры) Экспорт
Если Ответ <> КодВозвратаДиалога.Да Тогда
Возврат;
КонецЕсли;
ОткрытьФормуЗагрузкиКлассификатора();
КонецПроцедуры
#КонецОбласти
@@ -21,4 +21,23 @@
КонецФункции
Функция КлассификаторПустой()
ТекстЗапроса =
"ВЫБРАТЬ ПЕРВЫЕ 1
| КлассификаторБанков.Ссылка КАК Ссылка
|ИЗ
| Справочник.КлассификаторБанков КАК КлассификаторБанков";
Запрос = Новый Запрос(ТекстЗапроса);
Возврат Запрос.Выполнить().Пустой();
КонецФункции
Функция ПредлагатьЗагрузкуКлассификатора() Экспорт
Возврат Не ОбщегоНазначения.РазделениеВключено() И КлассификаторПустой();
КонецФункции
#КонецОбласти
@@ -525,7 +525,7 @@
// или в нестандартном, но единственном справочнике. Когда у владельца файла несколько
// справочников, требуется обязательно передать ссылку, иначе будет вызвано
// исключение.
// - Ссылка - ссылка на элемент справочника хранения файлов,
// - ОпределяемыйТип.ПрисоединенныйФайл - ссылка на элемент справочника хранения файлов,
// которую следует использовать для добавляемого файла.
// Должна соответствовать одному из типов справочников хранения файлов владельца
// файлов. Ссылка может быть получена функцией НоваяСсылкаНаФайл.
@@ -594,7 +594,7 @@
КонецЕсли;
ПрисоединенныйФайл = Справочники[ИмяСправочника].СоздатьЭлемент();
ПрисоединенныйФайл = Справочники[ИмяСправочника].СоздатьЭлемент(); // ОпределяемыйТип.ПрисоединенныйФайлОбъект
ПрисоединенныйФайл.УстановитьСсылкуНового(НоваяСсылкаНаФайл);
ПрисоединенныйФайл.ВладелецФайла = ВладелецФайлов;
@@ -944,7 +944,7 @@
КонецЕсли;
СсылкаНового = МенеджерПрисоединенныхФайлов.ПолучитьСсылку();
ПрисоединенныйФайл = МенеджерПрисоединенныхФайлов.СоздатьЭлемент();
ПрисоединенныйФайл = МенеджерПрисоединенныхФайлов.СоздатьЭлемент(); //ОпределяемыйТип.ПрисоединенныйФайлОбъект
ПрисоединенныйФайл.УстановитьСсылкуНового(СсылкаНового);
ПрисоединенныйФайл.ВладелецФайла = ВладелецФайлов;
@@ -1086,7 +1086,7 @@
КонецЕсли;
СсылкаНового = МенеджерПрисоединенныхФайлов.ПолучитьСсылку();
ПрисоединенныйФайл = МенеджерПрисоединенныхФайлов.СоздатьЭлемент();
ПрисоединенныйФайл = МенеджерПрисоединенныхФайлов.СоздатьЭлемент(); // ОпределяемыйТип.ПрисоединенныйФайлОбъект
ПрисоединенныйФайл.УстановитьСсылкуНового(СсылкаНового);
ПрисоединенныйФайл.ВладелецФайла = ВладелецФайлов;
@@ -1878,9 +1878,11 @@
Функция ПроцентСоответствияАлфавиту(ДвоичныеДанные, ПроверяемаяКодировка)
// АПК:1036-выкл, АПК:163-выкл - алфавит не требует проверки орфографии.
Алфавит = "АаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯя"
+ "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz"
+ "1234567890 ";
// АПК:1036-вкл, АПК:163-вкл
ПотокАлфавита = Новый ПотокВПамяти();
ЗаписьАлфавита = Новый ЗаписьДанных(ПотокАлфавита);
@@ -2183,8 +2185,7 @@
Если Не Источник.ЭтоГруппа И СправочникПоддерживаетВозможностьХранитьВерсии И ЗначениеЗаполнено(Источник.ТекущаяВерсия) Тогда
РеквизитыТекущейВерсии = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(
Источник.ТекущаяВерсия, "Наименование");
РеквизитыТекущейВерсии = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Источник.ТекущаяВерсия, "Наименование");
// Проверим равенство имени файла и его текущей версии.
// Если имена отличаются - имя у версии должно стать как у карточки с файлом.
@@ -74,6 +74,7 @@
|по причине: двоичные данные файла были удалены. Возможно, файл очищен как ненужный или удален антивирусной программой.
|Обратитесь к администратору.'");
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
ТекстОшибки,
СвойстваФайла.Наименование + "." + СвойстваФайла.Расширение,
@@ -185,7 +186,8 @@
СсылкаНаФайл = ПрисоединенныйФайл.Ссылка;
Если Не ЗначениеЗаполнено(СсылкаНаФайл) Тогда
СсылкаНаФайл = Справочники[ПрисоединенныйФайл.Метаданные().Имя].ПолучитьСсылку();
МетаданныеПрисоединенныйФайл = ПрисоединенныйФайл.Метаданные(); // ОбъектМетаданных
СсылкаНаФайл = Справочники[МетаданныеПрисоединенныйФайл.Имя].ПолучитьСсылку();
ПрисоединенныйФайл.УстановитьСсылкуНового(СсылкаНаФайл);
КонецЕсли;
@@ -485,18 +487,23 @@
//
// Возвращаемое значение:
// СвойстваФайла - Структура со свойствами:
// * Том - СправочникСсылка.ТомаХраненияФайлов, Неопределено - том, в котором хранится файл.
// * ПутьКФайлу - Строка - путь к файлу в томе.
// * ВладелецФайла - ОпределяемыйТип.ВладелецПрисоединенныхФайлов, ОпределяемыйТип.ВладелецФайлов,
// Неопределено - владелец файла.
// * Наименование - Строка - наименование файла.
// * Расширение - Строка - расширение файла.
// * Наименование - Строка - наименование файла;
// * Том - СправочникСсылка.ТомаХраненияФайлов, Неопределено - том, в котором хранится файл;
// * ПутьКФайлу - Строка - путь к файлу в томе;
// * ВладелецФайла - ОпределяемыйТип.ВладелецПрисоединенныхФайлов, ОпределяемыйТип.ВладелецФайлов, Неопределено -
// владелец файла;
// * Расширение - Строка - расширение файла;
// * НомерВерсии - Строка - номер версии файла.
//
Функция СвойстваФайлаВТоме(Файл = Неопределено) Экспорт
ИменаРеквизитов = "Том, ПутьКФайлу, Наименование, Расширение, ВладелецФайла";
СвойстваФайла = Новый Структура;
СвойстваФайла.Вставить("Наименование", "");
СвойстваФайла.Вставить("Расширение", "");
СвойстваФайла.Вставить("Том", Неопределено);
СвойстваФайла.Вставить("ПутьКФайлу", "");
СвойстваФайла.Вставить("ВладелецФайла", Неопределено);
СвойстваФайла = Новый Структура(ИменаРеквизитов);
Если ЗначениеЗаполнено(Файл) Тогда
Если ТипЗнч(Файл) = Тип("СправочникСсылка.ВерсииФайлов") Тогда
@@ -653,7 +660,12 @@
#Область КонтрольВеденияУчета
// См. КонтрольВеденияУчетаПереопределяемый.ПриОпределенииПроверок
// см. КонтрольВеденияУчетаПереопределяемый.ПриОпределенииПроверок
//
// Параметры:
// ГруппыПроверок - см. КонтрольВеденияУчетаПереопределяемый.ПриОпределенииПроверок.ГруппыПроверок -
// Проверки - см. КонтрольВеденияУчетаПереопределяемый.ПриОпределенииПроверок.Проверки -
//
Процедура ПриОпределенииПроверок(ГруппыПроверок, Проверки) Экспорт
Проверка = Проверки.Добавить();
@@ -801,6 +813,9 @@
// Помещает двоичные данные файла из тома в служебный реквизит ФайлХранилище.
//
// Параметры:
// ЭлементДанных - СправочникОбъект.ВерсииФайлов, ОпределяемыйТип.ПрисоединенныйФайл -
//
Процедура ПоместитьФайлВРеквизитСправочника(ЭлементДанных) Экспорт
Попытка
@@ -865,6 +880,7 @@
// Параметры:
// СоответствиеПутейФайлов - Соответствие - соответствие УникальногоИдентификатора файла и пути на диске к файлу.
// ТипХраненияФайла - Перечисления.ТипыХраненияФайлов - тип хранения файлов.
//
Процедура ДобавитьФайлыВТомаПриРазмещении(СоответствиеПутейФайлов, ТипХраненияФайла)
Запрос = Новый Запрос;
@@ -1225,6 +1241,10 @@
#Область ОбновлениеИнформационнойБазы
// См. ОбновлениеИнформационнойБазыБСП.ПриДобавленииОбработчиковОбновления.
//
// Параметры:
// Обработчики - см. ОбновлениеИнформационнойБазы.НоваяТаблицаОбработчиковОбновления
//
Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт
Обработчик = Обработчики.Добавить();
@@ -524,6 +524,7 @@
| &ИмяСправочника КАК СправочникХраненияФайлов
|ГДЕ
| СправочникХраненияФайлов.ВладелецФайла = &ВладелецФайла
| И НЕ СправочникХраненияФайлов.ПометкаУдаления
| И &ЭтоГруппа = ЛОЖЬ
| И &Служебный = ЛОЖЬ";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ИмяСправочника", "Справочник." + ИмяСправочникаХранения);
@@ -144,6 +144,14 @@
КонецПроцедуры
// Обработчик результата работы процедуры ВыбратьПолучателя.
//
// Параметры:
// ВыбранныйЭлемент - ЭлементСпискаЗначений -
// ДополнительныеПараметры - Структура - содержит:
// * ОбработчикРезультата - ОписаниеОповещения -
// * Получатели - Соответствие -
// * ВозвращатьСоответствие - Булево -
//
Процедура ВыбратьПолучателяЗавершение(ВыбранныйЭлемент, ДополнительныеПараметры) Экспорт
Если ВыбранныйЭлемент = Неопределено Тогда
Результат = Неопределено;
@@ -932,6 +932,9 @@
Процедура ОтменитьВыполнениеЗадания(Знач РегламентноеЗадание, ТекстДляЖурнала) Экспорт
ТекущийСеанс = ПолучитьТекущийСеансИнформационнойБазы().ПолучитьФоновоеЗадание();
Если ТекущийСеанс = Неопределено Тогда
Возврат;
КонецЕсли;
Если РегламентноеЗадание = Неопределено Тогда
Для Каждого Задание Из Метаданные.РегламентныеЗадания Цикл
@@ -98,8 +98,10 @@
Процедура ПриЗаписиФормыОбъектаСклонения(Форма, Представление, Объект, ПараметрыСклонения = Неопределено) Экспорт
Если Форма.ИзмененоПредставление Тогда
СтруктураСклонений = ПросклонятьПредставлениеПоВсемПадежам(Представление, ПараметрыСклонения);
Форма.Склонения = Новый ФиксированнаяСтруктура(СтруктураСклонений);
СтруктураСклонения = ПросклонятьПредставлениеПоВсемПадежам(Представление, ПараметрыСклонения);
Если СтруктураСклонения <> Неопределено Тогда
Форма.Склонения = Новый ФиксированнаяСтруктура(СтруктураСклонения);
КонецЕсли;
Форма.ИзмененоПредставление = Ложь;
КонецЕсли;
@@ -233,6 +235,10 @@
СтруктураСклонения = ДанныеСклонения(Представление, ПараметрыСклонения);
Если СтруктураСклонения = Неопределено Тогда
Возврат Представление;
КонецЕсли;
Если ЗначениеЗаполнено(Объект) Тогда
ЗаписатьВРегистрСклонения(Представление, Объект, СтруктураСклонения);
КонецЕсли;
@@ -287,16 +293,18 @@
// Пол - Число - Пол физического лица (в случае склонения ФИО)
// 1 - мужской
// 2 - женский.
// ПараметрыСклонения - -
// ПоказыватьСообщения - Булево - Признак, определяющий нужно ли показывать пользователю сообщения об ошибках.
//
// Возвращаемое значение:
// Структура - со свойствами:
// Структура, Неопределено - со свойствами:
// * Именительный - Строка.
// * Родительный - Строка.
// * Дательный - Строка
// * Винительный - Строка.
// * Творительный - Строка.
// * Предложный - Строка.
// Неопределено - если просклонять не удалось.
//
Функция ДанныеСклонения(Знач Представление, ПараметрыСклонения = Неопределено, ПоказыватьСообщения = Ложь) Экспорт
@@ -318,6 +326,15 @@
Возврат СтруктураСклонения;
КонецЕсли;
Попытка
ПроверитьВерсиюПлатформы();
Исключение
Если ПоказыватьСообщения Тогда
ВызватьИсключение;
КонецЕсли;
Возврат Неопределено;
КонецПопытки;
ОписаниеСтроки = Неопределено;
ЗаполнитьОписаниеСтрокиПоПараметрамСклонения(ОписаниеСтроки, ПараметрыСклонения, "СклонениеПредставленийОбъектов.ДанныеСклонения");
@@ -342,6 +359,22 @@
КонецФункции
Процедура ПроверитьВерсиюПлатформы()
СистемнаяИнформация = Новый СистемнаяИнформация();
ВерсияПлатформы = СистемнаяИнформация.ВерсияПриложения;
Если ОбщегоНазначенияКлиентСервер.СравнитьВерсии(ВерсияПлатформы, "8.3.14.1970") < 0
ИЛИ (ОбщегоНазначенияКлиентСервер.СравнитьВерсии(ВерсияПлатформы, "8.3.15.0") > 0
И ОбщегоНазначенияКлиентСервер.СравнитьВерсии(ВерсияПлатформы, "8.3.15.1747") < 0) Тогда
ВызватьИсключение
НСтр("ru = 'Для корректной работы склонения представлений рекомендуется:
|* или обновить технологическую платформу ""1С:Предприятие"" до версии 8.3.14.1970 или более новой (либо до версии 8.3.15.1747 или более новой),
|* или включить альтернативный сервис склонения Морфер (в разделе Администрирование).'");
КонецЕсли;
КонецПроцедуры
Процедура ЗаписатьВРегистрСклонения(Представление, Объект, Склонения)
Если Не Метаданные.ОпределяемыеТипы.ОбъектСклонения.Тип.СодержитТип(ТипЗнч(Объект)) Тогда
@@ -44,7 +44,7 @@
//
Функция СтруктураСклонения() Экспорт
СтруктураСклонений = Новый Структура(
СтруктураСклонения = Новый Структура(
"Именительный,
|Родительный,
|Дательный,
@@ -52,7 +52,7 @@
|Творительный,
|Предложный");
Возврат СтруктураСклонений;
Возврат СтруктураСклонения;
КонецФункции
@@ -726,247 +726,6 @@
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
// Начальное заполнение элементов данными.
Процедура ЗаполнитьЭлементыНачальнымиДанными(ОбновитьМультиязычныеСтроки = Ложь) Экспорт
ОбъектыСНачальнымЗаполнением = ОбъектыСНачальнымЗаполнением();
Языки = ЯзыкиКонфигурации();
ЛокализуемыеРеквизиты = Новый Соответствие;
Для Каждого МетаданныеОбъекта Из ОбъектыСНачальнымЗаполнением Цикл
ЛокализуемыеРеквизитыОбъекта = МультиязычностьСервер.НаименованияЛокализуемыхРеквизитыОбъекта(МетаданныеОбъекта);
МультиязычныеСтрокиВРеквизитах = МультиязычностьСервер.МультиязычныеСтрокиВРеквизитах(МетаданныеОбъекта);
МенеджерОбъекта = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(МетаданныеОбъекта.ПолноеИмя());
ПредопределенныеДанные = ПредопределенныеДанныеОбъекта(МетаданныеОбъекта, МенеджерОбъекта, ЛокализуемыеРеквизитыОбъекта);
НастройкиПредопределенныхЭлементов = НастройкиПредопределенныхЭлементов(МенеджерОбъекта, ПредопределенныеДанные);
РеквизитыИсключения = ?(СтрНачинаетсяС(МетаданныеОбъекта.ПолноеИмя(), "ПланВидовХарактеристик"), "ТипЗначения", "");
ПоддерживаетсяИерархия = ПредопределенныеДанные.Колонки.Найти("ЭтоГруппа") <> Неопределено;
НачатьТранзакцию();
Попытка
Для каждого СтрокаТаблицы Из ПредопределенныеДанные Цикл
Если ЗначениеЗаполнено(СтрокаТаблицы.ИмяПредопределенныхДанных) Тогда
СсылкаНаОбъект = МенеджерОбъекта[СтрокаТаблицы.ИмяПредопределенныхДанных];
БлокировкаДанных = Новый БлокировкаДанных;
ЭлементБлокировкиДанных = БлокировкаДанных.Добавить(МетаданныеОбъекта.ПолноеИмя());
ЭлементБлокировкиДанных.УстановитьЗначение("Ссылка", СсылкаНаОбъект);
БлокировкаДанных.Заблокировать();
ЗаполняемыйЭлемент = СсылкаНаОбъект.ПолучитьОбъект();
ИначеЕсли Не ОбновитьМультиязычныеСтроки Тогда
Если ПоддерживаетсяИерархия И СтрокаТаблицы.ЭтоГруппа = Истина Тогда
ЗаполняемыйЭлемент = МенеджерОбъекта.СоздатьГруппу();
Иначе
ЗаполняемыйЭлемент = МенеджерОбъекта.СоздатьЭлемент();
КонецЕсли;
Иначе
Продолжить;
КонецЕсли;
Если Не ОбновитьМультиязычныеСтроки Тогда
ЗаполнитьЗначенияСвойств(ЗаполняемыйЭлемент, СтрокаТаблицы,, РеквизитыИсключения);
КонецЕсли;
Если ЛокализуемыеРеквизитыОбъекта.Количество() > 0 Тогда
Если МультиязычныеСтрокиВРеквизитах Тогда
КодЯзыка = ОбщегоНазначения.КодОсновногоЯзыка();
Если ЗначениеЗаполнено(КодЯзыка) Тогда
Для каждого ИмяЛокализуемогоРеквизита Из ЛокализуемыеРеквизитыОбъекта Цикл
ЗаполняемыйЭлемент[ИмяЛокализуемогоРеквизита.Ключ] = СтрокаТаблицы[ИмяЛокализуемогоРеквизита.Ключ + "_" + КодЯзыка];
КонецЦикла;
КонецЕсли;
КодЯзыка = МультиязычностьСервер.КодПервогоДополнительногоЯзыкаИнформационнойБазы();
Если ЗначениеЗаполнено(КодЯзыка) Тогда
Для каждого ИмяЛокализуемогоРеквизита Из ЛокализуемыеРеквизитыОбъекта Цикл
ЗаполняемыйЭлемент[ИмяЛокализуемогоРеквизита.Ключ + "Язык1"] = СтрокаТаблицы[ИмяЛокализуемогоРеквизита.Ключ + "_" + КодЯзыка];
КонецЦикла;
КонецЕсли;
КодЯзыка = МультиязычностьСервер.КодВторогоДополнительногоЯзыкаИнформационнойБазы();
Если ЗначениеЗаполнено(КодЯзыка) Тогда
Для каждого ИмяЛокализуемогоРеквизита Из ЛокализуемыеРеквизитыОбъекта Цикл
ЗаполняемыйЭлемент[ИмяЛокализуемогоРеквизита.Ключ + "Язык2"] = СтрокаТаблицы[ИмяЛокализуемогоРеквизита.Ключ + "_" + КодЯзыка];
КонецЦикла;
КонецЕсли;
Иначе
Для каждого КодЯзыка Из Языки Цикл
НовоеПредставление = ЗаполняемыйЭлемент.Представления.Добавить();
НовоеПредставление.КодЯзыка = КодЯзыка;
Для каждого ИмяЛокализуемогоРеквизита Из ЛокализуемыеРеквизитыОбъекта Цикл
Значение = СтрокаТаблицы[ИмяЛокализуемогоРеквизита.Ключ + "_" + КодЯзыка];
НовоеПредставление[ИмяЛокализуемогоРеквизита.Ключ] = ?(ЗначениеЗаполнено(Значение), Значение, СтрокаТаблицы[ИмяЛокализуемогоРеквизита.Ключ]);
КонецЦикла;
КонецЦикла;
КонецЕсли;
КонецЕсли;
Если Не ОбновитьМультиязычныеСтроки И НастройкиПредопределенныхЭлементов.ПриНачальномЗаполненииЭлемента Тогда
МенеджерОбъекта.ПриНачальномЗаполненииЭлемента(ЗаполняемыйЭлемент, СтрокаТаблицы, НастройкиПредопределенныхЭлементов.ДополнительныеПараметры);
КонецЕсли;
ОбновлениеИнформационнойБазы.ЗаписатьОбъект(ЗаполняемыйЭлемент);
СтрокаТаблицы.Ссылка = ЗаполняемыйЭлемент.Ссылка;
КонецЦикла;
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
КонецЦикла;
КонецПроцедуры
// Регистрация для отложенного обработчика.
//
Процедура ЗарегистрироватьПредопределенныеЭлементыДляОбновления(Параметры) Экспорт
ОбъектыСПредопределеннымиЭлементами = ОбъектыСНачальнымЗаполнением();
ОбъектыКОбработке = Новый Массив;
Язык1 = МультиязычностьСервер.КодПервогоДополнительногоЯзыкаИнформационнойБазы();
Язык2 = МультиязычностьСервер.КодВторогоДополнительногоЯзыкаИнформационнойБазы();
ОсновнойЯзык = ОбщегоНазначения.КодОсновногоЯзыка();
ШаблонаЗапроса = "ВЫБРАТЬ
| Таблица.Ссылка КАК Ссылка,
| Таблица.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных,
| %1
|ИЗ
| %2 КАК Таблица
|ГДЕ
| Таблица.Предопределенный = ИСТИНА";
Для каждого ОбъектМетаданных Из ОбъектыСПредопределеннымиЭлементами Цикл
ЛокализуемыеРеквизитыОбъекта = МультиязычностьСервер.НаименованияЛокализуемыхРеквизитыОбъекта(ОбъектМетаданных);
Если ЛокализуемыеРеквизитыОбъекта.Количество() = 0 Тогда
Продолжить;
КонецЕсли;
ИмяРеквизитОбъекта = Новый Массив;
Для каждого РеквизитОбъекта Из ЛокализуемыеРеквизитыОбъекта Цикл
ИмяРеквизита = "Таблица." + РеквизитОбъекта.Ключ;
ИмяРеквизитОбъекта.Добавить(ИмяРеквизита);
Если ЗначениеЗаполнено(Язык1) Тогда
ИмяРеквизитОбъекта.Добавить(ИмяРеквизита + "Язык1");
КонецЕсли;
Если ЗначениеЗаполнено(Язык2) Тогда
ИмяРеквизитОбъекта.Добавить(ИмяРеквизита + "Язык2");
КонецЕсли;
КонецЦикла;
ТекстЗапроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонаЗапроса, СтрСоединить(ИмяРеквизитОбъекта, ", " + Символы.ПС), ОбъектМетаданных.ПолноеИмя());
Запрос = Новый Запрос(ТекстЗапроса);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Продолжить;
КонецЕсли;
МенеджерОбъекта = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ОбъектМетаданных.ПолноеИмя());
ПредопределенныеДанные = ПредопределенныеДанныеОбъекта(ОбъектМетаданных, МенеджерОбъекта, ЛокализуемыеРеквизитыОбъекта);
НастройкиПредопределенныхЭлементов = НастройкиПредопределенныхЭлементов(МенеджерОбъекта, ПредопределенныеДанные);
ДанныеЗапроса = РезультатЗапроса.Выбрать();
Пока ДанныеЗапроса.Следующий() Цикл
Элемент = ПредопределенныеДанные.Найти(ДанныеЗапроса.ИмяПредопределенныхДанных, "ИмяПредопределенныхДанных");
Если Элемент <> Неопределено Тогда
Для каждого ОписаниеРеквизита Из ЛокализуемыеРеквизитыОбъекта Цикл
ИмяРеквизита = ОписаниеРеквизита.Ключ;
Если СтрСравнить(Элемент[МультиязычностьСервер.ИмяЛокализуемогоРеквизита(ИмяРеквизита, ОсновнойЯзык)], ДанныеЗапроса[ИмяРеквизита]) <> 0 Тогда
ОбъектыКОбработке.Добавить(ДанныеЗапроса.Ссылка);
Продолжить;
КонецЕсли;
Если ЗначениеЗаполнено(Язык1)
И СтрСравнить(Элемент[МультиязычностьСервер.ИмяЛокализуемогоРеквизита(ИмяРеквизита, Язык1)], ДанныеЗапроса[ИмяРеквизита + "Язык1"]) <> 0 Тогда
ОбъектыКОбработке.Добавить(ДанныеЗапроса.Ссылка);
Продолжить;
КонецЕсли;
Если ЗначениеЗаполнено(Язык2)
И СтрСравнить(Элемент[МультиязычностьСервер.ИмяЛокализуемогоРеквизита(ИмяРеквизита, Язык2)], ДанныеЗапроса[ИмяРеквизита + "Язык2"]) <> 0 Тогда
ОбъектыКОбработке.Добавить(ДанныеЗапроса.Ссылка);
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецЦикла;
Если ОбъектыКОбработке.Количество() > 0 Тогда
ОбновлениеИнформационнойБазы.ОтметитьКОбработке(Параметры, ОбъектыКОбработке);
КонецЕсли;
КонецПроцедуры
Процедура ОбновитьПредставленияПредопределенныхЭлементов(Параметры) Экспорт
ОбъектыСПредопределеннымиЭлементами = ОбъектыСНачальнымЗаполнением();
ОбъектМетаданных = Неопределено;
ОбъектыДляОбработкиОтсутствуют = Истина;
СсылкиНаОбъект = Новый Массив;
Для каждого ОбъектСПредопределеннымиЭлементами Из ОбъектыСПредопределеннымиЭлементами Цикл
СсылкиНаОбъект = ОбновлениеИнформационнойБазы.ВыбратьСсылкиДляОбработки(Параметры.Очередь, ОбъектСПредопределеннымиЭлементами.ПолноеИмя());
Если СсылкиНаОбъект.Количество() > 0 Тогда
ОбъектыДляОбработкиОтсутствуют = Ложь;
Параметры.ОбработкаЗавершена = Ложь;
ОбъектМетаданных = ОбъектСПредопределеннымиЭлементами;
Прервать;
КонецЕсли;
КонецЦикла;
Если ОбъектыДляОбработкиОтсутствуют Тогда
Параметры.ОбработкаЗавершена = Истина;
Возврат;
КонецЕсли;
СсылкаНаОбъект = ОбновлениеИнформационнойБазы.ВыбратьСсылкиДляОбработки(Параметры.Очередь, ОбъектМетаданных.ПолноеИмя());
Результат = ОбновитьПредставленияПредопределенныхЭлементовОбъекта(СсылкаНаОбъект, ОбъектМетаданных);
Если Результат.ОбъектовОбработано = 0 И Результат.ПроблемныхОбъектов <> 0 Тогда
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Процедуре ОбновитьПредставленияПредопределенныхЭлементов не удалось обработать некоторые элементы(пропущены): %1'"),
Результат.ПроблемныхОбъектов);
ВызватьИсключение ТекстСообщения;
Иначе
ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация,
ОбъектМетаданных,, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Процедура ОбновитьПредставленияПредопределенныхЭлементов обработала очередную порцию элементов: %1'"),
Результат.ОбъектовОбработано));
КонецЕсли;
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
// Дополнительная базовая функциональность для обмена данными.
@@ -1741,7 +1500,7 @@
Обработчик = Обработчики.Добавить();
Обработчик.НачальноеЗаполнение = Истина;
Обработчик.Процедура = "СтандартныеПодсистемыСервер.ЗаполнитьЭлементыНачальнымиДанными";
Обработчик.Процедура = "МультиязычностьСервер.ЗаполнитьЭлементыНачальнымиДанными";
КонецПроцедуры
@@ -3347,165 +3106,6 @@
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
// Начальное заполнение элементов данными.
Процедура ДобавитьКолонкуТаблицыПредопределенныхДанных(ПредопределенныеДанные, Реквизит, ЛокализуемыеРеквизиты, Языки)
Если ЛокализуемыеРеквизиты[Реквизит.Имя] = Истина Тогда
ПредопределенныеДанные.Колонки.Добавить(Реквизит.Имя, Реквизит.Тип, ПризнакЛокализуемогоРеквизита());
Для каждого Язык Из Языки Цикл
ПредопределенныеДанные.Колонки.Добавить(Реквизит.Имя + "_" + Язык, Реквизит.Тип, ПризнакЛокализуемогоРеквизита());
КонецЦикла;
Иначе
Если ЭтоЛокализуемыйРеквизит(Реквизит) Тогда
ИмяБезСуффикса = ИмяБезСуффиксаЯзык(Реквизит);
ЛокализуемыеРеквизиты.Вставить(ИмяБезСуффикса, Истина);
Для каждого Язык Из Языки Цикл
ПредопределенныеДанные.Колонки.Добавить(ИмяБезСуффикса + "_" + Язык, Реквизит.Тип, ПризнакЛокализуемогоРеквизита());
КонецЦикла;
Иначе
ПредопределенныеДанные.Колонки.Добавить(Реквизит.Имя, Реквизит.Тип);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Функция ОбновитьПредставленияПредопределенныхЭлементовОбъекта(СсылкаНаОбъект, ОбъектМетаданных)
Результат = Новый Структура();
Результат.Вставить("ПроблемныхОбъектов", 0);
Результат.Вставить("ОбъектовОбработано", 0);
ОсновнойЯзык = ОбщегоНазначения.КодОсновногоЯзыка();
КодЯзыка1 = МультиязычностьСервер.КодПервогоДополнительногоЯзыкаИнформационнойБазы();
КодЯзыка2 = МультиязычностьСервер.КодВторогоДополнительногоЯзыкаИнформационнойБазы();
ЛокализуемыеРеквизитыОбъекта = МультиязычностьСервер.НаименованияЛокализуемыхРеквизитыОбъекта(ОбъектМетаданных);
МенеджерОбъекта = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ОбъектМетаданных.ПолноеИмя());
ПредопределенныеДанные = ПредопределенныеДанныеОбъекта(ОбъектМетаданных, МенеджерОбъекта, ЛокализуемыеРеквизитыОбъекта);
НастройкиПредопределенныхЭлементов = НастройкиПредопределенныхЭлементов(МенеджерОбъекта, ПредопределенныеДанные);
Пока СсылкаНаОбъект.Следующий() Цикл
Попытка
ИмяПредопределенныхДанных = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СсылкаНаОбъект.Ссылка, "ИмяПредопределенныхДанных");
Если Не ЗначениеЗаполнено(ИмяПредопределенныхДанных) Тогда
ОбновлениеИнформационнойБазы.ОтметитьВыполнениеОбработки(СсылкаНаОбъект.Ссылка);
Продолжить;
КонецЕсли;
Элемент = ПредопределенныеДанные.Найти(ИмяПредопределенныхДанных, "ИмяПредопределенныхДанных");
Если Элемент <> Неопределено Тогда
Объект = СсылкаНаОбъект.Ссылка.ПолучитьОбъект();
Для каждого ЛокализуемыйРеквизитОбъекта Из ЛокализуемыеРеквизитыОбъекта Цикл
Имя = ЛокализуемыйРеквизитОбъекта.Ключ;
Объект[Имя] = Элемент[МультиязычностьСервер.ИмяЛокализуемогоРеквизита(Имя, ОсновнойЯзык)];
Если МультиязычностьСервер.ИспользуетсяПервыйДополнительныйЯзык() Тогда
Объект[Имя + "Язык1"] = Элемент[МультиязычностьСервер.ИмяЛокализуемогоРеквизита(Имя, КодЯзыка1)];
КонецЕсли;
Если МультиязычностьСервер.ИспользуетсяВторойДополнительныйЯзык() Тогда
Объект[Имя + "Язык2"] = Элемент[МультиязычностьСервер.ИмяЛокализуемогоРеквизита(Имя, КодЯзыка2)];
КонецЕсли;
КонецЦикла;
ОбновлениеИнформационнойБазы.ЗаписатьДанные(Объект);
КонецЕсли;
Результат.ОбъектовОбработано = Результат.ОбъектовОбработано + 1;
Исключение
// Если не удалось обработать элемент, повторяем попытку снова.
Результат.ПроблемныхОбъектов = Результат.ПроблемныхОбъектов + 1;
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось обработать элемент: %1 по причине: %2'"),
СсылкаНаОбъект.Ссылка, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Предупреждение,
ОбъектМетаданных, СсылкаНаОбъект.Ссылка, ТекстСообщения);
КонецПопытки;
КонецЦикла;
Возврат Результат;
КонецФункции
Функция ИмяБезСуффиксаЯзык(Знач Реквизит)
Возврат Лев(Реквизит.Имя, СтрДлина(Реквизит.Имя) - 5);
КонецФункции
Функция ЭтоЛокализуемыйРеквизит(Реквизит)
Возврат СтрЗаканчиваетсяНа(Реквизит.Имя, "Язык1") Или СтрЗаканчиваетсяНа(Реквизит.Имя, "Язык2");
КонецФункции
Функция ПризнакЛокализуемогоРеквизита()
Возврат "Локализуемый";
КонецФункции
Функция ЯзыкиКонфигурации()
Языки = Новый Массив;
Для каждого Язык Из Метаданные.Языки Цикл
Языки.Добавить(Язык.КодЯзыка);
КонецЦикла;
Возврат Языки;
КонецФункции
Функция ОбъектыСНачальнымЗаполнением()
НастройкиПодсистемы = ОбновлениеИнформационнойБазыСлужебный.НастройкиПодсистемы();
ОбъектыСНачальнымЗаполнением = НастройкиПодсистемы.ОбъектыСНачальнымЗаполнением;
Возврат ОбъектыСНачальнымЗаполнением;
КонецФункции
Функция НастройкиПредопределенныхЭлементов(МенеджерОбъекта, ПредопределенныеДанные)
НастройкиЗаполненияЭлементов = Новый Структура;
НастройкиЗаполненияЭлементов.Вставить("ПриНачальномЗаполненииЭлемента", Ложь);
НастройкиЗаполненияЭлементов.Вставить("ДополнительныеПараметры", Новый Структура);
НастройкиЗаполненияЭлементов.ДополнительныеПараметры.Вставить("ПредопределенныеДанные", ПредопределенныеДанные);
МенеджерОбъекта.ПриНастройкеНачальногоЗаполненияЭлементов(НастройкиЗаполненияЭлементов);
Возврат НастройкиЗаполненияЭлементов;
КонецФункции
Функция ПредопределенныеДанныеОбъекта(Знач МетаданныеОбъекта, МенеджерОбъекта, ЛокализуемыеРеквизитыОбъекта)
Языки = ЯзыкиКонфигурации();
ПредопределенныеДанные = Новый ТаблицаЗначений;
Для Каждого Реквизит Из МетаданныеОбъекта.СтандартныеРеквизиты Цикл
ДобавитьКолонкуТаблицыПредопределенныхДанных(ПредопределенныеДанные, Реквизит, ЛокализуемыеРеквизитыОбъекта, Языки);
КонецЦикла;
Для Каждого Реквизит Из МетаданныеОбъекта.Реквизиты Цикл
ДобавитьКолонкуТаблицыПредопределенныхДанных(ПредопределенныеДанные, Реквизит, ЛокализуемыеРеквизитыОбъекта, Языки);
КонецЦикла;
Если ПредопределенныеДанные.Колонки.Найти("ИмяПредопределенныхДанных") <> Неопределено Тогда
ПредопределенныеДанные.Индексы.Добавить("ИмяПредопределенныхДанных");
КонецЕсли;
МенеджерОбъекта.ПриНачальномЗаполненииЭлементов(Языки, ПредопределенныеДанные);
Возврат ПредопределенныеДанные;
КонецФункции
// Локализация
Функция ТребуетсяУстановкаРегиональныхНастроекИнформационнойБазы()
@@ -2018,6 +2018,18 @@
Обработчик.ПередВыгрузкойОбъекта = Истина;
Обработчик.Версия = "1.0.0.1";
Обработчик = ТаблицаОбработчиков.Добавить();
Обработчик.ОбъектМетаданных = Метаданные.РегистрыСведений.ЗначенияГруппДоступа;
Обработчик.Обработчик = РегистрыСведений.ЗначенияГруппДоступа;
Обработчик.ПередВыгрузкойОбъекта = Истина;
Обработчик.Версия = "1.0.0.1";
Обработчик = ТаблицаОбработчиков.Добавить();
Обработчик.ОбъектМетаданных = Метаданные.РегистрыСведений.ЗначенияГруппДоступаПоУмолчанию;
Обработчик.Обработчик = РегистрыСведений.ЗначенияГруппДоступаПоУмолчанию;
Обработчик.ПередВыгрузкойОбъекта = Истина;
Обработчик.Версия = "1.0.0.1";
КонецПроцедуры
#КонецОбласти
@@ -2053,6 +2065,27 @@
КонецПроцедуры
// См. ВыгрузкаЗагрузкаДанныхПереопределяемый.ПриРегистрацииОбработчиковВыгрузкиДанных.
Процедура ПередВыгрузкойНабораЗаписей(Контейнер, МенеджерВыгрузкиОбъекта, Сериализатор, Объект, Артефакты, Отказ) Экспорт
// В модели сервиса право открытия внешних отчетов и обработок не используется для пользователей областей данных,
// поэтому проверка применяется только при переходе Коробка -> Сервис.
Если ОбщегоНазначения.РазделениеВключено() Тогда
Возврат;
КонецЕсли;
ГруппыДоступа = ГруппыДоступаПрофиляОткрытиеВнешнихОтчетовИОбработок();
Индекс = Объект.Количество() - 1;
Пока Индекс >= 0 Цикл
Если ГруппыДоступа.Найти(Объект[Индекс].ГруппаДоступа) <> Неопределено Тогда
Объект.Удалить(Индекс);
КонецЕсли;
Индекс = Индекс - 1;
КонецЦикла;
КонецПроцедуры
// См. ОбщегоНазначенияПереопределяемый.ПриДобавленииОбработчиковУстановкиПараметровСеанса.
Процедура УстановкаПараметровСеанса(ИмяПараметра, УстановленныеПараметры) Экспорт
@@ -4638,6 +4671,24 @@
КонецФункции
Функция ГруппыДоступаПрофиляОткрытиеВнешнихОтчетовИОбработок()
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ИдентификаторПоставляемыхДанных",
Новый УникальныйИдентификатор(ИдентификаторПрофиляОткрытиеВнешнихОтчетовИОбработок()));
Запрос.Текст =
"ВЫБРАТЬ
| ГруппыДоступа.Ссылка КАК Ссылка
|ИЗ
| Справочник.ГруппыДоступа КАК ГруппыДоступа
|ГДЕ
| ГруппыДоступа.Профиль.ИдентификаторПоставляемыхДанных = &ИдентификаторПоставляемыхДанных";
Возврат Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
КонецФункции
Функция ОписаниеПрофиляОткрытиеВнешнихОтчетовИОбработок() Экспорт
ОписаниеПрофиля = УправлениеДоступом.НовоеОписаниеПрофиляГруппДоступа();
@@ -8249,6 +8300,7 @@
Функция КомбинацииЗначенийОпорныхПолей(Источник, ОтборПоИзмерениям, ПараметрыОграничения)
Поля = СтрСоединить(ПараметрыОграничения.ОпорныеПоля.Используемые, ",");
Поля = УправлениеДоступомСлужебныйПовтИсп.ПоляВРегистреСимволовМетаданных(ПараметрыОграничения.Список, Поля);
КомбинацииЗначенийОпорныхПолей = Источник.Выгрузить(, Поля);
КомбинацииЗначенийОпорныхПолей.Свернуть(Поля);
@@ -98,9 +98,9 @@
ОграниченияПрав = "";
Если ДляПроверки
Или Не УправлениеДоступомСлужебный.ОграничиватьДоступНаУровнеЗаписейУниверсально(Истина, Истина) Тогда
УниверсальноеОграничение = УправлениеДоступомСлужебный.ОграничиватьДоступНаУровнеЗаписейУниверсально(Истина, Истина);
Если ДляПроверки Или Не УниверсальноеОграничение Тогда
ИнтеграцияПодсистемБСП.ПриЗаполненииВидовОграниченийПравОбъектовМетаданных(ОграниченияПрав);
УправлениеДоступомПереопределяемый.ПриЗаполненииВидовОграниченийПравОбъектовМетаданных(ОграниченияПрав);
Иначе
@@ -135,6 +135,9 @@
КонецЕсли;
Если Метаданные.НайтиПоПолномуИмени(Таблица) = Неопределено Тогда
Если УниверсальноеОграничение Тогда
Продолжить;
КонецЕсли;
ПояснениеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не найдена таблица ""%1"".'"), Таблица);
@@ -144,6 +147,9 @@
ИначеЕсли ВРег(ВидДоступа) = ВРег("Объект") Тогда
Если Метаданные.НайтиПоПолномуИмени(ТаблицаОбъекта) = Неопределено Тогда
Если УниверсальноеОграничение Тогда
Продолжить;
КонецЕсли;
ПояснениеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не найдена таблица объекта ""%1"".'"),
ТаблицаОбъекта);
@@ -155,6 +161,9 @@
ИначеЕсли ВРег(ВидДоступа) = ВРег("НастройкиПрав") Тогда
Если Метаданные.НайтиПоПолномуИмени(ТаблицаОбъекта) = Неопределено Тогда
Если УниверсальноеОграничение Тогда
Продолжить;
КонецЕсли;
ПояснениеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не найдена таблица владельца настроек прав ""%1"".'"),
ТаблицаОбъекта);
@@ -165,6 +174,9 @@
КонецЕсли;
ИначеЕсли ВидыДоступаПоИменам.Получить(ВидДоступа) = Неопределено Тогда
Если УниверсальноеОграничение Тогда
Продолжить;
КонецЕсли;
ПояснениеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не найден вид доступа ""%1"".'"), ВидДоступа);
Иначе
@@ -949,6 +961,26 @@
КонецФункции
Функция ПоляВРегистреСимволовМетаданных(ПолноеИмя, Поля) Экспорт
СхемаЗапроса = Новый СхемаЗапроса;
СхемаЗапроса.УстановитьТекстЗапроса("ВЫБРАТЬ * ИЗ " + ПолноеИмя);
ПоляВМетаданных = Новый Соответствие;
Для Каждого Колонка Из СхемаЗапроса.ПакетЗапросов[0].Колонки Цикл
ПоляВМетаданных.Вставить(ВРег(Колонка.Псевдоним), Колонка.Псевдоним);
КонецЦикла;
ПоляКакУказаны = СтрРазделить(Поля, ",", Ложь);
ПоляКакВМетаданных = Новый Массив;
Для Каждого Поле Из ПоляКакУказаны Цикл
ПоляКакВМетаданных.Добавить(ПоляВМетаданных.Получить(ВРег(Поле)));
КонецЦикла;
Возврат СтрСоединить(ПоляКакВМетаданных, ",");
КонецФункции
#КонецОбласти
////////////////////////////////////////////////////////////////////////////////
@@ -636,8 +636,8 @@
// Возвращает информацию о стране адреса.
// Если переданная строка не содержит информации об адресе, то будет вызвано исключение.
// Если передана пустая строка, то возвращается пустая структура.
// Если страна не найдена в справочнике, но найдена в классификаторе ОКСМ, то поле Ссылка результата не будет заполнено.
// Если страна не найдена ни в адресе, ни в классификаторе ОКСМ, то будет заполнено только поле Наименование.
// Если страна не найдена в справочнике, но найдена в классификаторе стран, то поле Ссылка результата не будет заполнено.
// Если страна не найдена ни в адресе, ни в классификаторе стран, то будет заполнено только поле Наименование.
//
// Параметры:
// Адрес - Структура, Строка - адрес в формате JSON или строка XML соответствующая XDTO-пакетам КонтактнаяИнформация
@@ -980,10 +980,10 @@
////////////////////////////////////////////////////////////////////////////////
// Страны мира
// Возвращает данные о стране по справочнику стран мира или классификатору ОКСМ.
// Возвращает данные о стране по справочнику стран мира или классификатору.
//
// Параметры:
// КодСтраны - Строка, Число - Код страны по классификатору ОКСМ. Если не указано, то поиск по коду не производится.
// КодСтраны - Строка, Число - Код страны по классификатору. Если не указано, то поиск по коду не производится.
// Наименование - Строка - Наименование страны, в т.ч. и международное. Если не указано, то поиск по наименованию не производится.
//
// Возвращаемое значение:
@@ -996,7 +996,7 @@
// * КодАльфа3 - Строка - Трехзначный буквенный код страны альфа-3.
// * УчастникЕАЭС - Булево - Страна-участник ЕАЭС.
// * МеждународноеНаименование - Строка - Международное наименование страны мира
// Неопределено - страна не найдена ни в адресе, ни в классификаторе ОКСМ.
// Неопределено - страна не найдена.
//
Функция ДанныеСтраныМира(Знач КодСтраны = Неопределено, Знач Наименование = Неопределено) Экспорт
Результат = Неопределено;
@@ -1074,7 +1074,7 @@
// Возвращает данные страны по коду.
//
// Параметры:
// Код - Строка, Число - код ОКСМ страны.
// Код - Строка, Число - код страны по классификатору.
// ТипКода - Строка - варианты: КодСтраны (по умолчанию), Альфа2, Альфа3.
//
// Возвращаемое значение:
@@ -1085,7 +1085,7 @@
// * КодАльфа2 - Строка - Двузначный буквенный код страны альфа-2.
// * КодАльфа3 - Строка - Трехзначный буквенный код страны альфа-3.
// * УчастникЕАЭС - Булево - Страна-участник ЕАЭС.
// Неопределено - страна не найдена ни в адресе, ни в классификаторе ОКСМ.
// Неопределено - страна не найдена.
//
Функция ДанныеКлассификатораСтранМираПоКоду(Знач Код, Знач ТипКода = "КодСтраны") Экспорт
@@ -2928,7 +2928,7 @@
//
// Параметры:
// ВладелецКонтактнойИнформации - СправочникСсылка.ВидыКонтактнойИнформации, СправочникОбъект.ВидыКонтактнойИнформации,
// ДанныеФормыСтруктура - Виды контактной информации. Где:
// ДанныеФормыСтруктура - где:
// * Ссылка - СправочникСсылка.ВидыКонтактнойИнформации - ссылка на вид контактной информации.
//
// Возвращаемое значение:
@@ -5236,9 +5236,9 @@
//
// Возвращаемое значение:
// Структура - Описание:
// Код - Строка - Числовой код страны по ОКСМ;
// КодАльфа2 - Строка - Двузначный буквенный код альфа-2 страны по ОКСМ;
// КодАльфа3 - Строка - Трехзначный буквенный код альфа-3 страны по ОКСМ;
// Код - Строка - Числовой код страны по классификатору;
// КодАльфа2 - Строка - Двузначный буквенный код альфа-2 страны по классификатору;
// КодАльфа3 - Строка - Трехзначный буквенный код альфа-3 страны по классификатору;
// Наименование - Строка - Краткое наименование страны мира
// НаименованиеПолное - Строка - Полное наименование страны мира;
// УчастникЕАЭС - Булево - Страна является участником Евразийского экономического союза;
@@ -842,7 +842,8 @@
ДанныеЗаполнения[Элемент.Имя + "Значение"] = РезультатЗакрытия.Значение;
Иначе
Форма.Элементы.Найти(Элемент.Имя).РасширеннаяПодсказка.Заголовок = Комментарий;
ЭлементФормыПредставление = Форма.Элементы.Найти(Элемент.Имя); // ДекорацияФормы
ЭлементФормыПредставление.РасширеннаяПодсказка.Заголовок = Комментарий;
Если РезультатЗакрытия.Тип = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.ВебСтраница") Тогда
ТекстПредставления = УправлениеКонтактнойИнформациейКлиентСервер.АдресСайта(ТекстПредставления, РезультатЗакрытия.Адрес);
@@ -1215,7 +1216,7 @@
ДополнительныеПараметры.Результат.Вставить("ЭтоДобавлениеКомментария", Ложь);
Иначе
Если ДополнительныеПараметры.Форма.Элементы.Найти(ДополнительныеПараметры.ИмяРеквизитаКомментария) <> Неопределено Тогда
Элемент = ДополнительныеПараметры.Форма.Элементы[ДополнительныеПараметры.ИмяРеквизитаКомментария];
Элемент = ДополнительныеПараметры.Форма.Элементы[ДополнительныеПараметры.ИмяРеквизитаКомментария]; // ДополнениеЭлементаФормы
Элемент.Заголовок = Комментарий;
Иначе
ДополнительныеПараметры.Результат.Вставить("ЭтоДобавлениеКомментария", Истина);
@@ -1266,7 +1267,8 @@
Если ДанныеСтроки.Свойство("ХранитьИсториюИзменений")
И ДанныеСтроки.ХранитьИсториюИзменений
И НачалоДня(ДанныеСтроки.ДействуетС) <> НачалоДня(ОбщегоНазначенияКлиент.ДатаСеанса()) Тогда
ИсторическаяКонтактнаяИнформация = Форма.КонтактнаяИнформацияОписаниеДополнительныхРеквизитов.Добавить();
КонтактнаяИнформацияОписаниеДополнительныхРеквизитов = Форма.КонтактнаяИнформацияОписаниеДополнительныхРеквизитов; // ДанныеФормыКоллекция
ИсторическаяКонтактнаяИнформация = КонтактнаяИнформацияОписаниеДополнительныхРеквизитов.Добавить();
ЗаполнитьЗначенияСвойств(ИсторическаяКонтактнаяИнформация, ДанныеСтроки);
ИсторическаяКонтактнаяИнформация.ЭтоИсторическаяКонтактнаяИнформация = Истина;
ИсторическаяКонтактнаяИнформация.ИмяРеквизита = "";
@@ -1649,7 +1651,7 @@
Процедура ОбновитьКонтекстноеМеню(Форма, ИмяЭлементаДляРазмещения)
ПараметрыКонтактнойИнформации = Форма.ПараметрыКонтактнойИнформации[ИмяЭлементаДляРазмещения];
ПараметрыКонтактнойИнформации = Форма.ПараметрыКонтактнойИнформации[ИмяЭлементаДляРазмещения]; // ДанныеФормаКоллекция
ВсеСтроки = Форма.КонтактнаяИнформацияОписаниеДополнительныхРеквизитов;
НайденныеСтроки = ВсеСтроки.НайтиСтроки(
Новый Структура("Тип, ЭтоРеквизитТабличнойЧасти", ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.Адрес"), Ложь));
@@ -1693,7 +1695,8 @@
Команда.Действие = "Подключаемый_КонтактнаяИнформацияВыполнитьКоманду";
Команда.ИзменяетСохраняемыеДанные = Истина;
ПараметрыКонтактнойИнформации.ДобавленныеЭлементы.Добавить(ИмяКоманды, 9, Истина);
ДобавленныеЭлементы = ПараметрыКонтактнойИнформации.ДобавленныеЭлементы; // СписокЗначений
ДобавленныеЭлементы.Добавить(ИмяКоманды, 9, Истина);
КоличествоКомандВПодменю = КоличествоКомандВПодменю + 1;
КонецЕсли;
@@ -8,6 +8,14 @@
#Область СлужебныйПрограммныйИнтерфейс
// Параметры:
// Ссылка - СправочникСсылка -
// ТипКонтактнойИнформации - ПеречислениеСсылка.ТипыКонтактнойИнформации -
// Дата - Дата -
// Возвращаемое значение:
// Строка -
//
Функция ПервоеЗначениеКонтактнойИнформацииОбъектаПоТипу(Ссылка, ТипКонтактнойИнформации, Дата) Экспорт
Результат = "";
@@ -67,8 +75,7 @@
Функция ПроверитьАдрес(Адрес, ПараметрыПроверкиАдреса = Неопределено) Экспорт
РезультатПроверки = Новый Структура("Результат, СписокОшибок");
РезультатПроверки.СписокОшибок = Новый СписокЗначений;
РезультатПроверки = РезультатПроверки();
Если ТипЗнч(Адрес) <> Тип("Строка") Тогда
РезультатПроверки.Результат = "СодержитОшибки";
@@ -88,6 +95,11 @@
// Обработчики событий подсистем конфигурации.
// См. ВерсионированиеОбъектовПереопределяемый.ПриПодготовкеДанныхОбъекта.
//
// Параметры:
// Объект - Произвольный -
// ДополнительныеРеквизиты - См. ВерсионированиеОбъектовПереопределяемый.ПриПодготовкеДанныхОбъекта.ДополнительныеРеквизиты
//
Процедура ПриПодготовкеДанныхОбъекта(Объект, ДополнительныеРеквизиты) Экспорт
Если Объект.Метаданные().ТабличныеЧасти.Найти("КонтактнаяИнформация") <> Неопределено Тогда
@@ -126,6 +138,10 @@
КонецПроцедуры
// См. ОбновлениеИнформационнойБазыБСП.ПриДобавленииОбработчиковОбновления.
//
// Параметры:
// Обработчики - см. ОбновлениеИнформационнойБазы.НоваяТаблицаОбработчиковОбновления
//
Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт
Обработчик = Обработчики.Добавить();
@@ -166,10 +182,6 @@
Обработчик.ПроцедураПроверки = "ОбновлениеИнформационнойБазы.ДанныеОбновленыНаНовуюВерсиюПрограммы";
Обработчик.Комментарий = НСтр("ru = 'Обновление сведений о странах мирах в соответствии с общероссийским классификатором стран мира.
|До завершения обработки наименование стран в документах в ряде случаев будет отображаться некорректно.'");
Обработчик.ПриоритетыВыполнения = ОбновлениеИнформационнойБазы.ПриоритетыВыполненияОбработчика();
Приоритет = Обработчик.ПриоритетыВыполнения.Добавить();
Приоритет.Процедура = "МультиязычностьСервер.ОбновитьПредставленияПредопределенныхЭлементов";
Приоритет.Порядок = "Любой";
Обработчик = Обработчики.Добавить();
Обработчик.Версия = "3.1.2.154";
@@ -195,6 +207,10 @@
КонецПроцедуры
// См. ОбновлениеИнформационнойБазыПереопределяемый.ПриОпределенииНастроек
//
// Параметры:
// Объекты - Массив -
//
Процедура ПриОпределенииОбъектовСНачальнымЗаполнением(Объекты) Экспорт
Объекты.Добавить(Метаданные.Справочники.СтраныМира);
@@ -287,6 +303,22 @@
КонецПроцедуры
// Функция-конструктор результата проверки.
//
// Возвращаемое значение:
// Структура - где:
// * СписокОшибок - СписокЗначений -
// * Результат - Строка -
//
Функция РезультатПроверки()
РезультатПроверки = Новый Структура;
РезультатПроверки.Вставить("Результат", "");
РезультатПроверки.Вставить("СписокОшибок", Новый СписокЗначений);
Возврат РезультатПроверки
КонецФункции
Функция ЭтоТипАдрес(ЗначениеТипа)
Возврат СтрСравнить(ЗначениеТипа, Строка(ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.Адрес"))) = 0;
КонецФункции
@@ -416,7 +448,12 @@
КонецПроцедуры
// Обработчик события КонтактнаяИнформацияОбработкаПроверкиЗаполнения
//
// Параметры:
// Источник - СправочникОбъект, ДокументОбъект -
// Отказ - Булево -
// ПроверяемыеРеквизиты - Массив -
//
Процедура КонтактнаяИнформацияОбработкаПроверкиЗаполнения(Источник, Отказ, ПроверяемыеРеквизиты) Экспорт
Если Не ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда
@@ -536,6 +573,12 @@
КонецФункции
// // См. ОбщегоНазначенияПереопределяемый.ПриДобавленииОбработчиковУстановкиПараметровСеанса.
//
// Параметры:
// ИмяПараметра - Строка - имя параметра сеанса, который требуется установить.
// УстановленныеПараметры - Массив - имена параметров, которые уже установлены.
//
Процедура УстановкаПараметровСеанса(Знач ИмяПараметра, УстановленныеПараметры) Экспорт
Если ИмяПараметра = "ИнтерактивнаяПроверкаЗаполненияКонтактнойИнформации" Тогда
ПараметрыСеанса.ИнтерактивнаяПроверкаЗаполненияКонтактнойИнформации = Ложь;
@@ -748,19 +791,7 @@
Функция ЧастиАдресаТаблицей(Знач Текст)
ТипСтрока = Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(128));
ТипЧисло = Новый ОписаниеТипов("Число");
Результат = Новый ТаблицаЗначений;
Колонки = Результат.Колонки;
Колонки.Добавить("Уровень", ТипЧисло);
Колонки.Добавить("Позиция", ТипЧисло);
Колонки.Добавить("Значение", ТипСтрока);
Колонки.Добавить("Наименование", ТипСтрока);
Колонки.Добавить("Сокращение", ТипСтрока);
Колонки.Добавить("Начало", ТипЧисло);
Колонки.Добавить("Длина", ТипЧисло);
Колонки.Добавить("Идентификатор", ТипСтрока);
Результат = ЧастиАдреса();
Номер = 1;
Для Каждого Часть Из СловаТекстаТаблицей(Текст, "," + Символы.ПС) Цикл
@@ -803,6 +834,38 @@
Возврат Результат;
КонецФункции
// Функция-конструктор
//
// Возвращаемое значение:
// ТаблицаЗначений - колонки:
// * Уровень - Число -
// * Позиция - Число -
// * Значение - Строка -
// * Наименование - Строка -
// * Сокращение - Строка -
// * Начало - Число -
// * Длина - Число -
// * Идентификатор - Строка-
//
Функция ЧастиАдреса()
ТипСтрока = Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(128));
ТипЧисло = Новый ОписаниеТипов("Число");
Результат = Новый ТаблицаЗначений;
Колонки = Результат.Колонки;
Колонки.Добавить("Уровень", ТипЧисло);
Колонки.Добавить("Позиция", ТипЧисло);
Колонки.Добавить("Значение", ТипСтрока);
Колонки.Добавить("Наименование", ТипСтрока);
Колонки.Добавить("Сокращение", ТипСтрока);
Колонки.Добавить("Начало", ТипЧисло);
Колонки.Добавить("Длина", ТипЧисло);
Колонки.Добавить("Идентификатор", ТипСтрока);
Возврат Результат;
КонецФункции
Функция СловаТекстаТаблицей(Знач Текст, Знач Разделители = Неопределено)
// Удаление из текста спец. символов "точек", "номеров".
@@ -811,14 +874,7 @@
НачалоСлова = 0;
Состояние = 0;
ТипСтрока = Новый ОписаниеТипов("Строка");
ТипЧисло = Новый ОписаниеТипов("Число");
Результат = Новый ТаблицаЗначений;
Колонки = Результат.Колонки;
Колонки.Добавить("Значение", ТипСтрока);
Колонки.Добавить("Начало", ТипЧисло);
Колонки.Добавить("Длина", ТипЧисло);
Результат = ТаблицаФрагментов();
Для Позиция = 1 По СтрДлина(Текст) Цикл
ТекущийСимвол = Сред(Текст, Позиция, 1);
@@ -846,6 +902,29 @@
Возврат Результат;
КонецФункции
// Функция-конструктор таблицы фрагментов
//
// Возвращаемое значение:
// ТаблицаЗначений - колонки:
// * Значение - Строка -
// * Начало - Число -
// * Длина - Число -
//
Функция ТаблицаФрагментов()
ТипСтрока = Новый ОписаниеТипов("Строка");
ТипЧисло = Новый ОписаниеТипов("Число");
Результат = Новый ТаблицаЗначений;
Колонки = Результат.Колонки;
Колонки.Добавить("Значение", ТипСтрока);
Колонки.Добавить("Начало", ТипЧисло);
Колонки.Добавить("Длина", ТипЧисло);
Возврат Результат;
КонецФункции
Процедура ОпределитьСтрануИИндекс(ДанныеАдреса)
Если Метаданные.ОбщиеМодули.Найти("РаботаСАдресами") = Неопределено Тогда
@@ -1355,7 +1434,7 @@
Функция ОбъектыСодержащиеВидДляСписка()
ОбъектыМетаданных = Новый Массив;
ОбъектыМетаданных = Новый Массив; // Массив из СправочникСсылка, ДокументСсылка
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
@@ -1392,13 +1471,11 @@
КонецЕсли;
КонецЦикла;
Разделитель = "";
ТекстЗапроса = "";
Для каждого Объект Из ОбъектыМетаданных Цикл
ТекстЗапроса = ТекстЗапроса + Разделитель + " ВЫБРАТЬ
НаборТекстаЗапроса = Новый Массив;
ШаблонЗапроса = "ВЫБРАТЬ
| КонтактнаяИнформация.Ссылка КАК Ссылка
|ИЗ
| Справочник." + Объект.Метаданные().Имя + ".КонтактнаяИнформация КАК КонтактнаяИнформация
| Справочник.%1.КонтактнаяИнформация КАК КонтактнаяИнформация
|ГДЕ
| КонтактнаяИнформация.Вид <> ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ПустаяСсылка)
|
@@ -1407,16 +1484,32 @@
|
|ИМЕЮЩИЕ
| КОЛИЧЕСТВО(КонтактнаяИнформация.Вид) > 0 ";
Разделитель = " ОБЪЕДИНИТЬ ВСЕ ";
Для каждого Объект Из ОбъектыМетаданных Цикл
НаборТекстаЗапроса.Добавить(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонЗапроса, Объект.Метаданные().Имя));
КонецЦикла;
Запрос = Новый Запрос(ТекстЗапроса);
Запрос = Новый Запрос;
Запрос.Текст = СтрСоединить(НаборТекстаЗапроса, " ОБЪЕДИНИТЬ ВСЕ ");
РезультатЗапроса = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
Возврат РезультатЗапроса;
КонецФункции
// Описание
//
// Параметры:
// ВидКонтактнойИнформации - ДанныеФормыСтруктура, СправочникСсылка.ВидыКонтактнойИнформации - где:
// * Наименование - Строка -
//
// Возвращаемое значение:
// Структура - Описание:
// * ЕстьОшибки - Булево -
// * ТекстОшибки - Строка -
//
Функция ПроверитьПараметрыВидаКонтактнойИнформации(ВидКонтактнойИнформации) Экспорт
Результат = Новый Структура("ЕстьОшибки, ТекстОшибки", Ложь, "");
@@ -2161,7 +2254,8 @@
Если ТипЗнч(Результат.Состав.Состав) = Тип("Строка") Тогда
Возврат ПустаяСтрока(Результат.Состав.Состав);
ИначеЕсли ТипЗнч(Результат.Состав.Состав) = Тип("ОбъектXDTO") Тогда
Для каждого ПолеXDTO Из Результат.Состав.Состав.Свойства() Цикл
СписокСвойств = Результат.Состав.Состав.Свойства(); // КоллекцияСвойствXDTO
Для каждого ПолеXDTO Из СписокСвойств Цикл
Если ПолеXDTO.Имя = "ДопАдрЭл" Или ПолеXDTO.Имя = "СвРайМО" Тогда
Продолжить;
ИначеЕсли ЗначениеЗаполнено(Результат.Состав.Состав.Получить(ПолеXDTO.Имя)) Тогда
@@ -3521,6 +3615,14 @@
Возврат Преобразователь;
КонецФункции
// Описание
//
// Параметры:
// ТипКонтактнойИнформации - ПеречислениеСсылка.ТипыКонтактнойИнформации -
// Возвращаемое значение:
// ПреобразованиеXSL - Описание
//
Функция ПреобразованиеXSLT_ИнтерпретацияРазличияXMLКонтактнойИнформации(Знач ТипКонтактнойИнформации)
Если ТипЗнч(ТипКонтактнойИнформации) <> Тип("Строка") Тогда
@@ -4301,5 +4403,3 @@
КонецФункции
#КонецОбласти
@@ -345,12 +345,17 @@
// Дополнительные реквизиты подключены к объекту.
Проверка = Новый Структура;
Проверка.Вставить("ДополнительныеРеквизиты", Неопределено);
Проверка.Вставить("ЭтоГруппа", Ложь);
ЗаполнитьЗначенияСвойств(Проверка, Источник);
Если Проверка.ДополнительныеРеквизиты = Неопределено Тогда
Возврат; // Не подключены дополнительные реквизиты.
КонецЕсли;
Если Проверка.ЭтоГруппа Тогда
Возврат; // Для групп дополнительные реквизиты не подключаются.
КонецЕсли;
ТаблицаНаборов = ПолучитьНаборыСвойствОбъекта(Источник);
Наборы = ТаблицаНаборов.ВыгрузитьКолонку("Набор");
+10 -9
View File
@@ -1,17 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="9425be86-50d0-4138-855d-f316743e2386">
<mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="74ddfb69-09f7-4c03-8f12-b02df4177d16">
<name>БиблиотекаСтандартныхПодсистем</name>
<synonym>
<key>ru</key>
<value>Библиотека стандартных подсистем, редакция 3.1</value>
</synonym>
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="89972e87-6770-4208-b3ad-0339f55800cd"/>
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="dd34562a-64ce-4736-8d54-1cac2285f9bd"/>
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="79f9cfa5-29ab-4d61-8b3d-e7c37485dcbb"/>
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="bc56feb2-0157-4ae0-ae13-216abb78cc93"/>
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="3b47d3b6-4208-4727-86df-9c2014c945b1"/>
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="b6db39ed-be39-4155-a201-9cb5373ee220"/>
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="27a588af-7db7-48d7-8acf-e4cff17b1d73"/>
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="f5ede807-743c-485b-a1f7-bf2bac7a234d"/>
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="f42e0d61-dda5-4232-b346-f4178dd0bdc4"/>
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="8129014e-e344-46e2-a73c-2a27b25c7fc6"/>
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="f94a64ac-681e-4ce1-ada9-8ded64405fc6"/>
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="dc736159-55b2-443f-8e22-da8847270cbc"/>
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="cad1ec98-b248-491b-9574-df4e95456206"/>
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="517b9cce-757a-4cae-8d0b-32c905280918"/>
<defaultRunMode>ManagedApplication</defaultRunMode>
<usePurposes>PersonalComputer</usePurposes>
<scriptVariant>Russian</scriptVariant>
@@ -19,7 +19,7 @@
<defaultRoles>Role.АдминистраторСистемы</defaultRoles>
<defaultRoles>Role.ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок</defaultRoles>
<vendor>Фирма &quot;1С&quot;</vendor>
<version>3.1.2.182</version>
<version>3.1.2.189</version>
<updateCatalogAddress>http://downloads.v8.1c.ru/tmplts/</updateCatalogAddress>
<includeHelpInContents>true</includeHelpInContents>
<usedMobileApplicationFunctionalities>
@@ -1241,6 +1241,7 @@
<functionalOptions>FunctionalOption.ОтложенноеОбновлениеВГлавномУзлеЗавершеноУспешно</functionalOptions>
<functionalOptions>FunctionalOption.ОтложенноеОбновлениеЗавершеноУспешно</functionalOptions>
<functionalOptions>FunctionalOption.ОтправлятьПисьмаВФорматеHTML</functionalOptions>
<functionalOptions>FunctionalOption.ПользователиВМоделиСервиса</functionalOptions>
<functionalOptions>FunctionalOption.ПрефиксИнформационнойБазы</functionalOptions>
<functionalOptions>FunctionalOption.ПроверятьЭлектронныеПодписиНаСервере</functionalOptions>
<functionalOptions>FunctionalOption.РаботаВАвтономномРежиме</functionalOptions>
@@ -1 +1 @@
{6,1,1,5a00459f-ea06-4662-9b16-d3e8b7eb2bd9,1,eba2b56c-b2e1-4362-aa9f-093638aace44,"3.1.2.182","Фирма ""1С""","БиблиотекаСтандартныхПодсистем",5901,1,0,9425be86-50d0-4138-855d-f316743e2386,9425be86-50d0-4138-855d-f316743e2386,1,0,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,1,0,9233322b-dfdb-4c66-91fe-1299292d40a5,9233322b-dfdb-4c66-91fe-1299292d40a5,1,0,7795348b-2f52-47f7-bf00-e11e5e795a43,7795348b-2f52-47f7-bf00-e11e5e795a43,1,0,0421b67e-ed26-491d-ab98-ec59002ed4ce,0421b67e-ed26-491d-ab98-ec59002ed4ce,1,0,bb47ced2-31f9-4870-8633-20b986e53ccc,bb47ced2-31f9-4870-8633-20b986e53ccc,1,0,7d8acec9-f5a9-411e-921c-446ed0dd3332,7d8acec9-f5a9-411e-921c-446ed0dd3332,1,0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,1,0,cdbd26b1-9583-46e8-adf7-8cc705639892,cdbd26b1-9583-46e8-adf7-8cc705639892,1,0,c0e38c3e-7088-4e35-9d84-2d0ab9655402,c0e38c3e-7088-4e35-9d84-2d0ab9655402,1,0,1098786f-dd24-4cce-b212-be0cb5f01735,1098786f-dd24-4cce-b212-be0cb5f01735,1,0,3c0037f3-4422-4836-b116-8c72e32bdd55,3c0037f3-4422-4836-b116-8c72e32bdd55,1,0,6f7c6c31-206b-4010-bdad-1ad2e304f154,6f7c6c31-206b-4010-bdad-1ad2e304f154,1,0,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,1,0,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,1,0,5b68d479-7880-44de-84e3-7f578b43f0dc,5b68d479-7880-44de-84e3-7f578b43f0dc,1,0,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,1,0,b4629308-42de-4ce8-8591-cf0c2399a9a2,b4629308-42de-4ce8-8591-cf0c2399a9a2,1,0,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,1,0,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,1,0,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,1,0,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1,0,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,1,0,b93b8760-6200-40ee-8bdc-875ba80a6155,b93b8760-6200-40ee-8bdc-875ba80a6155,1,0,e8b248d9-9049-456a-9c7d-7a0462cc67ab,e8b248d9-9049-456a-9c7d-7a0462cc67ab,1,0,d4562287-440d-4462-9de2-7097ccbf3764,d4562287-440d-4462-9de2-7097ccbf3764,1,0,1983fe34-c984-4659-ba41-0e94504f8989,1983fe34-c984-4659-ba41-0e94504f8989,1,0,ec797c75-02c5-4cf5-9dd4-26cd46c99519,ec797c75-02c5-4cf5-9dd4-26cd46c99519,1,0,6fccdf59-fc99-4a2b-a144-fffe438a147c,6fccdf59-fc99-4a2b-a144-fffe438a147c,1,0,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,1,0,08a413ff-bebd-42e5-8ff3-2115746a0844,08a413ff-bebd-42e5-8ff3-2115746a0844,1,0,da9b32e6-5b93-45a6-84b2-238d57541e18,da9b32e6-5b93-45a6-84b2-238d57541e18,1,0,e43d69c8-b284-47da-b236-611bc94a15b6,e43d69c8-b284-47da-b236-611bc94a15b6,1,0,31eeaa05-6c49-41fe-b840-1edbad4ccac7,31eeaa05-6c49-41fe-b840-1edbad4ccac7,1,0,842c8662-8f39-405e-9665-cbdabc116159,842c8662-8f39-405e-9665-cbdabc116159,1,0,fca4b033-02c4-4d61-9e51-87783c3cef1a,fca4b033-02c4-4d61-9e51-87783c3cef1a,1,0,396ef757-d7f6-411f-8c4c-1acb1106a009,396ef757-d7f6-411f-8c4c-1acb1106a009,1,0,839e29b1-a0d2-40fa-9f3e-46e66b943358,839e29b1-a0d2-40fa-9f3e-46e66b943358,1,0,c56d2cc7-630a-441b-b23f-ba78c34849bd,c56d2cc7-630a-441b-b23f-ba78c34849bd,1,0,9aecf4f5-46ed-4d1c-a584-cd028e467895,9aecf4f5-46ed-4d1c-a584-cd028e467895,1,0,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,1,0,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,1,0,a1f10624-22e9-4a04-b370-fd085bdd0f67,a1f10624-22e9-4a04-b370-fd085bdd0f67,1,0,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,1,0,3cffb795-2a28-4beb-92f4-5813f5994022,3cffb795-2a28-4beb-92f4-5813f5994022,1,0,3323ca68-1382-4710-a933-23fc56588935,3323ca68-1382-4710-a933-23fc56588935,1,0,d6b12775-3255-42b8-88b2-62684f873e7d,d6b12775-3255-42b8-88b2-62684f873e7d,1,0,cc23d903-ccc5-42f4-862f-5e7278c4e346,cc23d903-ccc5-42f4-862f-5e7278c4e346,1,0,98f033e0-fa40-46e0-b51a-87a066749a35,98f033e0-fa40-46e0-b51a-87a066749a35,1,0,e8b4cb2d-1180-4101-954a-4cb5464f198c,e8b4cb2d-1180-4101-954a-4cb5464f198c,1,0,a379287d-1ce8-460d-a503-910e728e28f1,a379287d-1ce8-460d-a503-910e728e28f1,1,0,f765c4ba-c677-42ac-8d0c-43bb485405b9,f765c4ba-c677-42ac-8d0c-43bb485405b9,1,0,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,1,0,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,1,0,4009cb3a-6754-481f-911b-907558cea38a,4009cb3a-6754-481f-911b-907558cea38a,1,0,653a7fd8-91c7-49aa-aa63-45da087e0d0a,653a7fd8-91c7-49aa-aa63-45da087e0d0a,1,0,d7cf3981-cf63-4a21-868b-8175a7704a8f,d7cf3981-cf63-4a21-868b-8175a7704a8f,1,0,0ae93712-74e8-41c7-8f2d-4dfc8983697d,0ae93712-74e8-41c7-8f2d-4dfc8983697d,1,0,9e4dfdfa-ec05-4c9e-89bd-fc24f60f2678,9e4dfdfa-ec05-4c9e-89bd-fc24f60f2678,1,0,64f548c8-c1fc-434e-b3ee-5be367ead1db,64f548c8-c1fc-434e-b3ee-5be367ead1db,1,0,cd592a5d-b184-4558-8a28-7079ccf28b89,cd592a5d-b184-4558-8a28-7079ccf28b89,1,0,2009c673-c1a5-45fc-8da2-a36c435085a6,2009c673-c1a5Line truncated
{6,1,1,bb2341fd-718d-4a00-8092-f4cfa6312305,1,b1a28548-8f11-41f2-a83d-6010a3b0fccb,"3.1.2.189","Фирма ""1С""","БиблиотекаСтандартныхПодсистем",5902,1,0,74ddfb69-09f7-4c03-8f12-b02df4177d16,74ddfb69-09f7-4c03-8f12-b02df4177d16,1,0,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,1,0,9233322b-dfdb-4c66-91fe-1299292d40a5,9233322b-dfdb-4c66-91fe-1299292d40a5,1,0,7795348b-2f52-47f7-bf00-e11e5e795a43,7795348b-2f52-47f7-bf00-e11e5e795a43,1,0,0421b67e-ed26-491d-ab98-ec59002ed4ce,0421b67e-ed26-491d-ab98-ec59002ed4ce,1,0,bb47ced2-31f9-4870-8633-20b986e53ccc,bb47ced2-31f9-4870-8633-20b986e53ccc,1,0,7d8acec9-f5a9-411e-921c-446ed0dd3332,7d8acec9-f5a9-411e-921c-446ed0dd3332,1,0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,1,0,cdbd26b1-9583-46e8-adf7-8cc705639892,cdbd26b1-9583-46e8-adf7-8cc705639892,1,0,c0e38c3e-7088-4e35-9d84-2d0ab9655402,c0e38c3e-7088-4e35-9d84-2d0ab9655402,1,0,1098786f-dd24-4cce-b212-be0cb5f01735,1098786f-dd24-4cce-b212-be0cb5f01735,1,0,3c0037f3-4422-4836-b116-8c72e32bdd55,3c0037f3-4422-4836-b116-8c72e32bdd55,1,0,6f7c6c31-206b-4010-bdad-1ad2e304f154,6f7c6c31-206b-4010-bdad-1ad2e304f154,1,0,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,1,0,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,1,0,5b68d479-7880-44de-84e3-7f578b43f0dc,5b68d479-7880-44de-84e3-7f578b43f0dc,1,0,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,1,0,b4629308-42de-4ce8-8591-cf0c2399a9a2,b4629308-42de-4ce8-8591-cf0c2399a9a2,1,0,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,1,0,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,1,0,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,1,0,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1,0,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,1,0,b93b8760-6200-40ee-8bdc-875ba80a6155,b93b8760-6200-40ee-8bdc-875ba80a6155,1,0,e8b248d9-9049-456a-9c7d-7a0462cc67ab,e8b248d9-9049-456a-9c7d-7a0462cc67ab,1,0,d4562287-440d-4462-9de2-7097ccbf3764,d4562287-440d-4462-9de2-7097ccbf3764,1,0,1983fe34-c984-4659-ba41-0e94504f8989,1983fe34-c984-4659-ba41-0e94504f8989,1,0,ec797c75-02c5-4cf5-9dd4-26cd46c99519,ec797c75-02c5-4cf5-9dd4-26cd46c99519,1,0,6fccdf59-fc99-4a2b-a144-fffe438a147c,6fccdf59-fc99-4a2b-a144-fffe438a147c,1,0,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,1,0,08a413ff-bebd-42e5-8ff3-2115746a0844,08a413ff-bebd-42e5-8ff3-2115746a0844,1,0,da9b32e6-5b93-45a6-84b2-238d57541e18,da9b32e6-5b93-45a6-84b2-238d57541e18,1,0,e43d69c8-b284-47da-b236-611bc94a15b6,e43d69c8-b284-47da-b236-611bc94a15b6,1,0,31eeaa05-6c49-41fe-b840-1edbad4ccac7,31eeaa05-6c49-41fe-b840-1edbad4ccac7,1,0,842c8662-8f39-405e-9665-cbdabc116159,842c8662-8f39-405e-9665-cbdabc116159,1,0,fca4b033-02c4-4d61-9e51-87783c3cef1a,fca4b033-02c4-4d61-9e51-87783c3cef1a,1,0,396ef757-d7f6-411f-8c4c-1acb1106a009,396ef757-d7f6-411f-8c4c-1acb1106a009,1,0,839e29b1-a0d2-40fa-9f3e-46e66b943358,839e29b1-a0d2-40fa-9f3e-46e66b943358,1,0,c56d2cc7-630a-441b-b23f-ba78c34849bd,c56d2cc7-630a-441b-b23f-ba78c34849bd,1,0,9aecf4f5-46ed-4d1c-a584-cd028e467895,9aecf4f5-46ed-4d1c-a584-cd028e467895,1,0,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,1,0,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,1,0,a1f10624-22e9-4a04-b370-fd085bdd0f67,a1f10624-22e9-4a04-b370-fd085bdd0f67,1,0,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,1,0,3cffb795-2a28-4beb-92f4-5813f5994022,3cffb795-2a28-4beb-92f4-5813f5994022,1,0,3323ca68-1382-4710-a933-23fc56588935,3323ca68-1382-4710-a933-23fc56588935,1,0,d6b12775-3255-42b8-88b2-62684f873e7d,d6b12775-3255-42b8-88b2-62684f873e7d,1,0,cc23d903-ccc5-42f4-862f-5e7278c4e346,cc23d903-ccc5-42f4-862f-5e7278c4e346,1,0,98f033e0-fa40-46e0-b51a-87a066749a35,98f033e0-fa40-46e0-b51a-87a066749a35,1,0,e8b4cb2d-1180-4101-954a-4cb5464f198c,e8b4cb2d-1180-4101-954a-4cb5464f198c,1,0,a379287d-1ce8-460d-a503-910e728e28f1,a379287d-1ce8-460d-a503-910e728e28f1,1,0,f765c4ba-c677-42ac-8d0c-43bb485405b9,f765c4ba-c677-42ac-8d0c-43bb485405b9,1,0,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,1,0,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,1,0,4009cb3a-6754-481f-911b-907558cea38a,4009cb3a-6754-481f-911b-907558cea38a,1,0,653a7fd8-91c7-49aa-aa63-45da087e0d0a,653a7fd8-91c7-49aa-aa63-45da087e0d0a,1,0,d7cf3981-cf63-4a21-868b-8175a7704a8f,d7cf3981-cf63-4a21-868b-8175a7704a8f,1,0,0ae93712-74e8-41c7-8f2d-4dfc8983697d,0ae93712-74e8-41c7-8f2d-4dfc8983697d,1,0,9e4dfdfa-ec05-4c9e-89bd-fc24f60f2678,9e4dfdfa-ec05-4c9e-89bd-fc24f60f2678,1,0,64f548c8-c1fc-434e-b3ee-5be367ead1db,64f548c8-c1fc-434e-b3ee-5be367ead1db,1,0,cd592a5d-b184-4558-8a28-7079ccf28b89,cd592a5d-b184-4558-8a28-7079ccf28b89,1,0,2009c673-c1a5-45fc-8da2-a36c435085a6,2009c673-c1a5Line truncated
@@ -1319,7 +1319,7 @@
Если Колонка.Позиция <> Неопределено Тогда
Строка = ТаблицаИнформацияПоКолонкам.Добавить();
Строка.ИмяКолонки = Колонка.Имя;
Строка.Ширина = 20;
Строка.Ширина = ?(ЗначениеЗаполнено(Колонка.Ширина), Колонка.Ширина, 20);
Если Колонка.Позиция = 0 Тогда
Строка.Позиция = Индекс;
Индекс = Индекс + 1;
@@ -1331,9 +1331,6 @@
Строка.Видимость = Истина;
Строка.ПредставлениеКолонки = Колонка.Заголовок;
Строка.ТипКолонки = Колонка.Тип;
Если ПустаяСтрока(Строка.Группа) Тогда
Строка.Группа = Колонка.Заголовок;
КонецЕсли;
КонецЕсли;
КонецЦикла;
@@ -1021,9 +1021,6 @@
Область.Обвести(Линия, Линия, Линия,Линия);
ПозицияНачалоГруппы = Позиция + 1 - Сдвиг ;
Группа = Колонка.Группа;
ИначеЕсли ПустаяСтрока(Колонка.Группа) Тогда
Область = ТабличныйДокумент.Область(1, ПозицияНачалоГруппы, НомерСтроки, Позиция - Сдвиг);
Область.Объединить();
КонецЕсли;
КонецЕсли;
Иначе
@@ -18,7 +18,7 @@
Процедура ПриДобавленииКлассификаторов(Классификаторы, Описатель) Экспорт
Описатель.Идентификатор = ИдентификаторКлассификатора();
Описатель.Наименование = НСтр("ru = 'Справочник по кредитным организациям'");
Описатель.Наименование = НСтр("ru = 'Банки (справочник по кредитным организациям)'");
Описатель.ОбновлятьАвтоматически = Истина;
Описатель.ОбщиеДанные = Истина;
Описатель.ОбработкаРазделенныхДанных = Ложь;
@@ -53,6 +53,19 @@
#Область СлужебныеПроцедурыИФункции
Функция ДоступнаЗагрузкаКлассификатора() Экспорт
Результат = Ложь;
Если ОбщегоНазначения.ПодсистемаСуществует("ИнтернетПоддержкаПользователей.РаботаСКлассификаторами") Тогда
МодульРаботаСКлассификаторами = ОбщегоНазначения.ОбщийМодуль("РаботаСКлассификаторами");
Результат = МодульРаботаСКлассификаторами.ИнтерактивнаяЗагрузкаКлассификаторовДоступна();
КонецЕсли;
Возврат Результат;
КонецФункции
Процедура ПриПолученииДанныхКлассификатора(Параметры, СтандартнаяОбработка) Экспорт
СтандартнаяОбработка = Истина;
КонецПроцедуры
@@ -5606,8 +5606,7 @@
<name>КонечнаяТочкаКорреспондента</name>
<id>8</id>
<valueType>
<types>String</types>
<stringQualifiers/>
<types>DefinedType.КонечнаяТочкаОбменаСообщениями</types>
</valueType>
<view>
<common>true</common>
@@ -6950,8 +6949,7 @@
<name>КонечнаяТочкаКорреспондента</name>
<id>104</id>
<valueType>
<types>String</types>
<stringQualifiers/>
<types>DefinedType.КонечнаяТочкаОбменаСообщениями</types>
</valueType>
<view>
<common>true</common>
@@ -4361,11 +4361,9 @@
</edit>
</attributes>
<attributes>
<name>ЭтоСтранаУчастникЕАЭС</name>
<name>СведенияОСтране</name>
<id>52</id>
<valueType>
<types>Boolean</types>
</valueType>
<valueType/>
<view>
<common>true</common>
</view>
@@ -1258,7 +1258,7 @@
ЧастьГород = СокрЛП(?(ЧастиАдреса.Количество() > 0, СтрСоединить(ЧастиАдреса, ","), ""));
Если ЭтоСтранаУчастникЕАЭС(НаселенныйПунктДетально.Country) Тогда
Если СведенияОСтране.УчастникЕАЭС Тогда
НаселенныйПунктДетально.AddressType = УправлениеКонтактнойИнформациейКлиентСервер.АдресЕАЭС();
НаселенныйПунктДетально.Area = ЧастьГород;
Иначе
@@ -1293,11 +1293,12 @@
&НаКлиенте
Процедура ОтобразитьЭлементыФормыВСоответствиеСоСтраной()
СведенияОСтране = СведенияОСтране(Страна);
Если Не УправлениеКонтактнойИнформациейКлиентСервер.ЭтоАдресВСвободнойФорме(НаселенныйПунктДетально.AddressType) Тогда
КоличествоПолейПредыдущийТипАдреса = РаботаСАдресамиКлиентСервер.ИменаУровнейАдреса(НаселенныйПунктДетально.AddressType, Ложь).Количество();
ПереопределитьТипаАдресаПоСтране(Страна, НаселенныйПунктДетально);
ПереопределитьТипаАдресаПоСтране(Страна, НаселенныйПунктДетально, СведенияОСтране);
КоличествоПолейНовыйТипАдреса = РаботаСАдресамиКлиентСервер.ИменаУровнейАдреса(НаселенныйПунктДетально.AddressType, Ложь).Количество();
Если КоличествоПолейПредыдущийТипАдреса > КоличествоПолейНовыйТипАдреса Тогда
@@ -1311,13 +1312,13 @@
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ПереопределитьТипаАдресаПоСтране(Страна, НаселенныйПунктДетально)
Процедура ПереопределитьТипаАдресаПоСтране(Страна, НаселенныйПунктДетально, СведенияОСтране)
Если РаботаСАдресамиКлиентСервер.ЭтоОсновнаяСтрана(Страна) Тогда
Если СтрСравнить(НаселенныйПунктДетально.AddressType, РаботаСАдресамиКлиентСервер.АдминистративноТерриториальныйАдрес()) <> 0 Тогда
НаселенныйПунктДетально.AddressType = РаботаСАдресамиКлиентСервер.МуниципальныйАдрес();
КонецЕсли;
ИначеЕсли ЭтоСтранаУчастникЕАЭС(Страна) Тогда
ИначеЕсли СведенияОСтране.УчастникЕАЭС Тогда
НаселенныйПунктДетально.AddressType = УправлениеКонтактнойИнформациейКлиентСервер.АдресЕАЭС();
Иначе
НаселенныйПунктДетально.AddressType = УправлениеКонтактнойИнформациейКлиентСервер.ИностранныйАдрес();
@@ -1325,22 +1326,6 @@
КонецПроцедуры
&НаКлиенте
Процедура УстановитьСтрану(ПредставлениеСтраны)
Если ЗначениеЗаполнено(ПредставлениеСтраны) Тогда
Страна = ОпределитьСтрануПоНаименованию(ПредставлениеСтраны);
КонецЕсли;
ОтобразитьЭлементыФормыВСоответствиеСоСтраной();
КонецПроцедуры
&НаСервереБезКонтекста
Функция ОпределитьСтрануПоНаименованию(Страна)
Возврат УправлениеКонтактнойИнформацией.ДанныеСтраныМира(, Страна).Ссылка;
КонецФункции
&НаКлиенте
Процедура ПеренестиЗначенияПолейАдресВПоляНовогоТипа()
@@ -1434,7 +1419,7 @@
УдалитьСтрануИзПредставления();
НаселенныйПунктДетально.Street = ПредставлениеАдреса;
НаселенныйПунктДетально.AddressType = ?(ЭтоСтранаУчастникЕАЭС(Страна),
НаселенныйПунктДетально.AddressType = ?(СведенияОСтране.УчастникЕАЭС,
УправлениеКонтактнойИнформациейКлиентСервер.АдресЕАЭС(),
УправлениеКонтактнойИнформациейКлиентСервер.ИностранныйАдрес());
КонецЕсли;
@@ -1911,9 +1896,6 @@
КонецЕсли;
ЭтоНациональныйАдрес = (Страна = ОсновнаяСтрана И Не МеждународныйФорматАдреса);
СведенияОСтране = СведенияОСтране(Страна);
ЭтоСтранаУчастникЕАЭС = СведенияОСтране.УчастникЕАЭС;
ОпределитьДоступностьАвтоПодборАдреса();
Если МеждународныйФорматАдреса Тогда
@@ -1951,7 +1933,7 @@
Элементы.ГруппаДобавлениеСтроения.Видимость = Ложь;
Элементы.ГруппаДобавлениеПомещения.Видимость = Ложь;
Если ЭтоСтранаУчастникЕАЭС И Не МеждународныйФорматАдреса Тогда
Если СведенияОСтране.УчастникЕАЭС И Не МеждународныйФорматАдреса Тогда
Элементы.Улица.Заголовок = НСтр("ru = 'Улица'");
Элементы.НаселенныйПункт.КнопкаВыбора = Истина;
ВидимостьСтроений = Истина;
@@ -2069,6 +2051,8 @@
КодСтраны = ДанныеСтраны.Код;
КонецЕсли;
СведенияОСтране = СведенияОСтране(Страна);
Если УправлениеКонтактнойИнформациейКлиентСервер.ЭтоАдресВСвободнойФорме(ДанныеАдреса.AddressType) Тогда
РазрешитьВводАдресаВСвободнойФорме = Истина;
КонецЕсли;
@@ -3040,7 +3024,7 @@
КонецЕсли;
КонецЕсли;
ПереопределитьТипаАдресаПоСтране(Страна, НаселенныйПунктДетально);
ПереопределитьТипаАдресаПоСтране(Страна, НаселенныйПунктДетально, СведенияОСтране(Страна));
КонецЕсли;
@@ -3343,13 +3327,6 @@
КонецПроцедуры
// Страны ЕАЭС поддерживающие структурированный ввод.
//
&НаСервереБезКонтекста
Функция ЭтоСтранаУчастникЕАЭС(Страна)
Возврат УправлениеКонтактнойИнформацией.ЭтоСтранаУчастникЕАЭС(Страна);
КонецФункции
&НаСервереБезКонтекста
Функция СведенияОСтране(Страна)
Возврат УправлениеКонтактнойИнформацией.ДанныеСтраныМира(, Страна);
@@ -3498,7 +3475,7 @@
Если Не АдресВосстановлен Тогда
ТипАдреса = ?(ЭтоСтранаУчастникЕАЭС, УправлениеКонтактнойИнформациейКлиентСервер.АдресЕАЭС(),
ТипАдреса = ?(СведенияОСтране.УчастникЕАЭС, УправлениеКонтактнойИнформациейКлиентСервер.АдресЕАЭС(),
УправлениеКонтактнойИнформациейКлиентСервер.ИностранныйАдрес());
ИменаУровнейАдреса = РаботаСАдресамиКлиентСервер.ИменаУровнейАдреса(ТипАдреса, Ложь);
@@ -3575,10 +3552,6 @@
НаселенныйПункт = ПредставлениеНаселенногоПунктаАдреса(НаселенныйПунктДетально);
Если СтрСравнить(Страна, НаселенныйПунктДетально.Country) <> 0 Тогда
УстановитьСтрану(НаселенныйПунктДетально.Country);
КонецЕсли;
Улица = ?(ПустаяСтрока(НаселенныйПунктДетально.Street), "",
НаселенныйПунктДетально.Street + " " + НаселенныйПунктДетально.StreetType);
@@ -8322,6 +8322,19 @@
</view>
<edit/>
</attributes>
<attributes>
<name>ПравоПометкиУдаленияПапок</name>
<id>27</id>
<valueType>
<types>Boolean</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<formCommands>
<name>УстановитьВариантНавигацииПоПредмету</name>
<title>
@@ -29,6 +29,7 @@
Взаимодействия.ИнициализироватьФормуСпискаВзаимодействий(ЭтотОбъект, Параметры);
ОпределитьДоступностьПолнотекстовыйПоиск();
ПравоПометкиУдаленияПапок = ПравоДоступа("Изменение", Метаданные.Справочники.ПапкиЭлектронныхПисем);
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Закладки, "Владелец", Пользователи.ТекущийПользователь(),,, Истина);
@@ -284,6 +285,17 @@
Возврат;
КонецЕсли;
Если Элемент.Имя = "Папки" Тогда
ТекущиеДанные = Элементы.Папки.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат
КонецЕсли;
Элементы.ПапкиКонтекстноеМенюУдалить.Доступность = Не (ТипЗнч(ТекущиеДанные.Значение) = Тип("СправочникСсылка.УчетныеЗаписиЭлектроннойПочты")
Или ТекущиеДанные.ЕстьПравоНаИзменение = 0
Или ТекущиеДанные.ПредопределеннаяПапка);
КонецЕсли;
Если НеОтрабатыватьАктивизациюПанелиНавигации Тогда
НеОтрабатыватьАктивизациюПанелиНавигации = Ложь;
Иначе
@@ -1606,12 +1618,14 @@
Неопределено, Неопределено));
КонецЕсли;
ИначеЕсли Элементы.СтраницыПанелиНавигации.ТекущаяСтраница = Элементы.СтраницаПапки Тогда
ТекущиеДанные = Элементы.Папки.ТекущиеДанные;
Если ТекущиеДанные <> Неопределено Тогда
ИзменитьОтборСписок("Папки",Новый Структура("Значение,УчетнаяЗапись",
ТекущиеДанные.Значение, ТекущиеДанные.УчетнаяЗапись));
СохранитьТекущееАктивноеЗначениеВНастройках("Папки", ТекущиеДанные.Значение);
КонецЕсли;
ИначеЕсли Элементы.СтраницыПанелиНавигации.ТекущаяСтраница = Элементы.СтраницаЗакладки Тогда
ТекущиеДанные = Элементы.Закладки.ТекущиеДанные;
Если ТекущиеДанные <> Неопределено И НЕ ТекущиеДанные.ЭтоГруппа Тогда
@@ -81,12 +81,6 @@
//
Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт
ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.ЗапланированноеВзаимодействие.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.СообщениеSMS.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.ТелефонныйЗвонок.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.ЭлектронноеПисьмоИсходящее.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
КонецПроцедуры
// Для использования в процедуре ДобавитьКомандыСозданияНаОсновании других модулей менеджеров объектов.
@@ -79,11 +79,6 @@
//
Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт
Документы.Встреча.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.СообщениеSMS.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.ТелефонныйЗвонок.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.ЭлектронноеПисьмоИсходящее.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
КонецПроцедуры
// Для использования в процедуре ДобавитьКомандыСозданияНаОсновании других модулей менеджеров объектов.
@@ -610,7 +610,7 @@
Если СтрРазделить(Адресат.КакСвязаться, ";", Ложь).Количество() > 1 Тогда
ОбщегоНазначения.СообщитьПользователю(
НСтр("ru = 'Должен быть указан только один номер телефона'"),
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'В строке %1 указан более чем один номер телефона.'"), Адресат.НомерСтроки),
,
ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("Объект.Адресаты", Адресат.НомерСтроки, "КакСвязаться"),
,
@@ -79,12 +79,6 @@
//
Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт
Документы.Встреча.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.ЗапланированноеВзаимодействие.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.ТелефонныйЗвонок.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.ЭлектронноеПисьмоИсходящее.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
КонецПроцедуры
// Для использования в процедуре ДобавитьКомандыСозданияНаОсновании других модулей менеджеров объектов.
@@ -98,12 +98,6 @@
//
Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт
Документы.Встреча.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.ЗапланированноеВзаимодействие.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.СообщениеSMS.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.ЭлектронноеПисьмоИсходящее.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
КонецПроцедуры
// Для использования в процедуре ДобавитьКомандыСозданияНаОсновании других модулей менеджеров объектов.
@@ -117,6 +117,7 @@
ТекстПисьма = Объект.Текст;
Элементы.ТекстПисьма.Вид = ВидПоляФормы.ПолеТекстовогоДокумента;
КонецЕсли;
УстановитьВидимостьПредупрежденияБезопасности();
// Сформируем представление отправителя.
ОтправительПредставление = ВзаимодействияКлиентСервер.ПолучитьПредставлениеАдресата(
@@ -160,11 +160,6 @@
//
Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт
Документы.Встреча.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.ЗапланированноеВзаимодействие.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.СообщениеSMS.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.ТелефонныйЗвонок.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
КонецПроцедуры
// Для использования в процедуре ДобавитьКомандыСозданияНаОсновании других модулей менеджеров объектов.
@@ -2753,10 +2753,12 @@
ТекстПисьмаФорматированныйДокумент.ПолучитьHTML(ТекстHTMLФорматированныйДокумент, ВложенияФорматированныйДокумент);
СтараяПодписьДобавлением = Новый ФорматированныйДокумент;
ДобавитьФорматированныйДокументКФорматированномуДокументу(СтараяПодписьДобавлением, СтараяПодпись);
ТекстHTMLСтараяПодпись = "";
ВложенияСтараяПодпись = Новый Структура;
СтараяПодпись.ПолучитьHTML(ТекстHTMLСтараяПодпись, ВложенияСтараяПодпись);
СтараяПодписьДобавлением.ПолучитьHTML(ТекстHTMLСтараяПодпись, ВложенияСтараяПодпись);
ТекстHTMLСтараяПодпись = Взаимодействия.СодержимоеТегаHTML(ТекстHTMLСтараяПодпись,"body");
ТекстHTMLФорматированныйДокумент = СтрЗаменить(ТекстHTMLФорматированныйДокумент, ТекстHTMLСтараяПодпись, "");
@@ -132,11 +132,6 @@
//
Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт
Документы.Встреча.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.ЗапланированноеВзаимодействие.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.СообщениеSMS.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.ТелефонныйЗвонок.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
КонецПроцедуры
// Для использования в процедуре ДобавитьКомандыСозданияНаОсновании других модулей менеджеров объектов.
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:FunctionalOption xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="bea697f4-46a8-4698-ac60-64326e442f2b">
<name>ПользователиВМоделиСервиса</name>
<synonym>
<key>ru</key>
<value>Пользователи в модели сервиса</value>
</synonym>
<location>Constant.ИспользоватьРазделениеПоОбластямДанных</location>
<privilegedGetMode>true</privilegedGetMode>
<content>InformationRegister.НеразделенныеПользователи</content>
</mdclass:FunctionalOption>
@@ -594,7 +594,7 @@
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Шрифт = Новый Шрифт(Элементы.ДеревоВерсийПредставлениеНомераВерсии.Шрифт, , , Истина, , , , );
Шрифт = ШрифтыСтиля.ВажнаяНадписьШрифт;
Элемент.Оформление.УстановитьЗначениеПараметра("Шрифт", Шрифт);
@@ -8,6 +8,25 @@
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
#Область ДляВызоваИзДругихПодсистем
// ТехнологияСервиса.ВыгрузкаЗагрузкаДанных
// См. ВыгрузкаЗагрузкаДанныхПереопределяемый.ПриРегистрацииОбработчиковВыгрузкиДанных.
Процедура ПередВыгрузкойОбъекта(Контейнер, МенеджерВыгрузкиОбъекта, Сериализатор, Объект, Артефакты, Отказ) Экспорт
УправлениеДоступомСлужебный.ПередВыгрузкойНабораЗаписей(Контейнер, МенеджерВыгрузкиОбъекта, Сериализатор, Объект, Артефакты, Отказ);
КонецПроцедуры
// Конец ТехнологияСервиса.ВыгрузкаЗагрузкаДанных
#КонецОбласти
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
// Процедура обновляет данные регистра при изменении
@@ -0,0 +1,30 @@
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
#Область ДляВызоваИзДругихПодсистем
// ТехнологияСервиса.ВыгрузкаЗагрузкаДанных
// См. ВыгрузкаЗагрузкаДанныхПереопределяемый.ПриРегистрацииОбработчиковВыгрузкиДанных.
Процедура ПередВыгрузкойОбъекта(Контейнер, МенеджерВыгрузкиОбъекта, Сериализатор, Объект, Артефакты, Отказ) Экспорт
УправлениеДоступомСлужебный.ПередВыгрузкойНабораЗаписей(Контейнер, МенеджерВыгрузкиОбъекта, Сериализатор, Объект, Артефакты, Отказ);
КонецПроцедуры
// Конец ТехнологияСервиса.ВыгрузкаЗагрузкаДанных
#КонецОбласти
#КонецОбласти
#КонецЕсли
@@ -3393,6 +3393,19 @@
<common>true</common>
</edit>
</attributes>
<attributes>
<name>ПолужирныйШрифт</name>
<id>14</id>
<valueType>
<types>Font</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<formCommands>
<name>РучноеУправление</name>
<title>
@@ -57,6 +57,7 @@
КонецЕсли;
КрасныйЦвет = ЦветаСтиля.ЦветОсобогоТекста;
ПолужирныйШрифт = ШрифтыСтиля.ВажнаяНадписьШрифт;
КонецПроцедуры
@@ -396,7 +397,6 @@
Если ЗначениеЗаполнено(Состояние.ПоследнееЗавершениеОбновленияДоступа) Тогда
ФорматЧастей = Новый Соответствие;
ЖирныйШрифт = Новый Шрифт(Элементы.ПоследнееЗавершениеОбновленияДоступа.Шрифт,,, Истина);
Если Состояние.ОбновлениеОтмененоНештатно Тогда
Если Состояние.ПоследнееЗавершениеСегодня Тогда
@@ -404,7 +404,7 @@
Иначе
Шаблон = НСтр("ru = '<1>отменено нештатно</1> после запуска %1'");
КонецЕсли;
ФорматЧастей.Вставить(1, Новый Структура("Шрифт, ЦветТекста", ЖирныйШрифт, КрасныйЦвет));
ФорматЧастей.Вставить(1, Новый Структура("Шрифт, ЦветТекста", ПолужирныйШрифт, КрасныйЦвет));
ИначеЕсли ЗначениеЗаполнено(ТекстОшибкиОбновленияДоступа) Тогда
Если Состояние.ОбновлениеОтменено Тогда
Если Состояние.ПоследнееЗавершениеСегодня Тогда
@@ -419,7 +419,7 @@
Шаблон = НСтр("ru = '<1>завершено</1> <2>с ошибкой</2> %1 через %2'");
КонецЕсли;
КонецЕсли;
ФорматЧастей.Вставить(1, Новый Структура("Шрифт, ЦветТекста", ЖирныйШрифт, КрасныйЦвет));
ФорматЧастей.Вставить(1, Новый Структура("Шрифт, ЦветТекста", ПолужирныйШрифт, КрасныйЦвет));
ФорматЧастей.Вставить(2, Новый Структура("Ссылка", "ПоказатьТекстОшибки"));
Иначе
Если Состояние.ОбновлениеОтменено Тогда
@@ -438,7 +438,7 @@
КонецЕсли;
Если Состояние.ПоследнееЗавершениеСегодня Тогда
Шаблон = СтрЗаменить(Шаблон, "%1", "<3>%1</3>");
ФорматЧастей.Вставить(3, Новый Структура("Шрифт", ЖирныйШрифт));
ФорматЧастей.Вставить(3, Новый Структура("Шрифт", ПолужирныйШрифт));
ПоследнееЗавершение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Шаблон,
Формат(Состояние.ПоследнееЗавершениеОбновленияДоступа, "ДЛФ=T"),
@@ -2331,6 +2331,93 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>Administration</name>
<value>true</value>
</right>
<right>
<name>DataAdministration</name>
<value>true</value>
</right>
<right>
<name>UpdateDataBaseConfiguration</name>
<value>true</value>
</right>
<right>
<name>ExclusiveMode</name>
<value>true</value>
</right>
<right>
<name>ActiveUsers</name>
<value>true</value>
</right>
<right>
<name>EventLog</name>
<value>true</value>
</right>
<right>
<name>ThinClient</name>
<value>true</value>
</right>
<right>
<name>WebClient</name>
<value>true</value>
</right>
<right>
<name>ThickClient</name>
<value>true</value>
</right>
<right>
<name>ExternalConnection</name>
<value>true</value>
</right>
<right>
<name>Automation</name>
<value>true</value>
</right>
<right>
<name>TechnicalSpecialistMode</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
<right>
<name>SaveUserData</name>
<value>true</value>
</right>
<right>
<name>ConfigurationExtensionsAdministration</name>
<value>true</value>
</right>
<right>
<name>Output</name>
<value>true</value>
</right>
</object>
<object>
<name>CommonCommand.СозданиеСвязанныхОбъектов</name>
<right>
@@ -2782,93 +2869,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>Administration</name>
<value>true</value>
</right>
<right>
<name>DataAdministration</name>
<value>true</value>
</right>
<right>
<name>UpdateDataBaseConfiguration</name>
<value>true</value>
</right>
<right>
<name>ExclusiveMode</name>
<value>true</value>
</right>
<right>
<name>ActiveUsers</name>
<value>true</value>
</right>
<right>
<name>EventLog</name>
<value>true</value>
</right>
<right>
<name>ThinClient</name>
<value>true</value>
</right>
<right>
<name>WebClient</name>
<value>true</value>
</right>
<right>
<name>ThickClient</name>
<value>true</value>
</right>
<right>
<name>ExternalConnection</name>
<value>true</value>
</right>
<right>
<name>Automation</name>
<value>true</value>
</right>
<right>
<name>TechnicalSpecialistMode</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
<right>
<name>SaveUserData</name>
<value>true</value>
</right>
<right>
<name>ConfigurationExtensionsAdministration</name>
<value>true</value>
</right>
<right>
<name>Output</name>
<value>true</value>
</right>
</object>
<object>
<name>Constant.ИспользоватьАльтернативныйСерверДляЗагрузкиКурсовВалют</name>
<right>
@@ -21,6 +21,37 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
<right>
<name>Output</name>
<value>true</value>
</right>
</object>
<object>
<name>Catalog.РассылкиОтчетов.Command.ВыполнитьСейчас</name>
<right>
@@ -76,37 +107,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
<right>
<name>Output</name>
<value>true</value>
</right>
</object>
<restrictionTemplate>
<name>ДляОбъекта(ПолеОбъекта)</name>
<condition>// ДляОбъекта(ПолеОбъекта = "")
@@ -3233,6 +3233,45 @@
<value>false</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>Administration</name>
<value>false</value>
</right>
<right>
<name>UpdateDataBaseConfiguration</name>
<value>false</value>
</right>
<right>
<name>ThickClient</name>
<value>false</value>
</right>
<right>
<name>ExternalConnection</name>
<value>false</value>
</right>
<right>
<name>Automation</name>
<value>false</value>
</right>
<right>
<name>TechnicalSpecialistMode</name>
<value>false</value>
</right>
<right>
<name>ConfigurationExtensionsAdministration</name>
<value>false</value>
</right>
<right>
<name>InteractiveOpenExtDataProcessors</name>
<value>false</value>
</right>
<right>
<name>InteractiveOpenExtReports</name>
<value>false</value>
</right>
</object>
<object>
<name>Constant.ИспользоватьДополнительныйЯзык2</name>
<right>
@@ -3949,45 +3988,6 @@
<value>false</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>Administration</name>
<value>false</value>
</right>
<right>
<name>UpdateDataBaseConfiguration</name>
<value>false</value>
</right>
<right>
<name>ThickClient</name>
<value>false</value>
</right>
<right>
<name>ExternalConnection</name>
<value>false</value>
</right>
<right>
<name>Automation</name>
<value>false</value>
</right>
<right>
<name>TechnicalSpecialistMode</name>
<value>false</value>
</right>
<right>
<name>ConfigurationExtensionsAdministration</name>
<value>false</value>
</right>
<right>
<name>InteractiveOpenExtDataProcessors</name>
<value>false</value>
</right>
<right>
<name>InteractiveOpenExtReports</name>
<value>false</value>
</right>
</object>
<object>
<name>Constant.ИспользоватьАльтернативныйСерверДляЗагрузкиКурсовВалют</name>
<right>
@@ -18,5 +18,6 @@
<content>XDTOPackage.DataArtefacts_ServiceUsers_1_0_0_1</content>
<content>DataProcessor.ВыгрузкаЗагрузкаДанныхСверткаСсылокНаПользователейВРазделенныхДанных</content>
<content>InformationRegister.НеразделенныеПользователи</content>
<content>FunctionalOption.ПользователиВМоделиСервиса</content>
<parentSubsystem>Subsystem.СтандартныеПодсистемы.Subsystem.РаботаВМоделиСервиса</parentSubsystem>
</mdclass:Subsystem>