3_1_5_180

This commit is contained in:
Компания 1С committed 2021-09-03 23:08:00 +03:00
1 parent 09e68ae35b
commit ebd39458e4
104 files changed
+3707 -1868

No files matched your search

@@ -86,28 +86,6 @@
КонецПроцедуры КонецПроцедуры
Процедура ПередУдалением(Отказ)
Если ТипХраненияФайла = Перечисления.ТипыХраненияФайлов.ВТомахНаДиске
И НЕ Том.Пустая() Тогда
СвойстваФайла = РаботаСФайламиВТомахСлужебный.СвойстваФайлаВТоме();
ЗаполнитьЗначенияСвойств(СвойстваФайла, ЭтотОбъект);
РаботаСФайламиВТомахСлужебный.УдалитьФайл(
РаботаСФайламиВТомахСлужебный.ПолноеИмяФайлаВТоме(СвойстваФайла));
КонецЕсли;
// Проверку ОбменДанными.Загрузка следует выполнять начиная с этой строки.
// Сначала требуется физически удалить файл, а потом уже сведения о нем в информационной базе.
// Иначе данные о расположении файла будут недоступны.
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
КонецПроцедуры
#КонецОбласти #КонецОбласти
#Иначе #Иначе
@@ -36,7 +36,7 @@
<div>Включите флажок <strong>Обязательное заполнение</strong>, для того чтобы программа проверяла заполнение поля контактной информации при вводе документов или списков. Сохранение данных без заполнения этого поля будет невозможно.</div> <div>Включите флажок <strong>Обязательное заполнение</strong>, для того чтобы программа проверяла заполнение поля контактной информации при вводе документов или списков. Сохранение данных без заполнения этого поля будет невозможно.</div>
</li> </li>
<li>Настройка <strong>Редактировать</strong> используется для типов контактной информации <strong>Адрес</strong>, <strong>Телефон</strong>, <strong>Факс</strong>. Такая настройка позволяет выбрать способ ввода этих видов контактной информации:</li> <li>Настройка <strong>Редактировать</strong> используется для типов контактной информации <strong>Адрес</strong>, <strong>Телефон</strong>, <strong>Факс</strong>. Такая настройка позволяет выбрать способ ввода этих видов контактной информации:</li>
<ul><li><b>В диалоге</b> - позволяет ограничить ввод нового и редактирование существующего адреса, телефона или факса шаблоном ввода, а также выбором адреса из адресного классификатора. При выбранном значении предусмотрена возможность ввести адрес в свободной форме. Это может понадобиться в исключительных случаях, например, если данные адреса в каких либо документах приводятся с ошибкой, но для печати необходимо их проставить. При этом такой адрес будет храниться в программе с пометкой, что он введен в свободной форме, и использоваться с ограничениями. После уточнения адрес можно будет исправить, заполнив по шаблону.</li> <ul><li><b>В диалоге</b> - позволяет ограничить ввод нового и редактирование существующего адреса, телефона или факса шаблоном ввода, а также выбором адреса из адресного классификатора. При выбранном значении предусмотрена возможность ввести адрес в свободной форме. Это может понадобиться в исключительных случаях, например, если данные адреса в каких-либо документах приводятся с ошибкой, но для печати необходимо их проставить. При этом такой адрес будет храниться в программе с пометкой, что он введен в свободной форме, и использоваться с ограничениями. После уточнения адрес можно будет исправить, заполнив по шаблону.</li>
<li><b>В поле ввода</b> - если для адресов и телефонов не требуется ввод по шаблону (например, для иностранных адресов), то можно отключить ввод в диалоге;</li> <li><b>В поле ввода</b> - если для адресов и телефонов не требуется ввод по шаблону (например, для иностранных адресов), то можно отключить ввод в диалоге;</li>
<li><b>В диалоге и в поле ввода</b> - позволяет использовать оба способа ввода. Если правильный ввод адреса не вызывает затруднений, можно будет ввести адрес прямо в поле ввода не открывая диалога, в случае затруднений можно будет открыть шаблон и ввести адрес с помощью шаблона.</li></ul><li> <li><b>В диалоге и в поле ввода</b> - позволяет использовать оба способа ввода. Если правильный ввод адреса не вызывает затруднений, можно будет ввести адрес прямо в поле ввода не открывая диалога, в случае затруднений можно будет открыть шаблон и ввести адрес с помощью шаблона.</li></ul><li>
<div>Настройка <strong>Запрещать ввод некорректного адреса</strong> используется для полей <strong>Адрес</strong>, <strong>Телефон</strong> или <strong>Адрес электронной почты</strong>. Такая настройка позволяет запретить ввод российских адресов, телефонов или адресов электронной почты, которые заполнены не по установленным правилам.</div></li> <div>Настройка <strong>Запрещать ввод некорректного адреса</strong> используется для полей <strong>Адрес</strong>, <strong>Телефон</strong> или <strong>Адрес электронной почты</strong>. Такая настройка позволяет запретить ввод российских адресов, телефонов или адресов электронной почты, которые заполнены не по установленным правилам.</div></li>
@@ -51,6 +51,7 @@
<ul><li><strong>Запрещать ввод некорректного адреса</strong> - если флажок включен, то при некорректном вводе российского адреса невозможно будет ввести данные в программу (имеет смысл только при использовании шаблонов ввода и адресного классификатора - для использования этой возможности включите флажок <strong>Редактировать только в диалоге</strong>). Адрес проверяется по ФИАС. <ul><li><strong>Запрещать ввод некорректного адреса</strong> - если флажок включен, то при некорректном вводе российского адреса невозможно будет ввести данные в программу (имеет смысл только при использовании шаблонов ввода и адресного классификатора - для использования этой возможности включите флажок <strong>Редактировать только в диалоге</strong>). Адрес проверяется по ФИАС.
</li> </li>
<li><strong>Указывать ОКТМО</strong> - включите флажок, для того чтобы автоматически заполнялось поле ОКТМО. По ОКТМО нужно получать адрес муниципального образования, в том числе и код - получение особенностей налогообложения выполняется именно по коду. При необходимости поле можно отредактировать.</li> <li><strong>Указывать ОКТМО</strong> - включите флажок, для того чтобы автоматически заполнялось поле ОКТМО. По ОКТМО нужно получать адрес муниципального образования, в том числе и код - получение особенностей налогообложения выполняется именно по коду. При необходимости поле можно отредактировать.</li>
<a name="СтандартныеПодсистемы.КонтрольВеденияУчета"></a>
<li><b>Автоматически исправлять устаревшие адреса</b> - можно включить автоматическую проверку и исправление адресов. В этом случае регламентное задание 1 раз в неделю проверяет и исправляет адреса, ставшие устаревшими.</li></ul></li></ul><h3>Особенности настройки поля Телефон и факс</h3> <li><b>Автоматически исправлять устаревшие адреса</b> - можно включить автоматическую проверку и исправление адресов. В этом случае регламентное задание 1 раз в неделю проверяет и исправляет адреса, ставшие устаревшими.</li></ul></li></ul><h3>Особенности настройки поля Телефон и факс</h3>
<div> <div>
<ul><li>Для того чтобы использовать <strong>Телефон с добавочным номером</strong>, включите соответствующий флажок. Для некоторых типов телефонов (например, мобильный телефон) не предусмотрено добавочных номеров.</li></ul></div> <ul><li>Для того чтобы использовать <strong>Телефон с добавочным номером</strong>, включите соответствующий флажок. Для некоторых типов телефонов (например, мобильный телефон) не предусмотрено добавочных номеров.</li></ul></div>
@@ -65,8 +66,7 @@
<li><b>^</b> - недопустимо вводить этот символ интерактивно пользователем, он может устанавливаться только из языка;</li> <li><b>^</b> - недопустимо вводить этот символ интерактивно пользователем, он может устанавливаться только из языка;</li>
<li><b>@</b> - допустимо ввести любые алфавитно-цифровые символы (буквы или цифры) в верхнем регистре или пробел.</li></ul><li>Например, при маске "<b>+7(999)999-99-99</b>" текст "<b>9001234567</b>" преобразуется в "<b>+7(900)123-45-67</b>".</li> <li><b>@</b> - допустимо ввести любые алфавитно-цифровые символы (буквы или цифры) в верхнем регистре или пробел.</li></ul><li>Например, при маске "<b>+7(999)999-99-99</b>" текст "<b>9001234567</b>" преобразуется в "<b>+7(900)123-45-67</b>".</li>
<li>Для того чтобы использовать в маске один из специальных символов, нужно использовать перед ним символ "<b>\</b>".</li> <li>Для того чтобы использовать в маске один из специальных символов, нужно использовать перед ним символ "<b>\</b>".</li>
<li>Допускается указание нескольких масок в одном параметре. Маски разделяются символом "<b>;</b>". В этом случае использоваться будет та маска, к которой подходит введенный текст.</li> <li>Допускается указание нескольких масок в одном параметре. Маски разделяются символом "<b>;</b>". В этом случае использоваться будет та маска, к которой подходит введенный текст.</li></ul><h3>Особенности настройки поля Адрес электронной почты</h3>
<div><br></div></ul><h3>Особенности настройки поля Адрес электронной почты</h3>
<ul><li>Если у поля установлен тип <strong>Адрес электронной почты</strong>, то программа проверяет правильность ввода адреса электронной почты. Включите флажок <strong>Запрещать ввод некорректных адресов</strong>, в этом случае ввести некорректный адрес электронной почты будет невозможно.</li></ul><h3>Особенности настройки поля Другое</h3> <ul><li>Если у поля установлен тип <strong>Адрес электронной почты</strong>, то программа проверяет правильность ввода адреса электронной почты. Включите флажок <strong>Запрещать ввод некорректных адресов</strong>, в этом случае ввести некорректный адрес электронной почты будет невозможно.</li></ul><h3>Особенности настройки поля Другое</h3>
<ul><li> <ul><li>
<div>С помощью переключателя можно указать <strong>Вид поля</strong>, для того чтобы более точно расположить поле в окне объекта:</div> <div>С помощью переключателя можно указать <strong>Вид поля</strong>, для того чтобы более точно расположить поле в окне объекта:</div>
@@ -64,6 +64,7 @@
#Область СлужебныеПроцедурыИФункции #Область СлужебныеПроцедурыИФункции
// См. ЭлектроннаяПодписьСлужебный.ПоставляемыеНастройкиПрограмм
Функция ПоставляемыеНастройкиПрограмм() Экспорт Функция ПоставляемыеНастройкиПрограмм() Экспорт
Настройки = ЭлектроннаяПодписьСлужебный.ПоставляемыеНастройкиПрограмм(); Настройки = ЭлектроннаяПодписьСлужебный.ПоставляемыеНастройкиПрограмм();
@@ -4,22 +4,31 @@
<p>В списке выводится:</p> <p>В списке выводится:</p>
<ul><li> <ul><li>
<div><img src="StdPicture.MoveLeft"></img> - загрузка (получение данных);</div> <div><img src="StdPicture.MoveLeft"></img> - загрузка (получение данных);</div>
</li><li> </li>
<li>
<div><img src="StdPicture.MoveRight"></img> - выгрузка (отправка данных);</div> <div><img src="StdPicture.MoveRight"></img> - выгрузка (отправка данных);</div>
</li><li> </li>
<div><strong>Наименование</strong> - полное наименование сценария; </div></li></ul><p>Жирным шрифтом в списке выделяются сценарии, которые выполняются автоматически по расписанию.</p> <li>
<p>По команде <strong>Еще - Изменить форму</strong> можно добавить дополнительные поля, такие как <strong>Версия данных</strong>, <strong>Комментарий</strong> и т.д.</p> <div><strong>Наименование</strong> - полное наименование сценария;</div></li>
<li><img src="StdPicture.ScheduledJob"></img> - выполняется автоматически по расписанию.</li></ul><p>По команде <strong>Еще - Изменить форму</strong> можно добавить дополнительные поля, такие как <strong>Версия данных</strong>, <strong>Комментарий</strong> и т.д.</p>
<h3>Настройка сценария</h3> <h3>Настройка сценария</h3>
<ul><li>Нажмите <img src="StdPicture.CreateListItem"></img><strong>Добавить</strong>, введите необходимые <a href="Catalog.СценарииОбменовДанными.Form.ФормаЭлемента/Help">поля</a>. <ul><li>Нажмите <img src="StdPicture.CreateListItem"></img><strong>Добавить</strong>, введите необходимые <a href="Catalog.СценарииОбменовДанными.Form.ФормаЭлемента/Help">поля</a>.
<p>Настройка сценария синхронизации данных состоит из следующих этапов:</p> <p>Настройка сценария синхронизации данных состоит из следующих этапов:</p>
<ul><li>Настроить расписание выполнения сценария синхронизации данных. <ul><li>Настроить расписание выполнения сценария синхронизации данных.
</li><li>Выбрать информационные базы, для которых будет выполняться сценарий синхронизации данных. </li>
</li><li>Для каждой информационной базы выбрать способ подключения и выполняемое действие (отправка или получение).</li></ul></li><li>После того как настроен сценарий синхронизации данных, около <a href="CommonForm.НастройкиСинхронизацииДанных/Help">настройки синхронизации данных</a> в списке появляется значок <img src="StdPicture.ScheduledJob" width="16" height="16"></img>. Синхронизация данных производится по расписанию с помощью <a href="DataProcessor.РегламентныеИФоновыеЗадания/Help">регламентного задания</a>.</li></ul><h3>Включение выгрузки и загрузки данных</h3> <li>Выбрать информационные базы, для которых будет выполняться сценарий синхронизации данных.
</li>
<li>Для каждой информационной базы выбрать способ подключения и выполняемое действие (отправка или получение).</li></ul></li>
<li>После того как настроен сценарий синхронизации данных, около <a href="CommonForm.НастройкиСинхронизацииДанных/Help">настройки синхронизации данных</a> в списке появляется значок <img src="StdPicture.ScheduledJob" width="16" height="16"></img>. Синхронизация данных производится по расписанию с помощью <a href="DataProcessor.РегламентныеИФоновыеЗадания/Help">регламентного задания</a>.</li></ul><h3>Включение выгрузки и загрузки данных</h3>
<ul><li> <ul><li>
<div>С помощью выпадающего меню <strong>Включить/Отключить</strong> можно управлять выгрузкой и загрузкой данных.</div> <div>С помощью выпадающего меню <strong>Включить/Отключить</strong> можно управлять выгрузкой и загрузкой данных.</div>
</li><li> </li>
<li>
<div>Если выгрузка или загрузка включена, в соответствующей колонке появляется флажок.</div> <div>Если выгрузка или загрузка включена, в соответствующей колонке появляется флажок.</div>
</li><li> </li>
<li>
<div>Не рекомендуется выполнять только выгрузку данных или только загрузку данных, хотя сценарий позволяет это сделать. Надо выполнять полноценную синхронизацию данных в одном сценарии.</div></li></ul><h3>Включение расписания</h3> <div>Не рекомендуется выполнять только выгрузку данных или только загрузку данных, хотя сценарий позволяет это сделать. Надо выполнять полноценную синхронизацию данных в одном сценарии.</div></li></ul><h3>Включение расписания</h3>
<ul><li>Нажмите <img src="StdPicture.ScheduledJob" width="16" height="16"></img>, для того чтобы <strong>Включить/Отключить </strong><strong>расписание </strong><strong>синхронизации данных</strong>. Если расписание включено, сценарий выделяется в списке жирным шрифтом. </li></ul><h3>См. также:</h3> <ul><li>Нажмите <img src="StdPicture.ScheduledJob" width="16" height="16"></img>, для того чтобы <strong>Включить/Отключить </strong><strong>расписание </strong><strong>синхронизации данных</strong>. Если расписание включено, в колонке <img src="StdPicture.ScheduledJob" width="16" height="16"></img> появляется флажок. </li></ul><h3>Выполнение сценария</h3>
<ul><li><a href="v8help://frame/form_common">Работа с формами</a>.</li></ul></body></html> <div>
<ul><li>С помощью кнопки <b>Выполнить сценарий</b> можно запустить синхронизацию по выбранному сценарию и проверить настройки.</li></ul><h3>См. также:</h3>
<ul><li><a href="v8help://frame/form_common">Работа с формами</a>.</li></ul></div></body></html>
@@ -441,7 +441,7 @@
КонецЦикла; КонецЦикла;
РаботаСФайламиВТомахСлужебный.ПроверитьЦелостностьФайлов(ТаблицаФайловНаДиске, ТомХраненияФайлов); РаботаСФайламиВТомахСлужебный.ЗаполнитьЛишниеФайлы(ТаблицаФайловНаДиске, ТомХраненияФайлов);
ТаблицаФайловНаДиске.Индексы.Добавить("СтатусПроверки"); ТаблицаФайловНаДиске.Индексы.Добавить("СтатусПроверки");
МассивЛишнихФайлов = ТаблицаФайловНаДиске.НайтиСтроки( МассивЛишнихФайлов = ТаблицаФайловНаДиске.НайтиСтроки(
Новый Структура("СтатусПроверки", НСтр("ru = 'Лишние файлы (есть на диске, но сведения о них отсутствуют)'"))); Новый Структура("СтатусПроверки", НСтр("ru = 'Лишние файлы (есть на диске, но сведения о них отсутствуют)'")));
@@ -219,6 +219,32 @@
<placementArea>UserCmds</placementArea> <placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu> <representationInContextMenu>Auto</representationInContextMenu>
</items> </items>
<items xsi:type="form:Button">
<name>ПроверитьЦелостность</name>
<id>79</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ПроверитьЦелостностьРасширеннаяПодсказка</name>
<id>80</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>
<visible>true</visible> <visible>true</visible>
<enabled>true</enabled> <enabled>true</enabled>
<userVisible> <userVisible>
@@ -885,6 +911,24 @@
<currentRowUse>DontUse</currentRowUse> <currentRowUse>DontUse</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse> <selectedRowsUse>Auto</selectedRowsUse>
</formCommands> </formCommands>
<formCommands>
<name>ПроверитьЦелостность</name>
<title>
<key>ru</key>
<value>Проверить целостность</value>
</title>
<id>3</id>
<use>
<common>true</common>
</use>
<action xsi:type="form:FormCommandHandlerContainer">
<handler>
<name>ПроверитьЦелостность</name>
</handler>
</action>
<currentRowUse>Auto</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</formCommands>
<commandInterface> <commandInterface>
<navigationPanel/> <navigationPanel/>
<commandBar/> <commandBar/>
@@ -1,3 +1,4 @@
/////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2021, ООО 1С-Софт // Copyright (c) 2021, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются // Все права защищены. Эта программа и сопроводительные материалы предоставляются
@@ -42,6 +43,22 @@
КонецПроцедуры КонецПроцедуры
&НаКлиенте
Процедура ПроверитьЦелостность(Команда)
ТекущиеДанные = Элементы.Список.ТекущиеДанные;
Если НЕ СтандартныеПодсистемыКлиент.ЭтоЭлементДинамическогоСписка(ТекущиеДанные) Тогда
Возврат;
КонецЕсли;
ПараметрыОтчета = Новый Структура();
ПараметрыОтчета.Вставить("СформироватьПриОткрытии", Истина);
ПараметрыОтчета.Вставить("Отбор", Новый Структура("Том", ТекущиеДанные.Ссылка));
ОткрытьФорму("Отчет.ПроверкаЦелостностиТома.ФормаОбъекта", ПараметрыОтчета);
КонецПроцедуры
#КонецОбласти #КонецОбласти
#Область СлужебныеПроцедурыИФункции #Область СлужебныеПроцедурыИФункции
@@ -235,6 +235,22 @@
<fullTextSearch>Use</fullTextSearch> <fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory> <dataHistory>Use</dataHistory>
</attributes> </attributes>
<attributes uuid="ec966ef2-b291-4937-a164-5c2b461871f8">
<name>ВремяПоследнейОчисткиФайлов</name>
<synonym>
<key>ru</key>
<value>Время последней очистки файлов</value>
</synonym>
<type>
<types>Date</types>
<dateQualifiers/>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<forms uuid="db15f8eb-4736-4b47-9cee-3e6883f0888c"> <forms uuid="db15f8eb-4736-4b47-9cee-3e6883f0888c">
<name>ФормаЭлемента</name> <name>ФормаЭлемента</name>
<synonym> <synonym>
@@ -73,7 +73,7 @@
УстановитьДоступностьКомандСпискаЭП(); УстановитьДоступностьКомандСпискаЭП();
УстановитьДоступностьКомандСпискаШифрования(); УстановитьДоступностьКомандСпискаШифрования();
ПрочитатьСертификатыПодписей(); РаботаСФайламиСлужебныйКлиент.ПрочитатьСертификатыПодписей(ЭтотОбъект);
ОтображатьВкладкиДополнительныхДанных(); ОтображатьВкладкиДополнительныхДанных();
КонецПроцедуры КонецПроцедуры
@@ -1349,143 +1349,6 @@
КонецПроцедуры КонецПроцедуры
&НаКлиенте
Процедура ПрочитатьСертификатыПодписей()
Если ЭлектронныеПодписи.Количество() = 0 Тогда
Возврат;
КонецЕсли;
Если Не ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ЭлектроннаяПодпись") Тогда
Возврат;
КонецЕсли;
Контекст = Новый Структура;
МодульЭлектроннаяПодписьКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ЭлектроннаяПодписьКлиент");
Если МодульЭлектроннаяПодписьКлиент.ПроверятьЭлектронныеПодписиНаСервере() Тогда
Возврат;
КонецЕсли;
НачатьПодключениеРасширенияРаботыСКриптографией(Новый ОписаниеОповещения(
"ПрочитатьСертификатыПодписейПослеПодключенияРасширения", ЭтотОбъект, Контекст));
КонецПроцедуры
// Продолжение процедуры ПрочитатьСертификатыПодписей.
&НаКлиенте
Процедура ПрочитатьСертификатыПодписейПослеПодключенияРасширения(Подключено, Контекст) Экспорт
Если Не Подключено Тогда
Возврат;
КонецЕсли;
МодульЭлектроннаяПодписьКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ЭлектроннаяПодписьКлиент");
МодульЭлектроннаяПодписьКлиент.СоздатьМенеджерКриптографии(Новый ОписаниеОповещения(
"ПрочитатьСертификатыПодписейПослеСозданияМенеджераКриптографии", ЭтотОбъект, Контекст),
"ПолучениеСертификатов", Ложь);
КонецПроцедуры
// Продолжение процедуры ПрочитатьСертификатыПодписей.
&НаКлиенте
Процедура ПрочитатьСертификатыПодписейПослеСозданияМенеджераКриптографии(Результат, Контекст) Экспорт
Если ТипЗнч(Результат) <> Тип("МенеджерКриптографии") Тогда
Возврат;
КонецЕсли;
Контекст.Вставить("Индекс", -1);
Контекст.Вставить("МенеджерКриптографии", Результат);
ПрочитатьСертификатыПодписейЦиклНачало(Контекст);
КонецПроцедуры
// Продолжение процедуры ПрочитатьСертификатыПодписей.
//
// Параметры:
// Контекст - Структура
//
&НаКлиенте
Процедура ПрочитатьСертификатыПодписейЦиклНачало(Контекст)
Если ЭлектронныеПодписи.Количество() <= Контекст.Индекс + 1 Тогда
Возврат;
КонецЕсли;
Контекст.Индекс = Контекст.Индекс + 1;
Контекст.Вставить("СтрокаТаблицы", ЭлектронныеПодписи[Контекст.Индекс]);
Если ЗначениеЗаполнено(Контекст.СтрокаТаблицы.Отпечаток) Тогда
ПрочитатьСертификатыПодписейЦиклНачало(Контекст);
Возврат;
КонецЕсли;
// Подпись не была прочитана при записи объекта.
Подпись = ПолучитьИзВременногоХранилища(Контекст.СтрокаТаблицы.АдресПодписи);
Если Не ЗначениеЗаполнено(Подпись) Тогда
ПрочитатьСертификатыПодписейЦиклНачало(Контекст);
Возврат;
КонецЕсли;
Контекст.МенеджерКриптографии.НачатьПолучениеСертификатовИзПодписи(Новый ОписаниеОповещения(
"ПрочитатьСертификатыПодписейЦиклПослеПолученияСертификатовИзПодписи", ЭтотОбъект, Контекст,
"ПрочитатьСертификатыПодписейЦиклПослеОшибкиПолученияСертификатовИзПодписи", ЭтотОбъект),
Подпись);
КонецПроцедуры
// Продолжение процедуры ПрочитатьСертификатыПодписей.
&НаКлиенте
Процедура ПрочитатьСертификатыПодписейЦиклПослеОшибкиПолученияСертификатовИзПодписи(ИнформацияОбОшибке, СтандартнаяОбработка, Контекст) Экспорт
СтандартнаяОбработка = Ложь;
ПрочитатьСертификатыПодписейЦиклНачало(Контекст);
КонецПроцедуры
// Продолжение процедуры ПрочитатьСертификатыПодписей.
&НаКлиенте
Процедура ПрочитатьСертификатыПодписейЦиклПослеПолученияСертификатовИзПодписи(Сертификаты, Контекст) Экспорт
Если Сертификаты.Количество() = 0 Тогда
ПрочитатьСертификатыПодписейЦиклНачало(Контекст);
Возврат;
КонецЕсли;
Сертификат = Сертификаты[0];// СертификатКриптографии
Контекст.Вставить("Сертификат", Сертификат);
Сертификат.НачатьВыгрузку(Новый ОписаниеОповещения(
"ПрочитатьСертификатыПодписейЦиклПослеВыгрузкиСертификата", ЭтотОбъект, Контекст,
"ПрочитатьСертификатыПодписейЦиклПослеОшибкиВыгрузкиСертификата", ЭтотОбъект));
КонецПроцедуры
// Продолжение процедуры ПрочитатьСертификатыПодписей.
&НаКлиенте
Процедура ПрочитатьСертификатыПодписейЦиклПослеОшибкиВыгрузкиСертификата(ИнформацияОбОшибке, СтандартнаяОбработка, Контекст) Экспорт
СтандартнаяОбработка = Ложь;
ПрочитатьСертификатыПодписейЦиклНачало(Контекст);
КонецПроцедуры
// Продолжение процедуры ПрочитатьСертификатыПодписей.
&НаКлиенте
Процедура ПрочитатьСертификатыПодписейЦиклПослеВыгрузкиСертификата(ДанныеСертификата, Контекст) Экспорт
МодульЭлектроннаяПодписьКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ЭлектроннаяПодписьКлиент");
СтрокаТаблицы = Контекст.СтрокаТаблицы;
СтрокаТаблицы.Отпечаток = Base64Строка(Контекст.Сертификат.Отпечаток);
СтрокаТаблицы.АдресСертификата = ПоместитьВоВременноеХранилище(ДанныеСертификата, УникальныйИдентификатор);
СтрокаТаблицы.КомуВыданСертификат = МодульЭлектроннаяПодписьКлиент.ПредставлениеСубъекта(Контекст.Сертификат);
ПрочитатьСертификатыПодписейЦиклНачало(Контекст);
КонецПроцедуры
&НаКлиенте &НаКлиенте
Функция ЭтоНовый() Функция ЭтоНовый()
@@ -18,7 +18,8 @@
<ul><li>Вкладки могут включать и другие списки, например, список партнеров. <ul><li>Вкладки могут включать и другие списки, например, список партнеров.
</li> </li>
<li>Если в списке много элементов, можно использовать команду <strong>Найти</strong>. Можно работать со списком и использовать его возможности, вводить элементы. </li></ul></li> <li>Если в списке много элементов, можно использовать команду <strong>Найти</strong>. Можно работать со списком и использовать его возможности, вводить элементы. </li></ul></li>
<li><strong>Контакты по предмету -</strong> вкладка становится доступной, если в исходящем электронном письме заполнено поле <strong>Предмет</strong>. Программа автоматически подбирает контакты, связанные с предметом. Данная вкладка содержит список контактов, которые фигурируют в самом предмете, а также во всех <a href="DocumentJournal.Взаимодействия.Form.ФормаСписка/Help">документах взаимодействий</a>, где этот предмет указан.</li></ul><li>Двойной щелчок мыши по нужному контакту добавит запись о нем в правую часть адресной книги. Также можно использовать стрелки "<strong>&gt;</strong>" и "<strong>&lt;</strong>" или "<strong>&lt;&lt;</strong>" для добавления или удаления контактов.</li></ul></li> <li><strong>Контакты по предмету -</strong> вкладка становится доступной, если в исходящем электронном письме заполнено поле <strong>Предмет</strong>. Программа автоматически подбирает контакты, связанные с предметом. Данная вкладка содержит список контактов, которые фигурируют в самом предмете, а также во всех <a href="DocumentJournal.Взаимодействия.Form.ФормаСписка/Help">документах взаимодействий</a>, где этот предмет указан.</li></ul><li>Включите флажок в нижней части списка, для того чтобы показывать <b>Только контакты с адресами</b>. Применяется только к тем спискам, в которых есть колонка <b>Адрес</b>. Такая возможность может быть полезна, если в списках много контактов, при этом не все заполнены.</li>
<li>Двойной щелчок мыши по нужному контакту добавит запись о нем в правую часть адресной книги. Также можно использовать стрелки "<strong>&gt;</strong>" и "<strong>&lt;</strong>" или "<strong>&lt;&lt;</strong>" для добавления или удаления контактов.</li></ul></li>
<li>Правая часть содержит список контактов для добавления в исходящее электронное письмо. <li>Правая часть содержит список контактов для добавления в исходящее электронное письмо.
<ul><li>Список состоит из колонок: <ul><li>Список состоит из колонок:
<ul><li>В колонке <strong>Группа</strong> можно изменить поле письма, в которое будут добавлены контакты (<strong>Кому</strong>, <strong>Копии</strong>, <strong>Скрытые</strong>, <strong>Получатели ответа</strong>). По умолчанию установлена группа <strong>Кому</strong>. <ul><li>В колонке <strong>Группа</strong> можно изменить поле письма, в которое будут добавлены контакты (<strong>Кому</strong>, <strong>Копии</strong>, <strong>Скрытые</strong>, <strong>Получатели ответа</strong>). По умолчанию установлена группа <strong>Кому</strong>.
@@ -27,7 +28,7 @@
</li> </li>
<li>В колонке <strong>Представление</strong> проставляется наименование контакта. </li></ul></li> <li>В колонке <strong>Представление</strong> проставляется наименование контакта. </li></ul></li>
<li>С помощью контекстного меню правой части адресной книги нужные контакты можно <strong>Найти в списке</strong>, <strong>Найти по адресу</strong>, <strong>Найти по представлению</strong>, <strong>Выбрать адрес, указанный в контакте</strong> (поиск осуществляется в левой части адресной книги), а также разместить адреса в нужные группы. </li></ul></li> <li>С помощью контекстного меню правой части адресной книги нужные контакты можно <strong>Найти в списке</strong>, <strong>Найти по адресу</strong>, <strong>Найти по представлению</strong>, <strong>Выбрать адрес, указанный в контакте</strong> (поиск осуществляется в левой части адресной книги), а также разместить адреса в нужные группы. </li></ul></li>
<li>Если контакт не найден в программе, то его можно <strong>Добавить</strong> в список вручную, указав адрес электронной почты и представление контакта. Добавить строку в список можно также клавишей <strong>Ins</strong>. <li>Если контакт не найден в программе, то его можно вставить в правый список вручную с помощью кнопки <b>Добавить получателя</b>, указав адрес электронной почты и представление контакта. Добавить строку в список можно также клавишей <strong>Ins</strong>.
</li> </li>
<li>С помощью команд меню <strong>Еще</strong> можно <img src="StdPicture.Delete"></img> <strong>Удалить контакт</strong> из списка или поменять контакты местами. </li></ul><h3>Добавление контактов в исходящее электронное письмо</h3> <li>С помощью команд меню <strong>Еще</strong> можно <img src="StdPicture.Delete"></img> <strong>Удалить контакт</strong> из списка или поменять контакты местами. </li></ul><h3>Добавление контактов в исходящее электронное письмо</h3>
<ul><li>Для того чтобы добавить контакт в соответствующее поле исходящего письма, выделите нужную строку, нажмите кнопку <strong>Выбрать</strong>. Также можно воспользоваться двойным щелчком мыши. <ul><li>Для того чтобы добавить контакт в соответствующее поле исходящего письма, выделите нужную строку, нажмите кнопку <strong>Выбрать</strong>. Также можно воспользоваться двойным щелчком мыши.
@@ -0,0 +1,16 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta http-equiv="content-type" content="text/html;charset=utf-8"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link></head><body>Предназначена для вызова дополнительных отчетов и обработок из разделов программы.
<div>Размещается обычно в панелях действий <b>Отчеты</b> и <b>Сервис</b> разделов программы.<br><div>С помощью команд из списка можно:</div>
<div>
<ul><li>выполнять обработку произвольных данных программы;</li>
<li>формировать произвольные отчеты, не привязанные к конкретным спискам и документам.</li></ul><h3>Выполнение команд</h3></div>
<div>
<ul><li>Выберите команду, нажмите <b>Выполнить</b>.</li>
<li>Также можно выполнить команду двойным щелчком мыши.</li></ul></div>
<h3>Настройка списка команд</h3>
<div>
<ul><li>Для просмотра доступных в списке дополнительных отчетов и обработок перейдите по <a href="CommonForm.НастройкаМоихОтчетовИОбработок/Help">ссылке</a> <b>Настроить список</b>.</li>
<li>В списке можно включать и выключать команды, предусмотренные при настройке дополнительных отчетов и обработок, с помощью флажков.</li></ul></div>
<h3>Как добавляются команды в список команд</h3>
<div>Список команд зависит от настроек глобальных <a href="Catalog.ДополнительныеОтчетыИОбработки/Help">дополнительных отчетов и обработок</a>:<br><ul><li>Настройка текста и состава команд производится разработчиком при создании дополнительного отчета или обработки.</li>
<li>Для того чтобы можно было с помощью данных команд вызвать <a href="Catalog.ДополнительныеОтчетыИОбработки.Form.ФормаЭлемента/Help">дополнительный отчет или обработку</a>, администратор программы при настройке дополнительного отчета или обработки должен сначала включить имя данного пользователя в список для быстрого доступа. Иначе список доступных по этим командам дополнительных отчетов и обработок может быть пустым.</li></ul></div></div>
<div><br></div></body></html>
@@ -5,6 +5,11 @@
<key>ru</key> <key>ru</key>
<value>Дополнительные отчеты и обработки</value> <value>Дополнительные отчеты и обработки</value>
</synonym> </synonym>
<help>
<pages>
<lang>ru</lang>
</pages>
</help>
<usePurposes>PersonalComputer</usePurposes> <usePurposes>PersonalComputer</usePurposes>
<usePurposes>MobileDevice</usePurposes> <usePurposes>MobileDevice</usePurposes>
</mdclass:CommonForm> </mdclass:CommonForm>
@@ -0,0 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta http-equiv="content-type" content="text/html;charset=utf-8"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link></head><body>Предназначен для просмотра и управления доступными командами текущим пользователем. 
<div><br></div>
<div>В списке можно включать или выключать предусмотренные команды с помощью флажков.
<div><br><div>Для того чтобы в списке были доступны команды, администратор программы при настройке <a href="Catalog.ДополнительныеОтчетыИОбработки.Form.ФормаЭлемента/Help">дополнительного отчета или обработки</a> должен сначала включить имя данного пользователя в список для быстрого доступа, иначе список доступных команд может быть пустым.  При этом состав и текст команд в дополнительных отчетах и обработках определяется разработчиком.</div></div></div></body></html>
@@ -5,6 +5,11 @@
<key>ru</key> <key>ru</key>
<value>Настройка моих отчетов и обработок</value> <value>Настройка моих отчетов и обработок</value>
</synonym> </synonym>
<help>
<pages>
<lang>ru</lang>
</pages>
</help>
<usePurposes>PersonalComputer</usePurposes> <usePurposes>PersonalComputer</usePurposes>
<usePurposes>MobileDevice</usePurposes> <usePurposes>MobileDevice</usePurposes>
</mdclass:CommonForm> </mdclass:CommonForm>
@@ -41,16 +41,14 @@
<li> <li>
<div><strong>Получены данные для сопоставления</strong> - для анализа и сопоставления полученных данных нажмите кнопку <strong>Запустить синхронизацию</strong>.</div></li></ul></li></ul><h3 style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto">Настройка синхронизации данных</h3> <div><strong>Получены данные для сопоставления</strong> - для анализа и сопоставления полученных данных нажмите кнопку <strong>Запустить синхронизацию</strong>.</div></li></ul></li></ul><h3 style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto">Настройка синхронизации данных</h3>
<ul><li> <ul><li>
<div style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto">Для настройки новой синхронизации данных с другой программой выберите соответствующую команду из подменю <strong>Новая синхронизация данных</strong>. Откроется <a href="DataProcessor.ПомощникСозданияОбменаДанными/Help">настройка синхронизации данных</a>.</div></li></ul><h3 style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto">Просмотр информации о настройке</h3> <div style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto">Для настройки новой синхронизации данных с другой программой или создания распределенной базы нажмите кнопку <b>Создать</b>, выберите команду из подменю <strong>Новая синхронизация данных</strong>. Откроется <a href="DataProcessor.ПомощникСозданияОбменаДанными/Help">настройка синхронизации данных</a>.</div></li></ul><h3 style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto">Синхронизация данных</h3>
<ul><li> <ul><li>
<div style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto">Для того чтобы получить информацию об особенностях ведения учета в программах, между которыми настроена синхронизация данных и получить рекомендации по настройке синхронизации данных, нажмите <strong>Еще - Подробнее о синхронизации данных с этой программой</strong>. </div></li></ul><h3 style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto">Синхронизация данных</h3> <div style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto">Выделите нужную настройку, нажмите <img src="CommonPicture.СинхронизацияДанныхВыполнение"></img> <strong>Синхронизировать</strong>, для того чтобы начать синхронизацию данных. </div>
<ul><li>
<div style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto">Выделите нужную настройку, нажмите <img src="CommonPicture.СинхронизацияДанныхВыполнение"></img> <strong>Запустить синхронизацию</strong>, для того чтобы начать синхронизацию данных. </div>
</li> </li>
<li> <li>
<div style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto">Для синхронизации данных между двумя программами запускается <a href="DataProcessor.ПомощникИнтерактивногоОбменаДанными/Help">сопоставление одинаковых данных</a>. Такая процедура полезна в тех случаях, когда в обеих программах по каким-то причинам были независимо друг от друга введены одни и те же данные. Для снижения вероятности таких ситуаций можно настроить частую синхронизацию данных по расписанию.</div></li></ul><h3 style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto">Изменение синхронизации данных</h3> <div style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto">Для синхронизации данных между двумя программами с помощью кнопки <img src="CommonPicture.СинхронизацияДанныхИнтерактивноеВыполнение" width="16" height="16"></img> или команды <b>Еще - Синхронизировать с дополнительными параметрами </b>запускается <a href="DataProcessor.ПомощникИнтерактивногоОбменаДанными/Help">сопоставление одинаковых данных</a>.  Такая процедура полезна в тех случаях, когда в обеих программах по каким-то причинам были независимо друг от друга введены одни и те же данные. Для снижения вероятности таких ситуаций можно настроить частую синхронизацию данных по расписанию. </div></li></ul><h3 style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto">Изменение синхронизации данных</h3>
<ul><li> <ul><li>
<div style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto">Для того чтобы изменить или продолжить настройку синхронизации данных, нажмите кнопку <strong>Настроить</strong>.</div> <div style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto">Для того чтобы изменить или продолжить настройку синхронизации данных, нажмите кнопку <strong>Изменить настройки</strong>.</div>
</li> </li>
<li> <li>
<div style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto">Также можно воспользоваться двойным щелчком мыши.</div></li></ul><h3 style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto">Просмотр состава отправляемых данных</h3> <div style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto">Также можно воспользоваться двойным щелчком мыши.</div></li></ul><h3 style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto">Просмотр состава отправляемых данных</h3>
@@ -59,10 +57,7 @@
<ul><li> <ul><li>
<div style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto">Выполните команду меню <strong>Еще - Выгрузка данных для сопоставления</strong>. </div></li></ul><h3 style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto">Настройка синхронизации по расписанию</h3> <div style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto">Выполните команду меню <strong>Еще - Выгрузка данных для сопоставления</strong>. </div></li></ul><h3 style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto">Настройка синхронизации по расписанию</h3>
<ul><li> <ul><li>
<div style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto">С помощью команды <strong>Еще</strong> - <strong>Сценарии синхронизации данных </strong>можно <img src="StdPicture.ScheduledJob" width="16" height="16"></img> <strong>Настроить</strong> синхронизацию данных по <a href="Catalog.СценарииОбменовДанными/Help">заданному расписанию</a>. В этом случае в клиент-серверном режиме работы синхронизация данных будет выполняться в фоне, с помощью регламентного задания <strong>Синхронизация данных</strong>, а в файловом режиме дополнительно потребуется запустить отдельный сеанс для выполнения <a href="DataProcessor.РегламентныеИФоновыеЗадания/Help">регламентных заданий</a>.</div> <div style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto">С помощью ссылки в нижней части окна <b>Синхронизация по расписанию</b><strong> </strong>можно <img src="StdPicture.ScheduledJob" width="16" height="16"></img> настроить синхронизацию данных по <a href="Catalog.СценарииОбменовДанными/Help">заданному расписанию</a>. В этом случае в клиент-серверном режиме работы синхронизация данных будет выполняться в фоне, с помощью регламентного задания <strong>Синхронизация данных</strong>, а в файловом режиме дополнительно потребуется запустить отдельный сеанс для выполнения <a href="DataProcessor.РегламентныеИФоновыеЗадания/Help">регламентных заданий</a>.</div></li></ul><h3 style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto">Просмотр журнала регистрации</h3>
</li>
<li>
<div style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto">Также команду можно найти в контекстном меню по правой кнопке мыши.</div></li></ul><h3 style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto">Просмотр журнала регистрации</h3>
<ul><li> <ul><li>
<div style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto">С помощью команд меню <strong>Еще - </strong><strong>События отправки данных</strong> или <strong>События получения данных</strong> можно подробно узнать, как проходила синхронизация данных, из <a href="DataProcessor.ЖурналРегистрации/Help">журнала регистрации</a> программы, отфильтрованного по событиям синхронизации, а также просмотреть каждое <a href="DataProcessor.ЖурналРегистрации.Form.Событие/Help">событие</a>.</div></li></ul><h3 style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto">Замена правил для синхронизации из внешнего файла</h3> <div style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto">С помощью команд меню <strong>Еще - </strong><strong>События отправки данных</strong> или <strong>События получения данных</strong> можно подробно узнать, как проходила синхронизация данных, из <a href="DataProcessor.ЖурналРегистрации/Help">журнала регистрации</a> программы, отфильтрованного по событиям синхронизации, а также просмотреть каждое <a href="DataProcessor.ЖурналРегистрации.Form.Событие/Help">событие</a>.</div></li></ul><h3 style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto">Замена правил для синхронизации из внешнего файла</h3>
<ul dir="ltr"><li> <ul dir="ltr"><li>
@@ -75,7 +70,7 @@
</li> </li>
<li style="MARGIN-RIGHT: 0px">Нажать на кнопку <strong>Записать и закрыть</strong>. Загруженные правила будут применены немедленно.</li></ul></li></ul><h3 style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto">Удаление настройки синхронизации</h3> <li style="MARGIN-RIGHT: 0px">Нажать на кнопку <strong>Записать и закрыть</strong>. Загруженные правила будут применены немедленно.</li></ul></li></ul><h3 style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto">Удаление настройки синхронизации</h3>
<ul><li> <ul><li>
<div style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto">Выделите настройку, нажмите <strong>Еще - <img src="StdPicture.Delete" width="16" height="16"></img> Удалить настройку синхронизации.</strong> </div> <div style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto">Выделите настройку, нажмите <strong>Еще - <img src="StdPicture.Delete" width="16" height="16"></img> Удалить настройку.</strong> </div>
</li> </li>
<li> <li>
<div style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><strong>Внимание! Настройка будет удалена безвозвратно.</strong></div></li></ul><h3 style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto">Действия при восстановлении информационной базы из резервной копии</h3> <div style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><strong>Внимание! Настройка будет удалена безвозвратно.</strong></div></li></ul><h3 style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto">Действия при восстановлении информационной базы из резервной копии</h3>
@@ -2,12 +2,16 @@
<p>Описание обновлений включает в себя список изменений в последней версии программы, а также историю изменений в предыдущих версиях. </p> <p>Описание обновлений включает в себя список изменений в последней версии программы, а также историю изменений в предыдущих версиях. </p>
<p>Выводится однократно после завершения обновления на новую версию. Описание обновлений можно просмотреть позднее по команде <strong>Описание изменений программы </strong>в <font color="#000000">панели <strong>Информация</strong> в разделе <strong>Главное</strong>. </font></p> <p>Выводится однократно после завершения обновления на новую версию. Описание обновлений можно просмотреть позднее по команде <strong>Описание изменений программы </strong>в <font color="#000000">панели <strong>Информация</strong> в разделе <strong>Главное</strong>. </font></p>
<h3>Доступные действия</h3> <h3>Доступные действия</h3>
<ul><li>Сведения о последних изменениях и улучшениях в программе можно сохранить в файл. Для этого нажмите <strong>Сохранить как</strong>, укажите путь к файлу на компьютере. Также можно их распечатать с помощью соответствующей кнопки. <ul><li>Сведения о последних изменениях и улучшениях в программе можно сохранить в файл. Для этого нажмите <strong>Сохранить как</strong>, укажите путь к файлу на компьютере. Также можно их распечатать с помощью кнопки <b>Печать</b>.
</li><li>Для удобства навигации по тексту можно свернуть или <img src="StdPicture.ExpandAll"></img> <strong>Развернуть все группы</strong> (заголовки). </li>
</li><li>Также предусмотрена команда поиска, с помощью которой можно быстро найти нужную информацию о новой версии.</li></ul><h3>Информация о ходе обновления версии ИБ</h3> <li>Для удобства навигации по тексту можно свернуть или <img src="StdPicture.ExpandAll"></img> <strong>Развернуть все группы</strong> (заголовки).
</li>
<li>Также предусмотрена команда поиска, с помощью которой можно быстро найти нужную информацию о новой версии.</li></ul><h3>Информация о ходе обновления версии ИБ</h3>
<ul><li>Если в программе после обновления версии еще проводится обработка данных, то для всех <a href="Catalog.Пользователи/Help">пользователей</a> выводится предупреждение <strong><img src="CommonPicture.Предупреждение"></img> Выполняются дополнительные процедуры обработки данных</strong>. В это время работа в программе временно ограничена, так как еще не завершен переход на новую версию.</li></ul><h3>Возможности для администратора</h3> <ul><li>Если в программе после обновления версии еще проводится обработка данных, то для всех <a href="Catalog.Пользователи/Help">пользователей</a> выводится предупреждение <strong><img src="CommonPicture.Предупреждение"></img> Выполняются дополнительные процедуры обработки данных</strong>. В это время работа в программе временно ограничена, так как еще не завершен переход на новую версию.</li></ul><h3>Возможности для администратора</h3>
<ul><li>Администратор может ознакомиться со списком дополнительных инструкций, которые рекомендуется выполнить после обязательной части процесса <a href="DataProcessor.РезультатыОбновленияПрограммы/Help">обновления ИБ</a>. Перейти к выполнению инструкций можно с помощью ссылок, расположенных в тексте описания новой версии. <ul><li>Администратор может ознакомиться со списком дополнительных инструкций, которые рекомендуется выполнить после обязательной части процесса <a href="DataProcessor.РезультатыОбновленияПрограммы/Help">обновления ИБ</a>. Перейти к выполнению инструкций можно с помощью ссылок, расположенных в тексте описания новой версии.
</li><li>По ссылке <strong>Выполняются дополнительные процедуры обработки данных</strong> перейдите, для того чтобы узнать о <a href="DataProcessor.РезультатыОбновленияПрограммы.Form.ИндикацияХодаОтложенногоОбновленияИБ/Help">ходе дополнительной обработки данных</a>. </li>
</li><li>Перейдите по ссылке <strong>Техническая информация о результатах обновления</strong>, для того чтобы просмотреть события в <a href="DataProcessor.ЖурналРегистрации/Help">журнале регистрации</a>, возникшие в процессе обновления.</li></ul><h3>См. также:</h3> <li>По ссылке <strong>Выполняются дополнительные процедуры обработки данных</strong> перейдите, для того чтобы узнать о <a href="DataProcessor.РезультатыОбновленияПрограммы.Form.ИндикацияХодаОтложенногоОбновленияИБ/Help">ходе дополнительной обработки данных</a>.
</li>
<li>Перейдите по ссылке <strong>Техническая информация о результатах обновления</strong>, для того чтобы просмотреть события в <a href="DataProcessor.ЖурналРегистрации/Help">журнале регистрации</a>, возникшие в процессе обновления.</li></ul><h3>См. также:</h3>
<ul><li> <ul><li>
<div><a href="v8help://frame/form_common">Работа с формами.</a></div></li></ul></body></html> <div><a href="v8help://frame/form_common">Работа с формами.</a></div></li></ul></body></html>
@@ -511,6 +511,7 @@
| И (ГруппыДоступаПользователи.Пользователь = &Пользователь) | И (ГруппыДоступаПользователи.Пользователь = &Пользователь)
|ГДЕ |ГДЕ
| НЕ Профили.ПометкаУдаления | НЕ Профили.ПометкаУдаления
| И НЕ Профили.ЭтоГруппа
| И НЕ(&ОтборПрофилейТолькоТекущегоПользователя = ИСТИНА | И НЕ(&ОтборПрофилейТолькоТекущегоПользователя = ИСТИНА
| И ГруппыДоступаПользователи.Ссылка ЕСТЬ NULL) | И ГруппыДоступаПользователи.Ссылка ЕСТЬ NULL)
|; |;
@@ -666,6 +667,7 @@
| И (ГруппыДоступаПользователи.Пользователь = &Пользователь) | И (ГруппыДоступаПользователи.Пользователь = &Пользователь)
|ГДЕ |ГДЕ
| НЕ Профили.ПометкаУдаления | НЕ Профили.ПометкаУдаления
| И НЕ Профили.ЭтоГруппа
|; |;
| |
|//////////////////////////////////////////////////////////////////////////////// |////////////////////////////////////////////////////////////////////////////////
@@ -1,7 +1,21 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html;charset=utf-8" http-equiv="content-type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 11.00.10570.1001"></meta></head><body> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html;charset=utf-8" http-equiv="content-type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 11.00.10570.1001"></meta></head><body>
<p>Предназначен для управления исправлениями (патчами).</p> <p>Предназначен для управления исправлениями (патчами).</p>
<p>Открывается с помощью ссылки <strong>Установленные исправления (патчи)</strong> в разделе <strong>Администрирование - Обновление программы</strong>.</p> <p>Открывается с помощью ссылки <strong>Установленные исправления (патчи)</strong> в разделе <strong>Администрирование - Обновление программы</strong>.</p>
<h3>Установка исправлений</h3> <p>Исправление (патч) позволяет оперативно исправлять ошибки в программе, не дожидаясь следующего исправительного релиза. Установка патчей также не требует обязательного завершения сеансов пользователей, работающих с программой. Для применения исправлений достаточно перезапустить программу в удобный момент времени.</p>
<ul><li>Нажмите кнопку <strong>Установить исправление</strong>, для того чтобы открыть помощник <a href="DataProcessor.УстановкаОбновлений/Help">Установка обновлений</a>. Следуйте указаниям программы.</li></ul><h3>Удаление исправлений</h3> <p><span style="font-size: 13.4399995803833px; font-weight: bold;">Автоматическая установка патчей</span></p>
<ul><li>Нажмите кнопку <strong>Удалить исправление</strong>, если установленное исправление (патч) по каким-либо причинам не устраивает.</li></ul><h3>См. также:</h3> <p></p>
<ul><li><a href="v8help://frame/form_common">Работа с формами</a>.</li></ul></body></html> <ul><li>Загрузка и установка патчей выполняется <a href="DataProcessor.ПанельАдминистрированияБСП.Form.ИнтернетПоддержкаИСервисы/Help">автоматически</a> при наличии подписки 1С:ИТС  и доступа к сети Интернет. Это рекомендуемый режим работы. </li>
<li>Для настройки автоматической загрузки необходимо перейти в раздел <b>Администрирование - Интернет-поддержка и сервисы - Обновление программы</b> и включить флажок <b>Загружать и устанавливать исправления (патчи) автоматически</b>. Потребуется подключение Интернет-поддержки.</li></ul><p></p>
<p><span style="font-size: 13.4399995803833px; font-weight: bold;">Установка исправлений вручную</span></p>
<p>Если на компьютере не доступен Интернет, но есть возможность скачать патч с 1С:ИТС:</p>
<ul><li>На сайте 1С:ИТС можно прочитать, какую ошибку каждый патч исправляет.</li>
<li>Загрузить архив с патчами с сайта для интересующей версии программы.</li>
<li>Распаковать загруженный архив в произвольный каталог на компьютере.</li>
<li>В данном списке нажать кнопку <strong>Установить исправление</strong>, для того чтобы открыть помощник <a href="DataProcessor.УстановкаОбновлений/Help">Установка обновлений</a>. Следуйте указаниям программы, при выборе файла обновления или исправления укажите ранее распакованные файлы.</li>
<li>После установки патчей перезапустить сеанс, для того чтобы они применились и появились в данном списке.</li></ul><h3>Удаление исправлений</h3>
<ul><li>Нажмите кнопку <strong>Удалить исправление</strong>, если установленное исправление (патч) по каким-либо причинам не устраивает.</li>
</ul><h3>Сохранение на компьютер</h3>
<div>
<ul><li>С помощью команды <b>Еще - Сохранить как</b> можно выгрузить установленные исправления в папку на компьютере.</li></ul><h3>См. также:</h3>
<ul><li><a href="v8help://frame/form_common">Работа с формами</a>.</li></ul></div></body></html>
@@ -4816,7 +4816,7 @@
КонецЕсли; КонецЕсли;
Если СтрНачинаетсяС(ВРег(Параметр.Имя), "ОТБОР.") Тогда Если СтрНачинаетсяС(ВРег(Параметр.Имя), "ОТБОР.") Тогда
ПараметрыЗаполнения.Отбор.Вставить(Сред(Параметр.Имя, 7), Параметр.Значение); ПараметрыЗаполнения.Отбор.Вставить(СтрРазделить(Параметр.Имя, ".")[1], Параметр.Значение);
Иначе Иначе
ПараметрыЗаполнения.Вставить(Параметр.Имя, Параметр.Значение); ПараметрыЗаполнения.Вставить(Параметр.Имя, Параметр.Значение);
КонецЕсли; КонецЕсли;
@@ -1836,6 +1836,15 @@
&НаКлиенте &НаКлиенте
Функция ПодходящиеЗначенияУниверсальногоПоиска(Запрос) Функция ПодходящиеЗначенияУниверсальногоПоиска(Запрос)
ИспользуемыеПоляПоискаПоТипам = НастройкиОтчета.ИспользуемыеПоляУниверсальногоПоискаПоТипам;
Если ВариантМодифицирован
Или ИспользуемыеПоляПоискаПоТипам.Количество() = 0 Тогда
НайтиПоляУниверсальногоПоискаПоТипам(Отчет.КомпоновщикНастроек, НастройкиОтчета);
ИспользуемыеПоляПоискаПоТипам = НастройкиОтчета.ИспользуемыеПоляУниверсальногоПоискаПоТипам;
КонецЕсли;
ПодходящиеЗначения = Новый СписокЗначений; ПодходящиеЗначения = Новый СписокЗначений;
МаксимальноеКоличествоПодходящихЗначений = 50; МаксимальноеКоличествоПодходящихЗначений = 50;
@@ -1847,8 +1856,6 @@
ОформитьПолеУниверсальногоПоиска(ПараметрыПоиска.УправляющиеСимволы); ОформитьПолеУниверсальногоПоиска(ПараметрыПоиска.УправляющиеСимволы);
ИспользуемыеПоляПоискаПоТипам = НастройкиОтчета.ИспользуемыеПоляУниверсальногоПоискаПоТипам;
Если ИспользуемыеПоляПоискаПоТипам.Количество() = 0 Тогда Если ИспользуемыеПоляПоискаПоТипам.Количество() = 0 Тогда
Возврат ПодходящиеЗначения; Возврат ПодходящиеЗначения;
КонецЕсли; КонецЕсли;
@@ -2504,15 +2511,15 @@
КонецФункции КонецФункции
&НаСервере &НаСервереБезКонтекста
Процедура НайтиПоляУниверсальногоПоискаПоТипам() Процедура НайтиПоляУниверсальногоПоискаПоТипам(КомпоновщикНастроек, НастройкиОтчета)
ИспользуемыеПоляПоискаПоТипам = Новый Соответствие; ИспользуемыеПоляПоискаПоТипам = Новый Соответствие;
Коллекции = Новый Массив; Коллекции = Новый Массив;
Коллекции.Добавить(ОписаниеПараметровОтчета()); Коллекции.Добавить(ОписаниеПараметровОтчета(КомпоновщикНастроек));
Коллекции.Добавить(ОписаниеОтборовОтчета()); Коллекции.Добавить(ОписаниеОтборовОтчета(КомпоновщикНастроек));
Коллекции.Добавить(ОписаниеПолейОтчета()); Коллекции.Добавить(ОписаниеПолейОтчета(КомпоновщикНастроек));
Для Каждого Коллекция Из Коллекции Цикл Для Каждого Коллекция Из Коллекции Цикл
@@ -2541,12 +2548,12 @@
КонецПроцедуры КонецПроцедуры
&НаСервере &НаСервереБезКонтекста
Функция ОписаниеПараметровОтчета() Функция ОписаниеПараметровОтчета(КомпоновщикНастроек)
ОписаниеПараметров = Новый Массив; ОписаниеПараметров = Новый Массив;
Настройки = Отчет.КомпоновщикНастроек.Настройки; Настройки = КомпоновщикНастроек.Настройки;
ПоляПараметровДанных = Настройки.ДоступныеПоляПараметровДанных.Элементы; ПоляПараметровДанных = Настройки.ДоступныеПоляПараметровДанных.Элементы;
ПараметрыДанных = Настройки.ПараметрыДанных; ПараметрыДанных = Настройки.ПараметрыДанных;
@@ -2584,14 +2591,14 @@
КонецФункции КонецФункции
&НаСервере &НаСервереБезКонтекста
Функция ОписаниеОтборовОтчета(Отбор = Неопределено, ОписаниеОтборов = Неопределено) Функция ОписаниеОтборовОтчета(КомпоновщикНастроек, Отбор = Неопределено, ОписаниеОтборов = Неопределено)
Если ОписаниеОтборов = Неопределено Тогда Если ОписаниеОтборов = Неопределено Тогда
ОписаниеОтборов = Новый Массив; ОписаниеОтборов = Новый Массив;
КонецЕсли; КонецЕсли;
Настройки = Отчет.КомпоновщикНастроек.Настройки; Настройки = КомпоновщикНастроек.Настройки;
Если Отбор = Неопределено Тогда Если Отбор = Неопределено Тогда
Отбор = Настройки.Отбор; Отбор = Настройки.Отбор;
@@ -2601,7 +2608,7 @@
Если ТипЗнч(Элемент) = Тип("ГруппаЭлементовОтбораКомпоновкиДанных") Тогда Если ТипЗнч(Элемент) = Тип("ГруппаЭлементовОтбораКомпоновкиДанных") Тогда
ОписаниеОтборовОтчета(Элемент, ОписаниеОтборов); ОписаниеОтборовОтчета(КомпоновщикНастроек, Элемент, ОписаниеОтборов);
Иначе Иначе
@@ -2619,19 +2626,18 @@
КонецФункции КонецФункции
&НаСервере &НаСервереБезКонтекста
Функция ОписаниеПолейОтчета() Функция ОписаниеПолейОтчета(КомпоновщикНастроек)
ОписаниеПолей = Новый Массив; ОписаниеПолей = Новый Массив;
ИндексСтруктурыОтчета = ВариантыОтчетовСлужебный.ИндексСтруктурыОтчета(ЭтотОбъект); ИндексСтруктурыОтчета = ВариантыОтчетовСлужебный.ИндексСтруктурыОтчетаБезКонтекста(КомпоновщикНастроек);
ИндексПолейОтчета = ИндексСтруктурыОтчета.Скопировать(, "Поле"); ИндексПолейОтчета = ИндексСтруктурыОтчета.Скопировать(, "Поле");
ИндексПолейОтчета.Свернуть("Поле"); ИндексПолейОтчета.Свернуть("Поле");
ПоляОтчета = ИндексПолейОтчета.ВыгрузитьКолонку("Поле"); ПоляОтчета = ИндексПолейОтчета.ВыгрузитьКолонку("Поле");
Настройки = КомпоновщикНастроек.Настройки;
Настройки = Отчет.КомпоновщикНастроек.Настройки;
Для Каждого ПолеОтчета Из ПоляОтчета Цикл Для Каждого ПолеОтчета Из ПоляОтчета Цикл
@@ -3507,7 +3513,8 @@
КлючТекущегоВарианта = ОбщегоНазначения.ХранилищеСистемныхНастроекЗагрузить(КлючОбъекта, ""); КлючТекущегоВарианта = ОбщегоНазначения.ХранилищеСистемныхНастроекЗагрузить(КлючОбъекта, "");
Если Не ЗначениеЗаполнено(КлючТекущегоВарианта) Тогда Если Не ЗначениеЗаполнено(КлючТекущегоВарианта)
Или (ЗначениеЗаполнено(Параметры.КлючВарианта) И КлючТекущегоВарианта <> Параметры.КлючВарианта) Тогда
Если ЗначениеЗаполнено(Параметры.КлючВарианта) Тогда Если ЗначениеЗаполнено(Параметры.КлючВарианта) Тогда
КлючТекущегоВарианта = Параметры.КлючВарианта; КлючТекущегоВарианта = Параметры.КлючВарианта;
@@ -3684,7 +3691,6 @@
ОтчетыСервер.ВосстановитьЗначенияОтборов(ЭтотОбъект); ОтчетыСервер.ВосстановитьЗначенияОтборов(ЭтотОбъект);
НайтиПоляУниверсальногоПоискаПоТипам();
УстановитьВидимостьДоступность(); УстановитьВидимостьДоступность();
КонецПроцедуры КонецПроцедуры
@@ -206,7 +206,7 @@
Результат = АдресныйКлассификаторСлужебный.СведенияОЗагруженномРегионе(); Результат = АдресныйКлассификаторСлужебный.СведенияОЗагруженномРегионе();
СведенияОРегионе = АдресныйКлассификаторСлужебный.НаименованиеИСокращение(НаименованиеРегиона); СведенияОРегионе = АдресныйКлассификаторСлужебный.НаименованиеИСокращение(НаименованиеРегиона, Истина);
РезультатЗапроса = АдресныйКлассификаторСлужебный.АктуальныеДанныеОРегионе(СведенияОРегионе); РезультатЗапроса = АдресныйКлассификаторСлужебный.АктуальныеДанныеОРегионе(СведенияОРегионе);
Если РезультатЗапроса.Пустой() Тогда Если РезультатЗапроса.Пустой() Тогда
@@ -1714,7 +1714,8 @@
| |
|//////////////////////////////////////////////////////////////////////////////// |////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ |ВЫБРАТЬ
| Классификатор.Наименование + "" "" + Классификатор.Сокращение КАК Представление, | Классификатор.Наименование КАК Наименование,
| Классификатор.Сокращение КАК Сокращение,
| Классификатор.КодСубъектаРФ КАК КодСубъектаРФ, | Классификатор.КодСубъектаРФ КАК КодСубъектаРФ,
| Классификатор.ОКТМО КАК ОКТМО, | Классификатор.ОКТМО КАК ОКТМО,
| ЗагруженныеВерсииАдресныхСведений.Версия КАК Версия, | ЗагруженныеВерсииАдресныхСведений.Версия КАК Версия,
@@ -1773,10 +1774,14 @@
ЗагруженныеСведения.Индексы.Добавить("КодСубъектаРФ"); ЗагруженныеСведения.Индексы.Добавить("КодСубъектаРФ");
ЗагруженныеСведения.Индексы.Добавить("Загружено"); ЗагруженныеСведения.Индексы.Добавить("Загружено");
ЗагруженныеСведения.Индексы.Добавить("ОКТМО"); ЗагруженныеСведения.Индексы.Добавить("ОКТМО");
ЗагруженныеСведения.Колонки.Добавить("Представление", ОбщегоНазначения.ОписаниеТипаСтрока(250));
// Корректируем идентификаторы из-за особенностей платформы по передаче уникального // Корректируем идентификаторы из-за особенностей платформы по передаче уникального
// идентификатора в таблицу-параметр запроса. // идентификатора в таблицу-параметр запроса.
// Формируем наименования регионов по правилам их написания.
Для Каждого Строка Из ЗагруженныеСведения Цикл Для Каждого Строка Из ЗагруженныеСведения Цикл
Строка.Представление = СоединитьНаименованиеИТипАдресногоОбъекта(Строка.Наименование, Строка.Сокращение, Истина);
Если Не ЗначениеЗаполнено(Строка.Идентификатор) Тогда Если Не ЗначениеЗаполнено(Строка.Идентификатор) Тогда
СтрокаКлассификатора = Классификатор.Найти(Строка.КодСубъектаРФ, "КодСубъектаРФ"); СтрокаКлассификатора = Классификатор.Найти(Строка.КодСубъектаРФ, "КодСубъектаРФ");
Если СтрокаКлассификатора <> Неопределено Тогда Если СтрокаКлассификатора <> Неопределено Тогда
@@ -2631,6 +2636,11 @@
КонецЕсли; КонецЕсли;
Если ЭтоРегион Тогда Если ЭтоРегион Тогда
Если НаименованиеРегионаБезТипа(Наименование) Тогда
Возврат Наименование;
КонецЕсли;
Возврат Наименование + " " + ТипАдресногоОбъекта; Возврат Наименование + " " + ТипАдресногоОбъекта;
КонецЕсли; КонецЕсли;
@@ -3623,6 +3633,9 @@
Функция АктуальныеДанныеОРегионе(Знач СведенияОРегионе) Экспорт Функция АктуальныеДанныеОРегионе(Знач СведенияОРегионе) Экспорт
Запрос = Новый Запрос; Запрос = Новый Запрос;
Если ЗначениеЗаполнено(СведенияОРегионе.Сокращение) Тогда
Запрос.Текст = Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1 "ВЫБРАТЬ ПЕРВЫЕ 1
| АдресныеОбъекты.КодСубъектаРФ КАК КодСубъектаРФ, | АдресныеОбъекты.КодСубъектаРФ КАК КодСубъектаРФ,
@@ -3640,9 +3653,30 @@
| АдресныеОбъекты.Наименование = &Наименование | АдресныеОбъекты.Наименование = &Наименование
| И АдресныеОбъекты.Сокращение = &Сокращение | И АдресныеОбъекты.Сокращение = &Сокращение
| И АдресныеОбъекты.Уровень = 1"; | И АдресныеОбъекты.Уровень = 1";
Запрос.УстановитьПараметр("Сокращение", СведенияОРегионе.Сокращение);
Иначе
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| АдресныеОбъекты.КодСубъектаРФ КАК КодСубъектаРФ,
| ВЫБОР
| КОГДА НЕ ЗагруженныеДанные.Идентификатор ЕСТЬ NULL
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК РегионЗагружен
|ИЗ
| РегистрСведений.АдресныеОбъекты КАК АдресныеОбъекты
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АдресныеОбъекты КАК ЗагруженныеДанные
| ПО (ЗагруженныеДанные.Уровень > 1)
| И АдресныеОбъекты.КодСубъектаРФ = ЗагруженныеДанные.КодСубъектаРФ
|ГДЕ
| АдресныеОбъекты.Наименование = &Наименование
| И АдресныеОбъекты.Уровень = 1";
КонецЕсли;
Запрос.УстановитьПараметр("Наименование", СведенияОРегионе.Наименование); Запрос.УстановитьПараметр("Наименование", СведенияОРегионе.Наименование);
Запрос.УстановитьПараметр("Сокращение", СведенияОРегионе.Сокращение);
РезультатЗапроса = Запрос.Выполнить(); РезультатЗапроса = Запрос.Выполнить();
Возврат РезультатЗапроса; Возврат РезультатЗапроса;
@@ -3834,15 +3868,14 @@
НаборПредставление = Новый Массив; НаборПредставление = Новый Массив;
Для Позиция = 0 По 5 Цикл Для Позиция = 0 По 5 Цикл
Наименование = СтрокаАдреса["Наименование" + Строка(Позиция)]; ПозицияСтрокой = Строка(Позиция);
Наименование = СтрокаАдреса["Наименование" + ПозицияСтрокой];
Если ПустаяСтрока(Наименование) Тогда Если ПустаяСтрока(Наименование) Тогда
Прервать; Прервать;
КонецЕсли; КонецЕсли;
Если СтрокаАдреса["Уровень" + Строка(Позиция)] = 1 Тогда
НаборПредставление.Добавить(Наименование + " " + СтрокаАдреса["Сокращение" + Строка(Позиция)]); НаборПредставление.Добавить(СоединитьНаименованиеИТипАдресногоОбъекта(Наименование,
Иначе СтрокаАдреса["Сокращение" + ПозицияСтрокой], СтрокаАдреса["Уровень" + ПозицияСтрокой] = 1))
НаборПредставление.Добавить(СтрокаАдреса["Сокращение" + Строка(Позиция)] + " " + Наименование);
КонецЕсли;
КонецЦикла; КонецЦикла;
@@ -4390,6 +4423,8 @@
Запрос = Новый Запрос(); Запрос = Новый Запрос();
ТекстЗапроса = "ВЫБРАТЬ ТекстЗапроса = "ВЫБРАТЬ
| &Представление КАК Представление, | &Представление КАК Представление,
| АдресныеОбъекты.Наименование КАК Наименование,
| АдресныеОбъекты.Сокращение КАК Сокращение,
| АдресныеОбъекты.Идентификатор КАК Идентификатор, | АдресныеОбъекты.Идентификатор КАК Идентификатор,
| АдресныеОбъекты.ДополнительныеАдресныеСведения КАК ДополнительныеАдресныеСведения, | АдресныеОбъекты.ДополнительныеАдресныеСведения КАК ДополнительныеАдресныеСведения,
| ДополнительныеСведения.ПочтовыйИндекс КАК ПочтовыйИндекс, | ДополнительныеСведения.ПочтовыйИндекс КАК ПочтовыйИндекс,
@@ -4448,7 +4483,11 @@
Данные = Результат.Данные; Данные = Результат.Данные;
Для Каждого Строка Из РезультатЗапроса.Выгрузить() Цикл Для Каждого Строка Из РезультатЗапроса.Выгрузить() Цикл
Если ЗначениеЗаполнено(Строка.ПочтовыйИндекс) Тогда Если Уровень = 1 Тогда
Если НаименованиеРегионаБезТипа(Строка.Наименование) Тогда
Строка.Представление = Строка.Наименование;
КонецЕсли;
ИначеЕсли ЗначениеЗаполнено(Строка.ПочтовыйИндекс) Тогда
Строка.Представление = Строка.Представление + " (" + Формат(Строка.ПочтовыйИндекс, "ЧГ=0") + ")"; Строка.Представление = Строка.Представление + " (" + Формат(Строка.ПочтовыйИндекс, "ЧГ=0") + ")";
КонецЕсли; КонецЕсли;
@@ -7498,9 +7537,18 @@
// * Наименование - Строка - наименование, например "Москва". Если сокращение выделить не удалось, то исходное название. // * Наименование - Строка - наименование, например "Москва". Если сокращение выделить не удалось, то исходное название.
// * Сокращение - Строка - сокращение, например "г". Если сокращение выделить не удалось, то пустая строка. // * Сокращение - Строка - сокращение, например "г". Если сокращение выделить не удалось, то пустая строка.
// //
Функция НаименованиеИСокращение(Название) Экспорт Функция НаименованиеИСокращение(Название, ЭтоРегион = Ложь) Экспорт
Результат = НовыйНаименованиеИСокращение();
ТекстПоиска = СокрП(Название); ТекстПоиска = СокрП(Название);
Результат = Новый Структура("Наименование, Сокращение");
Если ЭтоРегион И НаименованиеРегионаБезТипа(Название) Тогда
Результат.Наименование = Название;
Возврат Результат;
КонецЕсли;
ТекстВерхнийРегистр = ВРег(ТекстПоиска); ТекстВерхнийРегистр = ВРег(ТекстПоиска);
Если СтрЗаканчиваетсяНа(ТекстВерхнийРегистр, "ТЕР. СНТ") Если СтрЗаканчиваетсяНа(ТекстВерхнийРегистр, "ТЕР. СНТ")
@@ -7529,6 +7577,20 @@
Возврат Результат; Возврат Результат;
КонецФункции КонецФункции
// Возвращаемое значение:
// Структура:
// * Наименование - Строка
// * Сокращение - Строка
//
Функция НовыйНаименованиеИСокращение()
Результат = Новый Структура;
Результат.Вставить("Наименование", "");
Результат.Вставить("Сокращение", "");
Возврат Результат;
КонецФункции
// Набор уровней для запросов ФИАС. // Набор уровней для запросов ФИАС.
// //
// Возвращаемое значение: // Возвращаемое значение:
@@ -10611,6 +10673,12 @@
КонецПроцедуры КонецПроцедуры
Функция НаименованиеРегионаБезТипа(Наименование)
// АПК: 1297-выкл Данные ФИАС, не локализуются
Возврат СтрНачинаетсяС(ВРег(Наименование), ВРег("Ханты-Мансийский Автономный округ - Югра")); // @Non-NLS-1
// АПК: 1297-вкл
КонецФункции
#КонецОбласти #КонецОбласти
#КонецОбласти #КонецОбласти
@@ -3037,7 +3037,6 @@
УстановитьПривилегированныйРежим(Истина); УстановитьПривилегированныйРежим(Истина);
Выборка = Запрос.Выполнить().Выбрать(); Выборка = Запрос.Выполнить().Выбрать();
УстановитьПривилегированныйРежим(Ложь);
Пока Выборка.Следующий() Цикл Пока Выборка.Следующий() Цикл
Если Выборка.Наименование = Наименование Тогда Если Выборка.Наименование = Наименование Тогда
@@ -320,6 +320,9 @@
// //
Функция Параметры() Экспорт Функция Параметры() Экспорт
УстановитьОтключениеБезопасногоРежима(Истина);
УстановитьПривилегированныйРежим(Истина);
ПолноеИмяПодсистемы = ВариантыОтчетовКлиентСервер.ПолноеИмяПодсистемы(); ПолноеИмяПодсистемы = ВариантыОтчетовКлиентСервер.ПолноеИмяПодсистемы();
Параметры = СтандартныеПодсистемыСервер.ПараметрРаботыПрограммы(ПолноеИмяПодсистемы); Параметры = СтандартныеПодсистемыСервер.ПараметрРаботыПрограммы(ПолноеИмяПодсистемы);
Если Параметры = Неопределено Тогда Если Параметры = Неопределено Тогда
@@ -330,17 +333,13 @@
Если ЗначениеЗаполнено(ПараметрыСеанса.ВерсияРасширений) Тогда Если ЗначениеЗаполнено(ПараметрыСеанса.ВерсияРасширений) Тогда
ПараметрыРасширений = СтандартныеПодсистемыСервер.ПараметрРаботыРасширения(ПолноеИмяПодсистемы); ПараметрыРасширений = СтандартныеПодсистемыСервер.ПараметрРаботыРасширения(ПолноеИмяПодсистемы);
Если ПараметрыРасширений = Неопределено Тогда Если ПараметрыРасширений = Неопределено Тогда
УстановитьОтключениеБезопасногоРежима(Истина);
УстановитьПривилегированныйРежим(Истина);
ВариантыОтчетов.ПриЗаполненииВсехПараметровРаботыРасширений(); ВариантыОтчетов.ПриЗаполненииВсехПараметровРаботыРасширений();
УстановитьПривилегированныйРежим(Ложь);
УстановитьОтключениеБезопасногоРежима(Ложь);
ПараметрыРасширений = СтандартныеПодсистемыСервер.ПараметрРаботыРасширения(ПолноеИмяПодсистемы); ПараметрыРасширений = СтандартныеПодсистемыСервер.ПараметрРаботыРасширения(ПолноеИмяПодсистемы);
КонецЕсли; КонецЕсли;
Если ПараметрыРасширений <> Неопределено Тогда Если ПараметрыРасширений <> Неопределено Тогда
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(Параметры.ОтчетыСНастройками, ПараметрыРасширений.ОтчетыСНастройками); ОбщегоНазначенияКлиентСервер.ДополнитьМассив(Параметры.ОтчетыСНастройками, ПараметрыРасширений.ОтчетыСНастройками);
ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(Параметры.ТаблицаФункциональныхОпций, ПараметрыРасширений.ТаблицаФункциональныхОпций); ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(ПараметрыРасширений.ТаблицаФункциональныхОпций, Параметры.ТаблицаФункциональныхОпций);
КонецЕсли; КонецЕсли;
КонецЕсли; КонецЕсли;
@@ -349,6 +348,9 @@
МодульДополнительныеОтчетыИОбработки.ПриОпределенииОтчетовСНастройками(Параметры.ОтчетыСНастройками); МодульДополнительныеОтчетыИОбработки.ПриОпределенииОтчетовСНастройками(Параметры.ОтчетыСНастройками);
КонецЕсли; КонецЕсли;
УстановитьПривилегированныйРежим(Ложь);
УстановитьОтключениеБезопасногоРежима(Ложь);
Возврат Параметры; Возврат Параметры;
КонецФункции КонецФункции
@@ -87,6 +87,7 @@
ГраницыРазделов = ГраницыРазделовОтчета(РезультатОтчета, РазрезСвойствЗаголовков); ГраницыРазделов = ГраницыРазделовОтчета(РезультатОтчета, РазрезСвойствЗаголовков);
ИндексСтруктурыОтчета = ИндексСтруктурыОтчета(Форма); ИндексСтруктурыОтчета = ИндексСтруктурыОтчета(Форма);
ДополнитьСвойстваЗаголовковОтчета(Форма, РезультатОтчета, Заголовки, РазрезСвойствЗаголовков, ИндексСтруктурыОтчета, ГраницыРазделов); ДополнитьСвойстваЗаголовковОтчета(Форма, РезультатОтчета, Заголовки, РазрезСвойствЗаголовков, ИндексСтруктурыОтчета, ГраницыРазделов);
Ячейка = Элементы.ОтчетТабличныйДокумент.ТекущаяОбласть; Ячейка = Элементы.ОтчетТабличныйДокумент.ТекущаяОбласть;
@@ -191,12 +192,17 @@
Для Каждого Элемент Из Поля.Элементы Цикл Для Каждого Элемент Из Поля.Элементы Цикл
Если Не Элемент.Использование Если Не Элемент.Использование Тогда
Или ТипЗнч(Элемент) = Тип("АвтоПолеГруппировкиКомпоновкиДанных") Тогда
Продолжить; Продолжить;
КонецЕсли; КонецЕсли;
Если ТипЗнч(Элемент) = Тип("АвтоПолеГруппировкиКомпоновкиДанных") Тогда
ПредставлениеПолей.Добавить(НСтр("ru = 'Авто'"));
Продолжить;
КонецЕсли;
ОписаниеПоля = Поля.ДоступныеПоляПолейГруппировок.НайтиПоле(Элемент.Поле); ОписаниеПоля = Поля.ДоступныеПоляПолейГруппировок.НайтиПоле(Элемент.Поле);
Если ОписаниеПоля = Неопределено Тогда Если ОписаниеПоля = Неопределено Тогда
@@ -351,9 +357,24 @@
Функция ИндексСтруктурыОтчета(Форма) Экспорт Функция ИндексСтруктурыОтчета(Форма) Экспорт
НастройкиОтчета = Форма.НастройкиОтчета; НастройкиОтчета = Форма.НастройкиОтчета;
АдресИндексаСтруктурыОтчета = НастройкиОтчета.СвойстваРезультата.АдресИндексаСтруктурыОтчета;
ИндексСтруктурыОтчета = Неопределено;
Если ЭтоАдресВременногоХранилища(АдресИндексаСтруктурыОтчета) Тогда
ИндексСтруктурыОтчета = ПолучитьИзВременногоХранилища(АдресИндексаСтруктурыОтчета);
КонецЕсли;
Если ИндексСтруктурыОтчета <> Неопределено И Не Форма.ВариантМодифицирован Тогда
Возврат ИндексСтруктурыОтчета;
КонецЕсли;
СвойстваРезультата = НастройкиОтчета.СвойстваРезультата; СвойстваРезультата = НастройкиОтчета.СвойстваРезультата;
ИтоговыеНастройки = Форма.Отчет.КомпоновщикНастроек.ПолучитьНастройки(); КомпоновщикНастроекОтчета = Форма.Отчет.КомпоновщикНастроек;
КомпоновщикНастроекОтчета.РазвернутьАвтоПоля();
ИтоговыеНастройки = КомпоновщикНастроекОтчета.ПолучитьНастройки();
КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных; КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
ОтчетыСервер.ИнициализироватьКомпоновщикНастроек(КомпоновщикНастроек, НастройкиОтчета.АдресСхемы); ОтчетыСервер.ИнициализироватьКомпоновщикНастроек(КомпоновщикНастроек, НастройкиОтчета.АдресСхемы);
@@ -365,12 +386,8 @@
СвойстваРезультата.КомпоновщикНастроек = КомпоновщикНастроек; СвойстваРезультата.КомпоновщикНастроек = КомпоновщикНастроек;
СвойстваРезультата.РолиПолей = РолиПолейОтчета(НастройкиОтчета.АдресСхемы); СвойстваРезультата.РолиПолей = РолиПолейОтчета(НастройкиОтчета.АдресСхемы);
ИндексСтруктурыОтчета = НовыйИндексСтруктурыОтчета(); ИндексСтруктурыОтчета = ИндексСтруктурыОтчетаБезКонтекста(КомпоновщикНастроекОтчета, ИтоговыеНастройки);
ИндексироватьРазделыОтчета(СвойстваРезультата, СвойстваРезультата.ИтоговыеНастройки, ИндексСтруктурыОтчета);
ИндексироватьГруппировкиОтчета(СвойстваРезультата, ИндексСтруктурыОтчета);
УдалитьНеидентифицированныеПоля(ИндексСтруктурыОтчета);
УточнитьПорядокРазделов(ИндексСтруктурыОтчета);
ОпределитьРолиПолей(ИндексСтруктурыОтчета, СвойстваРезультата.РолиПолей); ОпределитьРолиПолей(ИндексСтруктурыОтчета, СвойстваРезультата.РолиПолей);
УстановитьИдентификаторыИндексаСтруктурыОтчета(ИндексСтруктурыОтчета); УстановитьИдентификаторыИндексаСтруктурыОтчета(ИндексСтруктурыОтчета);
ОпределитьДоступныеДействияПолейОтчета(ИндексСтруктурыОтчета); ОпределитьДоступныеДействияПолейОтчета(ИндексСтруктурыОтчета);
@@ -385,6 +402,26 @@
КонецФункции КонецФункции
Функция ИндексСтруктурыОтчетаБезКонтекста(КомпоновщикНастроек, ИтоговыеНастройки = Неопределено) Экспорт
Если ИтоговыеНастройки = Неопределено Тогда
КомпоновщикНастроек.РазвернутьАвтоПоля();
ИтоговыеНастройки = КомпоновщикНастроек.ПолучитьНастройки();
КонецЕсли;
ИндексСтруктурыОтчета = НовыйИндексСтруктурыОтчета();
ИндексироватьРазделыОтчета(ИтоговыеНастройки, ИтоговыеНастройки, ИндексСтруктурыОтчета);
ИндексироватьГруппировкиОтчета(ИтоговыеНастройки, ИндексСтруктурыОтчета);
УдалитьНеидентифицированныеПоля(ИндексСтруктурыОтчета);
УточнитьПорядокРазделов(ИндексСтруктурыОтчета);
Возврат ИндексСтруктурыОтчета;
КонецФункции
Процедура СкопироватьДополнительныеСвойстваНастроек(Приемник, Источник) Процедура СкопироватьДополнительныеСвойстваНастроек(Приемник, Источник)
ВидыНастроек = СтрРазделить("Настройки, ПользовательскиеНастройки", ", ", Ложь); ВидыНастроек = СтрРазделить("Настройки, ПользовательскиеНастройки", ", ", Ложь);
@@ -404,7 +441,7 @@
КонецПроцедуры КонецПроцедуры
Процедура ИндексироватьРазделыОтчета(СвойстваРезультата, Настройки, ИндексСтруктурыОтчета, ПорядокРаздела = 0) Процедура ИндексироватьРазделыОтчета(ИтоговыеНастройки, Настройки, ИндексСтруктурыОтчета, ПорядокРаздела = 0)
Для Каждого Раздел Из Настройки.Структура Цикл Для Каждого Раздел Из Настройки.Структура Цикл
@@ -416,7 +453,7 @@
Если ТипЗнч(Раздел) = Тип("НастройкиВложенногоОбъектаКомпоновкиДанных") Тогда Если ТипЗнч(Раздел) = Тип("НастройкиВложенногоОбъектаКомпоновкиДанных") Тогда
ИндексироватьРазделыОтчета(СвойстваРезультата, Раздел.Настройки, ИндексСтруктурыОтчета, ПорядокРаздела); ИндексироватьРазделыОтчета(ИтоговыеНастройки, Раздел.Настройки, ИндексСтруктурыОтчета, ПорядокРаздела);
Иначе Иначе
@@ -424,7 +461,7 @@
ИндексРаздела = ИндексСтруктурыОтчета.Добавить(); ИндексРаздела = ИндексСтруктурыОтчета.Добавить();
ИндексРаздела.ПорядокРаздела = ПорядокРаздела; ИндексРаздела.ПорядокРаздела = ПорядокРаздела;
ИндексРаздела.ИдентификаторНастроек = СвойстваРезультата.ИтоговыеНастройки.ПолучитьИдентификаторПоОбъекту(Настройки); ИндексРаздела.ИдентификаторНастроек = ИтоговыеНастройки.ПолучитьИдентификаторПоОбъекту(Настройки);
ИндексРаздела.ИдентификаторРаздела = Настройки.ПолучитьИдентификаторПоОбъекту(Раздел); ИндексРаздела.ИдентификаторРаздела = Настройки.ПолучитьИдентификаторПоОбъекту(Раздел);
КонецЕсли; КонецЕсли;
@@ -433,13 +470,13 @@
КонецПроцедуры КонецПроцедуры
Процедура ИндексироватьГруппировкиОтчета(СвойстваРезультата, ИндексСтруктурыОтчета) Процедура ИндексироватьГруппировкиОтчета(ИтоговыеНастройки, ИндексСтруктурыОтчета)
ИндексРазделовОтчетов = ИндексСтруктурыОтчета.Скопировать(); ИндексРазделовОтчетов = ИндексСтруктурыОтчета.Скопировать();
Для Каждого ИндексРаздела Из ИндексРазделовОтчетов Цикл Для Каждого ИндексРаздела Из ИндексРазделовОтчетов Цикл
Настройки = СвойстваРезультата.ИтоговыеНастройки.ПолучитьОбъектПоИдентификатору(ИндексРаздела.ИдентификаторНастроек); Настройки = ИтоговыеНастройки.ПолучитьОбъектПоИдентификатору(ИндексРаздела.ИдентификаторНастроек);
Раздел = Настройки.ПолучитьОбъектПоИдентификатору(ИндексРаздела.ИдентификаторРаздела); // ГруппировкаКомпоновкиДанных, ТаблицаКомпоновкиДанных Раздел = Настройки.ПолучитьОбъектПоИдентификатору(ИндексРаздела.ИдентификаторРаздела); // ГруппировкаКомпоновкиДанных, ТаблицаКомпоновкиДанных
Если ТипЗнч(Раздел) = Тип("ДиаграммаКомпоновкиДанных") Тогда Если ТипЗнч(Раздел) = Тип("ДиаграммаКомпоновкиДанных") Тогда
@@ -552,16 +589,8 @@
Продолжить; Продолжить;
КонецЕсли; КонецЕсли;
Если ТипЗнч(Элемент) = Тип("АвтоЭлементПорядкаКомпоновкиДанных") Если Замещать Или ПоляСортировки[Элемент.Поле] = Неопределено Тогда
И ТипГруппировки <> Тип("НастройкиКомпоновкиДанных") Тогда
ПоляСортировки(Настройки, Настройки, ПоляСортировки, Ложь);
ИначеЕсли ТипЗнч(Элемент) <> Тип("АвтоЭлементПорядкаКомпоновкиДанных")
И (Замещать Или ПоляСортировки[Элемент.Поле] = Неопределено) Тогда
ПоляСортировки.Вставить(Элемент.Поле, Элемент.ТипУпорядочивания); ПоляСортировки.Вставить(Элемент.Поле, Элемент.ТипУпорядочивания);
КонецЕсли; КонецЕсли;
КонецЦикла; КонецЦикла;
@@ -624,7 +653,6 @@
ИспользуемыеПоляГруппировки = Новый Соответствие; ИспользуемыеПоляГруппировки = Новый Соответствие;
ИспользуетсяАвтоПоле = ИспользуетсяАвтоПоле(Группировка.Выбор);
ИспользуемыеНастройки = ИспользуемыеНастройкиГруппировкиОтчета(Настройки, Группировка); ИспользуемыеНастройки = ИспользуемыеНастройкиГруппировкиОтчета(Настройки, Группировка);
ПоляГруппировки = Группировка.ПоляГруппировки; ПоляГруппировки = Группировка.ПоляГруппировки;
@@ -639,8 +667,7 @@
ИспользуемыеПоляГруппировки.Вставить(Элемент.Поле, Элемент); ИспользуемыеПоляГруппировки.Вставить(Элемент.Поле, Элемент);
Если ИспользуетсяАвтоПоле Если Не ВариантыОтчетовСлужебныйКлиентСервер.ПолеСодержитсяВГруппировкеОтчета(Группировка.Выбор, Элемент.Поле)
И Не ВариантыОтчетовСлужебныйКлиентСервер.ПолеСодержитсяВГруппировкеОтчета(Группировка.Выбор, Элемент.Поле)
И Не ВариантыОтчетовСлужебныйКлиентСервер.ПолеСодержитсяВГруппировкеОтчета(ИспользуемыеНастройки.Выбор, Элемент.Поле) Тогда И Не ВариантыОтчетовСлужебныйКлиентСервер.ПолеСодержитсяВГруппировкеОтчета(ИспользуемыеНастройки.Выбор, Элемент.Поле) Тогда
ДобавитьПолеОтчетаВИндекс(ИндексСтруктурыОтчета, ИндексГруппировки, ПоляГруппировки, ДобавитьПолеОтчетаВИндекс(ИндексСтруктурыОтчета, ИндексГруппировки, ПоляГруппировки,
@@ -655,22 +682,6 @@
КонецПроцедуры КонецПроцедуры
Функция ИспользуетсяАвтоПоле(Поля)
Для Каждого Элемент Из Поля.Элементы Цикл
Если ТипЗнч(Элемент) = Тип("АвтоВыбранноеПолеКомпоновкиДанных")
Или ТипЗнч(Элемент) = Тип("АвтоПолеГруппировкиКомпоновкиДанных") Тогда
Возврат Элемент.Использование;
КонецЕсли;
КонецЦикла;
Возврат Ложь;
КонецФункции
Процедура ИндексироватьВыбранныеПоляГруппировкиОтчета(ИндексСтруктурыОтчета, ИндексГруппировки, Настройки, Процедура ИндексироватьВыбранныеПоляГруппировкиОтчета(ИндексСтруктурыОтчета, ИндексГруппировки, Настройки,
Группировка, ПорядокПоля, ПоляСортировки, ИспользуемыеПоляГруппировки, Поля = Неопределено, Родитель = Неопределено) // АПК:134 реализация сложной логики для формирования индекса структуры отчета. Группировка, ПорядокПоля, ПоляСортировки, ИспользуемыеПоляГруппировки, Поля = Неопределено, Родитель = Неопределено) // АПК:134 реализация сложной логики для формирования индекса структуры отчета.
@@ -684,18 +695,7 @@
Для Каждого Элемент Из Поля.Элементы Цикл Для Каждого Элемент Из Поля.Элементы Цикл
Если ТипЗнч(Элемент) = Тип("АвтоВыбранноеПолеКомпоновкиДанных") Тогда Если ТипЗнч(Элемент) = Тип("ГруппаВыбранныхПолейКомпоновкиДанных") Тогда
ИндексироватьВыбранныеПоляНастроекОтчета(
ИндексСтруктурыОтчета,
ИндексГруппировки,
Настройки,
Группировка,
ПорядокПоля,
ПоляСортировки,
ИспользуемыеПоляГруппировки);
ИначеЕсли ТипЗнч(Элемент) = Тип("ГруппаВыбранныхПолейКомпоновкиДанных") Тогда
ИндексироватьВыбранныеПоляГруппировкиОтчета(ИндексСтруктурыОтчета, ИндексГруппировки, Настройки, ИндексироватьВыбранныеПоляГруппировкиОтчета(ИндексСтруктурыОтчета, ИндексГруппировки, Настройки,
Группировка, ПорядокПоля, ПоляСортировки, ИспользуемыеПоляГруппировки, Элемент, Родитель); Группировка, ПорядокПоля, ПоляСортировки, ИспользуемыеПоляГруппировки, Элемент, Родитель);
@@ -741,8 +741,7 @@
ИндексироватьВыбранныеПоляНастроекОтчета(ИндексСтруктурыОтчета, ИндексГруппировки, Настройки, ИндексироватьВыбранныеПоляНастроекОтчета(ИндексСтруктурыОтчета, ИндексГруппировки, Настройки,
Группировка, ПорядокПоля, ПоляСортировки, ИспользуемыеПоляГруппировки, Элемент, Родитель); Группировка, ПорядокПоля, ПоляСортировки, ИспользуемыеПоляГруппировки, Элемент, Родитель);
ИначеЕсли ТипЭлемента <> Тип("АвтоВыбранноеПолеКомпоновкиДанных") ИначеЕсли РазрешеноИспользоватьПолеВГруппировке(Группировка, Элемент.Поле)
И РазрешеноИспользоватьПолеВГруппировке(Группировка, Элемент.Поле)
И Не ВариантыОтчетовСлужебныйКлиентСервер.ПолеСодержитсяВГруппировкеОтчета(Группировка.Выбор, Элемент.Поле, Ложь) Тогда И Не ВариантыОтчетовСлужебныйКлиентСервер.ПолеСодержитсяВГруппировкеОтчета(Группировка.Выбор, Элемент.Поле, Ложь) Тогда
ДобавитьПолеОтчетаВИндекс(ИндексСтруктурыОтчета, ИндексГруппировки, Родитель, Элемент, ПорядокПоля, ПоляСортировки, ИспользуемыеПоляГруппировки); ДобавитьПолеОтчетаВИндекс(ИндексСтруктурыОтчета, ИндексГруппировки, Родитель, Элемент, ПорядокПоля, ПоляСортировки, ИспользуемыеПоляГруппировки);
@@ -1149,6 +1149,12 @@
ПоляОтчета.Использование = Ложь; ПоляОтчета.Использование = Ложь;
КонецЕсли; КонецЕсли;
ПоляОтчета = ВариантыОтчетовСлужебныйКлиентСервер.ПолеОтчета(Группировка.Порядок, Поле);
Если ПоляОтчета <> Неопределено Тогда
ПоляОтчета.Использование = Ложь;
КонецЕсли;
КонецПроцедуры КонецПроцедуры
Процедура СкрытьГруппировку(Настройки, Группировка, Поле) Процедура СкрытьГруппировку(Настройки, Группировка, Поле)
@@ -3162,13 +3168,20 @@
Если СтрЗаканчиваетсяНа(Форма.ИмяФормы, "КонтекстнаяНастройкаОтчета") Если СтрЗаканчиваетсяНа(Форма.ИмяФормы, "КонтекстнаяНастройкаОтчета")
Или СтрЗаканчиваетсяНа(Форма.ИмяФормы, "КонтекстнаяНастройкаОтчета") Тогда Или СтрЗаканчиваетсяНа(Форма.ИмяФормы, "КонтекстнаяНастройкаОтчета") Тогда
Возврат Форма.КомпоновщикНастроек; КомпоновщикНастроек = Форма.КомпоновщикНастроек;
КонецЕсли;
Иначе
НастройкиОтчета = Форма.НастройкиОтчета; // см. ВариантыОтчетов.НастройкиФормыОтчета НастройкиОтчета = Форма.НастройкиОтчета; // см. ВариантыОтчетов.НастройкиФормыОтчета
СвойстваРезультата = НастройкиОтчета.СвойстваРезультата; // см. ВариантыОтчетовСлужебный.СвойстваРезультатаОтчета СвойстваРезультата = НастройкиОтчета.СвойстваРезультата; // см. ВариантыОтчетовСлужебный.СвойстваРезультатаОтчета
Возврат СвойстваРезультата.КомпоновщикНастроек; КомпоновщикНастроек = СвойстваРезультата.КомпоновщикНастроек;
КонецЕсли;
КомпоновщикНастроек.РазвернутьАвтоПоля();
Возврат КомпоновщикНастроек;
КонецФункции КонецФункции
@@ -3178,7 +3178,9 @@
ИдентификаторОшибки = "ОшибкаПроведения"; ИдентификаторОшибки = "ОшибкаПроведения";
КонецЕсли; КонецЕсли;
Если Ссылка.ПолучитьОбъект() <> Неопределено Тогда
ЗаписатьДанныеТекущейВерсии(Ссылка); ЗаписатьДанныеТекущейВерсии(Ссылка);
КонецЕсли;
ВыполняетсяЗаписьОбъекта(Истина); ВыполняетсяЗаписьОбъекта(Истина);
Если ЗначениеЗаполнено(РежимЗаписи) Тогда Если ЗначениеЗаполнено(РежимЗаписи) Тогда
@@ -129,7 +129,7 @@
// для отображения в ней подробных данных выбранного события. // для отображения в ней подробных данных выбранного события.
// //
// Параметры: // Параметры:
// Данные - ДанныеФормыЭлементКоллекции из см. Обработка.ЖурналРегистрации.Форма.ЖурналРегистрации.Журнал // Данные - ДанныеФормыЭлементКоллекции: см. Обработка.ЖурналРегистрации.Форма.ЖурналРегистрации.Журнал
// //
Процедура ПросмотрТекущегоСобытияВОтдельномОкне(Данные, ХранилищеДанных) Экспорт Процедура ПросмотрТекущегоСобытияВОтдельномОкне(Данные, ХранилищеДанных) Экспорт
@@ -4961,6 +4961,24 @@
#КонецОбласти #КонецОбласти
#Область УдалениеПомеченныхОбъектов
// см. УдалениеПомеченныхОбъектовПереопределяемый.ПередУдалениемГруппыОбъектов
Процедура ПередУдалениемГруппыОбъектов(Контекст, СвязанныеОбъекты, СтандартнаяОбработка) Экспорт
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда
МодульРаботаСФайламиСлужебный = ОбщегоНазначения.ОбщийМодуль("РаботаСФайламиСлужебный");
МодульРаботаСФайламиСлужебный.ПередУдалениемГруппыОбъектов(Контекст, СвязанныеОбъекты, СтандартнаяОбработка);
КонецЕсли;
КонецПроцедуры
// см. УдалениеПомеченныхОбъектовПереопределяемый.ПослеУдаленияГруппыОбъектов
Процедура ПослеУдаленияГруппыОбъектов(Контекст, Успешно) Экспорт
МодульРаботаСФайламиСлужебный = ОбщегоНазначения.ОбщийМодуль("РаботаСФайламиСлужебный");
МодульРаботаСФайламиСлужебный.ПослеУдаленияГруппыОбъектов(Контекст, Успешно);
КонецПроцедуры
#КонецОбласти
#Область ЦентрМониторинга #Область ЦентрМониторинга
// См. ЦентрМониторингаПереопределяемый.ПриСбореПоказателейСтатистикиКонфигурации. // См. ЦентрМониторингаПереопределяемый.ПриСбореПоказателейСтатистикиКонфигурации.
@@ -3084,16 +3084,6 @@
КонецФункции КонецФункции
Функция СхемаРасширенияФормата(УзелОбмена) Экспорт
МенеджерЗаписи = РегистрыСведений.НастройкиОбменаДаннымиXDTO.СоздатьМенеджерЗаписи();
МенеджерЗаписи.УзелИнформационнойБазы = УзелОбмена;
МенеджерЗаписи.Прочитать();
Возврат МенеджерЗаписи.РасширениеФормата;
КонецФункции
// Возвращает строку с номером версии формата обмена, поддерживаемой получателем данных. // Возвращает строку с номером версии формата обмена, поддерживаемой получателем данных.
// //
// Параметры: // Параметры:
@@ -11080,7 +11080,7 @@
УстановитьПривилегированныйРежим(Истина); УстановитьПривилегированныйРежим(Истина);
Возврат Строка(ОбменДаннымиПовтИсп.ПолучитьЭтотУзелПланаОбмена(ИмяПланаОбмена)); Возврат ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ОбменДаннымиПовтИсп.ПолучитьЭтотУзелПланаОбмена(ИмяПланаОбмена), "Наименование");
КонецФункции КонецФункции
Процедура ОбработчикПриВыгрузкеДанныхБСП( Процедура ОбработчикПриВыгрузкеДанныхБСП(
@@ -404,33 +404,11 @@
Если ДополнительныеПараметры.ЭтоДвижения Тогда Если ДополнительныеПараметры.ЭтоДвижения Тогда
Набор = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ДополнительныеПараметры.ПолноеИмяРегистра).СоздатьНаборЗаписей(); УдалитьРегистрациюИзмененийПодчиненногоРегистра(Узел, Данные, ДополнительныеПараметры.ПолноеИмяРегистра);
Если ТипЗнч(Данные) = Тип("Массив") Тогда
Для Каждого СтрокаМассива Из Данные Цикл
Набор.Отбор.Регистратор.Установить(СтрокаМассива);
ПланыОбмена.УдалитьРегистрациюИзменений(Узел, Набор);
КонецЦикла;
Иначе
Набор.Отбор.Регистратор.Установить(Данные);
ПланыОбмена.УдалитьРегистрациюИзменений(Узел, Набор);
КонецЕсли;
ИначеЕсли ДополнительныеПараметры.ЭтоНезависимыйРегистрСведений Тогда ИначеЕсли ДополнительныеПараметры.ЭтоНезависимыйРегистрСведений Тогда
Набор = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ДополнительныеПараметры.ПолноеИмяРегистра).СоздатьНаборЗаписей(); УдалитьРегистрациюИзмененийНезависимогоРегистра(Узел, Данные, ДополнительныеПараметры.ПолноеИмяРегистра);
МетаданныеОбъекта = Метаданные.НайтиПоПолномуИмени(ДополнительныеПараметры.ПолноеИмяРегистра);
УстановитьНедостающиеОтборыВНаборе(Набор, МетаданныеОбъекта, Данные);
Для Каждого СтрокаТаблицы Из Данные Цикл
Для Каждого Колонка Из Данные.Колонки Цикл
Набор.Отбор[Колонка.Имя].Значение = СтрокаТаблицы[Колонка.Имя];
Набор.Отбор[Колонка.Имя].Использование = Истина;
КонецЦикла;
ПланыОбмена.УдалитьРегистрациюИзменений(Узел, Набор);
КонецЦикла;
Иначе Иначе
Если ТипЗнч(Данные) = Тип("ОбъектМетаданных") Тогда Если ТипЗнч(Данные) = Тип("ОбъектМетаданных") Тогда
@@ -466,9 +444,7 @@
ПланыОбмена.УдалитьРегистрациюИзменений(Узел, Набор); ПланыОбмена.УдалитьРегистрациюИзменений(Узел, Набор);
КопияДанных = Набор; КопияДанных = Набор;
Иначе Иначе
Для Каждого ЭлементМассива Из Данные Цикл УдалитьРегистрациюИзмененийОбъекта(Узел, Данные);
ПланыОбмена.УдалитьРегистрациюИзменений(Узел, ЭлементМассива);
КонецЦикла;
КонецЕсли; КонецЕсли;
КонецЕсли; КонецЕсли;
@@ -726,9 +702,10 @@
КонецЦикла; КонецЦикла;
Если Несуществующие.Количество() <> 0 Тогда Если Несуществующие.Количество() <> 0 Тогда
ТекстИсключения = НСтр("ru = 'В свойстве ПараметрыВыборки процедуры заполнения данных отложенного обработчика указаны несуществующие объекты: ТекстИсключения = НСтр("ru = 'В свойстве %1 процедуры заполнения данных отложенного обработчика указаны несуществующие объекты:
|%1.'"); |%2.'");
ТекстИсключения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстИсключения, СтрСоединить(Несуществующие, ", ")); ТекстИсключения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстИсключения,
"ПараметрыВыборки", СтрСоединить(Несуществующие, ", "));
ВызватьИсключение ТекстИсключения; ВызватьИсключение ТекстИсключения;
КонецЕсли; КонецЕсли;
@@ -738,7 +715,7 @@
Если ДополнительныеПараметры.ЭтоДвижения Тогда Если ДополнительныеПараметры.ЭтоДвижения Тогда
Набор = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ДополнительныеПараметры.ПолноеИмяРегистра).СоздатьНаборЗаписей(); ПолноеИмяРегистра = ДополнительныеПараметры.ПолноеИмяРегистра;
Если ДополнительныеПараметры.ОтметитьВсеРегистраторы Тогда Если ДополнительныеПараметры.ОтметитьВсеРегистраторы Тогда
@@ -764,87 +741,29 @@
Запрос = Новый Запрос; Запрос = Новый Запрос;
Запрос.Текст = ТекстЗапроса; Запрос.Текст = ТекстЗапроса;
МассивСсылок = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"); Регистраторы = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
Для Каждого ЭлементМассива Из МассивСсылок Цикл
Набор.Отбор.Регистратор.Установить(ЭлементМассива);
ЗарегистрироватьИзменения(ОсновныеПараметры, Узел, Набор, "ПодчиненныйРегистр", ДополнительныеПараметры.ПолноеИмяРегистра);
КонецЦикла;
Иначе Иначе
Регистраторы = Данные;
Если ТипЗнч(Данные) = Тип("Массив") Тогда
Итератор = 0;
Попытка
Для Каждого ЭлементМассива Из Данные Цикл
Если Итератор = 0 Тогда
НачатьТранзакцию();
КонецЕсли;
Набор.Отбор.Регистратор.Установить(ЭлементМассива);
ЗарегистрироватьИзменения(ОсновныеПараметры, Узел, Набор, "ПодчиненныйРегистр", ДополнительныеПараметры.ПолноеИмяРегистра);
Итератор = Итератор + 1;
Если Итератор = 1000 Тогда
Итератор = 0;
ЗафиксироватьТранзакцию();
КонецЕсли;
КонецЦикла;
Если Итератор <> 0 Тогда
ЗафиксироватьТранзакцию();
КонецЕсли;
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки
Иначе
Набор.Отбор.Регистратор.Установить(Данные);
ЗарегистрироватьИзменения(ОсновныеПараметры, Узел, Набор, "ПодчиненныйРегистр", ДополнительныеПараметры.ПолноеИмяРегистра);
КонецЕсли; КонецЕсли;
КонецЕсли; ЗарегистрироватьИзмененияПодчиненногоРегистра(ОсновныеПараметры,
Узел,
Регистраторы,
"ПодчиненныйРегистр",
ПолноеИмяРегистра);
ИначеЕсли ДополнительныеПараметры.ЭтоНезависимыйРегистрСведений Тогда ИначеЕсли ДополнительныеПараметры.ЭтоНезависимыйРегистрСведений Тогда
Набор = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ДополнительныеПараметры.ПолноеИмяРегистра).СоздатьНаборЗаписей(); ЗарегистрироватьИзмененияНезависимогоРегистра(ОсновныеПараметры,
МетаданныеОбъекта = Метаданные.НайтиПоПолномуИмени(ДополнительныеПараметры.ПолноеИмяРегистра); Узел,
УстановитьНедостающиеОтборыВНаборе(Набор, МетаданныеОбъекта, Данные); Данные,
"НезависимыйРегистр",
ДополнительныеПараметры.ПолноеИмяРегистра);
Для Каждого СтрокаТаблицы Из Данные Цикл
Для Каждого Колонка Из Данные.Колонки Цикл
Набор.Отбор[Колонка.Имя].Значение = СтрокаТаблицы[Колонка.Имя];
Набор.Отбор[Колонка.Имя].Использование = Истина;
КонецЦикла;
ЗарегистрироватьИзменения(ОсновныеПараметры, Узел, Набор, "НезависимыйРегистр", ДополнительныеПараметры.ПолноеИмяРегистра);
КонецЦикла;
Иначе Иначе
Если ТипЗнч(Данные) = Тип("Массив") Тогда Если ТипЗнч(Данные) = Тип("Массив") Или ОбщегоНазначения.ЭтоСсылка(ТипЗнч(Данные)) Тогда
Итератор = 0; ЗарегистрироватьИзмененияОбъекта(ОсновныеПараметры, Узел, Данные, "Ссылка");
Попытка
Для Каждого ЭлементМассива Из Данные Цикл
Если Итератор = 0 Тогда
НачатьТранзакцию();
КонецЕсли;
ЗарегистрироватьИзменения(ОсновныеПараметры, Узел, ЭлементМассива, "Ссылка");
Итератор = Итератор + 1;
Если Итератор = 1000 Тогда
Итератор = 0;
ЗафиксироватьТранзакцию();
КонецЕсли;
КонецЦикла;
Если Итератор <> 0 Тогда
ЗафиксироватьТранзакцию();
КонецЕсли;
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки
ИначеЕсли ОбщегоНазначения.ЭтоСсылка(ТипЗнч(Данные)) Тогда
ЗарегистрироватьИзменения(ОсновныеПараметры, Узел, Данные, "Ссылка");
Иначе Иначе
Если ТипЗнч(Данные) = Тип("ОбъектМетаданных") Тогда Если ТипЗнч(Данные) = Тип("ОбъектМетаданных") Тогда
ТекстИсключения = НСтр("ru = 'Не поддерживается регистрация к обновлению целиком объекта метаданных. Нужно обновлять конкретные данные.'"); ТекстИсключения = НСтр("ru = 'Не поддерживается регистрация к обновлению целиком объекта метаданных. Нужно обновлять конкретные данные.'");
@@ -3970,9 +3889,190 @@
КонецЕсли; КонецЕсли;
КонецПроцедуры КонецПроцедуры
// Зарегистрировать изменения одного элемента данных, как это было до оптимизации.
//
// Параметры:
// Параметры - см. ОбновлениеИнформационнойБазы.ОсновныеПараметрыОтметкиКОбработке.
// Узел - ПланОбменаСсылка.ОбновлениеИнформационнойБазы.
// Данные - ЛюбаяСсылка
// - РегистрСведенийНаборЗаписей
// - РегистрНакопленияНаборЗаписей
// - РегистрБухгалтерииНаборЗаписей
// - РегистрРасчетаНаборЗаписей.
// ВидДанных - Строка.
// ПолноеИмяОбъекта - Строка.
//
Процедура ЗарегистрироватьИзменения(Параметры, Узел, Данные, ВидДанных, ПолноеИмяОбъекта = "") Процедура ЗарегистрироватьИзменения(Параметры, Узел, Данные, ВидДанных, ПолноеИмяОбъекта = "")
ПланыОбмена.ЗарегистрироватьИзменения(Узел, Данные); ПараметрыРегистрации = НовыеПараметрыРегистрации(Параметры, Узел, ВидДанных, ПолноеИмяОбъекта);
ЗарегистрироватьИзмененияЭлементаДанных(Данные, ПараметрыРегистрации);
ЗавершитьРегистрациюПорцииДанных(ПараметрыРегистрации);
КонецПроцедуры
// Зарегистрировать изменения одной или нескольких ссылок.
//
// Параметры:
// Параметры - см. ОбновлениеИнформационнойБазы.ОсновныеПараметрыОтметкиКОбработке.
// Узел - ПланОбменаСсылка.ОбновлениеИнформационнойБазы.
// Ссылки - ЛюбаяСсылка
// - Массив из ЛюбаяСсылка.
// ВидДанных - Строка.
// ПолноеИмяОбъекта - Строка.
//
Процедура ЗарегистрироватьИзмененияОбъекта(Параметры, Узел, Ссылки, ВидДанных, ПолноеИмяОбъекта = "")
ПараметрыРегистрации = НовыеПараметрыРегистрации(Параметры, Узел, ВидДанных, ПолноеИмяОбъекта);
Для Каждого Ссылка Из МассивЭлементов(Ссылки) Цикл
ЗарегистрироватьИзмененияЭлементаДанных(Ссылка, ПараметрыРегистрации);
КонецЦикла;
ЗавершитьРегистрациюПорцииДанных(ПараметрыРегистрации);
КонецПроцедуры
// Зарегистрировать изменения подчиненного регистра по указанным регистраторам.
//
// Параметры:
// Параметры - см. ОбновлениеИнформационнойБазы.ОсновныеПараметрыОтметкиКОбработке.
// Узел - ПланОбменаСсылка.ОбновлениеИнформационнойБазы.
// Регистраторы - ЛюбаяСсылка
// - Массив из ЛюбаяСсылка.
// ВидДанных - Строка.
// ПолноеИмяОбъекта - Строка.
//
Процедура ЗарегистрироватьИзмененияПодчиненногоРегистра(Параметры, Узел, Регистраторы, ВидДанных, ПолноеИмяОбъекта)
ПараметрыРегистрации = НовыеПараметрыРегистрации(Параметры, Узел, ВидДанных, ПолноеИмяОбъекта);
Для Каждого Регистратор Из МассивЭлементов(Регистраторы) Цикл
Набор = ПолучитьПереиспользуемыйНабор(ПараметрыРегистрации.ПереиспользуемыеНаборы);
Набор.Отбор.Регистратор.Установить(Регистратор);
ЗарегистрироватьИзмененияЭлементаДанных(Набор, ПараметрыРегистрации);
КонецЦикла;
ЗавершитьРегистрациюПорцииДанных(ПараметрыРегистрации);
КонецПроцедуры
// Зарегистрировать изменения независимого регистра по таблице значений,
// где колонки - это измерения, а строки - это регистрируемые записи.
//
// Параметры:
// Параметры - см. ОбновлениеИнформационнойБазы.ОсновныеПараметрыОтметкиКОбработке.
// Узел - ПланОбменаСсылка.ОбновлениеИнформационнойБазы.
// Записи - ТаблицаЗначений.
// ВидДанных - Строка.
// ПолноеИмяОбъекта - Строка.
//
Процедура ЗарегистрироватьИзмененияНезависимогоРегистра(Параметры, Узел, Записи, ВидДанных, ПолноеИмяОбъекта)
ПараметрыРегистрации = НовыеПараметрыРегистрации(Параметры, Узел, ВидДанных, ПолноеИмяОбъекта);
МетаданныеРегистра = Метаданные.НайтиПоПолномуИмени(ПолноеИмяОбъекта);
Для Каждого Запись Из Записи Цикл
Набор = ПолучитьПереиспользуемыйНабор(ПараметрыРегистрации.ПереиспользуемыеНаборы);
УстановитьНедостающиеОтборыВНаборе(Набор, МетаданныеРегистра, Записи);
Для Каждого Колонка Из Записи.Колонки Цикл
Набор.Отбор[Колонка.Имя].Значение = Запись[Колонка.Имя];
Набор.Отбор[Колонка.Имя].Использование = Истина;
КонецЦикла;
ЗарегистрироватьИзмененияЭлементаДанных(Набор, ПараметрыРегистрации);
КонецЦикла;
ЗавершитьРегистрациюПорцииДанных(ПараметрыРегистрации);
КонецПроцедуры
// Зарегистрировать элемент данных в таблице регистрации изменений,
// увеличить счетчик зарегистрированных данных
// и записать данные для обновления в файл рИБ (необходимо в случае РИБ с фильтрами).
//
// Параметры:
// Данные - ЛюбаяСсылка
// - РегистрСведенийНаборЗаписей
// - РегистрНакопленияНаборЗаписей
// - РегистрБухгалтерииНаборЗаписей
// - РегистрРасчетаНаборЗаписей.
// ПараметрыРегистрации - см. НовыеПараметрыРегистрации.
//
Процедура ЗарегистрироватьИзмененияЭлементаДанных(Данные, ПараметрыРегистрации)
Если ПараметрыРегистрации.ДоступнаПакетнаяРегистрация Тогда
ПараметрыРегистрации.ДанныеДляРегистрации.Добавить(Данные);
ЗарегистрироватьПакетДанных(ПараметрыРегистрации, ПараметрыРегистрации.ДанныеДляРегистрации);
Иначе
ПланыОбмена.ЗарегистрироватьИзменения(ПараметрыРегистрации.Узел, Данные);
КонецЕсли;
УвеличитьКоличествоЗарегистрированныхДанных(ПараметрыРегистрации.Параметры,
Данные,
ПараметрыРегистрации.ПолноеИмяОбъекта);
Если ПараметрыРегистрации.ЗаписыватьДанныеДляОбновленияВФайл Тогда
ПараметрыРегистрации.МодульОбменДаннымиСервер.ЗаписатьДанныеДляОбновленияВФайл(ПараметрыРегистрации.Параметры,
Данные,
ПараметрыРегистрации.ВидДанных,
ПараметрыРегистрации.ПолноеИмяОбъекта);
КонецЕсли;
КонецПроцедуры
// Зарегистрировать пакет данных, если он уже достаточно большой
// или это нужно сделать принудительно в конце регистрации порции данных.
//
// Параметры:
// ПараметрыРегистрации - см. НовыеПараметрыРегистрации.
// Данные - Массив из ЛюбаяСсылка
// - Массив из РегистрСведенийНаборЗаписей
// - Массив из РегистрНакопленияНаборЗаписей
// - Массив из РегистрБухгалтерииНаборЗаписей
// - Массив из РегистрРасчетаНаборЗаписей.
// Принудительно - Булево - Истина, если нужно зарегистрировать, даже если пакет мал.
// РазмерПакета - Число - если в пакете столько же или больше записей, то он записывается.
//
Процедура ЗарегистрироватьПакетДанных(ПараметрыРегистрации, Данные, Принудительно = Ложь, РазмерПакета = 1000)
Если Данные.Количество() >= РазмерПакета Или Принудительно И Данные.Количество() > 0 Тогда
ПланыОбмена.ЗарегистрироватьИзменения(ПараметрыРегистрации.Узел, Данные);
Данные.Очистить();
Если ПараметрыРегистрации.Свойство("ПереиспользуемыеНаборы") Тогда
ОсвободитьПереиспользуемыеНаборы(ПараметрыРегистрации.ПереиспользуемыеНаборы);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
// Записать оставшуюся порцию данных в конце процесса регистрации, если доступна пакетная регистрация.
//
// Параметры:
// ПараметрыРегистрации - см. НовыеПараметрыРегистрации.
//
Процедура ЗавершитьРегистрациюПорцииДанных(ПараметрыРегистрации)
Если ПараметрыРегистрации.ДоступнаПакетнаяРегистрация Тогда
ЗарегистрироватьПакетДанных(ПараметрыРегистрации, ПараметрыРегистрации.ДанныеДляРегистрации, Истина);
КонецЕсли;
КонецПроцедуры
// Увеличить количество зарегистрированных данных в статистике.
//
// Параметры:
// Параметры - см. ОбновлениеИнформационнойБазы.ОсновныеПараметрыОтметкиКОбработке.
// Данные - ЛюбаяСсылка
// - РегистрСведенийНаборЗаписей
// - РегистрНакопленияНаборЗаписей
// - РегистрБухгалтерииНаборЗаписей
// - РегистрРасчетаНаборЗаписей.
// ПолноеИмяОбъекта - Строка.
//
Процедура УвеличитьКоличествоЗарегистрированныхДанных(Параметры, Данные, ПолноеИмяОбъекта)
Если Параметры.Свойство("ДанныеОбработчика") Тогда Если Параметры.Свойство("ДанныеОбработчика") Тогда
Если Не ЗначениеЗаполнено(ПолноеИмяОбъекта) Тогда Если Не ЗначениеЗаполнено(ПолноеИмяОбъекта) Тогда
@@ -3982,24 +4082,383 @@
КонецЕсли; КонецЕсли;
ДанныеПоОбъекту = Параметры.ДанныеОбработчика[ПолноеИмя]; ДанныеПоОбъекту = Параметры.ДанныеОбработчика[ПолноеИмя];
Если ДанныеПоОбъекту = Неопределено Тогда Если ДанныеПоОбъекту = Неопределено Тогда
ДанныеПоОбъекту = Новый Структура; ДанныеПоОбъекту = Новый Структура;
ДанныеПоОбъекту.Вставить("Количество", 1); ДанныеПоОбъекту.Вставить("Количество", 1);
ДанныеПоОбъекту.Вставить("Очередь", Параметры.Очередь); ДанныеПоОбъекту.Вставить("Очередь", Параметры.Очередь);
Параметры.ДанныеОбработчика.Вставить(ПолноеИмя, ДанныеПоОбъекту); Параметры.ДанныеОбработчика.Вставить(ПолноеИмя, ДанныеПоОбъекту);
Иначе Иначе
Параметры.ДанныеОбработчика[ПолноеИмя].Количество = ДанныеПоОбъекту.Количество + 1; ДанныеПоОбъекту.Количество = ДанныеПоОбъекту.Количество + 1;
КонецЕсли; КонецЕсли;
КонецЕсли; КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ОбменДанными") КонецПроцедуры
// Удалить регистрацию изменений одной или нескольких ссылок.
//
// Параметры:
// Узел - ПланОбменаСсылка.ОбновлениеИнформационнойБазы.
// Ссылки - ЛюбаяСсылка
// - Массив из ЛюбаяСсылка.
//
Процедура УдалитьРегистрациюИзмененийОбъекта(Узел, Ссылки)
ПараметрыУдаления = НовыеПараметрыУдаленияРегистрации(Узел);
Для Каждого Ссылка Из МассивЭлементов(Ссылки) Цикл
УдалитьРегистрациюИзмененийЭлементаДанных(Ссылка, ПараметрыУдаления);
КонецЦикла;
ЗавершитьУдалениеРегистрацииПорцииДанных(ПараметрыУдаления);
КонецПроцедуры
// Удалить регистрацию изменений подчиненного регистра по указанным регистраторам.
//
// Параметры:
// Узел - ПланОбменаСсылка.ОбновлениеИнформационнойБазы.
// Регистраторы - ЛюбаяСсылка
// - Массив из ЛюбаяСсылка.
// ПолноеИмяОбъекта - Строка.
//
Процедура УдалитьРегистрациюИзмененийПодчиненногоРегистра(Узел, Регистраторы, ПолноеИмяОбъекта)
ПараметрыУдаления = НовыеПараметрыУдаленияРегистрации(Узел, ПолноеИмяОбъекта);
Для Каждого Регистратор Из МассивЭлементов(Регистраторы) Цикл
Набор = ПолучитьПереиспользуемыйНабор(ПараметрыУдаления.ПереиспользуемыеНаборы);
Набор.Отбор.Регистратор.Установить(Регистратор);
УдалитьРегистрациюИзмененийЭлементаДанных(Набор, ПараметрыУдаления);
КонецЦикла;
ЗавершитьУдалениеРегистрацииПорцииДанных(ПараметрыУдаления);
КонецПроцедуры
// Удалить регистрацию изменений независимого регистра по таблице значений.
//
// Параметры:
// Узел - ПланОбменаСсылка.ОбновлениеИнформационнойБазы.
// Записи - ТаблицаЗначений.
// ПолноеИмяОбъекта - Строка.
//
Процедура УдалитьРегистрациюИзмененийНезависимогоРегистра(Узел, Записи, ПолноеИмяОбъекта)
ПараметрыУдаления = НовыеПараметрыУдаленияРегистрации(Узел, ПолноеИмяОбъекта);
МетаданныеРегистра = Метаданные.НайтиПоПолномуИмени(ПолноеИмяОбъекта);
Для Каждого Запись Из Записи Цикл
Набор = ПолучитьПереиспользуемыйНабор(ПараметрыУдаления.ПереиспользуемыеНаборы);
УстановитьНедостающиеОтборыВНаборе(Набор, МетаданныеРегистра, Записи);
Для Каждого Колонка Из Записи.Колонки Цикл
Набор.Отбор[Колонка.Имя].Значение = Запись[Колонка.Имя];
Набор.Отбор[Колонка.Имя].Использование = Истина;
КонецЦикла;
УдалитьРегистрациюИзмененийЭлементаДанных(Набор, ПараметрыУдаления);
КонецЦикла;
ЗавершитьУдалениеРегистрацииПорцииДанных(ПараметрыУдаления);
КонецПроцедуры
// Удалить регистрацию пакета данных, если он уже достаточно большой
// или это нужно сделать принудительно в конце удаления регистрации порции данных.
//
// Параметры:
// ПараметрыУдаления - см. НовыеПараметрыУдаленияРегистрации.
// Данные - Массив из ЛюбаяСсылка
// - Массив из РегистрСведенийНаборЗаписей
// - Массив из РегистрНакопленияНаборЗаписей
// - Массив из РегистрБухгалтерииНаборЗаписей
// - Массив из РегистрРасчетаНаборЗаписей.
// Принудительно - Булево - Истина, если нужно удалить, даже если пакет мал.
// РазмерПакета - Число - если в пакете столько же или больше записей, то он удаляется.
//
Процедура УдалитьРегистрациюИзмененийПакетаДанных(ПараметрыУдаления, Данные, Принудительно = Ложь, РазмерПакета = 1000)
Если Данные.Количество() >= РазмерПакета Или Принудительно И Данные.Количество() > 0 Тогда
ПланыОбмена.УдалитьРегистрациюИзменений(ПараметрыУдаления.Узел, Данные);
Данные.Очистить();
Если ПараметрыУдаления.Свойство("ПереиспользуемыеНаборы") Тогда
ОсвободитьПереиспользуемыеНаборы(ПараметрыУдаления.ПереиспользуемыеНаборы);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
// Удалить регистрацию элемента данных в таблице регистрации изменений.
//
// Параметры:
// Данные - ЛюбаяСсылка
// - РегистрСведенийНаборЗаписей
// - РегистрНакопленияНаборЗаписей
// - РегистрБухгалтерииНаборЗаписей
// - РегистрРасчетаНаборЗаписей.
// ПараметрыУдаления - см. НовыеПараметрыУдаленияРегистрации.
//
Процедура УдалитьРегистрациюИзмененийЭлементаДанных(Данные, ПараметрыУдаления)
Если ПараметрыУдаления.ДоступнаПакетнаяРегистрация Тогда
ПараметрыУдаления.ДанныеДляУдаления.Добавить(Данные);
УдалитьРегистрациюИзмененийПакетаДанных(ПараметрыУдаления, ПараметрыУдаления.ДанныеДляУдаления);
Иначе
ПланыОбмена.УдалитьРегистрациюИзменений(ПараметрыУдаления.Узел, Данные);
КонецЕсли;
КонецПроцедуры
// Удалить оставшуюся порцию данных в конце процесса удаления регистрации, если доступна пакетная регистрация.
//
// Параметры:
// ПараметрыУдаления - см. НовыеПараметрыУдаленияРегистрации.
//
Процедура ЗавершитьУдалениеРегистрацииПорцииДанных(ПараметрыУдаления)
Если ПараметрыУдаления.ДоступнаПакетнаяРегистрация Тогда
УдалитьРегистрациюИзмененийПакетаДанных(ПараметрыУдаления, ПараметрыУдаления.ДанныеДляУдаления, Истина);
КонецЕсли;
КонецПроцедуры
// Доступна ли платформа с оптимизированной пакетной регистрацией.
//
// Возвращаемое значение:
// Булево - Истина - быстрая пакетная регистрация доступна.
//
Функция ДоступнаПакетнаяРегистрация()
СистемнаяИнформация = Новый СистемнаяИнформация;
Возврат ОбщегоНазначенияКлиентСервер.СравнитьВерсии(СистемнаяИнформация.ВерсияПриложения, "8.3.19.725") >= 0;
КонецФункции
// Необходимо ли записывать данные для обновления в файл при использовании РИБ с фильтрами.
//
// Возвращаемое значение:
// Булево - Истина - необходимо записывать данные в файл для РИБ.
//
Функция ЗаписыватьДанныеДляОбновленияВФайл(Параметры)
Возврат ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ОбменДанными")
И СтандартныеПодсистемыПовтИсп.ИспользуетсяРИБ("СФильтром") И СтандартныеПодсистемыПовтИсп.ИспользуетсяРИБ("СФильтром")
И Не Параметры.ПовторнаяРегистрация И Не Параметры.ПовторнаяРегистрация
И Не ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ() Тогда И Не ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ();
МодульОбменДаннымиСервер = ОбщегоНазначения.ОбщийМодуль("ОбменДаннымиСервер");
МодульОбменДаннымиСервер.ЗаписатьДанныеДляОбновленияВФайл(Параметры, Данные, ВидДанных, ПолноеИмяОбъекта); КонецФункции
// Получить общий модуль ОбменДаннымиСервер, если он доступен.
//
// Возвращаемое значение:
// ОбщийМодуль.
//
Функция МодульОбменДаннымиСервер(ЗаписыватьДанныеДляОбновленияВФайл)
Возврат ?(ЗаписыватьДанныеДляОбновленияВФайл, ОбщегоНазначения.ОбщийМодуль("ОбменДаннымиСервер"), Неопределено);
КонецФункции
// Вернуть массив элементов, даже если передан один элемент.
//
// Параметры:
// Элементы - Массив
// - Произвольный.
//
// Возвращаемое значение:
// Массив.
//
Функция МассивЭлементов(Элементы)
Если ТипЗнч(Элементы) <> Тип("Массив") Тогда
МассивЭлементов = Новый Массив;
МассивЭлементов.Добавить(Элементы);
Иначе
МассивЭлементов = Элементы;
КонецЕсли; КонецЕсли;
Возврат МассивЭлементов;
КонецФункции
// Структура с контекстом регистрации данных на плане обмена.
//
// Параметры:
// Узел - ПланОбменаСсылка.ОбновлениеИнформационнойБазы.
// ВидДанных - Строка.
// ПолноеИмяОбъекта - Строка.
//
// Возвращаемое значение:
// Структура:
// * Параметры - см. ОбновлениеИнформационнойБазы.ОсновныеПараметрыОтметкиКОбработке.
// * Узел - ПланОбменаСсылка.ОбновлениеИнформационнойБазы.
// * ВидДанных - Строка.
// * ПолноеИмяОбъекта - Строка.
// * ДанныеДляРегистрации - Массив.
// * МенеджерОбъекта - ДокументМенеджер
// - СправочникМенеджер
// - ПланВидовХарактеристикМенеджер
// - ПланСчетовМенеджер
// - ПланыВидовРасчетаМенеджер
// - БизнесПроцессМенеджер
// - ЗадачаМенеджер
// - РегистрСведенийМенеджер
// - РегистрНакопленияМенеджер
// - РегистрБухгалтерииМенеджер
// - РегистрРасчетаМенеджер.
// * ДоступнаПакетнаяРегистрация - Булево.
// * ЗаписыватьДанныеДляОбновленияВФайл - Булево.
// * МодульОбменДаннымиСервер - ОбщийМодуль.
//
Функция НовыеПараметрыРегистрации(Параметры, Узел, ВидДанных, ПолноеИмяОбъекта)
ПараметрыРегистрации = Новый Структура;
ПараметрыРегистрации.Вставить("Параметры", Параметры);
ПараметрыРегистрации.Вставить("Узел", Узел);
ПараметрыРегистрации.Вставить("ВидДанных", ВидДанных);
ПараметрыРегистрации.Вставить("ПолноеИмяОбъекта", ПолноеИмяОбъекта);
ПараметрыРегистрации.Вставить("ДанныеДляРегистрации", Новый Массив);
ПараметрыРегистрации.Вставить("ДоступнаПакетнаяРегистрация", ДоступнаПакетнаяРегистрация());
ПараметрыРегистрации.Вставить("ЗаписыватьДанныеДляОбновленияВФайл", ЗаписыватьДанныеДляОбновленияВФайл(Параметры));
ПараметрыРегистрации.Вставить("МодульОбменДаннымиСервер",
МодульОбменДаннымиСервер(ПараметрыРегистрации.ЗаписыватьДанныеДляОбновленияВФайл));
МенеджерОбъекта = Неопределено;
Если ЗначениеЗаполнено(ПолноеИмяОбъекта) Тогда
МенеджерОбъекта = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ПолноеИмяОбъекта);
Если ОбщегоНазначения.ЭтоРегистр(Метаданные.НайтиПоПолномуИмени(ПолноеИмяОбъекта)) Тогда
ПараметрыРегистрации.Вставить("ПереиспользуемыеНаборы", НовыеПереиспользуемыеНаборы(МенеджерОбъекта));
КонецЕсли;
КонецЕсли;
ПараметрыРегистрации.Вставить("МенеджерОбъекта", МенеджерОбъекта);
Возврат ПараметрыРегистрации;
КонецФункции
// Структура с контекстом удаления регистрации данных с плана обмена.
//
// Параметры:
// Узел - ПланОбменаСсылка.ОбновлениеИнформационнойБазы.
// ПолноеИмяОбъекта - Строка.
//
// Возвращаемое значение:
// Структура:
// * Узел - ПланОбменаСсылка.ОбновлениеИнформационнойБазы.
// * ПолноеИмяОбъекта - Строка.
// * ДанныеДляУдаления - Массив.
// * МенеджерОбъекта - ДокументМенеджер
// - СправочникМенеджер
// - ПланВидовХарактеристикМенеджер
// - ПланСчетовМенеджер
// - ПланыВидовРасчетаМенеджер
// - БизнесПроцессМенеджер
// - ЗадачаМенеджер
// - РегистрСведенийМенеджер
// - РегистрНакопленияМенеджер
// - РегистрБухгалтерииМенеджер
// - РегистрРасчетаМенеджер.
// * ДоступнаПакетнаяРегистрация - Булево.
//
Функция НовыеПараметрыУдаленияРегистрации(Узел, ПолноеИмяОбъекта = "")
ПараметрыУдаления = Новый Структура;
ПараметрыУдаления.Вставить("Узел", Узел);
ПараметрыУдаления.Вставить("ПолноеИмяОбъекта", ПолноеИмяОбъекта);
ПараметрыУдаления.Вставить("ДанныеДляУдаления", Новый Массив);
ПараметрыУдаления.Вставить("ДоступнаПакетнаяРегистрация", ДоступнаПакетнаяРегистрация());
МенеджерОбъекта = Неопределено;
Если ЗначениеЗаполнено(ПолноеИмяОбъекта) Тогда
МенеджерОбъекта = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ПолноеИмяОбъекта);
Если ОбщегоНазначения.ЭтоРегистр(Метаданные.НайтиПоПолномуИмени(ПолноеИмяОбъекта)) Тогда
ПараметрыУдаления.Вставить("ПереиспользуемыеНаборы", НовыеПереиспользуемыеНаборы(МенеджерОбъекта));
КонецЕсли;
КонецЕсли;
ПараметрыУдаления.Вставить("МенеджерОбъекта", МенеджерОбъекта);
Возврат ПараметрыУдаления;
КонецФункции
// Новая коллекция переиспользуемых наборов.
//
// Параметры:
// Менеджер - РегистрСведенийМенеджер
// - РегистрНакопленияМенеджер
// - РегистрРасчетаМенеджер
// - РегистрБухгалтерииМенеджер - менеджер для создания наборов.
// Размер - Число - начальное количество хранилища переиспользуемых наборов.
//
// Возвращаемое значение:
// Структура:
// * Наборы - Массив - переиспользуемые наборы.
// * Создано - Число - количество созданных наборов.
// * Выдано - Число - количество выданных наборов.
//
Функция НовыеПереиспользуемыеНаборы(Менеджер, Размер = 1000)
ПереиспользуемыеОбъекты = Новый Структура;
ПереиспользуемыеОбъекты.Вставить("Менеджер", Менеджер);
ПереиспользуемыеОбъекты.Вставить("Наборы", Новый Массив(Размер));
ПереиспользуемыеОбъекты.Вставить("Создано", 0);
ПереиспользуемыеОбъекты.Вставить("Выдано", 0);
Возврат ПереиспользуемыеОбъекты;
КонецФункции
// Получить ранее созданный переиспользуемый набор или создать новый и получить его.
//
// Параметры:
// ПереиспользуемыеНаборы - см. НовыеПереиспользуемыеНаборы.
//
// Возвращаемое значение:
// - РегистрСведенийНаборЗаписей
// - РегистрНакопленияНаборЗаписей
// - РегистрРасчетаНаборЗаписей
// - РегистрБухгалтерииНаборЗаписей - готовый к работе набор.
//
Функция ПолучитьПереиспользуемыйНабор(ПереиспользуемыеНаборы)
Если ПереиспользуемыеНаборы.Создано = ПереиспользуемыеНаборы.Выдано Тогда
НовыйНабор = ПереиспользуемыеНаборы.Менеджер.СоздатьНаборЗаписей();
Если ПереиспользуемыеНаборы.Создано > ПереиспользуемыеНаборы.Наборы.ВГраница() Тогда
ПереиспользуемыеНаборы.Наборы.Добавить(НовыйНабор);
Иначе
ПереиспользуемыеНаборы.Наборы[ПереиспользуемыеНаборы.Создано] = НовыйНабор;
КонецЕсли;
ПереиспользуемыеНаборы.Создано = ПереиспользуемыеНаборы.Создано + 1;
КонецЕсли;
ВозвращаемыйНабор = ПереиспользуемыеНаборы.Наборы[ПереиспользуемыеНаборы.Выдано];
ПереиспользуемыеНаборы.Выдано = ПереиспользуемыеНаборы.Выдано + 1;
Возврат ВозвращаемыйНабор;
КонецФункции
// Освободить ранее занятые переиспользуемые наборы.
//
// Параметры:
// ПереиспользуемыеНаборы - см. НовыеПереиспользуемыеНаборы.
//
Процедура ОсвободитьПереиспользуемыеНаборы(ПереиспользуемыеНаборы)
ПереиспользуемыеНаборы.Выдано = 0;
КонецПроцедуры КонецПроцедуры
Функция УзлыМеньшейОчереди(Очередь) Функция УзлыМеньшейОчереди(Очередь)
@@ -41,7 +41,7 @@
Процедура ПриДобавленииПодсистемы(Описание) Экспорт Процедура ПриДобавленииПодсистемы(Описание) Экспорт
Описание.Имя = "СтандартныеПодсистемы"; Описание.Имя = "СтандартныеПодсистемы";
Описание.Версия = "3.1.5.171"; Описание.Версия = "3.1.5.180";
Описание.ИдентификаторИнтернетПоддержки = "SSL"; Описание.ИдентификаторИнтернетПоддержки = "SSL";
Описание.РежимВыполненияОтложенныхОбработчиков = "Параллельно"; Описание.РежимВыполненияОтложенныхОбработчиков = "Параллельно";
Описание.ПараллельноеОтложенноеОбновлениеСВерсии = "2.3.3.0"; Описание.ПараллельноеОтложенноеОбновлениеСВерсии = "2.3.3.0";
@@ -7295,6 +7295,7 @@
ДополнитьКонтекстМногопоточногоОбработчика(КонтекстОбработчика); ДополнитьКонтекстМногопоточногоОбработчика(КонтекстОбработчика);
ОбрабатываемыеДанные = ОбработчикОбновления.ОбрабатываемыеДанные.Получить(); ОбрабатываемыеДанные = ОбработчикОбновления.ОбрабатываемыеДанные.Получить();
ПараметрыВыборки = ОбрабатываемыеДанные.ПараметрыВыборки; ПараметрыВыборки = ОбрабатываемыеДанные.ПараметрыВыборки;
ПроверитьПараметрыВыборки(ПараметрыВыборки);
ПараметрыВыборки.МаксимумВыборки = ОбновлениеИнформационнойБазы.МаксимальноеКоличествоЗаписейВВыборке(); ПараметрыВыборки.МаксимумВыборки = ОбновлениеИнформационнойБазы.МаксимальноеКоличествоЗаписейВВыборке();
ПараметрыПоиска = НовыеПараметрыПоискаПорции(); ПараметрыПоиска = НовыеПараметрыПоискаПорции();
ПараметрыПоиска.ПараметрыВыборки = ПараметрыВыборки; ПараметрыПоиска.ПараметрыВыборки = ПараметрыВыборки;
@@ -7355,6 +7356,7 @@
ОбработатьИсключениеОбработчика(КонтекстОбработчика, ОбработчикОбновления, ИнформацияОбОшибке()); ОбработатьИсключениеОбработчика(КонтекстОбработчика, ОбработчикОбновления, ИнформацияОбОшибке());
// Если обработчик вызвал исключение, то вызываем процедуру завершения обработчика. // Если обработчик вызвал исключение, то вызываем процедуру завершения обработчика.
Если Не ОбработчикВыполнилсяБезОшибок Тогда Если Не ОбработчикВыполнилсяБезОшибок Тогда
КонтекстОбработчика.Вставить("ОбработкаИсключенияОбработчика");
ЗавершитьВыполнениеОтложенногоОбработчика(КонтекстОбработчика, АдресРезультата); ЗавершитьВыполнениеОтложенногоОбработчика(КонтекстОбработчика, АдресРезультата);
КонецЕсли; КонецЕсли;
КонецПопытки; КонецПопытки;
@@ -7672,7 +7674,8 @@
СтатистикаВыполнения = ОбработчикОбновления.СтатистикаВыполнения.Получить(); СтатистикаВыполнения = ОбработчикОбновления.СтатистикаВыполнения.Получить();
ДобавитьКоличествоЗапусков = Истина; ДобавитьКоличествоЗапусков = Истина;
Если Параметры.ОбработкаЗавершена Тогда Если Параметры.ОбработкаЗавершена
И Не КонтекстОбработчика.Свойство("ОбработкаИсключенияОбработчика") Тогда
СтатистикаВыполнения.Вставить("ЗавершениеОбработкиДанных", ТекущаяДатаСеанса()); СтатистикаВыполнения.Вставить("ЗавершениеОбработкиДанных", ТекущаяДатаСеанса());
УстанавливаемыеСвойства.Вставить("Статус", Перечисления.СтатусыОбработчиковОбновления.Выполнен); УстанавливаемыеСвойства.Вставить("Статус", Перечисления.СтатусыОбработчиковОбновления.Выполнен);
@@ -685,6 +685,7 @@
Для Каждого ЗначениеРеквизита Из Значения Цикл Для Каждого ЗначениеРеквизита Из Значения Цикл
Значение = ЗначениеРеквизита.Значение; Значение = ЗначениеРеквизита.Значение;
Если ТипЗнч(Значение) = Тип("Строка") И СтрокаВВидеНСтр(Значение) Тогда Если ТипЗнч(Значение) = Тип("Строка") И СтрокаВВидеНСтр(Значение) Тогда
//@skip-warning
Значение = НСтр(ЗначениеРеквизита.Значение); Значение = НСтр(ЗначениеРеквизита.Значение);
КонецЕсли; КонецЕсли;
Объект[ЗначениеРеквизита.Ключ] = Значение; Объект[ЗначениеРеквизита.Ключ] = Значение;
@@ -8,14 +8,20 @@
#Область ПрограммныйИнтерфейс #Область ПрограммныйИнтерфейс
// Открывает форму для отправки нового SMS. // Вызывается перед открытием формы отправки SMS.
// //
// Параметры: // Параметры:
// НомераПолучателей - Массив - номера получателей в формате +<КодСтраны><КодDEF><номер>(строкой); // НомераПолучателей - Массив из Структура:
// Текст - Строка - текст сообщения, длиной не более 1000 символов; // * Телефон - Строка - номер получателя в формате +<КодСтраны><КодDEF><номер>;
// * Представление - Строка - представление номера телефона;
// * ИсточникКонтактнойИнформации - СправочникСсылка - владелец номера телефона.
//
// Текст - Строка - текст сообщения, длиной не более 1000 символов.
//
// ДополнительныеПараметры - Структура - дополнительные параметры отправки SMS: // ДополнительныеПараметры - Структура - дополнительные параметры отправки SMS:
// * ИмяОтправителя - Строка - имя отправителя, которое будет отображаться вместо номера у получателей. // * ИмяОтправителя - Строка - имя отправителя, которое будет отображаться вместо номера у получателей;
// * ПеревестиВТранслит - Булево - Истина, если требуется переводить текст сообщения в транслит перед отправкой. // * ПеревестиВТранслит - Булево - Истина, если требуется переводить текст сообщения в транслит перед отправкой.
//
// СтандартнаяОбработка - Булево - флаг необходимости выполнения стандартной обработки отправки SMS. // СтандартнаяОбработка - Булево - флаг необходимости выполнения стандартной обработки отправки SMS.
// //
Процедура ПриОтправкеSMS(НомераПолучателей, Текст, ДополнительныеПараметры, СтандартнаяОбработка) Экспорт Процедура ПриОтправкеSMS(НомераПолучателей, Текст, ДополнительныеПараметры, СтандартнаяОбработка) Экспорт
@@ -1740,6 +1740,12 @@
КонецЕсли; КонецЕсли;
ЭлементФлажка = ЭлементФлажка[0]; ЭлементФлажка = ЭлементФлажка[0];
Если ТипЗнч(ЭлементФлажка.ДоступныеЗначения) = Тип("СписокЗначений")
И ЭлементФлажка.ДоступныеЗначения.Количество() > 0 Тогда
Продолжить;
КонецЕсли;
Если ТипЗнч(ЭлементФлажка.Поле) <> Тип("ДекорацияФормы") Тогда Если ТипЗнч(ЭлементФлажка.Поле) <> Тип("ДекорацияФормы") Тогда
Продолжить; Продолжить;
КонецЕсли; КонецЕсли;
@@ -1934,7 +1940,11 @@
ИначеЕсли РасширенноеОписаниеТипа.СодержитТипДата Тогда ИначеЕсли РасширенноеОписаниеТипа.СодержитТипДата Тогда
Поле.МаксимальнаяШирина = 25; Поле.МаксимальнаяШирина = 25;
ИначеЕсли РасширенноеОписаниеТипа.СодержитТипБулево Тогда ИначеЕсли РасширенноеОписаниеТипа.СодержитТипБулево Тогда
Если Поле.СписокВыбора.Количество() = 0 Тогда
Поле.МаксимальнаяШирина = 5; Поле.МаксимальнаяШирина = 5;
Иначе
Поле.РастягиватьПоГоризонтали = Ложь;
КонецЕсли;
КонецЕсли; КонецЕсли;
КонецЕсли; КонецЕсли;
КонецЕсли; КонецЕсли;
@@ -616,9 +616,12 @@
ПрисоединенныйФайл.ДатаСоздания = ТекущаяДатаСеанса(); ПрисоединенныйФайл.ДатаСоздания = ТекущаяДатаСеанса();
ПрисоединенныйФайл.Описание = Описание; ПрисоединенныйФайл.Описание = Описание;
ПрисоединенныйФайл.Наименование = ИмяБезРасширения; ПрисоединенныйФайл.Наименование = ИмяБезРасширения;
ПрисоединенныйФайл.Расширение = РасширениеБезТочки;
ПрисоединенныйФайл.ТипХраненияФайла = РаботаСФайламиСлужебный.ТипХраненияФайлов();
ПрисоединенныйФайл.Размер = ДвоичныеДанные.Размер(); ПрисоединенныйФайл.Размер = ДвоичныеДанные.Размер();
ПрисоединенныйФайл.Расширение = РасширениеБезТочки;
ПрисоединенныйФайл.ТипХраненияФайла = РаботаСФайламиСлужебный.ТипХраненияФайлов(
ПрисоединенныйФайл.Размер,
ПрисоединенныйФайл.Расширение);
ПрисоединенныйФайл.Изменил = ПараметрыФайла.Автор; ПрисоединенныйФайл.Изменил = ПараметрыФайла.Автор;
ПрисоединенныйФайл.ХранитьВерсии = ХранитьВерсии; ПрисоединенныйФайл.ХранитьВерсии = ХранитьВерсии;
@@ -648,33 +651,25 @@
ПрисоединенныйФайл.СтатусИзвлеченияТекста = Перечисления.СтатусыИзвлеченияТекстаФайлов.НеИзвлечен; ПрисоединенныйФайл.СтатусИзвлеченияТекста = Перечисления.СтатусыИзвлеченияТекстаФайлов.НеИзвлечен;
КонецЕсли; КонецЕсли;
СохраняетсяПредварительноНаДиск = Ложь;
Если ПрисоединенныйФайл.ТипХраненияФайла = Перечисления.ТипыХраненияФайлов.ВТомахНаДиске Тогда
СохраняетсяПредварительноНаДиск = (РаботаСФайламиВТомахСлужебный.ТипХраненияФайла(РасширениеБезТочки, ПрисоединенныйФайл.Размер) = Перечисления.ТипыХраненияФайлов.ВТомахНаДиске);
// Сохранение файла на диск выполняется вне транзакции
Если СохраняетсяПредварительноНаДиск Тогда
УстановитьОтключениеБезопасногоРежима(Истина);
РаботаСФайламиВТомахСлужебный.ДобавитьФайл(ПрисоединенныйФайл, ДвоичныеДанные);
УстановитьОтключениеБезопасногоРежима(Ложь);
КонецЕсли;
КонецЕсли;
НачатьТранзакцию();
Попытка
Если Не ЗначениеЗаполнено(ПрисоединенныйФайл.Изменил) Тогда Если Не ЗначениеЗаполнено(ПрисоединенныйФайл.Изменил) Тогда
ПрисоединенныйФайл.Изменил = Пользователи.АвторизованныйПользователь(); ПрисоединенныйФайл.Изменил = Пользователи.АвторизованныйПользователь();
КонецЕсли; КонецЕсли;
Контекст = РаботаСФайламиСлужебный.КонтекстОбновленияФайла(ПрисоединенныйФайл, АдресФайлаВоВременномХранилище, НоваяСсылкаНаФайл);
МенеджерФайла = РаботаСФайламиСлужебный.МенеджерФайлов(ПрисоединенныйФайл);
МенеджерФайла.ПередОбновлениемДанныхФайла(Контекст);
НачатьТранзакцию();
Попытка
МенеджерФайла.ПередЗаписьюДанныхФайла(Контекст, ПрисоединенныйФайл);
ПрисоединенныйФайл.Записать(); ПрисоединенныйФайл.Записать();
Если ХранитьВерсии Тогда Если ХранитьВерсии Тогда
// Файлы с поддержкой версий Если ПрисоединенныйФайл.ТипХраненияФайла = Перечисления.ТипыХраненияФайлов.ВТомахНаДиске Тогда
Если СохраняетсяПредварительноНаДиск Тогда СвойстваФайла = РаботаСФайламиВТомахСлужебный.СвойстваФайлаВТоме(ПрисоединенныйФайл.Ссылка);
АдресФайлаВоВременномХранилище = РаботаСФайламиВТомахСлужебный.ПолноеИмяФайлаВТоме(ПрисоединенныйФайл); АдресФайлаВоВременномХранилище = РаботаСФайламиВТомахСлужебный.ПолноеИмяФайлаВТоме(СвойстваФайла);
ИсходныйФайл = Новый Файл(АдресФайлаВоВременномХранилище); ИсходныйФайл = Новый Файл(АдресФайлаВоВременномХранилище);
СведенияОФайле = РаботаСФайламиКлиентСервер.СведенияОФайле("ФайлСВерсией", ИсходныйФайл); СведенияОФайле = РаботаСФайламиКлиентСервер.СведенияОФайле("ФайлСВерсией", ИсходныйФайл);
Иначе Иначе
@@ -684,30 +679,17 @@
СведенияОФайле.Размер = ПрисоединенныйФайл.Размер; СведенияОФайле.Размер = ПрисоединенныйФайл.Размер;
КонецЕсли; КонецЕсли;
СведенияОФайле.АдресВременногоХранилищаФайла = АдресФайлаВоВременномХранилище; СведенияОФайле.АдресВременногоХранилищаФайла = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(
Контекст,
"ПутьКФайлу",
АдресФайлаВоВременномХранилище);
СведенияОФайле.АдресВременногоХранилищаТекста = АдресВременногоХранилищаТекста; СведенияОФайле.АдресВременногоХранилищаТекста = АдресВременногоХранилищаТекста;
СведенияОФайле.ЗаписатьВИсторию = Истина; СведенияОФайле.ЗаписатьВИсторию = Истина;
Версия = РаботаСФайламиСлужебный.СоздатьВерсию(ПрисоединенныйФайл.Ссылка, СведенияОФайле); Версия = РаботаСФайламиСлужебный.СоздатьВерсию(ПрисоединенныйФайл.Ссылка, СведенияОФайле);
РаботаСФайламиСлужебный.ОбновитьВерсиюВФайле(ПрисоединенныйФайл.Ссылка, Версия, АдресВременногоХранилищаТекста); РаботаСФайламиСлужебный.ОбновитьВерсиюВФайле(ПрисоединенныйФайл.Ссылка, Версия, АдресВременногоХранилищаТекста);
Иначе Иначе
МенеджерФайла.ПриОбновленииДанныхФайла(Контекст, ПрисоединенныйФайл.Ссылка);
// Присоединенные файлы без версий
Если ПрисоединенныйФайл.ТипХраненияФайла = Перечисления.ТипыХраненияФайлов.ВИнформационнойБазе Тогда
РаботаСФайламиСлужебный.ЗаписатьФайлВИнформационнуюБазу(ПрисоединенныйФайл.Ссылка, ДвоичныеДанные);
Иначе
Если Не СохраняетсяПредварительноНаДиск Тогда
УстановитьОтключениеБезопасногоРежима(Истина);
РаботаСФайламиВТомахСлужебный.ДобавитьФайл(ПрисоединенныйФайл, ДвоичныеДанные);
УстановитьОтключениеБезопасногоРежима(Ложь);
КонецЕсли;
КонецЕсли;
ПрисоединенныйФайл.Записать();
КонецЕсли; КонецЕсли;
ЗафиксироватьТранзакцию(); ЗафиксироватьТранзакцию();
@@ -715,6 +697,7 @@
Исключение Исключение
ОтменитьТранзакцию(); ОтменитьТранзакцию();
ИнформацияОбОшибке = ИнформацияОбОшибке(); ИнформацияОбОшибке = ИнформацияОбОшибке();
ШаблонСообщения = НСтр("ru = 'Ошибка при добавлении присоединенного файла ""%1"": ШаблонСообщения = НСтр("ru = 'Ошибка при добавлении присоединенного файла ""%1"":
@@ -732,9 +715,7 @@
, ,
КомментарийЖурналаРегистрации); КомментарийЖурналаРегистрации);
Если СохраняетсяПредварительноНаДиск Тогда МенеджерФайла.ПослеОбновленияДанныхФайла(Контекст, Ложь);
РаботаСФайламиВТомахСлужебный.УдалитьФайл(РаботаСФайламиВТомахСлужебный.ПолноеИмяФайлаВТоме(ПрисоединенныйФайл));
КонецЕсли;
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
ШаблонСообщения, ШаблонСообщения,
@@ -743,6 +724,8 @@
КонецПопытки; КонецПопытки;
МенеджерФайла.ПослеОбновленияДанныхФайла(Контекст, Истина);
РаботаСФайламиПереопределяемый.ПриСозданииФайла(ПрисоединенныйФайл.Ссылка); РаботаСФайламиПереопределяемый.ПриСозданииФайла(ПрисоединенныйФайл.Ссылка);
Возврат ПрисоединенныйФайл.Ссылка; Возврат ПрисоединенныйФайл.Ссылка;
@@ -91,9 +91,11 @@
// Перед добавлением файла должны быть заполнены свойства: // Перед добавлением файла должны быть заполнены свойства:
// * Ссылка - ОпределяемыйТип.ПрисоединенныйФайл - ссылка на элемент справочника с файлами. // * Ссылка - ОпределяемыйТип.ПрисоединенныйФайл - ссылка на элемент справочника с файлами.
// * Наименование - Строка - наименование добавляемого файла. // * Наименование - Строка - наименование добавляемого файла.
// * Размер - Число - размер файла.
// * Расширение - Строка - расширение добавляемого файла. // * Расширение - Строка - расширение добавляемого файла.
// * ВладелецФайла - ОпределяемыйТип.ВладелецПрисоединенныхФайлов - ссылка на владельца файла. // * ВладелецФайла - ОпределяемыйТип.ВладелецПрисоединенныхФайлов - ссылка на владельца файла.
// * ДатаМодификацииУниверсальная - Дата - дата изменения файла. // * ДатаМодификацииУниверсальная - Дата - дата изменения файла.
// * ДополнительныеСвойства - Структура
// После добавления можно анализировать свойства: // После добавления можно анализировать свойства:
// * ТипХраненияФайла - ПеречислениеСсылка.ТипыХраненияФайлов - тип хранения данных файла. // * ТипХраненияФайла - ПеречислениеСсылка.ТипыХраненияФайлов - тип хранения данных файла.
// * Том - СправочникСсылка.ТомаХраненияФайлов - том, в который был добавлен файл. // * Том - СправочникСсылка.ТомаХраненияФайлов - том, в который был добавлен файл.
@@ -107,11 +109,13 @@
ПараметрыФайла.Вставить("Том", Справочники.ТомаХраненияФайлов.ПустаяСсылка()); ПараметрыФайла.Вставить("Том", Справочники.ТомаХраненияФайлов.ПустаяСсылка());
ПараметрыФайла.Вставить("ПутьКФайлу", ""); ПараметрыФайла.Вставить("ПутьКФайлу", "");
ПараметрыФайла.Вставить("Расширение", Неопределено); ПараметрыФайла.Вставить("Расширение", Неопределено);
ПараметрыФайла.Вставить("Размер", 0);
ПараметрыФайла.Вставить("Наименование", ""); ПараметрыФайла.Вставить("Наименование", "");
ПараметрыФайла.Вставить("ХранимыйФайл", Неопределено); ПараметрыФайла.Вставить("ХранимыйФайл", Неопределено);
ПараметрыФайла.Вставить("ВладелецФайла", Неопределено); ПараметрыФайла.Вставить("ВладелецФайла", Неопределено);
ПараметрыФайла.Вставить("ТипХраненияФайла", Неопределено); ПараметрыФайла.Вставить("ТипХраненияФайла", Неопределено);
ПараметрыФайла.Вставить("ДатаМодификацииУниверсальная", Неопределено); ПараметрыФайла.Вставить("ДатаМодификацииУниверсальная", Неопределено);
ПараметрыФайла.Вставить("ДополнительныеСвойства", Новый Структура);
Возврат ПараметрыФайла; Возврат ПараметрыФайла;
@@ -142,7 +146,7 @@
Процедура ДобавитьФайл(ПрисоединенныйФайл, ДвоичныеДанныеИлиПуть, Процедура ДобавитьФайл(ПрисоединенныйФайл, ДвоичныеДанныеИлиПуть,
ДатаДляРазмещенияВТоме = Неопределено, ЗаполнятьСлужебныйРеквизитХранилище = Ложь, ТомДляРазмещения = Неопределено) Экспорт ДатаДляРазмещенияВТоме = Неопределено, ЗаполнятьСлужебныйРеквизитХранилище = Ложь, ТомДляРазмещения = Неопределено) Экспорт
ЗаполнитьСведенияОФайле(ПрисоединенныйФайл, ДвоичныеДанныеИлиПуть, ДатаДляРазмещенияВТоме, ЗаполнятьСлужебныйРеквизитХранилище, ТомДляРазмещения); ЗаполнитьСведенияОФайле(ПрисоединенныйФайл, ДвоичныеДанныеИлиПуть, ДатаДляРазмещенияВТоме, ЗаполнятьСлужебныйРеквизитХранилище);
Если НЕ ПрисоединенныйФайл.ТипХраненияФайла = Перечисления.ТипыХраненияФайлов.ВИнформационнойБазе Тогда Если НЕ ПрисоединенныйФайл.ТипХраненияФайла = Перечисления.ТипыХраненияФайлов.ВИнформационнойБазе Тогда
ЗаписатьДанныеФайлаВТом(ПрисоединенныйФайл, ДвоичныеДанныеИлиПуть); ЗаписатьДанныеФайлаВТом(ПрисоединенныйФайл, ДвоичныеДанныеИлиПуть);
@@ -177,7 +181,7 @@
// иначе - том будет выбран автоматически. // иначе - том будет выбран автоматически.
// //
Процедура ЗаполнитьСведенияОФайле(ПрисоединенныйФайл, ДвоичныеДанныеИлиПуть, Процедура ЗаполнитьСведенияОФайле(ПрисоединенныйФайл, ДвоичныеДанныеИлиПуть,
ДатаДляРазмещенияВТоме = Неопределено, ЗаполнятьСлужебныйРеквизитХранилище = Ложь, ТомДляРазмещения = Неопределено) Экспорт ДатаДляРазмещенияВТоме = Неопределено, ЗаполнятьСлужебныйРеквизитХранилище = Ложь) Экспорт
ОжидаемыеТипы = Новый Массив; ОжидаемыеТипы = Новый Массив;
ОжидаемыеТипы.Добавить(Тип("ДвоичныеДанные")); ОжидаемыеТипы.Добавить(Тип("ДвоичныеДанные"));
@@ -220,10 +224,9 @@
КонецЕсли; КонецЕсли;
РазмерФайла = ПрисоединенныйФайл.Размер; РазмерФайла = ПрисоединенныйФайл.Размер;
РасширениеФайла = ПрисоединенныйФайл.Расширение; ТипХраненияФайла = ПрисоединенныйФайл.ТипХраненияФайла;
ТипХраненияФайла = РаботаСФайламиСлужебный.ТипХраненияФайлов(); Если НЕ ЗначениеЗаполнено(ТипХраненияФайла) Тогда
Если ТипХраненияФайла = Перечисления.ТипыХраненияФайлов.ВТомахНаДиске Тогда ТипХраненияФайла = РаботаСФайламиСлужебный.ТипХраненияФайлов(ПрисоединенныйФайл.Размер, ПрисоединенныйФайл.Расширение);
ТипХраненияФайла = ТипХраненияФайла(РасширениеФайла, РазмерФайла);
КонецЕсли; КонецЕсли;
Если ТипХраненияФайла = Перечисления.ТипыХраненияФайлов.ВИнформационнойБазе Тогда Если ТипХраненияФайла = Перечисления.ТипыХраненияФайлов.ВИнформационнойБазе Тогда
@@ -248,7 +251,7 @@
Иначе Иначе
ТомХранения = ?(ЗначениеЗаполнено(ТомДляРазмещения), ТомДляРазмещения, СвободныйТом(РазмерФайла)); ТомХранения = СвободныйТом(РазмерФайла);
Если ТомХранения = Неопределено Тогда Если ТомХранения = Неопределено Тогда
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
@@ -281,95 +284,11 @@
КонецПроцедуры КонецПроцедуры
// Сохраняет двоичные данные файла в том или копирует данные из файла по переданному пути.
// Перед вызовом необходимо заполнить сведения о файле (см. ЗаполнитьСведенияОФайле).
//
// Не может вызываться с включенным безопасным режимом.
//
// Выбрасывает исключения.
//
// Параметры:
// ПрисоединенныйФайл - ОпределяемыйТип.ПрисоединенныйФайлОбъект
// ДвоичныеДанныеИлиПуть - ДвоичныеДанные
// - Строка - двоичные данные файла или полный путь
// к файлу на диске.
//
Процедура ЗаписатьДанныеФайлаВТом(ПрисоединенныйФайл, ДвоичныеДанныеИлиПуть) Экспорт
УстановитьПривилегированныйРежим(Истина);
ШаблонОписанияОшибки = "";
СтрокаИсключения = "";
ПутьКТому = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(ПрисоединенныйФайл.ДополнительныеСвойства, "ПутьКТому", "");
СвойстваФайла = СвойстваФайлаВТоме();
ЗаполнитьЗначенияСвойств(СвойстваФайла, ПрисоединенныйФайл);
ПутьКФайлу = ПолноеИмяФайлаВТоме(СвойстваФайла);
Если ЗначениеЗаполнено(ПрисоединенныйФайл.Ссылка) Тогда
РаботаСФайламиСлужебный.УдалитьЗаписьИзРегистраДвоичныеДанныеФайлов(ПрисоединенныйФайл.Ссылка);
КонецЕсли;
Попытка
Если ТипЗнч(ДвоичныеДанныеИлиПуть) = Тип("Строка") Тогда
КопироватьФайл(ДвоичныеДанныеИлиПуть, ПутьКФайлу);
Иначе
ДвоичныеДанныеИлиПуть.Записать(ПутьКФайлу);
КонецЕсли;
ФайлНаДиске = Новый Файл(ПутьКФайлу);
ФайлНаДиске.УстановитьУниверсальноеВремяИзменения(ПрисоединенныйФайл.ДатаМодификацииУниверсальная);
ФайлНаДиске.УстановитьТолькоЧтение(Истина);
Исключение
ШаблонОписанияОшибки = НСтр("ru = 'Ошибка при добавлении файла ""%1""
|в том ""%2"" (%3):
|""%4"".'");
ЗаписьЖурналаРегистрации(НСтр("ru = 'Файлы.Добавление файла'", ОбщегоНазначения.КодОсновногоЯзыка()),
УровеньЖурналаРегистрации.Ошибка,,,
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
ШаблонОписанияОшибки,
ПрисоединенныйФайл.Наименование + "." + ПрисоединенныйФайл.Расширение,
Строка(ПрисоединенныйФайл.Том),
ПутьКТому,
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())));
Если Пользователи.ЭтоПолноправныйПользователь() Тогда
СтрокаИсключения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
ШаблонОписанияОшибки,
ПрисоединенныйФайл.Наименование + "." + ПрисоединенныйФайл.Расширение,
Строка(ПрисоединенныйФайл.Том),
ПутьКТому,
КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
Иначе
// Сообщение обычному пользователю.
СтрокаИсключения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось добавить файл:
|""%1.%2"".
|
|Обратитесь к администратору.'"),
ПрисоединенныйФайл.Наименование,
ПрисоединенныйФайл.Расширение);
КонецЕсли;
ВызватьИсключение СтрокаИсключения;
КонецПопытки;
КонецПроцедуры
// Копирует данные присоединенного файла по указанному пути. // Копирует данные присоединенного файла по указанному пути.
// //
// Параметры: // Параметры:
// ПрисоединенныйФайл - ОпределяемыйТип.ПрисоединенныйФайл - ссылка на элемент справочника с файлом. // ПрисоединенныйФайл - ОпределяемыйТип.ПрисоединенныйФайл - ссылка на элемент справочника с файлом.
// ВызыватьИсключение - Путь - полный путь (включая имя файла), куда будет скопирован файл из тома. // Путь - Строка - полный путь (включая имя файла), куда будет скопирован файл из тома.
// //
Процедура СкопироватьФайл(ПрисоединенныйФайл, Путь) Экспорт Процедура СкопироватьФайл(ПрисоединенныйФайл, Путь) Экспорт
@@ -387,80 +306,16 @@
КонецПроцедуры КонецПроцедуры
// Обновляет данные файла в томе.
//
// Параметры:
// ПрисоединенныйФайлОбъект - ОпределяемыйТип.ПрисоединенныйФайлОбъект - элемент справочника с файлом.
// ДвоичныеДанные - данные, которые будут помещены в том.
//
Процедура ОбновитьФайл(ПрисоединенныйФайлОбъект, ДвоичныеДанные) Экспорт
Попытка
СвойстваФайла = СвойстваФайлаВТоме();
ЗаполнитьЗначенияСвойств(СвойстваФайла, ПрисоединенныйФайлОбъект);
ПутьКФайлу = ПолноеИмяФайлаВТоме(СвойстваФайла);
УдалитьФайл(ПутьКФайлу);
ДобавитьФайл(ПрисоединенныйФайлОбъект, ДвоичныеДанные);
ПрисоединенныйФайлОбъект.Записать();
Исключение
ПрисоединенныйФайлСсылка = ПрисоединенныйФайлОбъект.Ссылка;
ТекстОшибки = НСтр("ru = 'Ошибка, при сохранении файла в томе:
|""%1"".
|
|Ссылка на файл: ""%2"".'");
ИнформацияОбОшибке = ИнформацияОбОшибке();
ЗаписьЖурналаРегистрации(
НСтр("ru = 'Файлы.Запись файла на диск'", ОбщегоНазначения.КодОсновногоЯзыка()),
УровеньЖурналаРегистрации.Ошибка,
Метаданные.Справочники[ПрисоединенныйФайлСсылка.Метаданные().Имя],
ПрисоединенныйФайлСсылка,
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
ТекстОшибки, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке), ПрисоединенныйФайлСсылка));
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
ТекстОшибки, КраткоеПредставлениеОшибки(ИнформацияОбОшибке), ПрисоединенныйФайлСсылка);
КонецПопытки;
КонецПроцедуры
// Удаляет файл из тома и обновляет информацию о хранении файла в информационной базе.
//
// Параметры:
// ПрисоединенныйФайлОбъект - ОпределяемыйТип.ПрисоединенныйФайлОбъект - элемент справочника с файлом.
// ТекстКомментария - Строка - комментарий, который будет помещен в элемент справочника, данные
// которого удаляются из тома.
//
Процедура УдалитьДанныеФайла(ПрисоединенныйФайлОбъект, ТекстКомментария = "") Экспорт
СвойстваФайла = СвойстваФайлаВТоме();
ЗаполнитьЗначенияСвойств(СвойстваФайла, ПрисоединенныйФайлОбъект);
ПрисоединенныйФайлОбъект.Том = Справочники.ТомаХраненияФайлов.ПустаяСсылка();
ПрисоединенныйФайлОбъект.ПутьКФайлу = "";
ПрисоединенныйФайлОбъект.ПометкаУдаления = Истина;
Если ТипЗнч(ПрисоединенныйФайлОбъект) = Тип("СправочникОбъект.ВерсииФайлов") Тогда
ПрисоединенныйФайлОбъект.Комментарий = ТекстКомментария + ПрисоединенныйФайлОбъект.Комментарий;
Иначе
ПрисоединенныйФайлОбъект.Описание = ТекстКомментария + ПрисоединенныйФайлОбъект.Описание;
КонецЕсли;
ПрисоединенныйФайлОбъект.Записать();
УдалитьФайл(ПолноеИмяФайлаВТоме(СвойстваФайла));
КонецПроцедуры
// Удаляет файл из тома. // Удаляет файл из тома.
// //
// Параметры: // Параметры:
// ПутьКФайлу - Строка - путь к удаляемому файлу. // ПутьКФайлу - Строка - путь к удаляемому файлу.
// //
// Возвращаемое значение:
// Структура:
// * Успешно - Булево
// * ИнформацияОбОшибке - ИнформацияОбОшибке
//
Функция УдалитьФайл(ПутьКФайлу) Экспорт Функция УдалитьФайл(ПутьКФайлу) Экспорт
Результат = Новый Структура("Успешно, ИнформацияОбОшибке", Истина, Неопределено); Результат = Новый Структура("Успешно, ИнформацияОбОшибке", Истина, Неопределено);
@@ -606,7 +461,6 @@
Если ТипЗнч(СсылкаНаВерсию) = Тип("СправочникСсылка.ВерсииФайлов") Тогда Если ТипЗнч(СсылкаНаВерсию) = Тип("СправочникСсылка.ВерсииФайлов") Тогда
РеквизитыФайла.Добавить("Владелец"); РеквизитыФайла.Добавить("Владелец");
РеквизитыФайла.Добавить("НомерВерсии"); РеквизитыФайла.Добавить("НомерВерсии");
Иначе Иначе
РеквизитыФайла.Добавить("ВладелецФайла"); РеквизитыФайла.Добавить("ВладелецФайла");
КонецЕсли; КонецЕсли;
@@ -634,11 +488,19 @@
// //
// Параметры: // Параметры:
// СвойстваФайла - см. СвойстваФайлаВТоме. // СвойстваФайла - см. СвойстваФайлаВТоме.
// ДатаДляРазмещенияВТоме - Дата
//
// Возвращаемое значение:
// Строка
// //
Функция ПолноеИмяФайлаВТоме(СвойстваФайла, ДатаДляРазмещенияВТоме = Неопределено) Экспорт Функция ПолноеИмяФайлаВТоме(СвойстваФайла, ДатаДляРазмещенияВТоме = Неопределено) Экспорт
Разделитель = ПолучитьРазделительПути(); Разделитель = ПолучитьРазделительПути();
Если НЕ ЗначениеЗаполнено(СвойстваФайла.Том) Тогда
Возврат "";
КонецЕсли;
КорневойКаталог = ПолныйПутьТома(СвойстваФайла.Том); КорневойКаталог = ПолныйПутьТома(СвойстваФайла.Том);
Если Не ПустаяСтрока(СвойстваФайла.ПутьКФайлу) Тогда Если Не ПустаяСтрока(СвойстваФайла.ПутьКФайлу) Тогда
Возврат КорневойКаталог + СвойстваФайла.ПутьКФайлу; Возврат КорневойКаталог + СвойстваФайла.ПутьКФайлу;
@@ -872,6 +734,333 @@
#Область СлужебныеПроцедурыИФункции #Область СлужебныеПроцедурыИФункции
// Сохраняет двоичные данные файла в том или копирует данные из файла по переданному пути.
// Перед вызовом необходимо заполнить сведения о файле (см. ЗаполнитьСведенияОФайле).
//
// Не может вызываться с включенным безопасным режимом.
//
// Выбрасывает исключения.
//
// Параметры:
// ПрисоединенныйФайл - ОпределяемыйТип.ПрисоединенныйФайлОбъект
// ДвоичныеДанныеИлиПуть - ДвоичныеДанные
// - Строка - двоичные данные файла или полный путь
// к файлу на диске.
//
Процедура ЗаписатьДанныеФайлаВТом(ПрисоединенныйФайл, ДвоичныеДанныеИлиПуть)
УстановитьПривилегированныйРежим(Истина);
ШаблонОписанияОшибки = "";
СтрокаИсключения = "";
ПутьКТому = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(ПрисоединенныйФайл.ДополнительныеСвойства, "ПутьКТому", "");
СвойстваФайла = СвойстваФайлаВТоме();
ЗаполнитьЗначенияСвойств(СвойстваФайла, ПрисоединенныйФайл);
ПутьКФайлу = ПолноеИмяФайлаВТоме(СвойстваФайла);
Если ЗначениеЗаполнено(ПрисоединенныйФайл.Ссылка) Тогда
РаботаСФайламиСлужебный.УдалитьЗаписьИзРегистраДвоичныеДанныеФайлов(ПрисоединенныйФайл.Ссылка);
КонецЕсли;
Попытка
Если ТипЗнч(ДвоичныеДанныеИлиПуть) = Тип("Строка") Тогда
КопироватьФайл(ДвоичныеДанныеИлиПуть, ПутьКФайлу);
Иначе
ДвоичныеДанныеИлиПуть.Записать(ПутьКФайлу);
КонецЕсли;
ФайлНаДиске = Новый Файл(ПутьКФайлу);
ФайлНаДиске.УстановитьУниверсальноеВремяИзменения(ПрисоединенныйФайл.ДатаМодификацииУниверсальная);
ФайлНаДиске.УстановитьТолькоЧтение(Истина);
Исключение
ШаблонОписанияОшибки = НСтр("ru = 'Ошибка при добавлении файла ""%1""
|в том ""%2"" (%3):
|""%4"".'");
ЗаписьЖурналаРегистрации(НСтр("ru = 'Файлы.Добавление файла'", ОбщегоНазначения.КодОсновногоЯзыка()),
УровеньЖурналаРегистрации.Ошибка,,,
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
ШаблонОписанияОшибки,
ПрисоединенныйФайл.Наименование + "." + ПрисоединенныйФайл.Расширение,
Строка(ПрисоединенныйФайл.Том),
ПутьКТому,
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())));
Если Пользователи.ЭтоПолноправныйПользователь() Тогда
СтрокаИсключения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
ШаблонОписанияОшибки,
ПрисоединенныйФайл.Наименование + "." + ПрисоединенныйФайл.Расширение,
Строка(ПрисоединенныйФайл.Том),
ПутьКТому,
КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
Иначе
// Сообщение обычному пользователю.
СтрокаИсключения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось добавить файл:
|""%1.%2"".
|
|Обратитесь к администратору.'"),
ПрисоединенныйФайл.Наименование,
ПрисоединенныйФайл.Расширение);
КонецЕсли;
ВызватьИсключение СтрокаИсключения;
КонецПопытки;
КонецПроцедуры
Процедура ОчиститьУдаленныеФайлы() Экспорт
Если НЕ (ХранитьФайлыВТомахНаДиске()) Тогда
Возврат;
КонецЕсли;
Для Каждого Том Из ДоступныеТома() Цикл
ОчиститьУдаленныеФайлыВТоме(Том);
КонецЦикла;
КонецПроцедуры
// Параметры:
// Том - СправочникСсылка.ТомаХраненияФайлов
//
Процедура ОчиститьУдаленныеФайлыВТоме(Том)
ВремяПоследнейОчистки = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Том, "ВремяПоследнейОчисткиФайлов");
КорневойКаталог = ПолныйПутьТома(Том);
ФайлыДляУдаления = ФайлыДляУдаления(КорневойКаталог, ВремяПоследнейОчистки);
Для Каждого Файл Из УдаленныеФайлы(Том, КорневойКаталог, ФайлыДляУдаления) Цикл
УдалитьФайл(Файл);
КонецЦикла;
НачатьТранзакцию();
Попытка
Блокировка = Новый БлокировкаДанных();
Элемент = Блокировка.Добавить(Том.Метаданные().ПолноеИмя());
Элемент.УстановитьЗначение("Ссылка", Том);
Блокировка.Заблокировать();
ТомОбъект = Том.ПолучитьОбъект();
ТомОбъект.ВремяПоследнейОчисткиФайлов = ТекущаяУниверсальнаяДата();
ТомОбъект.Записать();
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
Ошибка = ИнформацияОбОшибке();
ЗаписьЖурналаРегистрации(НСтр("ru='Работа с файлами.Очистка файлов'", ОбщегоНазначения.КодОсновногоЯзыка()),
УровеньЖурналаРегистрации.Ошибка,
Том.Метаданные(),
Том,
ПодробноеПредставлениеОшибки(Ошибка));
КонецПопытки;
КонецПроцедуры
// Удаленные файлы.
//
// Параметры:
// Том - СправочникСсылка.ТомаХраненияФайлов
// КорневойКаталог - Строка
// ФайлыДляУдаления - Массив из Файл - файлы для удаления
//
// Возвращаемое значение:
// Массив из Файл
//
Функция УдаленныеФайлы(Том, КорневойКаталог, ФайлыДляУдаления)
Результат = Новый Массив;
ТаблицаФайлы = Новый ТаблицаЗначений();
ДлинаСтроки = Метаданные.Справочники.Файлы.Реквизиты.ПутьКФайлу.Тип;
ТаблицаФайлы.Колонки.Добавить("Путь", ДлинаСтроки);
Для Каждого Файл Из ФайлыДляУдаления Цикл
ОтносительныйПуть = СтрЗаменить(Файл, КорневойКаталог, "");
ТаблицаФайлы.Добавить().Путь = ОтносительныйПуть;
КонецЦикла;
Запрос = ЗапросПроверкиСуществованияФайлов(ТаблицаФайлы);
Запрос.УстановитьПараметр("Том", Том);
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Результат.Добавить(КорневойКаталог + СокрЛП(Выборка.Путь));
КонецЦикла;
Возврат Результат;
КонецФункции
// Длина файлов в запросе ограничена:
// Имя метаданного (80) + дата (6) + подтом для исключения повторения (6 символов) + имя файла (150).
// Итого: 242.
//
Функция ЗапросПроверкиСуществованияФайлов(Знач ТаблицаФайлы)
МенеджерТаблиц = Новый МенеджерВременныхТаблиц();
Запрос = Новый Запрос("ВЫБРАТЬ
| ВЫРАЗИТЬ(Файлы.Путь КАК Строка(1024)) КАК Путь
|ПОМЕСТИТЬ Файлы
|ИЗ
| &Файлы КАК Файлы");
Запрос.МенеджерВременныхТаблиц = МенеджерТаблиц;
Запрос.УстановитьПараметр("Файлы", ТаблицаФайлы);
Запрос.Выполнить();
ЧастиЗапроса = Новый Массив;
ШапкаЗапроса = "ВЫБРАТЬ
| """" КАК Путь
|ПОМЕСТИТЬ СуществующиеФайлы
|ГДЕ
| ЛОЖЬ";
ЧастиЗапроса.Добавить(ШапкаЗапроса);
ШаблонЗапроса = "
|ВЫБРАТЬ
| Файлы.Путь КАК Путь
|ИЗ
| Файлы КАК Файлы
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ &СправочникПрисоединенныхФайлов КАК ПрисоединенныеФайлы
| ПО ПрисоединенныеФайлы.Том = &Том
| И ВЫРАЗИТЬ(ПрисоединенныеФайлы.ПутьКФайлу КАК Строка(1024)) = Файлы.Путь";
ТипыПрисоединенныхФайлов = Метаданные.ОпределяемыеТипы.ПрисоединенныйФайл.Тип.Типы();
Для Каждого Тип Из ТипыПрисоединенныхФайлов Цикл
МетаданныеПрисоединенныеФайлы = Метаданные.НайтиПоТипу(Тип);
ТекстЗапроса = СтрЗаменить(ШаблонЗапроса, "&СправочникПрисоединенныхФайлов", МетаданныеПрисоединенныеФайлы.ПолноеИмя());
ЧастиЗапроса.Добавить(ТекстЗапроса);
КонецЦикла;
Разделитель = "
|ОБЪЕДИНИТЬ ВСЕ
|";
ТекстЗапроса = СтрСоединить(ЧастиЗапроса, Разделитель);
ТекстЗапроса = ТекстЗапроса + ОбщегоНазначения.РазделительПакетаЗапросов() + "
|ВЫБРАТЬ
| Файлы.Путь КАК Путь
|ИЗ
| Файлы КАК Файлы
|ГДЕ
| НЕ Файлы.Путь В (
| ВЫБРАТЬ
| СуществующиеФайлы.Путь КАК Путь
| ИЗ
| СуществующиеФайлы КАК СуществующиеФайлы)";
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.МенеджерВременныхТаблиц = МенеджерТаблиц;
Возврат Запрос;
КонецФункции
Функция ФайлыДляУдаления(Каталог, ВремяПоследнейОчистки)
ФайлыДляУдаления = Новый Массив;
ОписаниеКаталога = Новый Файл(Каталог);
ПроверятьФайлыВТекущемКаталоге = ВремяПоследнейОчистки <= ОписаниеКаталога.ПолучитьУниверсальноеВремяИзменения();
Для Каждого Файл Из НайтиФайлы(Каталог, ПолучитьМаскуВсеФайлы(), Ложь) Цикл
Если Файл.ЭтоКаталог() Тогда
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(
ФайлыДляУдаления,
ФайлыДляУдаления(Файл.ПолноеИмя, ВремяПоследнейОчистки));
Иначе
Если ПроверятьФайлыВТекущемКаталоге И НЕ Файл.ЭтоКаталог() Тогда
ФайлыДляУдаления.Добавить(Файл.ПолноеИмя);
КонецЕсли;
КонецЕсли;
КонецЦикла;
Возврат ФайлыДляУдаления;
КонецФункции
// Вызывается до начала транзакции.
// Для новых файлов все данные файлы должны быть заполнены.
//
// Параметры:
// Контекст - см. РаботаСФайламиСлужебный.КонтекстОбновленияФайла
//
Процедура ПередОбновлениемДанныхФайла(Контекст) Экспорт
Контекст.ИзменяемыеРеквизиты.Вставить("ПутьКФайлу", "");
Контекст.ИзменяемыеРеквизиты.Вставить("Том", Справочники.ТомаХраненияФайлов.ПустаяСсылка());
Если НЕ Контекст.ЭтоНовый Тогда
СвойстваФайла = СвойстваФайлаВТоме(Контекст.ПрисоединенныйФайл);
Контекст.СтарыйПутьКФайлу = ПолноеИмяФайлаВТоме(СвойстваФайла);
КонецЕсли;
КонтейнерСвойствФайла = ПараметрыДобавленияФайла();
КонтейнерСвойствФайла.Ссылка = Контекст.ПрисоединенныйФайл;
ЗаполнитьЗначенияСвойств(КонтейнерСвойствФайла, Контекст.ПараметрыДобавленияФайла,,"Ссылка");
КонтейнерСвойствФайла.ПутьКФайлу = ""; // Всегда будем создавать новую версию на диске, не затирая старую.
УстановитьОтключениеБезопасногоРежима(Истина);
ДобавитьФайл(КонтейнерСвойствФайла, Контекст.ДанныеФайла);
УстановитьОтключениеБезопасногоРежима(Ложь);
Контекст.ИзменяемыеРеквизиты.ПутьКФайлу = КонтейнерСвойствФайла.ПутьКФайлу;
Контекст.ИзменяемыеРеквизиты.Том = КонтейнерСвойствФайла.Том;
КонецПроцедуры
// Вызывается в транзакции модификации.
// Параметры:
// Контекст - см. РаботаСФайламиСлужебный.КонтекстОбновленияФайла
// ПрисоединенныйФайл - ОпределяемыйТип.ПрисоединенныйФайлОбъект
//
Процедура ПередЗаписьюДанныхФайла(Контекст, ПрисоединенныйФайл) Экспорт
ЗаполнитьЗначенияСвойств(ПрисоединенныйФайл, Контекст.ИзменяемыеРеквизиты);
КонецПроцедуры
// Вызывается в транзакции модификации.
// Параметры:
// Контекст - см. РаботаСФайламиСлужебный.КонтекстОбновленияФайла
// ПрисоединенныйФайл - ОпределяемыйТип.ПрисоединенныйФайл
//
Процедура ПриОбновленииДанныхФайла(Контекст, ПрисоединенныйФайл) Экспорт
Возврат; // Не используется
КонецПроцедуры
// Вызывается после фиксации или отката транзакции.
//
// Параметры:
// Контекст - см. РаботаСФайламиСлужебный.КонтекстОбновленияФайла
// Успешно - Булево - Истина, если транзакция успешно зафиксирована.
//
Процедура ПослеОбновленияДанныхФайла(Контекст, Успешно) Экспорт
Если НЕ Успешно Тогда
СвойстваФайла = СвойстваФайлаВТоме();
ЗаполнитьЗначенияСвойств(СвойстваФайла, Контекст.ПараметрыДобавленияФайла);
ЗаполнитьЗначенияСвойств(СвойстваФайла, Контекст.ИзменяемыеРеквизиты);
НовыйПутьКФайлу = ПолноеИмяФайлаВТоме(СвойстваФайла);
УдаляемыйФайл = Новый Файл(НовыйПутьКФайлу);
Если УдаляемыйФайл.Существует() Тогда
УдалитьФайл(НовыйПутьКФайлу);
КонецЕсли;
Иначе
ПрисоединенныйФайл = Контекст.ПрисоединенныйФайл;
ЭтоВерсия = ТипЗнч(ПрисоединенныйФайл) = Тип("СправочникСсылка.ВерсииФайлов");
ОсновнойФайл = ?(ЭтоВерсия, ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ПрисоединенныйФайл, "Владелец"), ПрисоединенныйФайл);
ЭтоЗашифрованныйФайл = ОбщегоНазначения.ЕстьРеквизитОбъекта("Зашифрован", ОсновнойФайл.Метаданные())
И ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ОсновнойФайл, "Зашифрован");
// Для зашифрованных файлов всегда будем пытаться удалять старый файл,
// т.к. внешняя транзакция всегда будет активна.
// см. РаботаСФайламиСлужебный.ЗаписатьИнформациюОШифровании.
Если ЭтоЗашифрованныйФайл ИЛИ НЕ ТранзакцияАктивна() Тогда
УстановитьОтключениеБезопасногоРежима(Истина);
УдалитьФайл(Контекст.СтарыйПутьКФайлу);
УстановитьОтключениеБезопасногоРежима(Ложь);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#Область НастройкиХраненияФайловВТомах #Область НастройкиХраненияФайловВТомах
// Возвращает признак того, что файлы могут храниться и в томах на диске и в информационной базе. // Возвращает признак того, что файлы могут храниться и в томах на диске и в информационной базе.
@@ -1070,8 +1259,8 @@
// * ДатаРедактирования - Строка // * ДатаРедактирования - Строка
// //
Функция ЛишниеФайлыНаДиске() Экспорт Функция ЛишниеФайлыНаДиске() Экспорт
ТаблицаФайловНаДиске = Новый ТаблицаЗначений; ТаблицаФайловНаДиске = Новый ТаблицаЗначений;
ТаблицаФайловНаДиске.Колонки.Добавить("Имя"); ТаблицаФайловНаДиске.Колонки.Добавить("Имя");
ТаблицаФайловНаДиске.Колонки.Добавить("Файл"); ТаблицаФайловНаДиске.Колонки.Добавить("Файл");
ТаблицаФайловНаДиске.Колонки.Добавить("ИмяБезРасширения"); ТаблицаФайловНаДиске.Колонки.Добавить("ИмяБезРасширения");
@@ -1085,14 +1274,13 @@
ТаблицаФайловНаДиске.Колонки.Добавить("ДатаРедактирования"); ТаблицаФайловНаДиске.Колонки.Добавить("ДатаРедактирования");
Возврат ТаблицаФайловНаДиске; Возврат ТаблицаФайловНаДиске;
КонецФункции КонецФункции
// Параметры: // Параметры:
// ТаблицаФайловНаДиске - см. РаботаСФайламиВТомахСлужебный.ЛишниеФайлыНаДиске // ТаблицаФайловНаДиске - см. РаботаСФайламиВТомахСлужебный.ЛишниеФайлыНаДиске
// Том - СправочникСсылка.ТомаХраненияФайлов - ссылка на том. // Том - СправочникСсылка.ТомаХраненияФайлов - ссылка на том.
// //
Процедура ПроверитьЦелостностьФайлов(ТаблицаФайловНаДиске, Том) Экспорт Процедура ЗаполнитьЛишниеФайлы(ТаблицаФайловНаДиске, Том) Экспорт
ТипыФайлов = Метаданные.ОпределяемыеТипы.ПрисоединенныйФайл.Тип.Типы(); ТипыФайлов = Метаданные.ОпределяемыеТипы.ПрисоединенныйФайл.Тип.Типы();
@@ -1202,7 +1390,7 @@
#Область КонтрольВеденияУчета #Область КонтрольВеденияУчета
Функция ДоступныеТома(ПараметрыПроверки) Функция ДоступныеТома(ПараметрыПроверки = Неопределено) Экспорт
Запрос = Новый Запрос( Запрос = Новый Запрос(
"ВЫБРАТЬ "ВЫБРАТЬ
@@ -1269,6 +1457,10 @@
Процедура ЗафиксироватьПроблемуСТомом(Том, УточнениеПроблемы, ПараметрыПроверки) Процедура ЗафиксироватьПроблемуСТомом(Том, УточнениеПроблемы, ПараметрыПроверки)
Если ПараметрыПроверки = Неопределено Тогда
Возврат;
КонецЕсли;
МодульКонтрольВеденияУчета = ОбщегоНазначения.ОбщийМодуль("КонтрольВеденияУчета"); МодульКонтрольВеденияУчета = ОбщегоНазначения.ОбщийМодуль("КонтрольВеденияУчета");
Проблема = МодульКонтрольВеденияУчета.ОписаниеПроблемы(Том, ПараметрыПроверки); Проблема = МодульКонтрольВеденияУчета.ОписаниеПроблемы(Том, ПараметрыПроверки);
File diff suppressed because it is too large. Load diff
@@ -710,7 +710,7 @@
ДвоичныеДанныеПредыдущейВерсии = ХранилищеФайла.Получить(); ДвоичныеДанныеПредыдущейВерсии = ХранилищеФайла.Получить();
КонецЕсли; КонецЕсли;
ДвоичныеДанные = ПолучитьИзВременногоХранилища(СведенияОФайле.АдресВременногоХранилищаФайла); ДвоичныеДанные = РаботаСФайламиСлужебный.ДвоичныеДанныеИзСведенийОФайле(СведенияОФайле);
Если ДвоичныеДанныеПредыдущейВерсии = ДвоичныеДанные Тогда Если ДвоичныеДанныеПредыдущейВерсии = ДвоичныеДанные Тогда
Возврат Неопределено; // Файл бинарно не изменен - вернем Ложь. Возврат Неопределено; // Файл бинарно не изменен - вернем Ложь.
КонецЕсли; КонецЕсли;
@@ -725,6 +725,17 @@
ЭлементБлокировки = Блокировка.Добавить(СсылкаНаВерсию.Метаданные().ПолноеИмя()); ЭлементБлокировки = Блокировка.Добавить(СсылкаНаВерсию.Метаданные().ПолноеИмя());
ЭлементБлокировки.УстановитьЗначение("Ссылка", СсылкаНаВерсию); ЭлементБлокировки.УстановитьЗначение("Ссылка", СсылкаНаВерсию);
Расширение = ОбщегоНазначенияКлиентСервер.РасширениеБезТочки(СведенияОФайле.РасширениеБезТочки);
ТипХраненияФайлов = РаботаСФайламиСлужебный.ТипХраненияФайлов(Расширение, СведенияОФайле.Размер);
МенеджерФайла = РаботаСФайламиСлужебный.МенеджерФайловПоТипу(ТипХраненияФайлов);
Контекст = РаботаСФайламиСлужебный.КонтекстОбновленияФайла(
СсылкаНаВерсию,
СведенияОФайле.АдресВременногоХранилищаФайла,
,
ТипХраненияФайлов);
МенеджерФайла.ПередОбновлениемДанныхФайла(Контекст);
НачатьТранзакцию(); НачатьТранзакцию();
Попытка Попытка
@@ -735,12 +746,6 @@
ВерсияЗаблокирована = Истина; ВерсияЗаблокирована = Истина;
Расширение = ОбщегоНазначенияКлиентСервер.РасширениеБезТочки(СведенияОФайле.РасширениеБезТочки);
ТипХраненияФайлов = РаботаСФайламиСлужебный.ТипХраненияФайлов();
Если ТипХраненияФайлов = Перечисления.ТипыХраненияФайлов.ВТомахНаДиске Тогда
ТипХраненияФайлов = РаботаСФайламиВТомахСлужебный.ТипХраненияФайла(Расширение, СведенияОФайле.Размер);
КонецЕсли;
Версия.ТипХраненияФайла = ТипХраненияФайлов; Версия.ТипХраненияФайла = ТипХраненияФайлов;
Если Версия.ТипХраненияФайла = Перечисления.ТипыХраненияФайлов.ВТомахНаДиске Тогда Если Версия.ТипХраненияФайла = Перечисления.ТипыХраненияФайлов.ВТомахНаДиске Тогда
@@ -760,7 +765,7 @@
Версия.Расширение = Расширение; Версия.Расширение = Расширение;
Если ДвоичныеДанные = Неопределено Тогда Если ДвоичныеДанные = Неопределено Тогда
ДвоичныеДанные = ПолучитьИзВременногоХранилища(СведенияОФайле.АдресВременногоХранилищаФайла); // ДвоичныеДанные ДвоичныеДанные = РаботаСФайламиСлужебный.ДвоичныеДанныеИзСведенийОФайле(СведенияОФайле);
КонецЕсли; КонецЕсли;
Если ТипХраненияФайлов = Перечисления.ТипыХраненияФайлов.ВИнформационнойБазе Тогда Если ТипХраненияФайлов = Перечисления.ТипыХраненияФайлов.ВИнформационнойБазе Тогда
@@ -820,27 +825,29 @@
Версия.Заполнить(Неопределено); Версия.Заполнить(Неопределено);
МенеджерФайла.ПередЗаписьюДанныхФайла(Контекст, Версия);
Версия.Записать(); Версия.Записать();
МенеджерФайла.ПриОбновленииДанныхФайла(Контекст, Версия.Ссылка);
Если ВерсияЗаблокирована Тогда Если ВерсияЗаблокирована Тогда
РазблокироватьДанныеДляРедактирования(Версия.Ссылка, УникальныйИдентификаторФормы); РазблокироватьДанныеДляРедактирования(Версия.Ссылка, УникальныйИдентификаторФормы);
КонецЕсли; КонецЕсли;
РегистрыСведений.КодировкиФайлов.ЗаписатьКодировкуВерсииФайла(Версия.Ссылка, КодировкаПредВерсии); РегистрыСведений.КодировкиФайлов.ЗаписатьКодировкуВерсииФайла(Версия.Ссылка, КодировкаПредВерсии);
Если СведенияОФайле.ХранитьВерсии Тогда
РаботаСФайламиСлужебный.ОбновитьВерсиюВФайле(ФайлСсылка, Версия.Ссылка, СведенияОФайле.АдресВременногоХранилищаТекста, УникальныйИдентификаторФормы);
Иначе
РаботаСФайламиСлужебный.ОбновитьТекстВФайле(ФайлСсылка, СведенияОФайле.АдресВременногоХранилищаТекста, УникальныйИдентификаторФормы);
КонецЕсли;
ЗафиксироватьТранзакцию(); ЗафиксироватьТранзакцию();
Исключение Исключение
ОтменитьТранзакцию(); ОтменитьТранзакцию();
МенеджерФайла.ПослеОбновленияДанныхФайла(Контекст, Ложь);
ВызватьИсключение; ВызватьИсключение;
КонецПопытки; КонецПопытки;
Если ТипХраненияФайлов = Перечисления.ТипыХраненияФайлов.ВИнформационнойБазе Тогда МенеджерФайла.ПослеОбновленияДанныхФайла(Контекст, Истина);
ЗаписатьФайлВИнформационнуюБазу(Версия.Ссылка, ХранилищеФайла);
Иначе // хранение на диске
РаботаСФайламиВТомахСлужебный.УдалитьФайл(РаботаСФайламиВТомахСлужебный.ПолноеИмяФайлаВТоме(СвойстваВерсии));
РаботаСФайламиВТомахСлужебный.ЗаписатьДанныеФайлаВТом(Версия, ДвоичныеДанные);
КонецЕсли;
Если ЕстьПравоСохранения Тогда Если ЕстьПравоСохранения Тогда
НавигационнаяСсылкаФайла = ПолучитьНавигационнуюСсылку(ФайлСсылка); НавигационнаяСсылкаФайла = ПолучитьНавигационнуюСсылку(ФайлСсылка);
@@ -853,6 +860,8 @@
// Обновляет или создает версию файла и снимает блокировку. // Обновляет или создает версию файла и снимает блокировку.
// //
// Выбрасывает исключение.
//
// Параметры: // Параметры:
// ДанныеФайла - Структура - структура с данными файла. // ДанныеФайла - Структура - структура с данными файла.
// СведенияОФайле - см. РаботаСФайламиКлиентСервер.СведенияОФайле // СведенияОФайле - см. РаботаСФайламиКлиентСервер.СведенияОФайле
@@ -873,8 +882,6 @@
ВызватьИсключение НСтр("ru = 'Файл не занят текущим пользователем'"); ВызватьИсключение НСтр("ru = 'Файл не занят текущим пользователем'");
КонецЕсли; КонецЕсли;
НачатьТранзакцию();
Попытка
ПредыдущаяВерсия = ДанныеФайла.ТекущаяВерсия; ПредыдущаяВерсия = ДанныеФайла.ТекущаяВерсия;
СведенияОФайле.Зашифрован = ДанныеФайла.Зашифрован; СведенияОФайле.Зашифрован = ДанныеФайла.Зашифрован;
СведенияОФайле.Кодировка = ДанныеФайла.Кодировка; СведенияОФайле.Кодировка = ДанныеФайла.Кодировка;
@@ -885,35 +892,20 @@
НоваяВерсия = ОбновитьОбъектФайла(ДанныеФайла.Ссылка, СведенияОФайле,, УникальныйИдентификаторФормы); НоваяВерсия = ОбновитьОбъектФайла(ДанныеФайла.Ссылка, СведенияОФайле,, УникальныйИдентификаторФормы);
КонецЕсли; КонецЕсли;
Если НоваяВерсия <> Неопределено Тогда
Если СведенияОФайле.ХранитьВерсии Тогда
РаботаСФайламиСлужебный.ОбновитьВерсиюВФайле(ДанныеФайла.Ссылка, НоваяВерсия, СведенияОФайле.АдресВременногоХранилищаТекста, УникальныйИдентификаторФормы);
Иначе
ОбновитьТекстВФайле(ДанныеФайла.Ссылка, СведенияОФайле.АдресВременногоХранилищаТекста, УникальныйИдентификаторФормы);
КонецЕсли;
ДанныеФайла.ТекущаяВерсия = НоваяВерсия;
КонецЕсли;
ОсвободитьФайл(ДанныеФайла, УникальныйИдентификаторФормы); ОсвободитьФайл(ДанныеФайла, УникальныйИдентификаторФормы);
Если СведенияОФайле.Кодировка <> Неопределено Тогда Если НоваяВерсия = Неопределено Тогда
Если Не ЗначениеЗаполнено(РегистрыСведений.КодировкиФайлов.КодировкаВерсииФайла(ДанныеФайла.ТекущаяВерсия)) Тогда Возврат Ложь;
РегистрыСведений.КодировкиФайлов.ЗаписатьКодировкуВерсииФайла(ДанныеФайла.ТекущаяВерсия, СведенияОФайле.Кодировка);
КонецЕсли;
КонецЕсли; КонецЕсли;
Если НоваяВерсия <> Неопределено И НЕ ОбщегоНазначения.ЭтоВебКлиент() И Не НеМенятьЗаписьВРабочемКаталоге Тогда ДанныеФайла.ТекущаяВерсия = НоваяВерсия;
Если НЕ ОбщегоНазначения.ЭтоВебКлиент() И Не НеМенятьЗаписьВРабочемКаталоге Тогда
УдалитьВерсиюИЗанестиИнформациюФайлаВРегистр(ПредыдущаяВерсия, НоваяВерсия, УдалитьВерсиюИЗанестиИнформациюФайлаВРегистр(ПредыдущаяВерсия, НоваяВерсия,
ПолныйПутьКФайлу, РабочийКаталогПользователя, ДанныеФайла.РабочийКаталогВладельца <> ""); ПолныйПутьКФайлу, РабочийКаталогПользователя, ДанныеФайла.РабочийКаталогВладельца <> "");
КонецЕсли; КонецЕсли;
ЗафиксироватьТранзакцию(); Возврат Истина;
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
Возврат НоваяВерсия <> Неопределено;
КонецФункции КонецФункции
@@ -945,7 +937,7 @@
// Предназначена для записи изменений файла без его освобождения. // Предназначена для записи изменений файла без его освобождения.
// //
// Параметры: // Параметры:
// ДанныеФайла - Структура - структура с данными файла. // ФайлСсылка - ОпределяемыйТип.ПрисоединенныйФайл - присоединенный файл.
// СведенияОФайле - см. РаботаСФайламиКлиентСервер.СведенияОФайле // СведенияОФайле - см. РаботаСФайламиКлиентСервер.СведенияОФайле
// НеМенятьЗаписьВРабочемКаталоге - Булево - не менять запись в регистре сведений ФайлыВРабочемКаталоге. // НеМенятьЗаписьВРабочемКаталоге - Булево - не менять запись в регистре сведений ФайлыВРабочемКаталоге.
// ОтносительныйПутьКФайлу - Строка - относительный путь без пути рабочего каталога, например // ОтносительныйПутьКФайлу - Строка - относительный путь без пути рабочего каталога, например
@@ -968,11 +960,6 @@
ВызватьИсключение НСтр("ru = 'Файл не занят текущим пользователем'"); ВызватьИсключение НСтр("ru = 'Файл не занят текущим пользователем'");
КонецЕсли; КонецЕсли;
ТекущаяВерсия = ДанныеФайлаТекущие.ТекущаяВерсия;
НачатьТранзакцию();
Попытка
СтараяВерсия = ?(СведенияОФайле.ХранитьВерсии, ФайлСсылка.ТекущаяВерсия, ФайлСсылка); СтараяВерсия = ?(СведенияОФайле.ХранитьВерсии, ФайлСсылка.ТекущаяВерсия, ФайлСсылка);
СведенияОФайле.Зашифрован = ДанныеФайлаТекущие.Зашифрован; СведенияОФайле.Зашифрован = ДанныеФайлаТекущие.Зашифрован;
@@ -982,87 +969,23 @@
НоваяВерсия = ОбновитьОбъектФайла(ФайлСсылка.Ссылка, СведенияОФайле,, УникальныйИдентификаторФормы); НоваяВерсия = ОбновитьОбъектФайла(ФайлСсылка.Ссылка, СведенияОФайле,, УникальныйИдентификаторФормы);
КонецЕсли; КонецЕсли;
Если НоваяВерсия <> Неопределено Тогда Если НоваяВерсия = Неопределено Тогда
ТекущаяВерсия = НоваяВерсия; Возврат Ложь;
КонецЕсли;
Если СведенияОФайле.ХранитьВерсии Тогда Если СведенияОФайле.ХранитьВерсии Тогда
РаботаСФайламиСлужебный.ОбновитьВерсиюВФайле(ФайлСсылка, НоваяВерсия, СведенияОФайле.АдресВременногоХранилищаТекста, УникальныйИдентификаторФормы);
Если НЕ ОбщегоНазначения.ЭтоВебКлиент() И Не НеМенятьЗаписьВРабочемКаталоге Тогда Если НЕ ОбщегоНазначения.ЭтоВебКлиент() И Не НеМенятьЗаписьВРабочемКаталоге Тогда
УдалитьИзРегистра(СтараяВерсия); УдалитьИзРегистра(СтараяВерсия);
ЗаписатьПолноеИмяФайлаВРегистр(НоваяВерсия, ОтносительныйПутьКФайлу, Ложь, ВРабочемКаталогеВладельца); ЗаписатьПолноеИмяФайлаВРегистр(НоваяВерсия, ОтносительныйПутьКФайлу, Ложь, ВРабочемКаталогеВладельца);
КонецЕсли; КонецЕсли;
Иначе
ОбновитьТекстВФайле(ФайлСсылка, СведенияОФайле.АдресВременногоХранилищаТекста, УникальныйИдентификаторФормы);
КонецЕсли; КонецЕсли;
КонецЕсли; Возврат Истина;
Если СведенияОФайле.Кодировка <> Неопределено Тогда
Если Не ЗначениеЗаполнено(РегистрыСведений.КодировкиФайлов.КодировкаВерсииФайла(ТекущаяВерсия)) Тогда
РегистрыСведений.КодировкиФайлов.ЗаписатьКодировкуВерсииФайла(ТекущаяВерсия, СведенияОФайле.Кодировка);
КонецЕсли;
КонецЕсли;
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
Возврат НоваяВерсия <> Неопределено;
КонецФункции КонецФункции
// Обновляет текстовую порцию из файла в карточке файла.
//
// Параметры:
// ФайлСсылка - СправочникСсылка.Файлы - файл, в котором создается версия.
// АдресВременногоХранилищаТекста - Строка - содержит адрес во временном хранилище, где находятся двоичные данные с
// файлом текста или ХранилищеЗначения - непосредственно содержит двоичные
// данные с файлом текста.
// УникальныйИдентификатор - уникальный идентификатор формы.
//
Процедура ОбновитьТекстВФайле(ФайлСсылка,
Знач АдресВременногоХранилищаТекста,
УникальныйИдентификатор = Неопределено)
ИспользованиеПолнотекстовогоПоиска = Метаданные.СвойстваОбъектов.ИспользованиеПолнотекстовогоПоиска.Использовать;
НачатьТранзакцию();
Попытка
МетаданныеСправочника = Метаданные.НайтиПоТипу(ТипЗнч(ФайлСсылка));
БлокировкаДанных = Новый БлокировкаДанных;
ЭлементБлокировкиДанных = БлокировкаДанных.Добавить(МетаданныеСправочника.ПолноеИмя());
ЭлементБлокировкиДанных.УстановитьЗначение("Ссылка", ФайлСсылка);
БлокировкаДанных.Заблокировать();
ФайлОбъект = ФайлСсылка.ПолучитьОбъект();
ЗаблокироватьДанныеДляРедактирования(ФайлОбъект.Ссылка, , УникальныйИдентификатор);
Если МетаданныеСправочника.ПолнотекстовыйПоиск = ИспользованиеПолнотекстовогоПоиска Тогда
РезультатИзвлеченияТекста = РаботаСФайламиСлужебный.ИзвлечьТекст(АдресВременногоХранилищаТекста);
ФайлОбъект.СтатусИзвлеченияТекста = РезультатИзвлеченияТекста.СтатусИзвлеченияТекста;
ФайлОбъект.ТекстХранилище = РезультатИзвлеченияТекста.ТекстХранилище;
Иначе
ФайлОбъект.СтатусИзвлеченияТекста = Перечисления.СтатусыИзвлеченияТекстаФайлов.НеИзвлечен;
ФайлОбъект.ТекстХранилище = Новый ХранилищеЗначения("");
КонецЕсли;
ФайлОбъект.Записать();
РазблокироватьДанныеДляРедактирования(ФайлОбъект.Ссылка, УникальныйИдентификатор);
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
КонецПроцедуры
// Создает новый файл по аналогии с указанным и возвращает ссылку на него. // Создает новый файл по аналогии с указанным и возвращает ссылку на него.
// Параметры: // Параметры:
// ИсходныйФайл - СправочникСсылка.Файлы - существующий файл. // ИсходныйФайл - СправочникСсылка.Файлы - существующий файл.
@@ -1946,6 +1869,14 @@
ИмяКаталога, ИмяКаталога,
ВРабочемКаталогеВладельца) ВРабочемКаталогеВладельца)
Если ОбщегоНазначения.ЭтоВебКлиент() Тогда
Возврат;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(НоваяВерсия) Тогда
Возврат;
КонецЕсли;
УдалитьИзРегистра(СтараяВерсия); УдалитьИзРегистра(СтараяВерсия);
НаЧтение = Истина; НаЧтение = Истина;
ЗанестиИнформациюФайлаВРегистр(НоваяВерсия, ПолноеИмяФайла, ИмяКаталога, НаЧтение, 0, ВРабочемКаталогеВладельца); ЗанестиИнформациюФайлаВРегистр(НоваяВерсия, ПолноеИмяФайла, ИмяКаталога, НаЧтение, 0, ВРабочемКаталогеВладельца);
@@ -2409,6 +2340,7 @@
СвойстваФайла = РаботаСФайламиВТомахСлужебный.СвойстваФайлаВТоме(); СвойстваФайла = РаботаСФайламиВТомахСлужебный.СвойстваФайлаВТоме();
ЗаполнитьЗначенияСвойств(СвойстваФайла, ФайлИлиВерсияОбъект); ЗаполнитьЗначенияСвойств(СвойстваФайла, ФайлИлиВерсияОбъект);
// Исправить
РаботаСФайламиВТомахСлужебный.УдалитьФайл( РаботаСФайламиВТомахСлужебный.УдалитьФайл(
РаботаСФайламиВТомахСлужебный.ПолноеИмяФайлаВТоме(СвойстваФайла)); РаботаСФайламиВТомахСлужебный.ПолноеИмяФайлаВТоме(СвойстваФайла));
@@ -8257,7 +8257,145 @@
КонецПроцедуры КонецПроцедуры
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// Рассылает оповещение о завершении шифрования или расшифровки файла. // Процедуры и функции для работы с криптографией из формы файла.
// Параметры:
// Форма - ФормаКлиентскогоПриложения
//
Процедура ПрочитатьСертификатыПодписей(Форма) Экспорт
Если Форма.ЭлектронныеПодписи.Количество() = 0 Тогда
Возврат;
КонецЕсли;
Если Не ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ЭлектроннаяПодпись") Тогда
Возврат;
КонецЕсли;
Контекст = Новый Структура;
Контекст.Вставить("Форма", Форма);
Контекст.Вставить("МодульЭлектроннаяПодписьКлиент",
ОбщегоНазначенияКлиент.ОбщийМодуль("ЭлектроннаяПодписьКлиент"));;
Если Контекст.МодульЭлектроннаяПодписьКлиент.ПроверятьЭлектронныеПодписиНаСервере() Тогда
Возврат;
КонецЕсли;
НачатьПодключениеРасширенияРаботыСКриптографией(Новый ОписаниеОповещения(
"ПрочитатьСертификатыПодписейПослеПодключенияРасширения", ЭтотОбъект, Контекст));
КонецПроцедуры
// Продолжение процедуры ПрочитатьСертификатыПодписей.
Процедура ПрочитатьСертификатыПодписейПослеПодключенияРасширения(Подключено, Контекст) Экспорт
Если Не Подключено Тогда
Возврат;
КонецЕсли;
Контекст.МодульЭлектроннаяПодписьКлиент.СоздатьМенеджерКриптографии(Новый ОписаниеОповещения(
"ПрочитатьСертификатыПодписейПослеСозданияМенеджераКриптографии", ЭтотОбъект, Контекст),
"ПолучениеСертификатов", Ложь);
КонецПроцедуры
// Продолжение процедуры ПрочитатьСертификатыПодписей.
Процедура ПрочитатьСертификатыПодписейПослеСозданияМенеджераКриптографии(Результат, Контекст) Экспорт
Если ТипЗнч(Результат) <> Тип("МенеджерКриптографии") Тогда
Возврат;
КонецЕсли;
Контекст.Вставить("Индекс", -1);
Контекст.Вставить("МенеджерКриптографии", Результат);
ПрочитатьСертификатыПодписейЦиклНачало(Контекст);
КонецПроцедуры
// Продолжение процедуры ПрочитатьСертификатыПодписей.
//
// Параметры:
// Контекст - Структура:
// * Форма - ФормаКлиентскогоПриложения
//
Процедура ПрочитатьСертификатыПодписейЦиклНачало(Контекст)
Если Контекст.Форма.ЭлектронныеПодписи.Количество() <= Контекст.Индекс + 1 Тогда
Возврат;
КонецЕсли;
Контекст.Индекс = Контекст.Индекс + 1;
Контекст.Вставить("СтрокаТаблицы", Контекст.Форма.ЭлектронныеПодписи[Контекст.Индекс]);
Если ЗначениеЗаполнено(Контекст.СтрокаТаблицы.Отпечаток) Тогда
ПрочитатьСертификатыПодписейЦиклНачало(Контекст);
Возврат;
КонецЕсли;
// Подпись не была прочитана при записи объекта.
Подпись = ПолучитьИзВременногоХранилища(Контекст.СтрокаТаблицы.АдресПодписи);
Если Не ЗначениеЗаполнено(Подпись) Тогда
ПрочитатьСертификатыПодписейЦиклНачало(Контекст);
Возврат;
КонецЕсли;
Контекст.МенеджерКриптографии.НачатьПолучениеСертификатовИзПодписи(Новый ОписаниеОповещения(
"ПрочитатьСертификатыПодписейЦиклПослеПолученияСертификатовИзПодписи", ЭтотОбъект, Контекст,
"ПрочитатьСертификатыПодписейЦиклПослеОшибкиПолученияСертификатовИзПодписи", ЭтотОбъект),
Подпись);
КонецПроцедуры
// Продолжение процедуры ПрочитатьСертификатыПодписей.
Процедура ПрочитатьСертификатыПодписейЦиклПослеОшибкиПолученияСертификатовИзПодписи(ИнформацияОбОшибке, СтандартнаяОбработка, Контекст) Экспорт
СтандартнаяОбработка = Ложь;
ПрочитатьСертификатыПодписейЦиклНачало(Контекст);
КонецПроцедуры
// Продолжение процедуры ПрочитатьСертификатыПодписей.
Процедура ПрочитатьСертификатыПодписейЦиклПослеПолученияСертификатовИзПодписи(Сертификаты, Контекст) Экспорт
Если Сертификаты.Количество() = 0 Тогда
ПрочитатьСертификатыПодписейЦиклНачало(Контекст);
Возврат;
КонецЕсли;
Сертификат = Сертификаты[0]; // СертификатКриптографии
Контекст.Вставить("Сертификат", Сертификат);
Сертификат.НачатьВыгрузку(Новый ОписаниеОповещения(
"ПрочитатьСертификатыПодписейЦиклПослеВыгрузкиСертификата", ЭтотОбъект, Контекст,
"ПрочитатьСертификатыПодписейЦиклПослеОшибкиВыгрузкиСертификата", ЭтотОбъект));
КонецПроцедуры
// Продолжение процедуры ПрочитатьСертификатыПодписей.
Процедура ПрочитатьСертификатыПодписейЦиклПослеОшибкиВыгрузкиСертификата(ИнформацияОбОшибке, СтандартнаяОбработка, Контекст) Экспорт
СтандартнаяОбработка = Ложь;
ПрочитатьСертификатыПодписейЦиклНачало(Контекст);
КонецПроцедуры
// Продолжение процедуры ПрочитатьСертификатыПодписей.
//
// Параметры:
// Контекст - Структура:
// * Форма - ФормаКлиентскогоПриложения
//
Процедура ПрочитатьСертификатыПодписейЦиклПослеВыгрузкиСертификата(ДанныеСертификата, Контекст) Экспорт
СтрокаТаблицы = Контекст.СтрокаТаблицы;
СтрокаТаблицы.Отпечаток = Base64Строка(Контекст.Сертификат.Отпечаток);
СтрокаТаблицы.АдресСертификата = ПоместитьВоВременноеХранилище(ДанныеСертификата, Контекст.Форма.УникальныйИдентификатор);
СтрокаТаблицы.КомуВыданСертификат = Контекст.МодульЭлектроннаяПодписьКлиент.ПредставлениеСубъекта(Контекст.Сертификат);
ПрочитатьСертификатыПодписейЦиклНачало(Контекст);
КонецПроцедуры
// По окончании Зашифровать нотифицирует. // По окончании Зашифровать нотифицирует.
// Параметры: // Параметры:
@@ -694,12 +694,12 @@
ТипДокумента = ПолучитьТипДанныхДокумента(СтрокаМассива.Содержание); ТипДокумента = ПолучитьТипДанныхДокумента(СтрокаМассива.Содержание);
НоваяСтрока = Новый Структура("Content, Name, Type, OriginalContent, ВернутьКак"); НоваяСтрока = Новый Структура();
НоваяСтрока.Content = СтрокаМассива.Содержание; НоваяСтрока.Вставить("Content", СтрокаМассива.Содержание);
НоваяСтрока.Name = СтрокаМассива.ИмяДокумента; НоваяСтрока.Вставить("Name", СтрокаМассива.ИмяДокумента);
НоваяСтрока.Type = СтрокаМассива.ТипДокумента; НоваяСтрока.Вставить("Type", СтрокаМассива.ТипДокумента);
НоваяСтрока.OriginalContent = СтрокаМассива.ИсходноеСодержание; НоваяСтрока.Вставить("OriginalContent", СтрокаМассива.ИсходноеСодержание);
НоваяСтрока.ВернутьКак = ТипДокумента; НоваяСтрока.Вставить("ВернутьКак", ТипДокумента);
Результат.Добавить(НоваяСтрока); Результат.Добавить(НоваяСтрока);
@@ -828,7 +828,9 @@
ИсходныйДокумент = Неопределено, ИсходныйДокумент = Неопределено,
ИндексПодписи = Неопределено) Экспорт ИндексПодписи = Неопределено) Экспорт
ВсеТипы = ПолучитьТипыПодписей();
Результат = ПолучитьСвойствоПодписиCAdES("BES", ОтделеннаяПодпись, ХешДокумента, ВариантПодписи, "", ИсходныйДокумент); Результат = ПолучитьСвойствоПодписиCAdES("BES", ОтделеннаяПодпись, ХешДокумента, ВариантПодписи, "", ИсходныйДокумент);
Результат.Вставить("SignatureType", ВсеТипы["CMS"]);
Возврат Результат; Возврат Результат;
@@ -182,6 +182,7 @@
// См. ВыгрузкаЗагрузкаДанныхПереопределяемый.ПриЗаполненииТиповИсключаемыхИзВыгрузкиЗагрузки. // См. ВыгрузкаЗагрузкаДанныхПереопределяемый.ПриЗаполненииТиповИсключаемыхИзВыгрузкиЗагрузки.
Процедура ПриЗаполненииТиповИсключаемыхИзВыгрузкиЗагрузки(Типы) Экспорт Процедура ПриЗаполненииТиповИсключаемыхИзВыгрузкиЗагрузки(Типы) Экспорт
Типы.Добавить(Метаданные.РегистрыСведений.НеудаленныеОбъекты);
Типы.Добавить(Метаданные.РегистрыСведений.УдаляемыеОбъекты); Типы.Добавить(Метаданные.РегистрыСведений.УдаляемыеОбъекты);
Типы.Добавить(Метаданные.Константы.ПроверятьИспользованиеУдаляемыхОбъектов); Типы.Добавить(Метаданные.Константы.ПроверятьИспользованиеУдаляемыхОбъектов);
@@ -408,6 +408,11 @@
КонецЕсли; КонецЕсли;
Если ЭтоРегион Тогда Если ЭтоРегион Тогда
Если НаименованиеРегионаБезТипа(Наименование) Тогда
Возврат Наименование;
КонецЕсли;
Возврат СокрЛП(Наименование + " " + ТипАдресногоОбъекта); Возврат СокрЛП(Наименование + " " + ТипАдресногоОбъекта);
КонецЕсли; КонецЕсли;
@@ -590,6 +595,12 @@
Возврат "e1cib/app/Обработка.ВводКонтактнойИнформации.Форма.ВебСайт"; Возврат "e1cib/app/Обработка.ВводКонтактнойИнформации.Форма.ВебСайт";
КонецФункции КонецФункции
Функция НаименованиеРегионаБезТипа(Наименование)
// АПК: 1297-выкл Данные ФИАС, не локализуются
Возврат СтрНачинаетсяС(ВРег(Наименование), ВРег("Ханты-Мансийский Автономный округ - Югра")); // @Non-NLS-1
// АПК: 1297-вкл
КонецФункции
#КонецОбласти #КонецОбласти
#КонецОбласти #КонецОбласти
@@ -2691,7 +2691,7 @@
#Область СлужебныеПроцедурыИФункцииДляСовместимости #Область СлужебныеПроцедурыИФункцииДляСовместимости
// Возвращаемое значение: // Возвращаемое значение:
// см. XDTOПакет.КонтактнаяИнформация // см. XDTOПакет.КонтактнаяИнформация.КонтактнаяИнформация
// //
Функция КонтактнаяИнформацияИзXML(Знач Текст, Знач ОжидаемыйВид = Неопределено, РезультатПреобразования = Неопределено, Знач Представление = "") Экспорт Функция КонтактнаяИнформацияИзXML(Знач Текст, Знач ОжидаемыйВид = Неопределено, РезультатПреобразования = Неопределено, Знач Представление = "") Экспорт
@@ -2728,7 +2728,7 @@
Попытка Попытка
Результат = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML, ФабрикаXDTO.Тип(ПространствоИмен, "КонтактнаяИнформация")); // см. XDTOПакет.КонтактнаяИнформация Результат = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML, ФабрикаXDTO.Тип(ПространствоИмен, "КонтактнаяИнформация")); // см. XDTOПакет.КонтактнаяИнформация.КонтактнаяИнформация
Если ОжидаемыйТип = Перечисления.ТипыКонтактнойИнформации.Адрес И КонтактнаяИнформацияXDTOПустая(Результат) Тогда Если ОжидаемыйТип = Перечисления.ТипыКонтактнойИнформации.Адрес И КонтактнаяИнформацияXDTOПустая(Результат) Тогда
НеобходимоВосстановитьКонтактнуюИнформацию = Истина; НеобходимоВосстановитьКонтактнуюИнформацию = Истина;
@@ -4205,8 +4205,10 @@
КонецФункции КонецФункции
Функция ПреобразованиеXSLT_ТипКонтактнойИнформацииПоСтрокеXML() Функция ПреобразованиеXSLT_ТипКонтактнойИнформацииПоСтрокеXML()
Преобразователь = Новый ПреобразованиеXSL; Преобразователь = Новый ПреобразованиеXSL;
Преобразователь.ЗагрузитьТаблицуСтилейXSLИзСтроки("
Шаблон = "
|<xsl:stylesheet version=""1.0"" xmlns:xsl=""http://www.w3.org/1999/XSL/Transform"" |<xsl:stylesheet version=""1.0"" xmlns:xsl=""http://www.w3.org/1999/XSL/Transform""
| xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" | xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance""
| xmlns:ci=""http://www.v8.1c.ru/ssl/contactinfo"" | xmlns:ci=""http://www.v8.1c.ru/ssl/contactinfo""
@@ -4216,7 +4218,7 @@
| <xsl:template match=""/""> | <xsl:template match=""/"">
| <EnumRef.ТипыКонтактнойИнформации xmlns=""http://v8.1c.ru/8.1/data/enterprise/current-config"" xmlns:xs=""http://www.w3.org/2001/XMLSchema"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xsi:type=""EnumRef.ТипыКонтактнойИнформации""> | <EnumRef.ТипыКонтактнойИнформации xmlns=""http://v8.1c.ru/8.1/data/enterprise/current-config"" xmlns:xs=""http://www.w3.org/2001/XMLSchema"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xsi:type=""EnumRef.ТипыКонтактнойИнформации"">
| <xsl:call-template name=""enum-by-type"" > | <xsl:call-template name=""enum-by-type"" >
| <xsl:with-param name=""type"" select=""ci:КонтактнаяИнформация/ci:Состав/@xsi:type"" /> | <xsl:with-param name=""type"" select=""ci:[КонтактнаяИнформация]/ci:[Состав]/@xsi:type"" />
| </xsl:call-template> | </xsl:call-template>
| </EnumRef.ТипыКонтактнойИнформации> | </EnumRef.ТипыКонтактнойИнформации>
| </xsl:template> | </xsl:template>
@@ -4224,29 +4226,45 @@
| <xsl:template name=""enum-by-type""> | <xsl:template name=""enum-by-type"">
| <xsl:param name=""type"" /> | <xsl:param name=""type"" />
| <xsl:choose> | <xsl:choose>
| <xsl:when test=""$type='Адрес'""> | <xsl:when test=""$type='[Адрес]'"">
| <xsl:text>Адрес</xsl:text> | <xsl:text>Адрес</xsl:text>
| </xsl:when> | </xsl:when>
| <xsl:when test=""$type='НомерТелефона'""> | <xsl:when test=""$type='[НомерТелефона]'"">
| <xsl:text>Телефон</xsl:text> | <xsl:text>Телефон</xsl:text>
| </xsl:when> | </xsl:when>
| <xsl:when test=""$type='НомерФакса'""> | <xsl:when test=""$type='[НомерФакса]'"">
| <xsl:text>Факс</xsl:text> | <xsl:text>Факс</xsl:text>
| </xsl:when> | </xsl:when>
| <xsl:when test=""$type='ЭлектроннаяПочта'""> | <xsl:when test=""$type='[ЭлектроннаяПочта]'"">
| <xsl:text>АдресЭлектроннойПочты</xsl:text> | <xsl:text>АдресЭлектроннойПочты</xsl:text>
| </xsl:when> | </xsl:when>
| <xsl:when test=""$type='ВебСайт'""> | <xsl:when test=""$type='[ВебСайт]'"">
| <xsl:text>ВебСтраница</xsl:text> | <xsl:text>ВебСтраница</xsl:text>
| </xsl:when> | </xsl:when>
| <xsl:when test=""$type='Прочее'""> | <xsl:when test=""$type='[Прочее]'"">
| <xsl:text>Другое</xsl:text> | <xsl:text>Другое</xsl:text>
| </xsl:when> | </xsl:when>
| </xsl:choose> | </xsl:choose>
| </xsl:template> | </xsl:template>
| |
|</xsl:stylesheet> |</xsl:stylesheet>
|"); |";
ИменаСвойствXDTOПакета = Новый Структура();
ИменаСвойствXDTOПакета.Вставить("КонтактнаяИнформация", "КонтактнаяИнформация"); // @Non-NLS-2
ИменаСвойствXDTOПакета.Вставить("Состав", "Состав"); // @Non-NLS-2
ИменаСвойствXDTOПакета.Вставить("Адрес", "Адрес"); // @Non-NLS-2
ИменаСвойствXDTOПакета.Вставить("НомерТелефона", "НомерТелефона"); // @Non-NLS-2
ИменаСвойствXDTOПакета.Вставить("НомерФакса", "НомерФакса"); // @Non-NLS-2
ИменаСвойствXDTOПакета.Вставить("ЭлектроннаяПочта", "ЭлектроннаяПочта"); // @Non-NLS-2
ИменаСвойствXDTOПакета.Вставить("ВебСайт", "ВебСайт"); // @Non-NLS-2
ИменаСвойствXDTOПакета.Вставить("Прочее", "Прочее"); // @Non-NLS-2
Шаблон = СтроковыеФункцииКлиентСервер.ВставитьПараметрыВСтроку(Шаблон, ИменаСвойствXDTOПакета);
Преобразователь.ЗагрузитьТаблицуСтилейXSLИзСтроки(Шаблон);
Возврат Преобразователь; Возврат Преобразователь;
КонецФункции КонецФункции
@@ -750,9 +750,17 @@
ПроверкаЗаписьСостоянияОригинала.Отбор.ОбщееСостояние.Установить(Истина); ПроверкаЗаписьСостоянияОригинала.Отбор.ОбщееСостояние.Установить(Истина);
ПроверкаЗаписьСостоянияОригинала.Прочитать(); ПроверкаЗаписьСостоянияОригинала.Прочитать();
Если ПроверкаЗаписьСостоянияОригинала.Количество()> 0 Тогда Если ПроверкаЗаписьСостоянияОригинала.Количество()> 0 Тогда
Если СокрЛП(ПроверкаЗаписьСостоянияОригинала[0].Состояние) <> ИмяСостояния Тогда
ПроверкаЗаписьСостоянияОригинала.Отбор.ОбщееСостояние.Установить(Ложь);
ПроверкаЗаписьСостоянияОригинала.Прочитать();
Если ПроверкаЗаписьСостоянияОригинала.Количество()>0 Тогда
ТЧ = ТабличнаяЧастьМногосотрудниковаДокумента(ДанныеЗаписи.Ссылка); ТЧ = ТабличнаяЧастьМногосотрудниковаДокумента(ДанныеЗаписи.Ссылка);
Если ТЧ <> "" Тогда Если ТЧ <> "" Тогда
Для Каждого Сотрудник Из ДанныеЗаписи.Ссылка[ТЧ] Цикл Для Каждого Сотрудник Из ДанныеЗаписи.Ссылка[ТЧ] Цикл
ПроверкаЗаписьСостоянияОригинала.Отбор.Сотрудник.Установить(Сотрудник.Сотрудник);
ПроверкаЗаписьСостоянияОригинала.Прочитать();
Если ПроверкаЗаписьСостоянияОригинала.Количество()>0 Тогда
Для Каждого ПрошлаяЗапись Из ПроверкаЗаписьСостоянияОригинала Цикл Для Каждого ПрошлаяЗапись Из ПроверкаЗаписьСостоянияОригинала Цикл
Если СокрЛП(ПрошлаяЗапись.Состояние) <> ИмяСостояния Тогда Если СокрЛП(ПрошлаяЗапись.Состояние) <> ИмяСостояния Тогда
Изменено = Истина; Изменено = Истина;
@@ -760,6 +768,7 @@
ПрошлаяЗапись.ПервичныйДокумент,ПрошлаяЗапись.ПервичныйДокументПредставление,ИмяСостояния,ПрошлаяЗапись.ФормаИзвне,Сотрудник.Сотрудник); ПрошлаяЗапись.ПервичныйДокумент,ПрошлаяЗапись.ПервичныйДокументПредставление,ИмяСостояния,ПрошлаяЗапись.ФормаИзвне,Сотрудник.Сотрудник);
КонецЕсли; КонецЕсли;
КонецЦикла; КонецЦикла;
КонецЕсли;
КонецЦикла; КонецЦикла;
Иначе Иначе
Для Каждого ПрошлаяЗапись Из ПроверкаЗаписьСостоянияОригинала Цикл Для Каждого ПрошлаяЗапись Из ПроверкаЗаписьСостоянияОригинала Цикл
@@ -770,7 +779,8 @@
КонецЕсли; КонецЕсли;
КонецЦикла; КонецЦикла;
КонецЕсли; КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли; КонецЕсли;
Изменено = Истина; Изменено = Истина;
РегистрыСведений.СостоянияОригиналовПервичныхДокументов.ЗаписатьОбщееСостояниеОригиналаДокумента(ДанныеЗаписи.Ссылка,ИмяСостояния); РегистрыСведений.СостоянияОригиналовПервичныхДокументов.ЗаписатьОбщееСостояниеОригиналаДокумента(ДанныеЗаписи.Ссылка,ИмяСостояния);
@@ -86,12 +86,13 @@
Идентификатор = ""; Идентификатор = "";
АлгоритмыПроверкиПодписи = Новый Массив; АлгоритмыПроверкиПодписи = Новый Массив;
Иначе Иначе
Идентификатор = Строки[0].Идентификатор; Строка = Строки[0]; // СтрокаТаблицыЗначений: см. ЭлектроннаяПодписьСлужебный.ПоставляемыеНастройкиПрограмм
АлгоритмыПроверкиПодписи = Строки[0].АлгоритмыПроверкиПодписи; Идентификатор = Строка.Идентификатор;
Если АлгоритмыПроверкиПодписи.Найти(Строки[0].АлгоритмПодписи) = Неопределено Тогда АлгоритмыПроверкиПодписи = Строка.АлгоритмыПроверкиПодписи;
АлгоритмыПроверкиПодписи.Вставить(0, Строки[0].АлгоритмПодписи); Если АлгоритмыПроверкиПодписи.Найти(Строка.АлгоритмПодписи) = Неопределено Тогда
АлгоритмыПроверкиПодписи.Вставить(0, Строка.АлгоритмПодписи);
КонецЕсли; КонецЕсли;
Для Каждого АлгоритмПодписи Из Строки[0].АлгоритмыПодписи Цикл Для Каждого АлгоритмПодписи Из Строка.АлгоритмыПодписи Цикл
Если АлгоритмыПроверкиПодписи.Найти(АлгоритмПодписи) = Неопределено Тогда Если АлгоритмыПроверкиПодписи.Найти(АлгоритмПодписи) = Неопределено Тогда
АлгоритмыПроверкиПодписи.Добавить(АлгоритмПодписи); АлгоритмыПроверкиПодписи.Добавить(АлгоритмПодписи);
КонецЕсли; КонецЕсли;
+12 -10
View File
@@ -1,17 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="1867d104-06a7-11ec-8986-0242ac110002"> <mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="bcd40b64-0cf0-11ec-d08f-0242ac110002">
<name>БиблиотекаСтандартныхПодсистем</name> <name>БиблиотекаСтандартныхПодсистем</name>
<synonym> <synonym>
<key>ru</key> <key>ru</key>
<value>Библиотека стандартных подсистем, редакция 3.1</value> <value>Библиотека стандартных подсистем, редакция 3.1</value>
</synonym> </synonym>
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="1867d10e-06a7-11ec-8986-0242ac110002"/> <containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="bcd40b65-0cf0-11ec-d08f-0242ac110002"/>
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="1867d136-06a7-11ec-8986-0242ac110002"/> <containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="bcd40b96-0cf0-11ec-d08f-0242ac110002"/>
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="1867d140-06a7-11ec-8986-0242ac110002"/> <containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="bcd40b97-0cf0-11ec-d08f-0242ac110002"/>
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="1867d141-06a7-11ec-8986-0242ac110002"/> <containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="bcd40ba0-0cf0-11ec-d08f-0242ac110002"/>
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="1867d142-06a7-11ec-8986-0242ac110002"/> <containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="bcd40ba1-0cf0-11ec-d08f-0242ac110002"/>
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="1867d14a-06a7-11ec-8986-0242ac110002"/> <containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="bcd40baa-0cf0-11ec-d08f-0242ac110002"/>
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="2b0e8014-08b0-4a19-a561-06a2c83b7a1f"/> <containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="73ddf94f-5b41-42e9-b7b6-91ee67097b59"/>
<defaultRunMode>ManagedApplication</defaultRunMode> <defaultRunMode>ManagedApplication</defaultRunMode>
<usePurposes>PersonalComputer</usePurposes> <usePurposes>PersonalComputer</usePurposes>
<scriptVariant>Russian</scriptVariant> <scriptVariant>Russian</scriptVariant>
@@ -19,7 +19,7 @@
<defaultRoles>Role.АдминистраторСистемы</defaultRoles> <defaultRoles>Role.АдминистраторСистемы</defaultRoles>
<defaultRoles>Role.ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок</defaultRoles> <defaultRoles>Role.ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок</defaultRoles>
<vendor>Фирма &quot;1С&quot;</vendor> <vendor>Фирма &quot;1С&quot;</vendor>
<version>3.1.5.171</version> <version>3.1.5.180</version>
<updateCatalogAddress>http://downloads.v8.1c.ru/tmplts/</updateCatalogAddress> <updateCatalogAddress>http://downloads.v8.1c.ru/tmplts/</updateCatalogAddress>
<includeHelpInContents>true</includeHelpInContents> <includeHelpInContents>true</includeHelpInContents>
<usedMobileApplicationFunctionalities> <usedMobileApplicationFunctionalities>
@@ -1185,7 +1185,7 @@
<xDTOPackages>XDTOPackage.DataArtefacts_Files_1_0_0_1</xDTOPackages> <xDTOPackages>XDTOPackage.DataArtefacts_Files_1_0_0_1</xDTOPackages>
<xDTOPackages>XDTOPackage.DataArtefacts_ServiceUsers_1_0_0_1</xDTOPackages> <xDTOPackages>XDTOPackage.DataArtefacts_ServiceUsers_1_0_0_1</xDTOPackages>
<xDTOPackages>XDTOPackage.DataDump_1_0_2_1</xDTOPackages> <xDTOPackages>XDTOPackage.DataDump_1_0_2_1</xDTOPackages>
<xDTOPackages>XDTOPackage.EnterpriseData_1_10_1</xDTOPackages> <xDTOPackages>XDTOPackage.EnterpriseData_1_10_2</xDTOPackages>
<xDTOPackages>XDTOPackage.EnterpriseData_1_2_3</xDTOPackages> <xDTOPackages>XDTOPackage.EnterpriseData_1_2_3</xDTOPackages>
<xDTOPackages>XDTOPackage.EnterpriseData_1_3_20</xDTOPackages> <xDTOPackages>XDTOPackage.EnterpriseData_1_3_20</xDTOPackages>
<xDTOPackages>XDTOPackage.EnterpriseData_1_4_20</xDTOPackages> <xDTOPackages>XDTOPackage.EnterpriseData_1_4_20</xDTOPackages>
@@ -1656,6 +1656,7 @@
<constants>Constant.ПроверятьЭлектронныеПодписиНаСервере</constants> <constants>Constant.ПроверятьЭлектронныеПодписиНаСервере</constants>
<constants>Constant.ПрофильБезопасностиИнформационнойБазы</constants> <constants>Constant.ПрофильБезопасностиИнформационнойБазы</constants>
<constants>Constant.РазрешитьВыполнениеДООРегламентнымиЗаданиямиВМоделиСервиса</constants> <constants>Constant.РазрешитьВыполнениеДООРегламентнымиЗаданиямиВМоделиСервиса</constants>
<constants>Constant.РежимОчисткиФайлов</constants>
<constants>Constant.СведенияОБлокируемыхОбъектах</constants> <constants>Constant.СведенияОБлокируемыхОбъектах</constants>
<constants>Constant.СведенияОбОбновленииИБ</constants> <constants>Constant.СведенияОбОбновленииИБ</constants>
<constants>Constant.СервисПереводаТекста</constants> <constants>Constant.СервисПереводаТекста</constants>
@@ -1881,6 +1882,7 @@
<enums>Enum.РежимыВыгрузкиОбъектовОбмена</enums> <enums>Enum.РежимыВыгрузкиОбъектовОбмена</enums>
<enums>Enum.РежимыВыполненияОбработчиков</enums> <enums>Enum.РежимыВыполненияОбработчиков</enums>
<enums>Enum.РежимыВыполненияОтложенныхОбработчиков</enums> <enums>Enum.РежимыВыполненияОтложенныхОбработчиков</enums>
<enums>Enum.РежимыОчисткиФайлов</enums>
<enums>Enum.РежимыСовместимостиРазрешенийДополнительныхОтчетовИОбработок</enums> <enums>Enum.РежимыСовместимостиРазрешенийДополнительныхОтчетовИОбработок</enums>
<enums>Enum.РезультатыВыполненияОбмена</enums> <enums>Enum.РезультатыВыполненияОбмена</enums>
<enums>Enum.СервисыПереводаТекста</enums> <enums>Enum.СервисыПереводаТекста</enums>
@@ -1 +1 @@
{6,1,1,5e836194-06a7-11ec-b291-0242ac110002,1,4dbca118-06a7-11ec-8e83-0242ac110002,"3.1.5.171","Фирма ""1С""","БиблиотекаСтандартныхПодсистем",6460,1,0,1867d104-06a7-11ec-8986-0242ac110002,1867d104-06a7-11ec-8986-0242ac110002,1,0,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,1,0,9233322b-dfdb-4c66-91fe-1299292d40a5,9233322b-dfdb-4c66-91fe-1299292d40a5,1,0,7795348b-2f52-47f7-bf00-e11e5e795a43,7795348b-2f52-47f7-bf00-e11e5e795a43,1,0,0421b67e-ed26-491d-ab98-ec59002ed4ce,0421b67e-ed26-491d-ab98-ec59002ed4ce,1,0,bb47ced2-31f9-4870-8633-20b986e53ccc,bb47ced2-31f9-4870-8633-20b986e53ccc,1,0,7d8acec9-f5a9-411e-921c-446ed0dd3332,7d8acec9-f5a9-411e-921c-446ed0dd3332,1,0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,1,0,cdbd26b1-9583-46e8-adf7-8cc705639892,cdbd26b1-9583-46e8-adf7-8cc705639892,1,0,c0e38c3e-7088-4e35-9d84-2d0ab9655402,c0e38c3e-7088-4e35-9d84-2d0ab9655402,1,0,1098786f-dd24-4cce-b212-be0cb5f01735,1098786f-dd24-4cce-b212-be0cb5f01735,1,0,3c0037f3-4422-4836-b116-8c72e32bdd55,3c0037f3-4422-4836-b116-8c72e32bdd55,1,0,6f7c6c31-206b-4010-bdad-1ad2e304f154,6f7c6c31-206b-4010-bdad-1ad2e304f154,1,0,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,1,0,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,1,0,5b68d479-7880-44de-84e3-7f578b43f0dc,5b68d479-7880-44de-84e3-7f578b43f0dc,1,0,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,1,0,4cbbdbaf-1f3a-46cd-8c42-28cdcfa32c06,4cbbdbaf-1f3a-46cd-8c42-28cdcfa32c06,1,0,b4629308-42de-4ce8-8591-cf0c2399a9a2,b4629308-42de-4ce8-8591-cf0c2399a9a2,1,0,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,1,0,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,1,0,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,1,0,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1,0,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,1,0,b93b8760-6200-40ee-8bdc-875ba80a6155,b93b8760-6200-40ee-8bdc-875ba80a6155,1,0,e8b248d9-9049-456a-9c7d-7a0462cc67ab,e8b248d9-9049-456a-9c7d-7a0462cc67ab,1,0,d4562287-440d-4462-9de2-7097ccbf3764,d4562287-440d-4462-9de2-7097ccbf3764,1,0,1983fe34-c984-4659-ba41-0e94504f8989,1983fe34-c984-4659-ba41-0e94504f8989,1,0,ec797c75-02c5-4cf5-9dd4-26cd46c99519,ec797c75-02c5-4cf5-9dd4-26cd46c99519,1,0,6fccdf59-fc99-4a2b-a144-fffe438a147c,6fccdf59-fc99-4a2b-a144-fffe438a147c,1,0,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,1,0,08a413ff-bebd-42e5-8ff3-2115746a0844,08a413ff-bebd-42e5-8ff3-2115746a0844,1,0,f24de2ea-fcda-4052-b90f-e9d84314c4f2,f24de2ea-fcda-4052-b90f-e9d84314c4f2,1,0,ff8ae395-c740-4a30-a048-0d57eef6267f,ff8ae395-c740-4a30-a048-0d57eef6267f,1,0,51d06532-f61a-4ed5-afaa-cc4563633e0c,51d06532-f61a-4ed5-afaa-cc4563633e0c,1,0,0e49d980-581b-459f-a4b0-024e8c97e4c0,0e49d980-581b-459f-a4b0-024e8c97e4c0,1,0,da9b32e6-5b93-45a6-84b2-238d57541e18,da9b32e6-5b93-45a6-84b2-238d57541e18,1,0,e43d69c8-b284-47da-b236-611bc94a15b6,e43d69c8-b284-47da-b236-611bc94a15b6,1,0,31eeaa05-6c49-41fe-b840-1edbad4ccac7,31eeaa05-6c49-41fe-b840-1edbad4ccac7,1,0,842c8662-8f39-405e-9665-cbdabc116159,842c8662-8f39-405e-9665-cbdabc116159,1,0,fca4b033-02c4-4d61-9e51-87783c3cef1a,fca4b033-02c4-4d61-9e51-87783c3cef1a,1,0,396ef757-d7f6-411f-8c4c-1acb1106a009,396ef757-d7f6-411f-8c4c-1acb1106a009,1,0,839e29b1-a0d2-40fa-9f3e-46e66b943358,839e29b1-a0d2-40fa-9f3e-46e66b943358,1,0,c56d2cc7-630a-441b-b23f-ba78c34849bd,c56d2cc7-630a-441b-b23f-ba78c34849bd,1,0,9aecf4f5-46ed-4d1c-a584-cd028e467895,9aecf4f5-46ed-4d1c-a584-cd028e467895,1,0,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,1,0,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,1,0,a1f10624-22e9-4a04-b370-fd085bdd0f67,a1f10624-22e9-4a04-b370-fd085bdd0f67,1,0,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,1,0,3cffb795-2a28-4beb-92f4-5813f5994022,3cffb795-2a28-4beb-92f4-5813f5994022,1,0,3323ca68-1382-4710-a933-23fc56588935,3323ca68-1382-4710-a933-23fc56588935,1,0,d6b12775-3255-42b8-88b2-62684f873e7d,d6b12775-3255-42b8-88b2-62684f873e7d,1,0,cc23d903-ccc5-42f4-862f-5e7278c4e346,cc23d903-ccc5-42f4-862f-5e7278c4e346,1,0,98f033e0-fa40-46e0-b51a-87a066749a35,98f033e0-fa40-46e0-b51a-87a066749a35,1,0,e8b4cb2d-1180-4101-954a-4cb5464f198c,e8b4cb2d-1180-4101-954a-4cb5464f198c,1,0,a379287d-1ce8-460d-a503-910e728e28f1,a379287d-1ce8-460d-a503-910e728e28f1,1,0,f765c4ba-c677-42ac-8d0c-43bb485405b9,f765c4ba-c677-42ac-8d0c-43bb485405b9,1,0,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,1,0,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,1,0,4009cb3a-6754-481f-911b-907558cea38a,4009cb3a-6754-481f-911b-907558cea38a,1,0,653a7fd8-91c7-49aa-aa63-45da087e0d0a,653a7fd8-91c7-49aa-aa63-45da087e0d0a,1,0,d7cf3981-cf63-4a21-868b-8175a7704a8f,d7cf3981-cf63Line truncated {6,1,1,1e8813be-0cf1-11ec-9d8d-0242ac110002,1,058a5bec-0cf1-11ec-319a-0242ac110002,"3.1.5.180","Фирма ""1С""","БиблиотекаСтандартныхПодсистем",6466,1,0,bcd40b64-0cf0-11ec-d08f-0242ac110002,bcd40b64-0cf0-11ec-d08f-0242ac110002,1,0,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,1,0,9233322b-dfdb-4c66-91fe-1299292d40a5,9233322b-dfdb-4c66-91fe-1299292d40a5,1,0,7795348b-2f52-47f7-bf00-e11e5e795a43,7795348b-2f52-47f7-bf00-e11e5e795a43,1,0,0421b67e-ed26-491d-ab98-ec59002ed4ce,0421b67e-ed26-491d-ab98-ec59002ed4ce,1,0,bb47ced2-31f9-4870-8633-20b986e53ccc,bb47ced2-31f9-4870-8633-20b986e53ccc,1,0,7d8acec9-f5a9-411e-921c-446ed0dd3332,7d8acec9-f5a9-411e-921c-446ed0dd3332,1,0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,1,0,cdbd26b1-9583-46e8-adf7-8cc705639892,cdbd26b1-9583-46e8-adf7-8cc705639892,1,0,c0e38c3e-7088-4e35-9d84-2d0ab9655402,c0e38c3e-7088-4e35-9d84-2d0ab9655402,1,0,1098786f-dd24-4cce-b212-be0cb5f01735,1098786f-dd24-4cce-b212-be0cb5f01735,1,0,3c0037f3-4422-4836-b116-8c72e32bdd55,3c0037f3-4422-4836-b116-8c72e32bdd55,1,0,6f7c6c31-206b-4010-bdad-1ad2e304f154,6f7c6c31-206b-4010-bdad-1ad2e304f154,1,0,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,1,0,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,1,0,5b68d479-7880-44de-84e3-7f578b43f0dc,5b68d479-7880-44de-84e3-7f578b43f0dc,1,0,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,1,0,4cbbdbaf-1f3a-46cd-8c42-28cdcfa32c06,4cbbdbaf-1f3a-46cd-8c42-28cdcfa32c06,1,0,b4629308-42de-4ce8-8591-cf0c2399a9a2,b4629308-42de-4ce8-8591-cf0c2399a9a2,1,0,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,1,0,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,1,0,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,1,0,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1,0,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,1,0,b93b8760-6200-40ee-8bdc-875ba80a6155,b93b8760-6200-40ee-8bdc-875ba80a6155,1,0,e8b248d9-9049-456a-9c7d-7a0462cc67ab,e8b248d9-9049-456a-9c7d-7a0462cc67ab,1,0,d4562287-440d-4462-9de2-7097ccbf3764,d4562287-440d-4462-9de2-7097ccbf3764,1,0,1983fe34-c984-4659-ba41-0e94504f8989,1983fe34-c984-4659-ba41-0e94504f8989,1,0,ec797c75-02c5-4cf5-9dd4-26cd46c99519,ec797c75-02c5-4cf5-9dd4-26cd46c99519,1,0,6fccdf59-fc99-4a2b-a144-fffe438a147c,6fccdf59-fc99-4a2b-a144-fffe438a147c,1,0,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,1,0,08a413ff-bebd-42e5-8ff3-2115746a0844,08a413ff-bebd-42e5-8ff3-2115746a0844,1,0,f24de2ea-fcda-4052-b90f-e9d84314c4f2,f24de2ea-fcda-4052-b90f-e9d84314c4f2,1,0,ff8ae395-c740-4a30-a048-0d57eef6267f,ff8ae395-c740-4a30-a048-0d57eef6267f,1,0,51d06532-f61a-4ed5-afaa-cc4563633e0c,51d06532-f61a-4ed5-afaa-cc4563633e0c,1,0,0e49d980-581b-459f-a4b0-024e8c97e4c0,0e49d980-581b-459f-a4b0-024e8c97e4c0,1,0,da9b32e6-5b93-45a6-84b2-238d57541e18,da9b32e6-5b93-45a6-84b2-238d57541e18,1,0,e43d69c8-b284-47da-b236-611bc94a15b6,e43d69c8-b284-47da-b236-611bc94a15b6,1,0,31eeaa05-6c49-41fe-b840-1edbad4ccac7,31eeaa05-6c49-41fe-b840-1edbad4ccac7,1,0,842c8662-8f39-405e-9665-cbdabc116159,842c8662-8f39-405e-9665-cbdabc116159,1,0,fca4b033-02c4-4d61-9e51-87783c3cef1a,fca4b033-02c4-4d61-9e51-87783c3cef1a,1,0,396ef757-d7f6-411f-8c4c-1acb1106a009,396ef757-d7f6-411f-8c4c-1acb1106a009,1,0,839e29b1-a0d2-40fa-9f3e-46e66b943358,839e29b1-a0d2-40fa-9f3e-46e66b943358,1,0,c56d2cc7-630a-441b-b23f-ba78c34849bd,c56d2cc7-630a-441b-b23f-ba78c34849bd,1,0,9aecf4f5-46ed-4d1c-a584-cd028e467895,9aecf4f5-46ed-4d1c-a584-cd028e467895,1,0,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,1,0,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,1,0,a1f10624-22e9-4a04-b370-fd085bdd0f67,a1f10624-22e9-4a04-b370-fd085bdd0f67,1,0,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,1,0,3cffb795-2a28-4beb-92f4-5813f5994022,3cffb795-2a28-4beb-92f4-5813f5994022,1,0,3323ca68-1382-4710-a933-23fc56588935,3323ca68-1382-4710-a933-23fc56588935,1,0,d6b12775-3255-42b8-88b2-62684f873e7d,d6b12775-3255-42b8-88b2-62684f873e7d,1,0,cc23d903-ccc5-42f4-862f-5e7278c4e346,cc23d903-ccc5-42f4-862f-5e7278c4e346,1,0,98f033e0-fa40-46e0-b51a-87a066749a35,98f033e0-fa40-46e0-b51a-87a066749a35,1,0,e8b4cb2d-1180-4101-954a-4cb5464f198c,e8b4cb2d-1180-4101-954a-4cb5464f198c,1,0,a379287d-1ce8-460d-a503-910e728e28f1,a379287d-1ce8-460d-a503-910e728e28f1,1,0,f765c4ba-c677-42ac-8d0c-43bb485405b9,f765c4ba-c677-42ac-8d0c-43bb485405b9,1,0,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,1,0,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,1,0,4009cb3a-6754-481f-911b-907558cea38a,4009cb3a-6754-481f-911b-907558cea38a,1,0,653a7fd8-91c7-49aa-aa63-45da087e0d0a,653a7fd8-91c7-49aa-aa63-45da087e0d0a,1,0,d7cf3981-cf63-4a21-868b-8175a7704a8f,d7cf3981-cf63Line truncated
@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Constant xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="99c5e87a-f096-4315-8fbe-f596ea9c176f">
<producedTypes>
<managerType typeId="87e9375e-8559-4b7f-8614-2a91f942a770" valueTypeId="1ff72e73-5f27-482c-8a26-3ff7d41e8d22"/>
<valueManagerType typeId="a329ea36-d474-4c95-9aaa-6e3c02a688b9" valueTypeId="2b600d3c-0cb2-48a4-b4c0-6e91338fcdee"/>
<valueKeyType typeId="a47c72e6-d299-49f8-b211-1f709f797efa" valueTypeId="7b11e1fa-d466-4acb-9f10-b0c5d9798db9"/>
</producedTypes>
<name>РежимОчисткиФайлов</name>
<synonym>
<key>ru</key>
<value>Режим очистки файлов</value>
</synonym>
<type>
<types>EnumRef.РежимыОчисткиФайлов</types>
</type>
<useStandardCommands>true</useStandardCommands>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<dataLockControlMode>Managed</dataLockControlMode>
</mdclass:Constant>
@@ -2066,45 +2066,36 @@
Возврат Новый Массив; Возврат Новый Массив;
КонецЕсли; КонецЕсли;
ДоступностьОбъектов = ДоступностьОбъектов();
Для Каждого ИмяТипа Из СтрРазделить(ВидыИзменяемыхОбъектов, ",", Ложь) Цикл Для Каждого ИмяТипа Из СтрРазделить(ВидыИзменяемыхОбъектов, ",", Ложь) Цикл
ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ИмяТипа); ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ИмяТипа);
ФильтруемыеРеквизиты = ФильтрРедактированияПоТипу(ОбъектМетаданных); ФильтруемыеРеквизиты = ФильтрРедактированияПоТипу(ОбъектМетаданных);
ЗакрытыеФункциональнымиОпциями = Новый ТаблицаЗначений; ЗакрытыеФункциональнымиОпциями = Новый Соответствие;
ЗакрытыеФункциональнымиОпциями.Колонки.Добавить("ИмяРеквизита", Новый ОписаниеТипов("Строка"));
Для Каждого ОписаниеФО Из Метаданные.ФункциональныеОпции Цикл
Если СтрРазделить(ОписаниеФО.Хранение.ПолноеИмя(), ".")[0] = "Константа" Тогда
ЗначениеФО = ПолучитьФункциональнуюОпцию(ОписаниеФО.Имя);
Если ТипЗнч(ЗначениеФО) = Тип("Булево") И ЗначениеФО = Истина Тогда
Продолжить;
КонецЕсли;
Иначе
// Не фильтруем реквизиты, которые входят в параметризуемые функциональные опции.
Продолжить;
КонецЕсли;
ОписаниеРеквизитов = ОбъектМетаданных.Реквизиты;// массив из ОбъектМетаданныхРеквизит ОписаниеРеквизитов = ОбъектМетаданных.Реквизиты;// массив из ОбъектМетаданныхРеквизит
Для Каждого РеквизитОМ Из ОписаниеРеквизитов Цикл Для Каждого Реквизит Из ОписаниеРеквизитов Цикл
Если ОписаниеФО.Состав.Содержит(РеквизитОМ) Тогда Если ДоступностьОбъектов[Реквизит] = Ложь Тогда
НоваяСтрока = ЗакрытыеФункциональнымиОпциями.Добавить(); ЗакрытыеФункциональнымиОпциями.Вставить(Реквизит.Имя, Истина);
НоваяСтрока.ИмяРеквизита = РеквизитОМ.Имя;
КонецЕсли; КонецЕсли;
КонецЦикла; КонецЦикла;
ОписаниеТабличныхЧастей = ОбъектМетаданных.ТабличныеЧасти;// массив из ОбъектМетаданныхТабличнаяЧасть ОписаниеТабличныхЧастей = ОбъектМетаданных.ТабличныеЧасти;// массив из ОбъектМетаданныхТабличнаяЧасть
Для Каждого ТабличнаяЧасть Из ОписаниеТабличныхЧастей Цикл Для Каждого ТабличнаяЧасть Из ОписаниеТабличныхЧастей Цикл
Если ОписаниеФО.Состав.Содержит(ТабличнаяЧасть) Тогда Если ДоступностьОбъектов[ТабличнаяЧасть] = Ложь Тогда
НоваяСтрока = ЗакрытыеФункциональнымиОпциями.Добавить(); ЗакрытыеФункциональнымиОпциями.Вставить(ТабличнаяЧасть.Имя + ".*", Истина);
НоваяСтрока.ИмяРеквизита = ТабличнаяЧасть.Имя + ".*"; Иначе
Для Каждого Реквизит Из ТабличнаяЧасть.Реквизиты Цикл
Если ДоступностьОбъектов[Реквизит] = Ложь Тогда
ЗакрытыеФункциональнымиОпциями.Вставить(ТабличнаяЧасть.Имя + "." + Реквизит.Имя, Истина);
КонецЕсли; КонецЕсли;
КонецЦикла; КонецЦикла;
КонецЕсли;
КонецЦикла; КонецЦикла;
ЗакрытыеФункциональнымиОпциями.Свернуть("ИмяРеквизита");
Для Каждого РеквизитЗакрытыйФункциональнымиОпциями Из ЗакрытыеФункциональнымиОпциями Цикл Для Каждого РеквизитЗакрытыйФункциональнымиОпциями Из ЗакрытыеФункциональнымиОпциями Цикл
ФильтруемыеРеквизиты[РеквизитЗакрытыйФункциональнымиОпциями.ИмяРеквизита] = Истина; ФильтруемыеРеквизиты.Вставить(РеквизитЗакрытыйФункциональнымиОпциями.Ключ, Истина);
КонецЦикла; КонецЦикла;
КонецЦикла; КонецЦикла;
@@ -2115,6 +2106,7 @@
КонецЦикла; КонецЦикла;
Возврат Результат; Возврат Результат;
КонецФункции КонецФункции
&НаСервере &НаСервере
@@ -4666,4 +4658,32 @@
КонецФункции КонецФункции
&НаСервере
Функция ДоступностьОбъектов()
ДоступностьОбъектов = Новый Соответствие;
Для Каждого ФункциональнаяОпция Из Метаданные.ФункциональныеОпции Цикл
Если Не Метаданные.Константы.Содержит(ФункциональнаяОпция.Хранение) Тогда
Продолжить;
КонецЕсли;
Значение = ПолучитьФункциональнуюОпцию(ФункциональнаяОпция.Имя, Новый Структура);
Для Каждого Элемент Из ФункциональнаяОпция.Состав Цикл
Если Элемент.Объект = Неопределено Тогда
Продолжить;
КонецЕсли;
Если Значение = Истина Тогда
ДоступностьОбъектов.Вставить(Элемент.Объект, Истина);
Иначе
Если ДоступностьОбъектов[Элемент.Объект] = Неопределено Тогда
ДоступностьОбъектов.Вставить(Элемент.Объект, Ложь);
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЦикла;
Возврат ДоступностьОбъектов;
КонецФункции
#КонецОбласти #КонецОбласти
@@ -391,7 +391,7 @@
ДатаНачала = Неопределено; // Дата ДатаНачала = Неопределено; // Дата
ДатаОкончания = Неопределено; // Дата ДатаОкончания = Неопределено; // Дата
ДатыОтбораУказаны = ОтборЖурналаРегистрации.Свойство("ДатаНачала", ДатаНачала) И ОтборЖурналаРегистрации.Свойство("ДатаОкончания", ДатаОкончания) ДатыОтбораУказаны = ОтборЖурналаРегистрации.Свойство("ДатаНачала", ДатаНачала) И ОтборЖурналаРегистрации.Свойство("ДатаОкончания", ДатаОкончания)
И ЗначениеЗаполнено(ДатаНачала) И ЗначениеЗаполнено(ОтборЖурналаРегистрации.ДатаОкончания); И ЗначениеЗаполнено(ДатаНачала) И ЗначениеЗаполнено(ДатаОкончания);
Если ДатыОтбораУказаны И ДатаНачала > ДатаОкончания Тогда Если ДатыОтбораУказаны И ДатаНачала > ДатаОкончания Тогда
ОбщегоНазначенияКлиентСервер.УстановитьСостояниеПоляТабличногоДокумента(Элементы.ПолеИндикаторДлительныхОпераций, "НеИспользовать"); ОбщегоНазначенияКлиентСервер.УстановитьСостояниеПоляТабличногоДокумента(Элементы.ПолеИндикаторДлительныхОпераций, "НеИспользовать");
@@ -6,35 +6,58 @@
<p>С помощью кнопки выберите, как будут загружаться данные: </p> <p>С помощью кнопки выберите, как будут загружаться данные: </p>
<ul><li> <ul><li>
<div><a href="#1">заполнение таблицы в программе</a>; </div> <div><a href="#1">заполнение таблицы в программе</a>; </div>
</li><li> </li>
<div><a href="#2">загрузка из внешнего файла</a>.</div></li></ul><h3><a name="#1">Заполнение таблицы</a></h3> <li>
<div><a href="#2">загрузка из внешнего файла</a>.</div></li></ul><h3><a name="1">Заполнение таблицы</a></h3>
<ul><li>С помощью кнопки <strong>Заполнение таблицы</strong> (включена по умолчанию) можно перейти к вводу данных в таблицу для последующей загрузки в документ непосредственно в программе. <ul><li>С помощью кнопки <strong>Заполнение таблицы</strong> (включена по умолчанию) можно перейти к вводу данных в таблицу для последующей загрузки в документ непосредственно в программе.
</li><li>Таблицу можно заполнить, скопировав данные в таблицу из внешнего файла через буфер обмена. </li>
</li><li>В таблице имеются обязательные для заполнения колонки. Они перечисляются над таблицей. <li>Таблицу можно заполнить, скопировав данные в таблицу из внешнего файла через буфер обмена.
</li><li>С помощью ссылки <strong>Изменить бланк</strong> можно открыть список полей таблицы для ввода и с помощью флажков изменить ее структуру. Необходимо учитывать, что поля, выделенные в таблице жирным шрифтом, являются обязательными для заполнения и трогать их нельзя. </li>
<ul><li>Укажите с помощью флажков необходимые колонки. Можно настроить наименование колонок, их отображение и порядок следования для упрощения загрузки. </li></ul></li><li>После заполнения таблицы для перехода к <a href="#4">сопоставлению данных</a> нажмите <strong>Далее</strong>.</li></ul><h3><a name="#2">Загрузка из внешнего файла</a></h3> <li>В таблице имеются обязательные для заполнения колонки. Они перечисляются над таблицей.
</li>
<li>С помощью ссылки <strong>Изменить бланк</strong> можно открыть список полей таблицы для ввода и с помощью флажков изменить ее структуру. Необходимо учитывать, что поля, выделенные в таблице жирным шрифтом, являются обязательными для заполнения и трогать их нельзя.
<ul><li>Укажите с помощью флажков необходимые колонки. Можно настроить наименование колонок, их отображение и порядок следования для упрощения загрузки. </li></ul></li>
<li>После заполнения таблицы для перехода к <a href="#4">сопоставлению данных</a> нажмите <strong>Далее</strong>.</li></ul><h3><a name="2">Загрузка из внешнего файла</a></h3>
<ul><li>Нажав кнопку <strong>Из внешнего файла</strong>, можно загрузить данные из ранее подготовленного файла, сохраненного на компьютере, или сохранить бланк для заполнения и заполнить данные позже. <ul><li>Нажав кнопку <strong>Из внешнего файла</strong>, можно загрузить данные из ранее подготовленного файла, сохраненного на компьютере, или сохранить бланк для заполнения и заполнить данные позже.
</li><li> </li>
<li>
<div style="MARGIN-RIGHT: 0px">С помощью кнопки <strong>Сохранить бланк для заполнения</strong> можно сохранить таблицу для ввода данных в файле выбранного формата. Необходимо учитывать, что в данном файле имеются колонки, обязательные для заполнения. Укажите путь к файлу на компьютере. Программа присваивает имя файлу по умолчанию.</div> <div style="MARGIN-RIGHT: 0px">С помощью кнопки <strong>Сохранить бланк для заполнения</strong> можно сохранить таблицу для ввода данных в файле выбранного формата. Необходимо учитывать, что в данном файле имеются колонки, обязательные для заполнения. Укажите путь к файлу на компьютере. Программа присваивает имя файлу по умолчанию.</div>
</li><li>Можно заполнить внешние файлы для загрузки в документы. Заполните файл по рекомендованным правилам (обязательные для заполнения поля выделены в таблице жирным шрифтом). </li>
</li><li>С помощью кнопки <strong>Загрузить таблицу из файла</strong> можно загрузить данные из внешнего файла. Выберите путь к файлу на компьютере.</li></ul><h3><a name="#4">Сопоставление данных</a></h3> <li>Можно заполнить внешние файлы для загрузки в документы. Заполните файл по рекомендованным правилам (обязательные для заполнения поля выделены в таблице жирным шрифтом).
</li>
<li>С помощью кнопки <strong>Загрузить таблицу из файла</strong> можно загрузить данные из внешнего файла. Выберите путь к файлу на компьютере.</li></ul><h3><a name="4">Сопоставление данных</a></h3>
<ul><li>После загрузки данных программа производит автоматическое сопоставление данных. Если автоматическое сопоставление не состоялось, то данные выводятся для сопоставления вручную. <ul><li>После загрузки данных программа производит автоматическое сопоставление данных. Если автоматическое сопоставление не состоялось, то данные выводятся для сопоставления вручную.
</li><li>Для того чтобы просмотреть сопоставленные или несопоставленные данные, можно использовать отбор с помощью поля <strong>Показывать</strong>. Несопоставленные данные помечаются красным. С помощью соответствующей кнопки можно <strong>Разрешить неоднозначность</strong>. </li>
</li><li>Для того чтобы вручную сопоставить данные, откройте соответствующий список программы, найдите в нем подходящее значение или введите новое, затем нажмите <strong>Выбрать</strong>. <li>Для того чтобы просмотреть сопоставленные или несопоставленные данные, можно использовать отбор с помощью поля <strong>Показывать</strong>. Несопоставленные данные помечаются красным. </li>
</li><li>Кроме обязательных полей, сопоставляться могут также и необязательные. При загрузке поле можно сопоставить и включить в документ с помощью кнопки <strong>Выбрать из списка</strong>. Если нужного элемента в списке нет, то его можно <strong>Создать</strong> с помощью соответствующей кнопки. <li>С помощью соответствующей кнопки можно <strong>Разрешить неоднозначность</strong>. Для этого в таблице выводятся совпадающие элементы. Необходимо выбрать один из них для загрузки.</li>
</li><li>После автоматического или ручного сопоставления данных, в случае, если все данные сопоставлены, нажмите кнопку <strong>Загрузить данные</strong>. После этого данные будут загружены в документ или список. Остается лишь заполнить недостающие поля.</li></ul><h2><a name="#3">Загрузка данных в произвольный список</a> программы (только для администратора)</h2> <li>Для того чтобы вручную сопоставить данные, откройте соответствующий список программы, найдите в нем подходящее значение или введите новое, затем нажмите <strong>Выбрать</strong>.
</li>
<li>Кроме обязательных полей, сопоставляться могут также и необязательные. При загрузке поле можно сопоставить и включить в документ с помощью кнопки <strong>Выбрать из списка</strong>. Если нужного элемента в списке нет, то его можно <strong>Создать</strong> с помощью соответствующей кнопки.
</li>
<li>После автоматического или ручного сопоставления данных, в случае, если все данные сопоставлены, нажмите кнопку <strong>Загрузить данные</strong>. После этого данные будут загружены в документ или список. Остается лишь заполнить недостающие поля.</li></ul><h2><a name="3">Загрузка данных в произвольный список</a> программы (только для администратора)</h2>
<ul><li><strong>Загрузку данных из файла</strong> в произвольный список администратору можно произвести по соответствующей команде. <ul><li><strong>Загрузку данных из файла</strong> в произвольный список администратору можно произвести по соответствующей команде.
</li><li>В этом случае для загрузки данных можно выбрать один из списков программы. Можно загружать в списки контактную информацию, а также дополнительные реквизиты и сведения. </li>
<li>В этом случае для загрузки данных можно выбрать один из списков программы. Можно загружать в списки контактную информацию, а также дополнительные реквизиты и сведения.
<ul><li>После выбора списка для загрузки данных нажмите кнопку <strong>Далее</strong>. Выберите с помощью кнопок, как будут загружаться данные: <ul><li>После выбора списка для загрузки данных нажмите кнопку <strong>Далее</strong>. Выберите с помощью кнопок, как будут загружаться данные:
<ul><li>Программа предлагает <a href="#1">таблицу для заполнения</a>. <ul><li>Программа предлагает <a href="#1">таблицу для заполнения</a>.
</li><li>Также можно загрузить <a href="#2">данные из внешнего файла</a>. </li></ul></li></ul></li></ul><h3>Сопоставление данных (только для администратора)</h3> </li>
<li>Также можно загрузить <a href="#2">данные из внешнего файла</a>. </li></ul></li></ul></li></ul><h3>Сопоставление данных (только для администратора)</h3>
<ul><li>Заполнив таблицу или скачав данные из файла, нажмите кнопку <strong>Далее</strong>. Необходимо провести сопоставление данных. <ul><li>Заполнив таблицу или скачав данные из файла, нажмите кнопку <strong>Далее</strong>. Необходимо провести сопоставление данных.
</li><li>Поведение программы при сопоставлении данных можно настроить: </li>
<li>Поведение программы при сопоставлении данных можно настроить:
<ul><li>С помощью переключателя выбрать, как поступать с <strong>Сопоставленными</strong> элементами: <strong>Обновлять</strong> или <strong>Пропускать</strong> (по умолчанию). <ul><li>С помощью переключателя выбрать, как поступать с <strong>Сопоставленными</strong> элементами: <strong>Обновлять</strong> или <strong>Пропускать</strong> (по умолчанию).
</li><li>С помощью переключателя выбрать, как поступать с <strong>Несопоставленными</strong> элементами: <strong>Создавать</strong> (по умолчанию) или <strong>Пропускать</strong>.</li></ul></li><li>Данные будут автоматически сопоставлены, если соответствия не будет найдено, таблица выводится с предложением сопоставить данные. </li>
<ul><li>В некоторых списках существует возможность автоматического создания несопоставленных данных. Такие данные помечаются надписью <strong>&lt;Новый&gt;</strong>. Для автоматического создания в списке выберите <strong>Создавать</strong> с помощью переключателя (выбрано по умолчанию). <li>С помощью переключателя выбрать, как поступать с <strong>Несопоставленными</strong> элементами: <strong>Создавать</strong> (по умолчанию) или <strong>Пропускать</strong>.</li></ul></li>
</li><li>После автоматического или ручного сопоставления данных, в случае, если все данные сопоставлены, нажмите кнопку <strong>Загрузить данные</strong>. </li></ul></li><li>После этого данные будут загружены в документ или список. Остается лишь заполнить недостающие поля. Результаты загрузки выводятся на просмотр. <li>Данные будут автоматически сопоставлены, если соответствия не будет найдено, таблица выводится с предложением сопоставить данные.
<ul><li>В некоторых списках существует возможность автоматического создания несопоставленных данных. Такие данные помечаются надписью <strong>&lt;Создан&gt;</strong>. Для автоматического создания в списке выберите <strong>Создавать</strong> с помощью переключателя (выбрано по умолчанию).
</li>
<li>После автоматического или ручного сопоставления данных, в случае, если все данные сопоставлены, нажмите кнопку <strong>Загрузить данные</strong>. </li></ul></li>
<li>После этого данные будут загружены в документ или список. Остается лишь заполнить недостающие поля. Результаты загрузки выводятся на просмотр.
<ul><li>С помощью поля <strong>Показывать</strong> можно вывести <strong>Все</strong>, <strong>Новые</strong>, <strong>Обновленные</strong> и <strong>Пропущенные</strong> элементы. <ul><li>С помощью поля <strong>Показывать</strong> можно вывести <strong>Все</strong>, <strong>Новые</strong>, <strong>Обновленные</strong> и <strong>Пропущенные</strong> элементы.
</li><li>Несколько выделенных строк <strong>Сохранить</strong> в файл, подкорректировать и позднее загрузить повторно. </li>
</li><li>В списке можно изменить введенные элементы, если они не устраивают. Для изменения нескольких выделенных элементов нажмите кнопку <strong>Изменить реквизиты</strong>. <li>Несколько выделенных строк можно <strong>Сохранить</strong> в файл, подкорректировать и позднее загрузить повторно.
</li><li>При необходимости включите флажок <strong>Открыть справочник по кнопке "Готово"</strong>. </li></ul></li><li>Если в таблице все данные корректны, нажмите кнопку <strong>Готово</strong> для подтверждения. Если был включен флажок, открывается список с введенными элементами.</li></ul></body></html> </li>
<li>В списке можно изменить введенные элементы, если они не устраивают. Для изменения нескольких выделенных элементов нажмите кнопку <strong>Изменить реквизиты</strong>.
</li>
<li>При необходимости включите флажок <strong>Открыть справочник по кнопке "Готово"</strong>. </li></ul></li>
<li>Если в таблице все данные корректны, нажмите кнопку <strong>Готово</strong> для подтверждения. Если был включен флажок, открывается список с введенными элементами.</li></ul></body></html>
@@ -1595,7 +1595,7 @@
ИЛИ МодульУправлениеСвойствами.ИспользоватьДопСведения(ПустаяСсылкаНаОбъект) Тогда ИЛИ МодульУправлениеСвойствами.ИспользоватьДопСведения(ПустаяСсылкаНаОбъект) Тогда
СписокСвойств = МодульУправлениеСвойствами.СвойстваОбъекта(ПустаяСсылкаНаОбъект); СписокСвойств = МодульУправлениеСвойствами.СвойстваОбъекта(ПустаяСсылкаНаОбъект);
Для каждого Свойство Из СписокСвойств Цикл Для каждого Свойство Из СписокСвойств Цикл
Свойства.Вставить(Свойство.Наименование, Свойство); Свойства.Вставить(Строка(Свойство), Свойство);
КонецЦикла; КонецЦикла;
КонецЕсли; КонецЕсли;
КонецЕсли; КонецЕсли;
@@ -673,10 +673,14 @@
Если Контекст.ЕстьПравоБезвозвратногоУдаления Тогда Если Контекст.ЕстьПравоБезвозвратногоУдаления Тогда
Если Контекст.ТекущийВариантУдаления = "Пометка" Тогда Если Контекст.ТекущийВариантУдаления = "Пометка" Тогда
ТекстПодсказки = НСтр("ru = 'Выбранные элементы (%1) будут заменены на ""%2"" ТекстПодсказки = НСтр("ru = 'Выбранные элементы (%1) будут заменены на ""%2""
|и <a href = ""ПереключениеРежимаУдаления"">помечены на удаление</a>.'"); |и <a href = ""[Действие]"">помечены на удаление</a>.'");
ПараметрыСтроки = Новый Структура("Действие", "ПереключениеРежимаУдаления");
ТекстПодсказки = СтроковыеФункцииКлиентСервер.ВставитьПараметрыВСтроку(ТекстПодсказки, ПараметрыСтроки);
Иначе Иначе
ТекстПодсказки = НСтр("ru = 'Выбранные элементы (%1) будут заменены на ""%2"" ТекстПодсказки = НСтр("ru = 'Выбранные элементы (%1) будут заменены на ""%2""
|и <a href = ""ПереключениеРежимаУдаления"">удалены безвозвратно</a>.'"); |и <a href = ""[Действие]"">удалены безвозвратно</a>.'");
ПараметрыСтроки = Новый Структура("Действие", "ПереключениеРежимаУдаления");
ТекстПодсказки = СтроковыеФункцииКлиентСервер.ВставитьПараметрыВСтроку(ТекстПодсказки, ПараметрыСтроки);
КонецЕсли; КонецЕсли;
Иначе Иначе
ТекстПодсказки = НСтр("ru = 'Выбранные элементы (%1) будут заменены на ""%2"" ТекстПодсказки = НСтр("ru = 'Выбранные элементы (%1) будут заменены на ""%2""
@@ -832,11 +832,15 @@
Если ЕстьПравоБезвозвратногоУдаления Тогда Если ЕстьПравоБезвозвратногоУдаления Тогда
Если ТекущийВариантУдаления = "Пометка" Тогда Если ТекущийВариантУдаления = "Пометка" Тогда
ТекстПодсказки = НСтр("ru = 'Элементы (%1) будут <a href = ""ПереключениеРежимаУдаления"">помечены на удаление</a> и заменены во всех местах ТекстПодсказки = НСтр("ru = 'Элементы (%1) будут <a href = ""[Действие]"">помечены на удаление</a> и заменены во всех местах
|использования на ""%2"" (отмечен стрелкой).'"); |использования на ""%2"" (отмечен стрелкой).'");
ПараметрыСтроки = Новый Структура("Действие", "ПереключениеРежимаУдаления");
ТекстПодсказки = СтроковыеФункцииКлиентСервер.ВставитьПараметрыВСтроку(ТекстПодсказки, ПараметрыСтроки);
Иначе Иначе
ТекстПодсказки = НСтр("ru = 'Элементы (%1) будут <a href = ""ПереключениеРежимаУдаления"">удалены безвозвратно</a> и заменены во всех местах ТекстПодсказки = НСтр("ru = 'Элементы (%1) будут <a href = ""[Действие]"">удалены безвозвратно</a> и заменены во всех местах
|использования на ""%2"" (отмечен стрелкой).'"); |использования на ""%2"" (отмечен стрелкой).'");
ПараметрыСтроки = Новый Структура("Действие", "ПереключениеРежимаУдаления");
ТекстПодсказки = СтроковыеФункцииКлиентСервер.ВставитьПараметрыВСтроку(ТекстПодсказки, ПараметрыСтроки);
КонецЕсли; КонецЕсли;
Иначе Иначе
ТекстПодсказки = НСтр("ru = 'Элементы (%1) будут помечены на удаление и заменены во всех местах ТекстПодсказки = НСтр("ru = 'Элементы (%1) будут помечены на удаление и заменены во всех местах
@@ -402,6 +402,12 @@
ЗапоминатьВыгруженные = Ложь; ЗапоминатьВыгруженные = Ложь;
ИначеЕсли ПКО.Владелец().Колонки.Найти("ОбъектСДвижениями") <> Неопределено
И ПКО.ОбъектСДвижениями = Истина Тогда
// Если объект выгружаем с движениями по регистрам - проводить не нужно
РежимЗаписи = "Запись";
КонецЕсли; КонецЕсли;
СсылкаНаИсточник = Неопределено; СсылкаНаИсточник = Неопределено;
@@ -5560,6 +5566,10 @@
НоваяСтрока.ПоляТаблицы = одЗначениеЭлемента(ПравилаОбмена, ТипСтрока); НоваяСтрока.ПоляТаблицы = одЗначениеЭлемента(ПравилаОбмена, ТипСтрока);
ИначеЕсли ИмяУзла = "ОбъектСДвижениями" Тогда
НоваяСтрока.ОбъектСДвижениями = одЗначениеЭлемента(ПравилаОбмена, ТипБулево);
ИначеЕсли (ИмяУзла = "Правило") И (ПравилаОбмена.ТипУзла = ТипУзлаXMLКонецЭлемента) Тогда ИначеЕсли (ИмяУзла = "Правило") И (ПравилаОбмена.ТипУзла = ТипУзлаXMLКонецЭлемента) Тогда
Прервать; Прервать;
@@ -13379,6 +13389,8 @@
Колонки.Добавить("СтрокаПолейПоиска"); Колонки.Добавить("СтрокаПолейПоиска");
Колонки.Добавить("ОбъектСДвижениями", одОписаниеТипа("Булево"));
КонецПроцедуры КонецПроцедуры
Функция СоздатьТаблицуВыгруженныхОбъектов() Функция СоздатьТаблицуВыгруженныхОбъектов()
@@ -19,7 +19,7 @@ TD {
<h3>Классификаторы и курсы валют</h3> <h3>Классификаторы и курсы валют</h3>
<p></p> <p></p>
<table><tbody><tr><td colspan="2"> <table><tbody><tr><td colspan="2">
<ul><li><b>Обновление классификаторов</b> - переход к загрузке и <a href="../id5ef8446c-c380-4782-9297-9ccef9972174/038b5c85-fb1c-4082-9c4c-e69f8928bf3a">обновлению классификаторов</a> банков, валют, стран мира, производственных календарей, а также других классификаторов . Обновление можно произвести на портале 1С:ИТС или из файла на компьютере.</li> <ul><li><b>Обновление классификаторов</b> - переход к загрузке и <a href="../id5ef8446c-c380-4782-9297-9ccef9972174/038b5c85-fb1c-4082-9c4c-e69f8928bf3a">обновлению классификаторов</a> банков, валют, стран мира, производственных календарей, а также других классификаторов. Обновление можно произвести на портале 1С:ИТС или из файла на компьютере.</li>
</ul></td> </ul></td>
</tr><tr><td colspan="2"> </tr><tr><td colspan="2">
<ul><li><b>Автоматическое обновление классификаторов</b> - c помощью переключателя можно выбрать настройки:</li> <ul><li><b>Автоматическое обновление классификаторов</b> - c помощью переключателя можно выбрать настройки:</li>
@@ -72,7 +72,9 @@ TD {
</li> </li>
<li><strong>По заданному расписанию</strong> - при выборе этого значения становится доступной команда: <li><strong>По заданному расписанию</strong> - при выборе этого значения становится доступной команда:
</li> </li>
<li><strong>Настроить расписание</strong> - с помощью ссылки можно перейти к настройке расписания автоматической проверки обновлений.</li></ul></td></tr><tr><td> <li><strong>Настроить расписание</strong> - с помощью ссылки можно перейти к <a href="v8help://mngbase/jobschedule.lf">настройке расписания</a> автоматической проверки обновлений.</li></ul></td></tr><tr><td>
<li><strong>Загружать и устанавливать исправления (патчи) автоматически</strong></li></td>
<td>Включите флажок, для того чтобы получать информацию, загружать и устанавливать доступные исправления (патчи) конфигурации в "тихом режиме" без участия пользователя. <br>При выборе становится доступной ссылка <b>Настроить расписание</b>, например <b>Каждый день, один раз в день</b>.<br><br></td></tr><tr><td>
<li><a href="DataProcessor.РезультатыОбновленияПрограммы.Form.ИндикацияХодаОтложенногоОбновленияИБ/Help">Результаты обновления и дополнительная обработка данных</a></li></td> <li><a href="DataProcessor.РезультатыОбновленияПрограммы.Form.ИндикацияХодаОтложенногоОбновленияИБ/Help">Результаты обновления и дополнительная обработка данных</a></li></td>
<td>Сведения о ходе обновления версии программы, отложенное выполнение дополнительных процедур обработки данных.</td></tr><tr><td> <td>Сведения о ходе обновления версии программы, отложенное выполнение дополнительных процедур обработки данных.</td></tr><tr><td>
<li><strong>Детализировать ход обновления в журнале регистрации</strong></li></td> <li><strong>Детализировать ход обновления в журнале регистрации</strong></li></td>
@@ -29,9 +29,9 @@ TD {
<p><a name="СтандартныеПодсистемы.АнализЖурналаРегистрации"></a><a href="Report.АнализЖурналаРегистрации/Help">Отчеты по журналу регистрации</a>. </p> <p><a name="СтандартныеПодсистемы.АнализЖурналаРегистрации"></a><a href="Report.АнализЖурналаРегистрации/Help">Отчеты по журналу регистрации</a>. </p>
<p>Отчеты для администрирования программы.</p></td></tr><tr><td> <p>Отчеты для администрирования программы.</p></td></tr><tr><td>
<li><strong>Дополнительные</strong><strong> отчеты по администрированию</strong></li></td> <li><strong>Дополнительные</strong><strong> отчеты по администрированию</strong></li></td>
<td>Команды <a href="Catalog.ДополнительныеОтчетыИОбработки/Help">дополнительных отчетов</a>, подключенных к программе.</td></tr><tr><td> <td>Команды <a href="CommonForm.ДополнительныеОтчетыИОбработки/Help">дополнительных отчетов</a>, подключенных к программе.</td></tr><tr><td>
<li><strong>Дополнительные </strong><strong>обработки по администрированию</strong></li></td> <li><strong>Дополнительные </strong><strong>обработки по администрированию</strong></li></td>
<td>Команды <a href="Catalog.ДополнительныеОтчетыИОбработки/Help">дополнительных обработок</a>, подключенных к программе.</td></tr></tbody></table><h3>Регламентные операции</h3> <td>Команды <a href="CommonForm.ДополнительныеОтчетыИОбработки/Help">дополнительных обработок</a>, подключенных к программе.</td></tr></tbody></table><h3>Регламентные операции</h3>
<p>В подразделе доступны команды по управлению регламентными операциями:</p> <p>В подразделе доступны команды по управлению регламентными операциями:</p>
<a name="СтандартныеПодсистемы.РегламентныеЗадания"> <a name="СтандартныеПодсистемы.РегламентныеЗадания">
</a> </a>
@@ -45,7 +45,8 @@ TD {
<td>Управление итогами регистров накопления и бухгалтерии и агрегатами оборотных регистров. Правильная настройка итогов и агрегатов может повысить производительность программы.</td></tr></tbody></table><h3>Резервное копирование и восстановление</h3> <td>Управление итогами регистров накопления и бухгалтерии и агрегатами оборотных регистров. Правильная настройка итогов и агрегатов может повысить производительность программы.</td></tr></tbody></table><h3>Резервное копирование и восстановление</h3>
<p>С целью уменьшения риска потери данных необходимо регулярно выполнять резервное копирование программы. Частота создания резервных копий зависит от интенсивности ввода новых данных.</p> <p>С целью уменьшения риска потери данных необходимо регулярно выполнять резервное копирование программы. Частота создания резервных копий зависит от интенсивности ввода новых данных.</p>
<a name="СтандартныеПодсистемы.РезервноеКопированиеИБ"></a> <a name="СтандартныеПодсистемы.РезервноеКопированиеИБ"></a>
<table><tbody><tr><td><a href="DataProcessor.РезервноеКопированиеИБ.Form.РезервноеКопированиеДанных/Help">Создание резервной копии</a> </td> <table><tbody><tr><td>
<li><a href="DataProcessor.РезервноеКопированиеИБ.Form.РезервноеКопированиеДанных/Help">Создание резервной копии</a></li></td>
<td>Выполнение резервного копирования программы: прямо сейчас, через некоторое время или при завершении работы.</td></tr><tr><td> <td>Выполнение резервного копирования программы: прямо сейчас, через некоторое время или при завершении работы.</td></tr><tr><td>
<li><a href="DataProcessor.НастройкаРезервногоКопированияИБ/Help">Настройка резервного копирования</a></li></td> <li><a href="DataProcessor.НастройкаРезервногоКопированияИБ/Help">Настройка резервного копирования</a></li></td>
<td>Настройка автоматического резервного копирования по расписанию, или отключение контроля резервного копирования, если оно выполняется сторонними средствами.</td></tr><tr><td> <td>Настройка автоматического резервного копирования по расписанию, или отключение контроля резервного копирования, если оно выполняется сторонними средствами.</td></tr><tr><td>
@@ -73,7 +74,7 @@ TD {
<li><a href="DataProcessor.УстановкаОбновлений/Help">Установка обновлений и исправлений (патчей</a>)</li></td> <li><a href="DataProcessor.УстановкаОбновлений/Help">Установка обновлений и исправлений (патчей</a>)</li></td>
<td>Переход к установке обновлений программы или исправлений (патчей).</td> <td>Переход к установке обновлений программы или исправлений (патчей).</td>
</tr><tr><td> </tr><tr><td>
<li>Установленные исправления (патчи)</li></td> <li><a href="CommonForm.УстановленныеИсправления/Help">Установленные исправления (патчи)</a></li></td>
<td>Переход к просмотру списка установленных в программе исправлений (патчей).</td></tr><tr><td> <td>Переход к просмотру списка установленных в программе исправлений (патчей).</td></tr><tr><td>
<li><a href="CommonForm.ОписаниеИзмененийПрограммы/Help">Описание изменений программы</a></li></td> <li><a href="CommonForm.ОписаниеИзмененийПрограммы/Help">Описание изменений программы</a></li></td>
<td>Просмотр списка изменений в установленной версии программы и рекомендаций по обновлению программы.</td></tr><tr><td> <td>Просмотр списка изменений в установленной версии программы и рекомендаций по обновлению программы.</td></tr><tr><td>
@@ -7,8 +7,9 @@ TD {
</style><meta content="text/html;charset=utf-8" http-equiv="content-type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 11.00.10570.1001"></meta></head><body> </style><meta content="text/html;charset=utf-8" http-equiv="content-type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 11.00.10570.1001"></meta></head><body>
<p>В данной панели осуществляется настройка основных параметров программы.</p> <p>В данной панели осуществляется настройка основных параметров программы.</p>
<ul><li><strong>Заголовок программы</strong> - введите текст, который будет отображаться в заголовке окна программы. <ul><li><strong>Заголовок программы</strong> - введите текст, который будет отображаться в заголовке окна программы.
</li> </li></ul><h3>Региональные настройки</h3>
<li><strong>Часовой пояс</strong> - часовой пояс, в котором ведется учет в программе. Все даты документов и других данных в программе хранятся в этом часовом поясе. <div>С помощью ссылки <b>Региональные настройки</b> можно указать:</div>
<ul><li><strong>Часовой пояс</strong> - часовой пояс, в котором ведется учет в программе. Все даты документов и других данных в программе хранятся в этом часовом поясе.
</li> </li>
<li><strong>Время текущего сеанса</strong> - с помощью этой команды можно узнать, насколько время клиента отличается от времени сервера с поправкой на часовой пояс.</li></ul><h3>Публикация информационной базы</h3> <li><strong>Время текущего сеанса</strong> - с помощью этой команды можно узнать, насколько время клиента отличается от времени сервера с поправкой на часовой пояс.</li></ul><h3>Публикация информационной базы</h3>
<ul><li> <ul><li>
@@ -53,5 +54,11 @@ TD {
<a name="СтандартныеПодсистемы.ЭлектроннаяОблачнаяПодпись"></a> <a name="СтандартныеПодсистемы.ЭлектроннаяОблачнаяПодпись"></a>
<li><b>Использовать сервис облачной подписи</b> - включите флажок, для того чтобы разрешить использовать облачную электронную подпись и для операций криптографии сервисы облачной подписи. После этого в списке <b>Настройки электронной подписи и шифрования</b> можно добавить учетные записи облачной подписи, а также становятся доступными команды:</li> <li><b>Использовать сервис облачной подписи</b> - включите флажок, для того чтобы разрешить использовать облачную электронную подпись и для операций криптографии сервисы облачной подписи. После этого в списке <b>Настройки электронной подписи и шифрования</b> можно добавить учетные записи облачной подписи, а также становятся доступными команды:</li>
<li><a href="DataProcessor.УправлениеПодключениемDSS.Form.СписокЭкземпляровСервераDSS/Help">Серверы облачной подписи</a> - переход к настройке серверов облачной подписи.</li> <li><a href="DataProcessor.УправлениеПодключениемDSS.Form.СписокЭкземпляровСервераDSS/Help">Серверы облачной подписи</a> - переход к настройке серверов облачной подписи.</li>
<li><a href="DataProcessor.УправлениеПодключениемDSS.Form.СписокУчетныхЗаписей/Help">Учетные записи облачной подписи</a> - настройка учетных записей облачной подписи, используемых для криптоопераций.</li></ul><h3>См. также: </h3> <li><a href="DataProcessor.УправлениеПодключениемDSS.Form.СписокУчетныхЗаписей/Help">Учетные записи облачной подписи</a> - настройка учетных записей облачной подписи, используемых для криптоопераций.</li></ul><h3>Удаление помеченных объектов</h3>
<div>
<ul><li><b>Автоматически удалять помеченные</b> - включите флажок, после этого становится доступной ссылка:</li>
<li><b>Настроить расписание</b> - перейдите по ссылке, для того чтобы настроить <a href="v8help://mngbase/jobschedule.lf">расписание</a> автоматического удаления помеченных объектов с помощью регламентного задания;</li>
<a name="СтандартныеПодсистемы.УдалениеПомеченныхОбъектов">
</a><li><a name="СтандартныеПодсистемы.УдалениеПомеченныхОбъектов"></a><a href="DataProcessor.УдалениеПомеченныхОбъектов/Help">Посмотреть помеченные на удаление</a> - переход к окончательному удалению тех объектов в программе, которым была присвоена пометка на удаление. Можно также настроить расписание автоматического удаления помеченных объектов.</li></ul></div>
<h3>См. также: </h3>
<ul><li><a href="DataProcessor.ПанельАдминистрированияБСП/Help">Настройки программы</a>.</li></ul></body></html> <ul><li><a href="DataProcessor.ПанельАдминистрированияБСП/Help">Настройки программы</a>.</li></ul></body></html>
@@ -10,7 +10,9 @@ TD {
</a> </a>
<li><a name="СтандартныеПодсистемы.Печать"></a><a href="InformationRegister.ПользовательскиеМакетыПечати/Help">Макеты печатных форм</a> - переход к списку макетов для настройки печатных форм, формируемых из программы. <li><a name="СтандартныеПодсистемы.Печать"></a><a href="InformationRegister.ПользовательскиеМакетыПечати/Help">Макеты печатных форм</a> - переход к списку макетов для настройки печатных форм, формируемых из программы.
</li> </li>
<li><b>Языки печатных форм</b> - Иногда бывает необходимо, чтобы пользователь, работающий на одном языке, мог при этом сформировать печатную форму на другом языке, например, напечатать документы для иностранных контрагентов. Перейдя по ссылке, можно выбрать несколько других языков для печатных форм, которые будут использоваться параллельно с основным при печати. После этого становится доступным:</li>
<li>
<a name="СтандартныеПодсистемы.Мультиязычность"></a><a href="Catalog.ЯзыкиПечатныхФорм/Help">Языки печатных форм</a> - Иногда бывает необходимо, чтобы пользователь, работающий на одном языке, мог при этом сформировать печатную форму на другом языке, например, напечатать документы для иностранных контрагентов. Перейдя по ссылке, можно выбрать несколько других языков для печатных форм, которые будут использоваться параллельно с основным при печати. После этого становится доступным:</li>
<li><b>Перевод текста с помощью внешнего сервиса</b> - если включен вывод печатных форм на другом языке, с помощью флажка можно включить возможность автоматического перевода текста при редактировании макетов печатных форм и вводе реквизитов на выбранных языках.</li> <li><b>Перевод текста с помощью внешнего сервиса</b> - если включен вывод печатных форм на другом языке, с помощью флажка можно включить возможность автоматического перевода текста при редактировании макетов печатных форм и вводе реквизитов на выбранных языках.</li>
<li><a href="CommonForm.НастройкаКомандПечати/Help">Подменю "Печать"</a> - переход к настройке команд подменю <strong>Печать</strong>.</li><a name="СтандартныеПодсистемы.ВариантыОтчетов"> <li><a href="CommonForm.НастройкаКомандПечати/Help">Подменю "Печать"</a> - переход к настройке команд подменю <strong>Печать</strong>.</li><a name="СтандартныеПодсистемы.ВариантыОтчетов">
</a> </a>
@@ -1235,9 +1235,13 @@
Если ЕстьПодсистемаУдаленияПомеченных Тогда Если ЕстьПодсистемаУдаленияПомеченных Тогда
Если СпособУдаления = "Пометка" Тогда Если СпособУдаления = "Пометка" Тогда
ТекстПодсказки = НСтр("ru = 'Выбранные элементы будут <a href = ""СпособУдаления"">помечены на удаление</a> и заменены на оригиналы (отмечены стрелкой).'"); ТекстПодсказки = НСтр("ru = 'Выбранные элементы будут <a href = ""[Действие]"">помечены на удаление</a> и заменены на оригиналы (отмечены стрелкой).'");
ПараметрыСтроки = Новый Структура("Действие", "СпособУдаления");
ТекстПодсказки = СтроковыеФункцииКлиентСервер.ВставитьПараметрыВСтроку(ТекстПодсказки, ПараметрыСтроки);
Иначе Иначе
ТекстПодсказки = НСтр("ru = 'Выбранные элементы будут <a href = ""СпособУдаления"">безвозвратно удалены</a> и заменены на оригиналы (отмечены стрелкой).'"); ТекстПодсказки = НСтр("ru = 'Выбранные элементы будут <a href = ""[Действие]"">безвозвратно удалены</a> и заменены на оригиналы (отмечены стрелкой).'");
ПараметрыСтроки = Новый Структура("Действие", "СпособУдаления");
ТекстПодсказки = СтроковыеФункцииКлиентСервер.ВставитьПараметрыВСтроку(ТекстПодсказки, ПараметрыСтроки);
КонецЕсли; КонецЕсли;
Иначе Иначе
@@ -66,7 +66,7 @@
УстановитьДоступностьКомандСпискаЭП(); УстановитьДоступностьКомандСпискаЭП();
УстановитьДоступностьКомандСпискаШифрования(); УстановитьДоступностьКомандСпискаШифрования();
ПрочитатьСертификатыПодписей(); РаботаСФайламиСлужебныйКлиент.ПрочитатьСертификатыПодписей(ЭтотОбъект);
ОтображатьВкладкиДополнительныхДанных(); ОтображатьВкладкиДополнительныхДанных();
КонецПроцедуры КонецПроцедуры
@@ -1483,146 +1483,6 @@
КонецПроцедуры КонецПроцедуры
&НаКлиенте
Процедура ПрочитатьСертификатыПодписей()
Если ЭлектронныеПодписи.Количество() = 0 Тогда
Возврат;
КонецЕсли;
Если Не ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ЭлектроннаяПодпись") Тогда
Возврат;
КонецЕсли;
Контекст = Новый Структура;
МодульЭлектроннаяПодписьКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ЭлектроннаяПодписьКлиент");
Если МодульЭлектроннаяПодписьКлиент.ПроверятьЭлектронныеПодписиНаСервере() Тогда
Возврат;
КонецЕсли;
НачатьПодключениеРасширенияРаботыСКриптографией(Новый ОписаниеОповещения(
"ПрочитатьСертификатыПодписейПослеПодключенияРасширения", ЭтотОбъект, Контекст));
КонецПроцедуры
// Продолжение процедуры ПрочитатьСертификатыПодписей.
&НаКлиенте
Процедура ПрочитатьСертификатыПодписейПослеПодключенияРасширения(Подключено, Контекст) Экспорт
Если Не Подключено Тогда
Возврат;
КонецЕсли;
МодульЭлектроннаяПодписьКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ЭлектроннаяПодписьКлиент");
МодульЭлектроннаяПодписьКлиент.СоздатьМенеджерКриптографии(Новый ОписаниеОповещения(
"ПрочитатьСертификатыПодписейПослеСозданияМенеджераКриптографии", ЭтотОбъект, Контекст),
"ПолучениеСертификатов", Ложь);
КонецПроцедуры
// Продолжение процедуры ПрочитатьСертификатыПодписей.
&НаКлиенте
Процедура ПрочитатьСертификатыПодписейПослеСозданияМенеджераКриптографии(Результат, Контекст) Экспорт
Если ТипЗнч(Результат) <> Тип("МенеджерКриптографии") Тогда
Возврат;
КонецЕсли;
Контекст.Вставить("Индекс", -1);
Контекст.Вставить("МенеджерКриптографии", Результат);
ПрочитатьСертификатыПодписейЦиклНачало(Контекст);
КонецПроцедуры
// Продолжение процедуры ПрочитатьСертификатыПодписей.
//
// Параметры:
// Контекст - Структура - контекст операции.
//
&НаКлиенте
Процедура ПрочитатьСертификатыПодписейЦиклНачало(Контекст)
Если ЭлектронныеПодписи.Количество() <= Контекст.Индекс + 1 Тогда
Возврат;
КонецЕсли;
Контекст.Индекс = Контекст.Индекс + 1;
Контекст.Вставить("СтрокаТаблицы", ЭлектронныеПодписи[Контекст.Индекс]);
Если ЗначениеЗаполнено(Контекст.СтрокаТаблицы.Отпечаток) Тогда
ПрочитатьСертификатыПодписейЦиклНачало(Контекст);
Возврат;
КонецЕсли;
// Подпись не была прочитана при записи объекта.
Подпись = ПолучитьИзВременногоХранилища(Контекст.СтрокаТаблицы.АдресПодписи);
Если Не ЗначениеЗаполнено(Подпись) Тогда
ПрочитатьСертификатыПодписейЦиклНачало(Контекст);
Возврат;
КонецЕсли;
Контекст.МенеджерКриптографии.НачатьПолучениеСертификатовИзПодписи(Новый ОписаниеОповещения(
"ПрочитатьСертификатыПодписейЦиклПослеПолученияСертификатовИзПодписи", ЭтотОбъект, Контекст,
"ПрочитатьСертификатыПодписейЦиклПослеОшибкиПолученияСертификатовИзПодписи", ЭтотОбъект),
Подпись);
КонецПроцедуры
// Продолжение процедуры ПрочитатьСертификатыПодписей.
&НаКлиенте
Процедура ПрочитатьСертификатыПодписейЦиклПослеОшибкиПолученияСертификатовИзПодписи(ИнформацияОбОшибке, СтандартнаяОбработка, Контекст) Экспорт
СтандартнаяОбработка = Ложь;
ПрочитатьСертификатыПодписейЦиклНачало(Контекст);
КонецПроцедуры
// Продолжение процедуры ПрочитатьСертификатыПодписей.
//
// Параметры:
// Контекст - Структура:
// * Сертификат - СертификатКриптографии
//
&НаКлиенте
Процедура ПрочитатьСертификатыПодписейЦиклПослеПолученияСертификатовИзПодписи(Сертификаты, Контекст) Экспорт
Если Сертификаты.Количество() = 0 Тогда
ПрочитатьСертификатыПодписейЦиклНачало(Контекст);
Возврат;
КонецЕсли;
Контекст.Вставить("Сертификат", Сертификаты[0]);
Контекст.Сертификат.НачатьВыгрузку(Новый ОписаниеОповещения(
"ПрочитатьСертификатыПодписейЦиклПослеВыгрузкиСертификата", ЭтотОбъект, Контекст,
"ПрочитатьСертификатыПодписейЦиклПослеОшибкиВыгрузкиСертификата", ЭтотОбъект));
КонецПроцедуры
// Продолжение процедуры ПрочитатьСертификатыПодписей.
&НаКлиенте
Процедура ПрочитатьСертификатыПодписейЦиклПослеОшибкиВыгрузкиСертификата(ИнформацияОбОшибке, СтандартнаяОбработка, Контекст) Экспорт
СтандартнаяОбработка = Ложь;
ПрочитатьСертификатыПодписейЦиклНачало(Контекст);
КонецПроцедуры
// Продолжение процедуры ПрочитатьСертификатыПодписей.
&НаКлиенте
Процедура ПрочитатьСертификатыПодписейЦиклПослеВыгрузкиСертификата(ДанныеСертификата, Контекст) Экспорт
СтрокаТаблицы = Контекст.СтрокаТаблицы;
СтрокаТаблицы.Отпечаток = Base64Строка(Контекст.Сертификат.Отпечаток);
СтрокаТаблицы.АдресСертификата = ПоместитьВоВременноеХранилище(ДанныеСертификата, УникальныйИдентификатор);
СтрокаТаблицы.КомуВыданСертификат = Контекст.МодульЭлектроннаяПодпись.ПредставлениеСубъекта(Контекст.Сертификат);
ПрочитатьСертификатыПодписейЦиклНачало(Контекст);
КонецПроцедуры
&НаКлиенте &НаКлиенте
Функция ЭтоНовый() Функция ЭтоНовый()
@@ -23,7 +23,7 @@
</li> </li>
<li>Также можно <img src="StdPicture.CreateListItem"></img> <strong>Добавить</strong> дополнительные поля для ввода других предопределенных частей адреса, таких как <strong>Строение</strong>, <strong>Литера</strong>, <strong>Сооружение</strong>, <strong>Участок</strong>, <strong>Офис</strong>, <strong>Бокс</strong>, <strong>Помещение</strong>, <strong>Комната, А/я</strong>. <li>Также можно <img src="StdPicture.CreateListItem"></img> <strong>Добавить</strong> дополнительные поля для ввода других предопределенных частей адреса, таких как <strong>Строение</strong>, <strong>Литера</strong>, <strong>Сооружение</strong>, <strong>Участок</strong>, <strong>Офис</strong>, <strong>Бокс</strong>, <strong>Помещение</strong>, <strong>Комната, А/я</strong>.
</li> </li>
<li>Для ввода номера дома нажмите кнопку <img src="StdPicture.InputFieldSelect" width="12" height="12"></img>, в окне <strong>Выбор дома</strong> выводится список всех возможных домов и строений для введенного адреса.Дополнительные части адреса, например, корпус, также выбираются из списка. <li>Для ввода номера дома нажмите кнопку <img src="StdPicture.InputFieldSelect" width="12" height="12"></img>, в окне <strong>Выбор дома</strong> выводится список всех возможных домов и строений для введенного адреса. Дополнительные части адреса, например, корпус, также выбираются из списка.
</li> </li>
<li>Поле <strong>Представление адреса</strong> при заполнении адреса по шаблону недоступно, заполняется программой автоматически по мере заполнения полей адреса. </li></ul><h3>Примеры заполнения адреса</h3> <li>Поле <strong>Представление адреса</strong> при заполнении адреса по шаблону недоступно, заполняется программой автоматически по мере заполнения полей адреса. </li></ul><h3>Примеры заполнения адреса</h3>
<ul><li>Для ввода адреса <b>"Санкт-Петербург, Пискаревский проспект, дом 2, корпус 2, литера Щ, офис 12345"</b> необходимо: <ul><li>Для ввода адреса <b>"Санкт-Петербург, Пискаревский проспект, дом 2, корпус 2, литера Щ, офис 12345"</b> необходимо:
@@ -663,6 +663,10 @@
</items> </items>
<horizontalAlign>Right</horizontalAlign> <horizontalAlign>Right</horizontalAlign>
</autoCommandBar> </autoCommandBar>
<handlers>
<event>ChoiceProcessing</event>
<name>ОбработкаВыбора</name>
</handlers>
<handlers> <handlers>
<event>OnOpen</event> <event>OnOpen</event>
<name>ПриОткрытии</name> <name>ПриОткрытии</name>
@@ -6,12 +6,17 @@
<div>Перед заполнением адреса с помощью флажка можно выбрать:</div> <div>Перед заполнением адреса с помощью флажка можно выбрать:</div>
<ul><li> <ul><li>
<div><strong>Муниципальное деление</strong>;</div> <div><strong>Муниципальное деление</strong>;</div>
</li><li> </li>
<li>
<div><strong>Административно-территориальное деление.</strong></div></li></ul></li></ul><h3>Ввод населенного пункта</h3> <div><strong>Административно-территориальное деление.</strong></div></li></ul></li></ul><h3>Ввод населенного пункта</h3>
<ul><li>В поле <strong>Субъект РФ</strong> необходимо ввести наименование субъекта Российской Федерации, к которому относится населенный пункт. <ul><li>В поле <strong>Регион</strong> необходимо ввести наименование субъекта Российской Федерации, к которому относится населенный пункт.
</li><li>Если адресный классификатор для этого субъекта Российской Федерации не заполнен, будет выведено сообщение. </li>
</li><li>Поля <strong>Округ</strong>, <strong>Район</strong>, <strong>Город</strong>, <strong>Внутр.район</strong>, <strong>Нас.пункт</strong> и т.д. предназначены для ввода частей адреса. Поля, которые должны быть заполнены, зависят от адреса. Например, в некоторых адресах может не быть района, в других - города или населенного пункта. Если выбрано устаревшее наименование, программа выводит сообщение. Подтвердите свой выбор, нажав кнопку <strong>Да</strong> для продолжения ввода. Для того чтобы программа не показывала в списках устаревшие адреса, при настройке данного <a href="Catalog.ВидыКонтактнойИнформации/Help">вида контактной информации</a> включите флажок <strong>Скрывать неактуальные адреса</strong>. <li>Если адресный классификатор для этого субъекта Российской Федерации не заполнен, будет выведено сообщение.
</li><li>После окончания ввода города или населенного пункта нажмите <strong>ОК</strong> для продолжения ввода адреса. </li>
</li><li>Если для региона адреса загружен адресный классификатор, то по мере набора в каждом поле будут предлагаться варианты соответствующей части адреса с учетом полей, заполненных ранее.</li></ul><h3>См. также:</h3> <li>Поля <strong>Округ</strong>, <strong>Район</strong>, <strong>Город</strong>, <strong>Внутр.район</strong>, <strong>Нас.пункт</strong> и т.д. предназначены для ввода частей адреса. Поля, которые должны быть заполнены, зависят от адреса. Например, в некоторых адресах может не быть района, в других - города или населенного пункта.</li>
<li>После окончания ввода города или населенного пункта нажмите <strong>ОК</strong> для продолжения ввода адреса.
</li>
<li>Если для региона адреса загружен адресный классификатор, то по мере набора в каждом поле будут предлагаться варианты соответствующей части адреса с учетом полей, заполненных ранее.</li></ul><h3>См. также:</h3>
<ul><li><a href="DataProcessor.РасширенныйВводКонтактнойИнформации/Help">Ввод контактной информации</a>; <ul><li><a href="DataProcessor.РасширенныйВводКонтактнойИнформации/Help">Ввод контактной информации</a>;
</li><li><a href="v8help://frame/form_common">Работа с формами</a>.</li></ul></body></html> </li>
<li><a href="v8help://frame/form_common">Работа с формами</a>.</li></ul></body></html>
@@ -79,6 +79,8 @@
ТипАдреса = Параметры.ТипАдреса; ТипАдреса = Параметры.ТипАдреса;
КонецЕсли; КонецЕсли;
Элементы.ВнутригородскойРайон.Видимость = ЗначениеЗаполнено(ВнутригородскойРайон);
КонецПроцедуры КонецПроцедуры
&НаКлиенте &НаКлиенте
@@ -3,4 +3,5 @@
<p>Открывается из <a href="Catalog.ВидыКонтактнойИнформации.Form.ФормаЭлемента/Help">окна настройки</a> адреса в списке <a href="Catalog.ВидыКонтактнойИнформации/Help">Виды контактной информации</a> по команде <strong>Дополнительные настройки адреса</strong>.</p> <p>Открывается из <a href="Catalog.ВидыКонтактнойИнформации.Form.ФормаЭлемента/Help">окна настройки</a> адреса в списке <a href="Catalog.ВидыКонтактнойИнформации/Help">Виды контактной информации</a> по команде <strong>Дополнительные настройки адреса</strong>.</p>
<p>При включенном флажке <strong>Только российский адрес</strong> становятся активными дополнительные флажки:</p> <p>При включенном флажке <strong>Только российский адрес</strong> становятся активными дополнительные флажки:</p>
<ul><li><strong>Запрещать ввод некорректного адреса</strong> - если флажок включен, то при некорректном вводе российского адреса невозможно будет ввести данные в программу (имеет смысл только при использовании шаблонов ввода и адресного классификатора). Данные проверяются по ФИАС. <ul><li><strong>Запрещать ввод некорректного адреса</strong> - если флажок включен, то при некорректном вводе российского адреса невозможно будет ввести данные в программу (имеет смысл только при использовании шаблонов ввода и адресного классификатора). Данные проверяются по ФИАС.
</li><li><strong>Указывать ОКТМО</strong> - включите флажок, для того чтобы автоматически заполнялось поле ОКТМО.</li></ul></body></html> </li>
<li><strong>Указывать ОКТМО</strong> - включите флажок, для того чтобы автоматически заполнялось поле ОКТМО.</li></ul></body></html>
@@ -10,7 +10,7 @@
// Информация о текущем выполняемом фоновом задании // Информация о текущем выполняемом фоновом задании
&НаКлиенте &НаКлиенте
Перем ВыполняемаяОперация;// см. Неопределено, ДлительныеОперации.ВыполнитьФункцию Перем ВыполняемаяОперация;// Неопределено, см. ДлительныеОперации.ВыполнитьФункцию
&НаКлиенте &НаКлиенте
Перем ПредставлениеОперации;// Строка Перем ПредставлениеОперации;// Строка
@@ -1457,7 +1457,7 @@
НастройкиОжидания.ВыводитьПрогрессВыполнения = Истина; НастройкиОжидания.ВыводитьПрогрессВыполнения = Истина;
НастройкиОжидания.ОповещениеОПрогрессеВыполнения = Новый ОписаниеОповещения("ПриОбновленииПрогрессаФоновогоЗадания", ЭтотОбъект); НастройкиОжидания.ОповещениеОПрогрессеВыполнения = Новый ОписаниеОповещения("ПриОбновленииПрогрессаФоновогоЗадания", ЭтотОбъект);
ДлительныеОперацииКлиент.ОжидатьЗавершение(ВыполняемаяОперация, Обработчик, НастройкиОжидания); ДлительныеОперацииКлиент.ОжидатьЗавершение(ВыполняемаяОперация, Обработчик, НастройкиОжидания);
Если ВыполняемаяОперация <> Неопределено Тогда Если ВыполняемаяОперация <> Неопределено И ВыполняемаяОперация.Статус = "Выполняется" Тогда
ПоказатьДиалогПередЗакрытием = Истина; ПоказатьДиалогПередЗакрытием = Истина;
КонецЕсли; КонецЕсли;
КонецПроцедуры КонецПроцедуры
@@ -286,12 +286,25 @@
МестаИспользования = МестаИспользованияЭлементовПакета(ПараметрыУдаления, Пакет); МестаИспользования = МестаИспользованияЭлементовПакета(ПараметрыУдаления, Пакет);
ОсновнойИПодчиненныеОбъекты = Новый Массив; ОсновнойИПодчиненныеОбъекты = Новый Массив;
СсылкиНаУдаляемыеОбъекты = Новый Массив;
Для Каждого Элемент Из Пакет Цикл Для Каждого Элемент Из Пакет Цикл
ОсновнойИПодчиненныеОбъекты.Добавить(Элемент); ОсновнойИПодчиненныеОбъекты.Добавить(Элемент);
СсылкиНаУдаляемыеОбъекты.Добавить(Элемент.УдаляемыйСсылка);
Если НЕ Элемент.ЭтоОсновнойОбъект Тогда Если НЕ Элемент.ЭтоОсновнойОбъект Тогда
Продолжить; Продолжить;
КонецЕсли; КонецЕсли;
СтандартнаяОбработка = Истина;
Контекст = Новый Структура;
ПередУдалениемГруппыОбъектов(
Контекст,
ОбщегоНазначения.ФиксированныеДанные(СсылкиНаУдаляемыеОбъекты),
СтандартнаяОбработка);
Если Не СтандартнаяОбработка Тогда
Продолжить;
КонецЕсли;
НельзяУдалятьОсновнойОбъект = Ложь; НельзяУдалятьОсновнойОбъект = Ложь;
НеудаленныеЭлементы = Новый Массив; НеудаленныеЭлементы = Новый Массив;
НачатьТранзакцию(); НачатьТранзакцию();
@@ -342,8 +355,10 @@
Если НЕ НельзяУдалятьОсновнойОбъект Тогда Если НЕ НельзяУдалятьОсновнойОбъект Тогда
ЗафиксироватьТранзакцию(); ЗафиксироватьТранзакцию();
ПослеУдаленияГруппыОбъектов(Контекст, Истина);
Иначе Иначе
ОтменитьТранзакцию(); ОтменитьТранзакцию();
ПослеУдаленияГруппыОбъектов(Контекст, Ложь);
КонецЕсли; КонецЕсли;
Исключение Исключение
@@ -352,6 +367,7 @@
КонецПопытки; КонецПопытки;
ОсновнойИПодчиненныеОбъекты.Очистить(); ОсновнойИПодчиненныеОбъекты.Очистить();
СсылкиНаУдаляемыеОбъекты.Очистить();
КонецЦикла; КонецЦикла;
@@ -361,19 +377,27 @@
Возврат РезультатОбработкиПакета; Возврат РезультатОбработкиПакета;
КонецФункции КонецФункции
// см. УдалениеПомеченныхОбъектовПереопределяемый.ПередУдалениемГруппыОбъектов
Процедура ПередУдалениемГруппыОбъектов(Контекст, СвязанныеОбъекты, СтандартнаяОбработка)
ИнтеграцияПодсистемБСП.ПередУдалениемГруппыОбъектов(Контекст, СвязанныеОбъекты, СтандартнаяОбработка);
КонецПроцедуры
// см. УдалениеПомеченныхОбъектовПереопределяемый.ПослеУдаленияГруппыОбъектов
Процедура ПослеУдаленияГруппыОбъектов(Контекст, Успешно)
ИнтеграцияПодсистемБСП.ПослеУдаленияГруппыОбъектов(Контекст, Успешно);
КонецПроцедуры
Функция РезультатУдаленияЭлемента(Знач Элемент) Функция РезультатУдаленияЭлемента(Знач Элемент)
Перем Результат;
Результат = Новый Структура(); Результат = Новый Структура();
Результат.Вставить("УдаляемыйСсылка", Элемент.УдаляемыйСсылка); Результат.Вставить("УдаляемыйСсылка", Элемент.УдаляемыйСсылка);
Результат.Вставить("Код", КодыРезультатаУдаления().Успешно); Результат.Вставить("Код", КодыРезультатаУдаления().Успешно);
Результат.Вставить("МестаИспользования", МестаИспользования()); Результат.Вставить("МестаИспользования", МестаИспользования());
Результат.Вставить("Сообщения", Новый ФиксированныйМассив(Новый Массив)); Результат.Вставить("Сообщения", Новый ФиксированныйМассив(Новый Массив));
Результат.Вставить("ЭтоОсновнойОбъект", Элемент.ЭтоОсновнойОбъект); Результат.Вставить("ЭтоОсновнойОбъект", Элемент.ЭтоОсновнойОбъект);
Результат.Вставить("ИнформацияОбОшибке"); Результат.Вставить("ИнформацияОбОшибке");
Возврат Результат;
Возврат Результат;
КонецФункции КонецФункции
#Область ОчисткаСсылокНаУдаляемыеОбъекты #Область ОчисткаСсылокНаУдаляемыеОбъекты
@@ -765,9 +789,27 @@
Возврат Результат; Возврат Результат;
КонецФункции КонецФункции
// Обработать пакет в одной транзакции.
//
// Параметры:
// ПараметрыУдаления - см. ПараметрыУдаления
// Пакет - см. ПакетУдаляемыхОбъектов
//
// Возвращаемое значение:
// см. РезультатОбработки
//
Функция ОбработатьПакетВОднойТранзакции(ПараметрыУдаления, Пакет) Функция ОбработатьПакетВОднойТранзакции(ПараметрыУдаления, Пакет)
Результат = РезультатОбработки(); Результат = РезультатОбработки();
СтандартнаяОбработка = Истина;
Контекст = Новый Структура;
УдаляемыеОбъекты = Пакет.ВыгрузитьКолонку("УдаляемыйСсылка");
ПередУдалениемГруппыОбъектов(Контекст, УдаляемыеОбъекты, СтандартнаяОбработка);
Если НЕ СтандартнаяОбработка Тогда
Возврат РезультатОбработки();
КонецЕсли;
НачатьТранзакцию(); НачатьТранзакцию();
Попытка Попытка
Для Каждого ЭлементПакета Из Пакет Цикл Для Каждого ЭлементПакета Из Пакет Цикл
@@ -784,11 +826,13 @@
КонецЦикла; КонецЦикла;
ЗафиксироватьТранзакцию(); ЗафиксироватьТранзакцию();
ПослеУдаленияГруппыОбъектов(Контекст, Истина);
Исключение Исключение
// Не смогли удалить ни один объект // Не смогли удалить ни один объект
// Будем отображать ошибку, произошедшую на предыдущем этапе удаления // Будем отображать ошибку, произошедшую на предыдущем этапе удаления
ОтменитьТранзакцию(); ОтменитьТранзакцию();
Результат.НеудаленныеОбъекты = Пакет.Скопировать(); Результат.НеудаленныеОбъекты = Пакет.Скопировать();
ПослеУдаленияГруппыОбъектов(Контекст, Истина);
КонецПопытки; КонецПопытки;
Возврат Результат; Возврат Результат;
@@ -1532,6 +1576,10 @@
ОбщегоНазначенияКлиентСервер.ДополнитьМассив( ОбщегоНазначенияКлиентСервер.ДополнитьМассив(
УдаляемыеОбъекты, ПодчиненныеОбъекты); УдаляемыеОбъекты, ПодчиненныеОбъекты);
Контекст = Новый Структура;
СтандартнаяОбработка = Истина;
ПередУдалениемГруппыОбъектов(Контекст, УдаляемыеОбъекты, СтандартнаяОбработка);
Пока УдаляемыеОбъекты.Количество() > 0 Цикл Пока УдаляемыеОбъекты.Количество() > 0 Цикл
ПрепятствующиеУдалению = Новый ТаблицаЗначений; ПрепятствующиеУдалению = Новый ТаблицаЗначений;
@@ -1553,6 +1601,8 @@
ОписаниеОшибки = ОписаниеОшибки + Символы.ПС + Символы.ПС + Сообщение.Текст; ОписаниеОшибки = ОписаниеОшибки + Символы.ПС + Символы.ПС + Сообщение.Текст;
КонецЦикла; КонецЦикла;
ПослеУдаленияГруппыОбъектов(Контекст, Ложь);
ВызватьИсключение ОписаниеОшибки; ВызватьИсключение ОписаниеОшибки;
КонецПопытки; КонецПопытки;
@@ -1569,6 +1619,12 @@
ВсеСвязиВИсключениях = Истина; ВсеСвязиВИсключениях = Истина;
Если ПрепятствующиеУдалению.Количество() = 0 Тогда
ПослеУдаленияГруппыОбъектов(Контекст, Истина);
Иначе
ПослеУдаленияГруппыОбъектов(Контекст, Ложь);
КонецЕсли;
// Анализ причин не удаления (мест использования помеченных на удаление). // Анализ причин не удаления (мест использования помеченных на удаление).
Для Каждого СтрокаТаблицы Из ПрепятствующиеУдалению Цикл Для Каждого СтрокаТаблицы Из ПрепятствующиеУдалению Цикл
// Проверка исключающих правил. // Проверка исключающих правил.
@@ -1604,6 +1660,7 @@
Если ВсеСвязиВИсключениях Тогда Если ВсеСвязиВИсключениях Тогда
УстановитьПривилегированныйРежим(Истина); УстановитьПривилегированныйРежим(Истина);
УдалитьОбъекты(УдаляемыеОбъекты, Ложь); УдалитьОбъекты(УдаляемыеОбъекты, Ложь);
ПослеУдаленияГруппыОбъектов(Контекст, Истина);
УстановитьПривилегированныйРежим(Ложь); УстановитьПривилегированныйРежим(Ложь);
Прервать; // Выход из цикла. Прервать; // Выход из цикла.
КонецЕсли; КонецЕсли;
@@ -1,6 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html;charset=utf-8" http-equiv="content-type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 11.00.10570.1001"></meta></head><body> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html;charset=utf-8" http-equiv="content-type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 11.00.10570.1001"></meta></head><body>
<p>Предназначена для задания параметров перестроения использования агрегатов и получения списка оптимальных агрегатов.</p> <p>Предназначена для задания параметров перестроения использования агрегатов и получения списка оптимальных агрегатов.</p>
<ul><li> <ul><li>
<div><strong>Максимальный относительный размер</strong> - максимальная сумма размеров агрегатов в процентах от таблицы движений. Если параметр неуказан или равен нулю, то нет ограничения размера агрегатов.</div> <div><strong>Максимальный относительный размер</strong> - максимальная сумма размеров агрегатов в процентах от таблицы движений. Если параметр не указан или равен нулю, то нет ограничения размера агрегатов.</div>
</li><li> </li>
<li>
<div><strong>Минимальный эффект от перестроения</strong> - процент, на который необходимо увеличить эффект старой сети при перестроении, если новая сеть увеличивает эффект на <strong>Минимальный эффект от перестроения %</strong>, то метод реально перестраивает сеть. Если параметр не указан или равен нулю, то нет требований к эффекту. Данный параметр недоступен для получения списка оптимальных агрегатов.</div></li></ul></body></html> <div><strong>Минимальный эффект от перестроения</strong> - процент, на который необходимо увеличить эффект старой сети при перестроении, если новая сеть увеличивает эффект на <strong>Минимальный эффект от перестроения %</strong>, то метод реально перестраивает сеть. Если параметр не указан или равен нулю, то нет требований к эффекту. Данный параметр недоступен для получения списка оптимальных агрегатов.</div></li></ul></body></html>
@@ -5,26 +5,31 @@
<p>Открывается по соответствующей команде в разделе <strong>Администрирование - Обслуживание - Регламентные операции</strong>.</p> <p>Открывается по соответствующей команде в разделе <strong>Администрирование - Обслуживание - Регламентные операции</strong>.</p>
<p>Управление итогами и агрегатами включает в себя процедуры, связанные с итогами регистров накопления и бухгалтерии, а также агрегатами оборотных регистров накопления. Управление итогами разделяется на два режима:</p> <p>Управление итогами и агрегатами включает в себя процедуры, связанные с итогами регистров накопления и бухгалтерии, а также агрегатами оборотных регистров накопления. Управление итогами разделяется на два режима:</p>
<ul><li><strong><a href="#Simple">Часто используемые возможности</a></strong> - режим предоставляет простые средства для выполнения наиболее часто используемых действий с итогами регистров. Позволяет "одним нажатием" выполнить наиболее частые действия, возникающие при обслуживании программы. <ul><li><strong><a href="#Simple">Часто используемые возможности</a></strong> - режим предоставляет простые средства для выполнения наиболее часто используемых действий с итогами регистров. Позволяет "одним нажатием" выполнить наиболее частые действия, возникающие при обслуживании программы.
</li><li><strong><a href="#Full">Полные возможности</a></strong> - предоставляет полный доступ к возможностям управления итогами и агрегатами программы. Режим позволяет выполнять все операции как с одним регистром, так и с произвольным списком регистров.</li></ul><p>Для переключения режимов служит ссылка в правом нижнем углу окна. Программа запоминает режим открытия окна.</p> </li>
<li><strong><a href="#Full">Полные возможности</a></strong> - предоставляет полный доступ к возможностям управления итогами и агрегатами программы. Режим позволяет выполнять все операции как с одним регистром, так и с произвольным списком регистров.</li></ul><p>Для переключения режимов служит ссылка в правом нижнем углу окна. Программа запоминает режим открытия окна.</p>
<p>Некоторые операции с регистрами и агрегатами можно выполнять по заданному расписанию с помощью <a href="DataProcessor.РегламентныеИФоновыеЗадания/Help">регламентных заданий</a>.</p> <p>Некоторые операции с регистрами и агрегатами можно выполнять по заданному расписанию с помощью <a href="DataProcessor.РегламентныеИФоновыеЗадания/Help">регламентных заданий</a>.</p>
<h2><a name="#Simple">Часто используемые возможности</a></h2> <h2><a name="Simple">Часто используемые возможности</a></h2>
<h3>Операции с итогами</h3> <h3>Операции с итогами</h3>
<ul><li> <ul><li>
<div><strong>Установить период рассчитанных итогов</strong> - для ускорения работы программы выполняет установку периода рассчитанных итогов для всех регистров накопления и бухгалтерии с включенными итогами. Для регистров накопления - на конец предыдущего месяца, для регистров бухгалтерии - на конец текущего месяца. Команду можно использовать в начале каждого месяца для повышения производительности регистров.</div> <div><strong>Установить период рассчитанных итогов</strong> - для ускорения работы программы выполняет установку периода рассчитанных итогов для всех регистров накопления и бухгалтерии с включенными итогами. Для регистров накопления - на конец предыдущего месяца, для регистров бухгалтерии - на конец текущего месяца. Команду можно использовать в начале каждого месяца для повышения производительности регистров.</div>
</li><li> </li>
<li>
<div><strong>Включить использование итогов</strong> - включает использование итогов для всех регистров, у которых этот режим выключен (например, в результате аварийного завершения какой-либо процедуры, отключающей использование итогов).</div></li></ul><h3>Операции с агрегатами</h3> <div><strong>Включить использование итогов</strong> - включает использование итогов для всех регистров, у которых этот режим выключен (например, в результате аварийного завершения какой-либо процедуры, отключающей использование итогов).</div></li></ul><h3>Операции с агрегатами</h3>
<ul><li> <ul><li>
<div><strong>Перестроить и заполнить</strong> - для всех оборотных регистров накопления, для которых включен режим агрегатов и установлено их использование, выполняет операцию перестроения использования агрегатов и выполняет заполнение агрегатов. Операция может выполняться продолжительное время. Данную операцию, как правило, нужно выполнять периодически, для этого можно воспользоваться регламентным заданием.</div> <div><strong>Перестроить и заполнить</strong> - для всех оборотных регистров накопления, для которых включен режим агрегатов и установлено их использование, выполняет операцию перестроения использования агрегатов и выполняет заполнение агрегатов. Операция может выполняться продолжительное время. Данную операцию, как правило, нужно выполнять периодически, для этого можно воспользоваться регламентным заданием.</div>
</li><li> </li>
<li>
<div><strong>Получить оптимальные агрегаты</strong> - выполняет получение списка оптимальных агрегатов для всех оборотных регистров накопления, для которых в Конфигураторе заданы агрегаты. Будет запрошен каталог, куда будут сохранены xml-файлы со списками оптимальных агрегатов. Каждый файл будет назван именем соответствующего регистра. Так, для регистра <strong>Продажи</strong> файл будет называться <strong>Продажи.xml</strong>. Файлы используются для загрузки и создания оптимальных агрегатов в Конфигураторе. При загрузке оптимальных агрегатов может возникнуть ситуация, когда необходимо будет изменить список оптимальных агрегатов, а для этого потребуется снять с поддержки конфигурацию. Операция не является регулярной. Данная операция наиболее ресурсоемкая и продолжительная, поэтому рекомендуется выполнять ее в случаях, когда с программой не работают другие пользователи. </div> <div><strong>Получить оптимальные агрегаты</strong> - выполняет получение списка оптимальных агрегатов для всех оборотных регистров накопления, для которых в Конфигураторе заданы агрегаты. Будет запрошен каталог, куда будут сохранены xml-файлы со списками оптимальных агрегатов. Каждый файл будет назван именем соответствующего регистра. Так, для регистра <strong>Продажи</strong> файл будет называться <strong>Продажи.xml</strong>. Файлы используются для загрузки и создания оптимальных агрегатов в Конфигураторе. При загрузке оптимальных агрегатов может возникнуть ситуация, когда необходимо будет изменить список оптимальных агрегатов, а для этого потребуется снять с поддержки конфигурацию. Операция не является регулярной. Данная операция наиболее ресурсоемкая и продолжительная, поэтому рекомендуется выполнять ее в случаях, когда с программой не работают другие пользователи. </div>
<ul><li> <ul><li>
<div>Выполнение расчета оптимальных агрегатов может потребоваться в следующих случаях:</div> <div>Выполнение расчета оптимальных агрегатов может потребоваться в следующих случаях:</div>
<ul><li> <ul><li>
<div>существенное падение скорости формирования отчетов на текущем списке агрегатов;</div> <div>существенное падение скорости формирования отчетов на текущем списке агрегатов;</div>
</li><li> </li>
<li>
<div>существенное изменение характера хранимых данных в программе;</div> <div>существенное изменение характера хранимых данных в программе;</div>
</li><li> </li>
<div>существенное изменение характера отчетов, которые необходимы пользователям.</div></li></ul></li></ul></li></ul><h2><a name="#Full">Полные возможности</a></h2> <li>
<div>существенное изменение характера отчетов, которые необходимы пользователям.</div></li></ul></li></ul></li></ul><h2><a name="Full">Полные возможности</a></h2>
<p>Режим позволяет получить доступ ко всем инструментам администрирования итогов регистров (вкладка <strong>Итоги</strong>) и агрегатов (вкладка <strong>Агрегаты</strong>). В режиме полных возможностей доступен режим множественного выделения. Любое действие применяется ко всем выделенным объектам, либо к тому, на котором установлен курсор.</p> <p>Режим позволяет получить доступ ко всем инструментам администрирования итогов регистров (вкладка <strong>Итоги</strong>) и агрегатов (вкладка <strong>Агрегаты</strong>). В режиме полных возможностей доступен режим множественного выделения. Любое действие применяется ко всем выделенным объектам, либо к тому, на котором установлен курсор.</p>
<p>Список показывает текущее состояние регистров программы.</p> <p>Список показывает текущее состояние регистров программы.</p>
<h3>Итоги</h3> <h3>Итоги</h3>
@@ -33,41 +38,59 @@
<p>Список показывает текущее состояние регистров программы.</p> <p>Список показывает текущее состояние регистров программы.</p>
<p>В списке выводится:</p> <p>В списке выводится:</p>
<ul><li><strong>Итоги</strong> - флажок установлен, если для регистра ведутся итоги, отсутствие флажка означает, что итоги по регистру не рассчитываются; <ul><li><strong>Итоги</strong> - флажок установлен, если для регистра ведутся итоги, отсутствие флажка означает, что итоги по регистру не рассчитываются;
</li><li><strong>Регистр и режим использования</strong> - наименование регистра и, в виде подсказки, режим работы регистра: <strong>Просто итоговый регистр</strong> (когда у регистра есть остатки), <strong>Итоги</strong> или <strong>Агрегаты</strong> (когда у регистра есть только обороты); </li>
</li><li><strong>Период</strong> - дата, по которую рассчитаны итоги регистра (для регистров накопления - на конец предыдущего месяца, для регистров бухгалтерии - на конец текущего месяца); <li><strong>Регистр и режим использования</strong> - наименование регистра и, в виде подсказки, режим работы регистра: <strong>Просто итоговый регистр</strong> (когда у регистра есть остатки), <strong>Итоги</strong> или <strong>Агрегаты</strong> (когда у регистра есть только обороты);
</li><li><strong>Текущие</strong> - наличие флажка означает, что для регистра рассчитываются не только общие итоги на указанную дату, но еще и оперативные итоги на дату последнего движения, отсутствие флажка - что оперативные итоги по регистру не рассчитываются. Этот режим имеет смысл применять для регистров, движения которых анализируются в оперативном учете перед проведением документов; </li>
</li><li><strong>Разделение</strong> - наличие флажка означает, что для регистра задействован механизм разделителя итогов, который обеспечивает более высокую параллельность работы при записи в регистр.</li></ul><p>Серым цветом отмечены те режимы, которые невозможно изменить при текущем состоянии программы. Переключать режимы можно на вкладке <strong>Агрегаты</strong>.</p> <li><strong>Период</strong> - дата, по которую рассчитаны итоги регистра (для регистров накопления - на конец предыдущего месяца, для регистров бухгалтерии - на конец текущего месяца);
</li>
<li><strong>Текущие</strong> - наличие флажка означает, что для регистра рассчитываются не только общие итоги на указанную дату, но еще и оперативные итоги на дату последнего движения, отсутствие флажка - что оперативные итоги по регистру не рассчитываются. Этот режим имеет смысл применять для регистров, движения которых анализируются в оперативном учете перед проведением документов;
</li>
<li><strong>Разделение</strong> - наличие флажка означает, что для регистра задействован механизм разделителя итогов, который обеспечивает более высокую параллельность работы при записи в регистр.</li></ul><p>Серым цветом отмечены те режимы, которые невозможно изменить при текущем состоянии программы. Переключать режимы можно на вкладке <strong>Агрегаты</strong>.</p>
<p>На данной вкладке можно выполнять следующие операции:</p> <p>На данной вкладке можно выполнять следующие операции:</p>
<ul><li> <ul><li>
<div>с помощью соответствующей кнопки <strong>Обновить</strong> информацию о состоянии итогов;</div> <div>с помощью соответствующей кнопки <strong>Обновить</strong> информацию о состоянии итогов;</div>
</li><li> </li>
<li>
<div>с помощью кнопки <strong>Итоги</strong> - включение и выключение использования итогов,</div> <div>с помощью кнопки <strong>Итоги</strong> - включение и выключение использования итогов,</div>
</li><li> </li>
<li>
<div>с помощью кнопки <strong>Текущие итоги</strong> - включение и выключение использования текущих итогов,</div> <div>с помощью кнопки <strong>Текущие итоги</strong> - включение и выключение использования текущих итогов,</div>
</li><li> </li>
<li>
<div>с помощью соответствующей кнопки - включение и выключение <strong>Разделения итогов</strong>,</div> <div>с помощью соответствующей кнопки - включение и выключение <strong>Разделения итогов</strong>,</div>
</li><li> </li>
<li>
<div>с помощью соответствующей кнопки <strong>Установить</strong> выбранный <strong>период</strong> рассчитанных <strong>итогов</strong>,</div> <div>с помощью соответствующей кнопки <strong>Установить</strong> выбранный <strong>период</strong> рассчитанных <strong>итогов</strong>,</div>
</li><li> </li>
<li>
<div>С помощью кнопки <strong>Пересчет</strong> - пересчитать итоги, пересчитать текущие итоги, пересчитать итоги за выбранный период.</div></li></ul><h3>Агрегаты</h3> <div>С помощью кнопки <strong>Пересчет</strong> - пересчитать итоги, пересчитать текущие итоги, пересчитать итоги за выбранный период.</div></li></ul><h3>Агрегаты</h3>
<ul><li>На вкладке в верхнем списке содержится перечень оборотных регистров накопления, для которых в Конфигураторе заданы агрегаты, а в нижнем списке - перечень этих агрегатов. В списке агрегатов содержится признак использования агрегата и статистическая информация о нем. <ul><li>На вкладке в верхнем списке содержится перечень оборотных регистров накопления, для которых в Конфигураторе заданы агрегаты, а в нижнем списке - перечень этих агрегатов. В списке агрегатов содержится признак использования агрегата и статистическая информация о нем.
</li><li>В колонке <strong>Регистр</strong> кроме наименования регистра выводится информация о режиме использования регистра: <strong>Используются данные итогов</strong> или <strong>Используются данные агрегатов</strong>. </li>
</li><li>В список попадают только те оборотные регистры накопления, у которых для текущего пользователя установлено право <strong>Управление итогами</strong> и в Конфигураторе заданы агрегаты.</li></ul><p>На данной вкладке можно выполнять следующие операции:</p> <li>В колонке <strong>Регистр</strong> кроме наименования регистра выводится информация о режиме использования регистра: <strong>Используются данные итогов</strong> или <strong>Используются данные агрегатов</strong>.
</li>
<li>В список попадают только те оборотные регистры накопления, у которых для текущего пользователя установлено право <strong>Управление итогами</strong> и в Конфигураторе заданы агрегаты.</li></ul><p>На данной вкладке можно выполнять следующие операции:</p>
<ul><li> <ul><li>
<div>установка <strong>Режима</strong> использования регистра: итоги или агрегаты,</div> <div>установка <strong>Режима</strong> использования регистра: итоги или агрегаты,</div>
</li><li> </li>
<li>
<div>включение и выключение <strong>Использования</strong> агрегатов,</div> <div>включение и выключение <strong>Использования</strong> агрегатов,</div>
</li><li> </li>
<li>
<div>С помощью кнопки <strong>Перестроить</strong> выполнить перестроение использования агрегатов,</div> <div>С помощью кнопки <strong>Перестроить</strong> выполнить перестроение использования агрегатов,</div>
<ul><li> <ul><li>
<div>Для этого задайте <a href="DataProcessor.УправлениеИтогамиИАгрегатами.Form.ФормаПараметровПерестроения/Help">параметры перестроения</a>.</div></li></ul></li><li> <div>Для этого задайте <a href="DataProcessor.УправлениеИтогамиИАгрегатами.Form.ФормаПараметровПерестроения/Help">параметры перестроения</a>.</div></li></ul></li>
<li>
<div>С помощью кнопки <strong>Обновить</strong> заполнить агрегаты,</div> <div>С помощью кнопки <strong>Обновить</strong> заполнить агрегаты,</div>
</li><li> </li>
<li>
<div>С помощью соответствующей кнопки <strong>Очистить</strong> агрегаты,</div> <div>С помощью соответствующей кнопки <strong>Очистить</strong> агрегаты,</div>
</li><li> </li>
<div>С помощью команды <strong>Оптимальные</strong> выполнить расчет списка оптимальных агрегатов. Для этого необходимо задать <a href="DataProcessor.УправлениеИтогамиИАгрегатами.Form.ФормаПараметровПерестроения/Help">параметр расчета оптимальных агрегатов</a>. После этого будет запрошен каталог, куда будут сохранены xml-файлы со списками оптимальных агрегатов. Каждый файл будет назван идентификатором соответствующего регистра. Так, для регистра <strong>Продажи</strong> файл будет называться <strong>Продажи.xml</strong>. После выполнения операции, в списке регистров жирным шрифтом будут выделены те регистры, для которых необходимо обновить список агрегатов на рассчитанные оптимальные агрегаты. Обновление необходимо выполнять в Конфигураторе.</div> <li>
<div>С помощью кнопки <strong>Оптимальные</strong> выполнить расчет списка оптимальных агрегатов. Для этого необходимо задать <a href="DataProcessor.УправлениеИтогамиИАгрегатами.Form.ФормаПараметровПерестроения/Help">параметр расчета оптимальных агрегатов</a>. После этого будет запрошен каталог, куда будут сохранены xml-файлы со списками оптимальных агрегатов. Каждый файл будет назван идентификатором соответствующего регистра. Так, для регистра <strong>Продажи</strong> файл будет называться <strong>Продажи.xml</strong>. После выполнения операции, в списке регистров жирным шрифтом будут выделены те регистры, для которых необходимо обновить список агрегатов на рассчитанные оптимальные агрегаты. Обновление необходимо выполнять в Конфигураторе.</div>
<ul><li> <ul><li>
<div>Задайте <strong>Параметр расчета оптимальных агрегатов</strong>.</div></li></ul></li><li> <div>Задайте <strong>Параметр расчета оптимальных агрегатов</strong>.</div></li></ul></li>
<li>С помощью кнопки <b>Выделить все</b> можно сделать активными все строки в списке, для того чтобы затем выполнить над ними предусмотренные остальными кнопками операции.</li>
<li>
<div>С помощью кнопки <img src="StdPicture.Refresh"></img> или клавиши <strong>F5</strong> можно <strong>Обновить</strong> информацию об агрегатах.</div></li></ul><p>В нижней части окна отображается список агрегатов регистра, на котором установлен курсор в верхнем списке.</p> <div>С помощью кнопки <img src="StdPicture.Refresh"></img> или клавиши <strong>F5</strong> можно <strong>Обновить</strong> информацию об агрегатах.</div></li></ul><p>В нижней части окна отображается список агрегатов регистра, на котором установлен курсор в верхнем списке.</p>
<h3>См. также:</h3> <h3>См. также:</h3>
<ul><li><a href="v8help://frame/form_common">Работа с формами</a>.</li></ul></body></html> <ul><li><a href="v8help://frame/form_common">Работа с формами</a>.</li></ul></body></html>
@@ -3,8 +3,12 @@
<p>Открывается с помощью ссылки <strong>Установка обновлений и исправлений (патчей)</strong> раздела <strong>Администрирование - Обслуживание - Обновление программы</strong>.</p> <p>Открывается с помощью ссылки <strong>Установка обновлений и исправлений (патчей)</strong> раздела <strong>Администрирование - Обслуживание - Обновление программы</strong>.</p>
<p>Программа позволяет обновлять конфигурацию ИБ в режиме 1С:Предприятия. Обновление производится по требованию или в указанное время.</p> <p>Программа позволяет обновлять конфигурацию ИБ в режиме 1С:Предприятия. Обновление производится по требованию или в указанное время.</p>
<p>Внимание! Помощник не следует использовать, если в программе включена возможность изменения объектов метаданных. В таких случаях рекомендуется выполнять обновление в режиме <strong>Конфигуратор</strong>. </p> <p>Внимание! Помощник не следует использовать, если в программе включена возможность изменения объектов метаданных. В таких случаях рекомендуется выполнять обновление в режиме <strong>Конфигуратор</strong>. </p>
<p>На первом шаге выбирается источник установки обновления. Если у Вас уже имеется файл обновления, то помощник позволяет провести обновление с использованием файла поставки обновления (.cfu) или файла поставки конфигурации (.cf) из локального или сетевого каталога. Если файл обновления уже загружен в основную конфигурацию, и она отличается от конфигурации информационной базы, то необходимо указать вариант обновления без использования файла обновления.</p> <p>На первом шаге выбирается источник установки обновления:</p>
<h3><a name="#2">Получение обновлений из файла в локальном или сетевом каталоге</a></h3> <p></p>
<ul><li>Если у Вас уже имеется файл обновления, то помощник позволяет провести обновление с использованием файла поставки обновления (.cfu), файла исправления (.cfe или .zip) или файла поставки конфигурации (.cf) из локального или сетевого каталога. </li>
<li>Если файл обновления уже загружен в основную конфигурацию, и она отличается от конфигурации информационной базы, то необходимо указать вариант обновления без использования файла обновления.</li>
<li>С помощью ссылки <b>Поиск и установка обновлений</b> можно перейти к поиску обновления в Интернете.</li></ul>Программа определяет необходимость обновления. Если обновление не требуется, об этом выводится сообщение.<br><p></p>
<h3>Получение обновлений из файла в локальном или сетевом каталоге</h3>
<p>В случае если файл обновления уже имеется, то следует воспользоваться режимом обновления конфигурации из файла. </p> <p>В случае если файл обновления уже имеется, то следует воспользоваться режимом обновления конфигурации из файла. </p>
<ul><li>На первой странице помощник просит указать, где именно находится файл с обновлениями: <ul><li>На первой странице помощник просит указать, где именно находится файл с обновлениями:
<ul><li> <ul><li>
@@ -15,9 +19,8 @@
<p><strong>Укажите файл обновления</strong> - с помощью кнопки <img src="StdPicture.InputFieldSelect"></img> <strong>Выбрать</strong> укажите путь к файлу на компьютере. </p> <p><strong>Укажите файл обновления</strong> - с помощью кнопки <img src="StdPicture.InputFieldSelect"></img> <strong>Выбрать</strong> укажите путь к файлу на компьютере. </p>
<ul><li>В качестве файла может быть указан cfu-файл обновления конфигурации или cf-файл поставки конфигурации, например, <strong>E:\1Cits\EXE\Migration\1Cv8.cf</strong>. </li></ul></li> <ul><li>В качестве файла может быть указан cfu-файл обновления конфигурации или cf-файл поставки конфигурации, например, <strong>E:\1Cits\EXE\Migration\1Cv8.cf</strong>. </li></ul></li>
<li>Нажмите <strong>Далее</strong>, для того чтобы продолжить установку обновлений.</li></ul></li> <li>Нажмите <strong>Далее</strong>, для того чтобы продолжить установку обновлений.</li></ul></li>
<li>После нажатия на кнопку <strong>Далее</strong> программа получает файл обновления из локального или сетевого каталога, например, с диска 1С:ИТС локально на компьютер. </li></ul><p>Получение файла обновления с диска 1С:ИТС может занять продолжительное время, в зависимости от объема конкретного файла и производительности компьютера.</p> <li>После нажатия на кнопку <strong>Далее</strong> программа получает файл обновления из локального или сетевого каталога.</li></ul><h3>Установка обновлений </h3>
<h3>Установка обновлений </h3> <p>После того, как обновление было получено локально на компьютер, помощник предлагает его установить. </p>
<p>После того, как обновление было получено локально на компьютер, помощник предлагает его установить.</p>
<ul><li>Установка обновления выполняется от имени текущего пользователя. Введите <strong>Параметры администрирования информационной базы - Имя пользователя</strong> и <strong>Пароль</strong>, если для доступа к информационной базе необходима авторизация. В случае клиент-серверного варианта работы программы также может потребоваться ввести имя и пароль администратора кластера серверов. <ul><li>Установка обновления выполняется от имени текущего пользователя. Введите <strong>Параметры администрирования информационной базы - Имя пользователя</strong> и <strong>Пароль</strong>, если для доступа к информационной базе необходима авторизация. В случае клиент-серверного варианта работы программы также может потребоваться ввести имя и пароль администратора кластера серверов.
</li> </li>
<li>Перед началом обновления версии программы рекомендуется создавать <a href="DataProcessor.УстановкаОбновлений.Form.НастройкаРезервнойКопии/Help">резервную копию</a> информационной базы. Резервная копия используется для автоматического восстановления информационной базы в случае нештатной ситуации. К настройке автоматического создания резервной копии в файловом варианте работы можно перейти по ссылке <strong>Создавать временную резервную копию ИБ и выполнять откат при нештатной ситуации</strong>. <li>Перед началом обновления версии программы рекомендуется создавать <a href="DataProcessor.УстановкаОбновлений.Form.НастройкаРезервнойКопии/Help">резервную копию</a> информационной базы. Резервная копия используется для автоматического восстановления информационной базы в случае нештатной ситуации. К настройке автоматического создания резервной копии в файловом варианте работы можно перейти по ссылке <strong>Создавать временную резервную копию ИБ и выполнять откат при нештатной ситуации</strong>.
@@ -46,7 +49,7 @@
</li> </li>
<li>Помощник выводит сообщение об успешном завершении обновления программы. Перейдите по ссылке <strong>Новое в этой версии</strong>, для того чтобы просмотреть <a href="CommonForm.ОписаниеИзмененийПрограммы/Help">описание изменений программы</a>. Нажмите <strong>Готово</strong>, для того чтобы приступить к работе в программе. <li>Помощник выводит сообщение об успешном завершении обновления программы. Перейдите по ссылке <strong>Новое в этой версии</strong>, для того чтобы просмотреть <a href="CommonForm.ОписаниеИзмененийПрограммы/Help">описание изменений программы</a>. Нажмите <strong>Готово</strong>, для того чтобы приступить к работе в программе.
</li> </li>
<li>Если в программе предусмотрено <a href="DataProcessor.РезультатыОбновленияПрограммы.Form.ИндикацияХодаОтложенногоОбновленияИБ/Help">отложенное обновление</a>, выводится предупреждение о необходимости ознакомиться <strong>с дополнительными инструкциями</strong> для завершения обновления. Перейдите по соответствующей ссылке.</li></ul><h3><a name="#3">Планирование обновлений</a></h3> <li>Если в программе предусмотрено <a href="DataProcessor.РезультатыОбновленияПрограммы.Form.ИндикацияХодаОтложенногоОбновленияИБ/Help">отложенное обновление</a>, выводится предупреждение о необходимости ознакомиться <strong>с дополнительными инструкциями</strong> для завершения обновления. Перейдите по соответствующей ссылке.</li></ul><h3><a name="3">Планирование обновлений</a></h3>
<ul><li>При работе в клиент-серверном варианте работы программы можно задавать отложенное по времени обновление, например, можно отложить обновление конфигурации на ночь. <ul><li>При работе в клиент-серверном варианте работы программы можно задавать отложенное по времени обновление, например, можно отложить обновление конфигурации на ночь.
</li> </li>
<li>Для этого при обновлении конфигурации в помощнике выберите с помощью переключателя <strong>Запланировать установку обновления на указанное время</strong> и укажите время и дату обновления. <li>Для этого при обновлении конфигурации в помощнике выберите с помощью переключателя <strong>Запланировать установку обновления на указанное время</strong> и укажите время и дату обновления.
@@ -62,5 +65,14 @@
<ul><ul><li>Результат обновления информационной базы записывается в <strong>Журнал событий Windows</strong> (Event Log).<br></li></ul><li>Если в результате нештатной ситуации при обновлении база оказалась заблокированной, то ее можно разблокировать с помощью консоли <strong>Администрирование серверов 1С:Предприятия</strong>, либо из командной строки, запустив 1С:Предприятие от имени администратора с ключом <strong>РазрешитьРаботуПользователей</strong> и указав код разблокировки <strong>ПакетноеОбновлениеКонфигурацииИБ</strong>. Например:</li></ul><p class="SourceCode">"C:\Program Files\1cv82\bin\1cv8.exe"ENTERPRISE /S"server\base" /N"Администратор" /P"" /WA- /C РазрешитьРаботуПользователей /UC ПакетноеОбновлениеКонфигурацииИБ</p> <ul><ul><li>Результат обновления информационной базы записывается в <strong>Журнал событий Windows</strong> (Event Log).<br></li></ul><li>Если в результате нештатной ситуации при обновлении база оказалась заблокированной, то ее можно разблокировать с помощью консоли <strong>Администрирование серверов 1С:Предприятия</strong>, либо из командной строки, запустив 1С:Предприятие от имени администратора с ключом <strong>РазрешитьРаботуПользователей</strong> и указав код разблокировки <strong>ПакетноеОбновлениеКонфигурацииИБ</strong>. Например:</li></ul><p class="SourceCode">"C:\Program Files\1cv82\bin\1cv8.exe"ENTERPRISE /S"server\base" /N"Администратор" /P"" /WA- /C РазрешитьРаботуПользователей /UC ПакетноеОбновлениеКонфигурацииИБ</p>
<ul><li>Если обновление конфигурации завершилось неудачей, а во временном log-файле имеется запись: "Исключение в createConnection: Error, Automation server can't create object", то, скорее всего, используется 32-разрядная компонента <strong>comcntr.dll</strong> на компьютере под управлением 64-разрядной операционной системы. Для устранения данной проблемы необходимо взять 64-разрядную компоненту <strong>comcntr.dll</strong> из поставки 1С Предприятие x64 Сервер и зарегистрировать ее, запустив из командной строки:</li></ul><p class="SourceCode">regsvr32 &lt;каталог 64-разрядного comcntr.dll&gt;\comcntr.dll</p> <ul><li>Если обновление конфигурации завершилось неудачей, а во временном log-файле имеется запись: "Исключение в createConnection: Error, Automation server can't create object", то, скорее всего, используется 32-разрядная компонента <strong>comcntr.dll</strong> на компьютере под управлением 64-разрядной операционной системы. Для устранения данной проблемы необходимо взять 64-разрядную компоненту <strong>comcntr.dll</strong> из поставки 1С Предприятие x64 Сервер и зарегистрировать ее, запустив из командной строки:</li></ul><p class="SourceCode">regsvr32 &lt;каталог 64-разрядного comcntr.dll&gt;\comcntr.dll</p>
<p>Выяснив причины ошибки, произведите соответствующие настройки компьютера, затем нажмите <strong>Далее</strong> для повторения попытки. </p> <p>Выяснив причины ошибки, произведите соответствующие настройки компьютера, затем нажмите <strong>Далее</strong> для повторения попытки. </p>
<h3>Обновление не подходит</h3>
<p></p>
<ul><li>Программа анализирует файл обновления, и если он не подходит (файл поставки от другой версии или от другой программы), то об этом выводится предупреждение. Нажмите <b>Закрыть</b>.</li>
<li>В этом случае следует найти нужный файл и повторить попытку обновления.</li></ul><p></p>
<h3>Если в программе установлены расширения</h3>
<p></p>
<ul><li>Если в программе имеются расширения, об этом выводится сообщение. </li>
<li>По ссылке в сообщении можно <b>Перейти к списку расширений</b>.</li>
<li>Необходимо учитывать, что расширения могут быть несовместимы с новой версией программы. Можно предварительно выполнить обновление на резервной копии, для того чтобы проверить их совместимость. </li></ul><p></p>
<h3>См. также:</h3> <h3>См. также:</h3>
<ul><li><a href="v8help://frame/form_common">Работа с формами</a>.</li></ul></body></html> <ul><li><a href="v8help://frame/form_common">Работа с формами</a>.</li></ul></body></html>
@@ -95,7 +95,11 @@
<li>Если в поле установлено значение <strong>Рассмотренные</strong>, то в списке показываются взаимодействия с установленным флажком <strong>Рассмотрено</strong>.</li></ul></li> <li>Если в поле установлено значение <strong>Рассмотренные</strong>, то в списке показываются взаимодействия с установленным флажком <strong>Рассмотрено</strong>.</li></ul></li>
<li>С помощью команды <strong>Еще - Установить период</strong> можно выбрать период просмотра документов взаимодействий. <li>С помощью команды <strong>Еще - Установить период</strong> можно выбрать период просмотра документов взаимодействий.
</li> </li>
<li>Установленные отборы запоминаются.</li></ul><a name="70a6370b13ca43baa611bed9691c46111905adcce61f135f174b11e275eba869591b"> <li>Установленные отборы запоминаются.</li></ul><h3>Учет отборов в панели группировки по предметам или контактам</h3>
<div>
<ul><li>С помощью ссылки под панелью навигации можно <b>Изменить</b> группировку - включить или отключить учет отборов в панели группировки по предметам или контактам. </li>
<li>Если учет отборов в панели группировки отключен, то показываются все предметы (контакты).</li></ul></div>
<div><a name="70a6370b13ca43baa611bed9691c46111905adcce61f135f174b11e275eba869591b">
<h3 style="MARGIN-LEFT: 0px">Полнотекстовый поиск в переписке или во вложениях</h3></a> <h3 style="MARGIN-LEFT: 0px">Полнотекстовый поиск в переписке или во вложениях</h3></a>
<ul><li> <ul><li>
<div>Введите строку поиска в поле <strong>Найти</strong>, расположенное в правой верхней части окна.</div> <div>Введите строку поиска в поле <strong>Найти</strong>, расположенное в правой верхней части окна.</div>
@@ -263,4 +267,4 @@
</li> </li>
<li><strong>Переслать как вложение</strong> - по команде контекстного меню по правой кнопке мыши будет сформировано исходящее письмо, включающее в себя как вложение выбранные входящие или отправленные письма.</li></ul></li></ul><h3><a name="8">Персональные настройки</a></h3> <li><strong>Переслать как вложение</strong> - по команде контекстного меню по правой кнопке мыши будет сформировано исходящее письмо, включающее в себя как вложение выбранные входящие или отправленные письма.</li></ul></li></ul><h3><a name="8">Персональные настройки</a></h3>
<ul><li>С помощью команды <strong>Еще</strong> <strong>- Персональные настройки</strong> можно перейти к настройке персональной учетной записи электронной почты.</li></ul><h3>См. также</h3> <ul><li>С помощью команды <strong>Еще</strong> <strong>- Персональные настройки</strong> можно перейти к настройке персональной учетной записи электронной почты.</li></ul><h3>См. также</h3>
<ul><li><a href="v8help://frame/form_common">Работа с формами</a>.</li></ul></body></html> <ul><li><a href="v8help://frame/form_common">Работа с формами</a>.</li></ul></div></body></html>
@@ -80,7 +80,8 @@
Возврат; Возврат;
КонецЕсли; КонецЕсли;
Если РазделениеВключено Тогда Если РазделениеВключено
И Не ОтправкаПолучениеПисемВыполняется Тогда
ОтправитьПолучитьПочтуПользователяКлиент(); ОтправитьПолучитьПочтуПользователяКлиент();
КонецЕсли; КонецЕсли;
@@ -1577,7 +1578,13 @@
ВзаимодействияКлиентСервер.БыстрыйОтборСписокПриИзменении(ЭтотОбъект, "Статус", ДатаДляОтбора); ВзаимодействияКлиентСервер.БыстрыйОтборСписокПриИзменении(ЭтотОбъект, "Статус", ДатаДляОтбора);
ШаблонЗаголовка = НСтр("ru = 'Статус: %1'"); ШаблонЗаголовка = НСтр("ru = 'Статус: %1'");
ПредставлениеСтатуса = Взаимодействия.СписокСтатусов().НайтиПоЗначению(Статус).Представление; НайденныйСтатус = Взаимодействия.СписокСтатусов().НайтиПоЗначению(Статус);
Если НайденныйСтатус = Неопределено Тогда
Статус = "Все";
ПредставлениеСтатуса = НСтр("ru = 'Все'");
Иначе
ПредставлениеСтатуса = НайденныйСтатус.Представление;
КонецЕсли;
Элементы.СписокСтатус.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонЗаголовка, ПредставлениеСтатуса); Элементы.СписокСтатус.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонЗаголовка, ПредставлениеСтатуса);
Для Каждого ЭлементПодменю Из Элементы.СписокСтатус.ПодчиненныеЭлементы Цикл Для Каждого ЭлементПодменю Из Элементы.СписокСтатус.ПодчиненныеЭлементы Цикл
Если ЭлементПодменю.Имя = ("УстановитьОтборСтатус_" + Статус) Тогда Если ЭлементПодменю.Имя = ("УстановитьОтборСтатус_" + Статус) Тогда
@@ -2932,8 +2939,8 @@
Если ЗначенияПараметровМакета.Количество() = 0 Тогда Если ЗначенияПараметровМакета.Количество() = 0 Тогда
Возврат ""; Возврат "";
ИначеЕсли ЗначенияПараметровМакета.Количество() = 2 ИначеЕсли ЗначенияПараметровМакета.Количество() = 2
И (НЕ ЗначениеЗаполнено(ЗначенияПараметровМакета.ДатаНачала.Значение)) И (НЕ ЗначениеЗаполнено(ЗначенияПараметровМакета.НачалоПериодаОтбора.Значение))
И (НЕ ЗначениеЗаполнено(ЗначенияПараметровМакета.ДатаОкончания.Значение)) Тогда И (НЕ ЗначениеЗаполнено(ЗначенияПараметровМакета.КонецПериодаОтбора.Значение)) Тогда
Возврат ""; Возврат "";
КонецЕсли; КонецЕсли;
@@ -4248,6 +4255,8 @@
УправлениеЭлектроннойПочтойКлиент.ОтправитьЗагрузитьПочтуПользователя(УникальныйИдентификатор, ЭтотОбъект, Элементы.Список, ВыводитьПрогресс); УправлениеЭлектроннойПочтойКлиент.ОтправитьЗагрузитьПочтуПользователя(УникальныйИдентификатор, ЭтотОбъект, Элементы.Список, ВыводитьПрогресс);
ПодключитьОбработчикОжидания("ПроверитьНеобходимостьОтправкиПолученияПочты", 30, Истина);
КонецПроцедуры КонецПроцедуры
&НаКлиенте &НаКлиенте
@@ -175,46 +175,8 @@
ПО ПредметыВзаимодействий.Предмет = СостоянияПредметовВзаимодействий.Предмет ПО ПредметыВзаимодействий.Предмет = СостоянияПредметовВзаимодействий.Предмет
ПО ЖурналДокументовВзаимодействия.Ссылка = ПредметыВзаимодействий.Взаимодействие} ПО ЖурналДокументовВзаимодействия.Ссылка = ПредметыВзаимодействий.Взаимодействие}
{ГДЕ {ГДЕ
(ЖурналДокументовВзаимодействия.Дата МЕЖДУ &amp;ДатаНачала И &amp;ДатаОкончания)}</query> (ЖурналДокументовВзаимодействия.Дата МЕЖДУ &amp;НачалоПериодаОтбора И &amp;КонецПериодаОтбора)}</query>
</dataSet> </dataSet>
<parameter>
<name>ДатаНачала</name>
<title xsi:type="v8:LocalStringType">
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Дата начала</v8:content>
</v8:item>
</title>
<valueType>
<v8:Type>xs:dateTime</v8:Type>
<v8:DateQualifiers>
<v8:DateFractions>DateTime</v8:DateFractions>
</v8:DateQualifiers>
</valueType>
<value xsi:type="xs:dateTime">0001-01-01T00:00:00</value>
<useRestriction>true</useRestriction>
<expression>&amp;Интервал.ДатаНачала</expression>
<availableAsField>false</availableAsField>
</parameter>
<parameter>
<name>ДатаОкончания</name>
<title xsi:type="v8:LocalStringType">
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Дата окончания</v8:content>
</v8:item>
</title>
<valueType>
<v8:Type>xs:dateTime</v8:Type>
<v8:DateQualifiers>
<v8:DateFractions>DateTime</v8:DateFractions>
</v8:DateQualifiers>
</valueType>
<value xsi:type="xs:dateTime">0001-01-01T00:00:00</value>
<useRestriction>true</useRestriction>
<expression>&amp;Интервал.ДатаОкончания</expression>
<availableAsField>false</availableAsField>
</parameter>
<parameter> <parameter>
<name>Интервал</name> <name>Интервал</name>
<title xsi:type="v8:LocalStringType"> <title xsi:type="v8:LocalStringType">
@@ -234,6 +196,32 @@
<useRestriction>false</useRestriction> <useRestriction>false</useRestriction>
<availableAsField>false</availableAsField> <availableAsField>false</availableAsField>
</parameter> </parameter>
<parameter>
<name>КонецПериодаОтбора</name>
<title xsi:type="v8:LocalStringType">
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Конец периода отбора</v8:content>
</v8:item>
</title>
<value xsi:type="xs:string">1/1/0001, 12:00:00 AM</value>
<useRestriction>true</useRestriction>
<expression>&amp;Интервал.ДатаОкончания</expression>
<availableAsField>false</availableAsField>
</parameter>
<parameter>
<name>НачалоПериодаОтбора</name>
<title xsi:type="v8:LocalStringType">
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Начало периода отбора</v8:content>
</v8:item>
</title>
<value xsi:type="xs:string">1/1/0001, 12:00:00 AM</value>
<useRestriction>true</useRestriction>
<expression>&amp;Интервал.ДатаНачала</expression>
<availableAsField>false</availableAsField>
</parameter>
<settingsVariant> <settingsVariant>
<dcsset:name>Основной</dcsset:name> <dcsset:name>Основной</dcsset:name>
<dcsset:presentation xsi:type="xs:string">Основной</dcsset:presentation> <dcsset:presentation xsi:type="xs:string">Основной</dcsset:presentation>
@@ -1,18 +1,23 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html;charset=utf-8" http-equiv="content-type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 11.00.10570.1001"></meta></head><body> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html;charset=utf-8" http-equiv="content-type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 11.00.10570.1001"></meta></head><body>
<p>Предназначен для хранения согласий на обработку ПДн и отзывов согласий.</p> <p>Предназначен для хранения согласий на обработку ПДн и отзывов согласий.</p>
<p>Открывается по соответствующей команде в разделе <strong>Интегрируемые подсистемы</strong>.</p>
<h3>Ввод новых документов</h3> <h3>Ввод новых документов</h3>
<ul><li>Согласно закону от 27.06.2006 № 152-ФЗ "О персональных данных" необходимо получить письменное согласие субъекта на обработку персональных данных (например, на регистрацию данных субъекта в списках программы). <ul><li>Согласно закону от 27.06.2006 № 152-ФЗ "О персональных данных" необходимо получить письменное согласие субъекта на обработку персональных данных (например, на регистрацию данных субъекта в списках программы).
</li><li>В программе предусмотрена регистрация согласий субъектов во избежание повторного истребования согласия, когда это не требуется, и с целью повторного истребования, когда срок действия согласия уже истек. </li>
</li><li>Субъект персональных данных в любой момент может отозвать свое согласие на обработку персональных данных. Для документирования этого события в программе имеется документ <strong>Отзыв согласия на обработку ПДн</strong>. <li>В программе предусмотрена регистрация согласий субъектов во избежание повторного истребования согласия, когда это не требуется, и с целью повторного истребования, когда срок действия согласия уже истек.
</li><li>С помощью кнопки <strong>Создать</strong> можно ввести: </li>
<li>Субъект персональных данных в любой момент может отозвать свое согласие на обработку персональных данных. Для документирования этого события в программе имеется документ <strong>Отзыв согласия на обработку ПДн</strong>.
</li>
<li>С помощью кнопки <strong>Создать</strong> можно ввести:
<ul><li><a href="Document.СогласиеНаОбработкуПерсональныхДанных/Help">Согласие на обработку ПДн</a>; <ul><li><a href="Document.СогласиеНаОбработкуПерсональныхДанных/Help">Согласие на обработку ПДн</a>;
</li><li><a href="Document.ОтзывСогласияНаОбработкуПерсональныхДанных/Help">Отзыв согласия на обработку ПДн</a>.</li></ul></li></ul><h3>Печать</h3> </li>
<li><a href="Document.ОтзывСогласияНаОбработкуПерсональныхДанных/Help">Отзыв согласия на обработку ПДн</a>.</li></ul></li></ul><h3>Печать</h3>
<p>С помощью кнопки <strong>Печать</strong> можно распечатать выделенные согласия. Печать возможна:</p> <p>С помощью кнопки <strong>Печать</strong> можно распечатать выделенные согласия. Печать возможна:</p>
<ul><li>в виде табличных документов формата MXL (для печати в этом формате не требуется специальных программ); <ul><li>в виде табличных документов формата MXL (для печати в этом формате не требуется специальных программ);
</li><li>в виде офисных документов в форматах Microsoft Word OpenOffice.org, для этого требуются соответствующие программы, установленные на компьютере.</li></ul><h3>Проведение документов</h3> </li>
<li>в виде офисных документов в форматах Microsoft Word OpenOffice.org, для этого требуются соответствующие программы, установленные на компьютере.</li></ul><h3>Проведение документов</h3>
<p>С помощью команд меню <strong>Еще</strong> можно:</p> <p>С помощью команд меню <strong>Еще</strong> можно:</p>
<ul><li><strong>Провести</strong> согласие или отзыв согласия; <ul><li><strong>Провести</strong> согласие или отзыв согласия;
</li><li>Отменить проведение с помощью команды <strong>Отмена проведения</strong>.</li></ul><h3>См. также:</h3> </li>
<li>Отменить проведение с помощью команды <strong>Отмена проведения</strong>.</li></ul><h3>См. также:</h3>
<ul><li> <ul><li>
<div><a href="v8help://frame/form_common">Работа с формами</a>.</div></li></ul></body></html> <div><a href="v8help://frame/form_common">Работа с формами</a>.</div></li></ul></body></html>
@@ -2,31 +2,47 @@
<p>Вводится при получении согласия на обработку персональных данных.</p> <p>Вводится при получении согласия на обработку персональных данных.</p>
<p>С помощью программы можно проводить проверку персональных данных, например, при приеме на работу сотрудника:</p> <p>С помощью программы можно проводить проверку персональных данных, например, при приеме на работу сотрудника:</p>
<ul><li>Проверяется наличие зарегистрированных физических лиц; <ul><li>Проверяется наличие зарегистрированных физических лиц;
</li><li>Если физическое лицо было обнаружено, выполняется проверка наличия действующего согласия на обработку ПДн; </li>
</li><li>Если согласия на обработку ПДн не обнаружено, предлагается его ввести.</li></ul><p>Предусмотрен ввод согласия на обработку ПДн из списков программы, в которых хранятся персональные данные, по соответствующей кнопке. Также можно ввести документ из списка <a href="DocumentJournal.СогласияНаОбработкуПерсональныхДанных/Help">Согласия на обработку ПДн</a>.</p> <li>Если физическое лицо было обнаружено, выполняется проверка наличия действующего согласия на обработку ПДн;
</li>
<li>Если согласия на обработку ПДн не обнаружено, предлагается его ввести.</li></ul><p>Предусмотрен ввод согласия на обработку ПДн из списков программы, в которых хранятся персональные данные, по соответствующей кнопке. Также можно ввести документ из списка <a href="DocumentJournal.СогласияНаОбработкуПерсональныхДанных/Help">Согласия на обработку ПДн</a>.</p>
<p>Укажите <strong>Дату</strong> согласия.</p> <p>Укажите <strong>Дату</strong> согласия.</p>
<h3>Оператор персональных данных</h3> <h3>Оператор персональных данных</h3>
<ul><a name="СтандартныеПодсистемы.Организации"> <ul><li>Выберите <strong>Организацию</strong> из списка;</li>
<li>Выберите <strong>Организацию</strong> из </li></a>списка;
<li>После этого автоматически заполняется <strong>Адрес</strong> (если он заполнен в карточке организации); <a name="СтандартныеПодсистемы.Пользователи"> <li>После этого автоматически заполняется <strong>Адрес</strong> (если он заполнен в карточке организации); <a name="СтандартныеПодсистемы.Пользователи">
</a></li><li><a name="СтандартныеПодсистемы.Пользователи">Выберите из </a><a href="Catalog.Пользователи/Help">списка пользователей</a> <strong>Ответственного за обработку персональных данных</strong>.</li></ul><h3>Субъект персональных данных </h3> </a></li>
<li><a name="СтандартныеПодсистемы.Пользователи">Выберите из </a><a href="Catalog.Пользователи/Help">списка пользователей</a> <strong>Ответственного за обработку персональных данных</strong>.</li></ul><h3>Субъект персональных данных </h3>
<ul><li>Персональные данные субъектов выбираются из нескольких списков; <ul><li>Персональные данные субъектов выбираются из нескольких списков;
</li><li>Рекомендуется заносить все данные субъектов в соответствующий список, а не только в окне согласия, т.к. этим облегчается последующая работа. Если согласие формируется из списка, данные выбранного субъекта заполняются автоматически; </li>
</li><li>В поле <strong>Субъект</strong> сначала выберите список, затем выберите субъекта персональных данных из соответствующего списка; <li>Рекомендуется заносить все данные субъектов в соответствующий список, а не только в окне согласия, т.к. этим облегчается последующая работа. Если согласие формируется из списка, данные выбранного субъекта заполняются автоматически;
</li><li>Сведения о субъекте персональных данных (<strong>ФИО</strong> и <strong>Паспортные данные</strong>) заполняются автоматически, если они заполнены в самом списке; </li>
</li><li>Напишите <strong>Адрес</strong> субъекта.</li></ul><h3>Остальные поля</h3> <li>В поле <strong>Субъект</strong> сначала выберите список, затем выберите субъекта персональных данных из соответствующего списка;
</li>
<li>Сведения о субъекте персональных данных (<strong>ФИО</strong> и <strong>Паспортные данные</strong>) заполняются автоматически, если они заполнены в самом списке;
</li>
<li>Напишите <strong>Адрес</strong> субъекта.</li></ul><h3>Остальные поля</h3>
<ul><li>Поле <strong>Согласие получено</strong> заполняется автоматически текущей датой. <ul><li>Поле <strong>Согласие получено</strong> заполняется автоматически текущей датой.
</li><li>Проставьте <strong>Срок действия</strong> согласия. Если срок действия не заполнен, то согласие на обработку персональных данных будет выдано бессрочно. </li>
</li><li>В поле <strong>Комментарий</strong> можно написать дополнительную информацию. <a name="СтандартныеПодсистемы.Пользователи"> <li>Проставьте <strong>Срок действия</strong> согласия. Если срок действия не заполнен, то согласие на обработку персональных данных будет выдано бессрочно.
</a></li><li><a name="СтандартныеПодсистемы.Пользователи">В поле <strong>Ответственный</strong> программа автоматически проставляет текущего </a><a href="Catalog.Пользователи.Form.ФормаЭлемента/Help">пользователя</a>.</li></ul><h3>Печать</h3> </li>
<li>В поле <strong>Комментарий</strong> можно написать дополнительную информацию. <a name="СтандартныеПодсистемы.Пользователи">
</a></li>
<li><a name="СтандартныеПодсистемы.Пользователи">В поле <strong>Ответственный</strong> программа автоматически проставляет текущего </a><a href="Catalog.Пользователи.Form.ФормаЭлемента/Help">пользователя</a>.</li></ul><h3>Печать</h3>
<ul><li>С помощью кнопки <strong>Печать</strong> можно распечатать выделенные согласия. Печать возможна в виде табличных документов формата MXL (для печати в этом формате не требуется специальных программ); <ul><li>С помощью кнопки <strong>Печать</strong> можно распечатать выделенные согласия. Печать возможна в виде табличных документов формата MXL (для печати в этом формате не требуется специальных программ);
</li><li>В виде офисных документов в форматах Microsoft Word и OpenOffice.org, для этого требуются соответствующие программы, установленные на компьютере.</li></ul><h3>Предупреждение</h3> </li>
<li>В виде офисных документов в форматах Microsoft Word и OpenOffice.org, для этого требуются соответствующие программы, установленные на компьютере.</li></ul><h3>Предупреждение</h3>
<ul><li>При выборе субъекта программа проводит поиск зарегистрированных согласий на обработку ПДн. <ul><li>При выборе субъекта программа проводит поиск зарегистрированных согласий на обработку ПДн.
</li><li>Если уже имеется действующее согласие этого субъекта в той же организации, выводится предупреждение. </li>
</li><li>В этот момент можно: <li>Если уже имеется действующее согласие этого субъекта в той же организации, выводится предупреждение.
</li>
<li>В этот момент можно:
<ul><li>отказаться от регистрации документа, сообщив субъекту, что согласие уже не требуется; <ul><li>отказаться от регистрации документа, сообщив субъекту, что согласие уже не требуется;
</li><li>предложить субъекту оформить согласие на более длительный срок.</li></ul></li><li>С помощью ссылки, имеющейся в предупреждении, можно просмотреть согласие, зарегистрированное ранее. </li>
</li><li>Если необходимо ввести новое <strong>Согласие на обработку персональных данных</strong> (данные субъекта изменились и т.д.) то сначала нужно отозвать ранее полученное согласие. Нажмите кнопку <strong>Создать на основании</strong>, выберите <a href="Document.ОтзывСогласияНаОбработкуПерсональныхДанных/Help">Отзыв согласия на обработку ПДн</a>.</li></ul><h3>Проведение документа</h3> <li>предложить субъекту оформить согласие на более длительный срок.</li></ul></li>
<li>С помощью ссылки, имеющейся в предупреждении, можно просмотреть согласие, зарегистрированное ранее.
</li>
<li>Если необходимо ввести новое <strong>Согласие на обработку персональных данных</strong> (данные субъекта изменились и т.д.) то сначала нужно отозвать ранее полученное согласие. Нажмите кнопку <strong>Создать на основании</strong>, выберите <a href="Document.ОтзывСогласияНаОбработкуПерсональныхДанных/Help">Отзыв согласия на обработку ПДн</a>.</li></ul><h3>Проведение документа</h3>
<ul><li>Нажмите кнопку <strong>Провести и закрыть</strong>, для того чтобы зарегистрировать в программе согласие на обработку ПДн. <ul><li>Нажмите кнопку <strong>Провести и закрыть</strong>, для того чтобы зарегистрировать в программе согласие на обработку ПДн.
</li><li>Второе такое же согласие на обработку персональных данных провести (т.е. зарегистрировать) невозможно. Программа выводит сообщение об ошибке.</li></ul><h3>См. также:</h3> </li>
<li>Второе такое же согласие на обработку персональных данных провести (т.е. зарегистрировать) невозможно. Программа выводит сообщение об ошибке.</li></ul><h3>См. также:</h3>
<ul><li><a href="v8help://frame/form_common">Работа с формами</a>.</li></ul></body></html> <ul><li><a href="v8help://frame/form_common">Работа с формами</a>.</li></ul></body></html>
@@ -0,0 +1,52 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Enum xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="be75d0b2-c9db-4dab-9e32-dbe26d667508">
<producedTypes>
<refType typeId="334a73bf-9c7f-4ab2-9385-e45f095b19e0" valueTypeId="e4a94be7-56ac-4ea6-a1eb-b0c87cdd5196"/>
<listType typeId="c0c04645-239b-4bfa-b647-ffa6a95a3327" valueTypeId="556a6626-d3f2-45cb-ab48-91413bafdd2b"/>
<managerType typeId="eee442ae-5137-4712-9b7b-f268562ccb30" valueTypeId="8125ff4d-29f1-4b28-b25d-8a5a534400bc"/>
</producedTypes>
<name>РежимыОчисткиФайлов</name>
<synonym>
<key>ru</key>
<value>Режимы очистки файлов</value>
</synonym>
<standardAttributes>
<dataHistory>Use</dataHistory>
<name>Order</name>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
</standardAttributes>
<standardAttributes>
<dataHistory>Use</dataHistory>
<name>Ref</name>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
</standardAttributes>
<quickChoice>true</quickChoice>
<choiceMode>BothWays</choiceMode>
<enumValues uuid="299c014f-996a-4a99-a5be-a7cfd5ee45e4">
<name>НеОчищать</name>
<synonym>
<key>ru</key>
<value>Не очищать</value>
</synonym>
</enumValues>
<enumValues uuid="2569b69d-006f-478e-83b7-9163048b34bb">
<name>ОчищатьУдаленные</name>
<synonym>
<key>ru</key>
<value>Очищать удаленные</value>
</synonym>
</enumValues>
<enumValues uuid="1ee47933-8117-4d47-9245-476c0ed3a373">
<name>ОчищатьУдаленныеИНенужные</name>
<synonym>
<key>ru</key>
<value>Очищать удаленные и ненужные</value>
</synonym>
</enumValues>
</mdclass:Enum>
@@ -38,6 +38,14 @@
// //
Процедура ЗаписатьКодировкуВерсииФайла(ВерсияСсылка, Кодировка) Экспорт Процедура ЗаписатьКодировкуВерсииФайла(ВерсияСсылка, Кодировка) Экспорт
Если НЕ ЗначениеЗаполнено(Кодировка) Тогда
Возврат;
КонецЕсли;
Если ЗначениеЗаполнено(РегистрыСведений.КодировкиФайлов.КодировкаВерсииФайла(ВерсияСсылка)) Тогда
Возврат;
КонецЕсли;
УстановитьПривилегированныйРежим(Истина); УстановитьПривилегированныйРежим(Истина);
МенеджерЗаписи = РегистрыСведений.КодировкиФайлов.СоздатьМенеджерЗаписи(); МенеджерЗаписи = РегистрыСведений.КодировкиФайлов.СоздатьМенеджерЗаписи();
@@ -2,7 +2,7 @@
<p>В программе можно вводить напоминания, указав время и предмет, по поводу которого в программе в указанное время будет выведен <a href="InformationRegister.НапоминанияПользователя.Form.ФормаОповещения/Help">список напоминаний</a>.</p> <p>В программе можно вводить напоминания, указав время и предмет, по поводу которого в программе в указанное время будет выведен <a href="InformationRegister.НапоминанияПользователя.Form.ФормаОповещения/Help">список напоминаний</a>.</p>
<p>Предметом напоминаний могут быть различные справочники, документы и другие объекты программы. Например, напоминание можно ввести по конкретному партнеру, документу товародвижения и т.д., для того чтобы не забыть уточнить или дозаполнить какие-либо данные.</p> <p>Предметом напоминаний могут быть различные справочники, документы и другие объекты программы. Например, напоминание можно ввести по конкретному партнеру, документу товародвижения и т.д., для того чтобы не забыть уточнить или дозаполнить какие-либо данные.</p>
<p>Открывается по кнопке <img src="CommonPicture.Напоминание" width="16" height="16"></img> <strong>Органайзер - Напомнить</strong> из различных объектов программы. При этом можно ввести только одно напоминание для одного объекта.</p> <p>Открывается по кнопке <img src="CommonPicture.Напоминание" width="16" height="16"></img> <strong>Органайзер - Напомнить</strong> из различных объектов программы. При этом можно ввести только одно напоминание для одного объекта.</p>
<p>Также можно ввести напоминание, связанное с каким-либо персональным событием или делом, в списке <a href="InformationRegister.НапоминанияПользователя.Form.МоиНапоминания/Help">Мои напоминания</a> по команде <strong>Создать</strong>.Такое напоминание может быть полезно, например, для того чтобы не забыть вовремя поздравить коллегу с днем рождения.</p> <p>Также можно ввести напоминание, связанное с каким-либо персональным событием или делом, в списке <a href="InformationRegister.НапоминанияПользователя.Form.МоиНапоминания/Help">Мои напоминания</a> по команде <strong>Создать</strong>. Такое напоминание может быть полезно, например, для того чтобы не забыть вовремя поздравить коллегу с днем рождения.</p>
<h3>Ввод напоминания</h3> <h3>Ввод напоминания</h3>
<ul><li>Откорректируйте или напишите текст напоминания. <ul><li>Откорректируйте или напишите текст напоминания.
</li> </li>
@@ -1,8 +1,10 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html;charset=utf-8" http-equiv="content-type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16421"></meta></head><body> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html;charset=utf-8" http-equiv="content-type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16421"></meta></head><body>
<p>Предназначен для вывода сработавших <a href="InformationRegister.НапоминанияПользователя.Form.Напоминание/Help">напоминаний</a>.</p> <p>Предназначена для вывода сработавших <a href="InformationRegister.НапоминанияПользователя.Form.Напоминание/Help">напоминаний</a>.</p>
<p>В указанное в напоминании время в программе открывается список <strong>Напоминания</strong>. В списке содержатся все вновь созданные и отложенные напоминания, у которых подошло время срабатывания. </p> <p>В указанное в напоминании время в программе открывается список <strong>Напоминания</strong>. В списке содержатся все вновь созданные и отложенные напоминания, у которых подошло время срабатывания. </p>
<p>По каждому напоминанию выводится его текст и время, насколько оно было просрочено. Если напоминание связано с датой какого-либо предмета, например, со сроком по задаче, то в напоминании указывается, сколько времени осталось до этого события. В списке можно:</p> <p>По каждому напоминанию выводится его текст и время, насколько оно было просрочено. Если напоминание связано с датой какого-либо предмета, например, со сроком по задаче, то в напоминании указывается, сколько времени осталось до этого события. В списке можно:</p>
<ul><li>Перейти к элементу справочника или другому объекту программы, с которым связано напоминание (с помощью кнопки <strong>Открыть</strong> или двойному щелчку мыши). Если напоминание не связано с объектом программы, то открывается само напоминание. <ul><li>Перейти к элементу справочника или другому объекту программы, с которым связано напоминание (с помощью кнопки <strong>Открыть</strong> или двойному щелчку мыши). Если напоминание не связано с объектом программы, то открывается само напоминание.
</li><li>С помощью кнопки <strong>Прекратить</strong> отменить выделенные в списке напоминания, удалив их из списка. Периодическое напоминание после нажатия на кнопку <strong>Прекратить</strong> продолжает действовать согласно настроенному расписанию. Полностью прекратить такое напоминание можно в <a href="InformationRegister.НапоминанияПользователя.Form.МоиНапоминания/Help">списке</a> <strong>Мои напоминания</strong>. </li>
</li><li>С помощью кнопки <strong>Отложить все</strong> напоминания в списке отложить на время, указанное в поле <strong>Напомнить через</strong>. Для заполнения поля выберите значение из списка, или с помощью клавиатуры, указав произвольное значение времени.</li></ul><h3>См. также:</h3> <li>С помощью кнопки <strong>Прекратить</strong> отменить выделенные в списке напоминания, удалив их из списка. Периодическое напоминание после нажатия на кнопку <strong>Прекратить</strong> продолжает действовать согласно настроенному расписанию. Полностью прекратить такое напоминание можно в <a href="InformationRegister.НапоминанияПользователя.Form.МоиНапоминания/Help">списке</a> <strong>Мои напоминания</strong>.
</li>
<li>С помощью кнопки <strong>Отложить все</strong> напоминания в списке отложить на время, указанное в поле <strong>Напомнить через</strong>. Для заполнения поля выберите значение из списка, или с помощью клавиатуры, указав произвольное значение времени.</li></ul><h3>См. также:</h3>
<ul><li><a href="v8help://frame/form_common">Работа с формами</a>.</li></ul></body></html> <ul><li><a href="v8help://frame/form_common">Работа с формами</a>.</li></ul></body></html>
@@ -2,10 +2,13 @@
<p>В программе можно вводить напоминания, указав время и предмет, по поводу которого в программе в указанное время будет выведен список напоминаний.</p> <p>В программе можно вводить напоминания, указав время и предмет, по поводу которого в программе в указанное время будет выведен список напоминаний.</p>
<p>Предметом напоминаний могут быть различные справочники, документы и другие объекты программы. Например, <a href="InformationRegister.НапоминанияПользователя.Form.Напоминание/Help">напоминание</a> можно ввести по конкретному партнеру, документу товародвижения и т.д., для того чтобы не забыть уточнить или дозаполнить какие-либо данные.</p> <p>Предметом напоминаний могут быть различные справочники, документы и другие объекты программы. Например, <a href="InformationRegister.НапоминанияПользователя.Form.Напоминание/Help">напоминание</a> можно ввести по конкретному партнеру, документу товародвижения и т.д., для того чтобы не забыть уточнить или дозаполнить какие-либо данные.</p>
<p>Открывается по кнопке <img src="CommonPicture.Органайзер"></img> <strong>Органайзер - Напомнить</strong> из различных объектов программы. При этом можно ввести только одно напоминание для одного объекта.</p> <p>Открывается по кнопке <img src="CommonPicture.Органайзер"></img> <strong>Органайзер - Напомнить</strong> из различных объектов программы. При этом можно ввести только одно напоминание для одного объекта.</p>
<p>Также можно ввести напоминание, связанное с каким-либо персональным событием или делом, в списке <a href="InformationRegister.НапоминанияПользователя.Form.МоиНапоминания/Help">Мои напоминания</a> по команде <strong>Создать</strong>.Такое напоминание может быть полезно, например, для того чтобы не забыть вовремя поздравить коллегу с днем рождения. Совместно с <a href="Catalog.Заметки/Help">заметками</a> напоминания хорошо подходят как электронная замена "стикеров на краях монитора".</p> <p>Также можно ввести напоминание, связанное с каким-либо персональным событием или делом, в списке <a href="InformationRegister.НапоминанияПользователя.Form.МоиНапоминания/Help">Мои напоминания</a> по команде <strong>Создать</strong>. Такое напоминание может быть полезно, например, для того чтобы не забыть вовремя поздравить коллегу с днем рождения. Совместно с <a href="Catalog.Заметки/Help">заметками</a> напоминания хорошо подходят как электронная замена "стикеров на краях монитора".</p>
<h3>Список напоминаний</h3> <h3>Список напоминаний</h3>
<ul><li>В указанное в напоминании время в программе открывается список <strong>Напоминания</strong>. В списке содержатся все вновь созданные и отложенные напоминания, у которых подошло время срабатывания. По каждому напоминанию выводится его текст и время, насколько оно было просрочено. Если напоминание связано с датой какого-либо предмета (например, со сроком по задаче), то в напоминании указывается, сколько времени осталось до этого события. <ul><li>В указанное в напоминании время в программе открывается список <strong>Напоминания</strong>. В списке содержатся все вновь созданные и отложенные напоминания, у которых подошло время срабатывания. По каждому напоминанию выводится его текст и время, насколько оно было просрочено. Если напоминание связано с датой какого-либо предмета (например, со сроком по задаче), то в напоминании указывается, сколько времени осталось до этого события.
</li><li>Из списка можно перейти к элементу справочника или документу, с которым связано напоминание (по команде <strong>Открыть</strong> или двойному щелчку мыши). Если напоминание не связано с объектом программы, то открывается само напоминание. </li>
</li><li>С помощью кнопки <strong>Прекратить</strong> можно отменить выделенные в списке напоминания, удалив их из списка. Периодическое напоминание после нажатия на кнопку <strong>Прекратить</strong> продолжает действовать согласно настроенному расписанию. Полностью прекратить такое напоминание можно в списке <a href="InformationRegister.НапоминанияПользователя.Form.МоиНапоминания/Help">Мои напоминания</a>. <li>Из списка можно перейти к элементу справочника или документу, с которым связано напоминание (по команде <strong>Открыть</strong> или двойному щелчку мыши). Если напоминание не связано с объектом программы, то открывается само напоминание.
</li><li>По команде <strong>Отложить все</strong> напоминания в списке можно отложить на время, указанное в поле <strong>Напомнить через</strong>. Поле <strong>Напомнить через</strong> можно заполнить, выбрав значение из списка, или с помощью клавиатуры, указав произвольное значение времени.</li></ul><h3>См. также:</h3> </li>
<li>С помощью кнопки <strong>Прекратить</strong> можно отменить выделенные в списке напоминания, удалив их из списка. Периодическое напоминание после нажатия на кнопку <strong>Прекратить</strong> продолжает действовать согласно настроенному расписанию. Полностью прекратить такое напоминание можно в списке <a href="InformationRegister.НапоминанияПользователя.Form.МоиНапоминания/Help">Мои напоминания</a>.
</li>
<li>По команде <strong>Отложить все</strong> напоминания в списке можно отложить на время, указанное в поле <strong>Напомнить через</strong>. Поле <strong>Напомнить через</strong> можно заполнить, выбрав значение из списка, или с помощью клавиатуры, указав произвольное значение времени.</li></ul><h3>См. также:</h3>
<ul><li><a href="v8help://frame/form_common">Работа с формами</a>.</li></ul></body></html> <ul><li><a href="v8help://frame/form_common">Работа с формами</a>.</li></ul></body></html>
@@ -433,19 +433,26 @@
<autoMaxCardHeight>true</autoMaxCardHeight> <autoMaxCardHeight>true</autoMaxCardHeight>
</items> </items>
<items xsi:type="form:FormGroup"> <items xsi:type="form:FormGroup">
<name>ОчисткаНенужныхФайлов</name> <name>СтраницыИтогиУдаляемыеФайлы</name>
<id>57</id> <id>114</id>
<items xsi:type="form:Button"> <items xsi:type="form:FormGroup">
<name>ОбъемНенужныхФайлов</name> <name>СтраницаПодсчетИтоговУдаляемыеФайлы</name>
<id>74</id> <id>116</id>
<items xsi:type="form:Decoration">
<name>КартинкаРасчетИтогов</name>
<id>120</id>
<title>
<key>ru</key>
<value>Картинка расчет итогов</value>
</title>
<visible>true</visible> <visible>true</visible>
<enabled>true</enabled> <enabled>true</enabled>
<userVisible> <userVisible>
<common>true</common> <common>true</common>
</userVisible> </userVisible>
<extendedTooltip> <extendedTooltip>
<name>ОбъемНенужныхФайловРасширеннаяПодсказка</name> <name>КартинкаРасчетИтоговРасширеннаяПодсказка</name>
<id>75</id> <id>122</id>
<type>Label</type> <type>Label</type>
<autoMaxWidth>true</autoMaxWidth> <autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight> <autoMaxHeight>true</autoMaxHeight>
@@ -453,15 +460,90 @@
<horizontalAlign>Left</horizontalAlign> <horizontalAlign>Left</horizontalAlign>
</extInfo> </extInfo>
</extendedTooltip> </extendedTooltip>
<type>Hyperlink</type> <contextMenu>
<commandName>Form.Command.ОбъемНенужныхФайлов</commandName> <name>КартинкаРасчетИтоговКонтекстноеМеню</name>
<buttonImportance>Normal</buttonImportance> <id>121</id>
<representation>Auto</representation> <autoFill>true</autoFill>
</contextMenu>
<autoMaxWidth>true</autoMaxWidth> <autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight> <autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea> <extInfo xsi:type="form:PictureDecorationExtInfo">
<representationInContextMenu>Auto</representationInContextMenu> <picture xsi:type="core:PictureRef">
<picture>CommonPicture.НезавершившаясяПроверка</picture>
</picture>
<fileDragMode>AsFileRef</fileDragMode>
</extInfo>
</items> </items>
<items xsi:type="form:Decoration">
<name>НадписьРасчетовИтогов</name>
<id>125</id>
<title>
<key>ru</key>
<value>Вычисляется размер файлов для удаления...</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>НадписьРасчетовИтоговРасширеннаяПодсказка</name>
<id>127</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>НадписьРасчетовИтоговКонтекстноеМеню</name>
<id>126</id>
<autoFill>true</autoFill>
</contextMenu>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Страница подсчет итогов удаляемые файлы</value>
</title>
<extendedTooltip>
<name>СтраницаПодсчетИтоговУдаляемыеФайлыРасширеннаяПодсказка</name>
<id>117</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>Page</type>
<extInfo xsi:type="form:PageGroupExtInfo">
<group>AlwaysHorizontal</group>
<verticalAlign>Center</verticalAlign>
<showTitle>auto</showTitle>
<backColor xsi:type="core:ColorRef">
<color>Style.ИтогиФонГруппы</color>
</backColor>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>СтраницаОтображениеИтоговУдаляемыеФайлы</name>
<id>118</id>
<items xsi:type="form:FormGroup">
<name>ОчисткаНенужныхФайлов</name>
<id>57</id>
<items xsi:type="form:FormGroup"> <items xsi:type="form:FormGroup">
<name>ОчисткаФайлов</name> <name>ОчисткаФайлов</name>
<id>90</id> <id>90</id>
@@ -592,6 +674,7 @@
<key>ru</key> <key>ru</key>
<value>Очистка файлов</value> <value>Очистка файлов</value>
</title> </title>
<horizontalStretch>true</horizontalStretch>
<extendedTooltip> <extendedTooltip>
<name>ОчисткаФайловРасширеннаяПодсказка</name> <name>ОчисткаФайловРасширеннаяПодсказка</name>
<id>91</id> <id>91</id>
@@ -607,6 +690,92 @@
<currentRowUse>Auto</currentRowUse> <currentRowUse>Auto</currentRowUse>
</extInfo> </extInfo>
</items> </items>
<items xsi:type="form:FormGroup">
<name>ИнформацияОРазмереФайлов</name>
<id>130</id>
<items xsi:type="form:Button">
<name>ОбъемУдаленныхФайлов</name>
<id>128</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ОбъемУдаленныхФайловРасширеннаяПодсказка</name>
<id>129</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>Hyperlink</type>
<commandName>Form.Command.ОбъемУдаленныхФайлов</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<items xsi:type="form:Button">
<name>ОбъемНенужныхФайлов</name>
<id>74</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ОбъемНенужныхФайловРасширеннаяПодсказка</name>
<id>75</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>Hyperlink</type>
<commandName>Form.Command.ОбъемНенужныхФайлов</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<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>131</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>Vertical</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<visible>true</visible> <visible>true</visible>
<enabled>true</enabled> <enabled>true</enabled>
<userVisible> <userVisible>
@@ -616,6 +785,7 @@
<key>ru</key> <key>ru</key>
<value>Очистка ненужных файлов</value> <value>Очистка ненужных файлов</value>
</title> </title>
<horizontalStretch>true</horizontalStretch>
<extendedTooltip> <extendedTooltip>
<name>ОчисткаНенужныхФайловРасширеннаяПодсказка</name> <name>ОчисткаНенужныхФайловРасширеннаяПодсказка</name>
<id>58</id> <id>58</id>
@@ -638,6 +808,60 @@
<currentRowUse>Auto</currentRowUse> <currentRowUse>Auto</currentRowUse>
</extInfo> </extInfo>
</items> </items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Страница отображение итогов удаляемые файлы</value>
</title>
<extendedTooltip>
<name>СтраницаОтображениеИтоговУдаляемыеФайлыРасширеннаяПодсказка</name>
<id>119</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>Page</type>
<extInfo xsi:type="form:PageGroupExtInfo">
<group>Vertical</group>
<showTitle>auto</showTitle>
<backColor xsi:type="core:ColorRef">
<color>Style.ИтогиФонГруппы</color>
</backColor>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Страницы итоги удаляемые файлы</value>
</title>
<groupVerticalAlign>Center</groupVerticalAlign>
<extendedTooltip>
<name>СтраницыИтогиУдаляемыеФайлыРасширеннаяПодсказка</name>
<id>115</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>Pages</type>
<extInfo xsi:type="form:PagesGroupExtInfo">
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormGroup"> <items xsi:type="form:FormGroup">
<name>ОчисткаПоРасписанию</name> <name>ОчисткаПоРасписанию</name>
<id>62</id> <id>62</id>
@@ -655,7 +879,7 @@
<dataPath xsi:type="form:DataPath"> <dataPath xsi:type="form:DataPath">
<segments>АвтоматическиОчищатьНенужныеФайлы</segments> <segments>АвтоматическиОчищатьНенужныеФайлы</segments>
</dataPath> </dataPath>
<titleLocation>Right</titleLocation> <titleLocation>None</titleLocation>
<handlers> <handlers>
<event>OnChange</event> <event>OnChange</event>
<name>АвтоматическиОчищатьНенужныеФайлыПриИзменении</name> <name>АвтоматическиОчищатьНенужныеФайлыПриИзменении</name>
@@ -676,12 +900,237 @@
<autoFill>true</autoFill> <autoFill>true</autoFill>
</contextMenu> </contextMenu>
<type>CheckBoxField</type> <type>CheckBoxField</type>
<readOnly>true</readOnly>
<editMode>Enter</editMode> <editMode>Enter</editMode>
<showInHeader>true</showInHeader> <showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign> <headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter> <showInFooter>true</showInFooter>
<extInfo xsi:type="form:CheckBoxFieldExtInfo"/> <extInfo xsi:type="form:CheckBoxFieldExtInfo"/>
</items> </items>
<items xsi:type="form:FormGroup">
<name>НастройкаОчисткиФайла</name>
<id>132</id>
<items xsi:type="form:FormField">
<name>РежимОчисткиФайловНеОчищать</name>
<id>134</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>РежимОчисткиФайлов</segments>
</dataPath>
<titleLocation>None</titleLocation>
<handlers>
<event>OnChange</event>
<name>РежимОчисткиФайловПриИзменении</name>
</handlers>
<extendedTooltip>
<name>РежимОчисткиФайловНеОчищатьРасширеннаяПодсказка</name>
<id>136</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>РежимОчисткиФайловНеОчищатьКонтекстноеМеню</name>
<id>135</id>
<autoFill>true</autoFill>
</contextMenu>
<type>RadioButtonField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:RadioButtonsFieldExtInfo">
<radioButtonsType>RadioButtons</radioButtonsType>
<choiceList>
<presentation>
<key>ru</key>
<value>Не очищать</value>
</presentation>
<value xsi:type="core:ReferenceValue">
<value>Enum.РежимыОчисткиФайлов.EnumValue.НеОчищать</value>
</value>
</choiceList>
<orientation>Vertical</orientation>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>РежимОчисткиФайловОчищатьУдаленные</name>
<id>146</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>РежимОчисткиФайлов</segments>
</dataPath>
<titleLocation>None</titleLocation>
<handlers>
<event>OnChange</event>
<name>РежимОчисткиФайловПриИзменении</name>
</handlers>
<extendedTooltip>
<name>РежимОчисткиФайловОчищатьУдаленныеРасширеннаяПодсказка</name>
<id>148</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>РежимОчисткиФайловОчищатьУдаленныеКонтекстноеМеню</name>
<id>147</id>
<autoFill>true</autoFill>
</contextMenu>
<type>RadioButtonField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:RadioButtonsFieldExtInfo">
<radioButtonsType>RadioButtons</radioButtonsType>
<choiceList>
<presentation>
<key>ru</key>
<value>Очищать удаленные</value>
</presentation>
<value xsi:type="core:ReferenceValue">
<value>Enum.РежимыОчисткиФайлов.EnumValue.ОчищатьУдаленные</value>
</value>
</choiceList>
<orientation>Vertical</orientation>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>РежимОчисткиФайловОчищатьУдаленныеИНенужные</name>
<id>143</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>РежимОчисткиФайлов</segments>
</dataPath>
<titleLocation>None</titleLocation>
<handlers>
<event>OnChange</event>
<name>РежимОчисткиФайловПриИзменении</name>
</handlers>
<extendedTooltip>
<name>РежимОчисткиФайловОчищатьУдаленныеИНенужныеРасширеннаяПодсказка</name>
<id>145</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>РежимОчисткиФайловОчищатьУдаленныеИНенужныеКонтекстноеМеню</name>
<id>144</id>
<autoFill>true</autoFill>
</contextMenu>
<type>RadioButtonField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:RadioButtonsFieldExtInfo">
<radioButtonsType>RadioButtons</radioButtonsType>
<choiceList>
<presentation>
<key>ru</key>
<value>Очищать удаленные и ненужные</value>
</presentation>
<value xsi:type="core:ReferenceValue">
<value>Enum.РежимыОчисткиФайлов.EnumValue.ОчищатьУдаленныеИНенужные</value>
</value>
</choiceList>
<orientation>Vertical</orientation>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Настройка</value>
</title>
<titleTextColor xsi:type="core:ColorRef">
<color>Style.ГиперссылкаЦвет</color>
</titleTextColor>
<extendedTooltip>
<name>НастройкаОчисткиФайлаРасширеннаяПодсказка</name>
<id>133</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>Vertical</group>
<behavior>PopUp</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<showTitle>auto</showTitle>
<throughAlign>Auto</throughAlign>
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:Decoration">
<name>НадписьНастройкаОчистки</name>
<id>137</id>
<title>
<key>ru</key>
<value>Автоматически очищать удаленные файлы</value>
</title>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>НадписьНастройкаОчисткиРасширеннаяПодсказка</name>
<id>139</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>НадписьНастройкаОчисткиКонтекстноеМеню</name>
<id>138</id>
<autoFill>true</autoFill>
</contextMenu>
<formatted>true</formatted>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<handlers>
<event>URLProcessing</event>
<name>НадписьНастройкаОчисткиОбработкаНавигационнойСсылки</name>
</handlers>
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</items>
<items xsi:type="form:Button"> <items xsi:type="form:Button">
<name>НастроитьРасписание</name> <name>НастроитьРасписание</name>
<id>76</id> <id>76</id>
@@ -1157,6 +1606,10 @@
<horizontalAlign>Left</horizontalAlign> <horizontalAlign>Left</horizontalAlign>
<autoFill>true</autoFill> <autoFill>true</autoFill>
</autoCommandBar> </autoCommandBar>
<handlers>
<event>OnOpen</event>
<name>ПриОткрытии</name>
</handlers>
<handlers> <handlers>
<event>OnCreateAtServer</event> <event>OnCreateAtServer</event>
<name>ПриСозданииНаСервере</name> <name>ПриСозданииНаСервере</name>
@@ -1416,6 +1869,47 @@
<common>true</common> <common>true</common>
</edit> </edit>
</attributes> </attributes>
<attributes>
<name>ОписаниеРасчетаИтогов</name>
<id>9</id>
<valueType/>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<attributes>
<name>РежимОчисткиФайлов</name>
<title>
<key>ru</key>
<value>Режим очистки файлов</value>
</title>
<id>10</id>
<valueType>
<types>EnumRef.РежимыОчисткиФайлов</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<attributes>
<name>ИспользоватьТома</name>
<id>11</id>
<valueType>
<types>Boolean</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<formCommands> <formCommands>
<name>УстановитьДействиеОчиститьФайлыИВерсии</name> <name>УстановитьДействиеОчиститьФайлыИВерсии</name>
<title> <title>
@@ -1636,6 +2130,24 @@
<currentRowUse>DontUse</currentRowUse> <currentRowUse>DontUse</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse> <selectedRowsUse>Auto</selectedRowsUse>
</formCommands> </formCommands>
<formCommands>
<name>ОбъемУдаленныхФайлов</name>
<title>
<key>ru</key>
<value>Объем удаленных файлов</value>
</title>
<id>12</id>
<use>
<common>true</common>
</use>
<action xsi:type="form:FormCommandHandlerContainer">
<handler>
<name>ОбъемУдаленныхФайлов</name>
</handler>
</action>
<currentRowUse>Auto</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</formCommands>
<commandInterface> <commandInterface>
<navigationPanel/> <navigationPanel/>
<commandBar/> <commandBar/>
@@ -28,6 +28,25 @@
Элементы.Расписание.Видимость = Ложь; Элементы.Расписание.Видимость = Ложь;
КонецЕсли; КонецЕсли;
Элементы.СтраницыИтогиУдаляемыеФайлы.ТекущаяСтраница = Элементы.СтраницаПодсчетИтоговУдаляемыеФайлы;
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор);
ОписаниеРасчетаИтогов = ДлительныеОперации.ВыполнитьФункцию(ПараметрыВыполнения, "РаботаСФайламиСлужебный.СведенияОбОчищаемыхФайлах");
РежимОчисткиФайлов = РаботаСФайламиСлужебный.РежимОчисткиФайлов();
НастроитьРежимОчисткиФайлов();
ОтобразитьИзмененияРежимОчисткиФайлов(ЭтотОбъект);
ИспользоватьТома = РаботаСФайламиВТомахСлужебный.ХранитьФайлыВТомахНаДиске();
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Обработчик = Новый ОписаниеОповещения("ПриЗавершенииРасчетаИтогов", ЭтотОбъект);
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
ПараметрыОжидания.ВыводитьОкноОжидания = Ложь;
ПараметрыОжидания.ВыводитьПрогрессВыполнения = Ложь;
ДлительныеОперацииКлиент.ОжидатьЗавершение(ОписаниеРасчетаИтогов, Обработчик, ПараметрыОжидания);
КонецПроцедуры КонецПроцедуры
&НаКлиенте &НаКлиенте
@@ -39,6 +58,21 @@
#КонецОбласти #КонецОбласти
#Область ОбработчикиСобытийЭлементовФормы
&НаКлиенте
Процедура РежимОчисткиФайловПриИзменении(Элемент)
ОтобразитьИзмененияРежимОчисткиФайлов(ЭтотОбъект);
РежимОчисткиФайловПриИзмененииСервер();
КонецПроцедуры
&НаСервере
Процедура РежимОчисткиФайловПриИзмененииСервер()
РаботаСФайламиСлужебный.УстановитьРежимОчисткиФайлов(РежимОчисткиФайлов);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыДеревоОбъектовМетаданных #Область ОбработчикиСобытийЭлементовТаблицыФормыДеревоОбъектовМетаданных
&НаКлиенте &НаКлиенте
@@ -247,10 +281,84 @@
ПодключитьОбработчикОжидания("ПроверитьВыполнениеФоновогоЗадания", 2, Истина); ПодключитьОбработчикОжидания("ПроверитьВыполнениеФоновогоЗадания", 2, Истина);
КонецПроцедуры КонецПроцедуры
&НаКлиенте
Процедура ОбъемУдаленныхФайлов(Команда)
ОткрытьФорму("Справочник.ТомаХраненияФайлов.Форма.ФормаСписка");
КонецПроцедуры
#КонецОбласти #КонецОбласти
#Область СлужебныеПроцедурыИФункции #Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура НастроитьРежимОчисткиФайлов()
Элементы.ОбъемУдаленныхФайлов.Видимость = ИспользоватьТома;
Элементы.РежимОчисткиФайловОчищатьУдаленные.Видимость = ИспользоватьТома;
Элементы.РежимОчисткиФайловОчищатьУдаленныеИНенужные.СписокВыбора[0].Представление = ?(ИспользоватьТома,
НСтр("ru='Очищать удаленные и ненужные'"),
НСтр("ru='Очищать ненужные'"));
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ОтобразитьИзмененияРежимОчисткиФайлов(Форма)
Если Форма.РежимОчисткиФайлов = ПредопределенноеЗначение("Перечисление.РежимыОчисткиФайлов.НеОчищать") Тогда
Заголовок = НСтр("ru='Автоматически не очищать файлы'");
Форма.АвтоматическиОчищатьНенужныеФайлы = Ложь;
ИначеЕсли Форма.РежимОчисткиФайлов = ПредопределенноеЗначение("Перечисление.РежимыОчисткиФайлов.ОчищатьУдаленные") Тогда
Заголовок = НСтр("ru='Автоматически очищать удаленные файлы'");
Форма.АвтоматическиОчищатьНенужныеФайлы = Истина;
ИначеЕсли Форма.РежимОчисткиФайлов = ПредопределенноеЗначение("Перечисление.РежимыОчисткиФайлов.ОчищатьУдаленныеИНенужные") Тогда
Заголовок = ?(Форма.ИспользоватьТома,
НСтр("ru='Автоматически очищать удаленные и ненужные файлы'"),
НСтр("ru='Автоматически очищать ненужные файлы'"));
Форма.АвтоматическиОчищатьНенужныеФайлы = Истина;
Иначе
ВызватьИсключение НСтр("ru='Неизвестный режим очистки файлов.'");
КонецЕсли;
Форма.Элементы.НастройкаОчисткиФайла.Заголовок = Заголовок;
Форма.Элементы.Расписание.Доступность = Форма.АвтоматическиОчищатьНенужныеФайлы;
Форма.Элементы.НастроитьРасписание.Доступность = Форма.АвтоматическиОчищатьНенужныеФайлы;
Форма.Элементы.НастройкаОчисткиФайла.Скрыть();
КонецПроцедуры
&НаКлиенте
Процедура НадписьНастройкаОчисткиОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Элементы.НастройкаОчисткиФайла.Показать();
КонецПроцедуры
&НаКлиенте
Процедура ПриЗавершенииРасчетаИтогов(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
Если Результат.Статус = "Выполнено" Тогда
Итоги = ПолучитьИзВременногоХранилища(Результат.АдресРезультата); // см. РаботаСФайламиСлужебный.СведенияОбОчищаемыхФайлах
ОтобразитьИтоги(Итоги.ОбъемУдаляемыхФайлов, Итоги.ОбъемНенужныхФайлов);
Иначе
ОтобразитьИтоги(0,0);
ТекстПредупреждения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='Возникла ошибка при подсчете объема удаляемых файлов:
|%1'"),
Результат.КраткоеПредставлениеОшибки);
ПоказатьПредупреждение(, ТекстПредупреждения);
КонецЕсли;
Элементы.СтраницыИтогиУдаляемыеФайлы.ТекущаяСтраница = Элементы.СтраницаОтображениеИтоговУдаляемыеФайлы;
КонецПроцедуры
&НаКлиенте
Процедура ОтобразитьИтоги(ОбъемУдаляемыхФайлов, ОбъемНенужныхФайлов)
Элементы.ОбъемУдаленныхФайлов.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='Удаляемые файлы: %1 Мб'"),
Формат(ОбъемУдаляемыхФайлов, "ЧДЦ=2; ЧН=0;"));
Элементы.ОбъемНенужныхФайлов.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='Ненужные файлы: %1 Мб'"),
Формат(ОбъемНенужныхФайлов, "ЧДЦ=2; ЧН=0;"));
КонецПроцедуры
&НаСервере &НаСервере
Функция ПутьФормыВыбора(ВладелецФайла) Функция ПутьФормыВыбора(ВладелецФайла)
@@ -653,7 +761,7 @@
Иначе Иначе
ПараметрыЗадания = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор); ПараметрыЗадания = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор);
ПараметрыЗадания.НаименованиеФоновогоЗадания = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Запуск вручную: %1'"), РегламентноеЗаданиеМетаданные.Синоним); ПараметрыЗадания.НаименованиеФоновогоЗадания = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Запуск вручную: %1'"), РегламентноеЗаданиеМетаданные.Синоним);
РезультатЗадания = ДлительныеОперации.ВыполнитьВФоне(РегламентноеЗаданиеМетаданные.ИмяМетода, Новый Структура, ПараметрыЗадания); РезультатЗадания = ДлительныеОперации.ВыполнитьВФоне(РегламентноеЗаданиеМетаданные.ИмяМетода, Новый Структура("РучнойЗапуск", Истина), ПараметрыЗадания);
Если ЗначениеЗаполнено(ИдентификаторФоновогоЗадания) Тогда Если ЗначениеЗаполнено(ИдентификаторФоновогоЗадания) Тогда
ИдентификаторФоновогоЗадания = РезультатЗадания.ИдентификаторЗадания; ИдентификаторФоновогоЗадания = РезультатЗадания.ИдентификаторЗадания;
КонецЕсли; КонецЕсли;
@@ -308,12 +308,16 @@
Процедура ЗаполнитьПервоначальныйСписокПечатныхФорм() Процедура ЗаполнитьПервоначальныйСписокПечатныхФорм()
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Печать") Тогда Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Печать") Тогда
МодульУправлениеПечатью = ОбщегоНазначения.ОбщийМодуль("УправлениеПечатью");
Иначе
Возврат;
КонецЕсли;
ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ОбщегоНазначения.ИмяТаблицыПоСсылке(Запись.Владелец)); ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ОбщегоНазначения.ИмяТаблицыПоСсылке(Запись.Владелец));
СписокОбъектов = Новый Массив; СписокОбъектов = Новый Массив;
СписокОбъектов.Добавить(ОбъектМетаданных); СписокОбъектов.Добавить(ОбъектМетаданных);
КоллекцияПечатныхФорм = УправлениеПечатью.КомандыПечатиОбъекта(ОбъектМетаданных); КоллекцияПечатныхФорм = МодульУправлениеПечатью.КомандыПечатиОбъектаДоступныеДляВложений(ОбъектМетаданных);
СписокПечатныхФорм = Новый СписокЗначений; СписокПечатныхФорм = Новый СписокЗначений;
Для Каждого ПечатнаяФорма Из КоллекцияПечатныхФорм Цикл Для Каждого ПечатнаяФорма Из КоллекцияПечатныхФорм Цикл
СписокПечатныхФорм.Добавить(ПечатнаяФорма.Идентификатор, ПечатнаяФорма.Представление); СписокПечатныхФорм.Добавить(ПечатнаяФорма.Идентификатор, ПечатнаяФорма.Представление);
@@ -324,17 +328,17 @@
ОбъектМетаданных = ОбщегоНазначения.ИмяТаблицыПоСсылке(Запись.Владелец); ОбъектМетаданных = ОбщегоНазначения.ИмяТаблицыПоСсылке(Запись.Владелец);
Если ПравоДоступа("Чтение",Метаданные.Справочники.ДополнительныеОтчетыИОбработки) Тогда Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки") Тогда
ЗапросТаблицаКоманд = ДополнительныеОтчетыИОбработки.НовыйЗапросПоДоступнымКомандам(Перечисления.ВидыДополнительныхОтчетовИОбработок.ПечатнаяФорма,ОбъектМетаданных, Истина); МодульДополнительныеОтчетыИОбработки = ОбщегоНазначения.ОбщийМодуль("ДополнительныеОтчетыИОбработки");
ЗапросТаблицаКоманд = МодульДополнительныеОтчетыИОбработки.НовыйЗапросПоДоступнымКомандам(
Перечисления["ВидыДополнительныхОтчетовИОбработок"].ПечатнаяФорма,ОбъектМетаданных, Истина);
ТаблицаКоманд = ЗапросТаблицаКоманд.Выполнить().Выгрузить(); ТаблицаКоманд = ЗапросТаблицаКоманд.Выполнить().Выгрузить();
Иначе
ТаблицаКоманд = Новый ТаблицаЗначений;
КонецЕсли; КонецЕсли;
ТЧ = УчетОригиналовПервичныхДокументов.ТабличнаяЧастьМногосотрудниковаДокумента(Запись.Владелец);
Если ТЧ <> "" Тогда
Для Каждого Сотрудник Из Запись.Владелец[ТЧ] Цикл
МодульФизическиеЛицаКлиентСервер = ОбщегоНазначения.ОбщийМодуль("ФизическиеЛицаКлиентСервер"); МодульФизическиеЛицаКлиентСервер = ОбщегоНазначения.ОбщийМодуль("ФизическиеЛицаКлиентСервер");
ТабличнаяЧасть = УчетОригиналовПервичныхДокументов.ТабличнаяЧастьМногосотрудниковаДокумента(Запись.Владелец);
Если ТабличнаяЧасть <> "" Тогда
Для Каждого Сотрудник Из Запись.Владелец[ТабличнаяЧасть] Цикл
Если МодульФизическиеЛицаКлиентСервер <> Неопределено Тогда Если МодульФизическиеЛицаКлиентСервер <> Неопределено Тогда
ФИО = МодульФизическиеЛицаКлиентСервер.ФамилияИнициалы(Сотрудник.Сотрудник.Наименование); ФИО = МодульФизическиеЛицаКлиентСервер.ФамилияИнициалы(Сотрудник.Сотрудник.Наименование);
Иначе Иначе
@@ -351,8 +355,7 @@
КонецЦикла; КонецЦикла;
КонецЦикла; КонецЦикла;
Если ТаблицаКоманд.Количество() > 0 Тогда Если ТаблицаКоманд.Количество() > 0 Тогда
Для Каждого Сотрудник Из Запись.Владелец[ТЧ] Цикл Для Каждого Сотрудник Из Запись.Владелец[ТабличнаяЧасть] Цикл
МодульФизическиеЛицаКлиентСервер = ОбщегоНазначения.ОбщийМодуль("ФизическиеЛицаКлиентСервер");
Если МодульФизическиеЛицаКлиентСервер <> Неопределено Тогда Если МодульФизическиеЛицаКлиентСервер <> Неопределено Тогда
ФИО = МодульФизическиеЛицаКлиентСервер.ФамилияИнициалы(Сотрудник.Сотрудник.Наименование); ФИО = МодульФизическиеЛицаКлиентСервер.ФамилияИнициалы(Сотрудник.Сотрудник.Наименование);
Иначе Иначе
@@ -402,16 +405,11 @@
КомплектПечатныхФорм.Удалить(НеНужнаяСтрока); КомплектПечатныхФорм.Удалить(НеНужнаяСтрока);
КонецЦикла; КонецЦикла;
НенужныеСтроки = КомплектПечатныхФорм.НайтиСтроки(Новый Структура("Представление","Комплект документов с настройкой...")); НенужныеСтроки = КомплектПечатныхФорм.НайтиСтроки(Новый Структура("Представление","Комплект документов с настройкой..."));
Для Каждого НеНужнаяСтрока Из НенужныеСтроки Цикл Для Каждого НеНужнаяСтрока Из НенужныеСтроки Цикл
КомплектПечатныхФорм.Удалить(НеНужнаяСтрока); КомплектПечатныхФорм.Удалить(НеНужнаяСтрока);
КонецЦикла; КонецЦикла;
Иначе
Возврат;
КонецЕсли;
КонецПроцедуры КонецПроцедуры
&НаСервере &НаСервере
@@ -34,4 +34,68 @@
#КонецОбласти #КонецОбласти
#Область СлужебныеПроцедурыИФункции
// Формирует таблицу ненужных файлов.
//
// Возвращаемое значение:
// ТаблицаЗначений:
// * ВладелецФайла - ОпределяемыйТип.ВладелецФайлов
// * ОбъемНенужныхФайлов - Число
//
Функция ТаблицаНенужныхФайлов() Экспорт
НастройкиОчистки = РегистрыСведений.НастройкиОчисткиФайлов.ТекущиеНастройкиОчистки();
ТаблицаНенужныхФайлов = Новый ТаблицаЗначений;
ТаблицаНенужныхФайлов.Колонки.Добавить("ВладелецФайла");
ТаблицаНенужныхФайлов.Колонки.Добавить("ОбъемНенужныхФайлов", Новый ОписаниеТипов("Число"));
НастройкиОчисткиФайлов = НастройкиОчистки.НайтиСтроки(Новый Структура("ЭтоНастройкаДляЭлементаСправочника", Ложь));
Для Каждого Настройка Из НастройкиОчисткиФайлов Цикл
МассивИсключений = Новый Массив;
ДетализированныеНастройки = НастройкиОчистки.НайтиСтроки(Новый Структура(
"ИдентификаторВладельца, ЭтоНастройкаДляЭлементаСправочника",
Настройка.ВладелецФайла,
Истина));
Если ДетализированныеНастройки.Количество() > 0 Тогда
Для Каждого ЭлементИсключение Из ДетализированныеНастройки Цикл
МассивИсключений.Добавить(ЭлементИсключение.ВладелецФайла);
ДополнитьТаблицуНенужныхФайлов(ТаблицаНенужныхФайлов, ЭлементИсключение, МассивИсключений);
КонецЦикла;
КонецЕсли;
ДополнитьТаблицуНенужныхФайлов(ТаблицаНенужныхФайлов, Настройка, МассивИсключений);
КонецЦикла;
Возврат ТаблицаНенужныхФайлов;
КонецФункции
Процедура ДополнитьТаблицуНенужныхФайлов(ТаблицаНенужныхФайлов, НастройкаОчистки, МассивИсключений)
Если НастройкаОчистки.Действие = Перечисления.ВариантыОчисткиФайлов.НеОчищать Тогда
Возврат;
КонецЕсли;
Если МассивИсключений = Неопределено Тогда
МассивИсключений = Новый Массив;
КонецЕсли;
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ТаблицаЗначений = Новый ТаблицаЗначений;
ПроцессорВывода.УстановитьОбъект(ТаблицаЗначений);
НенужныеФайлы = РаботаСФайламиСлужебный.ВыбратьДанныеПоПравилу(НастройкаОчистки, МассивИсключений, ПроцессорВывода);
Для Каждого Стр Из НенужныеФайлы Цикл
НоваяСтрока = ТаблицаНенужныхФайлов.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Стр);
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#КонецЕсли #КонецЕсли
@@ -12,30 +12,7 @@
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
НастройкиОчистки = РегистрыСведений.НастройкиОчисткиФайлов.ТекущиеНастройкиОчистки(); ТаблицаНенужныхФайлов = Отчеты.ОбъемНенужныхФайлов.ТаблицаНенужныхФайлов();
ТаблицаНенужныхФайлов = Новый ТаблицаЗначений;
ТаблицаНенужныхФайлов.Колонки.Добавить("ВладелецФайла");
ТаблицаНенужныхФайлов.Колонки.Добавить("ОбъемНенужныхФайлов", Новый ОписаниеТипов("Число"));
НастройкиОчисткиФайлов = НастройкиОчистки.НайтиСтроки(Новый Структура("ЭтоНастройкаДляЭлементаСправочника", Ложь));
Для Каждого Настройка Из НастройкиОчисткиФайлов Цикл
МассивИсключений = Новый Массив;
ДетализированныеНастройки = НастройкиОчистки.НайтиСтроки(Новый Структура(
"ИдентификаторВладельца, ЭтоНастройкаДляЭлементаСправочника",
Настройка.ВладелецФайла,
Истина));
Если ДетализированныеНастройки.Количество() > 0 Тогда
Для Каждого ЭлементИсключение Из ДетализированныеНастройки Цикл
МассивИсключений.Добавить(ЭлементИсключение.ВладелецФайла);
ПолучитьОбъемНенужныхФайлов(ТаблицаНенужныхФайлов, ЭлементИсключение, , Истина);
КонецЦикла;
КонецЕсли;
ПолучитьОбъемНенужныхФайлов(ТаблицаНенужныхФайлов, Настройка, МассивИсключений, Ложь);
КонецЦикла;
СтандартнаяОбработка = Ложь; СтандартнаяОбработка = Ложь;
@@ -68,128 +45,6 @@
#Область СлужебныеПроцедурыИФункции #Область СлужебныеПроцедурыИФункции
// Параметры:
// ТаблицаНенужныхФайлов - ТаблицаЗначений:
// * ВладелецФайла - ЛюбаяСсылка
// * ОбъемНенужныхФайлов - Число
// НастройкаОчистки - СтрокаТаблицыЗначений:
// * Действие - ПеречислениеСсылка.ВариантыОчисткиФайлов
// МассивИсключений - Неопределено
// - Массив
// ЭтоНастройкаДляЭлементаСправочника - Булево
//
Процедура ПолучитьОбъемНенужныхФайлов(ТаблицаНенужныхФайлов, НастройкаОчистки, МассивИсключений = Неопределено, ЭтоНастройкаДляЭлементаСправочника = Ложь)
Если НастройкаОчистки.Действие = Перечисления.ВариантыОчисткиФайлов.НеОчищать Тогда
Возврат;
КонецЕсли;
Если МассивИсключений = Неопределено Тогда
МассивИсключений = Новый Массив;
КонецЕсли;
НенужныеФайлы = ВыбратьДанныеПоПравилу(НастройкаОчистки, МассивИсключений);
Для Каждого Стр Из НенужныеФайлы Цикл
НоваяСтрока = ТаблицаНенужныхФайлов.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Стр);
КонецЦикла;
КонецПроцедуры
Функция ВыбратьДанныеПоПравилу(НастройкаОчистки, МассивИсключений)
ВременныйКомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
ОчищатьПоПравилу = НастройкаОчистки.ПериодОчистки = Перечисления.ПериодОчисткиФайлов.ПоПравилу;
Если ОчищатьПоПравилу Тогда
НастройкиКомпоновщика = НастройкаОчистки.ПравилоОтбора.Получить();
Если НастройкиКомпоновщика <> Неопределено Тогда
ВременныйКомпоновщикНастроек.ЗагрузитьНастройки(НастройкиКомпоновщика);
КонецЕсли;
КонецЕсли;
ВременнаяСхемаКомпоновкиДанных = Новый СхемаКомпоновкиДанных;
ИсточникДанных = ВременнаяСхемаКомпоновкиДанных.ИсточникиДанных.Добавить();
ИсточникДанных.Имя = "ИсточникДанных1";
ИсточникДанных.ТипИсточникаДанных = "Local";
НаборДанных = ВременнаяСхемаКомпоновкиДанных.НаборыДанных.Добавить(Тип("НаборДанныхЗапросСхемыКомпоновкиДанных"));
НаборДанных.Имя = "НаборДанных1";
НаборДанных.ИсточникДанных = ИсточникДанных.Имя;
ВременнаяСхемаКомпоновкиДанных.ПоляИтога.Очистить();
Если НастройкаОчистки.ЭтоНастройкаДляЭлементаСправочника Тогда
ВладелецФайла = НастройкаОчистки.ИдентификаторВладельца;
ЭлементИсключение = НастройкаОчистки.ВладелецФайла;
Иначе
ВладелецФайла = НастройкаОчистки.ВладелецФайла;
ЭлементИсключение = Неопределено;
КонецЕсли;
ВременнаяСхемаКомпоновкиДанных.НаборыДанных[0].Запрос = РаботаСФайламиСлужебный.ТекстЗапросаДляОчисткиФайлов(
ВладелецФайла, НастройкаОчистки, МассивИсключений, ЭлементИсключение);
Структура = ВременныйКомпоновщикНастроек.Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
ВыбранноеПоле = Структура.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("ВладелецФайла");
ВыбранноеПоле = Структура.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("ОбъемНенужныхФайлов");
ВременныйКомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(ВременнаяСхемаКомпоновкиДанных));
Параметр = ВременныйКомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ТипВладельца");
Параметр.Значение = ТипЗнч(ВладелецФайла.ЗначениеПустойСсылки);
Параметр.Использование = Истина;
Если МассивИсключений.Количество() > 0 И Не НастройкаОчистки.ЭтоНастройкаДляЭлементаСправочника Тогда
Параметр = ВременныйКомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("МассивИсключений");
Параметр.Значение = МассивИсключений;
Параметр.Использование = Истина;
КонецЕсли;
ПараметрТекущаяДата = ВременныйКомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ТекущаяДата");
Если ПараметрТекущаяДата <> Неопределено Тогда
ПараметрТекущаяДата.Значение = ТекущаяДатаСеанса();
ПараметрТекущаяДата.Использование = Истина;
КонецЕсли;
Параметр = ВременныйКомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ПериодОчистки");
Если Параметр <> Неопределено Тогда
Если НастройкаОчистки.ПериодОчистки = Перечисления.ПериодОчисткиФайлов.СтаршеМесяца Тогда
ЗначениеПериодаОчистки = ДобавитьМесяц(НачалоДня(ТекущаяДатаСеанса()), -1);
ИначеЕсли НастройкаОчистки.ПериодОчистки = Перечисления.ПериодОчисткиФайлов.СтаршеГода Тогда
ЗначениеПериодаОчистки = ДобавитьМесяц(НачалоДня(ТекущаяДатаСеанса()), -12);
ИначеЕсли НастройкаОчистки.ПериодОчистки = Перечисления.ПериодОчисткиФайлов.СтаршеШестиМесяцев Тогда
ЗначениеПериодаОчистки = ДобавитьМесяц(НачалоДня(ТекущаяДатаСеанса()), -6);
КонецЕсли;
Параметр.Значение = ЗначениеПериодаОчистки;
Параметр.Использование = Истина;
КонецЕсли;
Если НастройкаОчистки.ЭтоНастройкаДляЭлементаСправочника Тогда
Параметр = ВременныйКомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ЭлементИсключение");
Параметр.Значение = ЭлементИсключение;
Параметр.Использование = Истина;
КонецЕсли;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ТаблицаЗначений = Новый ТаблицаЗначений;
МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(ВременнаяСхемаКомпоновкиДанных, ВременныйКомпоновщикНастроек.Настройки, , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных);
ПроцессорВывода.УстановитьОбъект(ТаблицаЗначений);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
Возврат ТаблицаЗначений;
КонецФункции
Функция ОбъемДанныхВсего() Функция ОбъемДанныхВсего()
УстановитьПривилегированныйРежим(Истина); УстановитьПривилегированныйРежим(Истина);
@@ -36,7 +36,7 @@
НоваяСтрока.Том = ПараметрТом.Значение; НоваяСтрока.Том = ПараметрТом.Значение;
КонецЦикла; КонецЦикла;
РаботаСФайламиВТомахСлужебный.ПроверитьЦелостностьФайлов(ТаблицаФайловНаДиске, ПараметрТом.Значение); РаботаСФайламиВТомахСлужебный.ЗаполнитьЛишниеФайлы(ТаблицаФайловНаДиске, ПараметрТом.Значение);
СтандартнаяОбработка = Ложь; СтандартнаяОбработка = Ложь;
@@ -423,7 +423,7 @@
<dcscor:value xsi:type="v8:LocalStringType"> <dcscor:value xsi:type="v8:LocalStringType">
<v8:item> <v8:item>
<v8:lang>ru</v8:lang> <v8:lang>ru</v8:lang>
<v8:content>Лишние файлы (есть на диске, но сведения о них отсутствуют)</v8:content> <v8:content>Удаленные файлы (есть на диске, но сведения о них отсутствуют)</v8:content>
</v8:item> </v8:item>
</dcscor:value> </dcscor:value>
</dcscor:item> </dcscor:item>
@@ -0,0 +1,2 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta http-equiv="content-type" content="text/html;charset=utf-8"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link></head><body>Выводит статистические данные о выполнении процедур отложенного обновления.
<div><br></div></body></html>
@@ -15,6 +15,11 @@
<defaultSettingsForm>CommonForm.ФормаНастроекОтчета</defaultSettingsForm> <defaultSettingsForm>CommonForm.ФормаНастроекОтчета</defaultSettingsForm>
<defaultVariantForm>CommonForm.ФормаВариантаОтчета</defaultVariantForm> <defaultVariantForm>CommonForm.ФормаВариантаОтчета</defaultVariantForm>
<variantsStorage>SettingsStorage.ХранилищеВариантовОтчетов</variantsStorage> <variantsStorage>SettingsStorage.ХранилищеВариантовОтчетов</variantsStorage>
<help>
<pages>
<lang>ru</lang>
</pages>
</help>
<templates uuid="07e81872-afac-4720-86b4-91e7bf4a2881"> <templates uuid="07e81872-afac-4720-86b4-91e7bf4a2881">
<name>ОсновнаяСхемаКомпоновкиДанных</name> <name>ОсновнаяСхемаКомпоновкиДанных</name>
<synonym> <synonym>
@@ -2,16 +2,24 @@
<p>Предназначен для просмотра и устранения выявленных проблем с документами, регистрами и любыми данными в программе, для просмотра результатов <a href="Catalog.ПравилаПроверкиУчета/Help">проверок ведения учета</a>.</p> <p>Предназначен для просмотра и устранения выявленных проблем с документами, регистрами и любыми данными в программе, для просмотра результатов <a href="Catalog.ПравилаПроверкиУчета/Help">проверок ведения учета</a>.</p>
<p>В отчете выводится:</p> <p>В отчете выводится:</p>
<ul><li><strong>Вид проверки</strong> - сведения о проверке и перечень проблемных объектов; <ul><li><strong>Вид проверки</strong> - сведения о проверке и перечень проблемных объектов;
</li><li>итоговая колонка.</li></ul><p>Сведения о проверке выделены цветом. В этой части выводятся:</p> </li>
<li>итоговая колонка.</li></ul><p>Сведения о проверке выделены цветом. В этой части выводятся:</p>
<ul><li>Наименование проблемы и ее важность; <ul><li>Наименование проблемы и ее важность;
</li><li>Возможные причины; </li>
</li><li>Рекомендации по исправлению; <li>Возможные причины;
</li><li>Решение - в некоторых проверках может быть предусмотрена ссылка, по которой можно перейти к автоматическому исправлению проблемы.</li></ul><p>Затем следует перечень обнаруженных в ходе этой проверки проблемных объектов программы, который состоит из колонок:</p> </li>
<li>Рекомендации по исправлению;
</li>
<li>Решение - в некоторых проверках может быть предусмотрена ссылка, по которой можно перейти к автоматическому исправлению проблемы.</li></ul><p>Затем следует перечень обнаруженных в ходе этой проверки проблемных объектов программы, который состоит из колонок:</p>
<ul><li>Данные о проблемном объекте; <ul><li>Данные о проблемном объекте;
</li><li>Обнаруженная проблема; </li>
</li><li>Дата проведения проверки.</li></ul><h3>Отбор по ответственным</h3> <li>Обнаруженная проблема;
<ul><li>Нажмите кнопку <strong>Настройки</strong>. </li>
</li><li>В окне <a href="CommonForm.ФормаНастроекОтчета/Help">Настройки</a> режиме <strong>Простой</strong> включите флажок <strong>Выводить ответственного</strong>. <li>Дата проведения проверки.</li></ul><h3>Отборы и настройки</h3>
</li><li>После этого проверенные объекты в отчете будут сгруппированы по ответственным, в специальных колонках по каждому ответственному выводится, сколько проблемных объектов обнаружено.</li></ul><h3>Просмотр объекта</h3> <ul><li>В шапке отчета предусмотрены быстрые отборы по периоду, правилу проверки, ответственному, важности проблемы. </li>
<li>Управлять отборами (добавить, включить, выключить) можно в шапке отчета и с помощью кнопки <img src="CommonPicture.Закрепить"></img>. </li>
<li>С помощью флажка <b>Выводить ответственного</b>:</li>
<ul><li>в отчете выводится колонка <b>Ответственный</b>; </li>
<li>в специальных колонках по каждому ответственному выводится, сколько проблемных объектов обнаружено.</li></ul><li>С помощью кнопки <b>Настройки</b> можно <a href="CommonForm.ФормаНастроекОтчета/Help">перейти</a> к более сложным отборам (предусмотрен расширенный режим).</li></ul><h3>Просмотр объекта</h3>
<ul><li>Дважды щелкните по объекту для перехода к просмотру. Можно исправить обнаруженные в ходе проверки проблемы.</li></ul><h3>См. также:</h3> <ul><li>Дважды щелкните по объекту для перехода к просмотру. Можно исправить обнаруженные в ходе проверки проблемы.</li></ul><h3>См. также:</h3>
<ul><li><a href="CommonForm.ФормаОтчета/Help">Работа с отчетом</a>.</li></ul></body></html> <ul><li><a href="CommonForm.ФормаОтчета/Help">Работа с отчетом</a>.</li></ul></body></html>
@@ -624,93 +624,6 @@
<value>true</value> <value>true</value>
</right> </right>
</object> </object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>Administration</name>
<value>true</value>
</right>
<right>
<name>DataAdministration</name>
<value>true</value>
</right>
<right>
<name>UpdateDataBaseConfiguration</name>
<value>true</value>
</right>
<right>
<name>ExclusiveMode</name>
<value>true</value>
</right>
<right>
<name>ActiveUsers</name>
<value>true</value>
</right>
<right>
<name>EventLog</name>
<value>true</value>
</right>
<right>
<name>ThinClient</name>
<value>true</value>
</right>
<right>
<name>WebClient</name>
<value>true</value>
</right>
<right>
<name>ThickClient</name>
<value>true</value>
</right>
<right>
<name>ExternalConnection</name>
<value>true</value>
</right>
<right>
<name>Automation</name>
<value>true</value>
</right>
<right>
<name>TechnicalSpecialistMode</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
<right>
<name>SaveUserData</name>
<value>true</value>
</right>
<right>
<name>ConfigurationExtensionsAdministration</name>
<value>true</value>
</right>
<right>
<name>Output</name>
<value>true</value>
</right>
</object>
<object> <object>
<name>InformationRegister.ДомаЗданияСтроения</name> <name>InformationRegister.ДомаЗданияСтроения</name>
<right> <right>
@@ -2187,6 +2100,13 @@
<value>true</value> <value>true</value>
</right> </right>
</object> </object>
<object>
<name>DataProcessor.РезервноеКопированиеИБ.Command.ПоказатьРезультат</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object> <object>
<name>Constant.ИзвлекатьТекстыФайловНаСервере</name> <name>Constant.ИзвлекатьТекстыФайловНаСервере</name>
<right> <right>
@@ -3932,6 +3852,93 @@
<value>true</value> <value>true</value>
</right> </right>
</object> </object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>Administration</name>
<value>true</value>
</right>
<right>
<name>DataAdministration</name>
<value>true</value>
</right>
<right>
<name>UpdateDataBaseConfiguration</name>
<value>true</value>
</right>
<right>
<name>ExclusiveMode</name>
<value>true</value>
</right>
<right>
<name>ActiveUsers</name>
<value>true</value>
</right>
<right>
<name>EventLog</name>
<value>true</value>
</right>
<right>
<name>ThinClient</name>
<value>true</value>
</right>
<right>
<name>WebClient</name>
<value>true</value>
</right>
<right>
<name>ThickClient</name>
<value>true</value>
</right>
<right>
<name>ExternalConnection</name>
<value>true</value>
</right>
<right>
<name>Automation</name>
<value>true</value>
</right>
<right>
<name>TechnicalSpecialistMode</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
<right>
<name>SaveUserData</name>
<value>true</value>
</right>
<right>
<name>ConfigurationExtensionsAdministration</name>
<value>true</value>
</right>
<right>
<name>Output</name>
<value>true</value>
</right>
</object>
<object> <object>
<name>DataProcessor.НастройкиЦентраМониторинга.Command.НастройкаОтправкиОтчетовОбОшибках</name> <name>DataProcessor.НастройкиЦентраМониторинга.Command.НастройкаОтправкиОтчетовОбОшибках</name>
<right> <right>
@@ -14,37 +14,6 @@
<value>true</value> <value>true</value>
</right> </right>
</object> </object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
<right>
<name>Output</name>
<value>true</value>
</right>
</object>
<object> <object>
<name>Catalog.РассылкиОтчетов.Command.СобытияРассылки</name> <name>Catalog.РассылкиОтчетов.Command.СобытияРассылки</name>
<right> <right>
@@ -107,6 +76,37 @@
<value>true</value> <value>true</value>
</right> </right>
</object> </object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
<right>
<name>Output</name>
<value>true</value>
</right>
</object>
<restrictionTemplate> <restrictionTemplate>
<name>ДляОбъекта(ПолеОбъекта)</name> <name>ДляОбъекта(ПолеОбъекта)</name>
<condition>// ДляОбъекта(ПолеОбъекта = "") <condition>// ДляОбъекта(ПолеОбъекта = "")
@@ -937,45 +937,6 @@
<value>false</value> <value>false</value>
</right> </right>
</object> </object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>Administration</name>
<value>false</value>
</right>
<right>
<name>UpdateDataBaseConfiguration</name>
<value>false</value>
</right>
<right>
<name>ThickClient</name>
<value>false</value>
</right>
<right>
<name>ExternalConnection</name>
<value>false</value>
</right>
<right>
<name>Automation</name>
<value>false</value>
</right>
<right>
<name>TechnicalSpecialistMode</name>
<value>false</value>
</right>
<right>
<name>ConfigurationExtensionsAdministration</name>
<value>false</value>
</right>
<right>
<name>InteractiveOpenExtDataProcessors</name>
<value>false</value>
</right>
<right>
<name>InteractiveOpenExtReports</name>
<value>false</value>
</right>
</object>
<object> <object>
<name>InformationRegister.ДомаЗданияСтроения</name> <name>InformationRegister.ДомаЗданияСтроения</name>
<right> <right>
@@ -5446,6 +5407,45 @@
<value>false</value> <value>false</value>
</right> </right>
</object> </object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>Administration</name>
<value>false</value>
</right>
<right>
<name>UpdateDataBaseConfiguration</name>
<value>false</value>
</right>
<right>
<name>ThickClient</name>
<value>false</value>
</right>
<right>
<name>ExternalConnection</name>
<value>false</value>
</right>
<right>
<name>Automation</name>
<value>false</value>
</right>
<right>
<name>TechnicalSpecialistMode</name>
<value>false</value>
</right>
<right>
<name>ConfigurationExtensionsAdministration</name>
<value>false</value>
</right>
<right>
<name>InteractiveOpenExtDataProcessors</name>
<value>false</value>
</right>
<right>
<name>InteractiveOpenExtReports</name>
<value>false</value>
</right>
</object>
<object> <object>
<name>DataProcessor.НастройкиЦентраМониторинга.Command.НастройкаОтправкиОтчетовОбОшибках</name> <name>DataProcessor.НастройкиЦентраМониторинга.Command.НастройкаОтправкиОтчетовОбОшибках</name>
<right> <right>
@@ -278,17 +278,6 @@
<value>true</value> <value>true</value>
</right> </right>
</object> </object>
<object>
<name>InformationRegister.НеудаленныеОбъекты</name>
<right>
<name>Read</name>
<value>true</value>
</right>
<right>
<name>Update</name>
<value>true</value>
</right>
</object>
<object> <object>
<name>InformationRegister.НепринятыеКОбработкеПочтовымСерверомИсходящиеПисьма</name> <name>InformationRegister.НепринятыеКОбработкеПочтовымСерверомИсходящиеПисьма</name>
<right> <right>
@@ -1863,6 +1852,17 @@
<value>true</value> <value>true</value>
</right> </right>
</object> </object>
<object>
<name>Constant.РежимОчисткиФайлов</name>
<right>
<name>Read</name>
<value>true</value>
</right>
<right>
<name>Update</name>
<value>true</value>
</right>
</object>
<object> <object>
<name>InformationRegister.ГруппыЗначенийДоступа</name> <name>InformationRegister.ГруппыЗначенийДоступа</name>
<right> <right>
@@ -21,10 +21,6 @@
<command>DataProcessor.ЗащитаПерсональныхДанных.Command.ЗащитаПерсональныхДанных</command> <command>DataProcessor.ЗащитаПерсональныхДанных.Command.ЗащитаПерсональныхДанных</command>
<visible/> <visible/>
</visibilityFragments> </visibilityFragments>
<visibilityFragments>
<command>CommonCommand.ПанельОтчетовАдминистрирование</command>
<visible/>
</visibilityFragments>
<visibilityFragments> <visibilityFragments>
<command>Catalog.ВариантыОтчетов.StandardCommand.OpenList</command> <command>Catalog.ВариантыОтчетов.StandardCommand.OpenList</command>
<visible/> <visible/>
@@ -219,10 +215,6 @@
<command>Report.АнализПравДоступа.StandardCommand.Open</command> <command>Report.АнализПравДоступа.StandardCommand.Open</command>
<visible/> <visible/>
</visibilityFragments> </visibilityFragments>
<visibilityFragments>
<command>CommonCommand.ДополнительныеОтчетыАдминистрирование</command>
<visible/>
</visibilityFragments>
<visibilityFragments> <visibilityFragments>
<command>Report.ОбъемНенужныхФайлов.StandardCommand.Open</command> <command>Report.ОбъемНенужныхФайлов.StandardCommand.Open</command>
<visible/> <visible/>
@@ -444,7 +436,6 @@
<commands>Catalog.ВнешниеПользователи.StandardCommand.OpenList</commands> <commands>Catalog.ВнешниеПользователи.StandardCommand.OpenList</commands>
<commands>DataProcessor.ЖурналРегистрации.Command.ЖурналРегистрации</commands> <commands>DataProcessor.ЖурналРегистрации.Command.ЖурналРегистрации</commands>
<commands>DataProcessor.ЗащитаПерсональныхДанных.Command.ЗащитаПерсональныхДанных</commands> <commands>DataProcessor.ЗащитаПерсональныхДанных.Command.ЗащитаПерсональныхДанных</commands>
<commands>CommonCommand.ПанельОтчетовАдминистрирование</commands>
<commands>Catalog.ВариантыОтчетов.StandardCommand.OpenList</commands> <commands>Catalog.ВариантыОтчетов.StandardCommand.OpenList</commands>
<commands>Catalog.ДополнительныеОтчетыИОбработки.StandardCommand.OpenList</commands> <commands>Catalog.ДополнительныеОтчетыИОбработки.StandardCommand.OpenList</commands>
<commands>Catalog.РассылкиОтчетов.StandardCommand.OpenList</commands> <commands>Catalog.РассылкиОтчетов.StandardCommand.OpenList</commands>
@@ -466,6 +457,10 @@
<commands>DataProcessor.ПоискИУдалениеДублей.Command.ПоискИУдалениеДублей</commands> <commands>DataProcessor.ПоискИУдалениеДублей.Command.ПоискИУдалениеДублей</commands>
<commands>Catalog.УчетныеЗаписиЭлектроннойПочты.StandardCommand.OpenList</commands> <commands>Catalog.УчетныеЗаписиЭлектроннойПочты.StandardCommand.OpenList</commands>
</placementFragments> </placementFragments>
<placementFragments>
<group>ActionsPanelReports</group>
<commands>CommonCommand.ПанельОтчетовАдминистрирование</commands>
</placementFragments>
</commandsPlacement> </commandsPlacement>
<commandsOrder> <commandsOrder>
<orderFragments> <orderFragments>
@@ -475,7 +470,6 @@
<commands>Catalog.ВнешниеПользователи.StandardCommand.OpenList</commands> <commands>Catalog.ВнешниеПользователи.StandardCommand.OpenList</commands>
<commands>DataProcessor.ЖурналРегистрации.Command.ЖурналРегистрации</commands> <commands>DataProcessor.ЖурналРегистрации.Command.ЖурналРегистрации</commands>
<commands>DataProcessor.ЗащитаПерсональныхДанных.Command.ЗащитаПерсональныхДанных</commands> <commands>DataProcessor.ЗащитаПерсональныхДанных.Command.ЗащитаПерсональныхДанных</commands>
<commands>CommonCommand.ПанельОтчетовАдминистрирование</commands>
<commands>Catalog.ВариантыОтчетов.StandardCommand.OpenList</commands> <commands>Catalog.ВариантыОтчетов.StandardCommand.OpenList</commands>
<commands>Catalog.ДополнительныеОтчетыИОбработки.StandardCommand.OpenList</commands> <commands>Catalog.ДополнительныеОтчетыИОбработки.StandardCommand.OpenList</commands>
<commands>Catalog.РассылкиОтчетов.StandardCommand.OpenList</commands> <commands>Catalog.РассылкиОтчетов.StandardCommand.OpenList</commands>
@@ -584,5 +578,17 @@
<commands>CommonForm.ВосстановлениеПаролей.StandardCommand.Open</commands> <commands>CommonForm.ВосстановлениеПаролей.StandardCommand.Open</commands>
<commands>DataProcessor.ПодключениеОбсуждений.Command.НастройкиСообщенийИзДругихПрограмм</commands> <commands>DataProcessor.ПодключениеОбсуждений.Command.НастройкиСообщенийИзДругихПрограмм</commands>
</orderFragments> </orderFragments>
<orderFragments>
<group>ActionsPanelReports</group>
<commands>CommonCommand.ПанельОтчетовАдминистрирование</commands>
<commands>CommonCommand.ДополнительныеОтчетыАдминистрирование</commands>
<commands>Report.АнализЖурналаРегистрации.StandardCommand.Open</commands>
<commands>Report.АнализПравДоступа.StandardCommand.Open</commands>
<commands>Report.ОбъемНенужныхФайлов.StandardCommand.Open</commands>
<commands>Report.ОценкаПроизводительности.StandardCommand.Open</commands>
<commands>Report.ПрогрессОтложенногоОбновления.StandardCommand.Open</commands>
<commands>Report.СведенияОПользователях.StandardCommand.Open</commands>
<commands>Report.УниверсальныйОтчет.StandardCommand.Open</commands>
</orderFragments>
</commandsOrder> </commandsOrder>
</cmi:CommandInterface> </cmi:CommandInterface>
Loaded 100 of 104 files, more files were not shown because too many files have changed in this diff. Show more