3_1_5_132

This commit is contained in:
Компания 1С committed 2021-07-23 14:11:00 +03:00
1 parent 4161ee88c2
commit fddd4cf787
182 files changed
+13530 -2290

No files matched your search

@@ -287,7 +287,7 @@
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ЕСТЬNULL(НастройкиРазделенных.Подсистема, НастройкиОбщих.Подсистема) КАК Ссылка,
| СУММА(1) КАК Количество,
| КОЛИЧЕСТВО(1) КАК Количество,
| ВЫБОР
| КОГДА ЕСТЬNULL(НастройкиРазделенных.Важный, НастройкиОбщих.Важный) = ИСТИНА
| ТОГДА &ПредставлениеВажный
@@ -22,7 +22,7 @@
//
Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт
Возврат РаботаСФайлами.РеквизитыРедактируемыеВГрупповойОбработке();
Возврат ОбщегоНазначения.ОбщийМодуль("РаботаСФайлами").РеквизитыРедактируемыеВГрупповойОбработке();
КонецФункции
@@ -192,6 +192,71 @@
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<items xsi:type="form:Addition">
<title>
<key>ru</key>
<value>Список поиск</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<name>СписокПоиск</name>
<id>53</id>
<extendedTooltip>
<name>СписокПоискРасширеннаяПодсказка</name>
<id>55</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>СписокПоискКонтекстноеМеню</name>
<id>54</id>
<autoFill>true</autoFill>
</contextMenu>
<source>Список</source>
<extInfo xsi:type="form:SearchStringAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</items>
<items xsi:type="form:Addition">
<title>
<key>ru</key>
<value>Список поиск управление</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<name>СписокПоискУправление</name>
<id>56</id>
<extendedTooltip>
<name>СписокПоискУправлениеРасширеннаяПодсказка</name>
<id>58</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>СписокПоискУправлениеКонтекстноеМеню</name>
<id>57</id>
<autoFill>true</autoFill>
</contextMenu>
<type>SearchControlAddition</type>
<source>Список</source>
<extInfo xsi:type="form:SearchControlAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
@@ -173,8 +173,6 @@
ТекущийОбъект.Пользователи.Очистить();
ГруппаДоступаАдминистраторы = ГруппаДоступаАдминистраторы;
Если ТекущийОбъект.Ссылка <> ГруппаДоступаАдминистраторы
И ЗначениеЗаполнено(ТекущийОбъект.Пользователь) Тогда
@@ -667,6 +667,71 @@
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<items xsi:type="form:Addition">
<title>
<key>ru</key>
<value>Список поиск</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<name>СписокПоиск</name>
<id>135</id>
<extendedTooltip>
<name>СписокПоискРасширеннаяПодсказка</name>
<id>137</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>СписокПоискКонтекстноеМеню</name>
<id>136</id>
<autoFill>true</autoFill>
</contextMenu>
<source>Список</source>
<extInfo xsi:type="form:SearchStringAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</items>
<items xsi:type="form:Addition">
<title>
<key>ru</key>
<value>Список поиск управление</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<name>СписокПоискУправление</name>
<id>138</id>
<extendedTooltip>
<name>СписокПоискУправлениеРасширеннаяПодсказка</name>
<id>140</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>СписокПоискУправлениеКонтекстноеМеню</name>
<id>139</id>
<autoFill>true</autoFill>
</contextMenu>
<type>SearchControlAddition</type>
<source>Список</source>
<extInfo xsi:type="form:SearchControlAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
@@ -22,7 +22,7 @@
//
Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт
Возврат РаботаСФайлами.РеквизитыРедактируемыеВГрупповойОбработке();
Возврат ОбщегоНазначения.ОбщийМодуль("РаботаСФайлами").РеквизитыРедактируемыеВГрупповойОбработке();
КонецФункции
@@ -124,7 +124,10 @@
</dataPath>
<skipOnInput>false</skipOnInput>
<titleLocation>None</titleLocation>
<excludedCommands>CancelSearch</excludedCommands>
<excludedCommands>Change</excludedCommands>
<excludedCommands>Find</excludedCommands>
<excludedCommands>FindByCurrentValue</excludedCommands>
<items xsi:type="form:FormField">
<name>Представление</name>
<id>4</id>
@@ -1653,7 +1656,7 @@
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<commandName>Form.Item.НаборыСвойств.StandardCommand.Find</commandName>
<commandName>0</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
@@ -1679,7 +1682,7 @@
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<commandName>Form.Item.НаборыСвойств.StandardCommand.CancelSearch</commandName>
<commandName>0</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
@@ -1826,6 +1829,8 @@
<name>ПриСозданииНаСервере</name>
</handlers>
<excludedCommands>Change</excludedCommands>
<excludedCommands>Find</excludedCommands>
<excludedCommands>FindByCurrentValue</excludedCommands>
<windowOpeningMode>DontBlock</windowOpeningMode>
<saveWindowSettings>true</saveWindowSettings>
<autoUrl>true</autoUrl>
@@ -192,6 +192,20 @@
НоваяСтрокаРеквизиты = НовыйНаборОбъект.ДополнительныеРеквизиты.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрокаРеквизиты, СтрокаРеквизит);
НоваяСтрокаРеквизиты.ИмяПредопределенногоНабора = НовыйНаборОбъект.ИмяПредопределенногоНабора;
// Обновление набора свойств в зависимостях дополнительного реквизита.
Свойство = НоваяСтрокаРеквизиты.Свойство;
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения");
ЭлементБлокировки.УстановитьЗначение("Ссылка", Свойство);
Блокировка.Заблокировать();
СвойствоОбъект = Свойство.ПолучитьОбъект();
Для Каждого Зависимость Из СвойствоОбъект.ЗависимостиДополнительныхРеквизитов Цикл
Если Зависимость.НаборСвойств = ОбновляемыйНабор.Ссылка Тогда
Зависимость.НаборСвойств = НовыйНабор;
КонецЕсли;
КонецЦикла;
ОбновлениеИнформационнойБазы.ЗаписатьОбъект(СвойствоОбъект);
КонецЦикла;
Для Каждого СтрокаСведение Из ОбновляемыйНабор.ДополнительныеСведения Цикл
НоваяСтрокаСведения = НовыйНаборОбъект.ДополнительныеСведения.Добавить();
@@ -699,6 +699,71 @@
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<items xsi:type="form:Addition">
<title>
<key>ru</key>
<value>Пользователи поиск</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<name>ПользователиПоиск</name>
<id>319</id>
<extendedTooltip>
<name>ПользователиПоискРасширеннаяПодсказка</name>
<id>321</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ПользователиПоискКонтекстноеМеню</name>
<id>320</id>
<autoFill>true</autoFill>
</contextMenu>
<source>ПользователиСписок</source>
<extInfo xsi:type="form:SearchStringAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</items>
<items xsi:type="form:Addition">
<title>
<key>ru</key>
<value>Пользователи поиск управление</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<name>ПользователиПоискУправление</name>
<id>322</id>
<extendedTooltip>
<name>ПользователиПоискУправлениеРасширеннаяПодсказка</name>
<id>324</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ПользователиПоискУправлениеКонтекстноеМеню</name>
<id>323</id>
<autoFill>true</autoFill>
</contextMenu>
<type>SearchControlAddition</type>
<source>ПользователиСписок</source>
<extInfo xsi:type="form:SearchControlAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
@@ -797,7 +862,6 @@
</dataPath>
<defaultItem>true</defaultItem>
<titleLocation>None</titleLocation>
<shortcut>Shift+F</shortcut>
<extendedTooltip>
<name>СтрокаПоискаРасширеннаяПодсказка</name>
<id>224</id>
@@ -842,7 +906,7 @@
<textSize>Normal</textSize>
<inputHint>
<key>ru</key>
<value>Поиск (Shift + F) </value>
<value>Введите имя пользователя</value>
</inputHint>
</extInfo>
</items>
@@ -105,27 +105,38 @@
РасписаниеСтрокой = Строка(НайденноеРегламентноеЗадание.Расписание);
Иначе
ОбъектПравила = КлючСтроки.ПолучитьОбъект();
Параметры = Новый Структура;
Параметры.Вставить("Использование", Истина);
Параметры.Вставить("Метаданные", Метаданные.РегламентныеЗадания.ПроверкаВеденияУчета);
Параметры.Вставить("Расписание", ОбщегоНазначенияКлиентСервер.СтруктураВРасписание(
ОбъектПравила.РасписаниеВыполненияПроверки.Получить()));
ВосстановленноеЗадание = РегламентныеЗаданияСервер.ДобавитьЗадание(Параметры);
ПараметрыЗадания = Новый Структура;
МассивПараметров = Новый Массив;
МассивПараметров.Добавить(Строка(ВосстановленноеЗадание.УникальныйИдентификатор));
ПараметрыЗадания.Вставить("Параметры", МассивПараметров);
РегламентныеЗаданияСервер.ИзменитьЗадание(ВосстановленноеЗадание.УникальныйИдентификатор, ПараметрыЗадания);
ОбъектПравила.ИдентификаторРегламентногоЗадания = Строка(ВосстановленноеЗадание.УникальныйИдентификатор);
ОбновлениеИнформационнойБазы.ЗаписатьДанные(ОбъектПравила);
РасписаниеСтрокой = Строка(ВосстановленноеЗадание.Расписание);
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("Справочник.ПравилаПроверкиУчета");
ЭлементБлокировки.УстановитьЗначение("Ссылка", КлючСтроки);
НачатьТранзакцию();
Попытка
Блокировка.Заблокировать();
ОбъектПравила = КлючСтроки.ПолучитьОбъект();
Параметры = Новый Структура;
Параметры.Вставить("Использование", Истина);
Параметры.Вставить("Метаданные", Метаданные.РегламентныеЗадания.ПроверкаВеденияУчета);
Параметры.Вставить("Расписание", ОбщегоНазначенияКлиентСервер.СтруктураВРасписание(
ОбъектПравила.РасписаниеВыполненияПроверки.Получить()));
ВосстановленноеЗадание = РегламентныеЗаданияСервер.ДобавитьЗадание(Параметры);
ПараметрыЗадания = Новый Структура;
МассивПараметров = Новый Массив;
МассивПараметров.Добавить(Строка(ВосстановленноеЗадание.УникальныйИдентификатор));
ПараметрыЗадания.Вставить("Параметры", МассивПараметров);
РегламентныеЗаданияСервер.ИзменитьЗадание(ВосстановленноеЗадание.УникальныйИдентификатор, ПараметрыЗадания);
ОбъектПравила.ИдентификаторРегламентногоЗадания = Строка(ВосстановленноеЗадание.УникальныйИдентификатор);
ОбновлениеИнформационнойБазы.ЗаписатьДанные(ОбъектПравила);
РасписаниеСтрокой = Строка(ВосстановленноеЗадание.Расписание);
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
КонецЕсли;
ДанныеСтроки.РегламентноеЗаданиеПредставление = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
@@ -281,9 +292,13 @@
&НаСервере
Процедура ВосстановитьПоНачальномуЗаполнениюНаСервере()
КонтрольВеденияУчетаСлужебный.ОбновитьПараметрыПроверокУчета();
Если КонтрольВеденияУчетаСлужебный.ЕстьИзмененияПараметровПроверокУчета() Тогда
Если ОбщегоНазначения.РазделениеВключено() Тогда
КонтрольВеденияУчетаСлужебный.ОбновитьВспомогательныеДанныеПоИзменениямКонфигурации();
Иначе
КонтрольВеденияУчетаСлужебный.ОбновитьПараметрыПроверокУчета();
Если КонтрольВеденияУчетаСлужебный.ЕстьИзмененияПараметровПроверокУчета() Тогда
КонтрольВеденияУчетаСлужебный.ОбновитьВспомогательныеДанныеПоИзменениямКонфигурации();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
@@ -452,6 +452,71 @@
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<items xsi:type="form:Addition">
<title>
<key>ru</key>
<value>Список поиск</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<name>СписокПоиск</name>
<id>69</id>
<extendedTooltip>
<name>СписокПоискРасширеннаяПодсказка</name>
<id>71</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>СписокПоискКонтекстноеМеню</name>
<id>70</id>
<autoFill>true</autoFill>
</contextMenu>
<source>Список</source>
<extInfo xsi:type="form:SearchStringAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</items>
<items xsi:type="form:Addition">
<title>
<key>ru</key>
<value>Список поиск управление</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<name>СписокПоискУправление</name>
<id>66</id>
<extendedTooltip>
<name>СписокПоискУправлениеРасширеннаяПодсказка</name>
<id>68</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>СписокПоискУправлениеКонтекстноеМеню</name>
<id>67</id>
<autoFill>true</autoFill>
</contextMenu>
<type>SearchControlAddition</type>
<source>Список</source>
<extInfo xsi:type="form:SearchControlAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
@@ -821,10 +821,11 @@
//
// Возвращаемое значение:
// ФиксированнаяСтруктура:
// * ОписанияПрофилей - Соответствие из КлючИЗначение:
// * ОписанияПрофилей - ФиксированноеСоответствие из КлючИЗначение:
// ** Ключ - Строка
// ** Значение - см. СвойстваПоставляемогоПрофиля
// * ОписанияПрофилейМассив - Массив из см. СвойстваПоставляемогоПрофиля
// * ОписанияПрофилейМассив - ФиксированныйМассив из см. СвойстваПоставляемогоПрофиля
// * ПапкиПоРодителям - ФиксированноеСоответствие
// * ПараметрыОбновления - ФиксированнаяСтруктура:
// ** ОбновлятьИзмененныеПрофили - Булево
// ** ЗапретитьИзменениеПрофилей - Булево
@@ -892,6 +893,75 @@
КонецФункции
// Параметры:
// ИзменениеЯзыков - см. МультиязычностьСервер.ОписаниеСтарыхИНовыхНастроекЯзыков
//
Процедура ПриИзмененииЯзыкаИнформационнойБазы(ИзменениеЯзыков) Экспорт
ОписанияПрофилей = ЗаполненныеПоставляемыеПрофили().ОписанияПрофилей;
НовыеНаименованияПрофилей = Новый ТаблицаЗначений;
НовыеНаименованияПрофилей.Колонки.Добавить("ИдентификаторПоставляемыхДанных",
Новый ОписаниеТипов("УникальныйИдентификатор"));
НовыеНаименованияПрофилей.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка",,,,
Новый КвалификаторыСтроки(Метаданные.Справочники.ПрофилиГруппДоступа.ДлинаНаименования)));
Для Каждого ОписаниеПрофиля Из ОписанияПрофилей Цикл
Наименование = ?(ОписаниеПрофиля.Свойство("Наименование"), ОписаниеПрофиля.Наименование, "");
Если Не ЗначениеЗаполнено(Наименование)
Или Не СтроковыеФункцииКлиентСервер.ЭтоУникальныйИдентификатор(ОписаниеПрофиля.Идентификатор) Тогда
Продолжить;
КонецЕсли;
НоваяСтрока = НовыеНаименованияПрофилей.Добавить();
НоваяСтрока.ИдентификаторПоставляемыхДанных =
Новый УникальныйИдентификатор(ОписаниеПрофиля.Идентификатор);
НоваяСтрока.Наименование = Наименование;
КонецЦикла;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("НовыеНаименованияПрофилей", НовыеНаименованияПрофилей);
Запрос.Текст =
"ВЫБРАТЬ
| НовыеНаименованияПрофилей.ИдентификаторПоставляемыхДанных КАК ИдентификаторПоставляемыхДанных,
| НовыеНаименованияПрофилей.Наименование КАК Наименование
|ПОМЕСТИТЬ НовыеНаименованияПрофилей
|ИЗ
| &НовыеНаименованияПрофилей КАК НовыеНаименованияПрофилей
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| Профили.Ссылка КАК Ссылка,
| НовыеНаименованияПрофилей.Наименование КАК Наименование
|ИЗ
| Справочник.ПрофилиГруппДоступа КАК Профили
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ НовыеНаименованияПрофилей КАК НовыеНаименованияПрофилей
| ПО Профили.ИдентификаторПоставляемыхДанных = НовыеНаименованияПрофилей.ИдентификаторПоставляемыхДанных
| И Профили.Наименование <> НовыеНаименованияПрофилей.Наименование";
Выборка = Запрос.Выполнить().Выбрать();
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("Справочник.ПрофилиГруппДоступа");
Пока Выборка.Следующий() Цикл
ЭлементБлокировки.УстановитьЗначение("Ссылка", Выборка.Ссылка);
НачатьТранзакцию();
Попытка
Блокировка.Заблокировать();
ТекущийОбъект = Выборка.Ссылка.ПолучитьОбъект(); // СправочникОбъект.ПрофилиГруппДоступа
Если ТекущийОбъект.Наименование <> Выборка.Наименование Тогда
ТекущийОбъект.Наименование = Выборка.Наименование;
ОбновлениеИнформационнойБазы.ЗаписатьОбъект(ТекущийОбъект);
КонецЕсли;
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
КонецЦикла;
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
// Процедуры и функции для поддержки обмена данными в РИБ.
@@ -1200,7 +1270,7 @@
ЗаполненныеПоставляемыеПрофили = ЗаполненныеПоставляемыеПрофили();
ПараметрыОбновления = ЗаполненныеПоставляемыеПрофили.ПараметрыОбновления;
ОписанияПрофилей = ЗаполненныеПоставляемыеПрофили.ОписанияПрофилей; // Массив из см. УправлениеДоступом.НовоеОписаниеПрофиляГруппДоступа -
ОписанияПрофилей = ЗаполненныеПоставляемыеПрофили.ОписанияПрофилей; // Массив из см. УправлениеДоступом.НовоеОписаниеПрофиляГруппДоступа
ЗаголовокОшибки =
НСтр("ru = 'Заданы недопустимые значения в процедуре ПриЗаполненииПоставляемыхПрофилейГруппДоступа
@@ -1640,8 +1710,8 @@
// Возвращает свойства профиля, указанные в переопределяемом модуле,
// преобразованные в фиксированный формат сохранения в базе данных.
// Подробное описание свойств смотри УправлениеДоступом.НовоеОписаниеПрофиляГруппДоступа
// и УправлениеДоступом.НовоеОписаниеПапкиПрофилейГруппДоступа
// Подробное описание свойств смотри в функциях НовоеОписаниеПрофиляГруппДоступа
// и НовоеОписаниеПапкиПрофилейГруппДоступа общего модуля УправлениеДоступом.
//
// Параметры:
// Идентификатор - Строка - имя или идентификатор поставляемого профиля.
@@ -1657,7 +1727,7 @@
// * ВидыДоступа - ФиксированноеСоответствие из КлючИЗначение:
// * Ключ - Строка
// * Значение - Строка
// * ЗначенияДоступа - ФиксированныйМассив из Структура:
// * ЗначенияДоступа - ФиксированныйМассив из ФиксированнаяСтруктура:
// * ВидДоступа - Строка
// * ЗначениеДоступа - Строка
//
@@ -1085,6 +1085,71 @@
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<items xsi:type="form:Addition">
<title>
<key>ru</key>
<value>Список поиск</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<name>СписокПоиск</name>
<id>171</id>
<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>
<contextMenu>
<name>СписокПоискКонтекстноеМеню</name>
<id>172</id>
<autoFill>true</autoFill>
</contextMenu>
<source>Список</source>
<extInfo xsi:type="form:SearchStringAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</items>
<items xsi:type="form:Addition">
<title>
<key>ru</key>
<value>Список поиск управление</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<name>СписокПоискУправление</name>
<id>168</id>
<extendedTooltip>
<name>СписокПоискУправлениеРасширеннаяПодсказка</name>
<id>170</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>СписокПоискУправлениеКонтекстноеМеню</name>
<id>169</id>
<autoFill>true</autoFill>
</contextMenu>
<type>SearchControlAddition</type>
<source>Список</source>
<extInfo xsi:type="form:SearchControlAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
@@ -821,23 +821,33 @@
&НаКлиенте
Процедура ПерейтиКВыборуТекущегоСертификатаПослеПоискаСертификатаВОблачномСервисе(РезультатПоиска, Контекст) Экспорт
ТекущиеДанные = Элементы.Сертификаты.ТекущиеДанные;
Если ЕстьОблачнаяПодпись Тогда
МодульСервисКриптографииDSSКлиентСервер = ОбщегоНазначенияКлиент.ОбщийМодуль("СервисКриптографииDSSКлиентСервер");
МодульСервисКриптографииDSSКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("СервисКриптографииDSSКлиент");
ОбработкаСледующая = Новый ОписаниеОповещения("ПерейтиКВыборуТекущегоСертификатаПослеПоискаСертификатаВОблачнойПодписи", ЭтотОбъект, Контекст);
СтруктураПоиска = Новый Структура;
СтруктураПоиска.Вставить("Отпечаток", МодульСервисКриптографииDSSКлиентСервер.ТрансформироватьОтпечаток(ТекущиеДанные.Отпечаток));
МодульСервисКриптографииDSSКлиент.НайтиСертификат(ОбработкаСледующая, СтруктураПоиска);
Иначе
ПерейтиКВыборуТекущегоСертификатаПослеПоискаСертификатаВОблачнойПодписи(РезультатПоиска, Контекст);
Если Не РезультатПоиска.Выполнено Тогда
Контекст.Результат.ОписаниеОшибки = РезультатПоиска.ОписаниеОшибки.Описание;
Контекст.Результат.ОбновитьСписокСертификатов = Истина;
ВыполнитьОбработкуОповещения(Контекст.Оповещение, Контекст.Результат);
Возврат;
КонецЕсли;
Если Не ЗначениеЗаполнено(РезультатПоиска.Сертификат) Тогда
Контекст.Результат.ОписаниеОшибки = НСтр("ru = 'Сертификат отсутствует в облачном сервисе (возможно удален).'");
Контекст.Результат.ОбновитьСписокСертификатов = Истина;
ВыполнитьОбработкуОповещения(Контекст.Оповещение, Контекст.Результат);
Возврат;
КонецЕсли;
Контекст.Вставить("СертификатКриптографии", РезультатПоиска.Сертификат);
ПерейтиКВыборуТекущегоСертификатаПослеВыгрузкиСертификата(РезультатПоиска.Сертификат.Сертификат, Контекст);
КонецПроцедуры
// Продолжение процедуры ПерейтиКВыборуТекущегоСертификата.
//
// Параметры:
// РезультатПоиска - Структура:
// * Выполнено - Булево
// * Ошибка - Строка
// Контекст - Структура
//
&НаКлиенте
Процедура ПерейтиКВыборуТекущегоСертификатаПослеПоискаСертификатаВОблачнойПодписи(РезультатПоиска, Контекст) Экспорт
@@ -22,7 +22,7 @@
//
Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт
Возврат РаботаСФайлами.РеквизитыРедактируемыеВГрупповойОбработке();
Возврат ОбщегоНазначения.ОбщийМодуль("РаботаСФайлами").РеквизитыРедактируемыеВГрупповойОбработке();
КонецФункции
@@ -22,7 +22,7 @@
//
Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт
Возврат РаботаСФайлами.РеквизитыРедактируемыеВГрупповойОбработке();
Возврат ОбщегоНазначения.ОбщийМодуль("РаботаСФайлами").РеквизитыРедактируемыеВГрупповойОбработке();
КонецФункции
@@ -50,7 +50,8 @@
ДанныеСсылки = Справочники.УчетныеЗаписиDSS.ПолучитьДанныеСсылки(Ссылка);
Если ДанныеСсылки.Владелец <> Владелец
ИЛИ ДанныеСсылки.Логин <> Логин Тогда
ИЛИ ДанныеСсылки.Логин <> Логин
ИЛИ ПометкаУдаления Тогда
СервисКриптографииDSSСлужебный.ОчиститьСписокСертификатов(Ссылка);
КонецЕсли;
@@ -1484,6 +1484,19 @@
<common>true</common>
</edit>
</attributes>
<attributes>
<name>СформироватьИОтправить</name>
<id>22</id>
<valueType>
<types>Boolean</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<formCommands>
<name>СформироватьИОтправить</name>
<title>
@@ -179,9 +179,9 @@
КонецЕсли;
ПараметрыОтправки = КонструкторПараметровОтправки(ТекущиеДанные.Ссылка);
ПараметрыОтправки.ДополнительныеПараметры.ОтправитьСразу = Истина;
СформироватьИОтправить = Истина;
Если ТекущиеДанные.ЕстьПроизвольныеПараметры Тогда
ВводПараметров(ТекущиеДанные.Ссылка, ПараметрыОтправки, Истина);
ВводПараметров(ТекущиеДанные.Ссылка, ПараметрыОтправки);
Иначе
ОтравитьСообщение(ПараметрыОтправки);
КонецЕсли;
@@ -194,7 +194,7 @@
КонецПроцедуры
&НаКлиенте
Процедура ВводПараметров(Шаблон, ПараметрыОтправки, ОтправлятьСразу)
Процедура ВводПараметров(Шаблон, ПараметрыОтправки)
ПараметрыДляЗаполнения = Новый Структура("Шаблон, Предмет", Шаблон, Предмет);
@@ -224,7 +224,7 @@
ПараметрыОтправки.ДополнительныеПараметры.ПреобразовыватьHTMLДляФорматированногоДокумента = Истина;
Если ТекущиеДанные.ЕстьПроизвольныеПараметры Тогда
ВводПараметров(ТекущиеДанные.Ссылка, ПараметрыОтправки, Ложь);
ВводПараметров(ТекущиеДанные.Ссылка, ПараметрыОтправки);
Иначе
СформироватьСообщениеДляОтправки(ПараметрыОтправки);
КонецЕсли;
@@ -252,7 +252,7 @@
ОбщегоНазначенияКлиентСервер.ДополнитьСтруктуру(Результат, ПараметрыСообщения, Ложь);
КонецЕсли;
Если ПараметрыОтправки.ДополнительныеПараметры.ОтправитьСразу Тогда
Если СформироватьИОтправить Тогда
ПослеФормированияИОтправкиСообщения(Результат, ПараметрыОтправки);
Иначе
Если ПодготовитьШаблон Тогда
@@ -276,14 +276,16 @@
ПараметрыОтправки.ДополнительныеПараметры.Вставить("РасширенныйСписокПолучателей", МодульВзаимодействия.ИспользуетсяПрочиеВзаимодействия());
КонецЕсли;
ШаблоныСообщенийСлужебный.СформироватьСообщениеВФоне(ПараметрыВызоваСервера, АдресВременногоХранилища);
ШаблоныСообщенийСлужебный.СформироватьСообщениеВФоне(ПараметрыВызоваСервера, АдресВременногоХранилища, СформироватьИОтправить);
Возврат АдресВременногоХранилища;
КонецФункции
// Параметры:
// Результат - КодВозвратаДиалога
// Результат - Соответствие - если данные введены пользователем:
// - КодВозвратаДиалога - если отмена ввода данных
// - Неопределено - если окно было закрыто
// ПараметрыОтправки - см. ШаблоныСообщенийКлиентСервер.КонструкторПараметровОтправки
//
&НаКлиенте
@@ -320,10 +322,15 @@
КонецПроцедуры
// Параметры:
// Результат - см. ШаблоныСообщенийСлужебный.РезультатОтправкиПисьма
// ПараметрыОтправки - Структура
//
&НаКлиенте
Процедура ПослеФормированияИОтправкиСообщения(Результат, ПараметрыОтправки)
Если Результат.Отправлено Тогда;
Если ПустаяСтрока(Результат.ОписаниеОшибки)Тогда;
Закрыть();
Иначе
Оповещение = Новый ОписаниеОповещения("ПослеВопросаОбОткрытиеФормыСообщения", ЭтотОбъект, ПараметрыОтправки);
@@ -417,11 +424,13 @@
//
&НаКлиенте
Процедура ПослеВопросаОбОткрытиеФормыСообщения(Результат, ПараметрыОтправки) Экспорт
Если Результат = КодВозвратаДиалога.Да Тогда
ПараметрыОтправки.ДополнительныеПараметры.ОтправитьСразу = Ложь;
СформироватьИОтправить = Ложь;
ПараметрыОтправки.ДополнительныеПараметры.ПреобразовыватьHTMLДляФорматированногоДокумента = Истина;
СформироватьСообщениеДляОтправки(ПараметрыОтправки);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
@@ -320,6 +320,71 @@
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<items xsi:type="form:Addition">
<title>
<key>ru</key>
<value>Список поиск</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<name>СписокПоиск</name>
<id>64</id>
<extendedTooltip>
<name>СписокПоискРасширеннаяПодсказка</name>
<id>66</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>СписокПоискКонтекстноеМеню</name>
<id>65</id>
<autoFill>true</autoFill>
</contextMenu>
<source>Список</source>
<extInfo xsi:type="form:SearchStringAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</items>
<items xsi:type="form:Addition">
<title>
<key>ru</key>
<value>Список поиск управление</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<name>СписокПоискУправление</name>
<id>67</id>
<extendedTooltip>
<name>СписокПоискУправлениеРасширеннаяПодсказка</name>
<id>69</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>СписокПоискУправлениеКонтекстноеМеню</name>
<id>68</id>
<autoFill>true</autoFill>
</contextMenu>
<type>SearchControlAddition</type>
<source>Список</source>
<extInfo xsi:type="form:SearchControlAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
@@ -361,21 +426,108 @@
</dataPath>
<defaultItem>true</defaultItem>
<titleLocation>None</titleLocation>
<items xsi:type="form:FormField">
<name>ЕстьФайлы</name>
<id>59</id>
<items xsi:type="form:FormGroup">
<name>ГруппаНаименованиеИФайлы</name>
<id>62</id>
<items xsi:type="form:FormField">
<name>ЕстьФайлы</name>
<id>59</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Список.ЕстьФайлы</segments>
</dataPath>
<titleLocation>None</titleLocation>
<extendedTooltip>
<name>ЕстьФайлыРасширеннаяПодсказка</name>
<id>61</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ЕстьФайлыКонтекстноеМеню</name>
<id>60</id>
<autoFill>true</autoFill>
</contextMenu>
<type>PictureField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerPicture xsi:type="core:PictureRef">
<picture>CommonPicture.Скрепка</picture>
</headerPicture>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:ImageFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<horizontalStretch>true</horizontalStretch>
<verticalStretch>true</verticalStretch>
<valuesPicture xsi:type="core:PictureRef">
<picture>CommonPicture.КоллекцияСкрепка</picture>
</valuesPicture>
<border xsi:type="core:BorderDef">
<style>Single</style>
<width>1</width>
</border>
<fileDragMode>AsFileRef</fileDragMode>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>Наименование</name>
<id>16</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Список.Description</segments>
</dataPath>
<defaultItem>true</defaultItem>
<extendedTooltip>
<name>НаименованиеРасширеннаяПодсказка</name>
<id>18</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>НаименованиеКонтекстноеМеню</name>
<id>17</id>
<autoFill>true</autoFill>
</contextMenu>
<type>LabelField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:LabelFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Список.ЕстьФайлы</segments>
</dataPath>
<titleLocation>None</titleLocation>
<title>
<key>ru</key>
<value>Наименование и файлы</value>
</title>
<extendedTooltip>
<name>ЕстьФайлыРасширеннаяПодсказка</name>
<id>61</id>
<name>ГруппаНаименованиеИФайлыРасширеннаяПодсказка</name>
<id>63</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
@@ -383,69 +535,10 @@
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ЕстьФайлыКонтекстноеМеню</name>
<id>60</id>
<autoFill>true</autoFill>
</contextMenu>
<type>PictureField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerPicture xsi:type="core:PictureRef">
<picture>CommonPicture.Скрепка</picture>
</headerPicture>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:ImageFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<horizontalStretch>true</horizontalStretch>
<verticalStretch>true</verticalStretch>
<valuesPicture xsi:type="core:PictureRef">
<picture>CommonPicture.КоллекцияСкрепка</picture>
</valuesPicture>
<border xsi:type="core:BorderDef">
<style>Single</style>
<width>1</width>
</border>
<fileDragMode>AsFileRef</fileDragMode>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>Наименование</name>
<id>16</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Список.Description</segments>
</dataPath>
<defaultItem>true</defaultItem>
<extendedTooltip>
<name>НаименованиеРасширеннаяПодсказка</name>
<id>18</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>НаименованиеКонтекстноеМеню</name>
<id>17</id>
<autoFill>true</autoFill>
</contextMenu>
<type>LabelField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:LabelFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<type>ColumnGroup</type>
<extInfo xsi:type="form:ColumnGroupExtInfo">
<showTitle>auto</showTitle>
<showInCard>true</showInCard>
</extInfo>
</items>
<items xsi:type="form:FormField">
@@ -707,9 +800,6 @@
<horizontalStretch>true</horizontalStretch>
<verticalStretch>true</verticalStretch>
<enableStartDrag>true</enableStartDrag>
<rowPictureDataPath xsi:type="form:DataPath">
<segments>Список.DefaultPicture</segments>
</rowPictureDataPath>
<autoMaxCardHeight>true</autoMaxCardHeight>
<extInfo xsi:type="form:DynamicListTableExtInfo">
<handlers>
@@ -52,6 +52,10 @@
КонецЕсли;
Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда
Элементы.ГруппаНаименованиеИФайлы.Группировка = ГруппировкаКолонок.ВЯчейке;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
@@ -22,7 +22,7 @@
//
Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт
Возврат РаботаСФайлами.РеквизитыРедактируемыеВГрупповойОбработке();
Возврат ОбщегоНазначения.ОбщийМодуль("РаботаСФайлами").РеквизитыРедактируемыеВГрупповойОбработке();
КонецФункции
@@ -22,7 +22,7 @@
//
Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт
Возврат РаботаСФайлами.РеквизитыРедактируемыеВГрупповойОбработке();
Возврат ОбщегоНазначения.ОбщийМодуль("РаботаСФайлами").РеквизитыРедактируемыеВГрупповойОбработке();
КонецФункции
@@ -22,7 +22,7 @@
//
Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт
Возврат РаботаСФайлами.РеквизитыРедактируемыеВГрупповойОбработке();
Возврат ОбщегоНазначения.ОбщийМодуль("РаботаСФайлами").РеквизитыРедактируемыеВГрупповойОбработке();
КонецФункции
@@ -440,6 +440,58 @@
</picture>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<items xsi:type="form:FormGroup">
<name>СтандартныеКомандыФормы</name>
<id>48</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Стандартные команды формы</value>
</title>
<extendedTooltip>
<name>СтандартныеКомандыФормыРасширеннаяПодсказка</name>
<id>49</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">
<commandSource>Form</commandSource>
</extInfo>
</items>
<items xsi:type="form:Button">
<name>ФормаСправка</name>
<id>50</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ФормаСправкаРасширеннаяПодсказка</name>
<id>51</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<commandName>Form.StandardCommand.Help</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<horizontalAlign>Left</horizontalAlign>
</autoCommandBar>
<handlers>
@@ -22,6 +22,13 @@
Элементы.ФормаСоздать.Отображение = ОтображениеКнопки.Картинка;
КонецЕсли;
Поля = Новый Массив;
Поля.Добавить("Наименование");
Список.УстановитьОграниченияИспользованияВГруппировке(Поля);
Список.УстановитьОграниченияИспользованияВПорядке(Поля);
Список.УстановитьОграниченияИспользованияВОтборе(Поля);
КонецПроцедуры
#КонецОбласти
@@ -807,6 +807,16 @@
Процедура ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию(Параметры) Экспорт
// Получение наборов свойств с префиксом Удалить.
НаборыСвойств = Новый Массив;
ИменаПредопределенныхНаборов = Метаданные.Справочники.НаборыДополнительныхРеквизитовИСведений.ПолучитьИменаПредопределенных();
Для Каждого ИмяПредопределенногоНабора Из ИменаПредопределенныхНаборов Цикл
Если СтрНачинаетсяС(ИмяПредопределенногоНабора, "Удалить") Тогда
НаборыСвойств.Добавить(Справочники.НаборыДополнительныхРеквизитовИСведений[ИмяПредопределенногоНабора]);
КонецЕсли;
КонецЦикла;
НаборыСвойств.Добавить(Справочники.НаборыДополнительныхРеквизитовИСведений.ПустаяСсылка());
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
@@ -825,7 +835,7 @@
|ИЗ
| ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.ЗависимостиДополнительныхРеквизитов КАК ЗависимостиДополнительныхРеквизитов
|ГДЕ
| ЗависимостиДополнительныхРеквизитов.НаборСвойств = &НаборСвойств
| ЗависимостиДополнительныхРеквизитов.НаборСвойств В (&НаборыСвойств)
|
|ОБЪЕДИНИТЬ ВСЕ
|
@@ -836,7 +846,7 @@
|ГДЕ
| ИдентификаторДляФормул = """"";
Запрос.УстановитьПараметр("НаборСвойств", Справочники.НаборыДополнительныхРеквизитовИСведений.ПустаяСсылка());
Запрос.УстановитьПараметр("НаборыСвойств", НаборыСвойств);
Результат = Запрос.Выполнить().Выгрузить();
МассивСсылок = Результат.ВыгрузитьКолонку("Ссылка");
@@ -873,11 +883,25 @@
КонецЕсли;
Для Каждого Зависимость Из Объект.ЗависимостиДополнительныхРеквизитов Цикл
ИмяПредопределенныхДанных = "";
Если ЗначениеЗаполнено(Зависимость.НаборСвойств) Тогда
Продолжить;
ИмяПредопределенныхДанных = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Зависимость.НаборСвойств, "ИмяПредопределенныхДанных");
Если Не СтрНачинаетсяС(ИмяПредопределенныхДанных, "Удалить") Тогда
Продолжить;
КонецЕсли;
КонецЕсли;
Если Не ЗначениеЗаполнено(ИмяПредопределенныхДанных) Тогда
Зависимость.НаборСвойств = Объект.НаборСвойств;
Иначе
ДлинаПрефикса = СтрДлина("Удалить");
ИмяНабора = Сред(ИмяПредопределенныхДанных, ДлинаПрефикса + 1, СтрДлина(ИмяПредопределенныхДанных) - ДлинаПрефикса);
НовыйНабор = УправлениеСвойствами.НаборСвойствПоИмени(ИмяНабора);
Если НовыйНабор <> Неопределено Тогда
Зависимость.НаборСвойств = НовыйНабор;
КонецЕсли;
КонецЕсли;
Зависимость.НаборСвойств = Объект.НаборСвойств;
КонецЦикла;
Если НЕ ЗначениеЗаполнено(Объект.ИдентификаторДляФормул) Тогда
ЗаголовокДляФормул = ЗаголовокДляФормированияИдентификатора(Объект.Заголовок, Объект.Представления);
Объект.ИдентификаторДляФормул = УникальныйИдентификаторДляФормул(ЗаголовокДляФормул, Объект.Ссылка);
@@ -99,33 +99,6 @@
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<items xsi:type="form:Button">
<name>БольшеНеНапоминать</name>
<id>10</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<skipOnInput>false</skipOnInput>
<extendedTooltip>
<name>БольшеНеНапоминатьРасширеннаяПодсказка</name>
<id>13</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>
<horizontalAlign>Right</horizontalAlign>
<autoFill>true</autoFill>
</autoCommandBar>
@@ -210,28 +183,6 @@
<currentRowUse>DontUse</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</formCommands>
<formCommands>
<name>БольшеНеНапоминать</name>
<title>
<key>ru</key>
<value>Больше не напоминать</value>
</title>
<id>3</id>
<toolTip>
<key>ru</key>
<value>Не устанавливать и больше не напоминать</value>
</toolTip>
<use>
<common>true</common>
</use>
<action xsi:type="form:FormCommandHandlerContainer">
<handler>
<name>БольшеНеНапоминать</name>
</handler>
</action>
<currentRowUse>DontUse</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</formCommands>
<parameters>
<name>ТекстПредложения</name>
<valueType>
@@ -24,7 +24,6 @@
Если Не Параметры.ВозможноПродолжениеБезУстановки Тогда
Элементы.ПродолжитьБезУстановки.Заголовок = НСтр("ru = 'Отмена'");
Элементы.БольшеНеНапоминать.Видимость = Ложь;
КонецЕсли;
КонецПроцедуры
@@ -44,13 +43,6 @@
&НаКлиенте
Процедура ПродолжитьБезУстановки(Команда)
Закрыть("ПродолжитьБезУстановки");
КонецПроцедуры
&НаКлиенте
Процедура БольшеНеНапоминать(Команда)
Закрыть("БольшеНеПредлагать");
КонецПроцедуры
@@ -86,7 +86,7 @@
Если ТипЗнч(ТекущийЭлемент) = Тип("ПолеФормы")
И ТекущийЭлемент.Вид = ВидПоляФормы.ПолеВвода
И СтрНайти(ТекущийЭлемент.Имя, "Текст") = 1 Тогда
И СтрНайти(ТекущийЭлемент.Имя, "Текст") > 0 Тогда
ВставитьТекст(ТекущийЭлемент, ШаблоныТекста[Команда.Имя]);
ОбновитьОбразец();
@@ -305,17 +305,7 @@
Если РезультатыПроверок.ПродолжитьНастройкуНовойСинхронизации Тогда
Если ТекущиеДанные.ВнешняяСистема
И РезультатыПроверок.ФоновоеЗаданиеНастройки <> Неопределено Тогда
ОписаниеСтрокиПриложения.Вставить("ОбменДаннымиСВнешнейСистемой", Истина);
ОткрытьФормуОжиданияОкончанияНастройки(РезультатыПроверок.ФоновоеЗаданиеНастройки, ОписаниеСтрокиПриложения);
Иначе
ЗавершитьНастройкуСинхронизацииВДиалоге(ОписаниеСтрокиПриложения, ДанныеДляЗавершенияНастройки);
КонецЕсли;
ЗавершитьНастройкуСинхронизацииВДиалоге(ОписаниеСтрокиПриложения, ДанныеДляЗавершенияНастройки);
ИначеЕсли ОписаниеСтрокиПриложения.ЗапускОбменаИзКорреспондента
И НЕ РезультатыПроверок.ПолученоСообщениеДляСопоставления Тогда
@@ -354,17 +344,7 @@
РезультатыПроверок = СерверныеПроверкиПередВыполнениемКоманд(ОписаниеСтрокиПриложения, ДанныеДляЗавершенияНастройки, "Минимум");
Если РезультатыПроверок.ПродолжитьНастройкуНовойСинхронизации Тогда
Если ТекущиеДанные.ВнешняяСистема
И РезультатыПроверок.ФоновоеЗаданиеНастройки <> Неопределено Тогда
ОписаниеСтрокиПриложения.Вставить("ОбменДаннымиСВнешнейСистемой", Истина);
ОткрытьФормуОжиданияОкончанияНастройки(РезультатыПроверок.ФоновоеЗаданиеНастройки, ОписаниеСтрокиПриложения);
Иначе
ОткрытьФормуПомощникаНастройкиНовойСинхронизации(ОписаниеСтрокиПриложения, ДанныеДляЗавершенияНастройки);
КонецЕсли;
ОткрытьФормуПомощникаНастройкиНовойСинхронизации(ОписаниеСтрокиПриложения, ДанныеДляЗавершенияНастройки);
Иначе
@@ -692,9 +672,6 @@
НастройкаЗавершена = НастройкаСинхронизацииЗавершена(СтрокаПриложение, ДанныеДляЗавершенияНастройки);
РезультатыПроверок.Вставить("ПродолжитьНастройкуНовойСинхронизации", НЕ НастройкаЗавершена);
ФоновоеЗаданиеНастройки = ФоновоеЗаданиеВариантыНастроекОбменаДаннымиСВнешнимиСистемами(СтрокаПриложение.УзелИнформационнойБазы, УникальныйИдентификатор);
РезультатыПроверок.Вставить("ФоновоеЗаданиеНастройки", ФоновоеЗаданиеНастройки);
Если ВариантПроверки <> "Минимум" Тогда
ПолученоСообщениеДляСопоставления = ОбменДаннымиСервер.ПолученоСообщениеСДаннымиДляСопоставления(СтрокаПриложение.УзелИнформационнойБазы);
@@ -1097,10 +1074,24 @@
ОповещениеОЗакрытии = Новый ОписаниеОповещения("ПослеЗавершенияНастройкиПараметровСинхронизации", ЭтотОбъект);
КлючУникальностиПомощника = СтрШаблон("%1_%2_%3", ПараметрыПомощника.ИмяПланаОбмена, ПараметрыПомощника.ИдентификаторНастройки, ПараметрыПомощника.УзелОбмена.УникальныйИдентификатор());
ОткрытьФорму("Обработка.ПомощникСозданияОбменаДанными.Форма.НастройкаСинхронизации",
ПараметрыПомощника, ЭтотОбъект, КлючУникальностиПомощника, , , ОповещениеОЗакрытии, РежимОткрытияОкнаФормы.Независимый);
Если ТекущиеДанные.ВнешняяСистема Тогда
ФоновоеЗаданиеНастройки = ФоновоеЗаданиеВариантыНастроекОбменаДаннымиСВнешнимиСистемами(ТекущиеДанные.УзелИнформационнойБазы, УникальныйИдентификатор);
Если ФоновоеЗаданиеНастройки <> Неопределено Тогда
ПараметрыПомощника.Вставить("ОбменДаннымиСВнешнейСистемой", Истина);
ОткрытьФормуОжиданияОкончанияНастройки(ФоновоеЗаданиеНастройки, ПараметрыПомощника);
КонецЕсли;
Иначе
КлючУникальностиПомощника = СтрШаблон("%1_%2_%3", ПараметрыПомощника.ИмяПланаОбмена, ПараметрыПомощника.ИдентификаторНастройки, ПараметрыПомощника.УзелОбмена.УникальныйИдентификатор());
ОткрытьФорму("Обработка.ПомощникСозданияОбменаДанными.Форма.НастройкаСинхронизации",
ПараметрыПомощника, ЭтотОбъект, КлючУникальностиПомощника, , , ОповещениеОЗакрытии, РежимОткрытияОкнаФормы.Независимый);
КонецЕсли;
КонецПроцедуры
@@ -367,6 +367,71 @@
<commandSource>Item.Сертификаты</commandSource>
</extInfo>
</items>
<items xsi:type="form:Addition">
<title>
<key>ru</key>
<value>Сертификаты поиск</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<name>СертификатыПоиск</name>
<id>364</id>
<extendedTooltip>
<name>СертификатыПоискРасширеннаяПодсказка</name>
<id>366</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>СертификатыПоискКонтекстноеМеню</name>
<id>365</id>
<autoFill>true</autoFill>
</contextMenu>
<source>Сертификаты</source>
<extInfo xsi:type="form:SearchStringAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</items>
<items xsi:type="form:Addition">
<title>
<key>ru</key>
<value>Сертификаты поиск управление</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<name>СертификатыПоискУправление</name>
<id>373</id>
<extendedTooltip>
<name>СертификатыПоискУправлениеРасширеннаяПодсказка</name>
<id>375</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>СертификатыПоискУправлениеКонтекстноеМеню</name>
<id>374</id>
<autoFill>true</autoFill>
</contextMenu>
<type>SearchControlAddition</type>
<source>Сертификаты</source>
<extInfo xsi:type="form:SearchControlAdditionExtInfo">
<autoMaxWidth>true</autoMaxWidth>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
@@ -184,7 +184,7 @@
Если Не ПустаяСтрока(СтрокаПерехода.ИмяОбработчикаПриПереходеДалее)
И Не СтрокаПерехода.ДлительнаяОперация Тогда
ИмяПроцедуры = "Подключаемый_[ИмяОбработчика](Отказ)";
ИмяПроцедуры = "[ИмяОбработчика](Отказ)";
ИмяПроцедуры = СтрЗаменить(ИмяПроцедуры, "[ИмяОбработчика]", СтрокаПерехода.ИмяОбработчикаПриПереходеДалее);
Отказ = Ложь;
@@ -215,7 +215,7 @@
Если Не ПустаяСтрока(СтрокаПерехода.ИмяОбработчикаПриПереходеНазад)
И Не СтрокаПерехода.ДлительнаяОперация Тогда
ИмяПроцедуры = "Подключаемый_[ИмяОбработчика](Отказ)";
ИмяПроцедуры = "[ИмяОбработчика](Отказ)";
ИмяПроцедуры = СтрЗаменить(ИмяПроцедуры, "[ИмяОбработчика]", СтрокаПерехода.ИмяОбработчикаПриПереходеНазад);
Отказ = Ложь;
@@ -251,7 +251,7 @@
// обработчик ПриОткрытии
Если Не ПустаяСтрока(СтрокаПереходаТекущая.ИмяОбработчикаПриОткрытии) Тогда
ИмяПроцедуры = "Подключаемый_[ИмяОбработчика](Отказ, ПропуститьСтраницу, ЭтоПереходДалее)";
ИмяПроцедуры = "[ИмяОбработчика](Отказ, ПропуститьСтраницу, ЭтоПереходДалее)";
ИмяПроцедуры = СтрЗаменить(ИмяПроцедуры, "[ИмяОбработчика]", СтрокаПереходаТекущая.ИмяОбработчикаПриОткрытии);
Отказ = Ложь;
@@ -301,7 +301,7 @@
// обработчик ОбработкаДлительнойОперации
Если Не ПустаяСтрока(СтрокаПереходаТекущая.ИмяОбработчикаДлительнойОперации) Тогда
ИмяПроцедуры = "Подключаемый_[ИмяОбработчика](Отказ, ПерейтиДалее)";
ИмяПроцедуры = "[ИмяОбработчика](Отказ, ПерейтиДалее)";
ИмяПроцедуры = СтрЗаменить(ИмяПроцедуры, "[ИмяОбработчика]", СтрокаПереходаТекущая.ИмяОбработчикаДлительнойОперации);
Отказ = Ложь;
@@ -504,15 +504,15 @@
НовыйПереход = ТаблицаПереходовНоваяСтрока("Ожидание", "СтраницаНавигацииОжидание");
НовыйПереход.ДлительнаяОперация = Истина;
НовыйПереход.ИмяОбработчикаДлительнойОперации = "Ожидание_ОбработкаДлительнойОперации";
НовыйПереход.ИмяОбработчикаДлительнойОперации = "Подключаемый_Ожидание_ОбработкаДлительнойОперации";
НовыйПереход = ТаблицаПереходовНоваяСтрока("Ожидание", "СтраницаНавигацииОжидание");
НовыйПереход.ДлительнаяОперация = Истина;
НовыйПереход.ИмяОбработчикаДлительнойОперации = "ОжиданиеДлительнаяОперация_ОбработкаДлительнойОперации";
НовыйПереход.ИмяОбработчикаДлительнойОперации = "Подключаемый_ОжиданиеДлительнаяОперация_ОбработкаДлительнойОперации";
НовыйПереход = ТаблицаПереходовНоваяСтрока("Ожидание", "СтраницаНавигацииОжидание");
НовыйПереход.ДлительнаяОперация = Истина;
НовыйПереход.ИмяОбработчикаДлительнойОперации = "ОжиданиеДлительнаяОперацияОкончание_ОбработкаДлительнойОперации";
НовыйПереход.ИмяОбработчикаДлительнойОперации = "Подключаемый_ОжиданиеДлительнаяОперацияОкончание_ОбработкаДлительнойОперации";
НовыйПереход = ТаблицаПереходовНоваяСтрока("Завершение", "СтраницаНавигацииОкончание");
@@ -56,7 +56,6 @@
ЕстьРазрешенныйВывод = ЕстьРазрешенныйВывод();
НастроитьВидимостьЭлементовФормы(ЕстьРазрешенныйВывод);
УстановитьПризнакДоступностиВыводаВПредставленияхПечатныхФорм(ЕстьРазрешенныйВывод);
УстановитьИмяПринтераВПодсказкеКнопкиПечать();
УстановитьЗаголовокФормы();
Если Не ОбщегоНазначения.ЭтоМобильныйКлиент() И ЭтоПечатьКомплекта() Тогда
Элементы.Копий.Заголовок = НСтр("ru = 'Копий комплекта'");
@@ -158,6 +157,8 @@
ОбщегоНазначенияСлужебныйКлиент.УстановитьВидимостьПанелиПоказателей(Элементы, РазвернутьОбластьПоказателей);
ОбщегоНазначенияСлужебныйКлиент.РассчитатьПоказатели(ЭтотОбъект, "ТекущаяПечатнаяФорма", ОсновнойПоказатель);
УстановитьИмяПринтераВПодсказкеКнопкиПечать();
ИнтеграцияПодсистемБСПКлиент.ПечатьДокументовПослеОткрытия(ЭтотОбъект);
УправлениеПечатьюКлиентПереопределяемый.ПечатьДокументовПослеОткрытия(ЭтотОбъект);
@@ -778,14 +779,19 @@
Элементы.ГруппаНастройкаКомплектаКоманднаяПанель.Видимость = Видимость И ДоступнаНастройкаКомплекта;
КонецПроцедуры
&НаСервере
&НаКлиенте
Процедура УстановитьИмяПринтераВПодсказкеКнопкиПечать()
Если НастройкиПечатныхФорм.Количество() > 0 Тогда
ИмяПринтера = ЭтотОбъект[НастройкиПечатныхФорм[0].ИмяРеквизита].ИмяПринтера;
Если Не ПустаяСтрока(ИмяПринтера) Тогда
ЭтотОбъект.Команды["Печать"].Подсказка = НСтр("ru = 'Напечатать на принтере'") + " (" + ИмяПринтера + ")";
КонецЕсли;
ИмяПринтера = ТекущаяПечатнаяФорма.ИмяПринтера;
Подсказка = Элементы.КнопкаПечатьКоманднаяПанель.РасширеннаяПодсказка;
Если Не ПустаяСтрока(ИмяПринтера) И Не СтрНайти(Подсказка.Заголовок, ИмяПринтера) Тогда
Элементы.КнопкаПечатьКоманднаяПанель.РасширеннаяПодсказка.Заголовок =
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Напечатать на принтере (%1)'"), ИмяПринтера);
КонецЕсли;
ПодключитьОбработчикОжидания("УстановитьИмяПринтераВПодсказкеКнопкиПечать", 3, Истина);
КонецПроцедуры
&НаСервере
@@ -9,20 +9,127 @@
<items xsi:type="form:FormGroup">
<name>ГруппаЧасовойПоясПрограммы</name>
<id>3</id>
<items xsi:type="form:FormGroup">
<name>ГруппаЧасовойПояс</name>
<id>85</id>
<items xsi:type="form:FormField">
<name>ЧасовойПоясПрограммы</name>
<id>5</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ЧасовойПоясПрограммы</segments>
</dataPath>
<handlers>
<event>OnChange</event>
<name>ЧасовойПоясПрограммыПриИзменении</name>
</handlers>
<extendedTooltip>
<name>ЧасовойПоясПрограммыExtendedTooltip</name>
<id>7</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ЧасовойПоясПрограммыКонтекстноеМеню</name>
<id>6</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>20</width>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<horizontalStretch>false</horizontalStretch>
<wrap>true</wrap>
<listChoiceMode>true</listChoiceMode>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<editTextUpdate>OnValueChange</editTextUpdate>
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:Button">
<name>ВремяТекущегоСеанса</name>
<id>8</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ВремяТекущегоСеансаРасширеннаяПодсказка</name>
<id>9</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>Hyperlink</type>
<commandName>CommonCommand.ВремяТекущегоСеанса</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>86</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>AlwaysHorizontal</group>
<behavior>Auto</behavior>
<representation>WeakSeparation</representation>
<showLeftMargin>true</showLeftMargin>
<throughAlign>Auto</throughAlign>
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ЧасовойПоясПрограммы</name>
<id>5</id>
<name>ВремяЧасовогоПояса</name>
<id>82</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ЧасовойПоясПрограммы</segments>
<segments>ВремяВыбранногоЧасовогоПояса</segments>
</dataPath>
<extendedTooltip>
<name>ЧасовойПоясПрограммыExtendedTooltip</name>
<id>7</id>
<name>ВремяЧасовогоПоясаРасширеннаяПодсказка</name>
<id>84</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
@@ -31,54 +138,20 @@
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ЧасовойПоясПрограммыКонтекстноеМеню</name>
<id>6</id>
<name>ВремяЧасовогоПоясаКонтекстноеМеню</name>
<id>83</id>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<type>LabelField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<extInfo xsi:type="form:LabelFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<horizontalStretch>false</horizontalStretch>
<wrap>true</wrap>
<listChoiceMode>true</listChoiceMode>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<editTextUpdate>OnValueChange</editTextUpdate>
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:Button">
<name>ВремяТекущегоСеанса</name>
<id>8</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ВремяТекущегоСеансаРасширеннаяПодсказка</name>
<id>9</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>Hyperlink</type>
<commandName>CommonCommand.ВремяТекущегоСеанса</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>
@@ -105,10 +178,9 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<group>Vertical</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>Auto</currentRowUse>
</extInfo>
@@ -894,6 +966,7 @@
<common>true</common>
</edit>
<fillChecking>ShowError</fillChecking>
<savedData>true</savedData>
</attributes>
<attributes>
<name>ИспользоватьДополнительныйЯзык1</name>
@@ -911,6 +984,7 @@
<edit>
<common>true</common>
</edit>
<savedData>true</savedData>
</attributes>
<attributes>
<name>ДополнительныйЯзык1</name>
@@ -929,6 +1003,7 @@
<edit>
<common>true</common>
</edit>
<savedData>true</savedData>
</attributes>
<attributes>
<name>ЧасовойПоясПрограммы</name>
@@ -947,6 +1022,7 @@
<edit>
<common>true</common>
</edit>
<savedData>true</savedData>
</attributes>
<attributes>
<name>ДополнительныйЯзык2</name>
@@ -965,6 +1041,7 @@
<edit>
<common>true</common>
</edit>
<savedData>true</savedData>
</attributes>
<attributes>
<name>ИспользоватьДополнительныйЯзык2</name>
@@ -982,6 +1059,7 @@
<edit>
<common>true</common>
</edit>
<savedData>true</savedData>
</attributes>
<attributes>
<name>Источник</name>
@@ -1010,6 +1088,56 @@
<common>true</common>
</edit>
</attributes>
<attributes>
<name>ВремяВыбранногоЧасовогоПояса</name>
<title>
<key>ru</key>
<value>Время выбранного часового пояса</value>
</title>
<id>9</id>
<valueType>
<types>String</types>
<stringQualifiers/>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<attributes>
<name>Смещение</name>
<id>10</id>
<valueType>
<types>Number</types>
<numberQualifiers>
<precision>10</precision>
</numberQualifiers>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<attributes>
<name>СмещениеЧасовогоПояса</name>
<id>11</id>
<valueType>
<types>Number</types>
<numberQualifiers>
<precision>10</precision>
</numberQualifiers>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<formCommands>
<name>ОК</name>
<title>
@@ -22,7 +22,8 @@
Если Источник = "ПанельАдминистрированияБСП" Тогда
Элементы.ОК.Заголовок = НСтр("ru = 'Изменить'")
КонецЕсли;
Элементы.ЧасовойПоясПрограммы.СписокВыбора.ЗагрузитьЗначения(ПолучитьДопустимыеЧасовыеПояса());
ЗаполнитьЧасовыеПояса();
Если ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда
@@ -73,6 +74,9 @@
И СтрНайти(ПараметрЗапуска, "ВыполнитьОбновлениеИЗавершитьРаботу") > 0 Тогда
ПодключитьОбработчикОжидания("УстановитьЗначенияПоУмолчанию", 0.1, Истина);
КонецЕсли;
СмещениеЧасовогоПояса = ОбщегоНазначенияКлиент.ДатаСеанса() - ТекущиеВремяНаКлиенте();
УстановитьВремя();
КонецПроцедуры
@@ -218,6 +222,11 @@
ПредыдущийЯзык = ДополнительныйЯзык1;
КонецПроцедуры
&НаКлиенте
Процедура ЧасовойПоясПрограммыПриИзменении(Элемент)
СмещениеЧасовогоПояса = СмещениеЧасовогоПояса(ЧасовойПоясПрограммы, ТекущиеВремяНаКлиенте());
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
@@ -273,8 +282,8 @@
&НаСервере
Функция ЗапуститьФоновоеПерезаполнениеНаСервере(Знач УникальныйИдентификатор)
ПараметрыМетода = СтарыеИНовыеЗначенияКонстант();
ЗаписатьЗначенияКонстант();
ПараметрыМетода = Новый Структура;
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор);
ПараметрыВыполнения.НаименованиеФоновогоЗадания = НСтр("ru = 'Перезаполнение строк предопределенных элементов и классификаторов.'");
@@ -412,4 +421,71 @@
КонецФункции
// Возвращаемое значение:
// см. МультиязычностьСервер.ОписаниеСтарыхИНовыхНастроекЯзыков
//
&НаСервере
Функция СтарыеИНовыеЗначенияКонстант()
Результат = МультиязычностьСервер.ОписаниеСтарыхИНовыхНастроекЯзыков();
Результат.ОсновнойЯзыкСтароеЗначение= Константы.ОсновнойЯзык.Получить();
Результат.ОсновнойЯзыкНовоеЗначение = ОсновнойЯзык;
Результат.ДополнительныйЯзык1СтароеЗначение = Константы.ДополнительныйЯзык1.Получить();
Результат.ДополнительныйЯзык1НовоеЗначение = ДополнительныйЯзык1;
Результат.ДополнительныйЯзык2СтароеЗначение = Константы.ДополнительныйЯзык2.Получить();
Результат.ДополнительныйЯзык2НовоеЗначение = ДополнительныйЯзык2;
Возврат Результат;
КонецФункции
// Часовые пояса
&НаСервере
Процедура ЗаполнитьЧасовыеПояса()
Для Каждого ОписаниеЧасовогоПояса Из ПолучитьДопустимыеЧасовыеПояса() Цикл
СмещениеДатой = Дата(1, 1, 1) + СмещениеСтандартногоВремени(ОписаниеЧасовогоПояса);
ПредставлениеСмещения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("(UTC+%1)",
Формат(СмещениеДатой, "ДФ=HH:mm; ДП=00:00;"));
ПредставлениеЧасовогоПояса = ПредставлениеСмещения + " " + ОписаниеЧасовогоПояса;
Элементы.ЧасовойПоясПрограммы.СписокВыбора.Добавить(ОписаниеЧасовогоПояса, ПредставлениеЧасовогоПояса);
КонецЦикла;
КонецПроцедуры
&НаСервереБезКонтекста
Функция СмещениеЧасовогоПояса(ЧасовойПоясПрограммы, ВремяНаКлиенте)
ДатаСеансаУниверсальная = УниверсальноеВремя(ТекущаяДатаСеанса(), ЧасовойПоясСеанса());
ДатаСеансаНовыйЧасовойПояс = ДатаСеансаУниверсальная + СмещениеСтандартногоВремени(ЧасовойПоясПрограммы);
Возврат ДатаСеансаНовыйЧасовойПояс - ВремяНаКлиенте + СмещениеЛетнегоВремени(ЧасовойПоясПрограммы);
КонецФункции
&НаКлиенте
Процедура УстановитьВремя()
ВремяВыбранногоЧасовогоПояса = ТекущиеВремяНаКлиенте() + СмещениеЧасовогоПояса;
ПодключитьОбработчикОжидания("УстановитьВремя", 1, Истина);
КонецПроцедуры
&НаКлиенте
Функция ТекущиеВремяНаКлиенте()
// АПК:143-выкл -Требуется ТекущаяДата для расчета смещения отображаемого времени сеанса на форме.
Возврат ТекущаяДата();
// АПК:143-вкл
КонецФункции
#КонецОбласти
@@ -190,6 +190,55 @@
<textSize>Normal</textSize>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ТаблицаЗначенийСвойствКолонкаВопрос</name>
<id>39</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>
<toolTip>
<key>ru</key>
<value>Подсказка</value>
</toolTip>
<extendedTooltip>
<name>ТаблицаЗначенийСвойствКолонкаВопросРасширеннаяПодсказка</name>
<id>41</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ТаблицаЗначенийСвойствКолонкаВопросКонтекстноеМеню</name>
<id>40</id>
<autoFill>true</autoFill>
</contextMenu>
<type>LabelField</type>
<editMode>Enter</editMode>
<cellHyperlink>true</cellHyperlink>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<cellHyperlinkRepresentation>Show</cellHyperlinkRepresentation>
<cellHyperlinkDisplayVariant>Always</cellHyperlinkDisplayVariant>
<extInfo xsi:type="form:LabelFieldExtInfo">
<width>2</width>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<hyperlink>true</hyperlink>
</extInfo>
</items>
<commandBarLocation>None</commandBarLocation>
<autoCommandBar>
<name>ТаблицаЗначенийСвойствКоманднаяПанель</name>
@@ -197,6 +246,10 @@
<horizontalAlign>Left</horizontalAlign>
<autoFill>true</autoFill>
</autoCommandBar>
<handlers>
<event>Selection</event>
<name>ТаблицаЗначенийСвойствВыбор</name>
</handlers>
<handlers>
<event>BeforeAddRow</event>
<name>ТаблицаЗначенийСвойствПередНачаломДобавления</name>
@@ -587,6 +640,38 @@
<common>true</common>
</edit>
</columns>
<columns>
<name>КолонкаВопрос</name>
<title>
<key>ru</key>
<value>Колонка вопрос</value>
</title>
<id>10</id>
<valueType>
<types>String</types>
<stringQualifiers/>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</columns>
<columns>
<name>Подсказка</name>
<id>11</id>
<valueType>
<types>String</types>
<stringQualifiers/>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</columns>
</attributes>
<attributes>
<name>ДоступныеНаборыСвойств</name>
@@ -110,6 +110,34 @@
Элементы.ТаблицаЗначенийСвойствЗначение.ПараметрыВыбора = Новый ФиксированныйМассив(ПараметрыВыбораМассив);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаЗначенийСвойствВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
Если Поле.Имя <> Элементы.ТаблицаЗначенийСвойствКолонкаВопрос.Имя Тогда
Возврат;
КонецЕсли;
СтандартнаяОбработка = Ложь;
Строка = ТаблицаЗначенийСвойств.НайтиПоИдентификатору(ВыбраннаяСтрока);
Если Не ЗначениеЗаполнено(Строка.Подсказка) Тогда
Возврат;
КонецЕсли;
ТекстЗаголовка = НСтр("ru = 'Подсказка сведения ""%1""'");
ТекстЗаголовка = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстЗаголовка, Строка.Наименование);
ПараметрыВопросаПользователю = СтандартныеПодсистемыКлиент.ПараметрыВопросаПользователю();
ПараметрыВопросаПользователю.Заголовок = ТекстЗаголовка;
ПараметрыВопросаПользователю.ПредлагатьБольшеНеЗадаватьЭтотВопрос = Ложь;
ПараметрыВопросаПользователю.Картинка = БиблиотекаКартинок.Информация32;
Кнопки = Новый СписокЗначений;
Кнопки.Добавить("ОК", НСтр("ru = 'ОК'"));
СтандартныеПодсистемыКлиент.ПоказатьВопросПользователю(Неопределено, Строка.Подсказка, Кнопки, ПараметрыВопросаПользователю);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
@@ -254,6 +282,10 @@
НоваяСтрока = ТаблицаЗначенийСвойств.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка);
Если ЗначениеЗаполнено(НоваяСтрока.Подсказка) Тогда
НоваяСтрока.КолонкаВопрос = "?";
КонецЕсли;
НоваяСтрока.НомерКартинки = ?(Строка.Удалено, 0, -1);
НоваяСтрока.ДоступноДляИзменения = ДоступноДляИзменения;
@@ -698,8 +698,7 @@
Для Каждого Параметр Из НайденныеПараметры Цикл
Если СтрНайти(Текст, Параметр) Тогда
Счетчик = Счетчик + 1;
Идентификатор = "%" + XMLСтрока(Счетчик);
Текст = СтрЗаменить(Текст, Параметр, Идентификатор);
Текст = СтрЗаменить(Текст, Параметр, ИдентификаторПараметра(Счетчик));
ОбработанныеПараметры.Добавить(Параметр);
КонецЕсли;
КонецЦикла;
@@ -715,10 +714,22 @@
&НаСервере
Функция ВернутьПараметрыВТекст(Знач Текст, ОбработанныеПараметры)
Для Счетчик = 1 По ОбработанныеПараметры.Количество() Цикл
Текст = СтрЗаменить(Текст, ИдентификаторПараметра(Счетчик), "%" + XMLСтрока(Счетчик));
КонецЦикла;
Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтрокуИзМассива(Текст, ОбработанныеПараметры);
КонецФункции
// Последовательность символов, которая не должна меняться при переводе на любой язык.
&НаСервере
Функция ИдентификаторПараметра(Номер)
Возврат "{<" + XMLСтрока(Номер) + ">}";
КонецФункции
&НаКлиенте
Процедура ПоказатьСкрытьОригинал(Команда)
@@ -103,7 +103,7 @@
Процедура КомпоновщикНастроекНастройкиПараметрыВыводаПриИзменении(Элемент)
Строка = Элемент.ТекущиеДанные;
ИдентификаторПараметра = НСтр("ru = 'Заголовок'");
ИдентификаторПараметра = "Заголовок";
Если Строка <> Неопределено
И Строка.Свойство("Параметр")
@@ -383,14 +383,26 @@
Дополнение = ОтчетыКлиентСервер.ДополнитьСписок(Список, Выбранные, Ложь, Истина);
ЗначениеЭлементаНастройки = ОбщегоНазначенияКлиент.СкопироватьРекурсивно(Список);
Индекс = ЗначениеЭлементаНастройки.Количество() - 1;
Пока Индекс >= 0 Цикл
ТекущееЗначение = ЗначениеЭлементаНастройки[Индекс];
Если Не ТекущееЗначение.Пометка Тогда
ЗначениеЭлементаНастройки.Удалить(ТекущееЗначение);
КонецЕсли;
Индекс = Индекс - 1;
КонецЦикла;
Индекс = ПутьКДаннымЭлементов.ПоИмени[Элемент.Имя];
КомпоновщикНастроек = Отчет.КомпоновщикНастроек;
ЭлементНастройки = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы[Индекс];
Если ТипЗнч(ЭлементНастройки) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда
ЭлементНастройки.Значение = Список;
ЭлементНастройки.Значение = ЗначениеЭлементаНастройки;
Иначе
ЭлементНастройки.ПравоеЗначение = Список;
ЭлементНастройки.ПравоеЗначение = ЗначениеЭлементаНастройки;
КонецЕсли;
ЭлементНастройки.Использование = Истина;
@@ -1109,15 +1121,35 @@
КонецЕсли;
ВариантыОтчетовСлужебныйКлиент.ИзменитьФормулу(
ЭтотОбъект, Отчет.КомпоновщикНастроек.Настройки, Строка(Строка.Поле),, Истина);
ЭтотОбъект, Отчет.КомпоновщикНастроек.Настройки, Строка(Строка.Поле));
КонецПроцедуры
// Параметры:
// ОписаниеФормулы - ДоступноеПолеКомпоновкиДанных
// - Структура:
// * Наименование - Строка
// * ПредставлениеФормулы - Строка
// * Формула - Строка
// Формула - Структура:
// * КоллекцияПолей - ДоступныеПоляКомпоновкиДанных
// * Формула - ПользовательскоеПолеВыражениеКомпоновкиДанных
//
&НаКлиенте
Процедура ПослеИзмененияФормулы(ОписаниеФормулы, Формула) Экспорт
Если ТипЗнч(ОписаниеФормулы) <> Тип("Структура") Тогда
Возврат;
КонецЕсли;
ВариантыОтчетовСлужебныйКлиент.ПослеИзмененияФормулы(ОписаниеФормулы, Формула);
Строка = Элементы.ВыбранныеПоля.ТекущиеДанные; // ДанныеФормыЭлементДерева
Если Строка <> Неопределено Тогда
Строка.Заголовок = ОписаниеФормулы.Заголовок;
КонецЕсли;
УстановитьМодифицированность();
КонецПроцедуры
@@ -1761,7 +1793,7 @@
ПараметрыФормы.Вставить("ВариантНаименование", ВариантНаименование);
ПараметрыФормы.Вставить("ИдентификаторЭлементаСтруктурыНастроек", ИдентификаторЭлементаСтруктурыНастроек);
ПараметрыФормы.Вставить("ИмяСтраницы", Элементы.СтраницыНастроек.ТекущаяСтраница.Имя);
ПараметрыФормы.Вставить("Заголовок", ВариантНаименование);
ПараметрыФормы.Вставить("ПредставлениеВарианта", ВариантНаименование);
ПараметрыФормы.Вставить("ВариантМодифицирован", ВариантИзменен);
ПараметрыФормы.Вставить(
"ПользовательскиеНастройкиМодифицированы",
@@ -3235,7 +3267,8 @@
&НаКлиенте
Функция ЗначенияДляВыбора(Строка)
ЗначенияДляВыбора = Строка.ДоступныеЗначения;
ЗначенияДляВыбора = ОбщегоНазначенияКлиент.СкопироватьРекурсивно(Строка.ДоступныеЗначения);
Если ЗначенияДляВыбора = Неопределено Тогда
ЗначенияДляВыбора = Новый СписокЗначений;
КонецЕсли;
@@ -3255,6 +3288,8 @@
ОтчетыКлиентСервер.ДополнитьСписок(ЗначенияДляВыбора, ЗначениеОтбора);
КонецЕсли;
ОтчетыКлиентСервер.ОбновитьПредставленияСписка(ЗначенияДляВыбора, Строка.ДоступныеЗначения);
Возврат ЗначенияДляВыбора;
КонецФункции
@@ -5549,7 +5549,11 @@
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<extInfo xsi:type="form:ButtonGroupExtInfo"/>
<type>Popup</type>
<extInfo xsi:type="form:PopupGroupExtInfo">
<representation>Auto</representation>
<importance>Normal</importance>
</extInfo>
</items>
<items xsi:type="form:Button">
<name>КонтекстноеМенюОбластиОбщееСкомпоноватьРезультат</name>
@@ -664,12 +664,8 @@
&НаКлиенте
Процедура ОтчетТабличныйДокументПриАктивизации(Элемент)
#Если ВебКлиент Тогда
ПодключитьОбработчикОжидания("ПодготовитьКомандыКонтекстнойНастройки", 0.1, Истина);
#Иначе
ПодготовитьКомандыКонтекстнойНастройки();
#КонецЕсли
ВариантыОтчетовСлужебныйКлиент.ПриАктивизацииРезультатаОтчета(ЭтотОбъект, Элементы.ОтчетТабличныйДокумент);
ПодключитьОбработчикОжидания("РассчитатьПоказателиДинамически", 0.2, Истина);
КонецПроцедуры
@@ -1249,7 +1245,10 @@
&НаКлиенте
Процедура ПослеФормирования(Результат, ПараметрыФормирования) Экспорт
Если ФоновоеЗаданиеИдентификатор <> ПараметрыФормирования.ИдентификаторЗадания Тогда
ПоказатьВыбранныйУровеньГруппировок();
Возврат;
КонецЕсли;
Если Результат = Неопределено Тогда
@@ -1520,7 +1519,8 @@
ЗначенияДляВыбора = ЗначенияДляВыбора(
Элемент.СписокВыбора,
Сведения.ЭлементПользовательскойНастройки,
Элемент.ДоступныеТипы);
Элемент.ДоступныеТипы,
ДоступныеЗначения);
ОграничиватьВыборУказаннымиЗначениями = ДоступныеЗначения <> Неопределено;
@@ -1551,19 +1551,21 @@
КонецПроцедуры
&НаКлиенте
Функция ЗначенияДляВыбора(СписокВыбора, ЭлементНастройки, ТипЗначения)
ЗначенияДляВыбора = СписокВыбора;
Функция ЗначенияДляВыбора(СписокВыбора, ЭлементНастройки, ДоступныеТипы, ДоступныеЗначения)
ЗначенияДляВыбора = ОбщегоНазначенияКлиент.СкопироватьРекурсивно(СписокВыбора);
Если ЭлементНастройки = Неопределено Тогда
Возврат ЗначенияДляВыбора;
КонецЕсли;
ЗначенияДляВыбора.ТипЗначения = ТипЗначения;
ЗначенияДляВыбора.ТипЗначения = ДоступныеТипы;
ЗначениеОтбора = ОтчетыКлиент.КэшЗначенияОтбора(Отчет.КомпоновщикНастроек, ЭлементНастройки);
Если ЗначениеОтбора <> Неопределено Тогда
ОтчетыКлиентСервер.ДополнитьСписок(ЗначенияДляВыбора, ЗначениеОтбора);
КонецЕсли;
ОтчетыКлиентСервер.ОбновитьПредставленияСписка(ЗначенияДляВыбора, ДоступныеЗначения);
Возврат ЗначенияДляВыбора;
КонецФункции
@@ -1672,11 +1674,6 @@
Сформировать();
КонецПроцедуры
&НаКлиенте
Процедура ПодготовитьКомандыКонтекстнойНастройки()
ВариантыОтчетовСлужебныйКлиент.ПриАктивизацииРезультатаОтчета(ЭтотОбъект, Элементы.ОтчетТабличныйДокумент);
КонецПроцедуры
#Область РасчетПоказателей
// Параметры:
@@ -1831,6 +1828,7 @@
Функция ПодходящиеЗначенияУниверсальногоПоиска(Запрос)
ПодходящиеЗначения = Новый СписокЗначений;
МаксимальноеКоличествоПодходящихЗначений = 50;
ПараметрыПоиска = ПараметрыУниверсальногоПоиска(Запрос);
@@ -1852,15 +1850,30 @@
НайтиПодходящиеЗначенияУниверсальногоПоискаЧисла(ПодходящиеЗначения, ПараметрыПоиска);
Если ПодходящиеЗначения.Количество() = 0
И СтрДлина(ПараметрыПоиска.СтрокаПоиска) > 2 Тогда
Если ПодходящиеЗначения.Количество() = 0 Тогда
Представление = Новый ФорматированнаяСтрока(НСтр("ru = 'Совпадений не найдено'"),, WebЦвета.НейтральноСерый);
ПодходящиеЗначения.Добавить("", Представление);
Если СтрДлина(ПараметрыПоиска.СтрокаПоиска) > 2 Тогда
Сообщение = НСтр("ru = 'Совпадений не найдено'");
Иначе
Сообщение = НСтр("ru = 'Продолжите ввод...'");
КонецЕсли;
СообщениеФорматированное = Новый ФорматированнаяСтрока(Сообщение,, WebЦвета.НейтральноСерый);
ПодходящиеЗначения.Добавить("", СообщениеФорматированное);
КонецЕсли;
Возврат ПодходящиеЗначения;
Если ПодходящиеЗначения.Количество() <= МаксимальноеКоличествоПодходящихЗначений Тогда
Возврат ПодходящиеЗначения;
КонецЕсли;
ПодходящиеЗначенияНормализованные = Новый СписокЗначений;
Для НомерЭлемента = 1 По МаксимальноеКоличествоПодходящихЗначений Цикл
ЗаполнитьЗначенияСвойств(ПодходящиеЗначенияНормализованные.Добавить(), ПодходящиеЗначения[НомерЭлемента - 1]);
КонецЦикла;
Возврат ПодходящиеЗначенияНормализованные;
КонецФункции
@@ -1939,10 +1952,18 @@
ИспользуемыеПоляПоискаПоТипам = НастройкиОтчета.ИспользуемыеПоляУниверсальногоПоискаПоТипам;
ПоляПоиска = ИспользуемыеПоляПоискаПоТипам[Тип("Число")];
Если ПоляПоиска = Неопределено Тогда
Возврат;
КонецЕсли;
ПодходящиеЗначенияДляЧисла = Новый СписокЗначений;
ОписаниеЧисла = Новый ОписаниеТипов("Число");
ЗначениеПоиска = ОписаниеЧисла.ПривестиЗначение(ПараметрыПоиска.СтрокаПоиска);
Для Каждого ПолеПоиска Из ПоляПоиска Цикл
ДоступныеПоляПоиска = ДоступныеПоляПоискаЧисла(ПоляПоиска, ЗначениеПоиска, ПараметрыПоиска.УправляющиеСимволы);
Для Каждого ПолеПоиска Из ДоступныеПоляПоиска Цикл
СвойстваПоиска = СвойстваУниверсальногоПоиска(ПолеПоиска.Ключ, ЗначениеПоиска, ПараметрыПоиска.УправляющиеСимволы);
ПредставлениеПоиска = ПредставлениеЗначенияУниверсальногоПоискаСтроки(
@@ -1951,12 +1972,39 @@
ВариантыПоиска = Новый Массив;
ВариантыПоиска.Добавить(СвойстваПоиска);
ПодходящиеЗначения.Добавить(ВариантыПоиска, ПредставлениеПоиска);
ПодходящиеЗначенияДляЧисла.Добавить(ВариантыПоиска, ПредставлениеПоиска);
КонецЦикла;
ПодходящиеЗначенияДляЧисла.СортироватьПоПредставлению();
ОтчетыКлиентСервер.ДополнитьСписок(ПодходящиеЗначения, ПодходящиеЗначенияДляЧисла);
КонецПроцедуры
&НаКлиенте
Функция ДоступныеПоляПоискаЧисла(ПоляПоиска, ЗначениеПоиска, УправляющиеСимволы)
Условие = УсловиеУниверсальногоПоиска(ЗначениеПоиска, УправляющиеСимволы);
Если Условие = ВидСравненияКомпоновкиДанных.Равно Тогда
Возврат ОбщегоНазначенияКлиент.СкопироватьРекурсивно(ПоляПоиска);
КонецЕсли;
ДоступныеПоляПоиска = Новый Соответствие;
ДоступныеПоляПараметров = Отчет.КомпоновщикНастроек.Настройки.ДоступныеПоляПараметровДанных;
Для Каждого ПолеПоиска Из ПоляПоиска Цикл
Если ДоступныеПоляПараметров.НайтиПоле(ПолеПоиска.Ключ) = Неопределено Тогда
ДоступныеПоляПоиска.Вставить(ПолеПоиска.Ключ, ПолеПоиска.Значение);
КонецЕсли;
КонецЦикла;
Возврат ДоступныеПоляПоиска;
КонецФункции
&НаСервереБезКонтекста
Процедура НайтиПодходящиеЗначенияУниверсальногоПоиска(ПодходящиеЗначения, ИспользуемыеПоляПоискаПоТипам, ПараметрыПоиска)
@@ -2027,7 +2075,7 @@
Если ВариантыПоиска = Неопределено Тогда
ПредставлениеПоиска = ПредставлениеУниверсальногоПоискаСсылки(
Выборка, СвойстваПоиска.ВидСравнения, ПараметрыПоиска.СтрокаПоиска);
Выборка, ПолеПоиска.Значение, СвойстваПоиска.ВидСравнения, ПараметрыПоиска.СтрокаПоиска);
ИндексПредставленийПоиска.Вставить(СвойстваПоиска.ПравоеЗначение, ПредставлениеПоиска);
ВариантыПоиска = Новый Массив;
@@ -2048,7 +2096,9 @@
РеквизитПоля = Новый ПолеКомпоновкиДанных(ПутьКДанным);
СвойстваПоиска = СвойстваУниверсальногоПоиска(РеквизитПоля, ПараметрыПоиска.СтрокаПоиска, ПараметрыПоиска.УправляющиеСимволы);
СвойстваПоиска = СвойстваУниверсальногоПоиска(
РеквизитПоля, ПараметрыПоиска.СтрокаПоиска, ПараметрыПоиска.УправляющиеСимволы);
ПредставлениеПоиска = ПредставлениеЗначенияУниверсальногоПоискаСтроки(
ПолеПоиска.Значение, СвойстваПоиска.ВидСравнения, ПараметрыПоиска.СтрокаПоиска);
@@ -2068,6 +2118,8 @@
КонецЦикла;
ПодходящиеЗначения.СортироватьПоПредставлению();
ДополнительныеЗначения.СортироватьПоПредставлению();
ОтчетыКлиентСервер.ДополнитьСписок(ПодходящиеЗначения, ДополнительныеЗначения);
#КонецОбласти
@@ -2220,7 +2272,7 @@
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПредставлениеУниверсальногоПоискаСсылки(Данные, Условие, СтрокаПоиска)
Функция ПредставлениеУниверсальногоПоискаСсылки(Данные, ПолеПоиска, Условие, СтрокаПоиска)
ПредставлениеЗначения = Данные.Представление;
@@ -2231,11 +2283,7 @@
КонецЕсли;
ФрагментУсловия = "";
Если Условие <> ВидСравненияКомпоновкиДанных.Равно Тогда
ФрагментУсловия = ФрагментУсловия(Условие, "");
КонецЕсли;
ФрагментУсловия = ФрагментУсловия(Условие);
НачалоСтрокиПоиска = СтрНайти(ВРег(ПредставлениеЗначения), ВРег(СтрокаПоиска));
КонецСтрокиПоиска = НачалоСтрокиПоиска + СтрДлина(СтрокаПоиска);
@@ -2247,6 +2295,7 @@
ФрагментПослеСтрокиПоиска = Сред(ПредставлениеЗначения, КонецСтрокиПоиска);
Возврат Новый ФорматированнаяСтрока(
ПолеПоиска,
ФрагментУсловия,
ФрагментДоСтрокиПоиска,
ФрагментСтрокиПоиска,
@@ -2275,10 +2324,12 @@
&НаКлиентеНаСервереБезКонтекста
Функция ФрагментУсловия(Условие, ОтступДоУсловия = " ", ОтступПослеУсловия = " ")
УсловиеНормализованное = НРег(СтрЗаменить(Условие, "<", "&lt;"));
ШаблонФрагментаУсловия = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '%1<span style=""color: СкрытыйВариантОтчетаЦвет"">%2</span>%3'"),
ОтступДоУсловия,
НРег(Условие),
УсловиеНормализованное,
ОтступПослеУсловия);
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
@@ -2390,16 +2441,10 @@
ИспользуемыеПоляПоискаПоТипам = Новый Соответствие;
Настройки = Отчет.КомпоновщикНастроек.Настройки;
Коллекции = Новый Массив;
Коллекции.Добавить(Настройки.ДоступныеПоляОтбора.Элементы);
ПоляПараметровДанных = Настройки.ДоступныеПоляПараметровДанных.Элементы;
Для Каждого ПолеПараметровДанных Из ПоляПараметровДанных Цикл
Коллекции.Добавить(ПолеПараметровДанных.Элементы);
КонецЦикла;
Коллекции.Добавить(ОписаниеПараметровОтчета());
Коллекции.Добавить(ОписаниеОтборовОтчета());
Коллекции.Добавить(ОписаниеПолейОтчета());
Для Каждого Коллекция Из Коллекции Цикл
@@ -2428,6 +2473,116 @@
КонецПроцедуры
&НаСервере
Функция ОписаниеПараметровОтчета()
ОписаниеПараметров = Новый Массив;
Настройки = Отчет.КомпоновщикНастроек.Настройки;
ПоляПараметровДанных = Настройки.ДоступныеПоляПараметровДанных.Элементы;
ПараметрыДанных = Настройки.ПараметрыДанных;
Для Каждого ПолеПараметровДанных Из ПоляПараметровДанных Цикл
Для Каждого Элемент Из ПолеПараметровДанных.Элементы Цикл
СтруктураПоля = СтрРазделить(Элемент.Поле, ".");
Если СтруктураПоля.Количество() < 2 Тогда
Продолжить;
КонецЕсли;
ИмяПараметра = СтруктураПоля[1];
Если ПараметрыДанных.Элементы.Найти(ИмяПараметра) = Неопределено Тогда
Продолжить;
КонецЕсли;
ОписаниеПараметра = ПараметрыДанных.ДоступныеПараметры.Элементы.Найти(ИмяПараметра);
Если ОписаниеПараметра= Неопределено
Или Не ОписаниеПараметра.Видимость Тогда
Продолжить;
КонецЕсли;
ОписаниеПараметров.Добавить(Элемент);
КонецЦикла;
КонецЦикла;
Возврат ОписаниеПараметров;
КонецФункции
&НаСервере
Функция ОписаниеОтборовОтчета(Отбор = Неопределено, ОписаниеОтборов = Неопределено)
Если ОписаниеОтборов = Неопределено Тогда
ОписаниеОтборов = Новый Массив;
КонецЕсли;
Настройки = Отчет.КомпоновщикНастроек.Настройки;
Если Отбор = Неопределено Тогда
Отбор = Настройки.Отбор;
КонецЕсли;
Для Каждого Элемент Из Отбор.Элементы Цикл
Если ТипЗнч(Элемент) = Тип("ГруппаЭлементовОтбораКомпоновкиДанных") Тогда
ОписаниеОтборовОтчета(Элемент, ОписаниеОтборов);
Иначе
ОписаниеПоля = Настройки.ДоступныеПоляОтбора.НайтиПоле(Элемент.ЛевоеЗначение);
Если ОписаниеПоля <> Неопределено Тогда
ОписаниеОтборов.Добавить(ОписаниеПоля);
КонецЕсли;
КонецЕсли;
КонецЦикла;
Возврат ОписаниеОтборов;
КонецФункции
&НаСервере
Функция ОписаниеПолейОтчета()
ОписаниеПолей = Новый Массив;
ИндексСтруктурыОтчета = ВариантыОтчетовСлужебный.ИндексСтруктурыОтчета(ЭтотОбъект);
ИндексПолейОтчета = ИндексСтруктурыОтчета.Скопировать(, "Поле");
ИндексПолейОтчета.Свернуть("Поле");
ПоляОтчета = ИндексПолейОтчета.ВыгрузитьКолонку("Поле");
Настройки = Отчет.КомпоновщикНастроек.Настройки;
Для Каждого ПолеОтчета Из ПоляОтчета Цикл
ОписаниеПоля = Настройки.ДоступныеПоляВыбора.НайтиПоле(ПолеОтчета);
Если ОписаниеПоля = Неопределено Тогда
ОписаниеПоля = Настройки.ДоступныеПоляГруппировок.НайтиПоле(ПолеОтчета);
КонецЕсли;
Если ОписаниеПоля <> Неопределено Тогда
ОписаниеПолей.Добавить(ОписаниеПоля);
КонецЕсли;
КонецЦикла;
Возврат ОписаниеПолей;
КонецФункции
&НаКлиенте
Процедура ПрименитьЗначениеУниверсальногоПоиска(ВариантыПоиска)
@@ -2831,7 +2986,7 @@
&НаСервере
Функция ГруппировкиОтчетаСУчетомПоляСИерархическойГруппировкой(ИндексСтруктурыОтчета, ПоляСИерархическойГруппировкой, КоличествоУровнейГруппировок)
ГруппировкиОтчета = ИндексСтруктурыОтчета.Скопировать();
ГруппировкиОтчета = ИндексСтруктурыОтчета.Скопировать(); // ТаблицаЗначений
Индекс = ГруппировкиОтчета.Количество() - 1;
@@ -2846,6 +3001,10 @@
КонецЦикла;
ГруппировкиОтчета.Свернуть("ПорядокГруппировки, ПредставлениеГруппировки");
КолонкиГруппировкиОтчета = ГруппировкиОтчета.Колонки; // КоллекцияКолонокТаблицыЗначений
КолонкиГруппировкиОтчета.Добавить("Уровень", Новый ОписаниеТипов("Число"));
ГруппировкиОтчета.Сортировать("ПорядокГруппировки");
КоличествоУровнейПоляСИерархическойГруппировкой = КоличествоУровнейГруппировок - ГруппировкиОтчета.Количество();
@@ -2872,6 +3031,8 @@
ДополнительнаяГруппировка = ГруппировкиОтчета.Вставить(ИндексНайденнойГруппировки);
ЗаполнитьЗначенияСвойств(ДополнительнаяГруппировка, НайденнаяГруппировка);
ДополнительнаяГруппировка.Уровень = УровеньПоляСИерархическойГруппировкой;
ДополнительнаяГруппировка.ПредставлениеГруппировки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
ШаблонПредставленияГруппировки,
ДополнительнаяГруппировка.ПредставлениеГруппировки,
@@ -2883,11 +3044,15 @@
УровеньПоляСИерархическойГруппировкой = УровеньПоляСИерархическойГруппировкой + 1;
НайденнаяГруппировка.Уровень = УровеньПоляСИерархическойГруппировкой;
НайденнаяГруппировка.ПредставлениеГруппировки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
ШаблонПредставленияГруппировки,
НайденнаяГруппировка.ПредставлениеГруппировки,
УровеньПоляСИерархическойГруппировкой);
ГруппировкиОтчета.Сортировать("ПорядокГруппировки, Уровень");
Возврат ГруппировкиОтчета;
КонецФункции
@@ -326,7 +326,7 @@
Возврат "";
КонецЕсли;
// Нельзя менять данные, полученные из кэша, поэтому копируем структуру настроек для дальнешего заполнения
// Нельзя менять данные, полученные из кэша, поэтому копируем структуру настроек для дальнейшего заполнения
НастройкаОтборовНаУзле = ОбщегоНазначения.СкопироватьРекурсивно(НастройкаОтборовНаУзлеПоУмолчанию, Ложь);
Реквизиты = Новый Массив;
@@ -2290,7 +2290,8 @@
ПараметрыЗапускаПрограммы.ПолучитьПотокВывода = Истина;
ПараметрыЗапускаПрограммы.ПолучитьПотокОшибок = Истина;
Результат = ФайловаяСистема.ЗапуститьПрограмму(КоманднаяСтрока, ПараметрыЗапускаПрограммы);
Результат = ФайловаяСистема.ЗапуститьПрограмму(ПреобразоватьКоманднуюСтрокуВМассив(КоманднаяСтрока),
ПараметрыЗапускаПрограммы);
ПотокВывода = Результат.ПотокВывода;
ПотокОшибок = Результат.ПотокОшибок;
@@ -2304,7 +2305,6 @@
КонецЕсли;
Результат = ПарсерВывода(ПотокВывода, Словарь, Фильтр, ТипыСвойств);
Возврат Результат;
КонецФункции
@@ -2464,4 +2464,37 @@
КонецФункции
Функция ПреобразоватьКоманднуюСтрокуВМассив(Знач КоманднаяСтрока)
Результат = Новый Массив;
ОткрытыеКавычки = Ложь;
ДлинаСтроки = СтрДлина(КоманднаяСтрока);
НовыйЭлемент = "";
Для Индекс = 1 По ДлинаСтроки Цикл
Символ = Сред(КоманднаяСтрока, Индекс, 1);
НовыйЭлемент = НовыйЭлемент + Символ;
Если (Символ = " " И Не ОткрытыеКавычки) Или Индекс = ДлинаСтроки Тогда
Если Не ПустаяСтрока(НовыйЭлемент) Тогда
НовыйЭлемент = СокрЛП(СтрЗаменить(НовыйЭлемент, """", ""));
Результат.Добавить(НовыйЭлемент);
КонецЕсли;
НовыйЭлемент = "";
Продолжить;
ИначеЕсли Символ = """" Тогда
ОткрытыеКавычки = Не ОткрытыеКавычки;
КонецЕсли;
КонецЦикла;
Возврат Результат;
КонецФункции
#КонецОбласти
@@ -654,6 +654,7 @@
// Параметры:
// ИдентификаторАдресногоОбъекта - УникальныйИдентификатор - родительский объект.
// СтрокаПоиска - Строка - текст, отбора в списке домов.
// ПорцияПриПоиске - Число - кол-во получаемых вариантов за один запрос.
//
// Возвращаемое значение:
// см. КонструкторСпискаДомов
@@ -789,6 +790,7 @@
// Параметры:
// ИдентификаторАдресногоОбъекта - УникальныйИдентификатор - родительский объект.
// СтрокаПоиска - Строка - текст, отбора в списке земельных участков.
// ПорцияПриПоиске - Число - кол-во получаемых вариантов за один запрос.
//
// Возвращаемое значение:
// ТаблицаЗначений - найденные варианты.
@@ -860,7 +862,10 @@
// Возвращает актуальные данные адресного объекта или ориентира с точностью доя подчиненного (без домов).
//
// Параметры:
// Идентификатор - УникальныйИдентификатор - идентификатор адресного объекта или ориентира.
// СведенияОбАдресномОбъекте - Структура:
// * ЗагруженныеДанные - Булево - признак, что источник адресных сведений загруженные в программу данные.
// * Муниципальный - Булево - признак, что адрес муниципальный.
// * Идентификатор - УникальныйИдентификатор - идентификатор адресного объекта или ориентира.
//
// Возвращаемое значение:
// Структура - найденные варианты. Содержит поля:
@@ -1419,6 +1424,13 @@
КонецФункции
// Обратная совместимость
//
// Параметры:
// Наименование - Строка
// Сокращение - Строка
//
// Возвращаемое значение:
// Строка - краткое написание поселений
//
Функция КраткоеНаписаниеПоселений(Знач Наименование, Сокращение) Экспорт
@@ -1628,6 +1640,9 @@
КонецПроцедуры
// Проверяет наличие записей о регионах в регистре сведений АдресныеОбъекты и заполняет их в случае отсутствия.
//
// Возвращаемое значение:
// Булево
//
Функция ПроверитьНачальноеЗаполнение() Экспорт
@@ -1992,9 +2007,9 @@
КонецПроцедуры
// Вызывается при отмене обработки данных в случае сбоя.
//
//
// Параметры:
// Дескриптор - ОбъектXDTO - дескриптор.
// Дескриптор - ОбъектXDTO - дескриптор
//
Процедура ОбработкаДанныхОтменена(Знач Дескриптор) Экспорт
@@ -7373,7 +7388,7 @@
// Выполняет обратное действие для функции УникальныйИдентификаторВДвоичныеДанные.
//
// Параметры:
// ДвоичныеДанные - исходные данные.
// ДвоичныеДанные - ДвоичныеДанные - исходные данные.
//
// Возвращаемое значение:
// УникальныйИдентификатор - результат преобразования.
@@ -7406,7 +7421,7 @@
// Преобразует строку в ДвоичныеДанные.
//
// Параметры:
// Строка - исходные данные.
// Строка - Строка - исходные данные.
//
// Возвращаемое значение:
// ДвоичныеДанные - результат преобразования.
@@ -7459,7 +7474,10 @@
#Область ПрочиеСлужебныеПроцедурыИФункции
// Имя событие для записи в журнал регистрации.
// Имя событие для записи в журнал регистрации.
//
// Возвращаемое значение:
// Строка - событие журнала регистрации
//
Функция СобытиеЖурналаРегистрации() Экспорт
@@ -8049,7 +8067,10 @@
КонецФункции
// Проверяет наличие в конфигурации подсистемы ПолучениеФайловИзИнтернета для определения возможности
// обновлений адресного классификатора через интернет.
// обновлений адресного классификатора через интернет.
//
// Возвращаемое значение:
// Булево - доступна загрузка адресных сведений из интернет
//
Функция ДоступнаЗагрузкаАдресныхСведенийИзИнтернет() Экспорт
Возврат ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПолучениеФайловИзИнтернета");
@@ -9341,8 +9362,7 @@
// Тип контактной информации, определяющий состав полей контактной информации.
//
// Возвращаемое значение:
// Структура - поля контактной информации добавленные к основным полям:
// Для типа контактной информации адрес:
// Структура - поля контактной информации c типом Адрес добавленные к основным полям:
// * ID - Строка - идентификационный код последнего адресного объекта в иерархи адреса.
// * AddressType - Строка - установленный пользователем тип адреса(только для адресов РФ).
// Варианты: "Муниципальный", "Административно-территориальный".
@@ -9759,7 +9779,7 @@
// Возвращает XPath для дополнительного объекта адресации по умолчанию.
//
// Параметры;
// Параметры:
// Уровень - Число - уровень объекта. 90 - дополнительный(Варианты: ГСК, СНТ, ТЕР), 91 - подчиненный, -1 -
// Ориентир.
//
@@ -10135,7 +10155,7 @@
// Возвращает XPath для номера дополнительного объекта адресации.
//
// Параметры;
// Параметры:
// СтрокаЗначения - Строка - искомый тип, например "Дом", "Корпус".
//
// Возвращаемое значение:
@@ -116,7 +116,7 @@
Для Каждого ТочкаДиаграммыГанта Из СписокТочек Цикл
РасшифровкаТочки = ТочкаДиаграммыГанта.Расшифровка;
Если ТочкаДиаграммыГанта.Значение = НСтр("ru = 'Фоновые задания'") Тогда
Если ТочкаДиаграммыГанта.Значение = НСтр("ru = 'Фоновые задания'") Тогда // АПК:1391 Значение точки диаграммы локализуемое.
Продолжить;
КонецЕсли;
@@ -87,7 +87,7 @@
// ВариантОтчетаОснование - СправочникСсылка.ВариантыОтчетов
//
// Возвращаемое значение:
// см. ВариантыОтчетов.СвойстваВариантОтчетаИзФайла
// см. ВариантыОтчетов.СвойстваВариантаОтчетаИзФайла
//
Функция СвойстваВариантаОтчетаИзФайла(ОписаниеФайла, ВариантОтчетаОснование) Экспорт
@@ -348,7 +348,7 @@
#Область ИндексацияРазделовОтчета
Функция ИндексСтруктурыОтчета(Форма)
Функция ИндексСтруктурыОтчета(Форма) Экспорт
НастройкиОтчета = Форма.НастройкиОтчета;
СвойстваРезультата = НастройкиОтчета.СвойстваРезультата;
@@ -2084,6 +2084,8 @@
Если ЗначениеЗаполнено(Значение) Тогда
ЗначениеЯчейки.Значение = Значение;
Иначе
ЗначениеЯчейки.Значение = ДоступныеТипы.ПривестиЗначение(Значение);
КонецЕсли;
Возврат ЗначениеЯчейки;
@@ -156,25 +156,18 @@
Элементы = Форма.Элементы;
СвойстваЗаголовка = СвойстваРезультата.Заголовки[Область.Имя];
ЭтоРасшифровка = (ТипЗнч(Область.Расшифровка) = Тип("ИдентификаторРасшифровкиКомпоновкиДанных"));
ЭтоРасшифровка = Область.ТипОбласти = ТипОбластиЯчеекТабличногоДокумента.Прямоугольник
И ТипЗнч(Область.Расшифровка) = Тип("ИдентификаторРасшифровкиКомпоновкиДанных");
Элементы.КонтекстноеМенюОбластиЗаголовка.Видимость = (ТипЗнч(СвойстваЗаголовка) = Тип("Структура"))
И ТипЗнч(СвойстваЗаголовка.Поле) = Тип("ПолеКомпоновкиДанных");
Элементы.КонтекстноеМенюОбластиДанных.Видимость = Не Элементы.КонтекстноеМенюОбластиЗаголовка.Видимость
И Область.ТипОбласти = ТипОбластиЯчеекТабличногоДокумента.Прямоугольник
И ЭтоРасшифровка;
Элементы.ГруппаУровниГруппировокКонтекстноеМеню.Видимость = Не ЭтоРасшифровка;
Если Не ЭтоРасшифровка
И (Элементы.КонтекстноеМенюОбластиЗаголовка.Видимость
Или Элементы.КонтекстноеМенюОбластиДанных.Видимость) Тогда
Элементы.КонтекстноеМенюОбластиОбщееРедактирование.Вид = ВидГруппыФормы.Подменю;
Иначе
Элементы.КонтекстноеМенюОбластиОбщееРедактирование.Вид = ВидГруппыФормы.ГруппаКнопок;
КонецЕсли;
ОпределитьВариантОтображениеКомандРедактированияТаблицы(Элементы, ЭтоРасшифровка);
ВариантыОтчетовСлужебныйКлиентСервер.ОпределитьДоступностьДействийКонтекстногоМеню(Форма, СвойстваЗаголовка);
@@ -509,8 +502,8 @@
Процедура ОформитьЕще(Форма, Команда, СвойстваЗаголовка = Неопределено, Значение = Неопределено) Экспорт
Если СвойстваЗаголовка = Неопределено Тогда
СвойстваЗаголовка = СвойстваЗаголовкаОтчета(Форма);
Если Не ДействиеДоступно(Форма,, СвойстваЗаголовка) Тогда
Возврат;
КонецЕсли;
ИспользуемыеНастройки = ИспользуемыеНастройки(Форма, СвойстваЗаголовка.ИдентификаторНастроек);
@@ -560,6 +553,10 @@
Процедура ПоказатьРасширеннуюНастройкуФильтра(Форма, СвойстваЗаголовка) Экспорт
Если Не ДействиеДоступно(Форма,, СвойстваЗаголовка) Тогда
Возврат;
КонецЕсли;
НастройкиОтчета = Форма.НастройкиОтчета;
Поле = Форма.Элементы.ОтчетТабличныйДокумент; // ПолеТабличногоДокумента
@@ -644,7 +641,7 @@
Настройки = ИспользуемыеНастройки(Форма, СвойстваЗаголовка.ИдентификаторНастроек);
Раздел = Настройки.ПолучитьОбъектПоИдентификатору(СвойстваЗаголовка.ИдентификаторРаздела);
ОбновитьПоляРаздела(КомпоновщикНастроек, Настройки, Раздел);
КомпоновщикНастроек.РазвернутьАвтоПоля();
Группировка = Настройки.ПолучитьОбъектПоИдентификатору(СвойстваЗаголовка.ИдентификаторГруппировки);
ОписаниеПоля = ОписаниеПоляОтчета(КомпоновщикНастроек, СвойстваЗаголовка.Поле);
@@ -705,14 +702,13 @@
Если ПолеОтчета = Неопределено Тогда
Раздел = Настройки.ПолучитьОбъектПоИдентификатору(СвойстваЗаголовка.ИдентификаторРаздела);
ОбновитьПоляРаздела(КомпоновщикНастроек, Настройки, Раздел);
КомпоновщикНастроек.РазвернутьАвтоПоля();
ПолеОтчета = ВариантыОтчетовСлужебныйКлиентСервер.ПолеОтчета(Группировка.Выбор, СвойстваЗаголовка.Поле);
КонецЕсли;
Если ПолеОтчета <> Неопределено Тогда
УстановитьЗаголовокПоляОтчета(Заголовок, ПолеОтчета, ОписаниеПоля);
УстановитьЗаголовокПоляОтчета(Настройки, ПолеОтчета, ОписаниеПоля, Заголовок);
КонецЕсли;
ОповеститьОЗавершенииКонтекстнойНастройки(Форма, ДействиеКоманды(Команда));
@@ -789,13 +785,12 @@
Процедура ВставитьПоле(КомпоновщикНастроек, Настройки, ВыбранноеПоле, Действие, СвойстваЗаголовка, РолиПолей)
Раздел = Настройки.ПолучитьОбъектПоИдентификатору(СвойстваЗаголовка.ИдентификаторРаздела);
КомпоновщикНастроек.РазвернутьАвтоПоля();
Группировка = Настройки.ПолучитьОбъектПоИдентификатору(СвойстваЗаголовка.ИдентификаторГруппировки);
ОбновитьПоляРаздела(КомпоновщикНастроек, Настройки, Раздел);
ВставитьПолеВПоляГруппировки(Группировка.ПоляГруппировки, ВыбранноеПоле, СвойстваЗаголовка.Поле, Действие, РолиПолей);
ВставитьПолеВГруппировкуРаздела(Группировка, ВыбранноеПоле, СвойстваЗаголовка.Поле, Действие, РолиПолей)
ВставитьПолеВГруппировкуРаздела(Группировка, ВыбранноеПоле, СвойстваЗаголовка.Поле, Действие, РолиПолей);
КонецПроцедуры
@@ -1214,7 +1209,7 @@
КонецФункции
Процедура УстановитьЗаголовокПоляОтчета(Заголовок, Поле, ОписаниеПоля)
Процедура УстановитьЗаголовокПоляОтчета(Настройки, Поле, ОписаниеПоля, Заголовок)
Если ОписаниеПоля <> Неопределено
И Заголовок = ОписаниеПоля.Заголовок Тогда
@@ -1227,6 +1222,12 @@
КонецЕсли;
Формула = ВариантыОтчетовСлужебныйКлиентСервер.ФормулаПоПутиКДанным(Настройки, Поле.Поле);
Если ТипЗнч(Формула) = Тип("ПользовательскоеПолеВыражениеКомпоновкиДанных") Тогда
Формула.Заголовок = Заголовок;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
@@ -2110,469 +2111,6 @@
#КонецОбласти
#Область ОбновлениеПолейРаздела
Процедура ОбновитьПоляРаздела(КомпоновщикНастроек, Настройки, Раздел)
ГруппировкиРаздела = Новый Массив;
Если ТипЗнч(Раздел) = Тип("ТаблицаКомпоновкиДанных") Тогда
ГруппировкиРаздела.Добавить(Раздел.Строки);
ГруппировкиРаздела.Добавить(Раздел.Колонки);
Иначе
ОбновитьПоляГруппировки(КомпоновщикНастроек, Настройки, Раздел);
ГруппировкиРаздела.Добавить(Раздел.Структура);
КонецЕсли;
Для Каждого Группировки Из ГруппировкиРаздела Цикл
Для Каждого Группировка Из Группировки Цикл
ОбновитьПоляГруппировки(КомпоновщикНастроек, Настройки, Группировка);
ОбновитьПоляРаздела(КомпоновщикНастроек, Настройки, Группировка);
КонецЦикла;
КонецЦикла;
КонецПроцедуры
Процедура ОбновитьПоляГруппировки(КомпоновщикНастроек, Настройки, Группировка)
Если ТипЗнч(Группировка) <> Тип("ГруппировкаКомпоновкиДанных")
И ТипЗнч(Группировка) <> Тип("ГруппировкаТаблицыКомпоновкиДанных") Тогда
ОбновитьПоляРаздела(КомпоновщикНастроек, Настройки, Группировка);
КонецЕсли;
ДобавляемыеПоля = СтандартныеДобавляемыеПоля();
ИспользуемыеНастройки = ИспользуемыеНастройкиГруппировки(Настройки, Группировка);
НайтиПоляГруппировки(ИспользуемыеНастройки, Группировка, ДобавляемыеПоля);
НайтиВыбранныеПоляГруппировки(КомпоновщикНастроек, ИспользуемыеНастройки, Группировка, Группировка.Выбор, ДобавляемыеПоля);
Поля = Группировка.Выбор.Элементы;
Поля.Очистить();
СоздатьИерархиюПолейГруппировки(Поля, ДобавляемыеПоля.ИндексГрупп);
Для Каждого СвойстваПоля Из ДобавляемыеПоля.Свойства Цикл
СвойстваТекущегоПоля = СвойстваПоля; // см. СвойстваПоля
Родитель = СвойстваТекущегоПоля.Родитель; // см. СвойстваПоля
Если Родитель = Неопределено Тогда
Если СвойстваТекущегоПоля.Индекс < Поля.Количество() Тогда
ПолеОтчета = Поля.Вставить(СвойстваТекущегоПоля.Индекс, Тип("ВыбранноеПолеКомпоновкиДанных"));
Иначе
ПолеОтчета = Поля.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
КонецЕсли;
Иначе
ГруппаПолейОтчета = ДобавляемыеПоля.ИндексГрупп[Родитель.Идентификатор]; // ГруппаВыбранныхПолейКомпоновкиДанных
Если СвойстваТекущегоПоля.Индекс < ГруппаПолейОтчета.Элементы.Количество() Тогда
ПолеОтчета = ГруппаПолейОтчета.Элементы.Вставить(СвойстваТекущегоПоля.Индекс, Тип("ВыбранноеПолеКомпоновкиДанных"));
Иначе
ПолеОтчета = ГруппаПолейОтчета.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
КонецЕсли;
КонецЕсли;
ЗаполнитьЗначенияСвойств(ПолеОтчета, СвойстваТекущегоПоля);
КонецЦикла;
ПолеОтчета = Поля.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
ПолеОтчета.Использование = Ложь;
КонецПроцедуры
// Возвращаемое значение:
// Структура:
// * Свойства - Массив из Структура
// * ИндексПолей - Соответствие
// * ИндексГрупп - Соответствие
//
Функция СтандартныеДобавляемыеПоля()
ДобавляемыеПоля = Новый Структура;
ДобавляемыеПоля.Вставить("Свойства", Новый Массив);
ДобавляемыеПоля.Вставить("ИндексПолей", Новый Соответствие);
ДобавляемыеПоля.Вставить("ИндексГрупп", Новый Соответствие);
Возврат ДобавляемыеПоля;
КонецФункции
Процедура НайтиПоляГруппировки(Настройки, Группировка, ДобавляемыеПоля)
Если Не ИспользуетсяАвтоПоле(Группировка.Выбор) Тогда
Возврат;
КонецЕсли;
ПоляГруппировки = Группировка.ПоляГруппировки;
Для Каждого Элемент Из ПоляГруппировки.Элементы Цикл
Если ТипЗнч(Элемент) = Тип("ПолеГруппировкиКомпоновкиДанных")
И Элемент.Использование Тогда
ВыбранноеПолеГруппировки = ВариантыОтчетовСлужебныйКлиентСервер.ПолеОтчета(Группировка.Выбор, Элемент.Поле);
ВыбранноеПолеНастроек = ВариантыОтчетовСлужебныйКлиентСервер.ПолеОтчета(Настройки.Выбор, Элемент.Поле);
Если ВыбранноеПолеГруппировки = Неопределено
И ВыбранноеПолеНастроек = Неопределено Тогда
ДобавитьПредыдущиеПоляГруппировки(ДобавляемыеПоля, Группировка, Элемент);
ДобавитьПолеГруппировки(ДобавляемыеПоля, ПоляГруппировки, Элемент);
ИначеЕсли ВыбранноеПолеГруппировки = Неопределено
И ВыбранноеПолеНастроек <> Неопределено
И Не ВыбранноеПолеНастроек.Использование Тогда
ДобавитьПолеГруппировки(ДобавляемыеПоля, ПоляГруппировки, Элемент);
ИначеЕсли ВыбранноеПолеНастроек = Неопределено
И ВыбранноеПолеГруппировки <> Неопределено
И Не ВыбранноеПолеГруппировки.Использование Тогда
ДобавитьПолеГруппировки(ДобавляемыеПоля, ПоляГруппировки, Элемент);
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура НайтиВыбранныеПоляГруппировки(КомпоновщикНастроек, Настройки, Группировка, Поля, ДобавляемыеПоля)
Для Каждого Элемент Из Поля.Элементы Цикл
Если ТипЗнч(Элемент) = Тип("АвтоВыбранноеПолеКомпоновкиДанных") Тогда
НайтиВыбранныеПоляНастроек(КомпоновщикНастроек, Группировка, Настройки.Выбор, Настройки.Выбор, ДобавляемыеПоля);
ИначеЕсли ТипЗнч(Элемент) = Тип("ГруппаВыбранныхПолейКомпоновкиДанных") Тогда
НайтиВыбранныеПоляГруппировки(КомпоновщикНастроек, Настройки, Группировка, Элемент, ДобавляемыеПоля);
ИначеЕсли РазрешеноИспользоватьПолеВГруппировке(КомпоновщикНастроек, Группировка, Элемент.Поле) Тогда
ДобавитьПолеГруппировки(ДобавляемыеПоля, Группировка.Выбор, Элемент);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура НайтиВыбранныеПоляНастроек(КомпоновщикНастроек, Группировка, Узел, Поля, ДобавляемыеПоля)
Для Каждого Элемент Из Поля.Элементы Цикл
Если ТипЗнч(Элемент) = Тип("ГруппаВыбранныхПолейКомпоновкиДанных") Тогда
НайтиВыбранныеПоляНастроек(КомпоновщикНастроек, Группировка, Узел, Элемент, ДобавляемыеПоля);
ИначеЕсли ТипЗнч(Элемент) <> Тип("АвтоВыбранноеПолеКомпоновкиДанных")
И РазрешеноИспользоватьПолеВГруппировке(КомпоновщикНастроек, Группировка, Элемент.Поле) Тогда
ПолеОтчета = ВариантыОтчетовСлужебныйКлиентСервер.ПолеОтчета(Группировка.Выбор, Элемент.Поле);
Если ПолеОтчета = Неопределено Тогда
ДобавитьПолеГруппировки(ДобавляемыеПоля, Узел, Элемент);
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Функция ИспользуемыеНастройкиГруппировки(Настройки, Группировка)
Если ТипЗнч(Группировка.Родитель) = Тип("НастройкиКомпоновкиДанных") Тогда
Возврат Группировка.Родитель;
КонецЕсли;
Возврат Настройки;
КонецФункции
Функция ИспользуетсяАвтоПоле(Поля)
Для Каждого Элемент Из Поля.Элементы Цикл
Если ТипЗнч(Элемент) = Тип("АвтоВыбранноеПолеКомпоновкиДанных")
Или ТипЗнч(Элемент) = Тип("АвтоПолеГруппировкиКомпоновкиДанных") Тогда
Возврат Элемент.Использование;
КонецЕсли;
КонецЦикла;
Возврат Ложь;
КонецФункции
Функция РазрешеноИспользоватьПолеВГруппировке(КомпоновщикНастроек, Группировка, Поле)
Элементы = Группировка.ПоляГруппировки.Элементы;
ЭтоГруппировкаДетальныхЗаписей = (Элементы.Количество() = 0);
Если ЭтоГруппировкаДетальныхЗаписей
И (ВариантыОтчетовСлужебныйКлиентСервер.ПолеСодержитсяВГруппировкеОтчета(Группировка.Выбор, Поле)
Или Не ВариантыОтчетовСлужебныйКлиентСервер.ПолеИспользуетсяВРодительскихГруппировкахОтчета(Группировка.Родитель, Поле)) Тогда
Возврат Истина;
КонецЕсли;
ОписаниеПоля = ОписаниеПоляОтчета(КомпоновщикНастроек, Поле);
Если ОписаниеПоля = Неопределено Тогда
ОписаниеПоля = Группировка.ПоляГруппировки.ДоступныеПоляПолейГруппировок.НайтиПоле(Поле);
КонецЕсли;
Если ОписаниеПоля <> Неопределено
И ОписаниеПоля.Ресурс Тогда
Возврат Истина;
КонецЕсли;
Для Каждого Элемент Из Элементы Цикл
Если ТипЗнч(Элемент) = Тип("ПолеГруппировкиКомпоновкиДанных")
И Элемент.Использование
И (Элемент.Поле = Поле
Или СтрНайти(Строка(Элемент.Поле), Строка(Поле)) > 0
Или СтрНайти(Строка(Поле), Строка(Элемент.Поле)) > 0) Тогда
Возврат Истина;
КонецЕсли;
КонецЦикла;
Возврат Ложь;
КонецФункции
Процедура ДобавитьПредыдущиеПоляГруппировки(ДобавляемыеПоля, Группировка, ТекущееПоле)
ПоляГруппировки = Группировка.ПоляГруппировки.Элементы;
ИндексТекущегоПоля = ПоляГруппировки.Индекс(ТекущееПоле);
Если ИндексТекущегоПоля = 0 Тогда
Возврат;
КонецЕсли;
Для Индекс = 0 По ИндексТекущегоПоля - 1 Цикл
Поле = ПоляГруппировки[Индекс];
Если ДобавляемыеПоля.ИндексПолей[Поле.Поле] = Неопределено Тогда
ДобавитьПолеГруппировки(ДобавляемыеПоля, Группировка.ПоляГруппировки, Поле);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура ДобавитьПолеГруппировки(ДобавляемыеПоля, Узел, Поле)
Если ДобавляемыеПоля.ИндексПолей[Поле.Поле] <> Неопределено Тогда
Возврат;
КонецЕсли;
СвойстваПоля = СвойстваПоля(Поле);
СвойстваПоля.Идентификатор = Узел.ПолучитьИдентификаторПоОбъекту(Поле);
Если СвойстваПоля.Родитель = Неопределено Тогда
СвойстваПоля.Индекс = Узел.Элементы.Индекс(Поле);
Иначе
СвойстваПоля.Индекс = Поле.Родитель.Элементы.Индекс(Поле);
КонецЕсли;
ДобавляемыеПоля.Свойства.Добавить(СвойстваПоля);
ДобавляемыеПоля.ИндексПолей.Вставить(Поле.Поле, СвойстваПоля);
ДобавитьГруппуПолей(ДобавляемыеПоля, Узел, СвойстваПоля);
КонецПроцедуры
// Параметры:
// Поле - ВыбранноеПолеКомпоновкиДанных
// - АвтоВыбранноеПолеКомпоновкиДанных
// - ГруппаВыбранныхПолейКомпоновкиДанных
// - ПолеГруппировкиКомпоновкиДанных
//
// Возвращаемое значение:
// Структура:
// * Тип - Тип
// * Индекс - Число
// * Идентификатор - ИдентификаторКомпоновкиДанных
// * РежимОтображения - РежимОтображенияЭлементаНастройкиКомпоновкиДанных
// * Поле - ПолеКомпоновкиДанных
// * Использование - Булево
// * Заголовок - Строка
// * Родитель - Структура
//
Функция СвойстваПоля(Поле)
СвойстваПоля = Новый Структура;
СвойстваПоля.Вставить("Заголовок", "");
СвойстваПоля.Вставить("Использование", Ложь);
СвойстваПоля.Вставить("Поле", Неопределено);
СвойстваПоля.Вставить("РежимОтображения", РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Авто);
СвойстваПоля.Вставить("Родитель", Неопределено);
СвойстваПоля.Вставить("Идентификатор", Неопределено);
ЗаполнитьЗначенияСвойств(СвойстваПоля, Поле);
СвойстваПоля.Вставить("Индекс", -1);
СвойстваПоля.Вставить("Тип", ТипЗнч(Поле));
Возврат СвойстваПоля;
КонецФункции
Процедура ДобавитьГруппуПолей(ДобавляемыеПоля, Узел, Элемент, Группа = Неопределено)
Если Элемент.Тип = Тип("ГруппаВыбранныхПолейКомпоновкиДанных")
Или Элемент.Тип = Тип("ВыбранноеПолеКомпоновкиДанных")
И ТипЗнч(Элемент.Родитель) = Тип("ГруппаВыбранныхПолейКомпоновкиДанных") Тогда
Группа = Элемент.Родитель;
КонецЕсли;
Если ТипЗнч(Группа) <> Тип("ГруппаВыбранныхПолейКомпоновкиДанных") Тогда
Возврат;
КонецЕсли;
Идентификатор = Узел.ПолучитьИдентификаторПоОбъекту(Группа);
СвойстваГруппы = ДобавляемыеПоля.ИндексГрупп[Идентификатор];
Если СвойстваГруппы = Неопределено Тогда
СвойстваГруппы = СвойстваГруппыПолей(Группа);
СвойстваГруппы.Идентификатор = Идентификатор;
ДобавляемыеПоля.ИндексГрупп.Вставить(Идентификатор, СвойстваГруппы);
КонецЕсли;
СвойстваГруппы.Элементы.Добавить(Элемент);
Элемент.Родитель = СвойстваГруппы;
Если ТипЗнч(Группа.Родитель) = Тип("ГруппаВыбранныхПолейКомпоновкиДанных") Тогда
ДобавитьГруппуПолей(ДобавляемыеПоля, Узел, СвойстваГруппы);
КонецЕсли;
КонецПроцедуры
// Параметры:
// Группа - ГруппаВыбранныхПолейКомпоновкиДанных
//
// Возвращаемое значение:
// Структура:
// * Заголовок - Строка
// * Использование - Булево
// * Поле - Неопределено
// * Расположение - РасположениеПоляКомпоновкиДанных
// * РежимОтображения - РежимОтображенияЭлементаНастройкиКомпоновкиДанных
// * Родитель - Структура
// * Идентификатор - ИдентификаторКомпоновкиДанных
// * Элементы - Массив
// * Тип - Тип
//
Функция СвойстваГруппыПолей(Группа)
СвойстваГруппы = Новый Структура;
СвойстваГруппы.Вставить("Заголовок", "");
СвойстваГруппы.Вставить("Использование", Ложь);
СвойстваГруппы.Вставить("Поле", Неопределено);
СвойстваГруппы.Вставить("Расположение", РасположениеПоляКомпоновкиДанных.Авто);
СвойстваГруппы.Вставить("РежимОтображения", РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Авто);
СвойстваГруппы.Вставить("Родитель", Неопределено);
СвойстваГруппы.Вставить("Идентификатор", Неопределено);
ЗаполнитьЗначенияСвойств(СвойстваГруппы, Группа);
СвойстваГруппы.Вставить("Элементы", Новый Массив);
СвойстваГруппы.Вставить("Тип", ТипЗнч(Группа));
Возврат СвойстваГруппы;
КонецФункции
// Параметры:
// Поля - КоллекцияВыбранныхПолейКомпоновкиДанных
// ИндексГрупп - Соответствие из КлючИЗначение:
// * Ключ - ИдентификаторКомпоновкиДанных
// * Значение - см. СвойстваГруппыПолей
//
Процедура СоздатьИерархиюПолейГруппировки(Поля, ИндексГрупп)
СоздатьОсновныеГруппыПолейГруппировки(Поля, ИндексГрупп);
Для Каждого Индекс Из ИндексГрупп Цикл
СвойстваГруппы = Индекс.Значение; // см. СвойстваГруппыПолей
Если ТипЗнч(СвойстваГруппы) = Тип("ГруппаВыбранныхПолейКомпоновкиДанных") Тогда
Продолжить;
КонецЕсли;
СвойстваРодителяГруппы = СвойстваГруппы.Родитель; // см. СвойстваГруппыПолей
Если СвойстваРодителяГруппы <> Неопределено Тогда
Родитель = ИндексГрупп[СвойстваРодителяГруппы.Идентификатор]; // ВыбранныеПоляКомпоновкиДанных
Группа = Родитель.Элементы.Добавить(Тип("ГруппаВыбранныхПолейКомпоновкиДанных"));
ЗаполнитьЗначенияСвойств(Группа, СвойстваГруппы);
ИндексГрупп.Вставить(Индекс.Ключ, Группа);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура СоздатьОсновныеГруппыПолейГруппировки(Поля, ИндексГрупп)
Для Каждого Индекс Из ИндексГрупп Цикл
СвойстваГруппы = Индекс.Значение; // см.
Если ТипЗнч(СвойстваГруппы) = Тип("ГруппаВыбранныхПолейКомпоновкиДанных") Тогда
Продолжить;
КонецЕсли;
Если СвойстваГруппы.Родитель = Неопределено Тогда
Группа = Поля.Добавить(Тип("ГруппаВыбранныхПолейКомпоновкиДанных"));
ЗаполнитьЗначенияСвойств(Группа, СвойстваГруппы);
ИндексГрупп.Вставить(Индекс.Ключ, Группа);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#Область ВыборПоля
Процедура ВыбратьПолеОтчета(Форма, Действие, ИмяКоллекции, Обработчик = Неопределено,
@@ -2711,9 +2249,7 @@
Возврат Неопределено;
КонецЕсли;
Если Не СвойстваЗаголовка.Ресурс
И ПоляОтчета.НайтиПоЗначению("Еще") = Неопределено Тогда
Если ПоляОтчета.НайтиПоЗначению("Еще") = Неопределено Тогда
ПоляОтчета.Добавить("Еще", НСтр("ru = 'Еще...'"));
КонецЕсли;
@@ -2947,10 +2483,9 @@
КомпоновщикНастроек = КомпоновщикНастроекОтчета(Форма);
Настройки = ИспользуемыеНастройки(Форма, СвойстваЗаголовка.ИдентификаторНастроек);
Раздел = Настройки.ПолучитьОбъектПоИдентификатору(СвойстваЗаголовка.ИдентификаторРаздела);
Группировка = Настройки.ПолучитьОбъектПоИдентификатору(СвойстваЗаголовка.ИдентификаторГруппировки);
ОбновитьПоляРаздела(КомпоновщикНастроек, Настройки, Раздел);
КомпоновщикНастроек.РазвернутьАвтоПоля();
Поля = Группировка.Выбор;
ТекущееПоле = ВариантыОтчетовСлужебныйКлиентСервер.ПолеОтчета(Поля, СвойстваЗаголовка.Поле);
@@ -2988,7 +2523,7 @@
КонецПроцедуры
Процедура ПереместитьПолеВертикально(Форма, Команда)
Процедура ПереместитьПолеВертикально(Форма, Команда, Ответ = Неопределено)
Если Не ДействиеДоступно(Форма, Команда) Тогда
Возврат;
@@ -2998,12 +2533,9 @@
КомпоновщикНастроек = КомпоновщикНастроекОтчета(Форма);
Настройки = ИспользуемыеНастройки(Форма, СвойстваЗаголовка.ИдентификаторНастроек);
Раздел = Настройки.ПолучитьОбъектПоИдентификатору(СвойстваЗаголовка.ИдентификаторРаздела);
Группировка = Настройки.ПолучитьОбъектПоИдентификатору(СвойстваЗаголовка.ИдентификаторГруппировки);
Если ДоступноОбновлениеПолейРаздела(Группировка, Команда) Тогда
ОбновитьПоляРаздела(КомпоновщикНастроек, Настройки, Раздел);
КонецЕсли;
КомпоновщикНастроек.РазвернутьАвтоПоля();
ПолеГруппировки = ВариантыОтчетовСлужебныйКлиентСервер.ПолеОтчета(Группировка.ПоляГруппировки, СвойстваЗаголовка.Поле);
ВыбранноеПоле = ВариантыОтчетовСлужебныйКлиентСервер.ПолеОтчета(Группировка.Выбор, СвойстваЗаголовка.Поле);
@@ -3028,7 +2560,13 @@
КонецЕсли;
Поля = СоседняяГруппировка.Выбор;
ИндексПоля = ИндексВыбранногоПоля(ИсходныйИндексПоля, Поля, СвойстваЗаголовка.Поле);
ПараметрыПеремещения = Новый Структура("Форма, Команда, Ответ", Форма, Команда, Ответ);
ИндексПоля = ИндексВыбранногоПоля(ИсходныйИндексПоля, Поля, СвойстваЗаголовка.Поле, ПараметрыПеремещения);
Если ИндексПоля = Неопределено Тогда
Возврат;
КонецЕсли;
НовоеПоле = Поля.Элементы.Вставить(ИндексПоля, Тип("ВыбранноеПолеКомпоновкиДанных"));
ЗаполнитьЗначенияСвойств(НовоеПоле, ?(ВыбранноеПоле = Неопределено, ПолеГруппировки, ВыбранноеПоле));
@@ -3056,22 +2594,6 @@
КонецПроцедуры
Функция ДоступноОбновлениеПолейРаздела(Группировка, Команда)
КоличествоПолейГруппировки = Группировка.ПоляГруппировки.Элементы.Количество();
ВыбранныеПоля = Группировка.Выбор.Элементы;
КоличествоВыбранныхПолей = ВыбранныеПоля.Количество();
ЭтоАвтоПоле = КоличествоВыбранныхПолей = 1
И ТипЗнч(ВыбранныеПоля[0]) = Тип("АвтоВыбранноеПолеКомпоновкиДанных");
Возврат ДействиеКоманды(Команда) <> "ПереместитьПолеВыше"
Или КоличествоПолейГруппировки = 1
Или КоличествоВыбранныхПолей > 0 И Не ЭтоАвтоПоле;
КонецФункции
Функция СоседняяГруппировка(Форма, Команда, Настройки, ПорядокГруппировки)
СоседняяГруппировка = Неопределено;
@@ -3099,14 +2621,35 @@
КонецФункции
Функция ИндексВыбранногоПоля(ИсходныйИндексПоля, КонечнаяКоллекцияПолей, Поле)
Функция ИндексВыбранногоПоля(ИсходныйИндексПоля, КонечнаяКоллекцияПолей, Поле, ПараметрыПеремещения)
Граница = КонечнаяКоллекцияПолей.Элементы.Количество();
НовоеПоле = ВариантыОтчетовСлужебныйКлиентСервер.ПолеОтчета(КонечнаяКоллекцияПолей, Поле);
ДоступноеПоле = КонечнаяКоллекцияПолей.ДоступныеПоляВыбора.НайтиПоле(Поле);
Если НовоеПоле <> Неопределено Тогда
КонечнаяКоллекцияПолей.Элементы.Удалить(НовоеПоле);
Если ПараметрыПеремещения.Ответ = Неопределено Тогда
Обработчик = Новый ОписаниеОповещения("ПродолжитьПеремещениеПоляВертикально", ЭтотОбъект, ПараметрыПеремещения);
ШаблонТекстаВопроса = НСтр("ru = 'Группировка уже содержит подобное поле - %1.
|Удалить поле?'");
ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
ШаблонТекстаВопроса, ?(ДоступноеПоле = Неопределено, Поле, ДоступноеПоле.Заголовок));
ПоказатьВопрос(Обработчик, ТекстВопроса, РежимДиалогаВопрос.ДаНетОтмена,, КодВозвратаДиалога.Да);
Возврат Неопределено;
ИначеЕсли ПараметрыПеремещения.Ответ = КодВозвратаДиалога.Да Тогда
КонечнаяКоллекцияПолей.Элементы.Удалить(НовоеПоле);
КонецЕсли;
КонецЕсли;
Для Каждого Элемент Из КонечнаяКоллекцияПолей.Элементы Цикл
@@ -3133,6 +2676,17 @@
КонецФункции
Процедура ПродолжитьПеремещениеПоляВертикально(Ответ, ПараметрыПеремещения) Экспорт
Если Ответ = КодВозвратаДиалога.Да
Или Ответ = КодВозвратаДиалога.Нет Тогда
ПереместитьПолеВертикально(ПараметрыПеремещения.Форма, ПараметрыПеремещения.Команда, Ответ);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#КонецОбласти
@@ -3202,6 +2756,23 @@
#Область КонтекстноеМеню
Процедура ОпределитьВариантОтображениеКомандРедактированияТаблицы(Элементы, ЭтоРасшифровка)
#Если Не ВебКлиент Тогда
Если Не ЭтоРасшифровка
И (Элементы.КонтекстноеМенюОбластиЗаголовка.Видимость
Или Элементы.КонтекстноеМенюОбластиДанных.Видимость) Тогда
Элементы.КонтекстноеМенюОбластиОбщееРедактирование.Вид = ВидГруппыФормы.Подменю;
Иначе
Элементы.КонтекстноеМенюОбластиОбщееРедактирование.Вид = ВидГруппыФормы.ГруппаКнопок;
КонецЕсли;
#КонецЕсли
КонецПроцедуры
Функция КонтекстноеМенюОбластиЗаголовка()
КонтекстноеМеню = Новый СписокЗначений;
@@ -3714,9 +3285,12 @@
КонецФункции
Функция ДействиеДоступно(Форма, Команда = Неопределено)
Функция ДействиеДоступно(Форма, Команда = Неопределено, СвойстваЗаголовка = Неопределено)
Если СвойстваЗаголовка = Неопределено Тогда
СвойстваЗаголовка = СвойстваЗаголовкаОтчета(Форма);
КонецЕсли;
СвойстваЗаголовка = СвойстваЗаголовкаОтчета(Форма);
ДействиеКоманды = ДействиеКоманды(Команда);
Если ТипЗнч(СвойстваЗаголовка) <> Тип("Структура")
@@ -3799,9 +3373,11 @@
Формула = Формулы.Добавить(Тип("ПользовательскоеПолеВыражениеКомпоновкиДанных"));
КонецЕсли;
УстановитьСвойстваФормулы(Формула, ОписаниеФормулы);
ДополнительныеПараметры = Новый Структура("КоллекцияПолей, Формула", КоллекцияПолей, Формула);
УстановитьСвойстваФормулы(ОписаниеФормулы, ДополнительныеПараметры);
ОписаниеФормулы = КоллекцияПолей.НайтиПоле(Новый ПолеКомпоновкиДанных(Формула.ПутьКДанным));
УстановитьВыражениеИтоговыхЗаписей(Формула, ОписаниеФормулы);
КонецПроцедуры
@@ -3819,7 +3395,7 @@
КонецФункции
Процедура ИзменитьФормулу(Форма, Настройки, ПутьКДанным, ИмяКоллекции = "ДоступныеПоляВыбора", ОбработатьВФорме = Ложь) Экспорт
Процедура ИзменитьФормулу(Форма, Настройки, ПутьКДанным, ИмяКоллекции = "ДоступныеПоляВыбора") Экспорт
Формула = ВариантыОтчетовСлужебныйКлиентСервер.ФормулаПоПутиКДанным(Настройки, ПутьКДанным);
@@ -3829,14 +3405,26 @@
ПараметрыРедактированияФормулы.Формула = Формула.ПолучитьВыражениеДетальныхЗаписей();
ПараметрыРедактированияФормулы.Наименование = Формула.Заголовок;
Модуль = ?(ОбработатьВФорме, Форма, ЭтотОбъект);
Обработчик = Новый ОписаниеОповещения("ПослеИзмененияФормулы", Модуль, Формула);
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("КоллекцияПолей", Настройки.ДоступныеПоляВыбора);
ДополнительныеПараметры.Вставить("Формула", Формула);
Обработчик = Новый ОписаниеОповещения("ПослеИзмененияФормулы", Форма, ДополнительныеПараметры);
КонструкторФормулКлиент.НачатьРедактированиеФормулы(ПараметрыРедактированияФормулы, Обработчик);
КонецПроцедуры
Процедура ПослеИзмененияФормулы(ОписаниеФормулы, Формула) Экспорт
// Параметры:
// ОписаниеФормулы - ДоступноеПолеКомпоновкиДанных
// - Структура:
// * Формула - Строка
// * ПредставлениеФормулы - Строка
// * Наименование - Строка
// ДополнительныеПараметры - Структура:
// * Формула - ПользовательскоеПолеВыражениеКомпоновкиДанных
// * КоллекцияПолей - ДоступныеПоляКомпоновкиДанных
//
Процедура ПослеИзмененияФормулы(ОписаниеФормулы, ДополнительныеПараметры) Экспорт
Если ТипЗнч(ОписаниеФормулы) <> Тип("Структура")
Или Не ОписаниеФормулы.Свойство("Формула") Тогда
@@ -3844,10 +3432,19 @@
Возврат;
КонецЕсли;
УстановитьСвойстваФормулы(Формула, ОписаниеФормулы);
УстановитьСвойстваФормулы(ОписаниеФормулы, ДополнительныеПараметры);
КонецПроцедуры
// Параметры:
// Образец - ПользовательскоеПолеВыражениеКомпоновкиДанных
//
// Возвращаемое значение:
// Структура:
// * Формула - Строка
// * ПредставлениеФормулы - Строка
// * Наименование - Строка
//
Функция ОписаниеФормулыПоОбразцу(Образец)
ОписаниеФормулы = Новый Структура;
@@ -3859,18 +3456,128 @@
КонецФункции
Процедура УстановитьСвойстваФормулы(Формула, ОписаниеФормулы)
// Параметры:
// ОписаниеФормулы - ДоступноеПолеКомпоновкиДанных
// - Структура:
// * Формула - Строка
// * ПредставлениеФормулы - Строка
// * Наименование - Строка
// ДополнительныеПараметры - Структура:
// * Формула - ПользовательскоеПолеВыражениеКомпоновкиДанных
// * КоллекцияПолей - ДоступныеПоляКомпоновкиДанных
//
Процедура УстановитьСвойстваФормулы(ОписаниеФормулы, ДополнительныеПараметры)
Выражение = СокрЛП(ОписаниеФормулы.Формула);
ПредставлениеВыражения = СокрЛП(ОписаниеФормулы.ПредставлениеФормулы);
Заголовок = СокрЛП(ОписаниеФормулы.Наименование);
Формула = ДополнительныеПараметры.Формула;
Формула.УстановитьВыражениеДетальныхЗаписей(Выражение);
Формула.УстановитьПредставлениеВыражений(ПредставлениеВыражения, "");
Формула.Заголовок = ?(ЗначениеЗаполнено(Заголовок), Заголовок, ПредставлениеВыражения);
ОписаниеФормулы = ДополнительныеПараметры.КоллекцияПолей.НайтиПоле(Новый ПолеКомпоновкиДанных(Формула.ПутьКДанным));
УстановитьВыражениеИтоговыхЗаписей(Формула, ОписаниеФормулы);
КонецПроцедуры
Процедура УстановитьВыражениеИтоговыхЗаписей(Формула, ОписаниеФормулы)
ВыражениеДетальныхЗаписей = Формула.ПолучитьВыражениеДетальныхЗаписей();
ВыражениеИтоговыхЗаписей = Формула.ПолучитьВыражениеИтоговыхЗаписей();
Если ОписаниеФормулы = Неопределено
Или ОписаниеФормулы.Тип.Типы().Количество() > 1
Или Не ОписаниеФормулы.Тип.СодержитТип(Тип("Число")) Тогда
Возврат;
КонецЕсли;
Попытка
ВыражениеИтоговыхЗаписей = ВыражениеИтоговыхЗаписей(ВыражениеДетальныхЗаписей);
Формула.УстановитьВыражения(ВыражениеДетальныхЗаписей, ВыражениеИтоговыхЗаписей);
Исключение
ВыражениеИтоговыхЗаписей = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
"Сумма(%1)", ВыражениеДетальныхЗаписей);
Формула.УстановитьВыражения(ВыражениеДетальныхЗаписей, ВыражениеИтоговыхЗаписей);
КонецПопытки;
КонецПроцедуры
Функция ВыражениеИтоговыхЗаписей(Знач Выражение)
ОписаниеВыражения = Новый Массив;
АрифметическиеОператоры = "+-*/%";
КоличествоСимволов = СтрДлина(Выражение);
Для НомерСимвола = 1 По КоличествоСимволов Цикл
Если КоличествоСимволов = 0 Тогда
Прервать;
КонецЕсли;
Символ = Сред(Выражение, НомерСимвола, 1);
Если Не ЗначениеЗаполнено(Символ) Тогда
Продолжить;
КонецЕсли;
Если Символ = "(" Тогда
ОписаниеВыражения.Добавить(Символ);
Выражение = СокрЛП(Сред(Выражение, НомерСимвола + 1));
НомерСимвола = 0;
КоличествоСимволов = СтрДлина(Выражение);
ИначеЕсли СтрНайти(АрифметическиеОператоры, Символ) > 0 Тогда
Операнд = СокрЛП(Сред(Выражение, 1, НомерСимвола - 1));
Если ОбщегоНазначенияКлиентСервер.ЭтоЧисло(Операнд) Тогда
ВложенноеВыражение = Операнд;
Иначе
ВложенноеВыражение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("Сумма(%1)", Операнд);
КонецЕсли;
ОписаниеВыражения.Добавить(ВложенноеВыражение);
ОписаниеВыражения.Добавить(Символ);
Выражение = СокрЛП(Сред(Выражение, НомерСимвола + 1));
НомерСимвола = 0;
КоличествоСимволов = СтрДлина(Выражение);
КонецЕсли;
КонецЦикла;
Если ОбщегоНазначенияКлиентСервер.ЭтоЧисло(Выражение) Тогда
ВложенноеВыражение = Выражение;
Иначе
ВложенноеВыражение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("Сумма(%1)", Выражение);
КонецЕсли;
ОписаниеВыражения.Добавить(ВложенноеВыражение);
ВыражениеИтоговыхЗаписей = "";
Для Каждого Элемент Из ОписаниеВыражения Цикл
ВыражениеИтоговыхЗаписей = ВыражениеИтоговыхЗаписей + " " + Элемент;
КонецЦикла;
Возврат СокрЛП(ВыражениеИтоговыхЗаписей);
КонецФункции
Функция ПараметрыСохраненияВариантаОтчетаВФайл(Форма) Экспорт
ПараметрыСохранения = Новый Структура();
@@ -237,6 +237,7 @@
ИначеЕсли Элемент.ЛевоеЗначение = Поле Тогда
Фильтр = Элемент;
Прервать;
КонецЕсли;
@@ -368,6 +368,7 @@
Если НЕ МенеджерЗаписи.Выбран() Тогда
// Сценарий: открыли карточку предупреждения, а параллельно поправили проблему
ОтменитьТранзакцию();
Возврат;
КонецЕсли;
@@ -1123,7 +1124,7 @@
ТекстЗапроса =
"ВЫБРАТЬ
| ТИПЗНАЧЕНИЯ(ВерсииОбъектов.Объект) КАК ТипОбъекта,
| СУММА(1) КАК Количество
| КОЛИЧЕСТВО(1) КАК Количество
|ИЗ
| РегистрСведений.ВерсииОбъектов КАК ВерсииОбъектов
|
@@ -489,14 +489,14 @@
// Параметры:
// Сообщение - см. ШаблоныСообщенийСлужебный.СформироватьСообщение
// УчетнаяЗапись - СправочникСсылка.УчетныеЗаписиЭлектроннойПочты - учетная запись, с которой будет отправлено письмо.
// Возвращаемое значение:
// Структура:
// * Отправлено - Булево - признак того, что письмо отправлено.
// * ОписаниеОшибки - Строка - содержит описание ошибки, в случае если письмо отправить не удалось.
// ОтправитьСразу - Булево - если Ложь, то письмо будет помещено в папку Исходящих и отправлено при общей отправке писем.
//
Функция СоздатьПисьмо(Сообщение, УчетнаяЗапись) Экспорт
// Возвращаемое значение:
// см. РезультатОтправкиПисьма
//
Функция СоздатьПисьмо(Сообщение, УчетнаяЗапись, ОтправитьСразу = Истина) Экспорт
РезультатОтправкиПисьма = Новый Структура("Отправлено, ОписаниеОшибки", Ложь);
РезультатОтправкиПисьма = РезультатОтправкиПисьма();
ПисьмоHTML = (Сообщение.ДополнительныеПараметры.ФорматПисьма = Перечисления.СпособыРедактированияЭлектронныхПисем.HTML);
@@ -632,6 +632,12 @@
Возврат РезультатОтправкиПисьма;
КонецПопытки;
РезультатОтправкиПисьма.СсылкаНаПисьмо = Письмо.Ссылка;
Если Не ОтправитьСразу Тогда
Возврат РезультатОтправкиПисьма;
КонецЕсли;
Попытка
ИдентификаторПисьма = ВыполнитьОтправкуПисьма(Письмо);
@@ -650,7 +656,7 @@
КонецПопытки;
Если НЕ Письмо.УдалятьПослеОтправки Тогда
Если Не Письмо.УдалятьПослеОтправки Тогда
Попытка
@@ -671,7 +677,7 @@
УровеньЖурналаРегистрации.Ошибка,, Письмо,
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонТекстаСообщения, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке)));
РезультатОтправкиПисьма.Отправлено = Истина;
РезультатОтправкиПисьма.Отправлено = Ложь;
РезультатОтправкиПисьма.ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонТекстаСообщения, КраткоеПредставлениеОшибки(ИнформацияОбОшибке));
Возврат РезультатОтправкиПисьма;
@@ -1986,7 +1992,7 @@
Продолжить;
Иначе
ТекстКВозврату = ТекстКВозврату + "
|ИЛИ КонтактыВзаимодействия.%ИмяПоля% ССЫЛКА Справочник." + ЭлементМассиваОписания.Имя;
|ИЛИ КонтактыВзаимодействия.%ИмяПоля% ССЫЛКА Справочник." + ЭлементМассиваОписания.Имя; // @query-part
КонецЕсли;
КонецЦикла;
@@ -3465,10 +3471,10 @@
РезультатЗапросаАдресаУведомленияОПрочтении = РезультатЗапроса[4]; // РезультатЗапроса
РезультатЗапросаВложения = РезультатЗапроса[5]; // РезультатЗапроса
ДобавитьПолучателейВПочтовоеСообщениеПоВыборке(ОбъектИнтернетПочтовоеСообщение, РезультатЗапросаПолучатели.Выбрать(), "Получатели");
ДобавитьПолучателейВПочтовоеСообщениеПоВыборке(ОбъектИнтернетПочтовоеСообщение, РезультатЗапросаКопии.Выбрать(), "Копии");
ДобавитьПолучателейВПочтовоеСообщениеПоВыборке(ОбъектИнтернетПочтовоеСообщение, РезультатЗапросаОбратныйАдрес.Выбрать(), "ОбратныйАдрес");
ДобавитьПолучателейВПочтовоеСообщениеПоВыборке(ОбъектИнтернетПочтовоеСообщение, РезультатЗапросаАдресаУведомленияОПрочтении.Выбрать(), "АдресаУведомленияОПрочтении");
ДобавитьПолучателейВПочтовоеСообщениеПоВыборке(ОбъектИнтернетПочтовоеСообщение.Получатели, РезультатЗапросаПолучатели.Выбрать());
ДобавитьПолучателейВПочтовоеСообщениеПоВыборке(ОбъектИнтернетПочтовоеСообщение.Копии, РезультатЗапросаКопии.Выбрать());
ДобавитьПолучателейВПочтовоеСообщениеПоВыборке(ОбъектИнтернетПочтовоеСообщение.ОбратныйАдрес, РезультатЗапросаОбратныйАдрес.Выбрать());
ДобавитьПолучателейВПочтовоеСообщениеПоВыборке(ОбъектИнтернетПочтовоеСообщение.АдресаУведомленияОПрочтении, РезультатЗапросаАдресаУведомленияОПрочтении.Выбрать());
ДобавитьВложенияПисьмаВПочтовоеСообщение(ОбъектИнтернетПочтовоеСообщение, РезультатЗапросаВложения.Выбрать());
СтруктураВозврата.ИнтернетПочтовоеСообщение = ОбъектИнтернетПочтовоеСообщение;
@@ -3612,9 +3618,9 @@
РезультатЗапросаКопии = РезультатЗапроса[3]; // РезультатЗапроса
РезультатЗапросаВложения = РезультатЗапроса[5]; // РезультатЗапроса
ДобавитьПолучателейВПочтовоеСообщениеПоВыборке(ОбъектИнтернетПочтовоеСообщение, РезультатЗапросаПолучатели.Выбрать(), "Получатели");
ДобавитьПолучателейВПочтовоеСообщениеПоВыборке(ОбъектИнтернетПочтовоеСообщение, РезультатЗапросаОбратныйАдрес.Выбрать(), "ОбратныйАдрес");
ДобавитьПолучателейВПочтовоеСообщениеПоВыборке(ОбъектИнтернетПочтовоеСообщение, РезультатЗапросаКопии.Выбрать(), "Копии");
ДобавитьПолучателейВПочтовоеСообщениеПоВыборке(ОбъектИнтернетПочтовоеСообщение.Получатели, РезультатЗапросаПолучатели.Выбрать());
ДобавитьПолучателейВПочтовоеСообщениеПоВыборке(ОбъектИнтернетПочтовоеСообщение.ОбратныйАдрес, РезультатЗапросаОбратныйАдрес.Выбрать());
ДобавитьПолучателейВПочтовоеСообщениеПоВыборке(ОбъектИнтернетПочтовоеСообщение.Копии, РезультатЗапросаКопии.Выбрать());
ДобавитьВложенияПисьмаВПочтовоеСообщение(ОбъектИнтернетПочтовоеСообщение, РезультатЗапросаВложения.Выбрать());
СтруктураВозврата.ИнтернетПочтовоеСообщение = ОбъектИнтернетПочтовоеСообщение;
@@ -3635,20 +3641,19 @@
КонецПроцедуры
Процедура ДобавитьПолучателейВПочтовоеСообщениеПоВыборке(Сообщение, Выборка, ИмяТаблицы)
Процедура ДобавитьПолучателейВПочтовоеСообщениеПоВыборке(ТаблицаАдресатов, Выборка)
Пока Выборка.Следующий() Цикл
ДобавитьПолучателяВПочтовоеСообщение(Сообщение, ИмяТаблицы, Выборка.Адрес, Выборка.Представление)
ДобавитьПолучателяВПочтовоеСообщение(ТаблицаАдресатов, Выборка.Адрес, Выборка.Представление)
КонецЦикла;
КонецПроцедуры
Процедура ДобавитьПолучателяВПочтовоеСообщение(Сообщение, ИмяТаблицы, Адрес, Представление)
Процедура ДобавитьПолучателяВПочтовоеСообщение(ТаблицаАдресатов, Адрес, Представление)
ТаблицаАдресов = Сообщение[ИмяТаблицы]; // ИнтернетПочтовыеАдреса
ПолучательПисьма = ТаблицаАдресов.Добавить(Адрес);
ПолучательПисьма = ТаблицаАдресатов.Добавить(Адрес);
ПолучательПисьма.ОтображаемоеИмя = Представление;
КонецПроцедуры
@@ -7869,10 +7874,10 @@
Значение = Статус.Значение;
НоваяКоманда = Форма.Команды.Добавить("УстановитьОтборСтатус_" + Значение);
НоваяКоманда = Форма.Команды.Добавить("УстановитьОтборСтатус" + "_" + Значение);
НоваяКоманда.Действие = "Подключаемый_ИзменитьОтборСтатус";
ЭлементКнопкаПодменю = Форма.Элементы.Добавить("УстановитьОтборСтатус_" + Значение, Тип("КнопкаФормы"),
ЭлементКнопкаПодменю = Форма.Элементы.Добавить("УстановитьОтборСтатус" + "_" + Значение, Тип("КнопкаФормы"),
ГруппаПодменю);
ЭлементКнопкаПодменю.Вид = ВидКнопкиФормы.КнопкаКоманднойПанели;
ЭлементКнопкаПодменю.ИмяКоманды = НоваяКоманда.Имя;
@@ -7895,17 +7900,17 @@
Значение = Отбор.Значение;
ИмяКоманды = "УстановитьОтборТипВзаимодействия_" + Значение;
ИмяКоманды = "УстановитьОтборТипВзаимодействия" + "_" + Значение;
НайденнаяКоманда = Форма.Команды.Найти(ИмяКоманды);
Если НайденнаяКоманда = Неопределено Тогда
НоваяКоманда = Форма.Команды.Добавить("УстановитьОтборТипВзаимодействия_" + Значение);
НоваяКоманда = Форма.Команды.Добавить("УстановитьОтборТипВзаимодействия" + "_" + Значение);
НоваяКоманда.Действие = "Подключаемый_ИзменитьОтборТипВзаимодействия";
Иначе
НоваяКоманда = НайденнаяКоманда;
КонецЕсли;
ЭлементКнопкаПодменю = Форма.Элементы.Добавить("УстановитьОтборТипВзаимодействия_" + ГруппаПодменю.Имя + "_"+ Значение, Тип("КнопкаФормы"), ГруппаПодменю);
ЭлементКнопкаПодменю = Форма.Элементы.Добавить("УстановитьОтборТипВзаимодействия" + "_" + ГруппаПодменю.Имя + "_"+ Значение, Тип("КнопкаФормы"), ГруппаПодменю);
ЭлементКнопкаПодменю.Вид = ВидКнопкиФормы.КнопкаКоманднойПанели;
ЭлементКнопкаПодменю.ИмяКоманды = НоваяКоманда.Имя;
ЭлементКнопкаПодменю.Заголовок = Отбор.Представление;
@@ -8079,6 +8084,25 @@
КонецФункции
// Возвращаемое значение:
// Структура:
// * Отправлено - Булево - признак того, что письмо отправлено.
// * ОписаниеОшибки - Строка - содержит описание ошибки, в случае если письмо отправить не удалось.
// * СсылкаНаПисьмо - Неопределено - письмо не было создано.
// - ДокументСсылка.ЭлектронноеПисьмоИсходящее - ссылка на созданное электронное исходящие письмо.
//
Функция РезультатОтправкиПисьма()
РезультатОтправкиПисьма = Новый Структура;
РезультатОтправкиПисьма.Вставить("Отправлено", Ложь);
РезультатОтправкиПисьма.Вставить("ОписаниеОшибки", "");
РезультатОтправкиПисьма.Вставить("СсылкаНаПисьмо", Неопределено);
Возврат РезультатОтправкиПисьма;
КонецФункции
////////////////////////////////////////////////////////////////////////////////
// Определение типа ссылки
@@ -8221,8 +8245,9 @@
// Возвращаемое значение:
// Строка - сформированная тема сообщения.
//
Функция ТемаПоТекстуСообщения(ТекстСообщения) Экспорт
Функция ТемаПоТекстуСообщения(Знач ТекстСообщения) Экспорт
ТекстСообщения = СтрЗаменить(ТекстСообщения, Символы.ПС, " ");
МассивСтрок = СтрРазделить(ТекстСообщения," ", Ложь);
Тема = "";
Для Инд = 0 По МассивСтрок.Количество() - 1 Цикл
@@ -8542,6 +8567,10 @@
Расписание = РегламентноеЗадание.Расписание;
Если ТекущаяДата() - Расписание.ПериодПовтораВТечениеДня < ФоновоеЗадание.Начало Тогда // АПК:143 - Не локализуется.
Возврат Ложь;
КонецЕсли;
Возврат Расписание.ТребуетсяВыполнение(ТекущаяДата() - Расписание.ПериодПовтораВТечениеДня, // АПК:143 - Не локализуется.
ФоновоеЗадание.Начало, ФоновоеЗадание.Конец);
@@ -18,37 +18,46 @@
Процедура ИзменитьВыделенные(СписокЭлемент, Знач СписокРеквизит = Неопределено) Экспорт
ПараметрыФормы = Новый Структура("МассивОбъектов", Новый Массив);
Если СписокРеквизит = Неопределено Тогда
Форма = СписокЭлемент.Родитель;
Пока ТипЗнч(Форма) <> Тип("ФормаКлиентскогоПриложения") Цикл
Форма = Форма.Родитель;
Если ТипЗнч(СписокЭлемент) = Тип("Массив") Тогда
ПараметрыФормы.МассивОбъектов = СписокЭлемент;
Иначе
Если СписокРеквизит = Неопределено Тогда
Форма = СписокЭлемент.Родитель;
Пока ТипЗнч(Форма) <> Тип("ФормаКлиентскогоПриложения") Цикл
Форма = Форма.Родитель;
КонецЦикла;
Попытка
СписокРеквизит = Форма.Список;
Исключение
СписокРеквизит = Неопределено;
КонецПопытки;
КонецЕсли;
ВыделенныеСтроки = СписокЭлемент.ВыделенныеСтроки;
Если ТипЗнч(СписокРеквизит) = Тип("ДинамическийСписок") Тогда
ПараметрыФормы.Вставить("КомпоновщикНастроек", СписокРеквизит.КомпоновщикНастроек);
КонецЕсли;
Для Каждого ВыделеннаяСтрока Из ВыделенныеСтроки Цикл
Если ТипЗнч(ВыделеннаяСтрока) = Тип("СтрокаГруппировкиДинамическогоСписка") Тогда
Продолжить;
КонецЕсли;
ТекущаяСтрока = СписокЭлемент.ДанныеСтроки(ВыделеннаяСтрока);
Если ТекущаяСтрока <> Неопределено И ЗначениеЗаполнено(ТекущаяСтрока.Ссылка) Тогда
ПараметрыФормы.МассивОбъектов.Добавить(ТекущаяСтрока.Ссылка);
КонецЕсли;
КонецЦикла;
Попытка
СписокРеквизит = Форма.Список;
Исключение
СписокРеквизит = Неопределено;
КонецПопытки;
КонецЕсли;
ВыделенныеСтроки = СписокЭлемент.ВыделенныеСтроки;
Если ТипЗнч(СписокРеквизит) = Тип("ДинамическийСписок") Тогда
ПараметрыФормы.Вставить("КомпоновщикНастроек", СписокРеквизит.КомпоновщикНастроек);
КонецЕсли;
Для Каждого ВыделеннаяСтрока Из ВыделенныеСтроки Цикл
Если ТипЗнч(ВыделеннаяСтрока) = Тип("СтрокаГруппировкиДинамическогоСписка") Тогда
Продолжить;
КонецЕсли;
ТекущаяСтрока = СписокЭлемент.ДанныеСтроки(ВыделеннаяСтрока);
Если ТекущаяСтрока <> Неопределено И ЗначениеЗаполнено(ТекущаяСтрока.Ссылка) Тогда
ПараметрыФормы.МассивОбъектов.Добавить(ТекущаяСтрока.Ссылка);
КонецЕсли;
КонецЦикла;
НачатьИзменениеВыделенных(ПараметрыФормы);
КонецПроцедуры
@@ -2645,7 +2645,10 @@
КонецЦикла;
КонецЕсли;
// АПК:1327-выкл Механизм обновления дополнительных отчетов и обработок из метаданных.
// Конкурентной работы не предполагается.
ОбновлениеИнформационнойБазы.ЗаписатьОбъект(СправочникОбъект, , Истина);
// АПК:1327-вкл
КонецЦикла;
КонецПроцедуры
@@ -23,7 +23,9 @@
// ** Важный - Булево - Истина, если выводится в группе важных.
// ** СмТакже - Булево - Истина, если выводится в группе "См. также".
// РасписанияКоманд - Структура - в ключах идентификаторы команд, а в значениях - расписание.
// РазрешенияОбработки - Массив из ОбъектXDTO.
// РазрешенияОбработки - Массив из ОбъектXDTO
// - СправочникТабличнаяЧасть.ДополнительныеОтчетыИОбработки.Разрешения
// - Неопределено
//
// Возвращаемое значение:
// ОбъектXDTO - ОбъектXDTO {http://www.1c.ru/1cFresh/ApplicationExtensions/Manifest/a.b.c.d}ExtensionManifest -
@@ -2932,6 +2932,16 @@
КонецПроцедуры
// См. ОбновлениеИнформационнойБазыБСП.ПриДобавленииОбработчиковПереходаСДругойПрограммы.
Процедура ПриДобавленииОбработчиковПереходаСДругойПрограммы(Обработчики) Экспорт
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда
МодульУправлениеСвойствамиСлужебный = ОбщегоНазначения.ОбщийМодуль("УправлениеСвойствамиСлужебный");
МодульУправлениеСвойствамиСлужебный.ПриДобавленииОбработчиковПереходаСДругойПрограммы(Обработчики);
КонецЕсли;
КонецПроцедуры
// См. ОбновлениеИнформационнойБазыБСП.ПослеОбновленияИнформационнойБазы.
Процедура ПослеОбновленияИнформационнойБазы(Знач ПредыдущаяВерсия, Знач ТекущаяВерсия, Знач ВыполненныеОбработчики,
ВыводитьОписаниеОбновлений, МонопольныйРежим) Экспорт
@@ -278,7 +278,7 @@
СтрокаТаблицы.ДатаНачалаПоказа = ДанныеЯчейки(ТабличныйДокумент, ПрефиксСтроки, 5, "Дата", '00010101');
СтрокаТаблицы.ДатаОкончанияПоказа = ДанныеЯчейки(ТабличныйДокумент, ПрефиксСтроки, 6, "Дата", '29990101');
Если НРег(СтрокаТаблицы.Раздел) = НРег(НСтр("ru = 'Реклама'")) Тогда
Если НРег(СтрокаТаблицы.Раздел) = НРег(НСтр("ru = 'Реклама'")) Тогда // АПК:1391 Раздел локализуется.
СтрокаТаблицы.Приоритет = 0;
Иначе
СтрокаТаблицы.Приоритет = ДанныеЯчейки(ТабличныйДокумент, ПрефиксСтроки, 7, "Число", 0);
@@ -186,19 +186,14 @@
КонецФункции
// См. ТаблицаПолей
Функция ТаблицаОперандов() Экспорт
Возврат ТаблицаПолей();
КонецФункции
// Подготавливает стандартный список операторов требуемых видов.
//
// Параметры:
// ГруппыОператоров - Строка - перечисление требуемых видов операторов. Возможные значения:
// Разделители, Операторы, ЛогическиеОператорыИКонстанты,
// ЧисловыеФункции, СтроковыеФункции, ПрочиеФункции.
// Разделители, Операторы, ЛогическиеОператорыИКонстанты,
// ЧисловыеФункции, СтроковыеФункции, ПрочиеФункции,
// ОперацииНадСтрокамиСКД, ОперацииСравненияСКД, ЛогическиеОперацииСКД,
// АгрегатныеФункцииСКД, ВсеОператорыСКД.
//
// Возвращаемое значение:
// ДеревоЗначений
@@ -46,6 +46,8 @@
// * Наименование - Неопределено - наименование не используется для формулы, соответствующее поле не выводится.
// - Строка - наименование формулы. Если заполнено или пустое, соответствующее поле выводится
// на в форме конструктора.
// * ДляЗапроса - Булево - формула предназначена для вставки в запрос. Данный параметр влияет на состав операторов
// по умолчанию, а также на выбор алгоритма проверки формулы.
//
Функция ПараметрыРедактированияФормулы() Экспорт
@@ -125,6 +125,7 @@
Параметры.Вставить("ИмяКоллекцииСКДОперандов");
Параметры.Вставить("ИмяКоллекцииСКДОператоров");
Параметры.Вставить("Наименование");
Параметры.Вставить("ДляЗапроса");
Возврат Параметры;
@@ -256,6 +256,17 @@
Функция КоллекцияПолей(Знач ИсточникПолей, Форма = Неопределено, Знач ИмяКоллекцииСКД = Неопределено) Экспорт
КомпоновщикНастроек = КомпоновщикНастроекИсточникаПолей(ИсточникПолей, Форма);
Если КомпоновщикНастроек = Неопределено Тогда
Возврат Неопределено;
КонецЕсли;
Возврат КоллекцияПолейКомпоновщикаНастроек(КомпоновщикНастроек, ИмяКоллекцииСКД);
КонецФункции
Функция КомпоновщикНастроекИсточникаПолей(Знач ИсточникПолей, Форма = Неопределено) Экспорт
Если ЭтоАдресВременногоХранилища(ИсточникПолей) Тогда
ИсточникПолей = ПолучитьИзВременногоХранилища(ИсточникПолей);
КонецЕсли;
@@ -267,10 +278,6 @@
СхемаКомпоновкиДанных = СхемаКомпоновкиДанныхИзДереваЗначений(ИсточникПолей);
КонецЕсли;
Если Не ЗначениеЗаполнено(ИмяКоллекцииСКД) Тогда
ИмяКоллекцииСКД = "ДоступныеПоляОтбора";
КонецЕсли;
Если ТипЗнч(СхемаКомпоновкиДанных) <> Тип("СхемаКомпоновкиДанных") Тогда
Возврат Неопределено;
КонецЕсли;
@@ -285,10 +292,27 @@
КомпоновщикНастроек.Инициализировать(ИсточникДоступныхНастроек);
КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
Возврат КомпоновщикНастроек.Настройки[ИмяКоллекцииСКД];
Возврат КомпоновщикНастроек;
КонецФункции
Функция КоллекцияПолейКомпоновщикаНастроек(Знач КомпоновщикНастроек, Знач ИмяКоллекцииСКД = Неопределено)
Если Не ЗначениеЗаполнено(ИмяКоллекцииСКД) Тогда
ИмяКоллекцииСКД = "ДоступныеПоляОтбора";
КонецЕсли;
ОписаниеИмениКоллекцииПолей = СтрРазделить(ИмяКоллекцииСКД, ".");
КоллекцияПолей = КомпоновщикНастроек.Настройки;
Для Каждого Элемент Из ОписаниеИмениКоллекцииПолей Цикл
КоллекцияПолей = КоллекцияПолей[Элемент];
КонецЦикла;
Возврат КоллекцияПолей;
КонецФункции
Процедура ЗаполнитьСписокДоступныхРеквизитов(Знач ТекущийРеквизит, ИсточникиДоступныхПолей, Знач Отбор = "",
ИспользоватьИдентификаторыДляФормул = Ложь)
@@ -338,9 +362,10 @@
Если ЗначениеЗаполнено(Порядок) Тогда
Реквизит.Порядок = Порядок;
КонецЕсли;
ЭтоГруппа = ДополнительныеПараметры["ЭтоГруппа"];
Если ЗначениеЗаполнено(ЭтоГруппа) Тогда
Реквизит.Папка = ЭтоГруппа;
Реквизит.ЭтоГруппа = ДополнительныеПараметры["ЭтоГруппа"];
Если Реквизит.ЭтоГруппа Тогда
Реквизит.Папка = Реквизит.ЭтоГруппа;
КонецЕсли;
Если Не ЗначениеЗаполнено(Реквизит.Картинка) Тогда
@@ -366,7 +391,7 @@
КонецЕсли;
Реквизит.ПредставлениеПутиКДанным = "";
Если Не Реквизит.Папка Тогда
Если Не Реквизит.ЭтоГруппа Тогда
Реквизит.ПутьКДанным = Реквизит.Имя;
Реквизит.ПредставлениеПутиКДанным = Реквизит.Заголовок;
КонецЕсли;
@@ -387,7 +412,7 @@
Если Родитель(Реквизит) <> Неопределено Тогда
Родитель = Родитель(Реквизит);
Если Реквизит.Папка Тогда
Если Реквизит.ЭтоГруппа Тогда
Реквизит.ПутьКДанным = Родитель.ПутьКДанным;
Реквизит.ПредставлениеПутиКДанным = Строка(Родитель.ПредставлениеПутиКДанным);;
Иначе
@@ -426,6 +451,7 @@
// * Отступ - Строка
// * СоответствуетОтбору - Булево
// * ПодчиненныйЭлементСоответствуетОтбору - Булево
// * ЭтоГруппа - Булево
//
Функция НоваяКоллекцияДоступныхРеквизитов()
@@ -1066,28 +1092,12 @@
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = Ложь;
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("Отображать", Ложь);
//
ЭлементОформления = УсловноеОформление.Элементы.Добавить();
ОформляемоеПоле = ЭлементОформления.Поля.Элементы.Добавить();
ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных(ИмяСпискаПолей + "Картинка");
ОформляемоеПоле = ЭлементОформления.Поля.Элементы.Добавить();
ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных(ИмяСпискаПолей + "Представление");
ОформляемоеПоле = ЭлементОформления.Поля.Элементы.Добавить();
ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных(ИмяСпискаПолей + "ПредставлениеПутиКДанным");
ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ИмяРеквизитаСтрокиПоискаСпискаПолей(ИмяСпискаПолей));
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("Видимость", Истина);
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("Отображать", Истина);
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("Отображать", Ложь);
КонецПроцедуры
@@ -1439,6 +1449,7 @@
Результат.Вставить("Отступ", Новый ОписаниеТипов("Строка"));
Результат.Вставить("СоответствуетОтбору", Новый ОписаниеТипов("Булево"));
Результат.Вставить("ПодчиненныйЭлементСоответствуетОтбору", Новый ОписаниеТипов("Булево"));
Результат.Вставить("ЭтоГруппа", Новый ОписаниеТипов("Булево"));
Возврат Результат;
@@ -1517,6 +1528,9 @@
Если ГруппыОператоров = Неопределено Тогда
ГруппыОператоров = "Разделители, Операторы, ЛогическиеОператорыИКонстанты,
|ЧисловыеФункции, СтроковыеФункции, ПрочиеФункции";
ИначеЕсли ГруппыОператоров = "ВсеОператорыСКД" Тогда
ГруппыОператоров = "Операторы, ОперацииНадСтрокамиСКД, ОперацииСравненияСКД,
|ЛогическиеОперацииСКД, АгрегатныеФункцииСКД";
КонецЕсли;
Для Каждого Элемент Из Новый Структура(ГруппыОператоров) Цикл
@@ -1533,6 +1547,14 @@
ДобавитьГруппуОператоровСтроковыеФункции(СписокОператоров);
ИначеЕсли ИмяГруппы = "ПрочиеФункции" Тогда
ДобавитьГруппуОператоровПрочиеФункции(СписокОператоров);
ИначеЕсли ИмяГруппы = "ОперацииНадСтрокамиСКД" Тогда
ДобавитьГруппуОператоровОперацииНадСтроками(СписокОператоров);
ИначеЕсли ИмяГруппы = "ОперацииСравненияСКД" Тогда
ДобавитьГруппуОператоровОперацииСравнения(СписокОператоров);
ИначеЕсли ИмяГруппы = "ЛогическиеОперацииСКД" Тогда
ДобавитьГруппуОператоровЛогическиеОперации(СписокОператоров);
ИначеЕсли ИмяГруппы = "АгрегатныеФункцииСКД" Тогда
ДобавитьГруппуОператоровАгрегатныеФункции(СписокОператоров);
КонецЕсли;
КонецЦикла;
@@ -1562,7 +1584,7 @@
Группа.Представление = НСтр("ru = 'Операторы'");
Группа.Порядок = 2;
Для Каждого Идентификатор Из СтрРазделить("+ - * /", " ", Ложь) Цикл
Для Каждого Идентификатор Из СтрРазделить("+ - * / %", " ", Ложь) Цикл
ДобавитьОператорВГруппу(Группа, Идентификатор, , Новый ОписаниеТипов("Число"));
КонецЦикла;
@@ -1659,6 +1681,70 @@
КонецПроцедуры
Процедура ДобавитьГруппуОператоровОперацииНадСтроками(СписокОператоров)
Группа = СписокОператоров.Строки.Добавить();
Группа.Идентификатор = "ОперацииНадСтроками";
Группа.Представление = НСтр("ru = 'Операции над строками'");
Группа.Порядок = 2;
Тип = Новый ОписаниеТипов("Строка");
ДобавитьОператорВГруппу(Группа, "+", , Тип);
ДобавитьОператорВГруппу(Группа, "ПОДОБНО", НСтр("ru = 'ПОДОБНО'"), Тип);
КонецПроцедуры
Процедура ДобавитьГруппуОператоровОперацииСравнения(СписокОператоров)
Группа = СписокОператоров.Строки.Добавить();
Группа.Идентификатор = "ОперацииСравнения";
Группа.Представление = НСтр("ru = 'Операции сравнения'");
Группа.Порядок = 3;
Тип = Новый ОписаниеТипов("Булево");
Для Каждого Идентификатор Из СтрРазделить("<,>,<=,>=,=,<>", ",", Ложь) Цикл
ДобавитьОператорВГруппу(Группа, Идентификатор, , Тип);
КонецЦикла;
ДобавитьОператорВГруппу(Группа, "В", НСтр("ru = 'В'"), Тип);
КонецПроцедуры
Процедура ДобавитьГруппуОператоровЛогическиеОперации(СписокОператоров)
Группа = СписокОператоров.Строки.Добавить();
Группа.Идентификатор = "ЛогическиеОперации";
Группа.Представление = НСтр("ru = 'Логические операции'");
Группа.Порядок = 4;
Тип = Новый ОписаниеТипов("Булево");
ДобавитьОператорВГруппу(Группа, "НЕ", НСтр("ru = 'НЕ'"), Тип);
ДобавитьОператорВГруппу(Группа, "И", НСтр("ru = 'И'"), Тип);
ДобавитьОператорВГруппу(Группа, "ИЛИ", НСтр("ru = 'ИЛИ'"), Тип);
КонецПроцедуры
Процедура ДобавитьГруппуОператоровАгрегатныеФункции(СписокОператоров)
Группа = СписокОператоров.Строки.Добавить();
Группа.Идентификатор = "АгрегатныеФункции";
Группа.Представление = НСтр("ru = 'Агрегатные функции'");
Группа.Порядок = 5;
Группа.ИмяКартинки = Метаданные.ОбщиеКартинки.ТипФункция.Имя;
Тип = Новый ОписаниеТипов("Число");
ДобавитьОператорВГруппу(Группа, "СУММА", НСтр("ru = 'СУММА'"), Тип);
ДобавитьОператорВГруппу(Группа, "КОЛИЧЕСТВО", НСтр("ru = 'КОЛИЧЕСТВО'"), Тип);
ДобавитьОператорВГруппу(Группа, "МАКСИМУМ", НСтр("ru = 'МАКСИМУМ'"), Тип);
ДобавитьОператорВГруппу(Группа, "МИНИМУМ", НСтр("ru = 'МИНИМУМ'"), Тип);
ДобавитьОператорВГруппу(Группа, "СРЕДНЕЕ", НСтр("ru = 'СРЕДНЕЕ'"), Тип);
КонецПроцедуры
Функция ИмяРеквизитаСтрокиПоискаСпискаПолей(ИмяСпискаПолей)
Возврат "СтрокаПоиска" + ИмяСпискаПолей;
@@ -11,15 +11,13 @@
// См. ОбновлениеИнформационнойБазыБСП.ПриДобавленииОбработчиковОбновления.
Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт
Если ЕстьИзмененияПараметровПроверокУчета() Тогда
Обработчик = Обработчики.Добавить();
Обработчик.Версия = "*";
Обработчик.РежимВыполнения = "Отложенно";
Обработчик.Идентификатор = Новый УникальныйИдентификатор("c17ea385-6085-471f-ab94-219ec30a5a38");
Обработчик.Комментарий = НСтр("ru = 'Обновляются правила проверки учета в соответствие с изменениями в новой версии программы.
|До завершения обработки часть проверок ведения учета будет недоступна.'");
Обработчик.Процедура = "КонтрольВеденияУчетаСлужебный.ОбновитьВспомогательныеДанныеПоИзменениямКонфигурации";
КонецЕсли;
Обработчик = Обработчики.Добавить();
Обработчик.Версия = "*";
Обработчик.РежимВыполнения = "Отложенно";
Обработчик.Идентификатор = Новый УникальныйИдентификатор("c17ea385-6085-471f-ab94-219ec30a5a38");
Обработчик.Комментарий = НСтр("ru = 'Обновляются правила проверки учета в соответствие с изменениями в новой версии программы.
|До завершения обработки часть проверок ведения учета будет недоступна.'");
Обработчик.Процедура = "КонтрольВеденияУчетаСлужебный.ОбновитьВспомогательныеДанныеПоИзменениямКонфигурации";
Обработчик = Обработчики.Добавить();
Обработчик.Версия = "3.0.1.25";
@@ -51,5 +51,19 @@
КонецФункции
Функция СуффиксЯзыка(Язык) Экспорт
Если Язык = Константы.ДополнительныйЯзык1.Получить() И МультиязычностьСервер.ИспользуетсяПервыйДополнительныйЯзык() Тогда
Возврат "Язык1";
КонецЕсли;
Если Язык = Константы.ДополнительныйЯзык2.Получить() И МультиязычностьСервер.ИспользуетсяВторойДополнительныйЯзык() Тогда
Возврат "Язык2";
КонецЕсли;
Возврат "";
КонецФункции
#КонецОбласти
@@ -642,15 +642,7 @@
//
Функция СуффиксЯзыка(Язык) Экспорт
Если Язык = Константы.ДополнительныйЯзык1.Получить() И ИспользуетсяПервыйДополнительныйЯзык() Тогда
Возврат "Язык1";
КонецЕсли;
Если Язык = Константы.ДополнительныйЯзык2.Получить() И ИспользуетсяВторойДополнительныйЯзык() Тогда
Возврат "Язык2";
КонецЕсли;
Возврат "";
Возврат МультиязычностьПовтИсп.СуффиксЯзыка(Язык);
КонецФункции
@@ -1208,6 +1200,29 @@
КонецФункции
// Возвращаемое значение:
// Структура:
// * ОсновнойЯзыкСтароеЗначение - Строка
// * ДополнительныйЯзык1СтароеЗначение - Строка
// * ДополнительныйЯзык2СтароеЗначение - Строка
// * ОсновнойЯзыкНовоеЗначение - Строка
// * ДополнительныйЯзык1НовоеЗначение - Строка
// * ДополнительныйЯзык2НовоеЗначение - Строка
//
Функция ОписаниеСтарыхИНовыхНастроекЯзыков() Экспорт
ОписаниеКонстант = Новый Структура;
ОписаниеКонстант.Вставить("ОсновнойЯзыкСтароеЗначение", "");
ОписаниеКонстант.Вставить("ДополнительныйЯзык1СтароеЗначение", "");
ОписаниеКонстант.Вставить("ДополнительныйЯзык2СтароеЗначение", "");
ОписаниеКонстант.Вставить("ОсновнойЯзыкНовоеЗначение", "");
ОписаниеКонстант.Вставить("ДополнительныйЯзык1НовоеЗначение", "");
ОписаниеКонстант.Вставить("ДополнительныйЯзык2НовоеЗначение", "");
Возврат ОписаниеКонстант;
КонецФункции
Функция ОпределитьТипФормы(ИмяФормы) Экспорт
Результат = "";
@@ -1395,7 +1410,7 @@
КонецФункции
Процедура ПерезаполнитьМультиязычныеСтрокиВОбъектах(Параметры, Адрес) Экспорт
ОбновлениеИнформационнойБазыСлужебный.НачальноеЗаполнениеПредопределенныхДанных(Истина);
ОбновлениеИнформационнойБазыСлужебный.НачальноеЗаполнениеПредопределенныхДанных(Истина, Параметры);
КонецПроцедуры
Функция ЭтоОсновнойЯзык() Экспорт
@@ -501,6 +501,7 @@
#КонецОбласти
#Область ОтправкаДанных
// Выполняет выгрузку данных в соответствии с правилами и параметрами обмена.
//
// Параметры:
@@ -555,7 +556,17 @@
КонецЕсли;
Если КомпонентыОбмена.ФлагОшибки Тогда
// Объекты, которые выгружались по ссылкам кэшируются в регистре сведений ДанныеОбъектовДляРегистрацииВОбменах.
// Для того, что бы при повторной выгрузке в файл сообщения попали не только ключевые сведения необходимо почистить регистр.
Если КомпонентыОбмена.ВыгруженныеПоСсылкеОбъекты.Количество() > 0 Тогда
РегистрыСведений.ДанныеОбъектовДляРегистрацииВОбменах.УдалитьСведенияОВыгрузкеОбъектов(КомпонентыОбмена.ВыгруженныеПоСсылкеОбъекты, КомпонентыОбмена.УзелКорреспондента);
КонецЕсли;
ВызватьИсключение НСтр("ru = 'При формировании сообщения обмена данными произошли ошибки. Подробнее см. в журнале регистрации.'");
КонецЕсли;
Попытка
@@ -812,19 +823,7 @@
СвойстваИсточника.Добавить(Свойство);
КонецЦикла;
Если Расширения <> Неопределено Тогда
Для Каждого Расширение Из Расширения Цикл
РасширенныйТипXDTO = Неопределено;
Если (Расширение.Значение.Свойство("ТипXDTO", РасширенныйТипXDTO)
Или Расширение.Значение.Свойство("ТипСоставногоСвойства", РасширенныйТипXDTO))
И РасширенныйТипXDTO <> Неопределено Тогда
Для Каждого Свойство Из РасширенныйТипXDTO.Свойства Цикл
СвойстваИсточника.Добавить(Свойство);
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецЕсли;
ДополнитьСвойстваПакетаИзРасширений(СвойстваИсточника, КомпонентыОбмена, Расширения);
Для Каждого Свойство Из СвойстваИсточника Цикл
@@ -855,14 +854,14 @@
ТипСвойства = "AdditionalInfo";
ИначеЕсли ЭтоТаблицаОбъекта(Свойство) Тогда
ТипСвойства = "Таблица";
ИначеЕсли Свойство.Имя = "КлючевыеСвойства"
Или СтрНайти(Свойство.Тип.Имя, "КлючевыеСвойства") > 0 Тогда
ТипСвойства = "КлючевыеСвойства";
ИначеЕсли Свойство.Имя = КлассКлючевыеСвойства()
Или СтрНайти(Свойство.Тип.Имя, КлассКлючевыеСвойства()) > 0 Тогда
ТипСвойства = КлассКлючевыеСвойства();
Иначе
Если СвойствоНайдено Тогда
Если ТипЗнч(ЗначениеСвойства) = Тип("Структура")
И (ЗначениеСвойства.Свойство("Значение")
Или СтрНайти(СокрЛП(Свойство.Тип), "ОбщиеСвойства") > 0) Тогда
Или СтрНайти(Свойство.Тип, КлассОбщиеСвойства()) > 0) Тогда
ТипСвойства = "ОбщееСоставноеСвойство";
Иначе
ТипСвойства = "СвойствоСоставногоТипа";
@@ -914,7 +913,7 @@
КонецЕсли;
ЗначениеXDTO = Неопределено;
Если ТипСвойства = "КлючевыеСвойства" Тогда
Если ТипСвойства = КлассКлючевыеСвойства() Тогда
ЗначениеXDTO = ОбъектXDTOИзДанныхXDTO(КомпонентыОбмена, ЗначениеСвойства, Свойство.Тип, СсылкиИзОбъекта, , Расширения);
ИначеЕсли ТипСвойства = "ОбычноеСвойство" Тогда
@@ -1021,8 +1020,6 @@
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;
Приемник[Свойство.Имя] = ЗначениеXDTO;
Если ЭтоБазоваяСхема Или Свойство.URIПространстваИмен = Приемник.Тип().URIПространстваИмен Тогда
Приемник[Свойство.Имя] = ЗначениеXDTO;
Иначе
@@ -1164,8 +1161,8 @@
// {Обработчик: ПриОтправкеДанных} Начало
Если ПравилоКонвертации.ЕстьОбработчикПриОтправкеДанных Тогда
Если Не Приемник.Свойство("КлючевыеСвойства") Тогда
Приемник.Вставить("КлючевыеСвойства", Новый Структура);
Если Не Приемник.Свойство(КлассКлючевыеСвойства()) Тогда
Приемник.Вставить(КлассКлючевыеСвойства(), Новый Структура);
КонецЕсли;
ПриОтправкеДанных(Источник, Приемник, ПравилоКонвертации.ПриОтправкеДанных, КомпонентыОбмена, СтекВыгрузки);
@@ -1175,10 +1172,10 @@
КонецЕсли;
Если СтекВыгрузки.Количество() > 1 Тогда
Для Каждого КлючевоеСвойство Из Приемник.КлючевыеСвойства Цикл
Для Каждого КлючевоеСвойство Из Приемник[КлассКлючевыеСвойства()] Цикл
Приемник.Вставить(КлючевоеСвойство.Ключ, КлючевоеСвойство.Значение);
КонецЦикла;
Приемник.Удалить("КлючевыеСвойства");
Приемник.Удалить(КлассКлючевыеСвойства());
КонецЕсли;
// Выполнение ПКС, 2-й этап
@@ -1191,7 +1188,7 @@
// Выполняем конвертацию, если в свойство помещена инструкция.
ЗначениеСвойства = Неопределено;
Если СтекВыгрузки.Количество() = 1 И ПКС.ОбработкаКлючевогоСвойства Тогда
Приемник.КлючевыеСвойства.Свойство(ПКС.СвойствоФормата, ЗначениеСвойства);
Приемник[КлассКлючевыеСвойства()].Свойство(ПКС.СвойствоФормата, ЗначениеСвойства);
Иначе
СвойствоФормата_Имя = СокрЛП(ПКС.СвойствоФормата);
ВложенныеСвойства = СтрРазделить(СвойствоФормата_Имя,".",Ложь);
@@ -1343,6 +1340,7 @@
// КомпонентыОбмена - Структура - содержит все правила и параметры обмена.
// ДанныеИБ - ЛюбаяСсылка - ссылка на выгружаемый объект информационной базы.
// ПолучательСвойства - Структура - получатель данных типа Структура, в которой должно храниться значение выгруженного свойства.
// - СтрокаТаблицыЗначений.
// ПКС - СтрокаТаблицыЗначений - строка таблицы правил конвертации свойств, в соответствии с которой
// выполняется преобразование.
// СтекВыгрузки - Массив из ЛюбаяСсылка - ссылки на выгружаемые объекты с учетом вложенности.
@@ -1428,7 +1426,7 @@
ПолучательСвойства.Свойство(СвойствоФормата_Имя, ЗначениеСвойства);
КонецЕсли;
Если ЗначениеСвойства = Неопределено
И Не (СтекВыгрузки.Количество() = 1 И ПолучательСвойства.КлючевыеСвойства.Свойство(СвойствоФормата_Имя, ЗначениеСвойства)) Тогда
И Не (СтекВыгрузки.Количество() = 1 И ПолучательСвойства[КлассКлючевыеСвойства()].Свойство(СвойствоФормата_Имя, ЗначениеСвойства)) Тогда
Возврат;
КонецЕсли;
КонецЕсли;
@@ -1484,10 +1482,10 @@
КонецЕсли;
Если СтекВыгрузки.Количество() = 1 И ПКС.ОбработкаКлючевогоСвойства Тогда
Если Не ПолучательСвойства.Свойство("КлючевыеСвойства") Тогда
ПолучательСвойства.Вставить("КлючевыеСвойства", Новый Структура);
Если Не ПолучательСвойства.Свойство(КлассКлючевыеСвойства()) Тогда
ПолучательСвойства.Вставить(КлассКлючевыеСвойства(), Новый Структура);
КонецЕсли;
ПолучательСвойства.КлючевыеСвойства.Вставить(СвойствоФормата_Имя, ЗначениеСвойства);
ПолучательСвойства[КлассКлючевыеСвойства()].Вставить(СвойствоФормата_Имя, ЗначениеСвойства);
Иначе
Если ТипЗнч(ПолучательСвойства) = Тип("СтрокаТаблицыЗначений") Тогда
Если УказаноПолноеИмяСвойства Тогда
@@ -1641,7 +1639,7 @@
ПолученныеДанные = ИнициализироватьПолученныеДанные(ПравилоКонвертации);
СоставСвойств = "Все";
ПолученныеДанныеСсылка = Неопределено;
ДанныеXDTOСодержатСсылку = ДанныеXDTO.Свойство("Ссылка");
ДанныеXDTOСодержатСсылку = ДанныеXDTO.Свойство(КлассСсылка());
Если ПравилоКонвертации.ЭтоСсылочныйТип Тогда
ПолученныеДанныеСсылка = ПолученныеДанные.Ссылка;
ВариантИдентификации = СокрЛП(ПравилоКонвертации.ВариантИдентификации);
@@ -1650,7 +1648,7 @@
Или ВариантИдентификации = "СначалаПоУникальномуИдентификаторуПотомПоПолямПоиска") Тогда
ПолученныеДанныеСсылка = СсылкаОбъектаПоУИДОбъектаXDTO(
ДанныеXDTO.Ссылка.Значение,
ДанныеXDTO[КлассСсылка()].Значение,
ПравилоКонвертации.ТипДанных,
КомпонентыОбмена);
@@ -1667,7 +1665,7 @@
ЗаписатьПриНеобходимостиПубличныйИдентификатор(
ДанныеИБ,
ПолученныеДанныеСсылка,
ДанныеXDTO.Ссылка.Значение,
ДанныеXDTO[КлассСсылка()].Значение,
КомпонентыОбмена.УзелКорреспондента,
ПравилоКонвертации);
@@ -1699,7 +1697,7 @@
СоставСвойств);
Если Действие = "ПолучитьСсылку" Тогда
ДанныеXDTO = Новый Структура("КлючевыеСвойства",
ДанныеXDTO = Новый Структура(КлассКлючевыеСвойства(),
ОбщегоНазначения.СкопироватьРекурсивно(ДанныеXDTO));
КонецЕсли;
@@ -1710,7 +1708,7 @@
ПравилоКонвертации.ПриКонвертацииДанныхXDTO);
Если Действие = "ПолучитьСсылку" Тогда
ДанныеXDTO = ОбщегоНазначения.СкопироватьРекурсивно(ДанныеXDTO.КлючевыеСвойства);
ДанныеXDTO = ОбщегоНазначения.СкопироватьРекурсивно(ДанныеXDTO[КлассКлючевыеСвойства()]);
КонецЕсли;
КонвертацияСвойствСтруктурыОбъектаXDTO(
@@ -1761,7 +1759,7 @@
ЗаписатьПриНеобходимостиПубличныйИдентификатор(
ДанныеИБ.ПолучитьОбъект(),
ДанныеИБ,
ДанныеXDTO.Ссылка.Значение,
ДанныеXDTO[КлассСсылка()].Значение,
КомпонентыОбмена.УзелКорреспондента,
ПравилоКонвертации);
КонецЕсли;
@@ -1837,7 +1835,7 @@
ЗаписатьПриНеобходимостиПубличныйИдентификатор(
ДанныеИБ,
?(ДанныеДляЗаписиВИБ.ЭтоНовый(), ДанныеДляЗаписиВИБ.ПолучитьСсылкуНового(), ДанныеДляЗаписиВИБ.Ссылка),
ДанныеXDTO.Ссылка.Значение,
ДанныеXDTO[КлассСсылка()].Значение,
КомпонентыОбмена.УзелКорреспондента,
ПравилоКонвертации);
@@ -2346,12 +2344,12 @@
КлючевыеСвойстваКопия = Неопределено;
СсылкаКопия = Неопределено;
Если Приемник.Свойство("КлючевыеСвойства", КлючевыеСвойстваКопия)
Если Приемник.Свойство(КлассКлючевыеСвойства(), КлючевыеСвойстваКопия)
И ТипЗнч(КлючевыеСвойстваКопия) = Тип("Структура")
И КлючевыеСвойстваКопия.Свойство("Ссылка", СсылкаКопия)
И КлючевыеСвойстваКопия.Свойство(КлассСсылка(), СсылкаКопия)
Тогда
Приемник.Вставить("Ссылка", СсылкаКопия);
Приемник.Вставить(КлассСсылка(), СсылкаКопия);
КонецЕсли;
@@ -2794,6 +2792,17 @@
КонецФункции
// Возвращает имя свойства, которое содержит ключевые свойства объекта
//
// Возвращаемое значение:
// Строка - "КлючевыеСвойства".
//
Функция КлассКлючевыеСвойства() Экспорт
Возврат "КлючевыеСвойства"; // @Non-NLS
КонецФункции
#КонецОбласти
#Область СлужебныйПрограммныйИнтерфейс
@@ -3319,11 +3328,11 @@
Продолжить;
КонецЕсли;
КлючевыеСвойства = ТипXDTO.Свойства.Получить("КлючевыеСвойства");
КлючевыеСвойства = ТипXDTO.Свойства.Получить(КлассКлючевыеСвойства());
Если КлючевыеСвойства <> Неопределено Тогда
ТипКлючевыхСвойствОбъектаXDTO = КлючевыеСвойства.Тип;
СвойствоСсылкаXDTO = ТипКлючевыхСвойствОбъектаXDTO.Свойства.Получить("Ссылка");
СвойствоСсылкаXDTO = ТипКлючевыхСвойствОбъектаXDTO.Свойства.Получить(КлассСсылка());
Если СвойствоСсылкаXDTO <> Неопределено Тогда
ПОД.ТипСсылкиXDTO = СвойствоСсылкаXDTO.Тип;
КонецЕсли;
@@ -3585,7 +3594,7 @@
Или ПравилоКонвертации.ЭтоПланВидовРасчета;
Если ЗначениеЗаполнено(ПравилоКонвертации.ОбъектФормата) Тогда
КлючевыеСвойства = ПравилоКонвертации.ТипXDTO.Свойства.Получить("КлючевыеСвойства");
КлючевыеСвойства = ПравилоКонвертации.ТипXDTO.Свойства.Получить(КлассКлючевыеСвойства());
Если КлючевыеСвойства <> Неопределено Тогда
ТипКлючевыхСвойствОбъектаXDTO = КлючевыеСвойства.Тип;
@@ -3614,7 +3623,7 @@
ЗаполнитьЗначенияСвойств(НовоеПКС, ПКС, , "ОбработкаКлючевогоСвойства");
КонецЦикла;
СвойствоСсылкаXDTO = ТипКлючевыхСвойствОбъектаXDTO.Свойства.Получить("Ссылка");
СвойствоСсылкаXDTO = ТипКлючевыхСвойствОбъектаXDTO.Свойства.Получить(КлассСсылка());
Если СвойствоСсылкаXDTO <> Неопределено Тогда
ПравилоКонвертации.ТипСсылкиXDTO = СвойствоСсылкаXDTO.Тип;
@@ -3623,7 +3632,7 @@
И КомпонентыОбмена.НаправлениеОбмена = "Отправка" Тогда
ПКСДляСсылки = ТаблицаПКС.Добавить();
ПКСДляСсылки.СвойствоКонфигурации = "Ссылка";
ПКСДляСсылки.СвойствоФормата = "Ссылка";
ПКСДляСсылки.СвойствоФормата = КлассСсылка();
ПКСДляСсылки.ОбработкаКлючевогоСвойства = Истина;
КонецЕсли;
@@ -3633,7 +3642,7 @@
Если ЭтоБазоваяСхема И ЕстьРасширения Тогда
Для Каждого Расширение Из ПравилоКонвертации.Расширения Цикл
КлючевыеСвойства = Расширение.Значение.ТипXDTO.Свойства.Получить("КлючевыеСвойства");
КлючевыеСвойства = Расширение.Значение.ТипXDTO.Свойства.Получить(КлассКлючевыеСвойства());
Если КлючевыеСвойства <> Неопределено Тогда
@@ -4716,13 +4725,13 @@
КонецЕсли;
ИмяСвойства = ?(ИмяДляСвойстваСоставногоТипа = "", Свойство.Имя, ИмяДляСвойстваСоставногоТипа);
ЗначениеXDTO = Источник.ПолучитьXDTO(Свойство);
ТипЗначенияXDTO = ?(ТипСвойства = Неопределено, ТипЗначенияСвойстваXDTO(КомпонентыОбмена, Свойство, ЗначениеXDTO), ТипСвойства);
Попытка
Если ТипЗнч(ЗначениеXDTO) = Тип("ЗначениеXDTO") Тогда
КонвертироватьПростоеСвойства(Приемник, ИмяСвойства, ЗначениеXDTO);
КонвертироватьПростоеСвойства(Приемник, ИмяСвойства, ЗначениеXDTO, ТипЗначенияXDTO);
ИначеЕсли ТипЗнч(ЗначениеXDTO) = Тип("ОбъектXDTO") Тогда
@@ -4733,8 +4742,6 @@
// - набор общих свойств
// - свойство составного типа.
ТипЗначенияXDTO = ?(ТипСвойства = Неопределено, ТипЗначенияСвойстваXDTO(КомпонентыОбмена, Свойство, ЗначениеXDTO), ТипСвойства);
КлассЗначенияXDTO = ИмяКлассаЗначенияXDTO(Свойство, ТипЗначенияXDTO);
Если КлассЗначенияXDTO = КлассПроизвольныеДанные() Тогда // Дополнительная информация
@@ -4769,19 +4776,24 @@
КонецПроцедуры
Функция ПрочитатьЗначениеXDTO(ЗначениеXDTO)
Функция ПрочитатьЗначениеXDTO(ЗначениеXDTO, ТипСвойства = Неопределено)
ТипСвойства = ?(ТипСвойства = Неопределено, ЗначениеXDTO.Тип(), ТипСвойства);
Если ЗначениеXDTO = Неопределено Тогда
Возврат Неопределено;
КонецЕсли;
Если ЭтоСсылкаXDTO(ЗначениеXDTO.Тип()) Тогда // Конвертация ссылки
Значение = ПрочитатьЗначениеXDTOСложногоТипа(ЗначениеXDTO, "Ссылка");
Если ЭтоСсылкаXDTO(ТипСвойства) Тогда // Конвертация ссылки
Значение = ПрочитатьЗначениеXDTOСложногоТипа(ЗначениеXDTO, "Ссылка", ТипСвойства);
ИначеЕсли ЗначениеXDTO.Тип().Фасеты <> Неопределено
И ЗначениеXDTO.Тип().Фасеты.Перечисления <> Неопределено
И ЗначениеXDTO.Тип().Фасеты.Перечисления.Количество() > 0 Тогда // Конвертация перечисления
Значение = ПрочитатьЗначениеXDTOСложногоТипа(ЗначениеXDTO, "Перечисление");
Значение = ПрочитатьЗначениеXDTOСложногоТипа(ЗначениеXDTO, "Перечисление", ТипСвойства);
Иначе // Конвертация обычного значения.
Значение = ЗначениеXDTO.Значение;
@@ -4792,12 +4804,14 @@
КонецФункции
Функция ПрочитатьЗначениеXDTOСложногоТипа(ЗначениеXDTO, СложныйТип)
Функция ПрочитатьЗначениеXDTOСложногоТипа(ЗначениеXDTO, СложныйТип, ТипСвойства = Неопределено)
ТипСвойства = ?(ТипСвойства = Неопределено, ЗначениеXDTO.Тип(), ТипСвойства);
СтруктураXDTO = Новый Структура;
СтруктураXDTO.Вставить("ЭтоСсылка", СложныйТип = "Ссылка");
СтруктураXDTO.Вставить("ЭтоСсылка", СложныйТип = КлассСсылка());
СтруктураXDTO.Вставить("ЭтоПеречисление", СложныйТип = "Перечисление");
СтруктураXDTO.Вставить("ТипЗначенияXDTO", ЗначениеXDTO.Тип());
СтруктураXDTO.Вставить("ТипЗначенияXDTO", ТипСвойства);
СтруктураXDTO.Вставить("Значение", ЗначениеXDTO.Значение);
Возврат СтруктураXDTO;
@@ -4811,7 +4825,7 @@
Процедура ИнициализироватьКолонкиТаблицыОбъектаПоТипу(Таблица, Знач Тип)
Для Каждого Колонка Из Тип.Свойства Цикл
Если СтрНайти(Колонка.Тип.Имя, "ОбщиеСвойства") > 0 Тогда
Если СтрНайти(Колонка.Тип.Имя, КлассОбщиеСвойства()) > 0 Тогда
ИнициализироватьКолонкиТаблицыОбъектаПоТипу(Таблица, Колонка.Тип);
Иначе
Таблица.Колонки.Добавить(Колонка.Имя);
@@ -4850,7 +4864,7 @@
КонецФункции
// Определение класса для значения свойства.
// Класс используется для выбора алгоритма преобразования в структуру
// Класс используется для выбора алгоритма преобразования в структуру.
//
Функция ИмяКлассаЗначенияXDTO(Знач СвойствоXDTO, Знач ТипЗначенияXDTO)
@@ -4858,9 +4872,9 @@
Возврат КлассПроизвольныеДанные();
ИначеЕсли ЭтоТипТаблицыОбъекта(ТипЗначенияXDTO) Тогда
Возврат КлассТаблицаОбъекта();
ИначеЕсли СтрНайти(ТипЗначенияXDTO.Имя, "КлючевыеСвойства") > 0 Тогда
ИначеЕсли СтрНайти(ТипЗначенияXDTO.Имя, КлассКлючевыеСвойства()) > 0 Тогда
Возврат КлассКлючевыеСвойства();
ИначеЕсли СтрНайти(ТипЗначенияXDTO.Имя, "ОбщиеСвойства") > 0 Тогда
ИначеЕсли СтрНайти(ТипЗначенияXDTO.Имя, КлассОбщиеСвойства()) > 0 Тогда
Возврат КлассОбщиеСвойства();
КонецЕсли;
@@ -4870,9 +4884,9 @@
// Инкапсуляция алгоритмов преобразования свойств объекта XDTO в элементы структуры
//
Процедура КонвертироватьПростоеСвойства(Приемник,Знач ИмяСвойства, Знач ЗначениеXDTO)
Процедура КонвертироватьПростоеСвойства(Приемник,Знач ИмяСвойства, Знач ЗначениеXDTO, Знач ТипСвойства)
Значение = ПрочитатьЗначениеXDTO(ЗначениеXDTO);
Значение = ПрочитатьЗначениеXDTO(ЗначениеXDTO, ТипСвойства);
Если ТипЗнч(Приемник) = Тип("Структура") Тогда
Приемник.Вставить(ИмяСвойства, Значение);
@@ -4933,11 +4947,11 @@
Приемник.Вставить(ИмяСвойства, ПриемникГруппыСвойств);
// По возможности свойства из группы свойств надо продублировать в приемнике,
// Для совместимости с существующими правилами и алгоритмами.
ЕстьКлючевыеСвойства = Приемник.Свойство("КлючевыеСвойства");
ЕстьКлючевыеСвойства = Приемник.Свойство(КлассКлючевыеСвойства());
Для Каждого СвойствоГруппы Из ПриемникГруппыСвойств Цикл
ИмяПодСвойства = СвойствоГруппы.Ключ;
Если НЕ Приемник.Свойство(ИмяПодСвойства)
И НЕ (ЕстьКлючевыеСвойства И Приемник.КлючевыеСвойства.Свойство(ИмяПодСвойства)) Тогда
И НЕ (ЕстьКлючевыеСвойства И Приемник[КлассКлючевыеСвойства()].Свойство(ИмяПодСвойства)) Тогда
Приемник.Вставить(ИмяПодСвойства, СвойствоГруппы.Значение);
КонецЕсли;
КонецЦикла;
@@ -4960,7 +4974,7 @@
Процедура КонвертироватьКлючевоеСвойство(Приемник, Знач КомпонентыОбмена, Знач ИмяСвойства, Знач ТипЗначенияXDTO, Знач ЗначениеXDTO)
Значение = Новый Структура("ЭтоНаборКлючевыхСвойств");
Значение.Вставить("ТипЗначения", СтрЗаменить(ТипЗначенияXDTO.Имя, "КлючевыеСвойства", ""));
Значение.Вставить("ТипЗначения", СтрЗаменить(ТипЗначенияXDTO.Имя, КлассКлючевыеСвойства(), ""));
Для Каждого КлючевоеСвойство Из ЗначениеXDTO.Свойства() Цикл
ОписаниеСвойства = ТипЗначенияXDTO.Свойства.Получить(КлючевоеСвойство.Имя);
@@ -4971,6 +4985,8 @@
КонвертацияСвойстваXDTOВЭлементСтруктуры(ЗначениеXDTO, КлючевоеСвойство, Значение, КомпонентыОбмена,,ОписаниеСвойства.Тип);
КонецЦикла;
ДополнитьТаблицуСвойствамиАктивныхРасширений(КомпонентыОбмена, ТипЗначенияXDTO, ЗначениеXDTO, Значение);
Если ТипЗнч(Приемник) = Тип("Структура") Тогда
Приемник.Вставить(ИмяСвойства, Значение);
Иначе
@@ -5002,33 +5018,33 @@
// Формализация классов значения свойств
//
Функция КлассКлючевыеСвойства()
Возврат "КлючевыеСвойства";
КонецФункции
Функция КлассОбщиеСвойства()
Возврат "ОбщиеСвойства";
Возврат "ОбщиеСвойства"; // @Non-NLS
КонецФункции
Функция КлассСоставныеСвойства()
Возврат "СоставныеСвойства";
Возврат "СоставныеСвойства"; // @Non-NLS
КонецФункции
Функция КлассПроизвольныеДанные()
Возврат "ПроизвольныеДанные";
Возврат "ПроизвольныеДанные"; // @Non-NLS
КонецФункции
Функция КлассТаблицаОбъекта()
Возврат "ТаблицаОбъекта";
Возврат "ТаблицаОбъекта"; // @Non-NLS
КонецФункции
Функция КлассСсылка()
Возврат "Ссылка"; // @Non-NLS
КонецФункции
@@ -5184,7 +5200,7 @@
Если ПКС.ОбработкаКлючевогоСвойства
И Не ДанныеXDTO.Свойство("ЭтоНаборКлючевыхСвойств") Тогда
ИсточникДанных = ДанныеXDTO.КлючевыеСвойства;
ИсточникДанных = ДанныеXDTO[КлассКлючевыеСвойства()];
Иначе
ИсточникДанных = ДанныеXDTO;
КонецЕсли;
@@ -5487,10 +5503,11 @@
ПолученныеДанные = ПравилоКонвертации.МенеджерОбъекта.СоздатьДокумент();
ИначеЕсли ПравилоКонвертации.ЭтоСправочник
Или ПравилоКонвертации.ЭтоПланВидовХарактеристик Тогда
МенеджерОбъекта = ПравилоКонвертации.МенеджерОбъекта; //СправочникМенеджер
Если ПравилоКонвертации.ПравилоДляГруппыСправочника Тогда
ПолученныеДанные = ПравилоКонвертации.МенеджерОбъекта.СоздатьГруппу();
ПолученныеДанные = МенеджерОбъекта.СоздатьГруппу();
Иначе
ПолученныеДанные = ПравилоКонвертации.МенеджерОбъекта.СоздатьЭлемент();
ПолученныеДанные = МенеджерОбъекта.СоздатьЭлемент();
КонецЕсли;
ИначеЕсли ПравилоКонвертации.ЭтоРегистр Тогда
ПолученныеДанные = ПравилоКонвертации.МенеджерОбъекта.СоздатьНаборЗаписей();
@@ -5791,7 +5808,7 @@
КонецЕсли;
Для Каждого Колонка Из ТабличнаяЧасть.Тип.Свойства[0].Тип.Свойства Цикл
Если СтрНайти(Колонка.Тип.Имя, "ОбщиеСвойства") > 0 Тогда
Если СтрНайти(Колонка.Тип.Имя, КлассКлючевыеСвойства()) > 0 Тогда
Для Каждого ПодКолонка Из Колонка.Тип.Свойства Цикл
Если ТаблицаОбъекта.Колонки.Найти(ПодКолонка.Имя) <> Неопределено Тогда
Продолжить;
@@ -5938,12 +5955,12 @@
КонецЕсли;
СинхронизироватьПоИдентификатору = ПоискПоИдентификатору(ПравилоКонвертации.ВариантИдентификации)
И ДанныеXDTO.Свойство("Ссылка");
И ДанныеXDTO.Свойство(КлассСсылка());
Если Не ТекущееПКО.Значение Тогда
Если СинхронизироватьПоИдентификатору Тогда
ДополнитьСписокОбъектовКУдалению(КомпонентыОбмена,
ПравилоКонвертации.ТипДанных, ДанныеXDTO.Ссылка.Значение, МассивОбъектовКУдалению);
ПравилоКонвертации.ТипДанных, ДанныеXDTO[КлассСсылка()].Значение, МассивОбъектовКУдалению);
КонецЕсли;
Продолжить;
КонецЕсли;
@@ -5954,7 +5971,7 @@
Если СинхронизироватьПоИдентификатору Тогда
МассивЗагруженныхОбъектов.Добавить(
СсылкаОбъектаПоУИДОбъектаXDTO(ДанныеXDTO.Ссылка.Значение, ПравилоКонвертации.ТипДанных, КомпонентыОбмена));
СсылкаОбъектаПоУИДОбъектаXDTO(ДанныеXDTO[КлассСсылка()].Значение, ПравилоКонвертации.ТипДанных, КомпонентыОбмена));
КонецЕсли;
Иначе
Если КомпонентыОбмена.РежимЗагрузкиДанныхВИнформационнуюБазу
@@ -6008,8 +6025,8 @@
УникальныйИдентификаторСтрокой = "";
СтрокаТаблицы = Неопределено;
Если ДанныеXDTO.Свойство("Ссылка") Тогда
УникальныйИдентификаторСтрокой = ДанныеXDTO.Ссылка.Значение;
Если ДанныеXDTO.Свойство(КлассСсылка()) Тогда
УникальныйИдентификаторСтрокой = ДанныеXDTO[КлассСсылка()].Значение;
СтрокаТаблицы = ТаблицаДанныхСообщенияОбмена.Найти(УникальныйИдентификаторСтрокой, "УникальныйИдентификатор");
КонецЕсли;
@@ -6025,7 +6042,7 @@
СсылкаНаОбъект = Неопределено;
Если СинхронизироватьПоИдентификатору Тогда
СсылкаНаОбъект = СсылкаОбъектаПоУИДОбъектаXDTO(ДанныеXDTO.Ссылка.Значение,
СсылкаНаОбъект = СсылкаОбъектаПоУИДОбъектаXDTO(ДанныеXDTO[КлассСсылка()].Значение,
ПравилоКонвертации.ТипДанных, КомпонентыОбмена);
Иначе
СсылкаНаОбъект = Неопределено;
@@ -6254,7 +6271,7 @@
КонецЕсли;
ЗначениеСвойстваXDTO = ОбъектXDTO.СсылкаНаОбъект.СсылкаНаОбъект.ПолучитьXDTO(СвойствоXDTO);
ЗначениеСсылкиXDTO = ПрочитатьЗначениеXDTOСложногоТипа(ЗначениеСвойстваXDTO, "Ссылка");
ЗначениеСсылкиXDTO = ПрочитатьЗначениеXDTOСложногоТипа(ЗначениеСвойстваXDTO, "Ссылка", ЗначениеСвойстваXDTO.Тип());
// Определим тип ссылки
ТипСсылкиXDTO = ЗначениеСсылкиXDTO.ТипЗначенияXDTO;
@@ -7203,10 +7220,10 @@
ПредставлениеОбъекта = "";
ТипОбъекта = Объект.Тип().Имя;
Если КоллекцияСвойств.Количество() > 0 И КоллекцияСвойств.Получить("КлючевыеСвойства") <> Неопределено Тогда
КлючевыеСвойства = Объект.Получить("КлючевыеСвойства");
Если КоллекцияСвойств.Количество() > 0 И КоллекцияСвойств.Получить(КлассКлючевыеСвойства()) <> Неопределено Тогда
КлючевыеСвойства = Объект.Получить(КлассКлючевыеСвойства());
Реквизиты = Новый Структура("Наименование, Код, КодВПрограмме, Номер, Дата");
Реквизиты = Новый Структура("Наименование, Код, КодВПрограмме, Номер, Дата"); // @Non-NLS
ЗаполнитьЗначенияСвойств(Реквизиты, КлючевыеСвойства);
ПредставлениеОбъекта = ПредставлениеКоллекцииСвойствДляПротокола(Реквизиты);
@@ -7253,24 +7270,24 @@
ЗначениеСвойства = Неопределено;
Если КоллекцияСвойств.Свойство("Наименование", ЗначениеСвойства)
Если КоллекцияСвойств.Свойство("Наименование", ЗначениеСвойства) // @Non-NLS
И ЗначениеЗаполнено(ЗначениеСвойства) Тогда
ЭлементыПредставления.Добавить(СокрЛП(ЗначениеСвойства));
КонецЕсли;
Если КоллекцияСвойств.Свойство("Код", ЗначениеСвойства)
Если КоллекцияСвойств.Свойство("Код", ЗначениеСвойства) // @Non-NLS
И ЗначениеЗаполнено(ЗначениеСвойства) Тогда
ЭлементыПредставления.Добавить("(" + СокрЛП(ЗначениеСвойства) + ")");
ИначеЕсли КоллекцияСвойств.Свойство("КодВПрограмме", ЗначениеСвойства)
ИначеЕсли КоллекцияСвойств.Свойство("КодВПрограмме", ЗначениеСвойства) // @Non-NLS
И ЗначениеЗаполнено(ЗначениеСвойства) Тогда
ЭлементыПредставления.Добавить("(" + СокрЛП(ЗначениеСвойства) + ")");
КонецЕсли;
Если КоллекцияСвойств.Свойство("Номер", ЗначениеСвойства)
Если КоллекцияСвойств.Свойство("Номер", ЗначениеСвойства) // @Non-NLS
И ЗначениеЗаполнено(ЗначениеСвойства) Тогда
ЗначениеСвойстваДата = Неопределено;
Если КоллекцияСвойств.Свойство("Дата", ЗначениеСвойстваДата)
Если КоллекцияСвойств.Свойство("Дата", ЗначениеСвойстваДата) // @Non-NLS
И ЗначениеЗаполнено(ЗначениеСвойстваДата) Тогда
ЭлементыПредставления.Добавить(
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '№%1 от %2'"), ЗначениеСвойства, Формат(ЗначениеСвойстваДата, "ДЛФ=D")));
@@ -7279,7 +7296,7 @@
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '№%1'"), ЗначениеСвойства));
КонецЕсли;
ИначеЕсли КоллекцияСвойств.Свойство("Дата", ЗначениеСвойства)
ИначеЕсли КоллекцияСвойств.Свойство("Дата", ЗначениеСвойства) // @Non-NLS
И ЗначениеЗаполнено(ЗначениеСвойства) Тогда
ЭлементыПредставления.Добавить(
@@ -7700,6 +7717,112 @@
КонецФункции
Функция ДоступныеРасширенияФормата(ВерсияФорматаОбмена) Экспорт
Результат = Новый Соответствие;
КоллекцияРасширений = Новый Соответствие;
ОбменДаннымиПереопределяемый.ПриПолученииДоступныхРасширенийФормата(КоллекцияРасширений);
СчетчикРасширений = 1;
Для Каждого КлючЗначение Из КоллекцияРасширений Цикл
Если ВерсияФорматаОбмена <> КлючЗначение.Значение Тогда
Продолжить;
КонецЕсли;
Результат.Вставить(КлючЗначение.Ключ, СтрШаблон("ext%1", XMLСтрока(СчетчикРасширений)));
СчетчикРасширений = СчетчикРасширений + 1;
КонецЦикла;
Возврат Результат;
КонецФункции
Процедура ДополнитьСвойстваПакетаИзРасширений(СвойстваИсточника, КомпонентыОбмена, Расширения)
Если Расширения = Неопределено Тогда
Возврат;
КонецЕсли;
// КомпонентыОбмена.РасширенияФормата - расширения доступные в текущем формате обмена;
// Расширения - расширения инициализированное в правиле обмена.
Для Каждого Расширение Из Расширения Цикл
Если КомпонентыОбмена.РасширенияФормата.Получить(Расширение.Ключ) = Неопределено Тогда
Продолжить;
КонецЕсли;
РасширенныйТипXDTO = Неопределено;
НужныеСвойстваОтсутствуют = НЕ Расширение.Значение.Свойство("ТипXDTO", РасширенныйТипXDTO)
И НЕ Расширение.Значение.Свойство("ТипСоставногоСвойства", РасширенныйТипXDTO);
Если НужныеСвойстваОтсутствуют
ИЛИ РасширенныйТипXDTO = Неопределено Тогда
Продолжить;
КонецЕсли;
Для Каждого Свойство Из РасширенныйТипXDTO.Свойства Цикл
Если Свойство.URIПространстваИмен <> Расширение.Ключ Тогда
Продолжить;
КонецЕсли;
СвойстваИсточника.Добавить(Свойство);
КонецЦикла;
КонецЦикла;
КонецПроцедуры
Процедура ДополнитьТаблицуСвойствамиАктивныхРасширений(КомпонентыОбмена, ТипЗначенияXDTO, ЗначениеXDTO, Значение)
Если НЕ ЭтоБазоваяСхема(КомпонентыОбмена, ТипЗначенияXDTO.URIПространстваИмен)
ИЛИ КомпонентыОбмена.РасширенияФормата.Количество() = 0 Тогда
Возврат;
КонецЕсли;
Для Каждого Расширение Из КомпонентыОбмена.РасширенияФормата Цикл
РасширениеТипаЗначенияXDTO = ФабрикаXDTO.Тип(Расширение.Ключ, ТипЗначенияXDTO.Имя);
Если РасширениеТипаЗначенияXDTO = Неопределено Тогда
Продолжить;
КонецЕсли;
Для Каждого КлючевоеСвойство Из ЗначениеXDTO.Свойства() Цикл
ОписаниеСвойства = РасширениеТипаЗначенияXDTO.Свойства.Получить(КлючевоеСвойство.Имя);
Если ОписаниеСвойства = Неопределено Тогда
Продолжить;
КонецЕсли;
КонвертацияСвойстваXDTOВЭлементСтруктуры(ЗначениеXDTO, КлючевоеСвойство, Значение, КомпонентыОбмена,,ОписаниеСвойства.Тип);
КонецЦикла;
КонецЦикла;
КонецПроцедуры
Процедура ЗаписатьПриНеобходимостиПубличныйИдентификатор(
ДанныеДляЗаписиВИБ,
ПолученныеДанныеСсылка,
@@ -7904,7 +8027,7 @@
Для Каждого ДочернееСвойство Из ТипОбъектаXDTO.Свойства Цикл
Если ТипЗнч(ДочернееСвойство.Тип) = Тип("ТипОбъектаXDTO")
И СтрНачинаетсяС(ДочернееСвойство.Тип.Имя, "ОбщиеСвойства") Тогда
И СтрНачинаетсяС(ДочернееСвойство.Тип.Имя, КлассОбщиеСвойства()) Тогда
ЗаполнитьСписокСвойствОбъектаXDTO(ДочернееСвойство.Тип, Свойства);
Иначе
Свойства.Добавить(ДочернееСвойство.Имя);
@@ -1463,7 +1463,7 @@
КонецПроцедуры
// Возвращаемое значение:
// ПланОбменаСсылка
// ПланОбменаМенеджер
//
Функция МенеджерПланаОбменаКонечныхТочек() Экспорт
@@ -291,6 +291,9 @@
КонецПроцедуры
// Параметры:
// УзелОбъект - ПланОбменаОбъект
//
Функция ПроверитьНеобходимостьОтложеннойЗаписиУзла(Знач УзелОбъект) Экспорт
ИсключаемыеСвойства = Новый Массив;
@@ -319,7 +322,7 @@
КонецЕсли;
ТипУзла = Тип("ПланОбменаОбъект." + УзелОбъект.Ссылка.Метаданные().Имя);
УзелПередЗаписью = ДанныеФормыВЗначение(УзелОбъект, ТипУзла);
УзелПередЗаписью = ДанныеФормыВЗначение(УзелОбъект, ТипУзла); //ПланОбменаОбъект
Результат = Новый Структура;
Результат.Вставить("НеобходимаДлительнаяОперация" , Ложь);
@@ -288,7 +288,7 @@
//
// Параметры:
// Форма - ФормаКлиентскогоПриложения - узел плана обмена.
// Отказ - Булево - признак отказа от записи узла плана обмена.
// Отказ - Булево - признак отказа от записи узла плана обмена.
// ПараметрыЗаписи - Структура - произвольные параметры записи. См. описание события ПослеЗаписи в синтакс-помощнике.
//
Процедура ПередЗаписью(Форма, Отказ, ПараметрыЗаписи) Экспорт
@@ -310,8 +310,10 @@
ИначеЕсли РезультатПроверки.НеобходимаДлительнаяОперация Тогда
Объект = Форма.Объект; //ПланОбменаОбъект
ПараметрыОбработки = Новый Структура;
ПараметрыОбработки.Вставить("Узел", Форма.Объект.Ссылка);
ПараметрыОбработки.Вставить("Узел", Объект.Ссылка);
ПараметрыОбработки.Вставить("АдресСтруктурыУзла", РезультатПроверки.АдресСтруктурыУзла);
Форма.Модифицированность = Ложь;
@@ -1662,6 +1662,24 @@
#Область РазличногоНазначения
Функция ЭтоТехническийОбъект(Знач ПолноеИмяОбъекта) Экспорт
Если СтрНайти(ПолноеИмяОбъекта, ВРег("ПланОбмена")) > 0 Тогда
Для Каждого ИмяПланаОбмена Из ОбменДаннымиПовтИсп.ПланыОбменаБСП() Цикл
Если СтрНайти(ПолноеИмяОбъекта, ВРег(ИмяПланаОбмена)) Тогда
Возврат Истина;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Возврат Ложь;
КонецФункции
// Выполняет загрузку приоритетных данных, полученных из главного узла РИБ.
Процедура ЗагрузитьПриоритетныеДанныеВПодчиненныйУзелРИБ(Отказ = Ложь) Экспорт
@@ -4808,24 +4826,6 @@
КонецПроцедуры
Функция ЭтоТехническийОбъект(Знач ПолноеИмяОбъекта) Экспорт
Если СтрНайти(ПолноеИмяОбъекта, ВРег("ПланОбмена")) > 0 Тогда
Для Каждого ИмяПланаОбмена Из ОбменДаннымиПовтИсп.ПланыОбменаБСП() Цикл
Если СтрНайти(ПолноеИмяОбъекта, ВРег(ИмяПланаОбмена)) Тогда
Возврат Истина;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Возврат Ложь;
КонецФункции
Процедура ВыполнитьОтложенноеПроведениеДокументов(
ДокументыДляОтложенногоПроведения,
УзелКорреспондента,
@@ -6368,7 +6368,7 @@
КонецЕсли;
// Получаем инициализированную обработку обмена данными.
ОбработкаОбменаДаннымиXML = СтруктураНастроекОбмена.ОбработкаОбменаДанными;
ОбработкаОбменаДаннымиXML = СтруктураНастроекОбмена.ОбработкаОбменаДанными; //ОбработкаОбъект.КонвертацияОбъектовXDTO
ОбработкаОбменаДаннымиXML.ИмяФайлаОбмена = ИмяФайлаСообщенияОбмена;
// выгрузка данных
@@ -6449,7 +6449,7 @@
Отказ = Ложь;
// Получаем обработку обмена данными.
ОбработкаОбменаДанными = СтруктураНастроекОбмена.ОбработкаОбменаДанными;
ОбработкаОбменаДанными = СтруктураНастроекОбмена.ОбработкаОбменаДанными; //ОбработкаОбъект.КонвертацияОбъектовРаспределенныхИнформационныхБаз
// Устанавливаем имя файла сообщения обмена, который необходимо прочитать.
ОбработкаОбменаДанными.УстановитьИмяФайлаСообщенияОбмена(ИмяФайлаСообщенияОбмена);
@@ -6511,7 +6511,7 @@
Если СтруктураНастроекОбмена.ОбменПоПравиламКонвертацииОбъектов Тогда
// Получаем инициализированную обработку обмена данными.
ОбработкаОбменаДаннымиXML = СтруктураНастроекОбмена.ОбработкаОбменаДанными;
ОбработкаОбменаДаннымиXML = СтруктураНастроекОбмена.ОбработкаОбменаДанными; //ОбработкаОбъект.КонвертацияОбъектовXDTO
ОбработкаОбменаДаннымиXML.ИмяФайлаОбмена = ИмяФайлаСообщенияОбмена;
// загрузка данных
@@ -7218,8 +7218,17 @@
//
Функция ИмяОбработкиТранспортаСообщенийОбмена(ВидТранспорта)
Возврат СтрЗаменить("ТранспортСообщенийОбмена[ВидТранспорта]", "[ВидТранспорта]", ОбщегоНазначения.ИмяЗначенияПеречисления(ВидТранспорта));
ВидыТранспортаИОбработки = Новый Соответствие();
ВидыТранспортаИОбработки.Вставить(Перечисления.ВидыТранспортаСообщенийОбмена.EMAIL, Метаданные.Обработки.ТранспортСообщенийОбменаEMAIL.Имя);
ВидыТранспортаИОбработки.Вставить(Перечисления.ВидыТранспортаСообщенийОбмена.FILE, Метаданные.Обработки.ТранспортСообщенийОбменаFILE.Имя);
ВидыТранспортаИОбработки.Вставить(Перечисления.ВидыТранспортаСообщенийОбмена.FTP, Метаданные.Обработки.ТранспортСообщенийОбменаFTP.Имя);
Если ОбщегоНазначения.ПодсистемаСуществует("ИнтернетПоддержкаПользователей.ОбменДаннымиСВнешнимиСистемами") Тогда
ВидыТранспортаИОбработки.Вставить(Перечисления.ВидыТранспортаСообщенийОбмена.ВнешняяСистема, "ТранспортСообщенийОбменаВнешняяСистема");
КонецЕсли;
Возврат ВидыТранспортаИОбработки.Получить(ВидТранспорта);
КонецФункции
// Дубль процедуры на сервере ОбменДаннымиКлиент.МаксимальноеКоличествоПолейСопоставленияОбъектов().
@@ -8691,7 +8700,7 @@
// Параметры:
//
// Возвращаемое значение:
// СтруктураНастроекОбмена - Структура - структура со всеми необходимыми данными и объектами для выполнения обмена.
// Структура - структура со всеми необходимыми данными и объектами для выполнения обмена.
//
Функция НастройкиОбменаДляУзлаИнформационнойБазы(
УзелИнформационнойБазы,
@@ -8864,6 +8873,15 @@
Возврат СтруктураНастроекОбмена;
КонецФункции
// Структура настроек обмена для сеанса интерактивной загрузки.
//
// Параметры:
// УзелИнформационнойБазы - ПланОбменаСсылка - узел информационной базы.
// ИмяФайлаСообщенияОбмена - Строка - имя файла сообщения обмена.
//
// Возвращаемое значение:
// см. СтруктураНастроекОбменаБазовая.
//
Функция СтруктураНастроекОбменаДляСеансаИнтерактивнойЗагрузки(Знач УзелИнформационнойБазы, Знач ИмяФайлаСообщенияОбмена) Экспорт
Возврат ОбменДаннымиПовтИсп.СтруктураНастроекОбменаДляСеансаИнтерактивнойЗагрузки(УзелИнформационнойБазы, ИмяФайлаСообщенияОбмена);
@@ -9006,6 +9024,57 @@
КонецПроцедуры
// Структура настроек обмена базовая.
//
// Возвращаемое значение:
// Структура:
// * ДатаНачала - Дата
// * ДатаОкончания - Дата
// * НомерСтроки - Число.
// * НастройкаВыполненияОбмена - СправочникСсылка.СценарииОбменовДанными - элемент справочника,
// по значениям реквизитов которого будет выполнен обмен данными.
// * НастройкаВыполненияОбменаНаименование - Строка - наименование настройки выполнения обмена.
// * УзелИнформационнойБазы - ПланОбменаСсылка - узел плана обмена, для которого выполняется действие обмена данными.
// * УзелИнформационнойБазыКод - Строка.
// * УзелИнформационнойБазыНаименование - Строка.
// * ВидТранспортаОбмена - ПеречислениеСсылка.ВидыТранспортаСообщенийОбмена - вид транспорта,
// который будет использоваться в процессе обмена данными.
// * ДействиеПриОбмене - ПеречислениеСсылка.ДействияПриОбмене - выполняемое действие обмена данными.
// * КоличествоЭлементовВТранзакции - Число.
// * ПроизводитьЗагрузкуДанных - Булево.
// * ПроизводитьВыгрузкуДанных - Булево.
// * ИспользоватьПередачуБольшогоОбъемаДанных - Булево.
// * Отказ - Булево.
// * ЭтоОбменВРИБ - Булево.
// * ОбработкаОбменаДанными - ОбработкаОбъект.КонвертацияОбъектовXDTO.
// - ОбработкаОбъект.КонвертацияОбъектовИнформационныхБаз.
// - ОбработкаОбъект.КонвертацияОбъектовРаспределенныхИнформационныхБаз.
// * ОбработкаТранспортаСообщенийОбмена - ОбработкаМенеджер.
// * ИмяПланаОбмена - Строка.
// * ТекущийУзелПланаОбмена - ПланОбменаСсылка.
// * ТекущийУзелПланаОбменаКод - ПланОбменаСсылка.
// * ОбменПоПравиламКонвертацииОбъектов - Булево.
// * НаличиеПравилКонвертацииОбязательно - Булево.
// * ИмяОбработкиТранспортаСообщенийОбмена - Строка.
// * КлючСообщенияЖурналаРегистрации - Строка.
// * НастройкиТранспорта - Произвольный - сохраненные настройки транспорта сообщений обмена внешней системы.
// * ПравилаКонвертацииОбъектов - ХранилищеЗначения - зачитанные правила конвертации объектов.
// - Неопределено - если правила конвертации не были загружены в базу для
// * ПравилаЗагружены - Булево.
// * ОтладкаОбработчиковВыгрузки - Булево.
// * ОтладкаОбработчиковЗагрузки - Булево.
// * ИмяФайлаВнешнейОбработкиОтладкиВыгрузки - Строка.
// * ИмяФайлаВнешнейОбработкиОтладкиЗагрузки - Строка.
// * РежимПротоколированияОбменаДанными - Булево.
// * ИмяФайлаПротоколаОбмена - Строка.
// * ПродолжитьПриОшибке - Булево.
// * ДополнительныеПараметры - Структура.
// * РезультатВыполненияОбмена - ПеречислениеСсылка.РезультатыВыполненияОбмена.
// * ДействиеПриОбмене - ПеречислениеСсылка.ДействияПриОбмене - выполняемое действие обмена данными.
// * КоличествоОбъектовОбработано - Число.
// * СообщениеПриОбмене - Строка.
// * СтрокаСообщенияОбОшибке - Строка.
//
Функция СтруктураНастроекОбменаБазовая()
СтруктураНастроекОбмена = Новый Структура;
@@ -11423,7 +11492,7 @@
Отбор = Новый Структура("ПолноеИмя", ОтборСтрока);
// Получаем дерево объектов метаданных конфигурации.
ДеревоИнформацииСтатистики = ОбменДаннымиПовтИсп.МетаданныеКонфигурации(Отбор).Скопировать();
ДеревоИнформацииСтатистики = ОбменДаннымиПовтИсп.МетаданныеКонфигурации(Отбор).Скопировать(); //ДеревоЗначений
// Добавляем колонки
ДеревоИнформацииСтатистики.Колонки.Добавить("Ключ");
@@ -14742,7 +14811,7 @@
ОбработкаДляЗагрузкиДанных.ИспользоватьТранзакции = (ОбработкаДляЗагрузкиДанных.КоличествоОбъектовНаТранзакцию <> 1);
// Получаем инициализированную обработку для выгрузки данных.
ОбработкаОбменаДаннымиXML = СтруктураНастроекОбмена.ОбработкаОбменаДанными;
ОбработкаОбменаДаннымиXML = СтруктураНастроекОбмена.ОбработкаОбменаДанными; //ОбработкаОбъект.КонвертацияОбъектовXDTO
ОбработкаОбменаДаннымиXML.ИмяФайлаОбмена = "";
Если Не ЭтоПланОбменаXDTO Тогда
@@ -41,7 +41,7 @@
Процедура ПриДобавленииПодсистемы(Описание) Экспорт
Описание.Имя = "СтандартныеПодсистемы";
Описание.Версия = "3.1.5.110";
Описание.Версия = "3.1.5.132";
Описание.ИдентификаторИнтернетПоддержки = "SSL";
Описание.РежимВыполненияОтложенныхОбработчиков = "Параллельно";
Описание.ПараллельноеОтложенноеОбновлениеСВерсии = "2.3.3.0";
@@ -227,6 +227,8 @@
//
Процедура ПриДобавленииОбработчиковПереходаСДругойПрограммы(Обработчики) Экспорт
ИнтеграцияПодсистемБСП.ПриДобавленииОбработчиковПереходаСДругойПрограммы(Обработчики);
КонецПроцедуры
// Вызывается после выполнения всех процедур-обработчиков перехода с другой программы (с другим именем конфигурации),
@@ -919,6 +919,7 @@
ОписаниеОбрабатываемыхДанных = НовоеОписаниеОбрабатываемыхДанных(Обработчик.Многопоточный);
ОписаниеОбрабатываемыхДанных.ДанныеОбработчика = ПараметрыОбработчикаСтруктура.ДанныеОбработчика;
ОписаниеОбрабатываемыхДанных.ИмяОбработчика = Обработчик.ИмяОбработчика;
Если Обработчик.Многопоточный Тогда
ОписаниеОбрабатываемыхДанных.ПараметрыВыборки = ПараметрыОбработчикаСтруктура.ПараметрыВыборки;
@@ -1712,6 +1713,21 @@
КонецЦикла;
Если ОбщегоНазначения.ЭтоПланСчетов(МетаданныеОбъекта)
Или ОбщегоНазначения.ЭтоПланВидовРасчета(МетаданныеОбъекта) Тогда
Для Каждого ТабличнаяЧасть Из МетаданныеОбъекта.СтандартныеТабличныеЧасти Цикл
ПредопределенныеДанные.Колонки.Добавить(ТабличнаяЧасть.Имя, Новый ОписаниеТипов("ТаблицаЗначений"));
Таблица = Новый ТаблицаЗначений;
Для Каждого Реквизит Из ТабличнаяЧасть.СтандартныеРеквизиты Цикл
ДобавитьКолонкуТаблицыПредопределенныхДанных(Таблица, Реквизит, ЛокализуемыеРеквизитыОбъекта, Языки);
КонецЦикла;
ТабличныеЧасти.Вставить(ТабличнаяЧасть.Имя, Таблица);
КонецЦикла;
КонецЕсли;
Если ПредопределенныеДанные.Колонки.Найти("ИмяПредопределенныхДанных") <> Неопределено Тогда
ПредопределенныеДанные.Индексы.Добавить("ИмяПредопределенныхДанных");
КонецЕсли;
@@ -1723,9 +1739,11 @@
КонецФункции
// Заполнение предопределенных элементов при первом запуске
//
Процедура НачальноеЗаполнениеПредопределенныхДанных(ОбновитьМультиязычныеСтроки = Ложь) Экспорт
// Параметры:
// ОбновитьМультиязычныеСтроки - Булево - если Истина, то будут перезаполнены, только мультиязычные реквизиты.
// ДополнительныеПараметры - см. МультиязычностьСервер.ОписаниеСтарыхИНовыхНастроекЯзыков
//
Процедура НачальноеЗаполнениеПредопределенныхДанных(ОбновитьМультиязычныеСтроки = Ложь, ДополнительныеПараметры = Неопределено) Экспорт
ОбъектыСНачальнымЗаполнением = ОбъектыСНачальнымЗаполнением();
ПараметрыЗаполнения = Новый Структура;
@@ -1758,15 +1776,20 @@
КонецЕсли;
КонецЦикла;
РеквизитыИсключения = ?(СтрНачинаетсяС(МетаданныеОбъекта.ПолноеИмя(), "ПланВидовХарактеристик"), "ТипЗначения", "");
РеквизитыИсключения = Новый Соответствие;
Если СтрНачинаетсяС(МетаданныеОбъекта.ПолноеИмя(), "ПланВидовХарактеристик") Тогда
РеквизитыИсключения.Вставить("ТипЗначения", Истина);
КонецЕсли;
ПоддерживаетсяИерархия = ПредопределенныеДанные.Колонки.Найти("ЭтоГруппа") <> Неопределено;
РеквизитыСЭлементами = Новый Массив;
РеквизитыИсключенияСЭлементами = Новый Соответствие;
Если ПоддерживаетсяИерархия Тогда
ОбщегоНазначенияКлиентСервер.ДополнитьСоответствие(РеквизитыИсключенияСЭлементами, РеквизитыИсключения);
ДляЭлемента = Метаданные.СвойстваОбъектов.ИспользованиеРеквизита.ДляЭлемента;
Для Каждого Реквизит Из МетаданныеОбъекта.Реквизиты Цикл
Если Реквизит.Использование = ДляЭлемента Тогда
РеквизитыСЭлементами.Добавить(Реквизит.Имя);
РеквизитыИсключенияСЭлементами.Вставить(Реквизит.Имя, Истина);
КонецЕсли;
КонецЦикла;
КонецЕсли;
@@ -1799,27 +1822,36 @@
Если Не ОбновитьМультиязычныеСтроки Тогда
КромеРеквизитов = РеквизитыИсключения;
Если ПоддерживаетсяИерархия И ЗаполняемыйЭлемент.ЭтоГруппа Тогда
КромеРеквизитов = РеквизитыИсключения
+ ?(ПустаяСтрока(РеквизитыИсключения), "", ",") + СтрСоединить(РеквизитыСЭлементами, ",");
КонецЕсли;
ПоляИсключения =?(ПоддерживаетсяИерархия И ЗаполняемыйЭлемент.ЭтоГруппа,
РеквизитыИсключенияСЭлементами, РеквизитыИсключения);
ЗаполнитьЗначенияСвойств(ЗаполняемыйЭлемент, СтрокаТаблицы,, КромеРеквизитов);
ДанныеЗаполнения = ОпределитьДанныеЗаполнения(ПредопределенныеДанные,
СтрокаТаблицы, ПоляИсключения);
ЗаполнитьЗначенияСвойств(ЗаполняемыйЭлемент, ДанныеЗаполнения);
Если НЕ (ПоддерживаетсяИерархия И ЗаполняемыйЭлемент.ЭтоГруппа) Тогда
Для Каждого ИмяТабличнойЧасти Из ТабличныеЧасти Цикл
ЗаполняемыйЭлемент[ИмяТабличнойЧасти].Загрузить(СтрокаТаблицы[ИмяТабличнойЧасти]);
Если СтрокаТаблицы[ИмяТабличнойЧасти].Количество() > 0 Тогда
ЗаполняемыйЭлемент[ИмяТабличнойЧасти].Загрузить(СтрокаТаблицы[ИмяТабличнойЧасти]);
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда
МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер");
МодульМультиязычностьСервер.НачальноеЗаполнениеПредопределенныхДанныхЛокализуемыеРеквизиты(
ЗаполняемыйЭлемент, ПоддерживаетсяИерархия, СтрокаТаблицы, ПараметрыЗаполнения);
Если ЛокализуемыеРеквизитыОбъекта.Количество() > 0 И ЛокализуемыеРеквизитыОбъекта["Наименование"] <> Неопределено Тогда
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Мультиязычность") Тогда
МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер");
МодульМультиязычностьСервер.НачальноеЗаполнениеПредопределенныхДанныхЛокализуемыеРеквизиты(
ЗаполняемыйЭлемент, ПоддерживаетсяИерархия, СтрокаТаблицы, ПараметрыЗаполнения);
КонецЕсли;
ИначеЕсли ОбновитьМультиязычныеСтроки
И ПредопределенныеДанные.Колонки.Найти("Наименование") <> Неопределено
И ЗначениеЗаполнено(СтрокаТаблицы["Наименование"]) Тогда
ЗаполняемыйЭлемент["Наименование"] = СтрокаТаблицы["Наименование"];
КонецЕсли;
Если Не ОбновитьМультиязычныеСтроки И НастройкиПредопределенныхЭлементов.ПриНачальномЗаполненииЭлемента Тогда
@@ -1844,12 +1876,47 @@
КонецЦикла;
Если ОбновитьМультиязычныеСтроки Тогда
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда
МодульУправлениеДоступомСлужебный = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступомСлужебный");
МодульУправлениеДоступомСлужебный.ПриИзмененииЯзыкаИнформационнойБазы(ДополнительныеПараметры);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Функция ОпределитьДанныеЗаполнения(Знач ПредопределенныеДанные, Знач СтрокаТаблицы, Знач ПоляИсключения)
ДанныеЗаполнения = Новый Структура;
Для Каждого Колонка Из ПредопределенныеДанные.Колонки Цикл
ИмяПоля = Колонка.Имя;
Если ПоляИсключения[ИмяПоля] = Истина Тогда
Продолжить;
КонецЕсли;
Значение = СтрокаТаблицы[ИмяПоля];
Если Колонка.ТипЗначения.Типы().Количество() > 1 Тогда
Заполнено = Значение <> Неопределено;
ИначеЕсли ТипЗнч(Значение) = Тип("Булево") Тогда
Заполнено = Значение;
Иначе
Заполнено = ЗначениеЗаполнено(Значение);
КонецЕсли;
Если Заполнено Тогда
ДанныеЗаполнения.Вставить(ИмяПоля, Значение);
КонецЕсли;
КонецЦикла;
Возврат ДанныеЗаполнения;
КонецФункции
Функция ДействияПередОбновлениемИнформационнойБазы(ПараметрыОбновления)
Если Не ПараметрыОбновления.ПриЗапускеКлиентскогоПриложения Тогда
@@ -2541,6 +2608,8 @@
Модуль = ОбщегоНазначения.ОбщийМодуль(ОписаниеПодсистемы.ОсновнойСерверныйМодуль);
Модуль.ПриДобавленииОбработчиковПереходаСДругойПрограммы(ОбработчикиПерехода);
КонецЦикла;
// Дополнительно добавляются обязательные обработчики перехода БСП.
ОбновлениеИнформационнойБазыБСП.ПриДобавленииОбработчиковПереходаСДругойПрограммы(ОбработчикиПерехода);
Отбор = Новый Структура("ПредыдущееИмяКонфигурации", "*");
Результат = ОбработчикиПерехода.НайтиСтроки(Отбор);
@@ -5271,9 +5340,11 @@
ОписаниеПроцедурыЗаполнения.ПоискЗавершен = РезультатПоиска.ПоискЗавершен;
УстановитьСвойствоОбработчика(ОписаниеПроцедурыЗаполнения.ИмяОбработчика,
"ОбрабатываемыеДанные",
Новый ХранилищеЗначения(ОписаниеПроцедурыЗаполнения));
Если ОписаниеПроцедурыЗаполнения.Свойство("ИмяОбработчика") Тогда
УстановитьСвойствоОбработчика(ОписаниеПроцедурыЗаполнения.ИмяОбработчика,
"ОбрабатываемыеДанные",
Новый ХранилищеЗначения(ОписаниеПроцедурыЗаполнения));
КонецЕсли;
КонецПроцедуры
@@ -5499,6 +5570,7 @@
Описание = Новый Структура;
Описание.Вставить("ДанныеОбработчика");
Описание.Вставить("ИмяОбработчика");
Если Многопоточное Тогда
Описание.Вставить("ВыполняетсяПоискПорции", Ложь);
@@ -5509,7 +5581,6 @@
КонецЕсли;
Если Фоновое Тогда
Описание.Вставить("ИмяОбработчика");
Описание.Вставить("Очередь");
Описание.Вставить("ПроцедураЗаполнения");
Описание.Вставить("Статус");
@@ -7900,6 +7971,7 @@
ОписаниеОбрабатываемыхДанных = НовоеОписаниеОбрабатываемыхДанных(Обработчик.Многопоточный);
ОписаниеОбрабатываемыхДанных.ДанныеОбработчика = ПараметрыОбработчикаСтруктура.ДанныеОбработчика;
ОписаниеОбрабатываемыхДанных.ИмяОбработчика = Обработчик.ИмяОбработчика;
Если Обработчик.Многопоточный Тогда
ОписаниеОбрабатываемыхДанных.ПараметрыВыборки = ПараметрыОбработчикаСтруктура.ПараметрыВыборки;
@@ -2819,7 +2819,7 @@
#Область ДинамическийСписок
// Создать структуру свойств динамического списка для вызова УстановитьСвойстваДинамическогоСписка().
// Создает структуру для второго параметра СвойстваСписка процедуры УстановитьСвойстваДинамическогоСписка.
//
// Возвращаемое значение:
// Структура - любое поле может иметь значение Неопределено, если оно не устанавливается:
@@ -2838,9 +2838,9 @@
//
// Параметры:
// Список - ТаблицаФормы - элемент формы динамического списка, для которого устанавливаются свойства.
// СтруктураПараметров - см. СтруктураСвойствДинамическогоСписка
// СвойстваСписка - см. СтруктураСвойствДинамическогоСписка
//
Процедура УстановитьСвойстваДинамическогоСписка(Список, СтруктураПараметров) Экспорт
Процедура УстановитьСвойстваДинамическогоСписка(Список, СвойстваСписка) Экспорт
Форма = Список.Родитель;
ТипФормаКлиентскогоПриложения = Тип("ФормаКлиентскогоПриложения");
@@ -2850,19 +2850,19 @@
КонецЦикла;
ДинамическийСписок = Форма[Список.ПутьКДанным];
ТекстЗапроса = СтруктураПараметров.ТекстЗапроса;
ТекстЗапроса = СвойстваСписка.ТекстЗапроса;
Если Не ПустаяСтрока(ТекстЗапроса) Тогда
ДинамическийСписок.ТекстЗапроса = ТекстЗапроса;
КонецЕсли;
ОсновнаяТаблица = СтруктураПараметров.ОсновнаяТаблица;
ОсновнаяТаблица = СвойстваСписка.ОсновнаяТаблица;
Если Не ПустаяСтрока(ОсновнаяТаблица) Тогда
ДинамическийСписок.ОсновнаяТаблица = ОсновнаяТаблица;
КонецЕсли;
ДинамическоеСчитываниеДанных = СтруктураПараметров.ДинамическоеСчитываниеДанных;
ДинамическоеСчитываниеДанных = СвойстваСписка.ДинамическоеСчитываниеДанных;
Если ТипЗнч(ДинамическоеСчитываниеДанных) = Тип("Булево") Тогда
ДинамическийСписок.ДинамическоеСчитываниеДанных = ДинамическоеСчитываниеДанных;
@@ -400,7 +400,7 @@
COMConnector = Новый COMObject(ОбщегоНазначенияКлиентСервер.ИмяCOMСоединителя()); // "V83.COMConnector"
Исключение
Информация = ИнформацияОбОшибке();
СтрокаСообщенияОбОшибке = НСтр("ru = 'Не удалось подключится к другой программе: %1'");
СтрокаСообщенияОбОшибке = НСтр("ru = 'Не удалось подключиться к другой программе: %1'");
Результат.ОшибкаПодключенияКомпоненты = Истина;
Результат.ПодробноеОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаСообщенияОбОшибке, ПодробноеПредставлениеОшибки(Информация));
@@ -1967,6 +1967,28 @@
Возврат Результат;
КонецФункции
Процедура ОбновитьПредставленияСписка(СписокПриемник, СписокИсточник) Экспорт
Если ТипЗнч(СписокИсточник) <> Тип("СписокЗначений") Тогда
Возврат;
КонецЕсли;
Для Каждого Элемент Из СписокИсточник Цикл
Если Не ЗначениеЗаполнено(Элемент.Представление) Тогда
Продолжить;
КонецЕсли;
НайденныйЭлемент = СписокПриемник.НайтиПоЗначению(Элемент.Значение);
Если НайденныйЭлемент <> Неопределено Тогда
НайденныйЭлемент.Представление = Элемент.Представление;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Функция СтрЛевДоСимвола(Строка, Разделитель, Остаток = Неопределено)
Позиция = СтрНайти(Строка, Разделитель);
Если Позиция = 0 Тогда
@@ -1926,7 +1926,7 @@
Если РасширенноеОписаниеТипа.КоличествоТипов = 1 Тогда
Если РасширенноеОписаниеТипа.СодержитТипЧисло Тогда
Поле.КнопкаВыбора = (Поле.СписокВыбора.Количество() = 0);
Поле.КнопкаВыбора = Поле.СписокВыбора.Количество() = 0 Или Элемент.ЭтоСписок;
Если Поле.РастягиватьПоГоризонтали = Истина Тогда
Поле.РастягиватьПоГоризонтали = Ложь;
КонецЕсли;
@@ -2551,7 +2551,7 @@
Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '%1 (дата %2)'"),
ЗаголовокЭлементаНастройки,
?(СтрЗаканчиваетсяНа(НРег(Свойство), "начала"), НСтр("ru = 'начала'"), НСтр("ru = 'окончания'")));
?(СтрЗаканчиваетсяНа(НРег(Свойство), НРег("ДатаНачала")), НСтр("ru = 'начала'"), НСтр("ru = 'окончания'")));
КонецФункции
@@ -2595,7 +2595,7 @@
Команда.Заголовок = НСтр("ru = 'Выбрать период...'");
Команда.Подсказка = Команда.Заголовок;
Команда.Отображение = ОтображениеКнопки.Картинка;
Команда.Картинка = БиблиотекаКартинок.Выбрать;
Команда.Картинка = КартинкаКнопкиВыбораПериода();
ИмяГруппыКнопки = СтрЗаменить(ИмяЭлемента, "ВыбратьПериод", "ГруппаВыбратьПериод");
ГруппаКнопки = ГруппаЭлементовФормыНастроек(Форма.Элементы, Группа, ИмяГруппыКнопки);
@@ -2623,9 +2623,9 @@
Кнопка.Шрифт = Метаданные.ЭлементыСтиля.ВажнаяНадписьШрифт.Значение;
Если ЭтоСтандартноеПредставление Тогда
ЭлементПериода.Ширина = 3;
Кнопка.Ширина = 3;
Кнопка.Отображение = ОтображениеКнопки.Картинка;
Кнопка.Картинка = КартинкаКнопкиВыбораПериода();
Кнопка.ОтображениеФигуры = ОтображениеФигурыКнопки.Авто;
Иначе
ЭлементПериода.Ширина = 15;
@@ -2635,6 +2635,18 @@
КонецЕсли;
КонецПроцедуры
Функция КартинкаКнопкиВыбораПериода()
ВерсияРежимаСовместимости = СтандартныеПодсистемыСервер.ВерсияРежимаСовместимости();
Если ОбщегоНазначенияКлиентСервер.СравнитьВерсии(ВерсияРежимаСовместимости, "8.3.17.0") >= 0 Тогда
Возврат БиблиотекаКартинок["ПолеВводаВыбрать"];
КонецЕсли;
Возврат БиблиотекаКартинок["Выбрать"];
КонецФункции
// Устанавливает значения свойствам стандартного периода: ДатаНачала, ДатаОкончания
//
// Параметры:
@@ -277,15 +277,18 @@
// НастройкиПрограммногоИнтерфейса - см. ПодключаемыеКоманды.НастройкиПрограммногоИнтерфейсаПодключаемыхОбъектов.
//
// Возвращаемое значение:
// Структура - настройки интеграции этого объекта.
// Состав полей см. в блоке "Параметры процедуры ПриОпределенииНастроек"
// процедуры ПодключаемыеКомандыПереопределяемый.ПриОпределенииСоставаНастроекПодключаемыхОбъектов.
// Дополнительно содержит следующие поля:
// * Вид - Строка - вид имя объекта метаданных в верхнем регистре.
// * ПолноеИмя - Строка - полное имя объекта метаданных.
// * Менеджер - ОбработкаМенеджер
// - ОтчетМенеджер - менеджер объекта метаданных.
// Неопределено - если настройки не удалось получить.
// Структура - настройки интеграции этого объекта:
// * Размещение - Массив из ОбъектМетаданных - объекты, к которым подключен объект.
// * ДобавитьКомандыПечати - Булево - в модуле менеджера объекта определена функция ДобавитьКомандыПечати.
// * ДобавитьКомандыЗаполнения - Булево - в модуле менеджера объекта определена функция ДобавитьКомандыЗаполнения.
// * ДобавитьКомандыОтчетов - Булево - в модуле менеджера объекта определена функция ДобавитьКомандыОтчетов.
// * НастроитьВариантыОтчета - Булево - в модуле менеджера объекта определена функция НастроитьВариантыОтчета.
// * ОпределитьНастройкиФормы - Булево - в модуле менеджера объекта определена функция ОпределитьНастройкиФормы.
// * Вид - Строка - вид имя объекта метаданных в верхнем регистре.
// * ПолноеИмя - Строка - полное имя объекта метаданных.
// * Менеджер - ОбработкаМенеджер
// - ОтчетМенеджер - менеджер объекта метаданных.
// Неопределено - если настройки не удалось получить.
//
Функция НастройкиПодключаемогоОбъекта(ПолноеИмя, НастройкиПрограммногоИнтерфейса = Неопределено) Экспорт
ЧастиИмени = СтрРазделить(ПолноеИмя, ".");
@@ -849,7 +852,7 @@
СведенияОКоманде = Новый Структура("ИмяВФорме, ТипПараметра, УсловияВидимости");
ЗаполнитьЗначенияСвойств(СведенияОКоманде, Команда);
СведенияОПодменюКоманды.КомандыСУсловиямиВидимости.Добавить(СведенияОКоманде);
Иначе
ИначеЕсли Команда.Важность <> "СмТакже" Тогда
СведенияОПодменюКоманды.ЕстьКомандыБезУсловийВидимости = Истина;
КонецЕсли;
КонецЦикла;
@@ -895,6 +898,13 @@
КнопкаФормы.ИмяКоманды = "КомандаДляВыводаВПустоеПодменю";
КнопкаФормы.Видимость = Ложь;
КнопкаФормы.Доступность = Ложь;
СистемнаяИнформация = Новый СистемнаяИнформация;
ВерсияПлатформы = СистемнаяИнформация.ВерсияПриложения;
ВерсияПлатформыБезНомераСборки = ОбщегоНазначенияКлиентСервер.ВерсияКонфигурацииБезНомераСборки(ВерсияПлатформы);
Если ОбщегоНазначенияКлиентСервер.СравнитьВерсииБезНомераСборки(ВерсияПлатформыБезНомераСборки, "8.3.15") >= 0 Тогда
КнопкаФормы.ПоложениеВКоманднойПанели = ОбщегоНазначения.ВычислитьВБезопасномРежиме("ПоложениеКнопкиВКоманднойПанели.ВКоманднойПанели");
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
@@ -1283,6 +1293,44 @@
// Вызовы из модулей ВызовСервера.
// Возвращает описание команды по имени элемента формы.
//
// Параметры:
// ИмяКомандыВФорме Имя команды в форме
// АдресНастроек Адрес настроек
//
// Возвращаемое значение:
// ФиксированнаяСтруктура:
// * Вид - Строка
// * Идентификатор - Строка
// * Представление - Строка
// * Подменю - Строка
// * Важность - Строка
// * Порядок - Число
// * Картинка - Картинка
// * СочетаниеКлавиш - СочетаниеКлавиш
// * ОтображениеКнопки - Неопределено
// * ТолькоВоВсехДействиях - Булево
// * ЗначениеПометки - Строка
// * ТипПараметра - ОписаниеТипов
// * ВидимостьВФормах - Строка
// * Назначение - Строка
// * ФункциональныеОпции - Строка
// * УсловияВидимости - Массив
// * ИзменяетВыбранныеОбъекты - Булево
// * МножественныйВыбор - Булево, Неопределено
// * РежимЗаписи - Строка
// * ТребуетсяРаботаСФайлами - Булево
// * Менеджер - Строка
// * Обработчик - Строка
// * ДополнительныеПараметры - Структура
// * ИмяФормы - Строка
// * ПараметрыФормы - Структура, Неопределено
// * ИмяПараметраФормы - Строка
// * ПорядокВажности - Число
// * ИмяВФорме - Строка
// * ЕстьУсловияВидимости - Булево
// * КлючПараметровРазмещения - Строка
//
Функция ОписаниеКоманды(ИмяКомандыВФорме, АдресНастроек) Экспорт
Команды = ПолучитьИзВременногоХранилища(АдресНастроек);
Команда = Команды.Найти(ИмяКомандыВФорме, "ИмяВФорме");
@@ -969,6 +969,8 @@
Функция ПроверитьДоступностьСервера(АдресСервера) Экспорт
Результат = Новый Структура("Доступен, ЖурналДиагностики", Ложь, "");
ПараметрыЗапускаПрограммы = ФайловаяСистема.ПараметрыЗапускаПрограммы();
ПараметрыЗапускаПрограммы.ДождатьсяЗавершения = Истина;
ПараметрыЗапускаПрограммы.ПолучитьПотокВывода = Истина;
@@ -980,15 +982,24 @@
Иначе
ШаблонКоманды = "ping -c 4 -W 1 %1";
КонецЕсли;
СтрокаКоманды = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонКоманды, АдресСервера);
Результат = ФайловаяСистема.ЗапуститьПрограмму(СтрокаКоманды, ПараметрыЗапускаПрограммы);
Попытка
РезультатЗапуска = ФайловаяСистема.ЗапуститьПрограмму(СтрокаКоманды, ПараметрыЗапускаПрограммы);
Исключение
Результат.ЖурналДиагностики = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось проверить доступность интернет-ресурса ""%1"" по причине:
|%2
|
|с помощью команды ""%3"".'"),
АдресСервера, КраткоеПредставлениеОшибки(ИнформацияОбОшибке()), СтрокаКоманды);
Возврат Результат;
КонецПопытки;
// Разные операционные системы могут выводить ошибки в разные потоки:
// - для Windows все всегда в потоке вывода;
// - для Debian или RHEL ошибки падают в поток ошибок.
ЖурналДоступности = Результат.ПотокВывода + Результат.ПотокОшибок;
ЖурналДоступности = РезультатЗапуска.ПотокВывода + РезультатЗапуска.ПотокОшибок;
Если ОбщегоНазначения.ЭтоWindowsСервер() Тогда
Доступен = СтрНайти(ЖурналДоступности, "Destination host unreachable") = 0 // Не локализуется.
@@ -1014,7 +1025,9 @@
Журнал.Добавить("> " + СтрокаКоманды);
Журнал.Добавить(ЖурналДоступности);
Возврат Новый Структура("Доступен, ЖурналДиагностики", Доступен, СтрСоединить(Журнал, Символы.ПС));
Результат.Доступен = Доступен;
Результат.ЖурналДиагностики = СтрСоединить(Журнал, Символы.ПС);
Возврат Результат;
КонецФункции
@@ -132,10 +132,6 @@
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
// Возвращает назначение ролей, определенное разработчиком.
// См. комментарий к процедуре ПриОпределенииНазначенияРолей общего модуля ПользователиПереопределяемый.
//
@@ -162,7 +158,15 @@
Для Каждого ОписаниеНазначенияРолей Из НазначениеРолей Цикл
Имена = Новый Соответствие;
Для Каждого Имя Из ОписаниеНазначенияРолей.Значение Цикл
Имена.Вставить(Имя, Истина);
Роль = Метаданные.Роли.Найти(Имя);
Если Роль = Неопределено Тогда
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Указана несуществующая роль ""%1""
|в процедуре ПриОпределенииНазначенияРолей
|общего модуля ПользователиПереопределяемый.'"), Имя);
ВызватьИсключение ТекстОшибки;
КонецЕсли;
Имена.Вставить(Роль.Имя, Истина);
КонецЦикла;
Назначение.Вставить(ОписаниеНазначенияРолей.Ключ, Новый ФиксированноеСоответствие(Имена));
КонецЦикла;
@@ -171,6 +175,10 @@
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
// См. Пользователи.ЭтоСеансВнешнегоПользователя.
Функция ЭтоСеансВнешнегоПользователя() Экспорт
@@ -777,8 +777,7 @@
Адрес.country = ВРег(ДополнительнаяИнформацияАдреса.Страна);
КонецЕсли;
ВидИнформации = Новый Структура("Тип", Перечисления.ТипыКонтактнойИнформации.Адрес);
РасчетноеПредставление = УправлениеКонтактнойИнформациейСлужебный.ПредставлениеКонтактнойИнформации(Адрес, ВидИнформации);
РасчетноеПредставление = УправлениеКонтактнойИнформациейСлужебный.ПредставлениеКонтактнойИнформации(Адрес);
Адрес.value = РасчетноеПредставление;
Если ДополнительнаяИнформацияАдреса.Свойство("АдресВJSON") И ДополнительнаяИнформацияАдреса.АдресВJSON = Истина Тогда
@@ -1495,7 +1494,7 @@
// Возвращает XPath для номера дополнительного объекта адресации.
//
// Параметры;
// Параметры:
// СтрокаЗначения - Строка - искомый тип, например "Дом", "Корпус".
//
// Возвращаемое значение:
@@ -2207,9 +2206,8 @@
// Возвращает XPath для дополнительного объекта адресации по умолчанию.
//
// Параметры;
// Уровень - Число - уровень объекта. 90 - дополнительный(Варианты: ГСК, СНТ, ТЕР), 91 - подчиненный, -1 -
// Ориентир.
// Параметры:
// Уровень - Число - уровень объекта.
//
// Возвращаемое значение:
// Строка - XPath
@@ -2310,7 +2308,7 @@
ТаблицаАдресов.Колонки.Добавить("Адрес", Новый ОписаниеТипов("Структура"));
ТаблицаАдресов.Индексы.Добавить("ИндексАдреса");
ПодготовленныеПоляАдреса = РаботаСАдресамиКлиентСервер.КонструкторПолейАдреса();
ПодготовленныеПоляАдреса = РаботаСАдресамиКлиентСервер.ПоляАдреса();
Параметры = ИнициализироватьПараметрыСведенийОбАдресе(ДополнительныеПараметры);
СформироватьПоляСведенийОбАдресе(ПодготовленныеПоляАдреса, Параметры);
@@ -2358,7 +2356,7 @@
АдресИзJSON = СтрокаАдреса.АдресJSON;
АдресПоПолям = Новый Структура(Новый ФиксированнаяСтруктура(ПодготовленныеПоляАдреса)); // см. РаботаСАдресамиКлиентСервер.КонструкторПолейАдреса
АдресПоПолям = Новый Структура(Новый ФиксированнаяСтруктура(ПодготовленныеПоляАдреса)); // см. РаботаСАдресамиКлиентСервер.ПоляАдреса
// Основные сведения
АдресПоПолям.Комментарий = АдресИзJSON.Comment;
@@ -2529,7 +2527,7 @@
Функция СведенияОбАдресеВВидеСтруктуры(Знач АдресСтрокой, ДополнительныеПараметры)
Если ПустаяСтрока(АдресСтрокой) Тогда
Возврат РаботаСАдресамиКлиентСервер.КонструкторПолейАдреса();;
Возврат РаботаСАдресамиКлиентСервер.ПоляАдреса();
КонецЕсли;
Адреса = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(АдресСтрокой);
@@ -63,6 +63,42 @@
Возврат СтрСравнить(ТипАдреса, РаботаСАдресамиКлиентСервер.АдминистративноТерриториальныйАдрес()) = 0;
КонецФункции
// Телефон
// Показать подсказку корректности кода города при вводе телефона.
//
// Параметры:
// КодСтраны - Строка
// КодГорода - Строка
//
Процедура ПоказатьПодсказкуКорректностиКодовСтраныИГорода(КодСтраны, КодГорода) Экспорт
Если (КодСтраны = "+7" ИЛИ КодСтраны = "8") И СтрНачинаетсяС(КодГорода, "9") И СтрДлина(КодГорода) <> 3 Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Коды мобильных телефонов начинающиеся на цифру 9 имеют фиксированную длину в 3 цифры, например - 916.'"),, "КодГорода");
КонецЕсли;
КонецПроцедуры
// Проверить корректность кода города и номера телефона кодов страны.
//
// Параметры:
// КодСтраны - Строка
// КодГорода - Строка
// НомерТелефона - Строка
// СписокОшибок - СписокЗначений
//
Процедура ПроверитьКорректностьКодовСтраныИГорода(КодСтраны, КодГорода, НомерТелефона, СписокОшибок) Экспорт
Если КодСтраны = "7" ИЛИ КодСтраны = "+7" Тогда
Если СтрДлина(УправлениеКонтактнойИнформациейКлиент.ОставитьТолькоЦифрыВСтроке(НомерТелефона)) > 7 Тогда
СписокОшибок.Добавить("НомерТелефона", НСтр("ru = 'В России номер телефона не может быть больше 7 цифр'"));
КонецЕсли;
КонецЕсли;
Если СтрНачинаетсяС(КодГорода, "9") И СтрДлина(КодГорода) <> 3 Тогда
СписокОшибок.Добавить("НомерТелефона", НСтр("ru = 'В России номера мобильных телефонов должны содержать 3 цифры'"));
КонецЕсли;
КонецПроцедуры
#КонецОбласти
@@ -13,10 +13,10 @@
// Возвращаемое значение:
// Структура:
// * Представление - Строка - текстовое представление адреса по административно-территориальному делению.
// Например, "175430, Новгородская обл, Валдайский р-н, Бор д, Полевая ул, дом 4"
// Например, "175430, Новгородская обл, Валдайский р-н, Бор д, Полевая ул, дом 4".
// * МуниципальноеПредставление - Строка - текстовое представление адреса по муниципальному делению.
// Например, "175430, Новгородская обл, Валдайский муниципальный район, сельское
// поселение Никулинское, Бор д, Полевая ул, дом 4";
// поселение Никулинское, Бор д, Полевая ул, дом 4".
// * ТипАдреса - Строка - основной тип адреса (только для адресов РФ).
// Варианты: "Муниципальный", "Административно-территориальный".
// * Страна - Строка - текстовое представление страны. Например, "Россия".
@@ -24,31 +24,51 @@
// * Индекс - Строка - почтовый индекс. Например, "12700".
// * КодРегиона - Строка - код региона РФ. Например, "50".
// * Регион - Строка - текстовое представление региона РФ. Например, "Московская"
// * РегионСокращение - Строка - сокращение региона. Например, "обл".
// * Округ - Строка - текстовое представление округа (устарело).
// * ОкругСокращение - Строка - сокращение округа (устарело).
// * РегионТипПолный - Строка - тип региона. Например, "область".
// * РегионТипКраткий - Строка - сокращение региона. Например, "обл".
// * РегионСокращение - Строка - устарело. Сокращение региона. Например, "обл".
// * Округ - Строка - устарело. Текстовое представление округа (устарело).
// * ОкругСокращение - Строка - устарело. Сокращение округа (устарело).
// * Район - Строка - текстовое представление района у адресов по административно-территориальному
// делению. Например, "Валдайский".
// * РайонСокращение - Строка - сокращение района у адресов по административно-территориальному делению. Например, "р-н".
// * РайонТипПолный - Строка - тип района у адресов по административно-территориальному делению. Например, "район".
// * РайонТипКраткий - Строка - сокращение района у адресов по административно-территориальному делению. Например, "р-н".
// * РайонСокращение - Строка - устарело. Сокращение района у адресов по административно-территориальному делению.
// Например, "р-н".
// * МуниципальныйРайон - Строка - текстовое представление муниципального района у адресов по муниципальному делению.
// Например, "Валдайский".
// * МуниципальныйРайонСокращение - Строка - сокращение муниципального района у адресов по муниципальному делению.
// Например, "м.р-н".
// Например, "Валдайский".
// * МуниципальныйРайонТипПолный - Строка - тип муниципального района у адресов по муниципальному делению.
// Например, "муниципальный район".
// * МуниципальныйРайонТипКраткий - Строка - сокращение муниципального района у адресов по муниципальному делению.
// Например, "м.р-н".
// * МуниципальныйРайонСокращение - Строка - устарело. Сокращение муниципального района у адресов по муниципальному делению.
// Например, "м.р-н".
// * Город - Строка - текстовое представление города у адресов по административно-территориальному
// делению. Например, "Валдай".
// * ГородСокращение - Строка - сокращение города у адресов по административно-территориальному делению. Например,
// "г".
// * Поселение - Строка - текстовое представление поселения у адресов по муниципальному делению. Например,
// "сельское поселение Никулинское".
// * ПоселениеСокращение - Строка - сокращение поселения у адресов по муниципальному делению. Например, "с.п.";
// * ВнутригородскойРайон - Строка - текстовое представление внутригородского района. Например, "Центральный"
// * ВнутригородскойРайонСокращение - Строка - сокращение внутригородского района. Например, "мкр";
// * НаселенныйПункт - Строка - текстовое представление населенного пункта. Например, "Бор".
// * НаселенныйПунктСокращение - Строка - сокращение населенного пункта. Например, "д".
// * Территория - Строка - текстовое представление территории. Например, "Мотор".
// * ТерриторияСокращение - Строка - сокращение территории. Например, "гск".
// * Улица - Строка - текстовое представление улицы. Например "Полевая".
// * УлицаСокращение - Строка - сокращение улицы. Например "ул".
// * ГородТипПолный - Строка - тип города. Например, "город".
// * ГородТипКраткий - Строка - сокращение типа города. Например, "г".
// * ГородСокращение - Строка - устарело. Сокращение типа города. Например, "г".
// * Поселение - Строка - текстовое представление поселения у адресов по муниципальному делению. Например,
// "сельское поселение Никулинское".
// * ПоселениеТипПолный - Строка - тип поселения у адресов по муниципальному делению. Например, "сельское поселение";
// * ПоселениеТипКраткий - Строка - сокращение типа поселения у адресов по муниципальному делению. Например, "с.п.";
// * ПоселениеСокращение - Строка - устарело. Сокращение поселения у адресов по муниципальному делению. Например, "с.п.";
// * ВнутригородскойРайон - Строка - устарело. Текстовое представление внутригородского района. Например, "Центральный"
// * ВнутригородскойРайонТипПолный - Строка - устарело. Тип внутригородского района. Например, "микрорайон";
// * ВнутригородскойРайонТипКраткий - Строка - устарело. Сокращение типа внутригородского района. Например, "мкр";
// * ВнутригородскойРайонСокращение - Строка - устарело. Сокращение внутригородского района. Например, "мкр";
// * НаселенныйПункт - Строка - текстовое представление населенного пункта. Например, "Бор".
// * НаселенныйПунктТипПолный - Строка - тип населенного пункта. Например, "деревня".
// * НаселенныйПунктТипКраткий - Строка - сокращение типа населенного пункта. Например, "д".
// * НаселенныйПунктСокращение - Строка - устарело. Сокращение населенного пункта. Например, "д".
// * Территория - Строка - текстовое представление территории. Например, "Мотор".
// * ТерриторияТипПолный - Строка -тип территории. Например, "территория".
// * ТерриторияТипКраткий - Строка - сокращение территории. Например, "тер".
// * ТерриторияСокращение - Строка - устарело. Сокращение территории. Например, "тер".
// * Улица - Строка - текстовое представление улицы. Например "Полевая".
// * УлицаТипПолный - Строка - тип улицы. Например "улица".
// * УлицаТипКраткий - Строка - сокращение типа улицы. Например "ул".
// * УлицаСокращение - Строка - устарело. Сокращение улицы. Например "ул".
// * ДополнительнаяТерритория - Строка - текстовое представление дополнительной территории (устарело).
// * ДополнительнаяТерриторияСокращение - Строка - сокращение дополнительной территории (устарело).
// * ЭлементДополнительнойТерритории - Строка - текстовое представление элемента дополнительной территории (устарело).
@@ -62,11 +82,15 @@
// * Помещения - Массив из Структура:
// * ТипПомещения - Строка - наименование помещения. Например, "Офис"
// * Номер - Строка - номер помещения. Например, "1".
// * НомерЗемельногоУчастка - Неопределено
// - Строка - текстовое представление номера участка. Например, "10".
// * ИдентификаторАдресногоОбъекта - УникальныйИдентификатор - идентификационный код последнего адресного объекта
// в иерархи адреса. Например, для адреса: Москва г., Дмитровское ш., д.9 это
// будет идентификатор улицы. Например, "8fe5e839-24c8-4500-bea8-a81a55a0fd1e"
// будет идентификатор улицы. Например, "8fe5e839-24c8-4500-bea8-a81a55a0fd1e".
// * ИдентификаторДома - УникальныйИдентификатор - идентификационный код дома(строения) адресного объекта.
// Например, "bc26bdef-12be-40f8-959c-2149de1911b9".
// Например, "bc26bdef-12be-40f8-959c-2149de1911b9".
// * ИдентификаторЗемельногоУчастка - Неопределено
// - УникальныйИдентификатор - идентификационный код земельного участка.
// * Идентификаторы - Структура - идентификаторы адресных объектов адреса:
// ** РегионИдентификатор - УникальныйИдентификатор
// - Неопределено - идентификатор региона.
@@ -93,154 +117,17 @@
// ** Город - Строка - код КЛАДР города.
// ** НаселенныйПункт - Строка - код КЛАДР населенного пункта.
// ** Улица - Строка - код КЛАДР улицы.
// * ДополнительныеКоды - Структура - коды ОКТМО, ОКТМО, ОКАТО, КодИФНСФЛ, КодИФНСЮЛ, КодУчасткаИФНСФЛ, КодУчасткаИФНСЮЛ.
// * ДополнительныеКоды - Структура:
// ** ОКТМО - Строка - код общероссийского классификатора территорий муниципальных образований. Например, "45346000".
// ** ОКАТО - Строка - код общероссийского классификатора административно-территориальных образований. Например, "45277592000".
// ** КодИФНСФЛ - Строка - код налоговых инспекции физических лиц. Например, "7713"
// ** КодИФНСЮЛ - Строка - код налоговых инспекции юридических лиц. Например, "7713"
// ** КодУчасткаИФНСФЛ - Строка - код участка налоговой инспекции физических лиц. Например, "7713"
// ** КодУчасткаИФНСЮЛ - Строка - код участка налоговой инспекции юридических лиц. Например, "7713"
// * Комментарий - Строка - комментарий к адресу.
//
Функция ПоляАдреса() Экспорт
Возврат КонструкторПолейАдреса();
КонецФункции
// Оставленная для обратной совместимости. Возвращает структуру контактной информации по типу.
// Для получения полей адреса следует использовать РаботаСАдресамиКлиентСервер.ПоляАдреса.
// Для получения полей телефона следует использовать УправлениеКонтактнойИнформацией.СведенияОТелефоне.
//
// Параметры:
// ТипКИ - ПеречислениеСсылка.ТипыКонтактнойИнформации - тип контактной информации.
// ФорматАдреса - Строка - тип возвращаемой структуры в зависимости от формата адреса: "КЛАДР" или "ФИАС".
//
// Возвращаемое значение:
// Структура - пустая структура контактной информации, ключи - имена полей, значения поля.
//
Функция СтруктураКонтактнойИнформацииПоТипу(ТипКИ, ФорматАдреса = "КЛАДР") Экспорт
Если ТипКИ = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.Адрес") Тогда
Возврат СтруктураПолейАдреса(ФорматАдреса);
ИначеЕсли ТипКИ = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.Телефон") Тогда
Возврат УправлениеКонтактнойИнформациейКлиентСервер.СтруктураПолейТелефона();
Иначе
Возврат Новый Структура;
КонецЕсли;
КонецФункции
#КонецОбласти
#Область СлужебныйПрограммныйИнтерфейс
Функция ОсновнаяСтрана() Экспорт
Возврат ПредопределенноеЗначение("Справочник.СтраныМира.Россия");
КонецФункции
Функция ЭтоМуниципальныйАдрес(ТипАдреса) Экспорт
Возврат СтрСравнить(ТипАдреса, МуниципальныйАдрес()) = 0;
КонецФункции
Функция ЭтоОсновнаяСтрана(Страна) Экспорт
Возврат СтрСравнить(ОсновнаяСтрана(), Страна) = 0;
КонецФункции
Функция АдминистративноТерриториальныйАдрес() Экспорт
Возврат "Административно-территориальный";
КонецФункции
Функция МуниципальныйАдрес() Экспорт
Возврат "Муниципальный";
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
// Возвращаемое значение:
// Структура:
// * КодыКЛАДР - Структура:
// ** Улица - Строка
// ** НаселенныйПункт - Строка
// ** Город - Строка
// ** Район - Строка
// ** Регион - Строка
// * ДополнительныеКоды - Структура:
// ** КодУчасткаИФНСЮЛ - Строка
// ** КодУчасткаИФНСФЛ - Строка
// ** КодИФНСЮЛ - Строка
// ** КодИФНСФЛ - Строка
// ** ОКАТО - Строка
// ** ОКТМО - Строка
// * Идентификаторы - Структура:
// ** УлицаИдентификатор - Неопределено
// ** ТерриторияИдентификатор - Неопределено
// ** НаселенныйПунктИдентификатор - Неопределено
// ** ВнутригородскойРайонИдентификатор - Неопределено
// ** ПоселениеИдентификатор - Неопределено
// ** ГородИдентификатор - Неопределено
// ** МуниципальныйРайонИдентификатор - Неопределено
// ** РайонИдентификатор - Неопределено
// ** РегионИдентификатор - Неопределено
// * ИдентификаторЗемельногоУчастка - Неопределено
// * НомерЗемельногоУчастка - Неопределено
// * ИдентификаторДома - Неопределено
// * ИдентификаторАдресногоОбъекта - Неопределено
// * Помещения - Массив
// * Корпуса - Массив
// * Здание - Структура:
// ** Номер - Строка
// ** ТипЗдания - Строка
// * ЭлементДополнительнойТерриторииСокращение - Строка
// * ЭлементДополнительнойТерритории - Строка
// * ДополнительнаяТерриторияСокращение - Строка
// * ДополнительнаяТерритория - Строка
// * УлицаСокращение - Строка
// * ТерриторияСокращение - Строка
// * НаселенныйПунктСокращение - Строка
// * ВнутригородскойРайонСокращение - Строка
// * ПоселениеСокращение - Строка
// * ГородСокращение - Строка
// * МуниципальныйРайонСокращение - Строка
// * РайонСокращение - Строка
// * ОкругСокращение - Строка
// * Округ - Строка
// * РегионСокращение - Строка
// * УлицаТипКраткий - Строка
// * УлицаТипПолный - Строка
// * Улица - Строка
// * ТерриторияТипКраткий - Строка
// * ТерриторияТипПолный - Строка
// * Территория - Строка
// * НаселенныйПунктТипКраткий - Строка
// * НаселенныйПунктТипПолный - Строка
// * НаселенныйПункт - Строка
// * ВнутригородскойРайонТипКраткий - Строка
// * ВнутригородскойРайонТипПолный - Строка
// * ВнутригородскойРайон - Строка
// * ПоселениеТипКраткий - Строка
// * ПоселениеТипПолный - Строка
// * Поселение - Строка
// * ГородТипКраткий - Строка
// * ГородТипПолный - Строка
// * Город - Строка
// * МуниципальныйРайонТипКраткий - Строка
// * МуниципальныйРайонТипПолный - Строка
// * МуниципальныйРайон - Строка
// * РайонТипКраткий - Строка
// * РайонТипПолный - Строка
// * Район - Строка
// * РегионТипКраткий - Строка
// * РегионТипПолный - Строка
// * Регион - Строка
// * КодРегиона - Строка
// * Индекс - Строка
// * КодСтраны - Строка
// * Страна - Строка
// * МуниципальноеПредставление - Строка
// * Представление - Строка
// * Комментарий - Строка
// * ТипАдреса - Строка
//
Функция КонструкторПолейАдреса() Экспорт
Результат = Новый Структура;
Результат.Вставить("ТипАдреса" , "");
@@ -350,18 +237,78 @@
Результат.Вставить("КодыКЛАДР", КодыКЛАДР);
Возврат Результат;
КонецФункции
#Область УстаревшиеПроцедурыИФункции
////////////////////////////////////////////////////////////////////////////////
// Обратная совместимость.
// Устарела. Оставленная для обратной совместимости. Возвращает структуру контактной информации по типу.
// Для получения полей адреса следует использовать РаботаСАдресамиКлиентСервер.ПоляАдреса.
// Для получения полей телефона следует использовать УправлениеКонтактнойИнформацией.СведенияОТелефоне.
//
// Параметры:
// ТипКИ - ПеречислениеСсылка.ТипыКонтактнойИнформации - тип контактной информации.
// ФорматАдреса - Строка - тип возвращаемой структуры в зависимости от формата адреса: "КЛАДР" или "ФИАС".
//
// Возвращаемое значение:
// Структура - пустая структура контактной информации, ключи - имена полей, значения поля.
//
Функция СтруктураКонтактнойИнформацииПоТипу(ТипКИ, ФорматАдреса = "КЛАДР") Экспорт
Если ТипКИ = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.Адрес") Тогда
Возврат СтруктураПолейАдреса(ФорматАдреса);
ИначеЕсли ТипКИ = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.Телефон") Тогда
Возврат УправлениеКонтактнойИнформациейКлиентСервер.СтруктураПолейТелефона();
Иначе
Возврат Новый Структура;
КонецЕсли;
КонецФункции
#КонецОбласти
#КонецОбласти
#Область СлужебныйПрограммныйИнтерфейс
Функция ОсновнаяСтрана() Экспорт
Возврат ПредопределенноеЗначение("Справочник.СтраныМира.Россия");
КонецФункции
Функция ЭтоМуниципальныйАдрес(ТипАдреса) Экспорт
Возврат СтрСравнить(ТипАдреса, МуниципальныйАдрес()) = 0;
КонецФункции
Функция ЭтоОсновнаяСтрана(Страна) Экспорт
Возврат СтрСравнить(ОсновнаяСтрана(), Страна) = 0;
КонецФункции
Функция АдминистративноТерриториальныйАдрес() Экспорт
Возврат "Административно-территориальный";
КонецФункции
Функция МуниципальныйАдрес() Экспорт
Возврат "Муниципальный";
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
// Описание национальных полей структуры контактной информации для хранения ее в формате JSON.
// Основной список полей определяется в одноименной функции общего модуля УправлениеКонтактнойИнформациейКлиентСервер.
//
// Параметры:
// ТипКонтактнойИнформации - ПеречислениеСсылка.ТипыКонтактнойИнформации -
// Тип контактной информации, определяющий состав полей контактной информации.
//
// Возвращаемое значение:
// Структура - поля контактной информации добавленные к основным полям:
// Для типа контактной информации адрес:
// Структура - поля контактной информации для типа Адрес добавленные к основным полям:
// * ID - Строка - идентификационный код последнего адресного объекта в иерархи адреса.
// * AddressType - Строка - установленный пользователем тип адреса(только для адресов РФ).
// Варианты: "Муниципальный", "Административно-территориальный".
@@ -819,4 +766,4 @@
#КонецОбласти
#КонецОбласти
#КонецОбласти
@@ -1352,10 +1352,9 @@
Для Каждого ФайлБезТекста Из ФайлыДляИзвлеченияТекста Цикл
ФайлЗаблокирован = Ложь;
ИмяФайлаСДвоичнымиДанными = "";
Попытка
ИзвлечьТекстИзФайла(ФайлБезТекста, ФайлЗаблокирован, ИмяФайлаСДвоичнымиДанными);
ИмяФайлаСДвоичнымиДанными = ИзвлечьТекстИзФайла(ФайлБезТекста, ФайлЗаблокирован);
Исключение
Если ФайлЗаблокирован Тогда
ПоляФайла = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ФайлБезТекста.Ссылка,
@@ -2854,8 +2853,8 @@
Процедура ВыполнитьОчисткуДанныхОФайле(ФайлСсылка)
ИмяФайлаСПутем = "";
ИмяФайлаСПутемДляУдаления = "";
ПолноеИмяФайлаНаДиске = "";
ИмяВременногоФайла = "";
НачатьТранзакцию();
@@ -2872,7 +2871,15 @@
+ " " + Формат(ТекущаяДатаСеанса(),"ДЛФ=D") + Символы.ПС;
Если ФайлОбъект.ТипХраненияФайла = Перечисления.ТипыХраненияФайлов.ВТомахНаДиске Тогда
СвойствоФайла = РаботаСФайламиВТомахСлужебный.СвойстваФайлаВТоме(ФайлОбъект.Ссылка);
ПолноеИмяФайлаНаДиске = РаботаСФайламиВТомахСлужебный.ПолноеИмяФайлаВТоме(СвойствоФайла);
ИмяВременногоФайла = ПолучитьИмяВременногоФайла(ФайлОбъект.Расширение);
КопироватьФайл(ПолноеИмяФайлаНаДиске, ИмяВременногоФайла);
РаботаСФайламиВТомахСлужебный.УдалитьДанныеФайла(ФайлОбъект, ТекстОписания);
ОписаниеВременногоФайла = Новый Файл(ИмяВременногоФайла);
ОписаниеВременногоФайла.УстановитьТолькоЧтение(Ложь);
ФайловаяСистема.УдалитьВременныйФайл(ИмяВременногоФайла);
Иначе
УдалитьЗаписьИзРегистраДвоичныеДанныеФайлов(ФайлСсылка);
ФайлОбъект.Описание = ТекстОписания + ФайлОбъект.Описание;
@@ -2891,10 +2898,10 @@
ЗаписьЖурналаРегистрации(НСтр("ru = 'Очистка ненужных файлов'", ОбщегоНазначения.КодОсновногоЯзыка()),
УровеньЖурналаРегистрации.Ошибка,, ФайлСсылка, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
Если Не ПустаяСтрока(ИмяФайлаСПутем) Тогда
Если Не ПустаяСтрока(ПолноеИмяФайлаНаДиске) Тогда
// Вернем файл на прежнее место в случае ошибки.
ПереместитьФайл(ИмяФайлаСПутемДляУдаления, ИмяФайлаСПутем);
ПереместитьФайл(ИмяВременногоФайла, ПолноеИмяФайлаНаДиске);
КонецЕсли;
@@ -8372,8 +8379,9 @@
// Параметры:
// ФайлБезТекста - ОпределяемыйТип.ПрисоединенныйФайлОбъект
//
Процедура ИзвлечьТекстИзФайла(ФайлБезТекста, ФайлЗаблокирован, ИмяФайлаСДвоичнымиДанными)
Функция ИзвлечьТекстИзФайла(ФайлБезТекста, ФайлЗаблокирован)
ИмяФайлаСДвоичнымиДанными = "";
МетаданныеФайла = ФайлБезТекста.Ссылка.Метаданные();
БлокировкаДанных = Новый БлокировкаДанных;
@@ -8394,6 +8402,7 @@
ФайлЗаблокирован = Истина;
ФайлОбъект = ФайлБезТекста.Ссылка.ПолучитьОбъект();
ФайлОбъект.ДополнительныеСвойства.Вставить("ИзвлечениеТекста", Истина);
Если ФайлОбъект <> Неопределено Тогда
Если ЭтоЭлементРаботаСФайлами(ФайлОбъект.Ссылка) Тогда
@@ -8410,7 +8419,6 @@
РазблокироватьДанныеДляРедактирования(ФайлБезТекста.Ссылка);
ФайлЗаблокирован = Ложь;
Иначе
РезультатИзвлеченияТекста = ИзвлечьТекстИзФайлаНаДиске(ИмяФайлаСДвоичнымиДанными, ФайлБезТекста.Кодировка);
ФайлОбъект.СтатусИзвлеченияТекста = РезультатИзвлеченияТекста.СтатусИзвлеченияТекста;
ФайлОбъект.ТекстХранилище = РезультатИзвлеченияТекста.ТекстХранилище;
@@ -8432,7 +8440,9 @@
ВызватьИсключение;
КонецПопытки;
КонецПроцедуры
Возврат ИмяФайлаСДвоичнымиДанными;
КонецФункции
#КонецОбласти
@@ -655,7 +655,8 @@
КонецЕсли;
Если СохранитьНастройки Тогда
СервисКриптографииDSSСлужебный.УстановитьНастройкиПользователя(НастройкиПользователя.Ссылка, НастройкиПользователя, ИсточникНастроек);
КлючНастроек = СервисКриптографииDSSКлиентСервер.КлючНастроекПользователя(НастройкиПользователя);
СервисКриптографииDSSСлужебный.УстановитьНастройкиПользователя(КлючНастроек, НастройкиПользователя, ИсточникНастроек);
КонецЕсли;
СервисКриптографииDSSСлужебный.ПротоколОшибкиПриВызове(РезультатЗапроса, "АутентификацияПоЛогину", ПараметрыЗапроса);
@@ -810,7 +811,8 @@
КонецЕсли;
Если СохранитьНастройки Тогда
СервисКриптографииDSSСлужебный.УстановитьНастройкиПользователя(НастройкиПользователя.Ссылка, НастройкиПользователя, ИсточникНастроек);
КлючНастроек = СервисКриптографииDSSКлиентСервер.КлючНастроекПользователя(НастройкиПользователя);
СервисКриптографииDSSСлужебный.УстановитьНастройкиПользователя(КлючНастроек, НастройкиПользователя, ИсточникНастроек);
КонецЕсли;
СервисКриптографииDSSСлужебный.ПротоколОшибкиПриВызове(РезультатЗапроса, "ПолучитьТокенПоКодуАвторизации", ПараметрыЗапроса);
@@ -858,7 +860,8 @@
Если СохранитьНастройки Тогда
РезультатЗапроса = ОбновитьПолитикуПользователя(НастройкиПользователя, Принудительно, ВходящиеПараметры);
РезультатЗапроса.Вставить("НастройкиПользователя", НастройкиПользователя);
СервисКриптографииDSSСлужебный.УстановитьНастройкиПользователя(НастройкиПользователя.Ссылка, НастройкиПользователя, ИсточникНастроек);
КлючНастроек = СервисКриптографииDSSКлиентСервер.КлючНастроекПользователя(НастройкиПользователя);
СервисКриптографииDSSСлужебный.УстановитьНастройкиПользователя(КлючНастроек, НастройкиПользователя, ИсточникНастроек);
КонецЕсли;
СервисКриптографииDSSСлужебный.ПротоколОшибкиПриВызове(РезультатЗапроса, "ОбновитьТокенАутентификации", ПараметрыЗапроса);
@@ -1560,7 +1560,9 @@
Результат = НашлиОшибку.КодОшибки + ": " + НашлиОшибку.Описание;
Если НЕ ПустаяСтрока(ТекстОшибки) Тогда
Результат = Результат + " " + ТекстОшибки;
Результат = Результат + Символы.ПС + Символы.ПС
+ НСтр("ru = 'Детали ошибки:'")
+ Символы.ПС + ТекстОшибки;
КонецЕсли;
Если РезультатОперации <> Неопределено Тогда
@@ -869,7 +869,11 @@
Если ПарольПользователя <> Неопределено Тогда
ПараметрыОперации.Вставить("ПарольПользователя", ПарольПользователя);
КонецЕсли;
СервисКриптографииDSSКлиент.ПроверкаАутентификацииПользователя(ОповещениеСледующее, НастройкиПользователя.Ссылка, ПараметрыОперации);
Если ЗначениеЗаполнено(НастройкиПользователя.Ссылка) ИЛИ НЕ ЗначениеЗаполнено(НастройкиПользователя.Логин) Тогда
СервисКриптографииDSSКлиент.ПроверкаАутентификацииПользователя(ОповещениеСледующее, НастройкиПользователя.Ссылка, ПараметрыОперации);
Иначе
СервисКриптографииDSSКлиент.ПроверкаАутентификацииПользователя(ОповещениеСледующее, НастройкиПользователя, ПараметрыОперации);
КонецЕсли;
Иначе
РезультатВыполнения = СервисКриптографииDSSКлиент.ОтветСервисаПоУмолчанию();
@@ -1861,21 +1865,22 @@
КодЯзыка = СервисКриптографииDSSСлужебныйКлиент.КодЯзыка();
ЭлементыФормы.ГруппаПароль.Видимость = НуженПинКод ИЛИ СтандартныйВид;
ЭлементыФормы.Пароль.ТолькоПросмотр = ПроверенПинКод;
УстановитьСвойствоЭлемента(ЭлементыФормы, "ГруппаПароль", "Видимость", НуженПинКод ИЛИ СтандартныйВид);
УстановитьСвойствоЭлемента(ЭлементыФормы, "Пароль", "ТолькоПросмотр", ПроверенПинКод);
Если СтандартныйВид Тогда
ЭлементыФормы.Подписать.КнопкаПоУмолчанию = Истина;
ЭлементыФормы.Пароль.ТолькоПросмотр = Ложь;
УстановитьСвойствоЭлемента(ЭлементыФормы, "Подписать", "КнопкаПоУмолчанию", Истина);
УстановитьСвойствоЭлемента(ЭлементыФормы, "Пароль", "ТолькоПросмотр", Ложь);
Иначе
ЭлементыФормы.Страницы.Видимость = Ложь;
УстановитьСвойствоЭлемента(ЭлементыФормы, "Страницы", "Видимость", Ложь);
КонецЕсли;
ЭлементыФормы.Подписать.Видимость = НеНачалось ИЛИ СтандартныйВид;
ЭлементыФормы.Пароль.Заголовок = ?(НуженПинКод И НЕ СтандартныйВид, НСтр("ru = 'Пин-код'", КодЯзыка), НСтр("ru = 'Пароль'", КодЯзыка));
ЭлементыФормы.ЗапомнитьПароль.Заголовок = ?(НуженПинКод И НЕ СтандартныйВид,
УстановитьСвойствоЭлемента(ЭлементыФормы, "Подписать", "Видимость", НеНачалось ИЛИ СтандартныйВид);
УстановитьСвойствоЭлемента(ЭлементыФормы, "Пароль", "Заголовок", ?(НуженПинКод И НЕ СтандартныйВид, НСтр("ru = 'Пин-код'", КодЯзыка), НСтр("ru = 'Пароль'", КодЯзыка)));
УстановитьСвойствоЭлемента(ЭлементыФормы, "ЗапомнитьПароль", "Заголовок",
?(НуженПинКод И НЕ СтандартныйВид,
НСтр("ru = 'Запомнить пин-код'", КодЯзыка),
НСтр("ru = 'Запомнить пароль'", КодЯзыка));
ЭлементыФормы.ГруппаПодписание.ОтображатьЗаголовок = СтандартныйВид;
НСтр("ru = 'Запомнить пароль'", КодЯзыка)));
УстановитьСвойствоЭлемента(ЭлементыФормы, "ГруппаПодписание", "ОтображатьЗаголовок", СтандартныйВид);
КонецПроцедуры
// Служебная для обработки элементов формы, адаптированная для элементов формы расшифрования
@@ -1891,18 +1896,20 @@
КодЯзыка = СервисКриптографииDSSСлужебныйКлиент.КодЯзыка();
ЭлементыФормы.ГруппаПароль.Видимость = НуженПинКод ИЛИ СтандартныйВид;
ЭлементыФормы.Пароль.ТолькоПросмотр = ПроверенПинКод;
УстановитьСвойствоЭлемента(ЭлементыФормы, "ГруппаПароль", "Видимость", НуженПинКод ИЛИ СтандартныйВид);
УстановитьСвойствоЭлемента(ЭлементыФормы, "Пароль", "ТолькоПросмотр", ПроверенПинКод);
Если СтандартныйВид Тогда
ЭлементыФормы.ФормаРасшифровать.КнопкаПоУмолчанию = Истина;
ЭлементыФормы.Пароль.ТолькоПросмотр = Ложь;
УстановитьСвойствоЭлемента(ЭлементыФормы, "ФормаРасшифровать", "КнопкаПоУмолчанию", Истина);
УстановитьСвойствоЭлемента(ЭлементыФормы, "Пароль", "ТолькоПросмотр", Ложь);
Иначе
ЭлементыФормы.Страницы.Видимость = Ложь;
КонецЕсли;
ЭлементыФормы.ФормаРасшифровать.Видимость = НеНачалось ИЛИ СтандартныйВид;
ЭлементыФормы.Пароль.Заголовок = ?(НуженПинКод И НЕ СтандартныйВид, НСтр("ru = 'Пин-код'", КодЯзыка), НСтр("ru = 'Пароль'", КодЯзыка));
ЭлементыФормы.ЗапомнитьПароль.Заголовок = ?(НуженПинКод И НЕ СтандартныйВид, НСтр("ru = 'Запомнить пин-код'", КодЯзыка), НСтр("ru = 'Запомнить пароль'", КодЯзыка));
ЭлементыФормы.ГруппаРасшифровка.ОтображатьЗаголовок = СтандартныйВид;
УстановитьСвойствоЭлемента(ЭлементыФормы, "Страницы", "Видимость", Ложь);
КонецЕсли;
УстановитьСвойствоЭлемента(ЭлементыФормы, "ФормаРасшифровать", "Видимость", НеНачалось ИЛИ СтандартныйВид);
УстановитьСвойствоЭлемента(ЭлементыФормы, "Пароль", "Заголовок", ?(НуженПинКод И НЕ СтандартныйВид, НСтр("ru = 'Пин-код'", КодЯзыка), НСтр("ru = 'Пароль'", КодЯзыка)));
УстановитьСвойствоЭлемента(ЭлементыФормы, "ЗапомнитьПароль", "Заголовок", ?(НуженПинКод И НЕ СтандартныйВид, НСтр("ru = 'Запомнить пин-код'", КодЯзыка), НСтр("ru = 'Запомнить пароль'", КодЯзыка)));
УстановитьСвойствоЭлемента(ЭлементыФормы, "ГруппаРасшифровка", "ОтображатьЗаголовок", СтандартныйВид);
КонецПроцедуры
@@ -1919,20 +1926,21 @@
КодЯзыка = СервисКриптографииDSSСлужебныйКлиент.КодЯзыка();
ЭлементыФормы.ГруппаВводаПароля.Видимость = НуженПинКод ИЛИ СтандартныйВид;
ЭлементыФормы.Пароль.ТолькоПросмотр = ПроверенПинКод;
УстановитьСвойствоЭлемента(ЭлементыФормы, "ГруппаВводаПароля", "Видимость", НуженПинКод ИЛИ СтандартныйВид);
УстановитьСвойствоЭлемента(ЭлементыФормы, "Пароль", "ТолькоПросмотр", ПроверенПинКод);
Если СтандартныйВид Тогда
ЭлементыФормы.ФормаПроверить.КнопкаПоУмолчанию = Истина;
ЭлементыФормы.Пароль.ТолькоПросмотр = Ложь;
УстановитьСвойствоЭлемента(ЭлементыФормы, "ФормаПроверить", "КнопкаПоУмолчанию", Истина);
УстановитьСвойствоЭлемента(ЭлементыФормы, "Пароль", "ТолькоПросмотр", Ложь);
Иначе
ЭлементыФормы.Страницы.Видимость = Ложь;
УстановитьСвойствоЭлемента(ЭлементыФормы, "Страницы", "Видимость", Ложь);
КонецЕсли;
ЭлементыФормы.ГруппаВводаПароля.ОтображатьЗаголовок = СтандартныйВид;
ЭлементыФормы.ФормаПроверить.Видимость = НеНачалось ИЛИ СтандартныйВид;
ЭлементыФормы.Пароль.Заголовок = ?(НуженПинКод И НЕ СтандартныйВид, НСтр("ru = 'Пин-код'", КодЯзыка), НСтр("ru = 'Пароль'", КодЯзыка));
ЭлементыФормы.ЗапомнитьПароль.Заголовок = ?(НуженПинКод И НЕ СтандартныйВид,
УстановитьСвойствоЭлемента(ЭлементыФормы, "ГруппаВводаПароля", "ОтображатьЗаголовок", СтандартныйВид);
УстановитьСвойствоЭлемента(ЭлементыФормы, "ФормаПроверить", "Видимость", НеНачалось ИЛИ СтандартныйВид);
УстановитьСвойствоЭлемента(ЭлементыФормы, "Пароль", "Заголовок", ?(НуженПинКод И НЕ СтандартныйВид, НСтр("ru = 'Пин-код'", КодЯзыка), НСтр("ru = 'Пароль'", КодЯзыка)));
УстановитьСвойствоЭлемента(ЭлементыФормы, "ЗапомнитьПароль", "Заголовок", ?(НуженПинКод И НЕ СтандартныйВид,
НСтр("ru = 'Запомнить пин-код'", КодЯзыка),
НСтр("ru = 'Запомнить пароль'", КодЯзыка));
НСтр("ru = 'Запомнить пароль'", КодЯзыка)));
КонецПроцедуры
@@ -5569,7 +5569,8 @@
РезультатЗапроса = ПакетнаяОперацияПользователя(НастройкиПользователя, ПараметрыВыполнения, ВходящиеПараметры);
Если РезультатЗапроса.МаркерОбновлен Тогда
НастройкиПользователя = РезультатЗапроса.НастройкиПользователя;
УстановитьНастройкиПользователя(НастройкиПользователя.Ссылка, НастройкиПользователя, ИсточникНастроек);
КлючНастроек = СервисКриптографииDSSКлиентСервер.КлючНастроекПользователя(НастройкиПользователя);
УстановитьНастройкиПользователя(КлючНастроек, НастройкиПользователя, ИсточникНастроек);
КонецЕсли;
ЭтапЦикла = "";
@@ -5791,7 +5792,8 @@
Если Успешно Тогда
Результат.МаркерОбновлен = Истина;
Результат.Вставить("НастройкиПользователя", НастройкиПользователя);
УстановитьНастройкиПользователя(НастройкиПользователя.Ссылка, НастройкиПользователя, ПараметрыОперации);
КлючНастроек = СервисКриптографииDSSКлиентСервер.КлючНастроекПользователя(НастройкиПользователя);
УстановитьНастройкиПользователя(КлючНастроек, НастройкиПользователя, ПараметрыОперации);
КонецЕсли;
Возврат Результат;
@@ -1191,7 +1191,8 @@
ПодготовленныеНастройки = ПодготовитьНастройкиПользователя(НовыеНастройки, ПараметрыОперации);
ИсточникНастроек = СервисКриптографииDSSСлужебный.ПолучитьИсточникНастроек(ПараметрыОперации);
СервисКриптографииDSSСлужебный.УстановитьНастройкиПользователя(НовыеНастройки.Ссылка, ПодготовленныеНастройки, ИсточникНастроек);
КлючНастроек = СервисКриптографииDSSКлиентСервер.КлючНастроекПользователя(ПодготовленныеНастройки);
СервисКриптографииDSSСлужебный.УстановитьНастройкиПользователя(КлючНастроек, ПодготовленныеНастройки, ИсточникНастроек);
НастройкиПользователя = СервисКриптографииDSSСлужебный.ЗакрытьНастройкиПользователя(ПодготовленныеНастройки);
КонецЕсли;
@@ -1421,7 +1422,8 @@
ПодготовленныеНастройки = ПодготовитьНастройкиПользователя(НастройкиПользователя, ПараметрыОперации);
Результат = СервисКриптографииDSS.ПроверитьМаркерДоступа(ПодготовленныеНастройки, РезультатЗапроса);
ИсточникНастроек = СервисКриптографииDSSСлужебный.ПолучитьИсточникНастроек(ПараметрыОперации);
СервисКриптографииDSSСлужебный.УстановитьНастройкиПользователя(ПодготовленныеНастройки.Ссылка, ПодготовленныеНастройки, ИсточникНастроек);
КлючНастроек = СервисКриптографииDSSКлиентСервер.КлючНастроекПользователя(ПодготовленныеНастройки);
СервисКриптографииDSSСлужебный.УстановитьНастройкиПользователя(КлючНастроек, ПодготовленныеНастройки, ИсточникНастроек);
НастройкиПользователя = СервисКриптографииDSSСлужебный.ЗакрытьНастройкиПользователя(ПодготовленныеНастройки);
@@ -781,11 +781,18 @@
|Затем выполнить синхронизацию с подчиненными узлами.'");
КонецЕсли;
ОбъектыМетаданных = ОбъектыМетаданныхВсехПредопределенныхДанных();
Блокировка = Новый БлокировкаДанных;
Для Каждого ОбъектМетаданных Из ОбъектыМетаданных Цикл
Блокировка.Добавить(ОбъектМетаданных.ПолноеИмя());
КонецЦикла;
НачатьТранзакцию();
Попытка
УстановитьИнициализациюВсехПредопределенныхДанных();
СоздатьНедостающиеПредопределенныеДанные();
Блокировка.Заблокировать();
УстановитьИнициализациюВсехПредопределенныхДанных(ОбъектыМетаданных);
СоздатьНедостающиеПредопределенныеДанные(ОбъектыМетаданных);
ЗафиксироватьТранзакцию();
Исключение
@@ -2449,7 +2456,10 @@
////////////////////////////////////////////////////////////////////////////////
// ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ
Процедура УстановитьИнициализациюВсехПредопределенныхДанных()
// Возвращаемое значение:
// Массив из ОбъектМетаданных
//
Функция ОбъектыМетаданныхВсехПредопределенныхДанных()
РазделениеВключено = ОбщегоНазначения.РазделениеВключено();
ЭтоРазделенныйСеанс = ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных();
@@ -2460,6 +2470,8 @@
КоллекцииМетаданных.Добавить(Метаданные.ПланыСчетов);
КоллекцииМетаданных.Добавить(Метаданные.ПланыВидовРасчета);
ОбъектыМетаданных = Новый Массив;
Для Каждого Коллекция Из КоллекцииМетаданных Цикл
Для Каждого ОбъектМетаданных Из Коллекция Цикл
@@ -2475,32 +2487,37 @@
КонецЕсли;
Менеджер = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ОбъектМетаданных.ПолноеИмя());
Менеджер.УстановитьИнициализациюПредопределенныхДанных(Истина);
ОбъектыМетаданных.Добавить(ОбъектМетаданных);
КонецЦикла;
КонецЦикла;
Возврат ОбъектыМетаданных;
КонецФункции
Процедура УстановитьИнициализациюВсехПредопределенныхДанных(ОбъектыМетаданных)
РазделениеВключено = ОбщегоНазначения.РазделениеВключено();
ЭтоРазделенныйСеанс = ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных();
Для Каждого ОбъектМетаданных Из ОбъектыМетаданных Цикл
Менеджер = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ОбъектМетаданных.ПолноеИмя());
Менеджер.УстановитьИнициализациюПредопределенныхДанных(Истина);
КонецЦикла;
Если Не РазделениеВключено Или Не ЭтоРазделенныйСеанс Тогда
УстановитьОбновлениеПредопределенныхДанныхИнформационнойБазы(ОбновлениеПредопределенныхДанных.Авто);
КонецЕсли;
КонецПроцедуры
Процедура СоздатьНедостающиеПредопределенныеДанные()
РазделениеВключено = ОбщегоНазначения.РазделениеВключено();
ЭтоРазделенныйСеанс = ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных();
КоллекцииМетаданных = Новый Массив;
КоллекцииМетаданных.Добавить(Метаданные.Справочники);
КоллекцииМетаданных.Добавить(Метаданные.ПланыВидовХарактеристик);
КоллекцииМетаданных.Добавить(Метаданные.ПланыСчетов);
КоллекцииМетаданных.Добавить(Метаданные.ПланыВидовРасчета);
Процедура СоздатьНедостающиеПредопределенныеДанные(ОбъектыМетаданных)
Запрос = Новый Запрос;
ТекстЗапроса =
"ВЫБРАТЬ
| ПсевдонимЗаданнойТаблицы.Ссылка КАК Ссылка,
| ПсевдонимЗаданнойТаблицы.ВерсияДанных КАК ВерсияДанных,
| ЕСТЬNULL(ПсевдонимЗаданнойТаблицы.Родитель.ИмяПредопределенныхДанных, """") КАК ИмяРодителя,
| ПсевдонимЗаданнойТаблицы.ИмяПредопределенныхДанных КАК Имя
|ИЗ
@@ -2509,52 +2526,44 @@
| ПсевдонимЗаданнойТаблицы.Предопределенный";
ОписанияСохраненных = Новый Массив;
Для Каждого Коллекция Из КоллекцииМетаданных Цикл
ЭтоПланСчетов = (Коллекция = Метаданные.ПланыСчетов);
Для Каждого ОбъектМетаданных Из Коллекция Цикл
ТаблицыБезСохраненных = Новый Массив;
Для Каждого ОбъектМетаданных Из ОбъектыМетаданных Цикл
Если ОбъектМетаданных.ОбновлениеПредопределенныхДанных
= Метаданные.СвойстваОбъектов.ОбновлениеПредопределенныхДанных.НеОбновлятьАвтоматически Тогда
Продолжить;
КонецЕсли;
ПолноеИмя = ОбъектМетаданных.ПолноеИмя();
Запрос.Текст = СтрЗаменить(ТекстЗапроса, "&ТекущаяТаблица", ПолноеИмя);
Если Метаданные.ПланыСчетов.Содержит(ОбъектМетаданных)
Или Метаданные.ПланыВидовРасчета.Содержит(ОбъектМетаданных)
Или Не ОбъектМетаданных.Иерархический Тогда
Если РазделениеВключено Тогда
МодульРаботаВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("РаботаВМоделиСервиса");
ЭтоРазделенныйОбъектМетаданных = МодульРаботаВМоделиСервиса.ЭтоРазделенныйОбъектМетаданных(ОбъектМетаданных);
Если ( ЭтоРазделенныйСеанс И Не ЭтоРазделенныйОбъектМетаданных)
Или (Не ЭтоРазделенныйСеанс И ЭтоРазделенныйОбъектМетаданных) Тогда
Продолжить;
КонецЕсли;
КонецЕсли;
Если ОбъектМетаданных.ОбновлениеПредопределенныхДанных
= Метаданные.СвойстваОбъектов.ОбновлениеПредопределенныхДанных.НеОбновлятьАвтоматически Тогда
Продолжить;
КонецЕсли;
ПолноеИмя = ОбъектМетаданных.ПолноеИмя();
Запрос.Текст = СтрЗаменить(ТекстЗапроса, "&ТекущаяТаблица", ПолноеИмя);
Если Коллекция = Метаданные.ПланыСчетов
Или Коллекция = Метаданные.ПланыВидовРасчета
Или Не ОбъектМетаданных.Иерархический Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст,
"ЕСТЬNULL(ПсевдонимЗаданнойТаблицы.Родитель.ИмяПредопределенныхДанных, """")", """""");
КонецЕсли;
ТаблицаИмен = Запрос.Выполнить().Выгрузить();
ТаблицаИмен.Индексы.Добавить("Имя");
Имена = ОбъектМетаданных.ПолучитьИменаПредопределенных();
СохранитьСуществующиеПредопределенныеОбъектыПередСозданиемНедостающих(
ОбъектМетаданных, ПолноеИмя, ТаблицаИмен, Имена, Запрос, ОписанияСохраненных, ЭтоПланСчетов);
КонецЦикла;
Запрос.Текст = СтрЗаменить(Запрос.Текст,
"ЕСТЬNULL(ПсевдонимЗаданнойТаблицы.Родитель.ИмяПредопределенныхДанных, """")", """""");
КонецЕсли;
// АПК:1328-выкл - №648.1.1 В вызывающей процедуре установлена исключительная блокировка.
ТаблицаИмен = Запрос.Выполнить().Выгрузить();
// АПК:1328-вкл.
ТаблицаИмен.Индексы.Добавить("Имя");
Имена = ОбъектМетаданных.ПолучитьИменаПредопределенных();
СохранитьСуществующиеПредопределенныеОбъектыПередСозданиемНедостающих(ОбъектМетаданных,
ПолноеИмя, ТаблицаИмен, Имена, Запрос, ОписанияСохраненных, ТаблицыБезСохраненных);
КонецЦикла;
ИнициализироватьПредопределенныеДанные();
// Восстановление предопределенных элементов, существовавших до инициализации.
Для Каждого ОписаниеСохраненных Из ОписанияСохраненных Цикл
Менеджер = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ОписаниеСохраненных.ПолноеИмя);
Менеджер.УстановитьИнициализациюПредопределенныхДанных(Ложь);
ИнициализироватьПредопределенныеДанные();
Запрос.Текст = ОписаниеСохраненных.ТекстЗапроса;
// АПК:1328-выкл - №648.1.1 В вызывающей процедуре установлена исключительная блокировка.
ТаблицаИмен = Запрос.Выполнить().Выгрузить();
// АПК:1328-вкл.
ТаблицаИмен.Индексы.Добавить("Имя");
Для Каждого ОписаниеСохраненного Из ОписаниеСохраненных.ТаблицаИмен Цикл
Если Не ОписаниеСохраненного.ОбъектСуществует Тогда
@@ -2564,12 +2573,19 @@
Если Строка <> Неопределено Тогда
НовыйОбъект = Строка.Ссылка.ПолучитьОбъект();
Если ОписаниеСохраненных.ЭтоПланСчетов Тогда
Если ОписаниеСохраненного.Объект.ВерсияДанных <> Строка.ВерсияДанных Тогда
ОбновитьОбъектСчета(ОписаниеСохраненного.Объект);
КонецЕсли;
ДополнитьНовыеВидыСубконтоСчета(ОписаниеСохраненного.Объект, НовыйОбъект);
КонецЕсли;
// АПК:1327-выкл - №648.1.1 В вызывающей процедуре установлена исключительная блокировка.
ОбновлениеИнформационнойБазы.УдалитьДанные(НовыйОбъект);
// АПК:1327-вкл.
Строка.Имя = "";
КонецЕсли;
// АПК:1327-выкл - №648.1.1 В вызывающей процедуре установлена исключительная блокировка.
ОбновлениеИнформационнойБазы.ЗаписатьДанные(ОписаниеСохраненного.Объект);
// АПК:1327-вкл.
КонецЦикла;
Для Каждого Строка Из ТаблицаИмен Цикл
Если Не ЗначениеЗаполнено(Строка.Имя)
@@ -2580,11 +2596,41 @@
Если СтрокаРодителя <> Неопределено Тогда
НовыйОбъект = Строка.Ссылка.ПолучитьОбъект();
НовыйОбъект.Родитель = СтрокаРодителя.Ссылка;
// АПК:1327-выкл - №648.1.1 В вызывающей процедуре установлена исключительная блокировка.
ОбновлениеИнформационнойБазы.ЗаписатьДанные(НовыйОбъект);
// АПК:1327-вкл.
КонецЕсли;
КонецЦикла;
КонецЦикла;
Для Каждого ПолноеИмя Из ТаблицыБезСохраненных Цикл
Менеджер = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ПолноеИмя);
Менеджер.УстановитьИнициализациюПредопределенныхДанных(Ложь);
КонецЦикла;
ИнициализироватьПредопределенныеДанные();
КонецПроцедуры
// Параметры:
// СтарыйОбъект - ПланСчетовОбъект
//
Процедура ОбновитьОбъектСчета(СтарыйОбъект)
НовыйОбъект = СтарыйОбъект.Ссылка.ПолучитьОбъект();
НовыйОбъект.ИмяПредопределенныхДанных = СтарыйОбъект.ИмяПредопределенныхДанных;
Для Каждого СтрокаВидаСубконто Из СтарыйОбъект.ВидыСубконто Цикл
Если СтрокаВидаСубконто.Предопределенное Тогда
НоваяСтрокаВидаСубконто = НовыйОбъект.ВидыСубконто.Найти(
СтрокаВидаСубконто.ВидСубконто, "ВидСубконто");
Если НоваяСтрокаВидаСубконто <> Неопределено Тогда
НоваяСтрокаВидаСубконто.Предопределенное = Истина;
КонецЕсли;
КонецЕсли;
КонецЦикла;
СтарыйОбъект = НовыйОбъект;
КонецПроцедуры
// Параметры:
@@ -2621,7 +2667,7 @@
КонецПроцедуры
Процедура СохранитьСуществующиеПредопределенныеОбъектыПередСозданиемНедостающих(
ОбъектМетаданных, ПолноеИмя, ТаблицаИмен, Имена, Запрос, ОписанияСохраненных, ЭтоПланСчетов)
ОбъектМетаданных, ПолноеИмя, ТаблицаИмен, Имена, Запрос, ОписанияСохраненных, ТаблицыБезСохраненных)
ТребуетсяИнициализация = Ложь;
ПредопределенныеСуществуют = Ложь;
@@ -2644,7 +2690,9 @@
КонецЕсли;
Если ПредопределенныеСуществуют Тогда
ЭтоПланСчетов = Метаданные.ПланыСчетов.Содержит(ОбъектМетаданных);
ОписаниеСохраненных = Новый Структура;
ОписаниеСохраненных.Вставить("ПолноеИмя", ПолноеИмя);
ОписаниеСохраненных.Вставить("ТекстЗапроса", Запрос.Текст);
ОписаниеСохраненных.Вставить("ТаблицаИмен", ТаблицаИмен);
ОписаниеСохраненных.Вставить("ЭтоПланСчетов", ЭтоПланСчетов);
@@ -2663,7 +2711,9 @@
КонецЕсли;
КонецЦикла;
КонецЕсли;
// АПК:1327-выкл - №648.1.1 В вызывающей процедуре установлена исключительная блокировка.
ОбновлениеИнформационнойБазы.ЗаписатьДанные(Объект);
// АПК:1327-вкл.
Если ЭтоПланСчетов Тогда
Для Каждого СтрокаВидаСубконто Из СтрокиПредопределенныхВидовСубконто Цикл
СтрокаВидаСубконто.Предопределенное = Истина;
@@ -2674,11 +2724,10 @@
КонецЕсли;
Строка.Объект = Объект;
КонецЦикла;
Иначе
ТаблицыБезСохраненных.Добавить(ПолноеИмя);
КонецЕсли;
Менеджер = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ПолноеИмя);
Менеджер.УстановитьИнициализациюПредопределенныхДанных(Ложь);
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
@@ -83,7 +83,8 @@
// разработчика для подсистемы Управление доступом.
//
// Параметры:
// ОписанияПрофилей - Массив из см. УправлениеДоступом.НовоеОписаниеПрофиляГруппДоступа
// ОписанияПрофилей - Массив из см. УправлениеДоступом.НовоеОписаниеПрофиляГруппДоступа,
// см. УправлениеДоступом.НовоеОписаниеПапкиПрофилейГруппДоступа
// ПараметрыОбновления - Структура:
// * ОбновлятьИзмененныеПрофили - Булево - начальное значение Истина.
// * ЗапретитьИзменениеПрофилей - Булево - начальное значение Истина.
@@ -1532,6 +1532,15 @@
КонецПроцедуры
// Параметры:
// ИзменениеЯзыков - см. МультиязычностьСервер.ОписаниеСтарыхИНовыхНастроекЯзыков
//
Процедура ПриИзмененииЯзыкаИнформационнойБазы(ИзменениеЯзыков) Экспорт
Справочники.ПрофилиГруппДоступа.ПриИзмененииЯзыкаИнформационнойБазы(ИзменениеЯзыков);
КонецПроцедуры
// Заполняет структуру параметров, необходимых для работы клиентского кода
// конфигурации.
//
@@ -11470,6 +11479,8 @@
УстановитьОтключениеБезопасногоРежима(Истина);
УстановитьПривилегированныйРежим(Истина);
РегистрыСведений.ИспользуемыеВидыДоступа.ОбновитьДанныеРегистра();
ДатаОбновленияВерсииРасширений = Справочники.ВерсииРасширений.ПоследняяВерсияРасширений().ДатаОбновления;
ДатаОбновленияВсехПараметровРаботыПрограммы =
@@ -22631,6 +22642,13 @@
// Для функций ОбщийКонтекстРасчетаПараметровОграничения и ИспользованиеВидовДоступаИзменено.
//
// Параметры:
// СвойстваВидовДоступа - см. ХранимоеОписаниеСвойствВидовДоступа
// ПолноеИмя - Строка
// ВсеВидыДоступаИспользуются - Неопределено
// - Булево
// ТолькоХешСумма - Булево
//
// Возвращаемое значение:
// Структура:
// * ДляИБ - Соответствие из КлючИЗначение:
@@ -22709,7 +22727,7 @@
Для Каждого Строка Из ИспользуемыеПоТаблицам Цикл
Если ТекущаяТаблица <> Строка.Таблица Тогда
ОбъектМетаданных = ОбъектыМетаданных.Получить(Строка.Таблица);
Если ОбъектМетаданных = Неопределено Тогда
Если ТипЗнч(ОбъектМетаданных) <> Тип("ОбъектМетаданных") Тогда
Продолжить;
КонецЕсли;
ТекущееПолноеИмя = ОбъектМетаданных.ПолноеИмя();
@@ -22721,7 +22739,8 @@
КонецЦикла;
КонецЕсли;
Для Каждого СвойстваВидаДоступа Из СвойстваВидовДоступа.Массив Цикл
СвойстваВидовДоступаМассив = СвойстваВидовДоступа.Массив; // Массив Из см. СвойстваВидаДоступа
Для Каждого СвойстваВидаДоступа Из СвойстваВидовДоступаМассив Цикл
Если ВсеВидыДоступаИспользуются <> Истина
И Используемые.Найти(СвойстваВидаДоступа.Ссылка) = Неопределено Тогда
Продолжить;
@@ -27125,6 +27144,7 @@
Или ЭтоБезусловноеОграничение(Контекст, Результат) Тогда
Результат.ДоступЗапрещен = Истина;
Результат.Версия = " ";
Возврат Результат;
КонецЕсли;
@@ -27163,6 +27183,7 @@
ЗаполнитьГруппыПолейИДополнительныхТаблиц(Контекст);
Если Контекст.СвойстваПолей.Количество() = 0 Тогда // Ограничение отключено.
Результат.Версия = " ";
Возврат Результат;
КонецЕсли;
@@ -36932,7 +36953,7 @@
ИначеЕсли Контекст.ЭтоЗначениеТогдаИначе Тогда
ШаблонОшибки = ПодставитьКлючевыеСловаВСтроку(Контекст,
НСтр("ru = 'Функция ""%4"" запрещена в условии ограничения в операции ""%1"" в предложениях ""%2"" и ""%3""'"),
"Выбор,Тогда,Иначе");
"Выбор,Тогда,Иначе", Строка.Символы);
Иначе
ШаблонОшибки = НСтр("ru = 'Функция ""%1"" запрещена в условии ограничения'");
КонецЕсли;
@@ -36948,7 +36969,7 @@
ИначеЕсли Контекст.ЭтоЗначениеТогдаИначе Тогда
ШаблонОшибки = ПодставитьКлючевыеСловаВСтроку(Контекст,
НСтр("ru = 'Операция ""%4"" запрещена в условии ограничения в операции ""%1"" в предложениях ""%2"" и ""%3""'"),
"Выбор,Тогда,Иначе");
"Выбор,Тогда,Иначе", Строка.Символы);
Иначе
ШаблонОшибки = НСтр("ru = 'Операция ""%1"" запрещена в условии ограничения'");
КонецЕсли;
@@ -837,14 +837,18 @@
ИменаРолей = Новый Массив;
НазначениеРолей = ПользователиСлужебныйПовтИсп.НазначениеРолей();
Для Каждого Роль Из Метаданные.Роли Цикл
ИмяРоли = Роль.Имя;
Если Не СтрНачинаетсяС(ВРег(ИмяРоли), ВРег("БазовыеПрава")) Тогда
Продолжить;
КонецЕсли;
РольДляВнешнихПользователей = СтрНачинаетсяС(ВРег(ИмяРоли), ВРег("БазовыеПраваВнешнихПользователей"));
Если РольДляВнешнихПользователей = ДляВнешнихПользователей Тогда
ИменаРолей.Добавить(ИмяРоли);
РольДляВнешнихПользователей = НазначениеРолей.ТолькоДляВнешнихПользователей.Получить(Роль.Имя) <> Неопределено;
Если НазначениеРолей.СовместноДляПользователейИВнешнихПользователей.Получить(Роль.Имя) <> Неопределено
Или РольДляВнешнихПользователей = ДляВнешнихПользователей Тогда
ИменаРолей.Добавить(Роль.Имя);
КонецЕсли;
КонецЦикла;
@@ -882,18 +882,14 @@
// - ОбъектXDTO - XDTO-объект КонтактнаяИнформация или Адрес.
// - Структура - см. РаботаСАдресами.СведенияОбАдресе
// - Структура - см. УправлениеКонтактнойИнформацией.СведенияОТелефоне
// ВидКонтактнойИнформации - Структура - дополнительные параметры, влияющие на формирование представления адреса:
// * ВключатьСтрануВПредставление - Булево - в представление будет включена страна адреса;
// * ФорматАдреса - Строка - устарело. Варианты: "ФИАС" или "КЛАДР".
// Если указано "КЛАДР", то в представление адреса
// не включаются значения уровней округ и внутригородской район.
// УдалитьВидКонтактнойИнформации - Неопределено - устарел. Оставлен для обратной совместимости.
//
// Возвращаемое значение:
// Строка - представление контактной информации.
//
Функция ПредставлениеКонтактнойИнформации(Знач КонтактнаяИнформация, Знач ВидКонтактнойИнформации = Неопределено) Экспорт
Функция ПредставлениеКонтактнойИнформации(Знач КонтактнаяИнформация, Знач УдалитьВидКонтактнойИнформации = Неопределено) Экспорт
Возврат УправлениеКонтактнойИнформациейСлужебный.ПредставлениеКонтактнойИнформации(КонтактнаяИнформация, ВидКонтактнойИнформации);
Возврат УправлениеКонтактнойИнформациейСлужебный.ПредставлениеКонтактнойИнформации(КонтактнаяИнформация);
КонецФункции
@@ -1223,7 +1219,7 @@
| 0 КАК ИдентификаторСтрокиТабличнойЧасти
|ИЗ
| &СрезКонтактнойИнформации КАК СрезКонтактнойИнформации
| ЛЕВОЕ СОЕДИНЕНИЕ &КонтактнаяИнформация КАК КонтактнаяИнформация
| ЛЕВОЕ СОЕДИНЕНИЕ #КонтактнаяИнформация КАК КонтактнаяИнформация
| ПО СрезКонтактнойИнформации.Вид = КонтактнаяИнформация.Вид
| И СрезКонтактнойИнформации.ДействуетС = КонтактнаяИнформация.ДействуетС
| И СрезКонтактнойИнформации.Объект = КонтактнаяИнформация.Ссылка " + УсловияОтбора;
@@ -1242,7 +1238,7 @@
| КонтактнаяИнформация.ЗначенияПолей КАК ЗначенияПолей,
| 0 КАК ИдентификаторСтрокиТабличнойЧасти
|ИЗ
| &КонтактнаяИнформация КАК КонтактнаяИнформация
| #КонтактнаяИнформация КАК КонтактнаяИнформация
|ГДЕ
| КонтактнаяИнформация.Вид <> ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ПустаяСсылка)
| И КонтактнаяИнформация.Тип <> ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.ПустаяСсылка)
@@ -1260,7 +1256,7 @@
КонецЕсли;
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&КонтактнаяИнформация" , МетаданныеОбъекта.ПолноеИмя() + ".КонтактнаяИнформация"); // @Query-part-1, @Query-part-2
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "#КонтактнаяИнформация" , МетаданныеОбъекта.ПолноеИмя() + ".КонтактнаяИнформация"); // @Query-part-1, @Query-part-2
Если ЭтоПервыйЗапрос Тогда
@@ -4738,7 +4734,7 @@
Если ПустаяСтрока(СтрокаКИ.Значение) Тогда
Если ПустаяСтрока(СтрокаКИ.Представление) И ЗначениеЗаполнено(СтрокаКИ.ЗначенияПолей) Тогда
СтрокаКИ.Представление = УправлениеКонтактнойИнформациейСлужебный.ПредставлениеКонтактнойИнформации(СтрокаКИ.ЗначенияПолей, СтрокаКИ.Вид);
СтрокаКИ.Представление = УправлениеКонтактнойИнформациейСлужебный.ПредставлениеКонтактнойИнформации(СтрокаКИ.ЗначенияПолей);
КонецЕсли;
Результат = УправлениеКонтактнойИнформациейСлужебный.КонтактнаяИнформацияИзXML(СтрокаКИ.ЗначенияПолей, СтрокаКИ.Вид, РезультатПреобразования, СтрокаКИ.Представление);
@@ -5278,7 +5274,7 @@
ИсточникЗначений = ?(ПустыеЗначенияПолей, СтрокаКонтактнойИнформации.Значение, СтрокаКонтактнойИнформации.ЗначенияПолей);
СтрокаКонтактнойИнформации.Представление = УправлениеКонтактнойИнформациейСлужебный.ПредставлениеКонтактнойИнформации(
ИсточникЗначений, ФорматКонтактнойИнформации);
ИсточникЗначений);
КонецЕсли;
@@ -329,8 +329,10 @@
//
Процедура СоздатьЭлектронноеПисьмо(Знач ЗначенияПолей, Знач Представление = "", ОжидаемыйВид = Неопределено, ИсточникКонтактнойИнформации = Неопределено) Экспорт
КонтактнаяИнформация = УправлениеКонтактнойИнформациейСлужебныйВызовСервера.ПривестиКонтактнуюИнформациюXML(
Новый Структура("ЗначенияПолей, Представление, ВидКонтактнойИнформации", ЗначенияПолей, Представление, ОжидаемыйВид));
ОписаниеКонтактнойИнформации = УправлениеКонтактнойИнформациейКлиентСервер.ОписаниеКонтактнойИнформации(
ЗначенияПолей, Представление, ОжидаемыйВид);
КонтактнаяИнформация = УправлениеКонтактнойИнформациейСлужебныйВызовСервера.ПривестиКонтактнуюИнформациюXML(ОписаниеКонтактнойИнформации);
ТипИнформации = КонтактнаяИнформация.ТипКонтактнойИнформации;
Если ТипИнформации <> ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты") Тогда
@@ -1764,4 +1766,14 @@
КонецПроцедуры
Функция ОставитьТолькоЦифрыВСтроке(Знач Строка) Экспорт
ЛишниеСимволы = СтрСоединить(СтрРазделить(Строка, "0123456789"), "");
Результат = СтрСоединить(СтрРазделить(Строка, ЛишниеСимволы), "");
Возврат Результат;
КонецФункции
#КонецОбласти
@@ -294,6 +294,26 @@
#Область СлужебныеПроцедурыИФункции
// Возвращаемое значение:
// Структура - описание контактной информации:
// * ЗначенияПолей - Строка - контактная информация в формате JSON
// * Представление - Строка - представление контактной информации. Используется, если невозможно определить
// представление из параметра.В ЗначенияПолей отсутствие поля Представление.
// * ВидКонтактнойИнформации - ПеречислениеСсылка.ТипыКонтактнойИнформации
// - СправочникСсылка.ВидыКонтактнойИнформации - вид контактной информации
//
Функция ОписаниеКонтактнойИнформации(ЗначенияПолей, Представление, ВидКонтактнойИнформации) Экспорт
Результат = Новый Структура;
Результат.Вставить("ЗначенияПолей", ЗначенияПолей);
Результат.Вставить("Представление", Представление);
Результат.Вставить("ВидКонтактнойИнформации", ВидКонтактнойИнформации);
Возврат Результат;
КонецФункции
Функция ТипКонтактнойИнформацииВСтроку(Знач ТипКонтактнойИнформации)
Результат = Новый Соответствие;
@@ -1614,7 +1614,7 @@
КонецФункции
Функция ПредставлениеКонтактнойИнформации(Знач КонтактнаяИнформация, Знач ФорматКонтактнойИнформации) Экспорт
Функция ПредставлениеКонтактнойИнформации(Знач КонтактнаяИнформация) Экспорт
Если ПустаяСтрока(КонтактнаяИнформация) Тогда
Возврат "";
@@ -2244,7 +2244,7 @@
Значение = ЗначениеИлиПредставление;
ЗначенияПолей = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияВXML(Значение,, СвойстваВидаКонтактнойИнформации.Тип);
ОбъектКонтактнойИнформации = JSONВКонтактнуюИнформациюПоПолям(Значение, СвойстваВидаКонтактнойИнформации.Тип);
Представление = ПредставлениеКонтактнойИнформации(ЗначениеИлиПредставление, ВидКонтактнойИнформации);
Представление = ПредставлениеКонтактнойИнформации(ЗначениеИлиПредставление);
Иначе
ОбъектКонтактнойИнформации = КонтактнаяИнформацияПоПредставлению(ЗначениеИлиПредставление, СвойстваВидаКонтактнойИнформации.Тип);
@@ -3352,6 +3352,14 @@
КонецФункции
// Параметры:
// Данные - см. УправлениеКонтактнойИнформациейКлиентСервер.ОписаниеКонтактнойИнформации
//
// Возвращаемое значение:
// Структура:
// * ДанныеXML - Строка
// * ТипКонтактнойИнформации - ПеречислениеСсылка.ТипыКонтактнойИнформации
//
Функция ПривестиКонтактнуюИнформациюXML(Знач Данные) Экспорт
XMLСтрока = "";
@@ -3556,7 +3564,7 @@
Если Не Формат9Запятых Тогда
ПространствоИмен = ПространствоИмен();
Состав = XDTOКонтактнаяИнформация.Состав;
Состав = XDTOКонтактнаяИнформация.Состав; // см. XDTOПакет.КонтактнаяИнформация.Адрес
Если Состав = Неопределено Тогда
Возврат Результат;
@@ -36,13 +36,23 @@
Возврат УправлениеКонтактнойИнформациейСлужебный.СтрокаСоставаКонтактнойИнформации(XMLДанные);
КонецФункции
// Преобразует все входящие форматы контактной информации в XML.
// Параметры:
// Данные - см. УправлениеКонтактнойИнформациейКлиентСервер.ОписаниеКонтактнойИнформации
//
// Возвращаемое значение:
// см. УправлениеКонтактнойИнформациейСлужебный.ПривестиКонтактнуюИнформациюXML
//
Функция ПривестиКонтактнуюИнформациюXML(Знач Данные) Экспорт
Возврат УправлениеКонтактнойИнформациейСлужебный.ПривестиКонтактнуюИнформациюXML(Данные);
КонецФункции
// Возвращает найденную ссылку или создает новую страну мира и возвращает ссылку на нее.
//
// Параметры:
// КодСтраны - Строка
//
// Возвращаемое значение:
// см. УправлениеКонтактнойИнформацией.СтранаМираПоКодуИлиНаименованию
//
Функция СтранаМираПоДаннымКлассификатора(Знач КодСтраны) Экспорт
@@ -599,7 +599,7 @@
Процедура ЗаполнитьПрофильРедактированиеПечатныхФорм(ОписанияПрофилей) Экспорт
МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом");
ОписаниеПрофиля = МодульУправлениеДоступом.НовоеОписаниеПрофиляГруппДоступа();;
ОписаниеПрофиля = МодульУправлениеДоступом.НовоеОписаниеПрофиляГруппДоступа();
ОписаниеПрофиля.Родитель = "ДополнительныеПрофили";
ОписаниеПрофиля.Идентификатор = "70179f20-2315-11e6-9bff-d850e648b60c";
ОписаниеПрофиля.Наименование = НСтр("ru = 'Редактирование, отправка по почте, сохранение в файл печатных форм (дополнительно)'",
@@ -184,7 +184,7 @@
Обработчик.НачальноеЗаполнение = Истина;
Обработчик = Обработчики.Добавить();
Обработчик.Версия = "3.1.4.18";
Обработчик.Версия = "3.1.5.128";
Обработчик.Идентификатор = Новый УникальныйИдентификатор("ecd6aad4-4b04-43be-82bc-cd4f563beb0b");
Обработчик.Процедура = "ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.ОбработатьДанныеДляПереходаНаНовуюВерсию";
Обработчик.Комментарий = НСтр("ru = 'Заполняет уникальное имя и обновляет зависимости дополнительных реквизитов и сведений.
@@ -207,6 +207,15 @@
КонецПроцедуры
// См. ОбновлениеИнформационнойБазыБСП.ПриДобавленииОбработчиковПереходаСДругойПрограммы.
Процедура ПриДобавленииОбработчиковПереходаСДругойПрограммы(Обработчики) Экспорт
Обработчик = Обработчики.Добавить();
Обработчик.ПредыдущееИмяКонфигурации = "*";
Обработчик.Процедура = "УправлениеСвойствамиСлужебный.СоздатьПредопределенныеНаборыСвойств";
КонецПроцедуры
// См. ЗапретРедактированияРеквизитовОбъектовПереопределяемый.ПриОпределенииОбъектовСЗаблокированнымиРеквизитами.
Процедура ПриОпределенииОбъектовСЗаблокированнымиРеквизитами(Объекты) Экспорт
Объекты.Вставить(Метаданные.ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.ПолноеИмя(), "");
@@ -44,7 +44,7 @@
//
Процедура УдалитьВременныйКаталог(Знач Путь) Экспорт
Если ЭтоИмяВременногоФайла(Путь) Тогда
Если НЕ ЭтоИмяВременногоФайла(Путь) Тогда
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Неверное значение параметра Путь в ФайловаяСистема.УдалитьВременныйКаталог:
|Каталог не является временным ""%1""'"),
@@ -56,6 +56,9 @@
КонецПроцедуры
// Удаляет временный файл.
//
// Выбрасывает исключение, если передано имя не временного файла.
//
// Если временный файл не может быть удален (например, он занят каким-то процессом),
// то в журнал регистрации записывается соответствующее предупреждение, а процедура завершается.
//
@@ -67,7 +70,7 @@
//
Процедура УдалитьВременныйФайл(Знач Путь) Экспорт
Если ЭтоИмяВременногоФайла(Путь) Тогда
Если НЕ ЭтоИмяВременногоФайла(Путь) Тогда
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Неверное значение параметра Путь в ФайловаяСистема.УдалитьВременныйФайл:
|Файл не является временным ""%1""'"),
@@ -309,7 +312,7 @@
// Ожидается, что Путь получен методом ПолучитьИмяВременногоФайла().
// Перед проверкой разворачиваем слэши в одну сторону.
Возврат Не СтрНачинаетсяС(СтрЗаменить(Путь, "/", "\"), СтрЗаменить(КаталогВременныхФайлов(), "/", "\"));
Возврат СтрНачинаетсяС(СтрЗаменить(Путь, "/", "\"), СтрЗаменить(КаталогВременныхФайлов(), "/", "\"));
КонецФункции
Loaded 100 of 182 files, more files were not shown because too many files have changed in this diff. Show more