3_1_5_146

This commit is contained in:
Компания 1С committed 2021-08-06 11:21:00 +03:00
1 parent fddd4cf787
commit 0f840632ce
97 files changed
+4328 -2738

No files matched your search

@@ -91,7 +91,7 @@
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Имя ""%1"", используемое отчетом (обработкой) ""%2"", уже занято другим опубликованным дополнительным отчетом (обработкой).'"),
ИмяОбъекта,
ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ссылка, "Наименование"));
Строка(Ссылка));
КонецЕсли;
ОбщегоНазначения.СообщитьПользователю(ТекстОшибки, , "Объект.Публикация");
КонецЕсли;
@@ -947,7 +947,21 @@
КонецФункции
// Только для внутреннего использования.
// Параметры:
// ОбъектыРасширений - Булево
//
// Возвращаемое значение:
// ТаблицаЗначений:
// * Имя - Строка
// * ИмяВЕдЧисле - Строка
// * Синоним - Строка
// * СинонимВЕдЧисле - Строка
// * ПорядокКоллекции - Строка
// * БезДанных - Булево
// * БезКлючаОбъектаМетаданных - Булево
// * Идентификатор - УникальныйИдентификатор
// * ОбъектыРасширений - Булево
//
Функция СвойстваКоллекцийОбъектовМетаданных(ОбъектыРасширений = Ложь) Экспорт
СвойстваКоллекцийОбъектовМетаданных = Новый ТаблицаЗначений;
@@ -2096,6 +2110,29 @@
КонецФункции
// Параметры:
// ОбъектыРасширений - Булево
// СвойстваКоллекций - см. СвойстваКоллекцийОбъектовМетаданных
//
// Возвращаемое значение:
// ТаблицаЗначений:
// * Наименование - Строка
// * ПолноеИмя - Строка
// * ПолноеИмяРодителя - Строка
// * ПорядокКоллекции - Число
// * Родитель - СправочникСсылка.ИдентификаторыОбъектовМетаданных
// - СправочникСсылка.ИдентификаторыОбъектовРасширений
// * Имя - Строка
// * ИмяПредопределенныхДанных - Строка
// * Синоним - Строка
// * ПолныйСиноним - Строка
// * БезДанных - Булево
// * БезКлючаОбъектаМетаданных - Булево
// * ИмяРасширения - Строка
// * ХешСуммаРасширения - Строка
// * ЗначениеПустойСсылки - ЛюбаяСсылка
// * ОбъектМетаданных - ОбъектМетаданных
//
Функция СвойстваОбъектовМетаданных(ОбъектыРасширений, СвойстваКоллекций = Неопределено)
МассивТиповРодителя = Новый Массив;
@@ -2132,7 +2169,7 @@
КонецЦикла;
Если Не ОбъектыРасширений Или ЗначениеЗаполнено(ПараметрыСеанса.ПодключенныеРасширения) Тогда
Для каждого СвойстваКоллекции Из СвойстваКоллекций Цикл
Для Каждого СвойстваКоллекции Из СвойстваКоллекций Цикл
ДобавитьСвойстваОбъектовМетаданных(Метаданные[СвойстваКоллекции.Имя], СвойстваКоллекции,
СвойстваОбъектовМетаданных, ОбъектыРасширений, ИменаПредопределенных);
КонецЦикла;
@@ -3407,6 +3444,15 @@
КонецФункции
// Для вызова из СтандартныеПодсистемыПовтИсп.КэшИдентификаторовОбъектовМетаданных.
//
// Параметры:
// КлючДанныхПовторногоИспользования - УникальныйИдентификатор
//
// Возвращаемое значение:
// Структура:
// * ИдентификаторыПоПолнымИменам - Соответствие
// * ОписаниеОбъектовМетаданныхПоИдентификаторам - Соответствие
//
Функция КэшИдентификаторовОбъектовМетаданных(КлючДанныхПовторногоИспользования) Экспорт
Хранилище = Новый Структура;
@@ -3417,7 +3463,16 @@
КонецФункции
// Для процедуры ОбработкаПолученияПредставления.
// Для вызова из СтандартныеПодсистемыПовтИсп.ПредставлениеИдентификатораОбъектаМетаданных.
// Используется из процедуры ОбработкаПолученияПредставления.
//
// Параметры:
// Ссылка - СправочникСсылка.ИдентификаторыОбъектовМетаданных
// - СправочникСсылка.ИдентификаторыОбъектовРасширений
//
// Возвращаемое значение:
// Строка
//
Функция ПредставлениеИдентификатора(Ссылка) Экспорт
ОбъектыРасширений = ТипЗнч(Ссылка) <> Тип("СправочникСсылка.ИдентификаторыОбъектовМетаданных");
@@ -863,7 +863,7 @@
Процедура ОбновитьКонтактнуюИнформациюПользователя(ЭлементСписок)
ТекущиеДанные = ЭлементСписок.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Если НЕ СтандартныеПодсистемыКлиент.ЭтоЭлементДинамическогоСписка(ЭлементСписок) Тогда
ЗаполнитьКонтактнуюИнформацию(ЭтотОбъект, Неопределено);
Возврат;
КонецЕсли;
@@ -543,8 +543,9 @@
&НаСервереБезКонтекста
Функция ЗаполнитьСписокПрограмм(Знач ВыбраннаяПрограмма)
ДобавитьКартинку = ЭлектроннаяПодписьСлужебный.ИспользоватьСервисОблачнойПодписи() ИЛИ ЭлектроннаяПодписьСлужебный.ИспользоватьЭлектроннуюПодписьВМоделиСервиса();
ИспользоватьЭлектроннуюПодписьВМоделиСервиса = ЭлектроннаяПодписьСлужебный.ИспользоватьЭлектроннуюПодписьВМоделиСервиса();
ДобавитьКартинку = ЭлектроннаяПодписьСлужебный.ИспользоватьСервисОблачнойПодписи() ИЛИ ИспользоватьЭлектроннуюПодписьВМоделиСервиса;
КартинкаКомпьютера = Новый Картинка;
КартинкаСервиса = Новый Картинка;
КартинкаОблака = Новый Картинка;
@@ -570,6 +571,9 @@
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Если НЕ ИспользоватьЭлектроннуюПодписьВМоделиСервиса И Выборка.ЭтоПрограммаОблачногоСервиса Тогда
Продолжить;
КонецЕсли;
НоваяСтрока = Результат.Добавить(Выборка.Ссылка);
Если Выборка.ЭтоПрограммаОблачногоСервиса И ДобавитьКартинку Тогда
НоваяСтрока.Картинка = КартинкаСервиса;
@@ -45,7 +45,7 @@
Наименование = НСтр("ru = 'Автоматическая синхронизация данных с %1'");
Наименование = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Наименование,
ОбщегоНазначения.ЗначениеРеквизитаОбъекта(УзелИнформационнойБазы, "Наименование"));
Строка(УзелИнформационнойБазы));
ВидТранспортаОбмена = РегистрыСведений.НастройкиТранспортаОбменаДанными.ВидТранспортаСообщенийОбменаПоУмолчанию(УзелИнформационнойБазы);
@@ -75,7 +75,7 @@
Если Справочники.УчетныеЗаписиЭлектроннойПочты.НайтиПоРеквизиту("АдресЭлектроннойПочты", Адрес).Пустая() Тогда
АдресЭлектроннойПочты = Адрес;
ТекущийЭлемент = Элементы.Пароль;
ИмяОтправителяПисем = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Пользователи.ТекущийПользователь(), "Наименование");
ИмяОтправителяПисем = Строка(Пользователи.ТекущийПользователь());
Прервать;
КонецЕсли;
КонецЦикла;
@@ -589,6 +589,10 @@
<items xsi:type="form:FormField">
<name>СертификатыПользователь</name>
<id>260</id>
<title>
<key>ru</key>
<value>Пользователь</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
@@ -2595,7 +2599,15 @@
СертификатыПереопределяемый.Отозван КАК Отозван,
СертификатыПереопределяемый.УсиленнаяЗащитаЗакрытогоКлюча КАК УсиленнаяЗащитаЗакрытогоКлюча,
СертификатыПереопределяемый.Организация КАК Организация,
СертификатыПереопределяемый.Пользователь КАК Пользователь,
ВЫБОР
КОГДА ЕСТЬNULL(СертификатыКлючейЭлектроннойПодписиИШифрованияПользователиПереопределяемый.ВсегоПользователей, 0) = 0
ТОГДА СертификатыПереопределяемый.Пользователь
КОГДА ЕСТЬNULL(СертификатыКлючейЭлектроннойПодписиИШифрованияПользователиПереопределяемый.ВсегоПользователей, 0) = 1
ТОГДА СертификатыКлючейЭлектроннойПодписиИШифрованияПользователиПереопределяемый.Пользователь
КОГДА ЕСТЬNULL(СертификатыКлючейЭлектроннойПодписиИШифрованияПользователиПереопределяемый.ВсегоПользователей, 0) > 1
ТОГДА &amp;НесколькоПользователей
ИНАЧЕ &quot; &quot;
КОНЕЦ КАК Пользователь,
СертификатыПереопределяемый.ПользовательОповещенОСрокеДействия КАК ПользовательОповещенОСрокеДействия,
СертификатыПереопределяемый.Добавил КАК Добавил,
&amp;ДополнительноеПоле КАК СостояниеЗаявления,
@@ -2618,6 +2630,16 @@
Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования КАК СертификатыПереопределяемый
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПрограммыЭлектроннойПодписиИШифрования КАК ПрограммыПереопределяемый
ПО СертификатыПереопределяемый.Программа = ПрограммыПереопределяемый.Ссылка
ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
СертификатыКлючейЭлектроннойПодписиИШифрованияПользователиПереопределяемый.Ссылка КАК Ссылка,
МАКСИМУМ(СертификатыКлючейЭлектроннойПодписиИШифрованияПользователиПереопределяемый.Пользователь) КАК Пользователь,
КОЛИЧЕСТВО(*) КАК ВсегоПользователей
ИЗ
Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования.Пользователи КАК СертификатыКлючейЭлектроннойПодписиИШифрованияПользователиПереопределяемый
СГРУППИРОВАТЬ ПО
СертификатыКлючейЭлектроннойПодписиИШифрованияПользователиПереопределяемый.Ссылка) КАК СертификатыКлючейЭлектроннойПодписиИШифрованияПользователиПереопределяемый
ПО (СертификатыКлючейЭлектроннойПодписиИШифрованияПользователиПереопределяемый.Ссылка = СертификатыПереопределяемый.Ссылка)
ГДЕ
(&amp;ПользовательСертификата = НЕОПРЕДЕЛЕНО
ИЛИ СертификатыПереопределяемый.Пользователь = &amp;ПользовательСертификата
@@ -2628,9 +2650,7 @@
Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования.Пользователи КАК
СертификатыКлючейЭлектроннойПодписиИШифрованияПользователиПереопределяемый
ГДЕ
(СертификатыКлючейЭлектроннойПодписиИШифрованияПользователиПереопределяемый.Пользователь = &amp;ПользовательСертификата
ИЛИ
СертификатыКлючейЭлектроннойПодписиИШифрованияПользователиПереопределяемый.Ссылка.Пользователь = &amp;ПользовательСертификата)))</queryText>
СертификатыКлючейЭлектроннойПодписиИШифрованияПользователиПереопределяемый.Пользователь = &amp;ПользовательСертификата))</queryText>
<mainTable>Catalog.СертификатыКлючейЭлектроннойПодписиИШифрования</mainTable>
<dynamicDataRead>true</dynamicDataRead>
<autoFillAvailableFields>true</autoFillAvailableFields>
@@ -532,8 +532,10 @@
// Отбор сертификатов Все/Мои.
ПоказатьСвои = Форма.СертификатыПоказать <> "ВсеСертификаты";
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(
Форма.Сертификаты, "Пользователь", ТекущийПользователь,,, ПоказатьСвои);
ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(Форма.Сертификаты, "ПользовательСертификата",
?(ПоказатьСвои, ТекущийПользователь, Неопределено));
ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(Форма.Сертификаты, "НесколькоПользователей",
НСтр("ru = '<Несколько>'"));
Форма.Сертификаты.Параметры.УстановитьЗначениеПараметра("ПользовательСертификата",
?(ПоказатьСвои, ТекущийПользователь, Неопределено));
@@ -86,7 +86,9 @@
ГлобальныеНастройки = ВариантыОтчетов.ГлобальныеНастройки();
Элементы.ОформлениеНастроитьКолонтитулы.Видимость =
ГлобальныеНастройки.ВыводитьИндивидуальныеНастройкиКолонтитулов И Не РежимИзмененияЭлементаСтруктурыНастроек;
ГлобальныеНастройки.ВыводитьИндивидуальныеНастройкиКолонтитулов
И Не РежимИзмененияЭлементаСтруктурыНастроек
И (Не ОбщегоНазначения.РазделениеВключено() Или ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных());
Если РежимИзмененияЭлементаСтруктурыНастроек Тогда
ИмяСтраницы = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Параметры, "ИмяСтраницы", "СтраницаСоставГруппировки");
@@ -3871,15 +3873,20 @@
&НаКлиенте
Процедура СдвинутьОформление(ВНачало = Истина)
ИдентификаторыСтрок = Элементы.Оформление.ВыделенныеСтроки;
Строки = Оформление.ПолучитьЭлементы();
Раздел = КорневаяСтрокаПоУмолчанию("Оформление");
Если Раздел <> Неопределено Тогда
ИдентификаторРаздела = Раздел.ПолучитьИдентификатор();
ИндексРаздела = ИдентификаторыСтрок.Найти(ИдентификаторРаздела);
Если ИндексРаздела <> Неопределено Тогда
ИдентификаторыСтрок.Удалить(ИндексРаздела);
ГраницаНачалаЭлементовОформления = 2;
ГраницаИдентификаторовСтрок = ИдентификаторыСтрок.ВГраница();
Пока ГраницаИдентификаторовСтрок >= 0 Цикл
Строка = Оформление.НайтиПоИдентификатору(ИдентификаторыСтрок[ГраницаИдентификаторовСтрок]);
Если Строки.Индекс(Строка) < ГраницаНачалаЭлементовОформления Тогда
ИдентификаторыСтрок.Удалить(ГраницаИдентификаторовСтрок);
КонецЕсли;
КонецЕсли;
ГраницаИдентификаторовСтрок = ГраницаИдентификаторовСтрок - 1;
КонецЦикла;
Если ИдентификаторыСтрок.Количество() = 0 Тогда
Возврат;
@@ -3892,8 +3899,11 @@
Строка = Оформление.НайтиПоИдентификатору(ИдентификаторСтроки);
ЭлементНастройки = ЭлементНастройки(СвойствоЭлементаСтруктуры, Строка);
Если ТипЗнч(ЭлементНастройки) <> Тип("ЭлементУсловногоОформленияКомпоновкиДанных") Тогда
Продолжить;
КонецЕсли;
ЭлементыНастроек = СвойствоЭлементаСтруктуры.Элементы;
Строки = Строка.ПолучитьРодителя().ПолучитьЭлементы();
Индекс = ЭлементыНастроек.Индекс(ЭлементНастройки);
Граница = ЭлементыНастроек.Количество() - 1;
@@ -3901,18 +3911,18 @@
Если ВНачало Тогда // Сдвиг в начало коллекции.
Если Индекс = 0 Тогда
ЭлементыНастроек.Сдвинуть(ЭлементНастройки, Граница);
Строки.Сдвинуть(Индекс, Граница);
Строки.Сдвинуть(Индекс + ГраницаНачалаЭлементовОформления, Граница);
Иначе
ЭлементыНастроек.Сдвинуть(ЭлементНастройки, -1);
Строки.Сдвинуть(Индекс, -1);
Строки.Сдвинуть(Индекс + ГраницаНачалаЭлементовОформления, -1);
КонецЕсли;
Иначе // Сдвиг в конец коллекции.
Если Индекс = Граница Тогда
ЭлементыНастроек.Сдвинуть(ЭлементНастройки, -Граница);
Строки.Сдвинуть(Индекс, -Граница);
Строки.Сдвинуть(Индекс + ГраницаНачалаЭлементовОформления, -Граница);
Иначе
ЭлементыНастроек.Сдвинуть(ЭлементНастройки, 1);
Строки.Сдвинуть(Индекс, 1);
Строки.Сдвинуть(Индекс + ГраницаНачалаЭлементовОформления, 1);
КонецЕсли;
КонецЕсли;
КонецЦикла;
@@ -3402,6 +3402,32 @@
<items xsi:type="form:FormGroup">
<name>КонтекстноеМенюОбластиЗаголовкаМенюОформить</name>
<id>866</id>
<items xsi:type="form:Button">
<name>КонтекстноеМенюОбластиЗаголовкаОчиститьОформление</name>
<id>1091</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>КонтекстноеМенюОбластиЗаголовкаОчиститьОформлениеРасширеннаяПодсказка</name>
<id>1092</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<commandName>Form.Command.ОчиститьОформление</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<items xsi:type="form:FormGroup">
<name>КонтекстноеМенюОбластиЗаголовкаОформитьОтрицательныеПоложительные</name>
<id>868</id>
@@ -4550,6 +4576,32 @@
<items xsi:type="form:FormGroup">
<name>КонтекстноеМенюОбластиДанныхМенюОформить</name>
<id>954</id>
<items xsi:type="form:Button">
<name>КонтекстноеМенюОбластиДанныхОчиститьОформление</name>
<id>1093</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>КонтекстноеМенюОбластиДанныхОчиститьОформлениеРасширеннаяПодсказка</name>
<id>1094</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<commandName>Form.Command.ОчиститьОформление</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<items xsi:type="form:FormGroup">
<name>КонтекстноеМенюОбластиДанныхОформитьКраснымЖелтымЗеленым</name>
<id>956</id>
@@ -4882,6 +4934,82 @@
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<items xsi:type="form:FormGroup">
<name>КонтекстноеМенюОбластиДанныхБуферОбмена</name>
<id>1095</id>
<items xsi:type="form:Button">
<name>КонтекстноеМенюОбластиДанныхКопироватьВБуферОбмена</name>
<id>1097</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>КонтекстноеМенюОбластиДанныхКопироватьВБуферОбменаРасширеннаяПодсказка</name>
<id>1098</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<commandName>Form.Item.ОтчетТабличныйДокумент.StandardCommand.CopyToClipboard</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<items xsi:type="form:Button">
<name>КонтекстноеМенюОбластиДанныхВставитьИзБуфераОбмена</name>
<id>1099</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>КонтекстноеМенюОбластиДанныхВставитьИзБуфераОбменаРасширеннаяПодсказка</name>
<id>1100</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<commandName>Form.Item.ОтчетТабличныйДокумент.StandardCommand.PasteFromClipboard</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Буфер обмена</value>
</title>
<extendedTooltip>
<name>КонтекстноеМенюОбластиДанныхБуферОбменаРасширеннаяПодсказка</name>
<id>1096</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<extInfo xsi:type="form:ButtonGroupExtInfo"/>
</items>
<enabled>true</enabled>
<userVisible>
<common>true</common>
@@ -8514,6 +8642,24 @@
<currentRowUse>Auto</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</formCommands>
<formCommands>
<name>ОчиститьОформление</name>
<title>
<key>ru</key>
<value>Очистить оформление</value>
</title>
<id>55</id>
<use>
<common>true</common>
</use>
<action xsi:type="form:FormCommandHandlerContainer">
<handler>
<name>ОчиститьОформление</name>
</handler>
</action>
<currentRowUse>Auto</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</formCommands>
<parameters>
<name>Ссылка</name>
<valueType>
@@ -392,6 +392,10 @@
Возврат;
КонецЕсли;
Если ПутьКДаннымЭлементов = Неопределено Тогда
Возврат;
КонецЕсли;
ЭлементыНастроек = Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы;
Для Каждого ЭлементНастройки Из ЭлементыНастроек Цикл
Если ТипЗнч(ЭлементНастройки) <> Тип("ЗначениеПараметраНастроекКомпоновкиДанных")
@@ -948,9 +952,7 @@
&НаКлиенте
Процедура СнятьФильтр(Команда)
СвойстваРезультата = НастройкиОтчета.СвойстваРезультата; // см. ВариантыОтчетовСлужебный.СвойстваРезультатаОтчета
СвойстваЗаголовка = СвойстваРезультата.Заголовки[ИмяТекущейОбластиЯчеек()];
ВариантыОтчетовСлужебныйКлиент.СнятьФильтр(ЭтотОбъект, СвойстваЗаголовка);
ВариантыОтчетовСлужебныйКлиент.СнятьФильтр(ЭтотОбъект, СвойстваЗаголовка());
КонецПроцедуры
@@ -977,6 +979,13 @@
КонецПроцедуры
&НаКлиенте
Процедура ОчиститьОформление(Команда)
ВариантыОтчетовСлужебныйКлиент.ОчиститьОформление(ЭтотОбъект, СвойстваЗаголовка());
КонецПроцедуры
&НаКлиенте
Процедура ОформитьОтрицательные(Команда)
@@ -3179,6 +3188,8 @@
Элементы.ВсеНастройки.Видимость = ПоказыватьКомандыИзмененияВарианта Или КоличествоДоступныхНастроек.Обычных > 0;
Элементы.ВсеНастройкиЕще.Видимость = Элементы.ВсеНастройки.Видимость;
Элементы.ГруппаВариантыОтчета.Видимость = ПоказыватьКомандыВыбораВариантов;
Элементы.ГруппаСохранениеВыборВариантаОтчета.Видимость = Не ОбщегоНазначения.РазделениеВключено()
Или ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных();
ЭтоПредопределенныйВариант = Не НастройкиОтчета.Пользовательский
И ЗначениеЗаполнено(НастройкиОтчета.ПредопределенныйСсылка);
@@ -3766,6 +3777,11 @@
&НаСервере
Процедура ОбновитьКомандыВыбораВариантов()
Если ОбщегоНазначения.РазделениеВключено()
И Не ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда
Возврат;
КонецЕсли;
ВариантыФормы = РеквизитФормыВЗначение("ДобавленныеВарианты");
ВариантыФормы.Колонки.Добавить("Найден", Новый ОписаниеТипов("Булево"));
АвторизованныйПользователь = Пользователи.АвторизованныйПользователь();
@@ -3869,6 +3885,11 @@
НастройкиОтчета.Вставить("Пользовательский", Ложь);
НастройкиОтчета.Вставить("ТипОтчета", Неопределено);
Если ОбщегоНазначения.РазделениеВключено()
И Не ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда
Возврат;
КонецЕсли;
Запрос = Новый Запрос(
"ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
| ВариантыОтчетов.Ссылка КАК ВариантСсылка,
@@ -3994,6 +4015,14 @@
КонецПроцедуры
&НаКлиенте
Функция СвойстваЗаголовка()
СвойстваРезультата = НастройкиОтчета.СвойстваРезультата; // см. ВариантыОтчетовСлужебный.СвойстваРезультатаОтчета
Возврат СвойстваРезультата.Заголовки[ИмяТекущейОбластиЯчеек()];
КонецФункции
// Возвращаемое значение:
// Строка
//
@@ -6131,8 +6131,10 @@
Если Муниципальный Тогда
Результат.addressType = МуниципальныйАдрес();
Результат.value = Адрес.munValueWithPostalCode;
Иначе
Результат.addressType = АдминистративноТерриториальныйАдрес();
Результат.value = Адрес.valueWithPostalCode;
КонецЕсли;
Результат.houseType = ТРег(Результат.houseType);
@@ -1793,13 +1793,17 @@
НазваниеОтчета = "";
Если ЗначениеЗаполнено(Результат.СсылкаВарианта) Тогда
НазваниеОтчета = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Результат.СсылкаВарианта, "Наименование");
НазваниеОтчета = Строка(Результат.СсылкаВарианта);
ИначеЕсли Результат.Метаданные <> Неопределено Тогда
НазваниеОтчета = Результат.Метаданные.Синоним;
КонецЕсли;
УправлениеКолонтитулами.УстановитьКолонтитулы(
Результат.ТабличныйДокумент, НазваниеОтчета,, НастройкиКолонтитулов);
Если Не ОбщегоНазначения.РазделениеВключено()
Или ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда
УправлениеКолонтитулами.УстановитьКолонтитулы(
Результат.ТабличныйДокумент, НазваниеОтчета,, НастройкиКолонтитулов);
КонецЕсли;
Результат.Успех = Истина;
@@ -2030,6 +2034,13 @@
////////////////////////////////////////////////////////////////////////////////
// Для отчета по внедрению.
// Параметры:
// ТипОтчетов - Строка
// ПодключенныеКХранилищу - Булево
//
// Возвращаемое значение:
// см. ВариантыОтчетовПереопределяемый.НастроитьВариантыОтчетов.Настройки.
//
Функция ПредопределенныеВариантыОтчетов(ТипОтчетов = "Внутренний", ПодключенныеКХранилищу = Истина) Экспорт
Результат = КоллекцияПредопределенныхВариантовОтчетов();
@@ -2087,9 +2098,22 @@
Попытка
ВариантыНастроек = СхемаКД.ВариантыНастроек;
Исключение
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось прочитать список вариантов отчета %1:
|%2'"), ОтчетМетаданные.Имя, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
Если ОбщегоНазначения.РазделениеВключено() Тогда
ШаблонТекстаОшибки = НСтр("ru = 'Не удалось прочитать список вариантов отчета %1.
|Возможно настройки содержат ссылки на разделенные предопределенные объекты.
|См. подробнее на ИТС: https://its.1c.ru/bmk/bsp_reports_service_model
|%2'");
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
ШаблонТекстаОшибки, ОтчетМетаданные.Имя, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
Иначе
ШаблонТекстаОшибки = НСтр("ru = 'Не удалось прочитать список вариантов отчета %1:
|%2'");
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
ШаблонТекстаОшибки, ОтчетМетаданные.Имя, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецЕсли;
ЗаписатьВЖурнал(УровеньЖурналаРегистрации.Предупреждение, ТекстОшибки, ОтчетМетаданные);
КонецПопытки;
КонецЕсли;
@@ -4432,12 +4456,23 @@
// Параметры:
// Режим - Строка - режим обновления: "ОбщиеДанныеКонфигурации" или "ОбщиеДанныеРасширений"
// Результат - Структура:
// * ВариантыОтчетов - см. ПредопределенныеВариантыОтчетов
// * ЕстьВажныеИзменения - Булево - признак наличия важных изменений в вариантах отчетов.
// * ЕстьИзменения - Булево - признак наличия изменений в вариантах отчетов.
// * МодельСервиса - Булево - признак работы в модели сервиса.
// * ОбновлятьЗамеры - Булево - признак наличия подсистемы ОценкаПроизводительности.
// * ОбновлятьКонфигурацию - Булево - признак необходимости обновления данных конфигурации.
// * ОбновлятьРасширения - Булево - признак необходимости обновления данных расширений.
// * ОтчетыСНастройкамиСписок - СписокЗначений:
// ** Значение - СправочникСсылка.ИдентификаторыОбъектовМетаданных - отчеты, в модуле объекта которых размещены
// процедуры интеграции с общей формой отчета.
// * РазделенныеОбработчики - Неопределено
// - Структура
// * ТаблицаЗамеров - см. ТаблицаЗамеров
// * ТаблицаФункциональныхОпций - ТаблицаЗначений - связь функциональных опций и предопределенных вариантов отчетов:
// ** Отчет - СправочникСсылка.ИдентификаторыОбъектовМетаданных
// ** ПредопределенныйВариант - СправочникСсылка.ПредопределенныеВариантыОтчетов
// ** ИмяФункциональнойОпции - Строка
// * ОтчетыСНастройками - Массив из СправочникСсылка.ИдентификаторыОбъектовМетаданных - отчеты,
// в модуле объекта которых размещены процедуры интеграции с общей формой отчета.
//
Процедура ЗаписатьТаблицуФункциональныхОпций(Режим, Результат)
Если Режим = "ОбщиеДанныеРасширений" И Не ЗначениеЗаполнено(ПараметрыСеанса.ВерсияРасширений) Тогда
@@ -5654,7 +5689,6 @@
// ** ПослеЗаполненияПанелиБыстрыхНастроек - Булево
// ** ПриОпределенииПараметровВыбора - Булево
// ** ПриОпределенииИспользуемыхТаблиц - Булево
// ** ДополнитьСвязиОбъектовМетаданных - Булево
// * ПредопределенныеВарианты - СписокЗначений:
// ** Значение - Строка
// * ПараметрыРасположенияЭлементовУправления - Структура:
@@ -8878,31 +8912,27 @@
// * БыстрыйДоступ - Структура:
// ** Отбор - Структура:
// *** БыстрыйДоступ - Булево
// ** Варианты - см. ВариантыОтчетовДляВывода.Варианты
// - Массив из СтрокаТаблицыЗначений
// ** Варианты - Массив из СтрокаТаблицыЗначений
// ** Количество - Число
// * БезГруппы - Структура:
// ** Отбор - Структура:
// *** БыстрыйДоступ - Булево
// *** БезГруппы - Булево
// ** Варианты - см. ВариантыОтчетовДляВывода.Варианты
// - Массив из СтрокаТаблицыЗначений
// ** Варианты - Массив из СтрокаТаблицыЗначений
// ** Количество - Число
// * СГруппой - Структура:
// ** Отбор - Структура:
// *** БыстрыйДоступ - Булево
// *** БезГруппы - Булево
// *** СмТакже - Булево
// ** Варианты - см. ВариантыОтчетовДляВывода.Варианты
// - Массив из СтрокаТаблицыЗначений
// ** Варианты - Массив из СтрокаТаблицыЗначений
// ** Количество - Число
// * СмТакже - Структура:
// ** Отбор - Структура:
// *** БыстрыйДоступ - Булево
// *** БезГруппы - Булево
// *** СмТакже - Булево
// ** Варианты - см. ВариантыОтчетовДляВывода.Варианты
// - Массив из СтрокаТаблицыЗначений
// ** Варианты - Массив из СтрокаТаблицыЗначений
// ** Количество - Число
// * ВыводятсяВариантыТекущегоРаздела - Булево
// * ВариантыКоличество - Число
@@ -307,7 +307,7 @@
КонецФункции
// Параметры подсистемы, закэшированные при обновлении (см. ВариантыОтчетов.ЗаписатьПараметрыВариантовОтчетов).
// Параметры подсистемы, закэшированные при обновлении (см. ВариантыОтчетов.ЗаписатьТаблицуФункциональныхОпций).
//
// Возвращаемое значение:
// Структура:
@@ -1756,9 +1756,14 @@
Если ДанныеЭлементаРасшифровки.Значение = Неопределено Тогда
Область = ПолеДокумента.ТекущаяОбласть;
ДанныеЭлементаРасшифровки.Значение = ДоступноеПоле.ТипЗначения.ПривестиЗначение(Область.Текст);
ДанныеЭлементаРасшифровки.Значения = ПриведенныеЗначенияВыделенныхОбластей(
Документ, ВыделенныеОбластиДокумента, ДоступноеПоле.ТипЗначения);
Если ТипЗнч(Область) = Тип("ОбластьЯчеекТабличногоДокумента") Тогда
ДанныеЭлементаРасшифровки.Значение = ДоступноеПоле.ТипЗначения.ПривестиЗначение(Область.Текст);
ДанныеЭлементаРасшифровки.Значения = ПриведенныеЗначенияВыделенныхОбластей(
Документ, ВыделенныеОбластиДокумента, ДоступноеПоле.ТипЗначения);
КонецЕсли;
КонецЕсли;
@@ -131,8 +131,10 @@
ДополнительныеПараметры.Вставить("СвойстваОбласти", СвойстваОбласти);
ДополнительныеПараметры.Вставить("Меню", ДополнительноеМеню);
ПолеОтчета = Форма.Элементы.ОтчетТабличныйДокумент; // ПолеТабличногоДокумента
Обработчик = Новый ОписаниеОповещения("ВыполнитьРасшифровку", ЭтотОбъект, ДополнительныеПараметры);
ОбработкаРасшифровки.ПоказатьВыборДействия(Обработчик, Расшифровка, ОсновноеМеню, ДополнительноеМеню);
ОбработкаРасшифровки.ПоказатьВыборДействия(Обработчик, Расшифровка, ОсновноеМеню, ДополнительноеМеню,, ПолеОтчета);
СтандартнаяОбработка = Ложь;
@@ -154,6 +156,7 @@
НастройкиОтчета = Форма.НастройкиОтчета; // см. ВариантыОтчетов.НастройкиФормыОтчета
СвойстваРезультата = НастройкиОтчета.СвойстваРезультата; // см. ВариантыОтчетовСлужебный.СвойстваРезультатаОтчета
Элементы = Форма.Элементы;
ПолеОтчета = Элементы.ОтчетТабличныйДокумент; // ПолеТабличногоДокумента
СвойстваЗаголовка = СвойстваРезультата.Заголовки[Область.Имя];
ЭтоРасшифровка = Область.ТипОбласти = ТипОбластиЯчеекТабличногоДокумента.Прямоугольник
@@ -166,8 +169,10 @@
И ЭтоРасшифровка;
Элементы.ГруппаУровниГруппировокКонтекстноеМеню.Видимость = Не ЭтоРасшифровка;
Элементы.КонтекстноеМенюОбластиОбщееРедактирование.Видимость = Не ЭтоРасшифровка;
ОпределитьВариантОтображениеКомандРедактированияТаблицы(Элементы, ЭтоРасшифровка);
Элементы.КонтекстноеМенюОбластиДанныхВставитьИзБуфераОбмена.Доступность = ПолеОтчета.Редактирование;
Элементы.КонтекстноеМенюОбластиОбщееВставитьИзБуфераОбмена.Доступность = ПолеОтчета.Редактирование;
ВариантыОтчетовСлужебныйКлиентСервер.ОпределитьДоступностьДействийКонтекстногоМеню(Форма, СвойстваЗаголовка);
@@ -310,6 +315,30 @@
#Область Оформление
Процедура ОчиститьОформление(Форма, СвойстваЗаголовка) Экспорт
Настройки = ИспользуемыеНастройки(Форма, СвойстваЗаголовка.ИдентификаторНастроек);
Если СвойстваЗаголовка.КоличествоРазделов = 1 Тогда
ОчиститьОформлениеГруппировкиОтчета(Настройки, СвойстваЗаголовка);
Иначе
Раздел = Настройки.ПолучитьОбъектПоИдентификатору(СвойстваЗаголовка.ИдентификаторРаздела);
Если ТипЗнч(Раздел) = Тип("ТаблицаКомпоновкиДанных") Тогда
ОчиститьОформлениеГруппировокРазделаОтчета(Раздел.Строки, СвойстваЗаголовка);
Иначе
ОчиститьОформлениеГруппировкиРазделаОтчета(Раздел, СвойстваЗаголовка);
КонецЕсли;
КонецЕсли;
ОповеститьОЗавершенииКонтекстнойНастройки(Форма, "ОчиститьОформление");
КонецПроцедуры
Процедура ОформитьКрасным(Форма, Команда, СвойстваЗаголовка = Неопределено, Значение = Неопределено) Экспорт
Если СвойстваЗаголовка = Неопределено Тогда
@@ -1174,6 +1203,30 @@
КонецПроцедуры
Функция КоличествоИспользуемыхПолей(Поля, Количество = Неопределено)
Если Количество = Неопределено Тогда
Количество = 0;
КонецЕсли;
Для Каждого Элемент Из Поля.Элементы Цикл
Если ТипЗнч(Элемент) = Тип("ГруппаВыбранныхПолейКомпоновкиДанных") Тогда
КоличествоИспользуемыхПолей(Элемент, Количество);
ИначеЕсли Элемент.Использование Тогда
Количество = Количество + 1;
КонецЕсли;
КонецЦикла;
Возврат Количество;
КонецФункции
#КонецОбласти
#Область ПереименованиеПоля
@@ -1423,6 +1476,74 @@
#Область Оформление
#Область ОчисткаОформления
Процедура ОчиститьОформлениеГруппировокРазделаОтчета(Группировки, СвойстваЗаголовка)
Для Каждого Группировка Из Группировки Цикл
ОчиститьОформлениеГруппировкиРазделаОтчета(Группировка, СвойстваЗаголовка);
КонецЦикла;
КонецПроцедуры
Процедура ОчиститьОформлениеГруппировкиРазделаОтчета(Группировка, СвойстваЗаголовка)
Если ТипЗнч(Группировка) = Тип("ТаблицаКомпоновкиДанных") Тогда
ОчиститьОформлениеГруппировокРазделаОтчета(Группировка.Строки, СвойстваЗаголовка);
Иначе
ОчиститьОформлениеГруппировкиОтчета(Группировка, СвойстваЗаголовка);
ОчиститьОформлениеГруппировокРазделаОтчета(Группировка.Структура, СвойстваЗаголовка)
КонецЕсли;
КонецПроцедуры
Процедура ОчиститьОформлениеГруппировкиОтчета(Группировка, СвойстваЗаголовка)
Для Каждого ЭлементОформления Из Группировка.УсловноеОформление.Элементы Цикл
ОформляемыеПоля = ЭлементОформления.Поля.Элементы;
ОформляемыеПоляПодходящие = Новый Массив;
ОформляемыеПоляИспользуемые = Новый Массив;
Для Каждого ОформляемоеПоле Из ОформляемыеПоля Цикл
Если ОформляемоеПоле.Поле = СвойстваЗаголовка.Поле Тогда
ОформляемыеПоляПодходящие.Добавить(ОформляемоеПоле);
КонецЕсли;
Если ОформляемоеПоле.Использование Тогда
ОформляемыеПоляИспользуемые.Добавить(ОформляемоеПоле);
КонецЕсли;
КонецЦикла;
Если ОформляемыеПоляИспользуемые.Количество() = 1
И ОформляемыеПоляИспользуемые[0].Поле = СвойстваЗаголовка.Поле Тогда
ОформляемыеПоляИспользуемые.Очистить();
ИначеЕсли ОформляемыеПоляПодходящие.Количество() > 0 Тогда
ОформляемыеПоляПодходящие[0].Использование = Ложь;
КонецЕсли;
Если ОформляемыеПоляИспользуемые.Количество() = 0 Тогда
ЭлементОформления.Использование = Ложь;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
#КонецОбласти
Процедура ОформитьЖелтым(Форма, Команда, СвойстваЗаголовка = Неопределено, Значение = Неопределено)
Если СвойстваЗаголовка = Неопределено Тогда
@@ -2537,8 +2658,11 @@
КомпоновщикНастроек.РазвернутьАвтоПоля();
ПолеГруппировки = ВариантыОтчетовСлужебныйКлиентСервер.ПолеОтчета(Группировка.ПоляГруппировки, СвойстваЗаголовка.Поле);
ВыбранноеПоле = ВариантыОтчетовСлужебныйКлиентСервер.ПолеОтчета(Группировка.Выбор, СвойстваЗаголовка.Поле);
ПолеГруппировки = ВариантыОтчетовСлужебныйКлиентСервер.ПолеОтчета(
Группировка.ПоляГруппировки, СвойстваЗаголовка.Поле);
ВыбранноеПоле = ВариантыОтчетовСлужебныйКлиентСервер.ПолеОтчета(
Группировка.Выбор, СвойстваЗаголовка.Поле,, СвойстваЗаголовка.Текст);
СоседняяГруппировка = СоседняяГруппировка(Форма, Команда, Настройки, СвойстваЗаголовка.ПорядокГруппировки);
@@ -2582,7 +2706,10 @@
Если Группировка.ПоляГруппировки.Элементы.Количество() = 0 Тогда
ВыбранноеПоле.Использование = Ложь;
СкрытьГруппировку(Настройки, Группировка, СвойстваЗаголовка.Поле);
Если КоличествоИспользуемыхПолей(Группировка.Выбор) = 0 Тогда
СкрытьГруппировку(Настройки, Группировка, СвойстваЗаголовка.Поле);
КонецЕсли;
Иначе
Группировка.Выбор.Элементы.Удалить(ВыбранноеПоле);
@@ -2756,23 +2883,6 @@
#Область КонтекстноеМеню
Процедура ОпределитьВариантОтображениеКомандРедактированияТаблицы(Элементы, ЭтоРасшифровка)
#Если Не ВебКлиент Тогда
Если Не ЭтоРасшифровка
И (Элементы.КонтекстноеМенюОбластиЗаголовка.Видимость
Или Элементы.КонтекстноеМенюОбластиДанных.Видимость) Тогда
Элементы.КонтекстноеМенюОбластиОбщееРедактирование.Вид = ВидГруппыФормы.Подменю;
Иначе
Элементы.КонтекстноеМенюОбластиОбщееРедактирование.Вид = ВидГруппыФормы.ГруппаКнопок;
КонецЕсли;
#КонецЕсли
КонецПроцедуры
Функция КонтекстноеМенюОбластиЗаголовка()
КонтекстноеМеню = Новый СписокЗначений;
@@ -2836,6 +2946,8 @@
// Оформить
ПодменюОформления = Новый СписокЗначений;
ПодменюОформления.Добавить("ОчиститьОформление", НСтр("ru = 'Очистить оформление'"));
ПодменюОформления.Добавить("ОформитьКрасным", НСтр("ru = 'Красным'"),, КартинкиОформления.ОформитьКрасным);
ПодменюОформления.Добавить("ОформитьЖелтым", НСтр("ru = 'Желтым'"),, КартинкиОформления.ОформитьЖелтым);
ПодменюОформления.Добавить("ОформитьЗеленым", НСтр("ru = 'Зеленым'"),, КартинкиОформления.ОформитьЗеленым);
@@ -2938,6 +3050,14 @@
КонецЕсли;
Если ТипЗнч(ВыполненноеДействие) = Тип("Строка")
И ВыполненноеДействие = "ОчиститьОформление" Тогда
ОчиститьОформление(Форма, СвойстваОбласти.СвойстваЗаголовка);
Возврат;
КонецЕсли;
Если ТипЗнч(ВыполненноеДействие) = Тип("Строка")
И (ВыполненноеДействие = "ОформитьКрасным"
Или ВыполненноеДействие = "ОформитьЖелтым"
@@ -3249,7 +3369,7 @@
События = Новый Соответствие;
События.Вставить("СгруппироватьПоВыбранномуПолю", Истина);
События.Вставить("ВставитьПолеСправа", Истина);
События.Вставить("ВставитьПолеСлева", Истина);
События.Вставить("ВставитьПолеСправа", Истина);
События.Вставить("ВставитьГруппировкуВыше", Истина);
События.Вставить("ВставитьГруппировкуНиже", Истина);
@@ -3269,6 +3389,8 @@
События.Вставить("СортироватьПоВозрастанию", Истина);
События.Вставить("СортироватьПоУбыванию", Истина);
События.Вставить("ОчиститьОформление", Истина);
События.Вставить("ОформитьКрасным", Истина);
События.Вставить("ОформитьЖелтым", Истина);
События.Вставить("ОформитьЗеленым", Истина);
@@ -118,9 +118,28 @@
// ПолеГруппировкиКомпоновкиДанных
// Неопределено
//
Функция ПолеОтчета(Поля, Поле, ПроверятьИспользование = Истина, ПолеОтчета = Неопределено) Экспорт
Функция ПолеОтчета(Поля, Поле, ПроверятьИспользование = Истина, ЗаголовокПоля = "", ПолеОтчета = Неопределено) Экспорт
НайтиПолеОтчета(Поля, Поле, ПроверятьИспользование, ПолеОтчета);
ДоступныеПоля = Неопределено;
Если ТипЗнч(Поля) = Тип("ВыбранныеПоляКомпоновкиДанных") Тогда
ДоступныеПоля = Поля.ДоступныеПоляВыбора;
ИначеЕсли ТипЗнч(Поля) = Тип("ПоляГруппировкиКомпоновкиДанных") Тогда
ДоступныеПоля = Поля.ДоступныеПоляПолейГруппировок;
КонецЕсли;
ОписаниеПоля = ?(ДоступныеПоля = Неопределено, Неопределено, ДоступныеПоля.НайтиПоле(Поле));
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ПроверятьИспользование", ПроверятьИспользование);
ДополнительныеПараметры.Вставить("ЗаголовокПоля", ЗаголовокПоля);
ДополнительныеПараметры.Вставить("ОписаниеПоля", ОписаниеПоля);
НайтиПолеОтчета(Поля, Поле, ПолеОтчета, ДополнительныеПараметры);
Возврат ПолеОтчета;
@@ -259,22 +278,34 @@
// - ПолеГруппировкиКомпоновкиДанных
// - Неопределено
//
Процедура НайтиПолеОтчета(Поля, Поле, ПроверятьИспользование, НайденноеПоле)
Процедура НайтиПолеОтчета(Поля, Поле, НайденноеПоле, ДополнительныеПараметры)
ПроверятьИспользование = ДополнительныеПараметры.ПроверятьИспользование;
ЗаголовокПоля = ДополнительныеПараметры.ЗаголовокПоля;
ОписаниеПоля = ДополнительныеПараметры.ОписаниеПоля;
Для Каждого Элемент Из Поля.Элементы Цикл
ТипЭлемента = ТипЗнч(Элемент);
ПроверкаИспользованияПоляПройденаУспешно = Не ПроверятьИспользование
Или ПроверятьИспользование И Элемент.Использование;
ПроверкаЗаголовкаПройденаУспешно = Не ЗначениеЗаполнено(ЗаголовокПоля)
Или Элемент.Заголовок = ЗаголовокПоля
Или ОписаниеПоля <> Неопределено И ОписаниеПоля.Заголовок = ЗаголовокПоля;
Если ТипЭлемента <> Тип("АвтоВыбранноеПолеКомпоновкиДанных")
И Элемент.Поле = Поле
И (Не ПроверятьИспользование Или ПроверятьИспользование И Элемент.Использование) Тогда
И ПроверкаИспользованияПоляПройденаУспешно
И ПроверкаЗаголовкаПройденаУспешно Тогда
НайденноеПоле = Элемент;
Возврат;
ИначеЕсли ТипЭлемента = Тип("ГруппаВыбранныхПолейКомпоновкиДанных") Тогда
НайтиПолеОтчета(Элемент, Поле, ПроверятьИспользование, НайденноеПоле);
НайтиПолеОтчета(Элемент, Поле, НайденноеПоле, ДополнительныеПараметры);
КонецЕсли;
@@ -1632,7 +1632,11 @@
Шаблон = НСтр("ru = '%1 невозможно изменить в запрещенном периоде.'");
КонецЕсли;
КонецЕсли;
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Шаблон, Текст) + Символы.ПС + Символы.ПС;
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Шаблон, Текст) + Символы.ПС;
Если Не СтруктурноеОписание Тогда
Текст = Текст + "[РазделительШапка]";
КонецЕсли;
КонецЕсли;
ПустойРаздел = ПустаяСсылка(Тип("ПланВидовХарактеристикСсылка.РазделыДатЗапретаИзменения"));
@@ -1648,6 +1652,8 @@
Текст = СообщениеОЗапрете(Запрет, ПоискЗапретовЗагрузки, СвойстваРазделов, ПустойРаздел);
Если СтруктурноеОписание Тогда
Текст = СтрЗаменить(Текст, "[РазделительПодробнее]", "");
Проверка = Запрет.Данные;
СвойстваРаздела = СвойстваРазделов.Разделы.Получить(Проверка.Раздел); // см. ПланыВидовХарактеристик.РазделыДатЗапретаИзменения.СвойстваРаздела
@@ -1662,11 +1668,27 @@
СтрокаОписанияОшибки.Описание = Текст;
ИначеЕсли ДобавленныеТексты.Получить(Текст) = Неопределено Тогда
ДобавленныеТексты.Вставить(Текст, Истина);
ТекстОшибки = ТекстОшибки + Текст + Символы.ПС + Символы.ПС;
ТекстОшибки = ТекстОшибки + Текст + "[РазделительСообщение]";
КонецЕсли;
КонецЦикла;
Если Не СтруктурноеОписание Тогда
РазделительШапка = "";
РазделительПодробнее = "";
РазделительСообщение = "";
Если ДобавленныеТексты.Количество() > 1 Тогда
РазделительШапка = Символы.ПС;
РазделительСообщение = Символы.ПС + Символы.ПС;
Иначе
РазделительПодробнее = Символы.ПС;
КонецЕсли;
ТекстОшибки = СтрЗаменить(ТекстОшибки, "[РазделительШапка]", РазделительШапка);
ТекстОшибки = СтрЗаменить(ТекстОшибки, "[РазделительПодробнее]", РазделительПодробнее);
ТекстОшибки = СтрЗаменить(ТекстОшибки, "[РазделительСообщение]", РазделительСообщение);
ОписаниеОшибки = СокрП(ТекстОшибки);
КонецЕсли;
@@ -1722,68 +1744,203 @@
Если Не ПоискЗапретовЗагрузки Тогда
Если Не ПоРазделу И Не ПоОбъекту И ДляНеуказанного Тогда
Текст = НСтр("ru = 'Дате %1 соответствует запрет изменения данных по %5'");
Текст = НСтр("ru = 'Запрещено изменять данные с датой ранее %5 (включительно).
|[РазделительПодробнее]Подробнее:
|Изменение недоступно, поскольку дата %1 входит в запрещенный период по %5'");
ИначеЕсли ПоРазделу И Не ПоОбъекту И ДляНеуказанного Тогда
Текст = НСтр("ru = 'Дате %1 по разделу ""%2"" соответствует запрет изменения данных по %5'");
Текст = НСтр("ru = 'Запрещено изменять данные с датой ранее %5 (включительно).
|[РазделительПодробнее]Подробнее:
|Изменение по разделу ""%2"" недоступно
|поскольку дата %1 входит в запрещенный период по %5'");
ИначеЕсли Не ПоРазделу И ПоОбъекту И ДляНеуказанного Тогда
Текст = НСтр("ru = 'Дате %1 по объекту ""%3"" соответствует запрет изменения данных по %5'");
Текст = НСтр("ru = 'Запрещено изменять данные с датой ранее %5 (включительно).
|[РазделительПодробнее]Подробнее:
|Изменение по объекту ""%3"" недоступно,
|поскольку дата %1 входит в запрещенный период по %5'");
ИначеЕсли ПоРазделу И ПоОбъекту И ДляНеуказанного Тогда
Текст = НСтр("ru = 'Дате %1 по объекту ""%3"" раздела ""%2"" соответствует запрет изменения данных по %5'");
Текст = НСтр("ru = 'Запрещено изменять данные с датой ранее %5 (включительно).
|[РазделительПодробнее]Подробнее:
|Изменение по объекту ""%3"" раздела ""%2"" недоступно,
|поскольку дата %1 входит в запрещенный период по %5'");
ИначеЕсли Не ПоРазделу И Не ПоОбъекту И ДляПользователя Тогда
Текст = НСтр("ru = 'Дате %1 соответствует запрет изменения данных для пользователя ""%4"" по %5'");
Текст = НСтр("ru = 'Запрещено изменять данные с датой ранее %5 (включительно).
|[РазделительПодробнее]Подробнее:
|Пользователю ""%4"" недоступно изменение,
|поскольку дата %1 входит в запрещенный период по %5'");
ИначеЕсли ПоРазделу И Не ПоОбъекту И ДляПользователя Тогда
Текст = НСтр("ru = 'Дате %1 по разделу ""%2"" соответствует запрет изменения данных для пользователя ""%4"" по %5'");
Текст = НСтр("ru = 'Запрещено изменять данные с датой ранее %5 (включительно).
|[РазделительПодробнее]Подробнее:
|Пользователю ""%4"" недоступно изменение по разделу ""%2"",
|поскольку дата %1 входит в запрещенный период по %5'");
ИначеЕсли Не ПоРазделу И ПоОбъекту И ДляПользователя Тогда
Текст = НСтр("ru = 'Дате %1 по объекту ""%3"" соответствует запрет изменения данных для пользователя ""%4"" по %5'");
Текст = НСтр("ru = 'Запрещено изменять данные с датой ранее %5 (включительно).
|[РазделительПодробнее]Подробнее:
|Пользователю ""%4"" недоступно изменение по объекту ""%3"",
|поскольку дата %1 входит в запрещенный период по %5'");
ИначеЕсли ПоРазделу И ПоОбъекту И ДляПользователя Тогда
Текст = НСтр("ru = 'Дате %1 по объекту ""%3"" раздела ""%2"" соответствует запрет изменения данных для пользователя ""%4"" по %5'");
Текст = НСтр("ru = 'Запрещено изменять данные с датой ранее %5 (включительно).
|[РазделительПодробнее]Подробнее:
|Пользователю ""%4"" недоступно изменение по объекту ""%3"" раздела ""%2"",
|поскольку дата %1 входит в запрещенный период по %5'");
ИначеЕсли Не ПоРазделу И Не ПоОбъекту И ДляГруппыПользователей Тогда
Текст = НСтр("ru = 'Дате %1 соответствует запрет изменения данных для группы пользователей ""%4"" по %5'");
Текст = НСтр("ru = 'Запрещено изменять данные с датой ранее %5 (включительно).
|[РазделительПодробнее]Подробнее:
|Для группы пользователей ""%4"" недоступно изменение,
|поскольку дата %1 входит в запрещенный период по %5'");
ИначеЕсли ПоРазделу И Не ПоОбъекту И ДляГруппыПользователей Тогда
Текст = НСтр("ru = 'Дате %1 по разделу ""%2"" соответствует запрет изменения данных для группы пользователей ""%4"" по %5'");
Текст = НСтр("ru = 'Запрещено изменять данные с датой ранее %5 (включительно).
|[РазделительПодробнее]Подробнее:
|Для группы пользователей ""%4"" недоступно изменение по разделу ""%2"",
|поскольку дата %1 входит в запрещенный период по %5'");
ИначеЕсли Не ПоРазделу И ПоОбъекту И ДляГруппыПользователей Тогда
Текст = НСтр("ru = 'Дате %1 по объекту ""%3"" соответствует запрет изменения данных для группы пользователей ""%4"" по %5'");
Текст = НСтр("ru = 'Запрещено изменять данные с датой ранее %5 (включительно).
|[РазделительПодробнее]Подробнее:
|Для группы пользователей ""%4"" недоступно изменение по объекту ""%3"",
|поскольку дата %1 входит в запрещенный период по %5'");
ИначеЕсли ПоРазделу И ПоОбъекту И ДляГруппыПользователей Тогда
Текст = НСтр("ru = 'Дате %1 по объекту ""%3"" раздела ""%2"" соответствует запрет изменения данных для группы пользователей ""%4"" по %5'");
Текст = НСтр("ru = 'Запрещено изменять данные с датой ранее %5 (включительно).
|[РазделительПодробнее]Подробнее:
|Для группы пользователей ""%4"" недоступно изменение по объекту ""%3"" раздела ""%2"",
|поскольку дата %1 входит в запрещенный период по %5'");
ИначеЕсли Не ПоРазделу И Не ПоОбъекту И ДляВсехПользователей Тогда
Текст = НСтр("ru = 'Дате %1 соответствует запрет изменения данных для всех пользователей по %5'");
Текст = НСтр("ru = 'Запрещено изменять данные с датой ранее %5 (включительно).
|[РазделительПодробнее]Подробнее:
|Для всех пользователей недоступно изменение,
|поскольку дата %1 входит в запрещенный период по %5'");
ИначеЕсли ПоРазделу И Не ПоОбъекту И ДляВсехПользователей Тогда
Текст = НСтр("ru = 'Дате %1 по разделу ""%2"" соответствует запрет изменения данных для всех пользователей по %5'");
Текст = НСтр("ru = 'Запрещено изменять данные с датой ранее %5 (включительно).
|[РазделительПодробнее]Подробнее:
|Для всех пользователей недоступно изменение по разделу ""%2"",
|поскольку дата %1 входит в запрещенный период по %5'");
ИначеЕсли Не ПоРазделу И ПоОбъекту И ДляВсехПользователей Тогда
Текст = НСтр("ru = 'Дате %1 по объекту ""%3"" соответствует запрет изменения данных для всех пользователей по %5'");
Текст = НСтр("ru = 'Запрещено изменять данные с датой ранее %5 (включительно).
|[РазделительПодробнее]Подробнее:
|Для всех пользователей недоступно изменение по объекту ""%3"",
|поскольку дата %1 входит в запрещенный период по %5'");
ИначеЕсли ПоРазделу И ПоОбъекту И ДляВсехПользователей Тогда
Текст = НСтр("ru = 'Дате %1 по объекту ""%3"" раздела ""%2"" соответствует запрет изменения данных для всех пользователей по %5'");
Текст = НСтр("ru = 'Запрещено изменять данные с датой ранее %5 (включительно).
|[РазделительПодробнее]Подробнее:
|Для всех пользователей недоступно изменение по объекту ""%3"" раздела ""%2"",
|поскольку дата %1 входит в запрещенный период по %5'");
КонецЕсли;
Иначе
Если Не ПоРазделу И Не ПоОбъекту И ДляИнформационнойБазы Тогда
Текст = НСтр("ru = 'Дате %1 соответствует запрет загрузки данных для информационной базы ""%4"" по %5'");
Текст = НСтр("ru = 'Запрещено загружать данные с датой ранее %5 (включительно).
|[РазделительПодробнее]Подробнее:
|Для информационной базы ""%4"" запрещена загрузка данных,
|поскольку дата %1 входит в запрещенный период по %5'");
ИначеЕсли ПоРазделу И Не ПоОбъекту И ДляИнформационнойБазы Тогда
Текст = НСтр("ru = 'Дате %1 по разделу ""%2"" соответствует запрет загрузки данных для информационной базы ""%4"" по %5'");
Текст = НСтр("ru = 'Запрещено загружать данные с датой ранее %5 (включительно).
|[РазделительПодробнее]Подробнее:
|Для информационной базы ""%4"" запрещена загрузка данных по разделу ""%2"",
|поскольку дата %1 входит в запрещенный период по %5'");
ИначеЕсли Не ПоРазделу И ПоОбъекту И ДляИнформационнойБазы Тогда
Текст = НСтр("ru = 'Дате %1 по объекту ""%3"" соответствует запрет загрузки данных для информационной базы ""%4"" по %5'");
Текст = НСтр("ru = 'Запрещено загружать данные с датой ранее %5 (включительно).
|[РазделительПодробнее]Подробнее:
|Для информационной базы ""%4"" запрещена загрузка данных по объекту ""%3"",
|поскольку дата %1 входит в запрещенный период по %5'");
ИначеЕсли ПоРазделу И ПоОбъекту И ДляИнформационнойБазы Тогда
Текст = НСтр("ru = 'Дате %1 по объекту ""%3"" раздела ""%2"" соответствует запрет загрузки данных для информационной базы ""%4"" по %5'");
Текст = НСтр("ru = 'Запрещено загружать данные с датой ранее %5 (включительно).
|[РазделительПодробнее]Подробнее:
|Для информационной базы ""%4"" запрещена загрузка данных по объекту ""%3"" раздела ""%2"",
|поскольку дата %1 входит в запрещенный период по %5'");
ИначеЕсли Не ПоРазделу И Не ПоОбъекту И ДляВсехИБПлана Тогда
Текст = НСтр("ru = 'Дате %1 соответствует запрет загрузки данных для всех информационных баз ""%6"" по %5'");
Текст = НСтр("ru = 'Запрещено загружать данные с датой ранее %5 (включительно).
|[РазделительПодробнее]Подробнее:
|Для всех информационных баз ""%6"" запрещена загрузка данных,
|поскольку дата %1 входит в запрещенный период по %5'");
ИначеЕсли ПоРазделу И Не ПоОбъекту И ДляВсехИБПлана Тогда
Текст = НСтр("ru = 'Дате %1 по разделу ""%2"" соответствует запрет загрузки данных для всех информационных баз ""%6"" по %5'");
Текст = НСтр("ru = 'Запрещено загружать данные с датой ранее %5 (включительно).
|[РазделительПодробнее]Подробнее:
|Для всех информационных баз ""%6"" запрещена загрузка данных по разделу ""%2"",
|поскольку дата %1 входит в запрещенный период по %5'");
ИначеЕсли Не ПоРазделу И ПоОбъекту И ДляВсехИБПлана Тогда
Текст = НСтр("ru = 'Дате %1 по объекту ""%3"" соответствует запрет загрузки данных для всех информационных баз ""%6"" по %5'");
Текст = НСтр("ru = 'Запрещено загружать данные с датой ранее %5 (включительно).
|[РазделительПодробнее]Подробнее:
|Для всех информационных баз ""%6"" запрещена загрузка данных по объекту ""%3"",
|поскольку дата %1 входит в запрещенный период по %5'");
ИначеЕсли ПоРазделу И ПоОбъекту И ДляВсехИБПлана Тогда
Текст = НСтр("ru = 'Дате %1 по объекту ""%3"" раздела ""%2"" соответствует запрет загрузки данных для всех информационных баз ""%6"" по %5'");
Текст = НСтр("ru = 'Запрещено загружать данные с датой ранее %5 (включительно).
|[РазделительПодробнее]Подробнее:
|Для всех информационных баз ""%6"" запрещена загрузка данных по объекту ""%3"" раздела ""%2"",
|поскольку дата %1 входит в запрещенный период по %5'");
ИначеЕсли Не ПоРазделу И Не ПоОбъекту И ДляВсехИБ Тогда
Текст = НСтр("ru = 'Дате %1 соответствует запрет загрузки данных для всех информационных баз по %5'");
Текст = НСтр("ru = 'Запрещено загружать данные с датой ранее %5 (включительно).
|[РазделительПодробнее]Подробнее:
|Для всех информационных баз запрещена загрузка данных,
|поскольку дата %1 входит в запрещенный период по %5'");
ИначеЕсли ПоРазделу И Не ПоОбъекту И ДляВсехИБ Тогда
Текст = НСтр("ru = 'Дате %1 по разделу ""%2"" соответствует запрет загрузки данных для всех информационных баз по %5'");
Текст = НСтр("ru = 'Запрещено загружать данные с датой ранее %5 (включительно).
|[РазделительПодробнее]Подробнее:
|Для всех информационных баз запрещена загрузка данных по разделу ""%2"",
|поскольку дата %1 входит в запрещенный период по %5'");
ИначеЕсли Не ПоРазделу И ПоОбъекту И ДляВсехИБ Тогда
Текст = НСтр("ru = 'Дате %1 по объекту ""%3"" соответствует запрет загрузки данных для всех информационных баз по %5'");
Текст = НСтр("ru = 'Запрещено загружать данные с датой ранее %5 (включительно).
|[РазделительПодробнее]Подробнее:
|Для всех информационных баз запрещена загрузка данных по объекту ""%3"",
|поскольку дата %1 входит в запрещенный период по %5'");
ИначеЕсли ПоРазделу И ПоОбъекту И ДляВсехИБ Тогда
Текст = НСтр("ru = 'Дате %1 по объекту ""%3"" раздела ""%2"" соответствует запрет загрузки данных для всех информационных баз по %5'");
Текст = НСтр("ru = 'Запрещено загружать данные с датой ранее %5 (включительно).
|[РазделительПодробнее]Подробнее:
|Для всех информационных баз запрещена загрузка данных по объекту ""%3"" раздела ""%2"",
|поскольку дата %1 входит в запрещенный период по %5'");
КонецЕсли;
КонецЕсли;
@@ -1287,6 +1287,10 @@
Если НЕ ПравоДоступа("Чтение", Метаданные.Справочники.ДополнительныеОтчетыИОбработки) Тогда
Возврат;
КонецЕсли;
Если ОбщегоНазначения.РазделениеВключено()
И Не ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда
Возврат;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
@@ -43,7 +43,6 @@
События.Вставить("ПриИзмененииКлючейВариантовОтчетов", Ложь);
События.Вставить("ПриОпределенииОбъектовСКомандамиОтчетов", Ложь);
События.Вставить("ПередДобавлениемКомандОтчетов", Ложь);
События.Вставить("ПриДополненииСвязиОбъектовМетаданных", Ложь);
События.Вставить("ПриОпределенииПараметровВыбораВариантыОтчетов", Ложь);
События.Вставить("ПриСозданииНаСервереВариантыОтчетов", Ложь);
События.Вставить("ПередЗагрузкойВариантаНаСервере", Ложь);
@@ -2003,21 +2002,6 @@
КонецПроцедуры
// См. ОтчетыПереопределяемый.ДополнитьСвязиОбъектовМетаданных.
Процедура ПриДополненииСвязиОбъектовМетаданных(Результат) Экспорт
Если ИнтеграцияПодсистемБСППовтИсп.ПодпискиБТС().ПриДополненииСвязиОбъектовМетаданных Тогда
МодульИнтеграцияПодсистемБТС = ОбщегоНазначения.ОбщийМодуль("ИнтеграцияПодсистемБТС");
МодульИнтеграцияПодсистемБТС.ПриДополненииСвязиОбъектовМетаданных(Результат);
КонецЕсли;
Если ИнтеграцияПодсистемБСППовтИсп.ПодпискиБИП().ПриДополненииСвязиОбъектовМетаданных Тогда
МодульИнтеграцияПодсистемБИП = ОбщегоНазначения.ОбщийМодуль("ИнтеграцияПодсистемБИП");
МодульИнтеграцияПодсистемБИП.ПриДополненииСвязиОбъектовМетаданных(Результат);
КонецЕсли;
КонецПроцедуры
// См. ОтчетыПереопределяемый.ПриОпределенииПараметровВыбора.
Процедура ПриОпределенииПараметровВыбораВариантыОтчетов(Форма, СвойстваНастройки) Экспорт
@@ -28,9 +28,9 @@
Если МультиязычностьПовтИсп.ОбъектНеСодержитТЧПредставления(Данные.Ссылка) Тогда
СуффиксЯзыка = МультиязычностьСервер.СуффиксТекущегоЯзыка();
Если ЗначениеЗаполнено(СуффиксЯзыка) И Данные.Свойство(ИмяРеквизита + СуффиксЯзыка) Тогда
Если ЗначениеЗаполнено(СуффиксЯзыка) Тогда
СтандартнаяОбработка = Ложь;
Представление = Данные[ИмяРеквизита + СуффиксЯзыка]
Представление = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Данные.Ссылка, ИмяРеквизита,, ТекущийЯзык().КодЯзыка);
КонецЕсли;
ИначеЕсли Данные.Свойство("Ссылка") Или Данные.Ссылка <> Неопределено Тогда
@@ -106,7 +106,10 @@
Если Форма.Параметры.Свойство("ЗначениеКопирования")
И ЗначениеЗаполнено(Форма.Параметры.ЗначениеКопирования) Тогда
ОчиститьМультиязычныеРеквизиты(Объект, ОбъектМетаданные);
ПриЧтенииПредставленийНаСервере(Объект);
КонецЕсли;
КонецПроцедуры
@@ -1413,6 +1416,24 @@
ОбновлениеИнформационнойБазыСлужебный.НачальноеЗаполнениеПредопределенныхДанных(Истина, Параметры);
КонецПроцедуры
Процедура ОчиститьМультиязычныеРеквизиты(Объект, ОбъектМетаданные)
Если МультиязычныеСтрокиВРеквизитах(ОбъектМетаданные) Тогда
СписокМультиязычныхРеквизитов = НаименованияЛокализуемыхРеквизитовОбъекта(ОбъектМетаданные);
Для Каждого Реквизит Из СписокМультиязычныхРеквизитов Цикл
Объект[Реквизит.Ключ + "Язык1"] = "";
Объект[Реквизит.Ключ + "Язык2"] = "";
КонецЦикла;
ИначеЕсли Объект.Свойство("Представления") Тогда
Объект.Представления.Очистить();
КонецЕсли;
КонецПроцедуры
Функция ЭтоОсновнойЯзык() Экспорт
Возврат СтрСравнить(ОбщегоНазначения.КодОсновногоЯзыка(), ТекущийЯзык().КодЯзыка) = 0;
@@ -182,7 +182,7 @@
//
Функция НаименованиеЭтогоУзла(Знач УзелИнформационнойБазы) Экспорт
Возврат ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ПолучитьЭтотУзелПланаОбмена(ПолучитьИмяПланаОбмена(УзелИнформационнойБазы)), "Наименование");
Возврат Строка(ПолучитьЭтотУзелПланаОбмена(ПолучитьИмяПланаОбмена(УзелИнформационнойБазы)));
КонецФункции
@@ -6106,7 +6106,7 @@
СтруктураНастроекОбменаВнешнееСоединение.Вставить("РежимОтладки", Структура.РежимОтладки);
СтруктураНастроекОбменаВнешнееСоединение.Вставить("УзелИнформационнойБазы", УзелИнформационнойБазы);
СтруктураНастроекОбменаВнешнееСоединение.Вставить("УзелИнформационнойБазыНаименование", ОбщегоНазначения.ЗначениеРеквизитаОбъекта(УзелИнформационнойБазы, "Наименование"));
СтруктураНастроекОбменаВнешнееСоединение.Вставить("УзелИнформационнойБазыНаименование", Строка(УзелИнформационнойБазы));
СтруктураНастроекОбменаВнешнееСоединение.Вставить("КлючСообщенияЖурналаРегистрации", КлючСообщенияЖурналаРегистрации(УзелИнформационнойБазы, ДействиеПриОбмене));
@@ -11066,7 +11066,7 @@
УстановитьПривилегированныйРежим(Истина);
Возврат ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ОбменДаннымиПовтИсп.ПолучитьЭтотУзелПланаОбмена(ИмяПланаОбмена), "Наименование");
Возврат Строка(ОбменДаннымиПовтИсп.ПолучитьЭтотУзелПланаОбмена(ИмяПланаОбмена));
КонецФункции
Процедура ОбработчикПриВыгрузкеДанныхБСП(
@@ -11926,7 +11926,7 @@
СтрокаСообщенияОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'В программе ""%1"" выполняется обновление настроек синхронизации.
|Загрузка данных отменена. Необходимо запустить синхронизацию данных повторно.'"),
ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СтруктураНастроек.УзелИнформационнойБазы, "Наименование"));
Строка(СтруктураНастроек.УзелИнформационнойБазы));
Отказ = Истина;
КонецЕсли;
Возврат Истина;
@@ -14259,6 +14259,7 @@
ПараметрыОбмена.ДлительнаяОперацияРазрешена);
Если ПараметрыОбмена.ДлительнаяОперация Тогда
Если ПараметрыОбмена.ИнтервалОжиданияНаСервере > 0 Тогда
Если ОбщегоНазначения.ПодсистемаСуществует("ТехнологияСервиса.БазоваяФункциональность") Тогда
МодульОбщегоНазначенияБТС = ОбщегоНазначения.ОбщийМодуль("ОбщегоНазначенияБТС");
@@ -14290,12 +14291,14 @@
ОбщегоНазначения.КодОсновногоЯзыка()), СтруктураНастроекОбмена);
Возврат;
КонецЕсли;
КонецЕсли;
ФайлСообщенияОбмена = ПолучитьФайлИзХранилищаВСервисе(
Новый УникальныйИдентификатор(ПараметрыОбмена.ИдентификаторФайла),
УзелИнформационнойБазы,,
ПараметрыОбмена.ПараметрыАутентификации);
Исключение
ЗаписьЖурналаРегистрацииОбменаДанными(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), СтруктураНастроекОбмена, Истина);
СтруктураНастроекОбмена.РезультатВыполненияОбмена = Перечисления.РезультатыВыполненияОбмена.Ошибка;
@@ -14430,6 +14433,7 @@
ПараметрыОбмена.ДлительнаяОперацияРазрешена);
Если ПараметрыОбмена.ДлительнаяОперация Тогда
Если ПараметрыОбмена.ИнтервалОжиданияНаСервере > 0 Тогда
Если ОбщегоНазначения.ПодсистемаСуществует("ТехнологияСервиса.БазоваяФункциональность") Тогда
МодульОбщегоНазначенияБТС = ОбщегоНазначения.ОбщийМодуль("ОбщегоНазначенияБТС");
@@ -14458,13 +14462,17 @@
ОбщегоНазначения.КодОсновногоЯзыка()), СтруктураНастроекОбмена);
Возврат;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Исключение
ЗаписьЖурналаРегистрацииОбменаДанными(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), СтруктураНастроекОбмена, Истина);
СтруктураНастроекОбмена.РезультатВыполненияОбмена = Перечисления.РезультатыВыполненияОбмена.Ошибка;
Отказ = Истина;
КонецПопытки;
КонецЕсли;
@@ -706,6 +706,34 @@
Возврат;
КонецЕсли;
Если ОсновныеПараметры.Свойство("ПараметрыВыборки")
И ТипЗнч(ОсновныеПараметры.ПараметрыВыборки) = Тип("Структура") Тогда
ПолныеИменаОбъектов = Неопределено;
ПолныеИменаРегистров = Неопределено;
ОсновныеПараметры.ПараметрыВыборки.Свойство("ПолныеИменаОбъектов", ПолныеИменаОбъектов);
ОсновныеПараметры.ПараметрыВыборки.Свойство("ПолныеИменаРегистров", ПолныеИменаРегистров);
МассивИмен = СтрРазделить(ПолныеИменаОбъектов, ",", Ложь);
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(МассивИмен, СтрРазделить(ПолныеИменаРегистров, ",", Ложь));
Несуществующие = Новый Массив;
Для Каждого ПолноеИмяОбъекта Из МассивИмен Цикл
ПолноеИмяОбъекта = СокрЛП(ПолноеИмяОбъекта);
ОбъектСуществует = (Метаданные.НайтиПоПолномуИмени(ПолноеИмяОбъекта) <> Неопределено);
Если Не ОбъектСуществует Тогда
Несуществующие.Добавить(ПолноеИмяОбъекта);
КонецЕсли;
КонецЦикла;
Если Несуществующие.Количество() <> 0 Тогда
ТекстИсключения = НСтр("ru = 'В свойстве ПараметрыВыборки процедуры заполнения данных отложенного обработчика указаны несуществующие объекты:
|%1.'");
ТекстИсключения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстИсключения, СтрСоединить(Несуществующие, ", "));
ВызватьИсключение ТекстИсключения;
КонецЕсли;
КонецЕсли;
Узел = ОчередьСсылкой(ОсновныеПараметры.Очередь);
Если ДополнительныеПараметры.ЭтоДвижения Тогда
@@ -1075,16 +1103,16 @@
|СГРУППИРОВАТЬ ПО
| ТаблицаРегистраИзменения.Регистратор
|
|ИНДЕКСИРОВАТЬ ПО
| Регистратор
|
|УПОРЯДОЧИТЬ ПО
| МАКСИМУМ(ЕСТЬNULL(ТаблицаРегистра.Период, ДАТАВРЕМЯ(3000, 1, 1)))
|
|ИНДЕКСИРОВАТЬ ПО
| Регистратор
|
|;
|
|////////////////////////////////////////////////////////////////////////////////
|УНИЧТОЖИТЬ ВТЗаблокированоРегистратор";
|УНИЧТОЖИТЬ ВТЗаблокированоРегистратор"; // @query-part
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"#ТаблицаДвиженийРегистра", ПолноеИмяРегистра);
Иначе
@@ -3490,7 +3518,7 @@
Если ОбластиДанных <> Неопределено Тогда
УсловияЗапроса.Добавить("ОбработчикиОбновления.ОбластьДанныхВспомогательныеДанные В (&ОбластиДанных)");
Запрос.УстановитьПараметр("ОбластиДанных", ОбластиДанных);
Если Отбор.ОбластиДанных.Найти(0) = Неопределено Тогда
Если Отбор.Свойство("ОбластиДанных") И Отбор.ОбластиДанных.Найти(0) = Неопределено Тогда
УсловиеОбработчиковОбщихДанных = "ЛОЖЬ";
КонецЕсли;
КонецЕсли;
@@ -41,7 +41,7 @@
Процедура ПриДобавленииПодсистемы(Описание) Экспорт
Описание.Имя = "СтандартныеПодсистемы";
Описание.Версия = "3.1.5.132";
Описание.Версия = "3.1.5.146";
Описание.ИдентификаторИнтернетПоддержки = "SSL";
Описание.РежимВыполненияОтложенныхОбработчиков = "Параллельно";
Описание.ПараллельноеОтложенноеОбновлениеСВерсии = "2.3.3.0";
@@ -177,7 +177,7 @@
// РазрабатываемыеПодсистемы - Массив из Строка - имена разрабатываемых подсистемы в текущей конфигурации
// имя подсистемы в том виде, в котором оно задано в общем модуле ОбновлениеИнформационнойБазыХХХ
//
Процедура ПриФормированиеСпискаРазрабатываемыхПодсистем(РазрабатываемыеПодсистемы) Экспорт
Процедура ПриФормированииСпискаРазрабатываемыхПодсистем(РазрабатываемыеПодсистемы) Экспорт
@@ -243,5 +243,16 @@
КонецПроцедуры
#Область УстаревшиеПроцедурыИФункции
// Устарела. Следует использовать
// ОбновлениеИнформационнойБазыПереопределяемый.ПриФормированииСпискаРазрабатываемыхПодсистем
//
Процедура ПриФормированиеСпискаРазрабатываемыхПодсистем(РазрабатываемыеПодсистемы) Экспорт
КонецПроцедуры
#КонецОбласти
#КонецОбласти
@@ -6712,60 +6712,47 @@
Функция КоличествоОбработчиковНаТекущуюВерсию(ИтерацииОбновления, РежимВыполненияОтложенногоОбновления)
УчитыватьПроцедурыРегистрации = Истина;
Если РежимВыполненияОтложенногоОбновления = "Отложенно" Тогда
КлиентСервер = Не ОбщегоНазначения.ИнформационнаяБазаФайловая();
Коробка = Не ОбщегоНазначения.РазделениеВключено();
Если КлиентСервер И Коробка Тогда
// Регистрация данных выполняется позже.
УчитыватьПроцедурыРегистрации = Ложь;
КонецЕсли;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("РежимВыполнения", Перечисления.РежимыВыполненияОбработчиков.Отложенно);
Запрос.УстановитьПараметр("РежимВыполненияОтложенногоОбработчика", Перечисления.РежимыВыполненияОтложенныхОбработчиков.Параллельно);
Запрос.Текст =
"ВЫБРАТЬ
| КОЛИЧЕСТВО(ОбработчикиОбновления.ИмяОбработчика) КАК Количество
| ОбработчикиОбновления.ИмяОбработчика КАК ИмяОбработчика
|ИЗ
| РегистрСведений.ОбработчикиОбновления КАК ОбработчикиОбновления
|ГДЕ
| ОбработчикиОбновления.РежимВыполнения <> &РежимВыполнения
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| КОЛИЧЕСТВО(ОбработчикиОбновленияОбщихДанных.ИмяОбработчика) КАК Количество
| ОбработчикиОбновления.РежимВыполнения <> &РежимВыполнения";
КоличествоРазделенныхОбработчиков = Запрос.Выполнить().Выгрузить().Количество();
Запрос.Текст =
"ВЫБРАТЬ
| ОбработчикиОбновленияОбщихДанных.ИмяОбработчика КАК ИмяОбработчика
|ИЗ
| РегистрСведений.ОбработчикиОбновленияОбщихДанных КАК ОбработчикиОбновленияОбщихДанных
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| КОЛИЧЕСТВО(ОбработчикиОбновления.ИмяОбработчика) КАК Количество
| РегистрСведений.ОбработчикиОбновленияОбщихДанных КАК ОбработчикиОбновленияОбщихДанных";
КоличествоНеразделенныхОбработчиков = Запрос.Выполнить().Выгрузить().Количество();
Запрос.Текст =
"ВЫБРАТЬ
| ОбработчикиОбновления.ИмяОбработчика КАК ИмяОбработчика
|ИЗ
| РегистрСведений.ОбработчикиОбновления КАК ОбработчикиОбновления
|ГДЕ
| ОбработчикиОбновления.РежимВыполнения = &РежимВыполнения
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| КОЛИЧЕСТВО(ОбработчикиОбновления.ИмяОбработчика) КАК Количество
| ОбработчикиОбновления.РежимВыполнения = &РежимВыполнения";
КоличествоОтложенныхОбработчиков = Запрос.Выполнить().Выгрузить().Количество();
Запрос.Текст =
"ВЫБРАТЬ
| ОбработчикиОбновления.ИмяОбработчика КАК ИмяОбработчика
|ИЗ
| РегистрСведений.ОбработчикиОбновления КАК ОбработчикиОбновления
|ГДЕ
| ОбработчикиОбновления.РежимВыполненияОтложенногоОбработчика = &РежимВыполненияОтложенногоОбработчика";
Результат = Запрос.Выполнить().Выгрузить();
КоличествоПроцедурРегистрации = Запрос.Выполнить().Выгрузить().Количество();
КоличествоОбработчиков = Результат[0].Количество + Результат[1].Количество;
КоличествоОбработчиков = КоличествоРазделенныхОбработчиков + КоличествоНеразделенныхОбработчиков + КоличествоПроцедурРегистрации;
Если РежимВыполненияОтложенногоОбновления = "Монопольно" Тогда
КоличествоОбработчиков = КоличествоОбработчиков + Результат[2].Количество;
КонецЕсли;
Если УчитыватьПроцедурыРегистрации Тогда
КоличествоОбработчиков = КоличествоОбработчиков + Результат[3].Количество;
КоличествоОбработчиков = КоличествоОбработчиков + КоличествоОтложенныхОбработчиков;
КонецЕсли;
Возврат Новый Структура("ВсегоОбработчиков, ВыполненоОбработчиков", КоличествоОбработчиков, 0);
@@ -116,7 +116,8 @@
// значением Неопределено; если нет прав для работы с таблицей, то возникнет исключение;
// если Ложь, то возникнет исключение при отсутствии прав на таблицу
// или любой из реквизитов.
// КодЯзыка - Строка - код языка для мультиязычного реквизита.
// КодЯзыка - Строка - код языка для мультиязычного реквизита. Значение по умолчанию - основной язык конфигурации.
// Если значение на указанном языке не заполнено, возвращается значение на языке конфигурации.
//
// Возвращаемое значение:
// Структура - содержит имена (ключи) и значения затребованных реквизитов.
@@ -381,7 +382,8 @@
// если нет прав для работы с таблицей, то возникнет исключение;
// если Ложь, то возникнет исключение при отсутствии прав на таблицу
// или любой из реквизитов.
// КодЯзыка - Строка - код языка для мультиязычного реквизита.
// КодЯзыка - Строка - код языка для мультиязычного реквизита. Значение по умолчанию - основной язык конфигурации.
// Если значение на указанном языке не заполнено, возвращается значение на языке конфигурации.
//
// Возвращаемое значение:
// Произвольный - если в параметр Ссылка передана пустая ссылка, то возвращается Неопределено.
@@ -422,7 +424,8 @@
// будет исключен и из результата;
// если Ложь, то возникнет исключение при отсутствии прав на таблицу
// или любой из реквизитов.
// КодЯзыка - Строка - код языка для мультиязычного реквизита.
// КодЯзыка - Строка - код языка для мультиязычного реквизита. Значение по умолчанию - основной язык конфигурации.
// Если значение на указанном языке не заполнено, возвращается значение на языке конфигурации.
//
// Возвращаемое значение:
// Соответствие из КлючИЗначение - список объектов и значений их реквизитов:
@@ -471,7 +474,7 @@
ИмяРеквизита = СокрЛП(НаборРеквизитов[Позиция]);
Если МультиязычныеРеквизиты[ИмяРеквизита] <> Неопределено Тогда
ИмяССуффиксом = ИмяРеквизита + СуффиксЯзыка;
НаборРеквизитов[Позиция] = ИмяССуффиксом + " КАК " + ИмяРеквизита;
НаборРеквизитов[Позиция] = СтрШаблон("ВЫБОР КОГДА %1 = """" ТОГДА %2 ИНАЧЕ %1 КОНЕЦ КАК %2", ИмяССуффиксом, ИмяРеквизита);
КонецЕсли;
КонецЦикла;
РеквизитыТекстЗапроса = СтрСоединить(НаборРеквизитов, ",");
@@ -533,13 +536,13 @@
ПоляТаблиц.Добавить("ПсевдонимЗаданнойТаблицы.Ссылка");
Для Каждого Реквизит Из СтрРазделить(Реквизиты, ",") Цикл
Если МультиязычныеРеквизиты[Реквизит] = Истина Тогда
ПоляТаблиц.Добавить("ТаблицаПредставления." + Реквизит + " КАК " + Реквизит);
ПоляТаблиц.Добавить("ЕСТЬNULL(ТаблицаПредставления." + Реквизит + ", ПсевдонимЗаданнойТаблицы." + Реквизит + ") КАК " + Реквизит);
Иначе
ПоляТаблиц.Добавить(Реквизит);
КонецЕсли;
КонецЦикла;
ПоляТаблиц = СтрСоединить(ПоляТаблиц, ",");
ПоляТаблиц = СтрСоединить(ПоляТаблиц, "," + Символы.ПС);
Таблицы = ПолноеИмяОбъектаМетаданных + " " + "КАК ПсевдонимЗаданнойТаблицы" + Символы.ПС
+ "ЛЕВОЕ СОЕДИНЕНИЕ" + " " + ПолноеИмяОбъектаМетаданных + ".Представления КАК ТаблицаПредставления" + Символы.ПС
@@ -626,7 +629,8 @@
// будет исключен и из результата;
// если Ложь, то возникнет исключение при отсутствии прав на таблицу
// или любой из реквизитов.
// КодЯзыка - Строка - код языка для мультиязычного реквизита.
// КодЯзыка - Строка - код языка для мультиязычного реквизита. Значение по умолчанию - основной язык конфигурации.
// Если значение на указанном языке не заполнено, возвращается значение на языке конфигурации.
//
// Возвращаемое значение:
// Соответствие из КлючИЗначение:
@@ -2345,7 +2349,7 @@
// * Данные - ТаблицаЗначений - преобразованная из XML таблица.
//
// Пример:
// КлассификаторТаблица = ПрочитатьXMLВТаблицу(
// КлассификаторТаблица = ОбщегоНазначения.ПрочитатьXMLВТаблицу(
// Обработки.ЗагрузкаКурсовВалют.ПолучитьМакет("ОбщероссийскийКлассификаторВалют").ПолучитьТекст()).Данные;
//
Функция ПрочитатьXMLВТаблицу(Знач XML) Экспорт
@@ -5726,6 +5730,9 @@
// Устарела. Следует использовать
// ОбщегоНазначения.РазделениеВключено() И ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных().
//
// Возвращаемое значение:
// Булево
//
Функция ИспользованиеРазделителяСеанса() Экспорт
Если Не РазделениеВключено() Тогда
@@ -6836,23 +6843,32 @@
// Табличные части
Для Каждого Элемент Из Описание.ТабличныеЧасти Цикл
ЗаменитьВКоллекцииСтрок(
"ТабличныеЧасти",
Элемент.Имя,
Объект,
Объект[Элемент.Имя],
Элемент.СписокПолей,
ПарыЗамен);
"ТабличныеЧасти",
Элемент.Имя,
Объект,
Объект[Элемент.Имя],
Элемент.СписокПолей,
ПарыЗамен);
КонецЦикла;
// Стандартные табличные части.
Для Каждого Элемент Из Описание.СтандартныеТабличныеЧасти Цикл
ЗаменитьВКоллекцииСтрок(
"СтандартныеТабличныеЧасти",
Элемент.Имя,
Объект,
Объект[Элемент.Имя],
Элемент.СписокПолей,
ПарыЗамен);
"СтандартныеТабличныеЧасти",
Элемент.Имя,
Объект,
Объект[Элемент.Имя],
Элемент.СписокПолей,
ПарыЗамен);
КонецЦикла;
Для Каждого Реквизит Из Описание.РеквизитыАдресации Цикл
Имя = Реквизит.Ключ;
ЦелеваяСсылка = ПарыЗамен[ Объект[Имя] ];
Если ЦелеваяСсылка <> Неопределено Тогда
ЗарегистрироватьФактЗамены(Объект, Объект[Имя], ЦелеваяСсылка, "РеквизитыАдресации", Имя);
Объект[Имя] = ЦелеваяСсылка;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
@@ -7172,6 +7188,7 @@
// Возвращаемое значение:
// Структура:
// * СтандартныеРеквизиты - Структура
// * РеквизитыАдресации - Структура
// * Реквизиты - Структура
// * СтандартныеТабличныеЧасти - Массив из Структура:
// ** Имя - Строка
@@ -7181,12 +7198,12 @@
// ** СписокПолей - Структура
// * МожетБытьПроведен - Булево
//
Функция ОписаниеОбъекта(Знач Мета)
Функция ОписаниеОбъекта(Знач ОбъектМетаданных)
ТипВсеСсылки = ОписаниеТипаВсеСсылки();
Кандидаты = Новый Структура("Реквизиты, СтандартныеРеквизиты, ТабличныеЧасти, СтандартныеТабличныеЧасти");
ЗаполнитьЗначенияСвойств(Кандидаты, Мета);
Кандидаты = Новый Структура("Реквизиты, СтандартныеРеквизиты, ТабличныеЧасти, СтандартныеТабличныеЧасти, РеквизитыАдресации");
ЗаполнитьЗначенияСвойств(Кандидаты, ОбъектМетаданных);
ОписаниеОбъекта = Новый Структура;
@@ -7245,7 +7262,16 @@
КонецЦикла;
КонецЕсли;
ОписаниеОбъекта.Вставить("МожетБытьПроведен", Метаданные.Документы.Содержит(Мета));
ОписаниеОбъекта.Вставить("РеквизитыАдресации", Новый Структура);
Если Кандидаты.РеквизитыАдресации <> Неопределено Тогда
Для Каждого Реквизит Из Кандидаты.РеквизитыАдресации Цикл
Если ОписанияТиповПересекаются(Реквизит.Тип, ТипВсеСсылки) Тогда
ОписаниеОбъекта.РеквизитыАдресации.Вставить(Реквизит.Имя);
КонецЕсли;
КонецЦикла;
КонецЕсли;
ОписаниеОбъекта.Вставить("МожетБытьПроведен", Метаданные.Документы.Содержит(ОбъектМетаданных));
Возврат ОписаниеОбъекта;
КонецФункции
@@ -495,8 +495,8 @@
//
// Пример:
//
// Если НЕ ПроверитьТипПараметраКоманды(Элементы.Список.ВыделенныеСтроки,
// Тип("ЗадачаСсылка.ЗадачаИсполнителя")) Тогда
// Если НЕ ОбщегоНазначенияКлиент.ПроверитьТипПараметраКоманды(
// Элементы.Список.ВыделенныеСтроки, Тип("ЗадачаСсылка.ЗадачаИсполнителя")) Тогда
// Возврат;
// КонецЕсли;
// ...
@@ -574,7 +574,7 @@
// Пример:
// //А = [1, 3, 5, 7];
// //В = [3, 7, 9];
// Результат = РазностьМассивов(А, В);
// Результат = ОбщегоНазначенияКлиентСервер.РазностьМассивов(А, В);
// //Результат = [1, 5];
//
Функция РазностьМассивов(Знач Массив, Знач МассивВычитания) Экспорт
@@ -319,26 +319,6 @@
// // Обработка события.
// КонецПроцедуры
//
// ** ДополнитьСвязиОбъектовМетаданных - Булево - если Истина, то в модуле объекта отчета
// следует определить обработчик события по шаблону:
//
// // Дополнительные связи настроек этого отчета.
// // В данной процедуре следует описать дополнительные зависимости объектов метаданных
// // конфигурации, которые будут использоваться для связи настроек отчетов.
// //
// // Параметры:
// // СвязиОбъектовМетаданных - ТаблицаЗначений - таблица связей.
// // * ПодчиненныйРеквизит - Строка - имя реквизита подчиненного объекта метаданных.
// // * ПодчиненныйТип - Тип - тип подчиненного объекта метаданных.
// // * ВедущийТип - Тип - тип ведущего объекта метаданных.
// //
// // См. также:
// // ОтчетыПереопределяемый.ДополнитьСвязиОбъектовМетаданных().
// //
// Процедура ДополнитьСвязиОбъектовМетаданных(СвязиОбъектовМетаданных) Экспорт
// // Обработка события.
// КонецПроцедуры
//
// ** ПриОпределенииОсновныхПолей - Булево - если Истина, то в модуле объекта отчета
// следует определить обработчик события по шаблону:
//
@@ -386,7 +366,6 @@
События.Вставить("ПослеЗаполненияПанелиБыстрыхНастроек", Ложь);
События.Вставить("ПриОпределенииПараметровВыбора", Ложь);
События.Вставить("ПриОпределенииИспользуемыхТаблиц", Ложь);
События.Вставить("ДополнитьСвязиОбъектовМетаданных", Ложь);
События.Вставить("ПриОпределенииСвойствЭлементовФормыНастроек", Ложь);
События.Вставить("ПриОпределенииОсновныхПолей", Ложь);
@@ -104,21 +104,6 @@
КонецПроцедуры
// В данной процедуре следует описать дополнительные зависимости объектов метаданных
// конфигурации, которые будут использоваться для связи настроек отчетов.
//
// Параметры:
// СвязиОбъектовМетаданных - ТаблицаЗначений:
// * ПодчиненныйРеквизит - Строка - имя реквизита подчиненного объекта метаданных.
// * ПодчиненныйТип - Тип - тип подчиненного объекта метаданных.
// * ВедущийТип - Тип - тип ведущего объекта метаданных.
//
Процедура ДополнитьСвязиОбъектовМетаданных(СвязиОбъектовМетаданных) Экспорт
КонецПроцедуры
#КонецОбласти
@@ -810,7 +810,7 @@
Вариант = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Контекст, "ВариантСсылка");
Если ЗначениеЗаполнено(Вариант) Тогда
Заголовок.Значение = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Вариант, "Наименование");
Заголовок.Значение = Строка(Вариант);
КонецЕсли;
Если ЗначениеЗаполнено(Заголовок.Значение)
@@ -4077,12 +4077,12 @@
Если МассивПеремещенныхПользователей.Количество() = 0 И МассивНеПеремещенныхПользователей.Количество() = 0 Тогда
Если МассивПользователей.Количество() = 1 Тогда
ТекстСообщения = НСтр("ru = 'Пользователь ""%1"" уже включен в группу ""%2"".'");
ИмяПеремещаемогоПользователя = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(МассивПользователей[0], "Наименование");
ИмяПеремещаемогоПользователя = Строка(МассивПользователей[0]);
Иначе
ТекстСообщения = НСтр("ru = 'Все выбранные пользователи уже включены в группу ""%2"".'");
ИмяПеремещаемогоПользователя = "";
КонецЕсли;
НаименованиеГруппы = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ГруппаПриемник, "Наименование");
НаименованиеГруппы = Строка(ГруппаПриемник);
СообщениеПользователю.Сообщение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстСообщения,
ИмяПеремещаемогоПользователя, НаименованиеГруппы);
СообщениеПользователю.ЕстьОшибки = Истина;
@@ -4211,7 +4211,7 @@
Перемещение, МассивНеПеремещенныхПользователей, ГруппаИсточник = Неопределено) Экспорт
КоличествоПользователей = МассивПользователей.Количество();
НаименованиеГруппы = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ГруппаПриемник, "Наименование");
НаименованиеГруппы = Строка(ГруппаПриемник);
СообщениеПользователю = Неопределено;
КоличествоНеПеремещенныхПользователей = МассивНеПеремещенныхПользователей.Количество();
@@ -4284,13 +4284,13 @@
Если КоличествоПользователей = 1 Тогда
СтрокаОбъект = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(МассивПользователей[0], "Наименование");
СтрокаОбъект = Строка(МассивПользователей[0]);
Если ГруппаПриемник = Справочники.ГруппыПользователей.ВсеПользователи
Или ГруппаПриемник = Справочники.ГруппыВнешнихПользователей.ВсеВнешниеПользователи Тогда
СообщениеПользователю = НСтр("ru = '""%1"" исключен из группы ""%2""'");
НаименованиеГруппы = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ГруппаИсточник, "Наименование");
НаименованиеГруппы = Строка(ГруппаИсточник);
ИначеЕсли Перемещение Тогда
СообщениеПользователю = НСтр("ru = '""%1"" перемещен в группу ""%2""'");
@@ -4306,7 +4306,7 @@
Если ГруппаПриемник = Справочники.ГруппыПользователей.ВсеПользователи Тогда
СообщениеПользователю = НСтр("ru = '%1 исключены из группы ""%2""'");
НаименованиеГруппы = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ГруппаИсточник, "Наименование");
НаименованиеГруппы = Строка(ГруппаИсточник);
ИначеЕсли Перемещение Тогда
СообщениеПользователю = НСтр("ru = '%1 перемещены в группу ""%2""'");
@@ -133,7 +133,7 @@
//
Функция ПояснениеНедействительногоБанка(Банк) Экспорт
НаименованиеБанка = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Банк, "Наименование");
НаименованиеБанка = Строка(Банк);
ТекстЗапроса =
"ВЫБРАТЬ
@@ -423,7 +423,7 @@
| СпрВалюты.ФормулаРасчетаКурса ПОДОБНО &СимвольныйКод";
Запрос.УстановитьПараметр("ВалютаБазовая", ВалютаБазовая);
Запрос.УстановитьПараметр("СимвольныйКод", "%" + ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ВалютаБазовая, "Наименование") + "%");
Запрос.УстановитьПараметр("СимвольныйКод", "%" + Строка(ВалютаБазовая) + "%");
ЗависимыеВалюты = Запрос.Выполнить().Выгрузить();
@@ -1016,6 +1016,10 @@
ПоказатьПредупреждение(, Результат.ОписаниеОшибки);
КонецЕсли;
Если Результат.КодВозврата <> 0 Тогда
ПоказатьПредупреждение(, Результат.ПотокОшибок);
КонецЕсли;
КонецПроцедуры
Процедура ПоказатьВопросУстановкиКомпонентыСканирования(Результат, КомпонентаУстановлена) Экспорт
@@ -962,6 +962,17 @@
#Область СлужебныеПроцедурыИФункции
Процедура УстановитьУниверсальноеВремяИзменения(ПутьКФайлу, НовоеВремяИзменения)
Если НЕ ЗначениеЗаполнено(НовоеВремяИзменения) Тогда
Возврат;
КонецЕсли;
Файл = Новый Файл(ПутьКФайлу);
Если Файл.Существует() Тогда
Файл.УстановитьУниверсальноеВремяИзменения(НовоеВремяИзменения);
КонецЕсли;
КонецПроцедуры
// Возвращает Истина, если файл с таким расширением можно загружать.
Функция ПроверитьРасширениеФайлаДляЗагрузки(РасширениеФайла, ВызыватьИсключение = Истина)
@@ -2800,8 +2811,8 @@
Возврат;
КонецЕсли;
ВременныйФайлНешифрованный = Новый Файл(ПараметрыВыполнения.ДиалогПолноеИмяФайла);
ВременныйФайлНешифрованный.УстановитьУниверсальноеВремяИзменения(ПараметрыВыполнения.ВремяИзмененияВыбранное);
УстановитьУниверсальноеВремяИзменения(ПараметрыВыполнения.ДиалогПолноеИмяФайла,
ПараметрыВыполнения.ВремяИзмененияВыбранное);
ПараметрыВыполнения.ФайлЗашифрован = Ложь;
@@ -5560,8 +5571,8 @@
КонецЕсли;
// Установим время изменения файла таким, как оно стоит в текущей версии.
ФайлНаДиске = Новый Файл(ПараметрыВыполнения.ПолноеИмяФайла);
ФайлНаДиске.УстановитьУниверсальноеВремяИзменения(ПараметрыВыполнения.ВремяИзмененияУниверсальное);
УстановитьУниверсальноеВремяИзменения(ПараметрыВыполнения.ПолноеИмяФайла,
ПараметрыВыполнения.ВремяИзмененияУниверсальное);
ПолучитьССервераИЗарегистрироватьВЛокальномКэшеФайловЗавершение(ПараметрыВыполнения);
@@ -6859,9 +6870,7 @@
УдалитьИзВременногоХранилища(АдресФайла);
КонецЕсли;
НовыйФайл = Новый Файл(ПолноеИмяФайла);
НовыйФайл.УстановитьУниверсальноеВремяИзменения(
УстановитьУниверсальноеВремяИзменения(ПолноеИмяФайла,
ПараметрыВыполнения.ДанныеФайла.ДатаМодификацииУниверсальная);
КонецЕсли;
@@ -10764,8 +10773,7 @@
Если ПолучитьФайлы(ПолучаемыеФайлы, ПолученныеФайлы, , Ложь) Тогда
ПолноеИмяФайлаНаКлиенте = ПолученныеФайлы[0].ПолноеИмя;
Файл = Новый Файл(ПолноеИмяФайлаНаКлиенте);
Файл.УстановитьУниверсальноеВремяИзменения(ДатаМодификацииУниверсальная);
УстановитьУниверсальноеВремяИзменения(ПолноеИмяФайлаНаКлиенте, ДатаМодификацииУниверсальная);
Возврат Истина;
КонецЕсли;
@@ -13,6 +13,11 @@
//
Функция ПолучитьУникальноеИмяСПутем(ИмяКаталога, ИмяФайла) Экспорт
ОбщегоНазначенияКлиентСервер.Проверить(
ЗначениеЗаполнено(ИмяКаталога),
НСтр("ru='Каталог должен быть заполнен.'"),
"ПолучитьУникальноеИмяСПутем");
ИтоговыйПуть = "";
Счетчик = 0;
@@ -108,6 +108,8 @@
ВесьМассив.Добавить(НовыйАтрибут("1.2.643.100.3", "SNILS", 14, "СНИЛС", "10"));
ВесьМассив.Добавить(НовыйАтрибут("1.2.643.3.131.1.1", "INN", 12, "ИНН", "10"));
ВесьМассив.Добавить(НовыйАтрибут("1.2.840.113549.1.9.1", "E", 128, "ЭлектроннаяПочта", "10"));
ВесьМассив.Добавить(НовыйАтрибут("1.2.643.100.4", "INNLE", 10, "ИННЮЛ", "10"));
ВесьМассив.Добавить(НовыйАтрибут("1.2.643.100.114", "identificationKind", 1, "ВидИдентификации", "10"));
ВесьМассив.Добавить(НовыйАтрибут("2.5.4.5", "SerialNumber", 0, "СерийныйНомер"));
ВесьМассив.Добавить(НовыйАтрибут("2.5.4.13", "Description", 0, "Описание"));
@@ -107,26 +107,10 @@
НСтр("ru = 'Конечная точка не соответствует ожидаемой. Код ожидаемой конечной точки %1. Код текущей конечной точки %2.'"),
Тело.SenderId,
ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ЭтотУзелОбменаСообщениями, "Код"));
ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииПодключениеКорреспондента(),
УровеньЖурналаРегистрации.Ошибка,,, ПредставлениеОшибки);
ОтветноеСообщение = МодульСообщенияВМоделиСервиса.НовоеСообщение(
СообщенияАдминистрированиеОбменаДаннымиКонтрольИнтерфейс.СообщениеОшибкаПодключенияКорреспондента());
ОтветноеСообщение.Body.RecipientId = Тело.RecipientId;
ОтветноеСообщение.Body.SenderId = Тело.SenderId;
ОтветноеСообщение.Body.ErrorDescription = ПредставлениеОшибки;
НачатьТранзакцию();
Попытка
МодульСообщенияВМоделиСервиса.ОтправитьСообщение(ОтветноеСообщение, Отправитель);
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
ОтправитьОтветноеСообщениеОбОшибкеПодключения(Сообщение, Отправитель, ПредставлениеОшибки);
Возврат;
КонецЕсли;
// Проверяем то, что корреспондент уже был подключен ранее.
@@ -160,26 +144,10 @@
ПредставлениеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Ошибка подключения конечной точки корреспондента обмена. Код конечной точки корреспондента обмена %1.'"),
Тело.RecipientId);
ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииПодключениеКорреспондента(),
УровеньЖурналаРегистрации.Ошибка,,, ПредставлениеОшибки);
ОтветноеСообщение = МодульСообщенияВМоделиСервиса.НовоеСообщение(
СообщенияАдминистрированиеОбменаДаннымиКонтрольИнтерфейс.СообщениеОшибкаПодключенияКорреспондента());
ОтветноеСообщение.Body.RecipientId = Тело.RecipientId;
ОтветноеСообщение.Body.SenderId = Тело.SenderId;
ОтветноеСообщение.Body.ErrorDescription = ПредставлениеОшибки;
НачатьТранзакцию();
Попытка
МодульСообщенияВМоделиСервиса.ОтправитьСообщение(ОтветноеСообщение, Отправитель);
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
ОтправитьОтветноеСообщениеОбОшибкеПодключения(Сообщение, Отправитель, ПредставлениеОшибки);
Возврат;
КонецЕсли;
ПодключенныйКорреспондентКод = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ПодключенныйКорреспондент, "Код");
@@ -196,25 +164,9 @@
Тело.RecipientId,
ПодключенныйКорреспондентКод);
ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииПодключениеКорреспондента(),
УровеньЖурналаРегистрации.Ошибка,,, ПредставлениеОшибки);
ОтветноеСообщение = МодульСообщенияВМоделиСервиса.НовоеСообщение(
СообщенияАдминистрированиеОбменаДаннымиКонтрольИнтерфейс.СообщениеОшибкаПодключенияКорреспондента());
ОтветноеСообщение.Body.RecipientId = Тело.RecipientId;
ОтветноеСообщение.Body.SenderId = Тело.SenderId;
ОтветноеСообщение.Body.ErrorDescription = ПредставлениеОшибки;
НачатьТранзакцию();
Попытка
МодульСообщенияВМоделиСервиса.ОтправитьСообщение(ОтветноеСообщение, Отправитель);
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
ОтправитьОтветноеСообщениеОбОшибкеПодключения(Сообщение, Отправитель, ПредставлениеОшибки);
Возврат;
КонецЕсли;
НачатьТранзакцию();
@@ -265,26 +217,10 @@
|Код конечной точки корреспондента обмена %2'"),
ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ЭтотУзелОбменаСообщениями, "Код"),
Тело.RecipientId);
ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииПодключениеКорреспондента(),
УровеньЖурналаРегистрации.Ошибка,,, ПредставлениеОшибки);
ОтветноеСообщение = МодульСообщенияВМоделиСервиса.НовоеСообщение(
СообщенияАдминистрированиеОбменаДаннымиКонтрольИнтерфейс.СообщениеОшибкаПодключенияКорреспондента());
ОтветноеСообщение.Body.RecipientId = Тело.RecipientId;
ОтветноеСообщение.Body.SenderId = Тело.SenderId;
ОтветноеСообщение.Body.ErrorDescription = ПредставлениеОшибки;
НачатьТранзакцию();
Попытка
МодульСообщенияВМоделиСервиса.ОтправитьСообщение(ОтветноеСообщение, Отправитель);
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
ОтправитьОтветноеСообщениеОбОшибкеПодключения(Сообщение, Отправитель, ПредставлениеОшибки);
Возврат;
КонецЕсли;
КорреспондентОбъект = Корреспондент.ПолучитьОбъект();
@@ -370,4 +306,38 @@
КонецФункции
Процедура ОтправитьОтветноеСообщениеОбОшибкеПодключения(Сообщение, Отправитель, ПредставлениеОшибки)
НомерПопытки = Неопределено;
Если Сообщение.Установлено("AdditionalInfo") Тогда
ДополнительныеСвойства = СериализаторXDTO.ПрочитатьXDTO(Сообщение.AdditionalInfo);
ДополнительныеСвойства.Свойство("НомерПопытки", НомерПопытки);
КонецЕсли;
ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииПодключениеКорреспондента(),
УровеньЖурналаРегистрации.Ошибка,,, ПредставлениеОшибки);
МодульСообщенияВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("СообщенияВМоделиСервиса");
ОтветноеСообщение = МодульСообщенияВМоделиСервиса.НовоеСообщение(
СообщенияАдминистрированиеОбменаДаннымиКонтрольИнтерфейс.СообщениеОшибкаПодключенияКорреспондента());
ДополнительныеСвойства = Новый Структура;
ДополнительныеСвойства.Вставить("НомерПопытки", НомерПопытки);
ОтветноеСообщение.AdditionalInfo = СериализаторXDTO.ЗаписатьXDTO(ДополнительныеСвойства);
ОтветноеСообщение.Body.RecipientId = Сообщение.Body.RecipientId;
ОтветноеСообщение.Body.SenderId = Сообщение.Body.SenderId;
ОтветноеСообщение.Body.ErrorDescription = ПредставлениеОшибки;
НачатьТранзакцию();
Попытка
МодульСообщенияВМоделиСервиса.ОтправитьСообщение(ОтветноеСообщение, Отправитель);
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
КонецПроцедуры
#КонецОбласти
@@ -255,7 +255,7 @@
Если Отказ Тогда
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'В процессе загрузки данных из программы ""%1"" возникли ошибки.'"),
ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Корреспондент, "Наименование"));
Строка(Корреспондент));
КонецЕсли;
// Отправляем ответное сообщение об успешной операции.
@@ -305,7 +305,7 @@
////////////////////////////////////////////////////////////////////////////////
// Для справочника ИдентификаторыОбъектовМетаданных.
// Только для внутреннего использования.
// См. Справочники.ИдентификаторыОбъектовМетаданных.ПредставлениеИдентификатора
Функция ПредставлениеИдентификатораОбъектаМетаданных(Ссылка) Экспорт
Возврат Справочники.ИдентификаторыОбъектовМетаданных.ПредставлениеИдентификатора(Ссылка);
@@ -106,7 +106,7 @@
////////////////////////////////////////////////////////////////////////////////
// Для справочника ИдентификаторыОбъектовМетаданных.
// Только для внутреннего использования.
// См. Справочники.ИдентификаторыОбъектовМетаданных.ПредставлениеИдентификатора
Функция ПредставлениеИдентификатораОбъектаМетаданных(Ссылка) Экспорт
Возврат СтандартныеПодсистемыВызовСервера.ПредставлениеИдентификатораОбъектаМетаданных(Ссылка);
@@ -521,7 +521,7 @@
////////////////////////////////////////////////////////////////////////////////
// Для справочника ИдентификаторыОбъектовМетаданных.
// Только для внутреннего использования.
// См. Справочники.ИдентификаторыОбъектовМетаданных.КэшИдентификаторовОбъектовМетаданных
Функция КэшИдентификаторовОбъектовМетаданных(КлючДанныхПовторногоИспользования) Экспорт
Возврат Справочники.ИдентификаторыОбъектовМетаданных.КэшИдентификаторовОбъектовМетаданных(
@@ -529,29 +529,21 @@
КонецФункции
// Только для внутреннего использования.
//
// Возвращаемое значение:
// см. Справочники.ИдентификаторыОбъектовМетаданных.ТаблицаПереименованияДляТекущейВерсии
//
// См. Справочники.ИдентификаторыОбъектовМетаданных.ТаблицаПереименованияДляТекущейВерсии
Функция ТаблицаПереименованияДляТекущейВерсии() Экспорт
Возврат Справочники.ИдентификаторыОбъектовМетаданных.ТаблицаПереименованияДляТекущейВерсии();
КонецФункции
// Только для внутреннего использования.
// См. Справочники.ИдентификаторыОбъектовМетаданных.СвойстваКоллекцийОбъектовМетаданных
Функция СвойстваКоллекцийОбъектовМетаданных(ОбъектыРасширений = Ложь) Экспорт
Возврат Справочники.ИдентификаторыОбъектовМетаданных.СвойстваКоллекцийОбъектовМетаданных(ОбъектыРасширений);
КонецФункции
// Только для внутреннего использования.
//
// Возвращаемое значение:
// Строка
//
// См. Справочники.ИдентификаторыОбъектовМетаданных.ПредставлениеИдентификатора
Функция ПредставлениеИдентификатораОбъектаМетаданных(Ссылка) Экспорт
Возврат Справочники.ИдентификаторыОбъектовМетаданных.ПредставлениеИдентификатора(Ссылка);
@@ -15207,6 +15207,7 @@
Если ТранзакцияАктивна() И ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда
Блокировка = Новый БлокировкаДанных;
Блокировка.Добавить("РегистрСведений.ОбновлениеКлючейДоступаКДанным");
Блокировка.Добавить("РегистрСведений.ОбновлениеКлючейДоступаПользователей");
Блокировка.Заблокировать();
КонецЕсли;
@@ -16962,12 +16963,13 @@
| НаборыГруппДоступа.ДляВнешнихПользователей = &ДляВнешнихПользователей
| И НаборыГруппДоступа.ТипЭлементовНабора = ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка)
| И НаборыГруппДоступа.Пользователь В
| (ВЫБРАТЬ РАЗЛИЧНЫЕ
| НаборыГруппДоступа.Пользователь КАК Пользователь
| (ВЫБРАТЬ
| ВЫРАЗИТЬ(НаборыГруппДоступа.Пользователь КАК Справочник.Пользователи) КАК Пользователь
| ИЗ
| Справочник.НаборыГруппДоступа КАК НаборыГруппДоступа
| ГДЕ
| НаборыГруппДоступа.ТипЭлементовНабора = ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка)
| НаборыГруппДоступа.ДляВнешнихПользователей = &ДляВнешнихПользователей
| И НаборыГруппДоступа.ТипЭлементовНабора = ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка)
| СГРУППИРОВАТЬ ПО
| НаборыГруппДоступа.Пользователь
| ИМЕЮЩИЕ
@@ -24009,6 +24011,11 @@
Иначе
НачатьТранзакцию();
Попытка
Если ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда
БлокировкаДанных = Новый БлокировкаДанных;
БлокировкаДанных.Добавить("РегистрСведений.ПараметрыОграниченияДоступа");
БлокировкаДанных.Заблокировать();
КонецЕсли;
ОписаниеВерсии = ОписаниеПоследнейВерсии(Истина);
Пока Истина Цикл
ЗаполнитьПараметрыДляШаблонов(Запись, Параметры, ОписаниеВерсии);
@@ -1863,7 +1863,7 @@
|ПОМЕСТИТЬ КонтактнаяИнформация
|ИЗ
| &КонтактнаяИнформация КАК КонтактнаяИнформация
|;");
|;");//@query-part
Если КолонкаДействуетСОтсутствует Тогда
Запрос.Текст = Запрос.Текст + "ВЫБРАТЬ
@@ -1452,7 +1452,7 @@
Если ТипЗнч(Набор) = Тип("Строка") Тогда
Возврат "";
Иначе
Возврат ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Набор, "Наименование");
Возврат Строка(Набор);
КонецЕсли;
КонецЕсли;
@@ -1465,7 +1465,7 @@
Если ТипЗнч(Набор) = Тип("Строка") Тогда
Наименование = "";
Иначе
Наименование = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Набор, "Наименование");
Наименование = Строка(Набор);
КонецЕсли;
КонецЕсли;
@@ -226,6 +226,10 @@
КодировкаПотоков = КодировкаСтандартныхПотоков();
КонецЕсли;
Если КодировкаПотоков = "CP866" И Не ЗначениеЗаполнено(КодировкаИсполнения) Тогда
КодировкаИсполнения = КодировкаПотоков;
КонецЕсли;
КодВозврата = Неопределено;
Если ОбщегоНазначения.ЭтоWindowsСервер() Тогда
@@ -379,7 +383,7 @@
Функция КодировкаСтандартныхПотоков()
Если ОбщегоНазначения.ЭтоWindowsСервер() Тогда
Кодировка = КодировкаТекста.OEM;
Кодировка = "CP866";
Иначе
Кодировка = КодировкаТекста.Системная;
КонецЕсли;
@@ -539,6 +539,8 @@
// Windows: запрос UAC;
// Linux: исполнение с командой pkexec;
// macOS, веб-клиент и мобильный клиент: будет возвращен Результат.ОписаниеОшибки.
// * СредаИсполнения - Строка - пустая строка, если среда исполнения не Windows. Используется при
// определении недопустимых символов в строке запуска.
//
Функция ПараметрыЗапускаПрограммы() Экспорт
@@ -551,6 +553,9 @@
Параметры.Вставить("КодировкаИсполнения", Неопределено);
Параметры.Вставить("ВыполнитьСНаивысшимиПравами", Ложь);
СредаИсполнения = ?(ОбщегоНазначенияКлиент.ЭтоWindowsКлиент(), "Windows", "");
Параметры.Вставить("СредаИсполнения", СредаИсполнения);
Возврат Параметры;
КонецФункции
@@ -595,7 +600,8 @@
ПараметрыЗапускаПрограммы = ПараметрыЗапускаПрограммы();
КонецЕсли;
СтрокаКоманды = ОбщегоНазначенияСлужебныйКлиентСервер.БезопаснаяСтрокаКоманды(КомандаЗапуска);
СредаИсполнения = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(ПараметрыЗапускаПрограммы, "СредаИсполнения", "Windows");
СтрокаКоманды = ОбщегоНазначенияСлужебныйКлиентСервер.БезопаснаяСтрокаКоманды(КомандаЗапуска, СредаИсполнения);
ИмяФайлаПотокаВывода = "";
ИмяФайлаПотокаОшибок = "";
@@ -1007,12 +1007,11 @@
// - Строка - полное имя файла, содержащего двоичные данные,
// которые были подписаны.
// - Структура:
// * ПараметрыXMLDSig - Структура - как возвращает функция ПараметрыXMLDSig
// общего модуля ЭлектроннаяПодпись.
// * КонвертSOAP - Строка - шаблон сообщения <soap:Envelope>.
// * КонвертXML - Строка - подписанный КонвертXML,
// смотри также функцию КонвертXML.
// * ПараметрыXMLDSig - см. ЭлектроннаяПодпись.ПараметрыXMLDSig
// - Структура:
// * ПараметрыCMS - Структура - как возвращает функция ПараметрыCMS
// общего модуля ЭлектроннаяПодпись.
// * ПараметрыCMS - см. ЭлектроннаяПодпись.ПараметрыCMS
// * Данные - Строка - произвольная строка для подписания,
// - ДвоичныеДанные - двоичные данные для подписания.
//
@@ -1047,6 +1046,23 @@
ЭтоXMLDSig = ТипЗнч(ИсходныеДанныеДляПроверки) = Тип("Структура")
И ИсходныеДанныеДляПроверки.Свойство("ПараметрыXMLDSig");
Если ЭтоXMLDSig Тогда
Если Не ИсходныеДанныеДляПроверки.Свойство("КонвертXML") Тогда
ИсходныеДанныеДляПроверки = Новый Структура(Новый ФиксированнаяСтруктура(ИсходныеДанныеДляПроверки));
ИсходныеДанныеДляПроверки.Вставить("КонвертXML", ИсходныеДанныеДляПроверки.КонвертSOAP);
КонецЕсли;
СвойстваКонвертаXML = ЭлектроннаяПодписьСлужебный.СвойстваКонвертаXML(
ИсходныеДанныеДляПроверки.КонвертXML, ИсходныеДанныеДляПроверки.ПараметрыXMLDSig, Истина);
Если СвойстваКонвертаXML <> Неопределено
И ЗначениеЗаполнено(СвойстваКонвертаXML.ТекстОшибки) Тогда
ОписаниеОшибки = СвойстваКонвертаXML.ТекстОшибки;
Если ВызыватьИсключение Тогда
ВызватьИсключение ОписаниеОшибки;
КонецЕсли;
Возврат Ложь;
КонецЕсли;
КонецЕсли;
ЭтоCMS = ТипЗнч(ИсходныеДанныеДляПроверки) = Тип("Структура")
И ИсходныеДанныеДляПроверки.Свойство("ПараметрыCMS");
@@ -1068,8 +1084,12 @@
ПараметрыСоздания.АлгоритмПодписи =
ЭлектроннаяПодписьСлужебныйКлиентСервер.АлгоритмСформированнойПодписи(ПодписьДляПроверки);
ИначеЕсли ЭтоXMLDSig Тогда
ДанныеСертификата = ЭлектроннаяПодписьСлужебныйКлиентСервер.СертификатИзКонвертаSOAP(
ИсходныеДанныеДляПроверки.КонвертSOAP, Ложь);
Если СвойстваКонвертаXML = Неопределено Тогда
ДанныеСертификата = ЭлектроннаяПодписьСлужебныйКлиентСервер.СертификатИзКонвертаSOAP(
ИсходныеДанныеДляПроверки.КонвертXML, Ложь);
Иначе
ДанныеСертификата = Base64Значение(СвойстваКонвертаXML.Сертификат.ЗначениеСертификата);
КонецЕсли;
ПараметрыСоздания.АлгоритмПодписи =
ЭлектроннаяПодписьСлужебныйКлиентСервер.АлгоритмПодписиСертификата(ДанныеСертификата);
КонецЕсли;
@@ -1090,9 +1110,10 @@
Если ЭтоXMLDSig Тогда
Попытка
Результат = ЭлектроннаяПодписьСлужебный.ПроверитьПодпись(
ИсходныеДанныеДляПроверки.КонвертSOAP,
ИсходныеДанныеДляПроверки.КонвертXML,
ИсходныеДанныеДляПроверки.ПараметрыXMLDSig,
МенеджерКриптографииДляПроверки);
МенеджерКриптографииДляПроверки,
СвойстваКонвертаXML);
Исключение
ОписаниеОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
Если ВызыватьИсключение Тогда
@@ -1464,6 +1485,20 @@
КонецФункции
// См. ЭлектроннаяПодписьКлиент.КонвертXML.
Функция КонвертXML(Параметры) Экспорт
Возврат ЭлектроннаяПодписьСлужебныйКлиентСервер.КонвертXML(Параметры);
КонецФункции
// См. ЭлектроннаяПодписьКлиент.ПараметрыКонвертаXML.
Функция ПараметрыКонвертаXML() Экспорт
Возврат ЭлектроннаяПодписьСлужебныйКлиентСервер.ПараметрыКонвертаXML();
КонецФункции
// См. ЭлектроннаяПодписьКлиент.ПараметрыXMLDSig.
Функция ПараметрыXMLDSig() Экспорт
@@ -124,8 +124,8 @@
// их в свойстве Данные (смотри выше общий подход). В момент вызова
// в ОписаниеДанных уже вставлен параметр ВыбранныйСертификат (смотри ниже).
// - Структура:
// * КонвертXML - см. ЭлектроннаяПодписьКлиент.КонвертXML
// * ПараметрыXMLDSig - см. ЭлектроннаяПодписьКлиент.ПараметрыXMLDSig
// * КонвертSOAP - Строка - шаблон сообщения <soap:Envelope>.
// - Структура:
// * ПараметрыCMS - см. ЭлектроннаяПодписьКлиент.ПараметрыCMS
// * Данные - Строка - произвольная строка для подписания,
@@ -183,8 +183,8 @@
// # СвойстваПодписи = Строка - адрес временного хранилища, содержащего описанную ниже структуру.
// При передаче параметра НаборДанных, свойство нужно проверять в нем.
// = Структура - развернутое описание подписи:
// ## Подпись - ДвоичныеДанные - результат подписания.
// - Строка - подписанный конверт SOAP, если передавался в данных.
// ## Подпись = ДвоичныеДанные - результат подписания.
// = Строка - подписанный КонвертXML, если передавался в данных.
// ## УстановившийПодпись - СправочникСсылка.Пользователи - пользователь, который
// подписал объект информационной базы.
// ## Комментарий - Строка - комментарий, если он был введен при подписании.
@@ -420,8 +420,9 @@
// в расшифрованном файле (он не будет передан на сервер).
// - Строка - адрес временного хранилища, содержащего исходные двоичные данные.
// - Структура:
// * ПараметрыXMLDSig - см. ЭлектроннаяПодписьКлиент.ПараметрыXMLDSig.
// * КонвертSOAP - Строка - шаблон сообщения <soap:Envelope>.
// * КонвертXML - Строка - подписанный КонвертXML,
// смотри также функцию КонвертXML.
// * ПараметрыXMLDSig - см. ЭлектроннаяПодписьКлиент.ПараметрыXMLDSig
// - Структура:
// * ПараметрыCMS - см. ЭлектроннаяПодписьКлиент.ПараметрыCMS
// * Данные - Строка - произвольная строка для подписания,
@@ -1188,14 +1189,113 @@
КонецФункции
// Формирует структуру свойств для уточнения данных конверта SOAP и алгоритмов
// подписания и хеширования.
// Возвращает шаблон формата XML, содержащий один стандартный элемент
// Signature (см. стандарт https://www.w3.org/TR/xmldsig-core1)
// с одним элементом Reference и заполненным атрибутом URI
// (ссылка на сообщение XML, которое будет подписано).
//
// Не требуется заполнять алгоритмы при использовании сертификатов
// Возвращаемый шаблон содержит параметры %SignatureMethod%, %DigestMethod%,
// %DigestValue%, %SignatureValue%, %BinarySecurityToken%,
// которые автоматически заполняются при подписании.
// Параметры %SignatureMethod% (алгоритм подписи в формате xml) и
// %DigestMethod% (алгоритм хеширования в формате xml) вычисляются по
// алгоритму открытого ключа сертификата, которым выполняется подписание,
// сначала по таблице, указанной в ПараметрыXMLDSig, затем
// если таблица не заполнена или соответствие не найдено,
// по внутренней таблице соответствия (рекомендуется).
//
// Поддерживаются алгоритмы подписания и хеширования ГОСТ 94…2012.
// Поддерживаются алгоритмы канонизации:
// Exclusive XML Canonicalization 1.0
// http://www.w3.org/2001/10/xml-exc-c14n#
// http://www.w3.org/2001/10/xml-exc-c14n#WithComments
// Canonical XML 1.0
// http://www.w3.org/TR/2001/REC-xml-c14n-20010315#
// http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments
// Canonical XML 1.1
// http://www.w3.org/2006/12/xml-c14n11#
// http://www.w3.org/2006/12/xml-c14n11#WithComments
// Enveloped signature (по факту игнорируется, так как
// не поддерживается пустой URI в элементе SignedInfo.Reference):
// http://www.w3.org/2000/09/xmldsig#enveloped-signature
//
// Сертификат может быть указан в KeyInfo, как base64 значение:
// - либо в виде элемента X509Data.X509Certificate
// - либо в виде элемента KeyInfoReference.Reference или
// SecurityTokenReference.Reference с URI на элемент со значением.
//
// Параметры:
// Параметры - см. ЭлектроннаяПодписьКлиент.ПараметрыКонвертаXML
// - Неопределенно - использовать параметры по умолчанию.
//
// Возвращаемое значение:
// Строка
//
// Пример:
// ПараметрыКонверта = ЭлектроннаяПодписьКлиент.ПараметрыКонвертаXML();
// ПараметрыКонверта.Вариант = "furs.mark.crpt.ru_v1";
// ПараметрыКонверта.СообщениеXML =
// " <getProductDetailsResponse xmlns=""http://warehouse.example.com/ws"">
// | <getProductDetailsResult>
// | <productID>12345</productID>
// | <productName>Стакан граненый</productName>
// | <description>Стакан граненый. 250 мл.</description>
// | <price>9.95</price>
// | <currency>
// | <code>840</code>
// | <alpha3>USD</alpha3>
// | <sign>$</sign>
// | <name>US dollar</name>
// | <accuracy>2</accuracy>
// | </currency>
// | <inStock>true</inStock>
// | </getProductDetailsResult>
// | </getProductDetailsResponse>";
//
// КонвертXML = ЭлектроннаяПодписьКлиент.КонвертXML(Параметры);
//
Функция КонвертXML(Параметры = Неопределено) Экспорт
Возврат ЭлектроннаяПодписьСлужебныйКлиентСервер.КонвертXML(Параметры);
КонецФункции
// Возвращает параметры, которые можно задать для конверта XML.
//
// Возвращаемое значение:
// Структура:
// * Вариант - Строка - вариант типового шаблона XML для обмена с сервисом:
// "furs.mark.crpt.ru_v1" (начальное значение).
// Возможны другие форматы, если удовлетворяют требованиям,
// указанным в описании функции КонвертXML.
//
// * СообщениеXML - Строка - сообщение в формате XML, которое вставлено в шаблон.
// Если не заполнено, остается параметр %MessageXML%.
//
Функция ПараметрыКонвертаXML() Экспорт
Возврат ЭлектроннаяПодписьСлужебныйКлиентСервер.ПараметрыКонвертаXML();
КонецФункции
// Формирует структуру свойств для настройки нестандартной обработки
// конверта XML и алгоритмов подписания и хеширования.
//
// Рекомендуется не заполнять параметры XPathSignedInfo и XPathПодписываемыйТег
// Параметр XPathSignedInfo вычисляется по алгоритмам канонизации,
// а параметр XPathПодписываемыйТег вычисляется по ссылке
// в атрибуте URI элемента SignedInfo.Reference конверта XML.
// Параметры оставлены для обратной совместимости. Если указаны, работает по-старому:
// не выполняется извлечение параметров из конверта XML и их контроль, при этом
// конверт должен содержать алгоритмы канонизации и иметь элементы
// размещения сертификата, как в варианте конверта "furs.mark.crpt.ru_v1".
//
// Не требуется заполнять алгоритмы для использования сертификатов
// с алгоритмами открытого ключа ГОСТ 94, ГОСТ 2001, ГОСТ 2012/256 и ГОСТ 2012/512.
//
// Из сертификата извлекается OIDАлгоритмаОткрытогоКлюча и по нему из переданной таблицы
// определяются идентификаторы и XML-имена алгоритмов подписания и хеширования.
// Алгоритмы подписания и хеширования вычисляются по алгоритму открытого ключа,
// извлекаемого из сертификата, которым выполняется подписание. Сначала
// по переданной таблице, затем если таблица не заполнена или соответствие
// не найдено, по внутренней таблице соответствия (рекомендуется).
//
// Возвращаемое значение:
// Структура:
File diff suppressed because it is too large. Load diff
@@ -228,6 +228,11 @@
ЭтоXMLDSig = (ТипЗнч(Данные) = Тип("Структура")
И Данные.Свойство("ПараметрыXMLDSig"));
Если ЭтоXMLDSig И Не Данные.Свойство("КонвертXML") Тогда
Данные = Новый Структура(Новый ФиксированнаяСтруктура(Данные));
Данные.Вставить("КонвертXML", Данные.КонвертSOAP);
КонецЕсли;
ЭтоCMS = (ТипЗнч(Данные) = Тип("Структура")
И Данные.Свойство("ПараметрыCMS"));
@@ -242,7 +247,7 @@
МенеджерКриптографии.ПарольДоступаКЗакрытомуКлючу = Параметры.ЗначениеПароля;
Попытка
ДвоичныеДанныеРезультата = ЭлектроннаяПодписьСлужебный.Подписать(
Данные.КонвертSOAP,
Данные.КонвертXML,
Данные.ПараметрыXMLDSig,
СертификатКриптографии,
МенеджерКриптографии);
@@ -345,6 +350,13 @@
КонецФункции
// См. ЭлектроннаяПодписьСлужебный.СвойстваКонвертаXML
Функция СвойстваКонвертаXML(Знач КонвертXML, Знач ПараметрыXMLDSig, Знач ПроверкаПодписи) Экспорт
Возврат ЭлектроннаяПодписьСлужебный.СвойстваКонвертаXML(КонвертXML, ПараметрыXMLDSig, ПроверкаПодписи);
КонецФункции
// Только для внутреннего использования.
Функция ДобавитьПодпись(СсылкаНаОбъект, СвойстваПодписи, ИдентификаторФормы, ВерсияОбъекта) Экспорт
@@ -52,7 +52,28 @@
Возврат ОписаниеПрограммы;
КонецЕсли;
Возврат Неопределено;
ОписаниеПрограммы = Неопределено;
Если ИмяКриптопровайдера = "Crypto-Pro GOST R 34.10-2001 KC1 CSP"
Или ИмяКриптопровайдера = "Crypto-Pro GOST R 34.10-2001 KC2 CSP" Тогда
ОписаниеПрограммы = ОписаниеПрограммыПоИмениКриптопровайдера(
"Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider", ОписанияПрограмм);
ИначеЕсли ИмяКриптопровайдера = "Crypto-Pro GOST R 34.10-2012 KC1 CSP"
Или ИмяКриптопровайдера = "Crypto-Pro GOST R 34.10-2012 KC2 CSP" Тогда
ОписаниеПрограммы = ОписаниеПрограммыПоИмениКриптопровайдера(
"Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider", ОписанияПрограмм);
ИначеЕсли ИмяКриптопровайдера = "Crypto-Pro GOST R 34.10-2012 KC1 Strong CSP"
Или ИмяКриптопровайдера = "Crypto-Pro GOST R 34.10-2012 KC2 Strong CSP" Тогда
ОписаниеПрограммы = ОписаниеПрограммыПоИмениКриптопровайдера(
"Crypto-Pro GOST R 34.10-2012 Strong Cryptographic Service Provider", ОписанияПрограмм);
КонецЕсли;
Возврат ОписаниеПрограммы;
КонецФункции
@@ -1301,8 +1322,8 @@
//
// Возвращаемое значение:
// Структура:
// ПолноеИмяМакета - Строка
// ИмяОбъекта - Строка
// * ПолноеИмяМакета - Строка
// * ИмяОбъекта - Строка
//
Функция ОписаниеКомпоненты() Экспорт
@@ -1328,13 +1349,48 @@
КонецФункции
// См. ЭлектроннаяПодписьКлиент.КонвертXML.
Функция КонвертXML(Параметры) Экспорт
Если Параметры = Неопределено Тогда
Параметры = ПараметрыКонвертаXML();
КонецЕсли;
Если Параметры.Вариант = "furs.mark.crpt.ru_v1" Тогда
КонвертXML = КонвертXML1();
Иначе
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Указано неизвестное значение ""%1"" параметра %2 в функции %3'"),
Параметры.Вариант, "Вариант", "КонвертXML");
ВызватьИсключение ТекстОшибки;
КонецЕсли;
Если ЗначениеЗаполнено(Параметры.СообщениеXML) Тогда
КонвертXML = СтрЗаменить(КонвертXML, "%MessageXML%", СокрЛП(Параметры.СообщениеXML));
КонецЕсли;
Возврат КонвертXML;
КонецФункции
// См. ЭлектроннаяПодписьКлиент.ПараметрыКонвертаXML.
Функция ПараметрыКонвертаXML() Экспорт
Результат = Новый Структура;
Результат.Вставить("Вариант", "furs.mark.crpt.ru_v1");
Результат.Вставить("СообщениеXML", "");
Возврат Результат;
КонецФункции
// См. ЭлектроннаяПодписьКлиент.ПараметрыXMLDSig.
Функция ПараметрыXMLDSig() Экспорт
ДанныеАлгоритмаПодписания = Новый Структура;
ДанныеАлгоритмаПодписания.Вставить("XPathSignedInfo", "(//. | //@* | //namespace::*)[ancestor-or-self::*[local-name()='SignedInfo']]");
ДанныеАлгоритмаПодписания.Вставить("XPathПодписываемыйТег", "(//. | //@* | //namespace::*)[ancestor-or-self::soap:Body]");
ДанныеАлгоритмаПодписания.Вставить("XPathSignedInfo", "");
ДанныеАлгоритмаПодписания.Вставить("XPathПодписываемыйТег", "");
ДанныеАлгоритмаПодписания.Вставить("OIDАлгоритмаОткрытогоКлюча", "");
@@ -1368,7 +1424,37 @@
КонецФункции
Функция ПроверитьВыбратьАлгоритмПодписи(СертификатКриптографииBase64, ДанныеАлгоритмаПодписания, ВызыватьИсключение = Ложь) Экспорт
// Преобразует двоичные данные сертификата криптографии
// в корректно отформатированную строку в формате Base64.
//
// Параметры:
// ДанныеСертификата - ДвоичныеДанные - двоичные данные сертификата криптографии.
//
// Возвращаемое значение:
// Строка - двоичные данные сертификата в формате Base64.
//
Функция СертификатКриптографииBase64(ДанныеСертификата) Экспорт
СтрокаBase64 = Base64Строка(ДанныеСертификата);
Значение = СтрЗаменить(СтрокаBase64, Символы.ВК, "");
Значение = СтрЗаменить(Значение, Символы.ПС, "");
Возврат Значение;
КонецФункции
// Параметры:
// СертификатКриптографииBase64 - Строка - Base64 строка.
// ДанныеАлгоритмаПодписания - см. ЭлектроннаяПодписьКлиент.ПараметрыXMLDSig
// ВызыватьИсключение - Булево
// СвойстваКонвертаXML - см. ЭлектроннаяПодписьСлужебный.СвойстваКонвертаXML
//
// Возвращаемое значение:
// Строка - текст ошибки, если заполнена.
//
Функция ПроверитьВыбратьАлгоритмПодписи(СертификатКриптографииBase64, ДанныеАлгоритмаПодписания,
ВызыватьИсключение = Ложь, СвойстваКонвертаXML = Неопределено) Экспорт
OIDАлгоритмаОткрытогоКлюча = АлгоритмПодписиСертификата(
Base64Значение(СертификатКриптографииBase64),, Истина);
@@ -1437,6 +1523,29 @@
Возврат ТекстОшибки;
КонецЕсли;
Если АлгоритмыУказаны
Или СвойстваКонвертаXML = Неопределено
Или Не СвойстваКонвертаXML.ПроверкаПодписи Тогда
Возврат "";
КонецЕсли;
Если СвойстваКонвертаXML.АлгоритмПодписи.Идентификатор
<> ДанныеАлгоритмаПодписания.OIDВыбранногоАлгоритмаПодписи Тогда
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'В документе XML указанный алгоритм подписи
|""%1"" (OID ""%2"")
|не совпадает с алгоритмом подписи в сертификате OID ""%3"".'"),
СвойстваКонвертаXML.АлгоритмПодписи.Имя,
СвойстваКонвертаXML.АлгоритмПодписи.Идентификатор,
ДанныеАлгоритмаПодписания.OIDВыбранногоАлгоритмаПодписи);
Если ВызыватьИсключение Тогда
ВызватьИсключение ТекстОшибки;
КонецЕсли;
Возврат ТекстОшибки;
КонецЕсли;
Возврат "";
КонецФункции
@@ -1473,16 +1582,12 @@
ВызватьИсключение НСтр("ru = 'Некорректный параметр ТипПодписи метода CMSSign компоненты XMLDSig.'");
КонецЕсли;
Если ТипЗнч(Данные) = Тип("Строка") Тогда
ПараметрыКомпоненты.Вставить("ТипВходныхДанных", 0);
ПараметрыКомпоненты.Вставить("Данные", Данные);
Если ТипЗнч(Данные) = Тип("Строка")
Или ТипЗнч(Данные) = Тип("ДвоичныеДанные") Тогда
ИначеЕсли ТипЗнч(Данные) = Тип("ДвоичныеДанные") Тогда
ПараметрыКомпоненты.Вставить("ТипВходныхДанных", 128);
ПараметрыКомпоненты.Вставить("Данные",
СтрСоединить(СтрРазделить(Base64Строка(Данные), Символы.ПС + Символы.ВК, Ложь)));
ПараметрыКомпоненты.Вставить("Данные", Данные);
Иначе
ВызватьИсключение НСтр("ru = 'Некорректный параметр ТипВходныхДанных метода CMSSign компоненты XMLDSig.'");
ВызватьИсключение НСтр("ru = 'Некорректный параметр Данные метода CMSSign компоненты XMLDSig.'");
КонецЕсли;
Если ТипЗнч(ПараметрыCMS.Открепленная) = Тип("Булево") Тогда
@@ -1779,6 +1884,233 @@
КонецФункции
#Область ШаблоныКонвертаXML
// Вариант "furs.mark.crpt.ru_v1".
Функция КонвертXML1()
Возврат
"<soap:Envelope
| xmlns:wsse=""http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd""
| xmlns:wsu=""http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd""
| xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"">
| <soap:Header>
| <wsse:Security soap:actor=""http://smev.gosuslugi.ru/actors/smev"">
| <ds:Signature xmlns:ds=""http://www.w3.org/2000/09/xmldsig#"">
| <SignedInfo xmlns=""http://www.w3.org/2000/09/xmldsig#"">
| <CanonicalizationMethod Algorithm=""http://www.w3.org/2001/10/xml-exc-c14n#""/>
| <SignatureMethod Algorithm=""%SignatureMethod%""/>
| <Reference URI=""#body"">
| <Transforms>
| <Transform Algorithm=""http://www.w3.org/2000/09/xmldsig#enveloped-signature""/>
| <Transform Algorithm=""http://www.w3.org/2001/10/xml-exc-c14n#""/>
| </Transforms>
| <DigestMethod Algorithm=""%DigestMethod%""/>
| <DigestValue>%DigestValue%</DigestValue>
| </Reference>
| </SignedInfo>
| <SignatureValue xmlns=""http://www.w3.org/2000/09/xmldsig#"">
| %SignatureValue%
| </SignatureValue>
| <ds:KeyInfo>
| <wsse:SecurityTokenReference>
| <wsse:Reference URI=""#SenderCertificate""
| ValueType=""http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3""/>
| </wsse:SecurityTokenReference>
| </ds:KeyInfo>
| </ds:Signature>
| <wsse:BinarySecurityToken
| EncodingType=""http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary""
| ValueType=""http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3""
| wsu:Id=""SenderCertificate"">
| %BinarySecurityToken%
| </wsse:BinarySecurityToken>
| </wsse:Security>
| </soap:Header>
| <soap:Body wsu:Id=""body"">
| %MessageXML%
| </soap:Body>
|</soap:Envelope>";
КонецФункции
#КонецОбласти
#Область ОбластьXML
// Параметры:
// СтрокаXML - Строка
// ИмяЭлемента - Строка
//
// Возвращаемое значение:
// см. СвойстваОбластиXML
//
Функция ОбластьXML(СтрокаXML, ИмяЭлемента) Экспорт
Результат = СвойстваОбластиXML(ИмяЭлемента);
ПризнакНачалаОбласти = "<" + ИмяЭлемента;
ПризнакОкончанияОбласти = "</" + ИмяЭлемента + ">";
Позиция = СтрНайти(СтрокаXML, ПризнакНачалаОбласти);
Если Позиция = 0 Тогда
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не найдена элемент ""%1"" в документе XML.'"), ИмяЭлемента);
Результат.ТекстОшибки = ТекстОшибки;
КонецЕсли;
Результат.ПозицияНачала = Позиция;
Текст = Сред(СтрокаXML, Позиция);
Позиция = СтрНайти(Текст, ПризнакНачалаОбласти, , 2);
Если Позиция > 0 Тогда
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Найдено более одного элемента ""%1"" в документе XML.'"), ИмяЭлемента);
Результат.ТекстОшибки = ТекстОшибки;
КонецЕсли;
Позиция = СтрНайти(Текст, ПризнакОкончанияОбласти);
Если Позиция = 0 Тогда
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не найдено окончание элемента ""%1"" в документе XML.'"), ИмяЭлемента);
Результат.ТекстОшибки = ТекстОшибки;
КонецЕсли;
ПозицияСледующейОбласти = Позиция + СтрДлина(ПризнакОкончанияОбласти);
Результат.Текст = Сред(Текст, 1, ПозицияСледующейОбласти - 1);
Результат.ПозицияСледующейОбласти = Результат.ПозицияНачала + ПозицияСледующейОбласти;
Текст = Сред(Текст, 1, Позиция - 1);
Позиция = СтрНайти(Текст, ">");
Если Позиция = 0 Тогда
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не найдено окончание заголовка элемента ""%1"" в документе XML.'"), ИмяЭлемента);
Результат.ТекстОшибки = ТекстОшибки;
КонецЕсли;
Результат.Начало = Сред(Текст, 1, Позиция);
Результат.Конец = ПризнакОкончанияОбласти;
Результат.Содержимое = Сред(Текст, Позиция + 1);
Возврат Результат;
КонецФункции
// Параметры:
// ОбластьXML - см. СвойстваОбластиXML
// Начало - Неопределено
// - Строка
//
// Возвращаемое значение:
// Строка
//
Функция ТекстОбластиXML(ОбластьXML, Начало = Неопределено) Экспорт
ЧастиТекста = Новый Массив;
ЧастиТекста.Добавить(?(Начало = Неопределено, ОбластьXML.Начало, Начало));
ЧастиТекста.Добавить(ОбластьXML.Содержимое);
ЧастиТекста.Добавить(ОбластьXML.Конец);
Результат = СтрСоединить(ЧастиТекста);
Возврат Результат;
КонецФункции
// Параметры:
// ОбластьXML - см. СвойстваОбластиXML
// Алгоритм - см. ЭлектроннаяПодписьСлужебный.АлгоритмКанонизации
// ТекстXML - Строка
//
// Возвращаемое значение:
// Строка
//
Функция НачалоОбластиXMLДляC14N(ОбластьXML, Алгоритм, ТекстXML) Экспорт
Результат = Новый Структура("Начало, ТекстОшибки", , "");
Если Алгоритм.Версия = 1 Тогда
Если ТекстXML = Неопределено Тогда
ТекущаяОбластьXML = ОбластьXML;
Иначе
ТекущаяОбластьXML = ОбластьXML(ТекстXML, ОбластьXML.ИмяЭлемента);
Если ЗначениеЗаполнено(ТекущаяОбластьXML.ТекстОшибки) Тогда
Результат.ТекстОшибки = ТекущаяОбластьXML.ТекстОшибки;
Возврат Результат;
КонецЕсли;
ТекущаяОбластьXML.ПространстваИменДоУзла = ОбластьXML.ПространстваИменДоУзла;
КонецЕсли;
Результат.Начало = РасширенноеНачало(ТекущаяОбластьXML);
Иначе
Результат.Начало = ОбластьXML.Начало;
КонецЕсли;
Возврат Результат;
КонецФункции
// Параметры:
// ОбластьXML - см. СвойстваОбластиXML
//
// Возвращаемое значение:
// Строка
//
Функция РасширенноеНачало(ОбластьXML)
Если Не ЗначениеЗаполнено(ОбластьXML.ПространстваИменДоУзла) Тогда
Возврат ОбластьXML.Начало;
КонецЕсли;
Дополнительные = Новый Массив;
Для Каждого ИмяПространства Из ОбластьXML.ПространстваИменДоУзла Цикл
Позиция = СтрНайти(ИмяПространства, "=""");
ОбъявлениеПространства = Лев(ИмяПространства, Позиция + 1);
Если СтрНайти(ОбластьXML.Начало, ОбъявлениеПространства) > 0 Тогда
Продолжить;
КонецЕсли;
Дополнительные.Добавить(ИмяПространства);
КонецЦикла;
Результат = Лев(ОбластьXML.Начало, СтрДлина(ОбластьXML.ИмяЭлемента) + 1)
+ " " + СтрСоединить(Дополнительные, " ")
+ " " + Сред(ОбластьXML.Начало, СтрДлина(ОбластьXML.ИмяЭлемента) + 2);
Возврат Результат;
КонецФункции
// Параметры:
// ИмяЭлемента - Строка
//
// Возвращаемое значение:
// Структура:
// * ИмяЭлемента - Строка
// * ТекстОшибки - Строка
// * ПозицияНачала - Число
// * ПозицияСледующейОбласти - Число
// * Начало - Строка
// * Содержимое - Строка
// * Конец - Строка
// * ПространстваИменДоУзла - Массив из Строка
// - Неопределено
//
Функция СвойстваОбластиXML(ИмяЭлемента)
Результат = Новый Структура;
Результат.Вставить("ИмяЭлемента", ИмяЭлемента);
Результат.Вставить("ТекстОшибки", "");
Результат.Вставить("ПозицияНачала", 0);
Результат.Вставить("ПозицияСледующейОбласти", 0);
Результат.Вставить("Начало", "");
Результат.Вставить("Содержимое", "");
Результат.Вставить("Конец", "");
Результат.Вставить("Текст", "");
Результат.Вставить("ПространстваИменДоУзла");
Возврат Результат;
КонецФункции
#КонецОбласти
#Область АлгоритмыПодписи
Функция АлгоритмСформированнойПодписи(ДанныеПодписи, ВключаяOID = Ложь, ТолькоOID = Ложь) Экспорт
@@ -2425,7 +2757,7 @@
// Возвращаемое значение:
// Массив из см. НовыйНаборАлгоритмовДляСозданияПодписи
//
Функция НаборыАлгоритмовДляСозданияПодписи()
Функция НаборыАлгоритмовДляСозданияПодписи() Экспорт
Наборы = Новый Массив;
+9 -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="f89e0496-eba4-11eb-2191-0242ac110002">
<mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="5d0a309c-f68d-11eb-bd8d-0242ac110002">
<name>БиблиотекаСтандартныхПодсистем</name>
<synonym>
<key>ru</key>
<value>Библиотека стандартных подсистем, редакция 3.1</value>
</synonym>
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="f89e0497-eba4-11eb-2191-0242ac110002"/>
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="f89e04c8-eba4-11eb-2191-0242ac110002"/>
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="f89e04d2-eba4-11eb-2191-0242ac110002"/>
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="f89e04d3-eba4-11eb-2191-0242ac110002"/>
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="f89e04dc-eba4-11eb-2191-0242ac110002"/>
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="f89e04dd-eba4-11eb-2191-0242ac110002"/>
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="aac3d85a-7d23-4ca7-92af-35c3f2dd6dd6"/>
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="5d0a309d-f68d-11eb-bd8d-0242ac110002"/>
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="5d0a30ce-f68d-11eb-bd8d-0242ac110002"/>
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="5d0a30d8-f68d-11eb-bd8d-0242ac110002"/>
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="5d0a30d9-f68d-11eb-bd8d-0242ac110002"/>
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="5d0a30e2-f68d-11eb-bd8d-0242ac110002"/>
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="5d0a30e3-f68d-11eb-bd8d-0242ac110002"/>
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="50bdec87-1632-4f41-bb9c-4ee421ecf766"/>
<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.5.132</version>
<version>3.1.5.146</version>
<updateCatalogAddress>http://downloads.v8.1c.ru/tmplts/</updateCatalogAddress>
<includeHelpInContents>true</includeHelpInContents>
<usedMobileApplicationFunctionalities>
@@ -1 +1 @@
{6,1,1,5618c07a-eba5-11eb-7a8b-0242ac110002,1,3e224d92-eba5-11eb-938a-0242ac110002,"3.1.5.132","Фирма ""1С""","БиблиотекаСтандартныхПодсистем",6460,1,0,f89e0496-eba4-11eb-2191-0242ac110002,f89e0496-eba4-11eb-2191-0242ac110002,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,4cbbdbaf-1f3a-46cd-8c42-28cdcfa32c06,4cbbdbaf-1f3a-46cd-8c42-28cdcfa32c06,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,f24de2ea-fcda-4052-b90f-e9d84314c4f2,f24de2ea-fcda-4052-b90f-e9d84314c4f2,1,0,ff8ae395-c740-4a30-a048-0d57eef6267f,ff8ae395-c740-4a30-a048-0d57eef6267f,1,0,51d06532-f61a-4ed5-afaa-cc4563633e0c,51d06532-f61a-4ed5-afaa-cc4563633e0c,1,0,0e49d980-581b-459f-a4b0-024e8c97e4c0,0e49d980-581b-459f-a4b0-024e8c97e4c0,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-cf63Line truncated
{6,1,1,ba8a7c22-f68d-11eb-c486-0242ac110002,1,a2dd95d2-f68d-11eb-1388-0242ac110002,"3.1.5.146","Фирма ""1С""","БиблиотекаСтандартныхПодсистем",6460,1,0,5d0a309c-f68d-11eb-bd8d-0242ac110002,5d0a309c-f68d-11eb-bd8d-0242ac110002,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,4cbbdbaf-1f3a-46cd-8c42-28cdcfa32c06,4cbbdbaf-1f3a-46cd-8c42-28cdcfa32c06,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,f24de2ea-fcda-4052-b90f-e9d84314c4f2,f24de2ea-fcda-4052-b90f-e9d84314c4f2,1,0,ff8ae395-c740-4a30-a048-0d57eef6267f,ff8ae395-c740-4a30-a048-0d57eef6267f,1,0,51d06532-f61a-4ed5-afaa-cc4563633e0c,51d06532-f61a-4ed5-afaa-cc4563633e0c,1,0,0e49d980-581b-459f-a4b0-024e8c97e4c0,0e49d980-581b-459f-a4b0-024e8c97e4c0,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-cf63Line truncated
@@ -32,7 +32,7 @@
УстановитьПривилегированныйРежим(Истина);
НаименованиеКорреспондента = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(УзелИнформационнойБазы, "Наименование");
НаименованиеКорреспондента = Строка(УзелИнформационнойБазы);
ВидТранспортаСообщений = РегистрыСведений.НастройкиТранспортаОбменаДанными.ВидТранспортаСообщенийОбменаПоУмолчанию(УзелИнформационнойБазы);
ВыполнитьОтправкуДанных = РегистрыСведений.ОбщиеНастройкиУзловИнформационныхБаз.ВыполнитьОтправкуДанных(УзелИнформационнойБазы);
@@ -37,7 +37,7 @@
КонецЕсли;
НовыйГрафикРаботы = Справочники.Календари.СоздатьЭлемент();
НовыйГрафикРаботы.Наименование = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ПроизводственныйКалендарь, "Наименование");
НовыйГрафикРаботы.Наименование = Строка(ПроизводственныйКалендарь);
НовыйГрафикРаботы.ПроизводственныйКалендарь = ПроизводственныйКалендарь;
НовыйГрафикРаботы.СпособЗаполнения = Перечисления.СпособыЗаполненияГрафикаРаботы.ПоНеделям;
НовыйГрафикРаботы.ДатаНачала = НачалоГода(ТекущаяДатаСеанса());
@@ -2133,14 +2133,17 @@
&НаСервере
Процедура ДозаполнитьРеквизитыИзСведений(Сведения, Реквизиты)
НезаполненныеРеквизиты = Новый Структура;
Для Каждого Реквизит Из Реквизиты Цикл
Если Не ЗначениеЗаполнено(ЭтотОбъект[Реквизит.Ключ]) Тогда
ЭтотОбъект[Реквизит.Ключ] = Сведения[Реквизит.Ключ];
Если ЗначениеЗаполнено(ЭтотОбъект[Реквизит.Ключ]) Тогда
Продолжить;
КонецЕсли;
НезаполненныеРеквизиты.Вставить(Реквизит.Ключ, ЭтотОбъект[Реквизит.Ключ]);
КонецЦикла;
ЗаполнитьЗначенияСвойств(НезаполненныеРеквизиты, Сведения);
ЗаполнитьЗначенияСвойств(ЭтотОбъект, НезаполненныеРеквизиты);
КонецПроцедуры
&НаСервере
@@ -13019,6 +13019,19 @@
КонецЕсли;
ИначеЕсли ОбщегоНазначения.ЭтоПланСчетов(ОбъектМД) Тогда
Если Не (ОбъектМД.Реквизиты.Найти(Реквизит.Ключ) <> Неопределено
Или ОбъектМД.ПризнакиУчета.Найти(Реквизит.Ключ) <> Неопределено
Или ОбменДаннымиСервер.ЭтоСтандартныйРеквизит(ОбъектМД.СтандартныеРеквизиты, Реквизит.Ключ)
Или ЭтоОбщийРеквизит(Реквизит.Ключ, ОбъектМД.ПолноеИмя(), ТаблицаОбщихРеквизитов)) Тогда
СтрокаСообщения = НСтр("ru = 'Неправильно указаны реквизиты шапки объекта ""%1"". Реквизит ""%2"" не существует.'");
СтрокаСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаСообщения, Строка(ОбъектМД), Реквизит.Ключ);
ЗаписатьВПротоколВыполнения(СтрокаСообщения);
КонецЕсли;
Иначе
Если Не (ОбъектМД.Реквизиты.Найти(Реквизит.Ключ) <> Неопределено
@@ -13037,8 +13050,8 @@
Иначе
// Табличная часть, стандартная табличная часть, движения.
МетаТаблица = МетаТабличнаяЧастьРеквизитовРегистрацииОбъектов(ОбъектМД, СтрокаТаблицы.ИмяТабличнойЧасти);
Если МетаТаблица = Неопределено Тогда
МетаТаблицы = МетаТабличнаяЧастьРеквизитовРегистрацииОбъектов(ОбъектМД, СтрокаТаблицы.ИмяТабличнойЧасти);
Если МетаТаблицы = Неопределено Тогда
ЗаписатьВПротоколВыполнения(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Табличная часть (стандартная табличная часть, движения) ""%1"" объекта ""%2"" не существует.'"),
СтрокаТаблицы.ИмяТабличнойЧасти, ОбъектМД));
@@ -13048,7 +13061,15 @@
// Пробуем найти каждый реквизит хоть где-нибудь.
Для Каждого Реквизит Из СтрокаТаблицы.СтруктураРеквизитовРегистрации Цикл
Если Не РеквизитНайденВТабличнойЧастиРеквизитовРегистрацииОбъектов(МетаТаблица, Реквизит.Ключ) Тогда
РеквизитНайден = Ложь;
Для Каждого МетаТаблица Из МетаТаблицы Цикл
РеквизитНайден = РеквизитНайденВТабличнойЧастиРеквизитовРегистрацииОбъектов(МетаТаблица, Реквизит.Ключ);
Если РеквизитНайден Тогда
Прервать;
КонецЕсли;
КонецЦикла;
Если Не РеквизитНайден Тогда
ЗаписатьВПротоколВыполнения(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Реквизит ""%3"" не существует в табличной части (стандартной табличной части, движениях) ""%1"" объекта ""%2"".'"),
СтрокаТаблицы.ИмяТабличнойЧасти, ОбъектМД, Реквизит.Ключ));
@@ -13073,6 +13094,7 @@
МетаТест = Новый Структура("ТабличныеЧасти, СтандартныеТабличныеЧасти, Движения");
ЗаполнитьЗначенияСвойств(МетаТест, МетаданныеТекущегоОбъекта);
МетаТаблицы = Новый Массив;
ИмяКандидата = ВРег(ИмяИскомойТабличнойЧасти);
@@ -13082,12 +13104,15 @@
Для Каждого МетаТаблица Из МетаКоллекцияТаблиц Цикл
Если ВРег(МетаТаблица.Имя) = ИмяКандидата Тогда
Возврат МетаТаблица;
МетаТаблицы.Добавить(МетаТаблица);
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;
Если МетаТаблицы.Количество() > 0 Тогда
Возврат МетаТаблицы;
КонецЕсли;
Возврат Неопределено;
@@ -13099,6 +13124,16 @@
ЗаполнитьЗначенияСвойств(МетаТест, МетаданныеТаблицы);
ИмяКандидата = ВРег(ИмяИскомогоРеквизита);
Корреспонденция = Ложь;
Если ТипЗнч(МетаданныеТаблицы) = Тип("ОбъектМетаданных") И ОбщегоНазначения.ЭтоРегистрБухгалтерии(МетаданныеТаблицы) Тогда
Корреспонденция = МетаданныеТаблицы.Корреспонденция;
// Субконто Дт и Кт отсутствуют в измерениях, их не проверить.
// Счет - стандартный реквизит без признака баланса.
Если ИмяКандидата = "СУБКОНТОДТ" Или ИмяКандидата = "СУБКОНТОКТ"
Или ИмяКандидата = "СЧЕТДТ" Или ИмяКандидата = "СЧЕТКТ" Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
Для Каждого КлючЗначение Из МетаТест Цикл
МетаКоллекцияРеквизитов = КлючЗначение.Значение; // КоллекцияОбъектовМетаданных, ОписанияСтандартныхРеквизитов
@@ -13106,9 +13141,18 @@
Если МетаКоллекцияРеквизитов <> Неопределено Тогда
Для Каждого МетаРеквизит Из МетаКоллекцияРеквизитов Цикл
Если ВРег(МетаРеквизит.Имя) = ИмяКандидата Тогда
Возврат Истина;
КонецЕсли;
Если (КлючЗначение.Ключ = "Измерения" Или КлючЗначение.Ключ = "Ресурсы") И Корреспонденция И НЕ МетаРеквизит.Балансовый Тогда
Если ВРег(МетаРеквизит.Имя) + "ДТ" = ИмяКандидата
Или ВРег(МетаРеквизит.Имя) + "КТ" = ИмяКандидата Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
@@ -17871,4 +17915,4 @@
#Иначе
ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'");
#КонецЕсли
#КонецЕсли
@@ -1706,6 +1706,7 @@
Функция РазрабатываемыеПодсистемы() Экспорт
Результат = Новый Массив;
ОбновлениеИнформационнойБазыПереопределяемый.ПриФормированииСпискаРазрабатываемыхПодсистем(Результат);
ОбновлениеИнформационнойБазыПереопределяемый.ПриФормированиеСпискаРазрабатываемыхПодсистем(Результат);
Возврат Результат;
@@ -11,6 +11,10 @@
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Не Параметры.Свойство("Узел") Тогда
ВызватьИсключение НСтр("ru = 'Обработка не предназначена для непосредственного использования.'");
КонецЕсли;
Узел = Параметры.Узел;
АдресСтруктурыУзла = Параметры.АдресСтруктурыУзла;
@@ -3809,21 +3809,54 @@
<items xsi:type="form:FormGroup">
<name>БИПГруппаИнтеграцияСПлатежнымиСистемами</name>
<id>1921</id>
<items xsi:type="form:Button">
<name>БИПНастройкаИнтеграцииСПлатежнымиСистемами</name>
<id>1923</id>
<items xsi:type="form:FormGroup">
<name>БИПГруппаНастройкиИнтеграции</name>
<id>1941</id>
<items xsi:type="form:Button">
<name>БИПНастройкаИнтеграцииСПлатежнымиСистемами</name>
<id>1923</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>БИПНастройкаИнтеграцииСПлатежнымиСистемамиРасширеннаяПодсказка</name>
<id>1924</id>
<title>
<key>ru</key>
<value>Настройка подключения и обмена данными с платежными системами.</value>
</title>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>Hyperlink</type>
<commandName>Form.Command.БИПНастройкаИнтеграцииСПлатежнымиСистемами</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<toolTipRepresentation>ShowBottom</toolTipRepresentation>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Настройки интеграции</value>
</title>
<width>43</width>
<extendedTooltip>
<name>БИПНастройкаИнтеграцииСПлатежнымиСистемамиРасширеннаяПодсказка</name>
<id>1924</id>
<title>
<key>ru</key>
<value>Настройка подключения и обмена данными с платежными системами.</value>
</title>
<name>БИПГруппаНастройкиИнтеграцииРасширеннаяПодсказка</name>
<id>1942</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
@@ -3831,15 +3864,99 @@
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>Hyperlink</type>
<commandName>Form.Command.БИПНастройкаИнтеграцииСПлатежнымиСистемами</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<toolTipRepresentation>ShowBottom</toolTipRepresentation>
<representationInContextMenu>Auto</representationInContextMenu>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>БИПГруппаДлительностьОперации</name>
<id>1943</id>
<items xsi:type="form:FormField">
<name>БИПДлительностьОперацииПлатежнойСистемы</name>
<id>1945</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>БИПДлительностьОперацииПлатежнойСистемы</segments>
</dataPath>
<toolTip>
<key>ru</key>
<value>Длительность ожидания подтверждения
оплаты покупателем. (количество секунд)</value>
</toolTip>
<toolTipRepresentation>ShowBottom</toolTipRepresentation>
<handlers>
<event>OnChange</event>
<name>БИПДлительностьОперацииПлатежнойСистемыПриИзменении</name>
</handlers>
<extendedTooltip>
<name>БИПДлительностьОперацииПлатежнойСистемыРасширеннаяПодсказка</name>
<id>1947</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>БИПДлительностьОперацииПлатежнойСистемыКонтекстноеМеню</name>
<id>1946</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<width>14</width>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<textSize>Normal</textSize>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Длительность операции</value>
</title>
<extendedTooltip>
<name>БИПГруппаДлительностьОперацииРасширеннаяПодсказка</name>
<id>1944</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
@@ -3863,7 +3980,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>Vertical</group>
<group>AlwaysHorizontal</group>
<behavior>Collapsible</behavior>
<collapsed>true</collapsed>
<controlRepresentation>Button</controlRepresentation>
@@ -4394,6 +4511,26 @@
<common>true</common>
</edit>
</attributes>
<attributes>
<name>БИПДлительностьОперацииПлатежнойСистемы</name>
<title>
<key>ru</key>
<value>Длительность операции</value>
</title>
<id>30</id>
<valueType>
<types>Number</types>
<numberQualifiers>
<precision>3</precision>
</numberQualifiers>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<formCommands>
<name>БИПВойтиИлиВыйти</name>
<title>
@@ -141,6 +141,16 @@
Элементы.БИПГруппаИнтеграцияСКоннект.Видимость = Ложь;
КонецЕсли;
// Дополнительная проверка необходимо, т.к. программа может содержать версию БИП
// ниже чем 2.6.1.25. Проверка будет удалена при переходе на новую редакцию БСП.
Если ОбщегоНазначения.ПодсистемаСуществует("ИнтернетПоддержкаПользователей.ИнтеграцияСПлатежнымиСистемами") Тогда
МодульИнтернетПоддержкаПользователейКлиентСервер = ОбщегоНазначения.ОбщийМодуль("ИнтернетПоддержкаПользователейКлиентСервер");
Если ОбщегоНазначенияКлиентСервер.СравнитьВерсии(
МодульИнтернетПоддержкаПользователейКлиентСервер.ВерсияБиблиотеки(), "2.6.1.25") < 0 Тогда
Элементы.БИПДлительностьОперацииПлатежнойСистемы.Видимость = Ложь;
КонецЕсли;
КонецЕсли;
НастройкиПрограммыПереопределяемый.ИнтернетПоддержкаИСервисыПриСозданииНаСервере(ЭтотОбъект);
Элементы.ГруппаОбсуждения.Видимость = ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Обсуждения");
@@ -427,6 +437,18 @@
КонецПроцедуры
&НаКлиенте
Процедура БИПДлительностьОперацииПлатежнойСистемыПриИзменении(Элемент)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ИнтернетПоддержкаПользователей.ИнтеграцияСПлатежнымиСистемами") Тогда
МодульИнтеграцияСПлатежнымиСистемамиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ИнтеграцияСПлатежнымиСистемамиКлиент");
МодульИнтеграцияСПлатежнымиСистемамиКлиент.БИПДлительностьОперацииПлатежнойСистемыПриИзменении(
ЭтотОбъект,
Элемент);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#КонецОбласти
@@ -5,7 +5,6 @@
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
#Область ОписаниеПеременных
&НаКлиенте
@@ -19,88 +18,75 @@
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РегламентныеЗадания") Тогда
Элементы.ГруппаБлокировкаРаботыСВнешнимиРесурсами.Видимость =
РегламентныеЗаданияСервер.РаботаСВнешнимиРесурсамиЗаблокирована();
Элементы.ГруппаОбработкаРегламентныеИФоновыеЗадания.Видимость =
Пользователи.ЭтоПолноправныйПользователь(, Истина);
Элементы.ГруппаБлокировкаРаботыСВнешнимиРесурсами.Видимость = РегламентныеЗаданияСервер.РаботаСВнешнимиРесурсамиЗаблокирована();
Элементы.ГруппаОбработкаРегламентныеИФоновыеЗадания.Видимость = Пользователи.ЭтоПолноправныйПользователь( ,
Истина);
Иначе
Элементы.ГруппаОбработкаРегламентныеИФоновыеЗадания.Видимость = Ложь;
Элементы.ГруппаБлокировкаРаботыСВнешнимиРесурсами.Видимость = Ложь;
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеИтогамиИАгрегатами") Тогда
Элементы.ГруппаОбработкаУправлениеИтогамиИАгрегатамиОткрыть.Видимость =
Пользователи.ЭтоПолноправныйПользователь()
Элементы.ГруппаОбработкаУправлениеИтогамиИАгрегатамиОткрыть.Видимость = Пользователи.ЭтоПолноправныйПользователь()
И Не ОбщегоНазначения.РазделениеВключено();
Иначе
Элементы.ГруппаОбработкаУправлениеИтогамиИАгрегатамиОткрыть.Видимость = Ложь;
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РезервноеКопированиеИБ") Тогда
Элементы.ГруппаРезервноеКопированиеИВосстановление.Видимость =
Пользователи.ЭтоПолноправныйПользователь(, Истина)
И Не ОбщегоНазначения.РазделениеВключено()
И Не ОбщегоНазначения.КлиентПодключенЧерезВебСервер()
Элементы.ГруппаРезервноеКопированиеИВосстановление.Видимость = Пользователи.ЭтоПолноправныйПользователь( ,
Истина) И Не ОбщегоНазначения.РазделениеВключено() И Не ОбщегоНазначения.КлиентПодключенЧерезВебСервер()
И ОбщегоНазначения.ЭтоWindowsКлиент();
ОбновитьНастройкиРезервногоКопирования();
Иначе
Элементы.ГруппаРезервноеКопированиеИВосстановление.Видимость = Ложь;
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ОценкаПроизводительности") Тогда
Элементы.ГруппаОценкаПроизводительности.Видимость =
Пользователи.ЭтоПолноправныйПользователь(, Истина);
Элементы.ГруппаОценкаПроизводительности.Видимость = Пользователи.ЭтоПолноправныйПользователь( , Истина);
Иначе
Элементы.ГруппаОценкаПроизводительности.Видимость = Ложь;
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов") Тогда
Элементы.ГруппаОбработкаГрупповоеИзменениеОбъектов.Видимость =
Пользователи.ЭтоПолноправныйПользователь();
Элементы.ГруппаОбработкаГрупповоеИзменениеОбъектов.Видимость = Пользователи.ЭтоПолноправныйПользователь();
Иначе
Элементы.ГруппаОбработкаГрупповоеИзменениеОбъектов.Видимость = Ложь;
КонецЕсли;
Если Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПоискИУдалениеДублей") Тогда
Элементы.ГруппаПоискИУдалениеДублей.Видимость = Ложь;
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки") Тогда
Элементы.ГруппаДополнительныеОтчетыИОбработки.Видимость =
НаборКонстант.ИспользоватьДополнительныеОтчетыИОбработки;
Элементы.ГруппаДополнительныеОтчетыИОбработки.Видимость = НаборКонстант.ИспользоватьДополнительныеОтчетыИОбработки;
Иначе
Элементы.ГруппаДополнительныеОтчетыИОбработки.Видимость = Ложь;
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ОбновлениеКонфигурации") Тогда
Элементы.ГруппаУстановленныеИсправления.Видимость =
Пользователи.ЭтоПолноправныйПользователь();
Элементы.ГруппаУстановленныеИсправления.Видимость = Пользователи.ЭтоПолноправныйПользователь();
Если СтандартныеПодсистемыСервер.ЭтоБазоваяВерсияКонфигурации()
И Не СтандартныеПодсистемыСервер.ДоступнаУстановкаПодписанныхРасширенийВБазовойВерсии() Тогда
Элементы.УстановкаОбновлений.Заголовок = НСтр("ru = 'Установка обновлений'");
Элементы.УстановкаОбновлений.РасширеннаяПодсказка.Заголовок =
НСтр("ru = 'Обновление программы из файла на локальном диске или в сетевой папке.'");
Элементы.УстановкаОбновлений.РасширеннаяПодсказка.Заголовок = НСтр(
"ru = 'Обновление программы из файла на локальном диске или в сетевой папке.'");
КонецЕсли;
Иначе
Элементы.ГруппаУстановкаОбновлений.Видимость = Ложь;
Элементы.ГруппаУстановленныеИсправления.Видимость = Ложь;
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("ИнтернетПоддержкаПользователей.ОблачныйАрхив") Тогда
МодульОблачныйАрхив = ОбщегоНазначения.ОбщийМодуль("ОблачныйАрхив");
МодульОблачныйАрхив.ПанельАдминистрированияБСП_ПриСозданииНаСервере(ЭтотОбъект);
КонецЕсли;
Если Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонтрольВеденияУчета") Тогда
Если Элементы.Найти("ПравилПроверкиУчета") <> Неопределено Тогда
Элементы.ПравилаПроверкиУчета.Видимость = Ложь;
КонецЕсли;
КонецЕсли;
Если ОбщегоНазначения.ИнформационнаяБазаФайловая() Или ОбщегоНазначения.РазделениеВключено() Тогда
Элементы.ГруппаНастройкаПриоритетаОбновления.Видимость = Ложь;
Иначе
@@ -112,36 +98,21 @@
// Обновление состояния элементов.
УстановитьДоступность();
НастройкиПрограммыПереопределяемый.ОбслуживаниеПриСозданииНаСервере(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ИнтернетПоддержкаПользователей.ОблачныйАрхив") Тогда
МодульОблачныйАрхивКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ОблачныйАрхивКлиент");
МодульОблачныйАрхивКлиент.ПанельАдминистрированияБСП_ПриОткрытии(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = "ЗакрытаФормаНастройкиРезервногоКопирования"
И ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.РезервноеКопированиеИБ") Тогда
Если ИмяСобытия = "ЗакрытаФормаНастройкиРезервногоКопирования" И ОбщегоНазначенияКлиент.ПодсистемаСуществует(
"СтандартныеПодсистемы.РезервноеКопированиеИБ") Тогда
ОбновитьНастройкиРезервногоКопирования();
ИначеЕсли ИмяСобытия = "РазрешенаРаботаСВнешнимиРесурсами" Тогда
Элементы.ГруппаБлокировкаРаботыСВнешнимиРесурсами.Видимость = Ложь;
КонецЕсли;
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ИнтернетПоддержкаПользователей.ОблачныйАрхив") Тогда
МодульОблачныйАрхивКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ОблачныйАрхивКлиент");
МодульОблачныйАрхивКлиент.ПанельАдминистрированияБСП_ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
@@ -176,35 +147,6 @@
УстановитьКоличествоПотоковОбновления();
КонецПроцедуры
#Область ИнтернетПоддержкаПользователей_ОблачныйАрхив
&НаКлиенте
Процедура ОблачныйАрхивОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Истина;
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ИнтернетПоддержкаПользователей.ОблачныйАрхив") Тогда
МодульОблачныйАрхивКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ОблачныйАрхивКлиент");
МодульОблачныйАрхивКлиент.ОбработкаНавигационнойСсылки(
ЭтотОбъект, Элемент, НавигационнаяСсылкаФорматированнойСтроки,
СтандартнаяОбработка, Новый Структура);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СпособРезервногоКопированияПриИзменении(Элемент)
// В зависимости от состояния, вывести правильную страницу.
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ИнтернетПоддержкаПользователей.ОблачныйАрхив") Тогда
МодульОблачныйАрхивКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ОблачныйАрхивКлиент");
МодульОблачныйАрхивКлиент.ПанельАдминистрированияБСП_СпособРезервногоКопированияПриИзменении(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#Область ОбработчикиКомандФормы
@@ -223,40 +165,6 @@
ОткрытьФорму("Обработка.РезультатыОбновленияПрограммы.Форма.ИндикацияХодаОтложенногоОбновленияИБ", ПараметрыФормы);
КонецПроцедуры
#Область ИнтернетПоддержкаПользователей_ОблачныйАрхив
&НаКлиенте
Процедура ПодключитьСервисОблачныйАрхив(Команда)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ИнтернетПоддержкаПользователей.ОблачныйАрхив") Тогда
МодульОблачныйАрхивКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ОблачныйАрхивКлиент");
МодульОблачныйАрхивКлиент.ПодключитьСервисОблачныйАрхив();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОблачныйАрхивВосстановлениеИзРезервнойКопииНажатие(Элемент)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ИнтернетПоддержкаПользователей.ОблачныйАрхив") Тогда
МодульОблачныйАрхивКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ОблачныйАрхивКлиент");
МодульОблачныйАрхивКлиент.ВосстановлениеИзРезервнойКопии();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОблачныйАрхивНастройкаРезервногоКопированияНажатие(Элемент)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ИнтернетПоддержкаПользователей.ОблачныйАрхив") Тогда
МодульОблачныйАрхивКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ОблачныйАрхивКлиент");
МодульОблачныйАрхивКлиент.НастройкаРезервногоКопирования();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
@@ -266,29 +174,29 @@
&НаКлиенте
Процедура Подключаемый_ПриИзмененииРеквизита(Элемент, НеобходимоОбновлятьИнтерфейс = Истина)
ИмяКонстанты = ПриИзмененииРеквизитаСервер(Элемент.Имя);
ОбновитьПовторноИспользуемыеЗначения();
Если НеобходимоОбновлятьИнтерфейс Тогда
ОбновитьИнтерфейс = Истина;
ПодключитьОбработчикОжидания("ОбновитьИнтерфейсПрограммы", 2, Истина);
КонецЕсли;
Если ИмяКонстанты <> "" Тогда
Оповестить("Запись_НаборКонстант", Новый Структура, ИмяКонстанты);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьИнтерфейсПрограммы()
Если ОбновитьИнтерфейс = Истина Тогда
ОбновитьИнтерфейс = Ложь;
ОбщегоНазначенияКлиент.ОбновитьИнтерфейсПрограммы();
КонецЕсли;
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
@@ -296,13 +204,13 @@
&НаСервере
Функция ПриИзмененииРеквизитаСервер(ИмяЭлемента)
РеквизитПутьКДанным = Элементы[ИмяЭлемента].ПутьКДанным;
ИмяКонстанты = СохранитьЗначениеРеквизита(РеквизитПутьКДанным);
УстановитьДоступность(РеквизитПутьКДанным);
ОбновитьПовторноИспользуемыеЗначения();
Возврат ИмяКонстанты;
КонецФункции
////////////////////////////////////////////////////////////////////////////////
@@ -326,62 +234,63 @@
&НаСервере
Функция СохранитьЗначениеРеквизита(РеквизитПутьКДанным)
ЧастиИмени = СтрРазделить(РеквизитПутьКДанным, ".");
Если ЧастиИмени.Количество() <> 2 Тогда
Возврат "";
КонецЕсли;
ИмяКонстанты = ЧастиИмени[1];
КонстантаМенеджер = Константы[ИмяКонстанты];
КонстантаЗначение = НаборКонстант[ИмяКонстанты];
Если КонстантаМенеджер.Получить() <> КонстантаЗначение Тогда
КонстантаМенеджер.Установить(КонстантаЗначение);
КонецЕсли;
Возврат ИмяКонстанты;
КонецФункции
&НаСервере
Процедура УстановитьДоступность(РеквизитПутьКДанным = "")
Если Не Пользователи.ЭтоПолноправныйПользователь(, Истина) Тогда
Если Не Пользователи.ЭтоПолноправныйПользователь( , Истина) Тогда
Возврат;
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ОценкаПроизводительности")
И (РеквизитПутьКДанным = "НаборКонстант.ВыполнятьЗамерыПроизводительности"
Или РеквизитПутьКДанным = "") Тогда
ЭлементОбработкаОценкаПроизводительностиИмпортЗамеровПроизводительности = Элементы.Найти("ОбработкаОценкаПроизводительностиИмпортЗамеровПроизводительности");
ЭлементОбработкаОценкаПроизводительностиЭкспортДанных = Элементы.Найти("ОбработкаОценкаПроизводительностиЭкспортДанных");
ЭлементСправочникПрофилиКлючевыхОперацийОткрытьСписок = Элементы.Найти("СправочникПрофилиКлючевыхОперацийОткрытьСписок");
ЭлементОбработкаНастройкиОценкиПроизводительности = Элементы.Найти("ОбработкаНастройкиОценкиПроизводительности");
Если (ЭлементОбработкаНастройкиОценкиПроизводительности <> Неопределено
И ЭлементОбработкаОценкаПроизводительностиЭкспортДанных <> Неопределено
И ЭлементСправочникПрофилиКлючевыхОперацийОткрытьСписок <> Неопределено
И ЭлементОбработкаОценкаПроизводительностиИмпортЗамеровПроизводительности <> Неопределено
И НаборКонстант.Свойство("ВыполнятьЗамерыПроизводительности")) Тогда
ЭлементОбработкаНастройкиОценкиПроизводительности.Доступность = НаборКонстант.ВыполнятьЗамерыПроизводительности;
ЭлементОбработкаОценкаПроизводительностиЭкспортДанных.Доступность = НаборКонстант.ВыполнятьЗамерыПроизводительности;
ЭлементСправочникПрофилиКлючевыхОперацийОткрытьСписок.Доступность = НаборКонстант.ВыполнятьЗамерыПроизводительности;
ЭлементОбработкаОценкаПроизводительностиИмпортЗамеровПроизводительности.Доступность = НаборКонстант.ВыполнятьЗамерыПроизводительности;
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ОценкаПроизводительности") И (РеквизитПутьКДанным
= "НаборКонстант.ВыполнятьЗамерыПроизводительности" Или РеквизитПутьКДанным = "") Тогда
ЭлементОбработкаОценкаПроизводительностиИмпортЗамеровПроизводительности = Элементы.Найти(
"ОбработкаОценкаПроизводительностиИмпортЗамеровПроизводительности");
ЭлементОбработкаОценкаПроизводительностиЭкспортДанных = Элементы.Найти(
"ОбработкаОценкаПроизводительностиЭкспортДанных");
ЭлементСправочникПрофилиКлючевыхОперацийОткрытьСписок = Элементы.Найти(
"СправочникПрофилиКлючевыхОперацийОткрытьСписок");
ЭлементОбработкаНастройкиОценкиПроизводительности = Элементы.Найти("ОбработкаНастройкиОценкиПроизводительности");
Если (ЭлементОбработкаНастройкиОценкиПроизводительности <> Неопределено
И ЭлементОбработкаОценкаПроизводительностиЭкспортДанных <> Неопределено
И ЭлементСправочникПрофилиКлючевыхОперацийОткрытьСписок <> Неопределено
И ЭлементОбработкаОценкаПроизводительностиИмпортЗамеровПроизводительности <> Неопределено
И НаборКонстант.Свойство("ВыполнятьЗамерыПроизводительности")) Тогда
ЭлементОбработкаНастройкиОценкиПроизводительности.Доступность = НаборКонстант.ВыполнятьЗамерыПроизводительности;
ЭлементОбработкаОценкаПроизводительностиЭкспортДанных.Доступность = НаборКонстант.ВыполнятьЗамерыПроизводительности;
ЭлементСправочникПрофилиКлючевыхОперацийОткрытьСписок.Доступность = НаборКонстант.ВыполнятьЗамерыПроизводительности;
ЭлементОбработкаОценкаПроизводительностиИмпортЗамеровПроизводительности.Доступность = НаборКонстант.ВыполнятьЗамерыПроизводительности;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьНастройкиРезервногоКопирования()
Если Не ОбщегоНазначения.РазделениеВключено()
И Пользователи.ЭтоПолноправныйПользователь(, Истина) Тогда
Если Не ОбщегоНазначения.РазделениеВключено() И Пользователи.ЭтоПолноправныйПользователь( , Истина) Тогда
МодульРезервноеКопированиеИБСервер = ОбщегоНазначения.ОбщийМодуль("РезервноеКопированиеИБСервер");
Элементы.НастройкаРезервногоКопированияИБ.РасширеннаяПодсказка.Заголовок = МодульРезервноеКопированиеИБСервер.ТекущаяНастройкаРезервногоКопирования();
КонецЕсли;
КонецПроцедуры
&НаСервере
@@ -391,18 +300,4 @@
МодульРегламентныеЗаданияСервер.РазблокироватьРаботуСВнешнимиРесурсами();
КонецПроцедуры
#Область ИнтернетПоддержкаПользователей_ОблачныйАрхив
&НаКлиенте
Процедура Подключаемый_ПроверитьСостояниеОблачногоАрхива()
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ИнтернетПоддержкаПользователей.ОблачныйАрхив") Тогда
МодульОблачныйАрхивКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ОблачныйАрхивКлиент");
МодульОблачныйАрхивКлиент.ПанельАдминистрированияБСП_ПроверитьСостояниеОблачногоАрхива(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#КонецОбласти
@@ -534,7 +534,7 @@
РежимВыгрузкиДанных = "ОбычнаяВыгрузка";
КонецЕсли;
НаименованиеПриложения = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(УзелОбмена, "Наименование");
НаименованиеПриложения = Строка(УзелОбмена);
Параметры.Свойство("ЭтоОбменСПриложениемВСервисе", ЭтоОбменСПриложениемВСервисе);
Параметры.Свойство("ОбластьДанныхКорреспондента", ОбластьДанныхКорреспондента);
@@ -100,7 +100,7 @@
ПроверятьРасхождениеВерсий = Истина;
НаименованиеКорреспондента = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.УзелИнформационнойБазы, "Наименование");
НаименованиеКорреспондента = Строка(Объект.УзелИнформационнойБазы);
УстановитьЗаголовокФормы();
@@ -663,7 +663,7 @@
Если Результат.Отказ Тогда
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось загрузить данные из ""%1"" (этап автоматического сопоставления данных).'"),
ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Корреспондент, "Наименование"));
Строка(Корреспондент));
КонецЕсли;
ТаблицаИнформацииСтатистики = ПомощникИнтерактивногоОбменаДанными.ТаблицаИнформацииСтатистики();
@@ -282,7 +282,7 @@
ПараметрыОбработчика.Отказ = Истина;
ПараметрыОбработчика.СообщениеОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Перед запуском обмена данными необходимо завершить настройку синхронизации в программе ""%1"".'"),
ОбщегоНазначения.ЗначениеРеквизитаОбъекта(НастройкиВыгрузки.Корреспондент, "Наименование"));
Строка(НастройкиВыгрузки.Корреспондент));
ПродолжитьОжидание = Ложь;
Возврат;
КонецЕсли;
@@ -292,7 +292,7 @@
ПараметрыОбработчика.Отказ = Истина;
ПараметрыОбработчика.СообщениеОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Перед запуском обмена данными необходимо завершить сопоставление данных в программе ""%1"".'"),
ОбщегоНазначения.ЗначениеРеквизитаОбъекта(НастройкиВыгрузки.Корреспондент, "Наименование"));
Строка(НастройкиВыгрузки.Корреспондент));
ПродолжитьОжидание = Ложь;
Возврат;
КонецЕсли;
@@ -13,7 +13,7 @@
УзелОбмена = Параметры.УзелОбмена;
НаименованиеКорреспондента = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(УзелОбмена, "Наименование");
НаименованиеКорреспондента = Строка(УзелОбмена);
Элементы.ДекорацияНадписьОжидание.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
Элементы.ДекорацияНадписьОжидание.Заголовок, НаименованиеКорреспондента);
@@ -258,7 +258,7 @@
Параметры.Свойство("ЭтоОбменСПриложениемВСервисе", ЭтоОбменСПриложениемВСервисе);
Если Не ЗначениеЗаполнено(НаименованиеКорреспондента) Тогда
НаименованиеКорреспондента = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(УзелОбмена, "Наименование");
НаименованиеКорреспондента = Строка(УзелОбмена);
КонецЕсли;
ВидТранспорта = РегистрыСведений.НастройкиТранспортаОбменаДанными.ВидТранспортаСообщенийОбменаПоУмолчанию(УзелОбмена);
@@ -1517,7 +1517,7 @@
НСтр("ru = 'При удалении настройки синхронизации в программе ""%1"" возникла ошибка: %2.
|
|Попробуйте выполнить удаление позже, или снимите флажок ""Удалить настройку также в программе..."".'"),
ОбщегоНазначения.ЗначениеРеквизитаОбъекта(НастройкиУдаления.УзелОбмена, "Наименование"),
Строка(НастройкиУдаления.УзелОбмена),
Результат.СообщениеОбОшибкеВКорреспонденте);
ПоместитьВоВременноеХранилище(Результат, АдресРезультата);
@@ -354,7 +354,7 @@
ИмяПланаОбмена = ОбменДаннымиПовтИсп.ПолучитьИмяПланаОбмена(УзелИнформационнойБазы);
НаименованиеЭтойБазы = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ПланыОбмена[ИмяПланаОбмена].ЭтотУзел(), "Наименование");
НаименованиеЭтойБазы = Строка(ПланыОбмена[ИмяПланаОбмена].ЭтотУзел());
НаименованиеВторойБазы = УзелИнформационнойБазыПараметры.Наименование;
ПрефиксИнформационнойБазыПриемника = УзелИнформационнойБазыПараметры.Код;
@@ -124,7 +124,7 @@
НаименованиеЭтойПрограммы = ОбменДаннымиПовтИсп.НаименованиеЭтогоУзла(Объект.УзелИнформационнойБазы);
НаименованиеЭтойПрограммы = ?(ПустаяСтрока(НаименованиеЭтойПрограммы), НСтр("ru = 'Эта программа'"), НаименованиеЭтойПрограммы);
НаименованиеВторойПрограммы = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.УзелИнформационнойБазы, "Наименование");
НаименованиеВторойПрограммы = Строка(Объект.УзелИнформационнойБазы);
НаименованиеВторойПрограммы = ?(ПустаяСтрока(НаименованиеВторойПрограммы), НСтр("ru = 'Вторая программа'"), НаименованиеВторойПрограммы);
Элементы.ДанныеЭтойПрограммы.Заголовок = НаименованиеЭтойПрограммы;
@@ -190,13 +190,15 @@
ВсеПоля = СервисКриптографииDSSASNКлиентСервер.ОпределитьТип_OID(, "10");
Для каждого СтрокаПоля Из ВсеПоля Цикл
ЗначениеПоля = ПоляЗапроса[СтрокаПоля.Ключ];
Представление = СтрокаПоля.Значение.Представление;
Если НЕ ЗначениеЗаполнено(ЗначениеПоля) Тогда
ЗначениеПоля = ПоляЗапроса[Представление];
Если НайтиЭлементФормы(Представление) Тогда
ЗначениеПоля = ПоляЗапроса[СтрокаПоля.Ключ];
Если НЕ ЗначениеЗаполнено(ЗначениеПоля) Тогда
ЗначениеПоля = ПоляЗапроса[Представление];
КонецЕсли;
ЭтотОбъект[Представление] = ЗначениеПоля;
Элементы[Представление].Доступность = НЕ ЗначениеЗаполнено(ЗначениеПоля);
КонецЕсли;
ЭтотОбъект[Представление] = ЗначениеПоля;
Элементы[Представление].Доступность = НЕ ЗначениеЗаполнено(ЗначениеПоля);
КонецЦикла;
КонецПроцедуры
@@ -239,6 +241,20 @@
КонецПроцедуры
&НаСервере
Функция НайтиЭлементФормы(ИмяЭлемента)
Результат = Ложь;
НашлиЭлемент = Элементы.Найти(ИмяЭлемента);
Если НашлиЭлемент <> Неопределено Тогда
Результат = Истина;
КонецЕсли;
Возврат Результат;
КонецФункции
&НаСервере
Процедура УправлениеФормой()
@@ -251,21 +267,25 @@
ВсеПоля = СервисКриптографииDSSASNКлиентСервер.ОпределитьТип_OID(, "10");
Для каждого СтрокаМассива Из ВсеПоля Цикл
Представление = СтрокаМассива.Значение.Представление;
ЭлементФормы = ЭлементыФормы[Представление];
ЭлементФормы.Заголовок = СтрЗаменить(ЭлементФормы.Заголовок, СимволОбязательности, "");
ЭлементФормы.ТолькоПросмотр = Истина;
ЭлементФормы.ОтметкаНезаполненного = Ложь;
Если НайтиЭлементФормы(Представление) Тогда
ЭлементФормы = ЭлементыФормы[Представление];
ЭлементФормы.Заголовок = СтрЗаменить(ЭлементФормы.Заголовок, СимволОбязательности, "");
ЭлементФормы.ТолькоПросмотр = Истина;
ЭлементФормы.ОтметкаНезаполненного = Ложь;
КонецЕсли;
КонецЦикла;
Если ЗначениеЗаполнено(УдостоверяющийЦентр) Тогда
ИменаПолей = СервисКриптографииDSS.ПолучитьРеестрПолейУдостоверяющегоЦентра(УдостоверяющийЦентр);
Для каждого СтрокаМассива Из ИменаПолей Цикл
ЭлементФормы = ЭлементыФормы[СтрокаМассива.Представление];
ЭлементФормы.ТолькоПросмотр = Ложь;
Если СтрокаМассива.Обязательно Тогда
ЭлементФормы.Заголовок = ЭлементФормы.Заголовок + СимволОбязательности;
ЭлементФормы.ОтметкаНезаполненного = Истина;
КонецЕсли;
Если НайтиЭлементФормы(СтрокаМассива.Представление) Тогда
ЭлементФормы = ЭлементыФормы[СтрокаМассива.Представление];
ЭлементФормы.ТолькоПросмотр = Ложь;
Если СтрокаМассива.Обязательно Тогда
ЭлементФормы.Заголовок = ЭлементФормы.Заголовок + СимволОбязательности;
ЭлементФормы.ОтметкаНезаполненного = Истина;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
@@ -1603,7 +1603,8 @@
#Если ВебКлиент Тогда
НоваяСтрока.Расположение = 4;
НоваяСтрока.ИмяФайлаНаКомпьютере = ПоместитьВоВременноеХранилище(ПолучитьИзВременногоХранилища(ВыбранныйФайл.Хранение));
НоваяСтрока.ИмяФайлаНаКомпьютере = ПоместитьВоВременноеХранилище(ПолучитьИзВременногоХранилища(ВыбранныйФайл.Хранение),
УникальныйИдентификатор);
#Иначе
НоваяСтрока.Расположение = 2;
НоваяСтрока.ИмяФайлаНаКомпьютере = ВыбранныйФайл.ПолноеИмя;
@@ -94,7 +94,7 @@
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 10000
| ВерсииОбъектов.Объект,
| ВерсииОбъектов.НомерВерсии,
| ВерсииОбъектов.ВерсияОбъекта,
@@ -112,17 +112,19 @@
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
НаборЗаписей = СоздатьНаборЗаписей();
НаборЗаписей.Отбор["Объект"].Установить(Выборка["Объект"]);
НаборЗаписей.Отбор["НомерВерсии"].Установить(Выборка["НомерВерсии"]);
ЗаполнитьЗначенияСвойств(НаборЗаписей.Добавить(), Выборка);
НаборЗаписей.Записать();
Пока Выборка.Количество() > 0 Цикл
Пока Выборка.Следующий() Цикл
НаборЗаписей = СоздатьНаборЗаписей();
НаборЗаписей.Отбор["Объект"].Установить(Выборка["Объект"]);
НаборЗаписей.Отбор["НомерВерсии"].Установить(Выборка["НомерВерсии"]);
ЗаполнитьЗначенияСвойств(НаборЗаписей.Добавить(), Выборка);
НаборЗаписей.Записать();
КонецЦикла;
Выборка = Запрос.Выполнить().Выбрать();
КонецЦикла;
КонецПроцедуры
@@ -274,6 +274,19 @@
КонецЕсли;
НоваяСтрокаТаблицы = Группа.Строки.Добавить();
НоваяСтрокаТаблицы.КлассОбъекта = "КлассПланыВидовХарактеристик";
ИначеЕсли ПланыВидовРасчета.ТипВсеСсылки().СодержитТип(Тип) Тогда
ИмяГруппы = "06ПланыВидовРасчетаКорень";
ПредставлениеГруппы = НСтр("ru = 'Планы видов расчета'");
ТипОбъектовГруппы = "ПланыВидовРасчета";
Группа = ДеревоОМ.Строки.Найти(ИмяГруппы, "КлассОбъекта");
Если Группа = Неопределено Тогда
Группа = ДеревоОМ.Строки.Добавить();
Группа.СинонимНаименованияОбъекта = ПредставлениеГруппы;
Группа.КлассОбъекта = ИмяГруппы;
Группа.ТипОбъекта = ТипОбъектовГруппы;
КонецЕсли;
НоваяСтрокаТаблицы = Группа.Строки.Добавить();
НоваяСтрокаТаблицы.КлассОбъекта = "КлассПланыВидовРасчета";
КонецЕсли;
МетаданныеОбъекта = Метаданные.НайтиПоТипу(Тип);
НоваяСтрокаТаблицы.ТипОбъекта = ОбщегоНазначения.ИдентификаторОбъектаМетаданных(Тип);
@@ -784,6 +784,45 @@
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>WSИспользоватьПередачуБольшогоОбъемаДанных</name>
<id>204</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Запись.WSИспользоватьПередачуБольшогоОбъемаДанных</segments>
</dataPath>
<titleLocation>Right</titleLocation>
<toolTip>
<key>ru</key>
<value>Рекомендуется использовать в тех случаях, если в синхронизации участвует более одного объекта (справочника, документа).</value>
</toolTip>
<toolTipRepresentation>Button</toolTipRepresentation>
<extendedTooltip>
<name>WSИспользоватьПередачуБольшогоОбъемаДанныхРасширеннаяПодсказка</name>
<id>206</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>WSИспользоватьПередачуБольшогоОбъемаДанныхКонтекстноеМеню</name>
<id>205</id>
<autoFill>true</autoFill>
</contextMenu>
<type>CheckBoxField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:CheckBoxFieldExtInfo"/>
</items>
<items xsi:type="form:Button">
<name>ПараметрыДоступаВИнтернет</name>
<id>119</id>
@@ -530,7 +530,9 @@
<maxValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
<fillValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:BooleanValue">
<value>true</value>
</fillValue>
</resources>
<resources uuid="eb551461-ae0d-41dd-89fa-2f6e7f3c4840">
<name>ВидТранспортаСообщенийОбменаПоУмолчанию</name>
@@ -358,7 +358,6 @@
Иначе
ФИО = Сотрудник.Сотрудник.Наименование;
КонецЕсли;
ФИО = ФизическиеЛицаКлиентСервер.ФамилияИнициалы(Сотрудник.Сотрудник.Наименование);
Для Каждого ТекСтрока Из ТаблицаКоманд Цикл
Значения = Новый Структура("Представление, ФИО", ТекСтрока.Представление,ФИО);
Если КомплектПечатныхФорм.НайтиСтроки(Новый Структура("ИмяМакета", ТекСтрока.Идентификатор)) = 0 Тогда
@@ -934,6 +934,8 @@
СобытияРЗ.Добавить("_$Job$_.Cancel");
СобытияРЗ.Добавить("_$Job$_.Fail");
СобытияРЗ.Добавить("_$Job$_.Succeed");
СобытияРЗ.Добавить("_$Job$_.Finish");
СобытияРЗ.Добавить("_$Job$_.Error");
УстановитьПривилегированныйРежим(Истина);
ОтборЖурнала = Новый Структура;
@@ -1925,6 +1925,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>Constant.ОсновнойЯзык</name>
<right>
@@ -5202,93 +5289,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>CommonCommand.ЗагрузитьКурсыВалют</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>// ДляОбъекта(ПолеОбъекта = "")
@@ -2746,6 +2746,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.ОсновнойЯзык</name>
<right>
@@ -7087,45 +7126,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>CommonCommand.ЗагрузитьКурсыВалют</name>
<right>
@@ -3,24 +3,6 @@
<setForNewObjects>false</setForNewObjects>
<setForAttributesByDefault>true</setForAttributesByDefault>
<independentRightsOfChildObjects>false</independentRightsOfChildObjects>
<object>
<name>DataProcessor.ЖурналРегистрации.Command.ЖурналРегистрации</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>DataProcessor.ЖурналРегистрации</name>
<right>
<name>Use</name>
<value>true</value>
</right>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
@@ -52,4 +34,22 @@
<value>true</value>
</right>
</object>
<object>
<name>DataProcessor.ЖурналРегистрации.Command.ЖурналРегистрации</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>DataProcessor.ЖурналРегистрации</name>
<right>
<name>Use</name>
<value>true</value>
</right>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
</Rights>
@@ -322,7 +322,13 @@
КонецЕсли;
ДоступныеЗначения = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(
КомпоновщикНастроек.Настройки.ДополнительныеСвойства, "ДоступныеЗначения", Новый Структура);
КомпоновщикНастроек.Настройки.ДополнительныеСвойства, "ДоступныеЗначения");
Если ИмяПоляНастройки = Неопределено
Или ТипЗнч(ДоступныеЗначения) <> Тип("Структура") Тогда
Возврат ЗначениеНастройки;
КонецЕсли;
ДоступныеЗначенияНастройки = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(
ДоступныеЗначения, ИмяПоляНастройки, Новый СписокЗначений);
@@ -1646,17 +1646,198 @@
<items xsi:type="form:FormGroup">
<name>Вставка</name>
<id>198</id>
<items xsi:type="form:Button">
<name>ВставитьПолеСлева</name>
<id>156</id>
<items xsi:type="form:FormGroup">
<name>ВставкаКолонки</name>
<id>445</id>
<items xsi:type="form:FormGroup">
<name>ВставкаКолонка1</name>
<id>447</id>
<items xsi:type="form:Button">
<name>ВставитьПолеСлева</name>
<id>156</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ВставитьПолеСлеваРасширеннаяПодсказка</name>
<id>157</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualButton</type>
<commandName>Form.Command.ВставитьПолеСлева</commandName>
<buttonImportance>Supplementary</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
<shapeRepresentation>None</shapeRepresentation>
</items>
<items xsi:type="form:Button">
<name>ВставитьГруппировкуВыше</name>
<id>160</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ВставитьГруппировкуВышеРасширеннаяПодсказка</name>
<id>161</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualButton</type>
<commandName>Form.Command.ВставитьГруппировкуВыше</commandName>
<buttonImportance>Supplementary</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
<shapeRepresentation>None</shapeRepresentation>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Вставка колонка 1</value>
</title>
<width>20</width>
<extendedTooltip>
<name>ВставкаКолонка1РасширеннаяПодсказка</name>
<id>448</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>Vertical</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>ВставкаКолонка2</name>
<id>449</id>
<items xsi:type="form:Button">
<name>ВставитьПолеСправа</name>
<id>158</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ВставитьПолеСправаРасширеннаяПодсказка</name>
<id>159</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualButton</type>
<commandName>Form.Command.ВставитьПолеСправа</commandName>
<buttonImportance>Supplementary</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
<shapeRepresentation>None</shapeRepresentation>
</items>
<items xsi:type="form:Button">
<name>ВставитьГруппировкуНиже</name>
<id>162</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ВставитьГруппировкуНижеРасширеннаяПодсказка</name>
<id>163</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualButton</type>
<commandName>Form.Command.ВставитьГруппировкуНиже</commandName>
<buttonImportance>Supplementary</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
<shapeRepresentation>None</shapeRepresentation>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Вставка колонка 2</value>
</title>
<extendedTooltip>
<name>ВставкаКолонка2РасширеннаяПодсказка</name>
<id>450</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>Vertical</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Вставка колонки</value>
</title>
<extendedTooltip>
<name>ВставитьПолеСлеваРасширеннаяПодсказка</name>
<id>157</id>
<name>ВставкаКолонкиРасширеннаяПодсказка</name>
<id>446</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
@@ -1664,99 +1845,15 @@
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualButton</type>
<commandName>Form.Command.ВставитьПолеСлева</commandName>
<buttonImportance>Supplementary</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
<shapeRepresentation>None</shapeRepresentation>
</items>
<items xsi:type="form:Button">
<name>ВставитьПолеСправа</name>
<id>158</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ВставитьПолеСправаРасширеннаяПодсказка</name>
<id>159</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualButton</type>
<commandName>Form.Command.ВставитьПолеСправа</commandName>
<buttonImportance>Supplementary</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
<shapeRepresentation>None</shapeRepresentation>
</items>
<items xsi:type="form:Button">
<name>ВставитьГруппировкуВыше</name>
<id>160</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ВставитьГруппировкуВышеРасширеннаяПодсказка</name>
<id>161</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualButton</type>
<commandName>Form.Command.ВставитьГруппировкуВыше</commandName>
<buttonImportance>Supplementary</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
<shapeRepresentation>None</shapeRepresentation>
</items>
<items xsi:type="form:Button">
<name>ВставитьГруппировкуНиже</name>
<id>162</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ВставитьГруппировкуНижеРасширеннаяПодсказка</name>
<id>163</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualButton</type>
<commandName>Form.Command.ВставитьГруппировкуНиже</commandName>
<buttonImportance>Supplementary</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
<shapeRepresentation>None</shapeRepresentation>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:Decoration">
<name>ВставкаГраницаГруппы</name>
@@ -1832,17 +1929,198 @@
<items xsi:type="form:FormGroup">
<name>Перемещение</name>
<id>200</id>
<items xsi:type="form:Button">
<name>ПереместитьПолеВлево</name>
<id>186</id>
<items xsi:type="form:FormGroup">
<name>ПеремещениеКолонки</name>
<id>451</id>
<items xsi:type="form:FormGroup">
<name>ПеремещениеКолонка1</name>
<id>453</id>
<items xsi:type="form:Button">
<name>ПереместитьПолеВлево</name>
<id>186</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ПереместитьПолеВлевоРасширеннаяПодсказка</name>
<id>187</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualButton</type>
<commandName>Form.Command.ПереместитьПолеВлево</commandName>
<buttonImportance>Supplementary</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
<shapeRepresentation>None</shapeRepresentation>
</items>
<items xsi:type="form:Button">
<name>ПереместитьПолеВыше</name>
<id>190</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ПереместитьПолеВышеРасширеннаяПодсказка</name>
<id>191</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualButton</type>
<commandName>Form.Command.ПереместитьПолеВыше</commandName>
<buttonImportance>Supplementary</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
<shapeRepresentation>None</shapeRepresentation>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Перемещение колонка 1</value>
</title>
<width>20</width>
<extendedTooltip>
<name>ПеремещениеКолонка1РасширеннаяПодсказка</name>
<id>454</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>Vertical</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>ПеремещениеКолонка2</name>
<id>455</id>
<items xsi:type="form:Button">
<name>ПереместитьПолеВправо</name>
<id>188</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ПереместитьПолеВправоРасширеннаяПодсказка</name>
<id>189</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualButton</type>
<commandName>Form.Command.ПереместитьПолеВправо</commandName>
<buttonImportance>Supplementary</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
<shapeRepresentation>None</shapeRepresentation>
</items>
<items xsi:type="form:Button">
<name>ПереместитьПолеНиже</name>
<id>192</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ПереместитьПолеНижеРасширеннаяПодсказка</name>
<id>193</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualButton</type>
<commandName>Form.Command.ПереместитьПолеНиже</commandName>
<buttonImportance>Supplementary</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
<shapeRepresentation>None</shapeRepresentation>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Перемещение колонка 2</value>
</title>
<extendedTooltip>
<name>ПеремещениеКолонка2РасширеннаяПодсказка</name>
<id>456</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>Vertical</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Перемещение колонки</value>
</title>
<extendedTooltip>
<name>ПереместитьПолеВлевоРасширеннаяПодсказка</name>
<id>187</id>
<name>ПеремещениеКолонкиРасширеннаяПодсказка</name>
<id>452</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
@@ -1850,99 +2128,15 @@
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualButton</type>
<commandName>Form.Command.ПереместитьПолеВлево</commandName>
<buttonImportance>Supplementary</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
<shapeRepresentation>None</shapeRepresentation>
</items>
<items xsi:type="form:Button">
<name>ПереместитьПолеВправо</name>
<id>188</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ПереместитьПолеВправоРасширеннаяПодсказка</name>
<id>189</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualButton</type>
<commandName>Form.Command.ПереместитьПолеВправо</commandName>
<buttonImportance>Supplementary</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
<shapeRepresentation>None</shapeRepresentation>
</items>
<items xsi:type="form:Button">
<name>ПереместитьПолеВыше</name>
<id>190</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ПереместитьПолеВышеРасширеннаяПодсказка</name>
<id>191</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualButton</type>
<commandName>Form.Command.ПереместитьПолеВыше</commandName>
<buttonImportance>Supplementary</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
<shapeRepresentation>None</shapeRepresentation>
</items>
<items xsi:type="form:Button">
<name>ПереместитьПолеНиже</name>
<id>192</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ПереместитьПолеНижеРасширеннаяПодсказка</name>
<id>193</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualButton</type>
<commandName>Form.Command.ПереместитьПолеНиже</commandName>
<buttonImportance>Supplementary</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
<shapeRepresentation>None</shapeRepresentation>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:Decoration">
<name>ПеремещениеГраницаГруппы</name>
@@ -2289,17 +2483,142 @@
<items xsi:type="form:FormGroup">
<name>УстановкаЦвета</name>
<id>204</id>
<items xsi:type="form:Button">
<name>ОформитьОтрицательные</name>
<id>172</id>
<items xsi:type="form:FormGroup">
<name>УстановкаЦветаКолонки</name>
<id>457</id>
<items xsi:type="form:FormGroup">
<name>УстановкаЦветаКолонка1</name>
<id>459</id>
<items xsi:type="form:Button">
<name>ОформитьОтрицательные</name>
<id>172</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ОформитьОтрицательныеРасширеннаяПодсказка</name>
<id>173</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualButton</type>
<commandName>Form.Command.ОформитьОтрицательные</commandName>
<buttonImportance>Supplementary</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
<shapeRepresentation>None</shapeRepresentation>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Установка цвета колонка 1</value>
</title>
<width>20</width>
<extendedTooltip>
<name>УстановкаЦветаКолонка1РасширеннаяПодсказка</name>
<id>460</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>Vertical</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>УстановкаЦветаКолонка2</name>
<id>461</id>
<items xsi:type="form:Button">
<name>ОформитьПоложительные</name>
<id>174</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ОформитьПоложительныеРасширеннаяПодсказка</name>
<id>175</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualButton</type>
<commandName>Form.Command.ОформитьПоложительные</commandName>
<buttonImportance>Supplementary</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
<shapeRepresentation>None</shapeRepresentation>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Установка цвета колонка 2</value>
</title>
<extendedTooltip>
<name>УстановкаЦветаКолонка2РасширеннаяПодсказка</name>
<id>462</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>Vertical</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Установка цвета колонки</value>
</title>
<extendedTooltip>
<name>ОформитьОтрицательныеРасширеннаяПодсказка</name>
<id>173</id>
<name>УстановкаЦветаКолонкиРасширеннаяПодсказка</name>
<id>458</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
@@ -2307,43 +2626,15 @@
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualButton</type>
<commandName>Form.Command.ОформитьОтрицательные</commandName>
<buttonImportance>Supplementary</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
<shapeRepresentation>None</shapeRepresentation>
</items>
<items xsi:type="form:Button">
<name>ОформитьПоложительные</name>
<id>174</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ОформитьПоложительныеРасширеннаяПодсказка</name>
<id>175</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualButton</type>
<commandName>Form.Command.ОформитьПоложительные</commandName>
<buttonImportance>Supplementary</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
<shapeRepresentation>None</shapeRepresentation>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:Decoration">
<name>УстановкаЦветаГраницаГруппы</name>
@@ -1037,7 +1037,7 @@
</columns>
</attributes>
<attributes>
<name>ИмяФайлаБезРаширения</name>
<name>ИмяФайлаБезРасширения</name>
<id>14</id>
<valueType>
<types>String</types>
@@ -12,7 +12,7 @@
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
РасширениеАрхива = ".zip";
ИмяФайлаБезРаширения = "ReportOptions";
ИмяФайлаБезРасширения = "ReportOptions";
ЗаполнитьОписаниеВариантовОтчетов();
ПрочитатьПользовательскиеНастройки();
@@ -58,19 +58,19 @@
Если НРег(ИмяФайлаКраткое) = РасширениеАрхива Тогда
ИмяФайлаКраткое = ИмяФайлаБезРаширения + РасширениеАрхива;
ИмяФайлаКраткое = ИмяФайлаБезРасширения + РасширениеАрхива;
ОписаниеИмениФайла[ОписаниеИмениФайла.ВГраница()] = ИмяФайлаКраткое;
ИмяФайла = СтрСоединить(ОписаниеИмениФайла, ПолучитьРазделительПути());
ИначеЕсли Не СтрЗаканчиваетсяНа(НРег(ИмяФайлаКраткое), РасширениеАрхива) Тогда
ИмяФайлаКраткое = ИмяФайлаБезРаширения + РасширениеАрхива;
ИмяФайлаКраткое = ИмяФайлаБезРасширения + РасширениеАрхива;
ОписаниеИмениФайла.Добавить(ИмяФайлаКраткое);
ИмяФайла = СтрСоединить(ОписаниеИмениФайла, ПолучитьРазделительПути());
Иначе
ИмяФайлаБезРаширения = СтрЗаменить(ИмяФайлаКраткое, РасширениеАрхива, "");
ИмяФайлаБезРасширения = СтрЗаменить(ИмяФайлаКраткое, РасширениеАрхива, "");
КонецЕсли;
@@ -572,7 +572,7 @@
ОписаниеВариантаОтчета = ОписаниеВариантовОтчетов[НомерВариантаОтчета - 1];
ОписаниеВариантаОтчета.ИмяФайла = ИмяКаталога
+ ИмяФайлаБезРаширения
+ ИмяФайлаБезРасширения
+ ?(ОписаниеВариантовОтчетов.Количество() = 1, "", НомерВариантаОтчета)
+ РасширениеАрхива;
@@ -6,6 +6,49 @@
<items xsi:type="form:FormGroup">
<name>ГруппаОформляемыеПоляВариантыВыбора</name>
<id>354</id>
<items xsi:type="form:FormField">
<name>Использование</name>
<id>372</id>
<title>
<key>ru</key>
<value>Используется для</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Использование</segments>
</dataPath>
<titleLocation>Right</titleLocation>
<toolTip>
<key>ru</key>
<value>Включить, либо отключить оформление.</value>
</toolTip>
<extendedTooltip>
<name>ИспользованиеРасширеннаяПодсказка</name>
<id>374</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ИспользованиеКонтекстноеМеню</name>
<id>373</id>
<autoFill>true</autoFill>
</contextMenu>
<type>CheckBoxField</type>
<groupVerticalAlign>Center</groupVerticalAlign>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:CheckBoxFieldExtInfo"/>
</items>
<items xsi:type="form:FormField">
<name>ВариантВыбораОформляемыхПолей</name>
<id>356</id>
@@ -3603,6 +3646,23 @@
<common>true</common>
</edit>
</attributes>
<attributes>
<name>Использование</name>
<title>
<key>ru</key>
<value>Использование</value>
</title>
<id>19</id>
<valueType>
<types>Boolean</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<formCommands>
<name>Выбрать</name>
<title>
@@ -15,6 +15,7 @@
УстановитьЗаголовок();
ЭлементОформления = ЭлементОформленияИсходный();
Использование = ЭлементОформления.Использование;
Если ИдентификаторКД <> Неопределено Тогда
@@ -549,6 +550,8 @@
УточнитьСоставОформляемыхПолей(ЭлементОформления);
ЭлементОформления.Использование = Использование;
ОписаниеФормул = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(НастройкиОтчета, "ОписаниеФормул", Новый Массив);
Результат = Новый Структура();