3_1_2_229

This commit is contained in:
Компания 1С committed 2019-12-06 12:46:00 +03:00
1 parent 905304b7e8
commit 0d52cef09b
80 files changed
+2137 -1302

No files matched your search

@@ -1,59 +1,69 @@
<!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 class="">
<p>Описание свойств поля контактной информации.</p>
<p>Поставка программы осуществляется c предопределенными полями контактной информации для некоторых документов и списков. У предопределенных полей контактной информации можно только поменятьнастройки, остальные реквизиты заполнены по умолчанию и защищены от редактирования.</p>
<p>Поставка программы осуществляется c предопределенными полями контактной информации для некоторых документов и списков. У предопределенных полей контактной информации можно только поменять настройки, остальные реквизиты заполнены по умолчанию и защищены от редактирования.</p>
<h3>Типы контактной информации</h3>
<p>Программа позволяет хранить следующие типы контактной информации:</p>
<ul><li>
<div><strong>Адрес</strong> - поле с таким типом контактной информации предназначено для хранения адреса в виде произвольной строки или в виде шаблона адреса. Позволяет заполнять адрес с помощью шаблона ввода, используя адресный классификатор. Если адрес заполняется с помощью адресного классификатора, то индекс адреса устанавливается из классификатора автоматически, после окончания ввода адреса. Предопределенные фактический и юридический адреса используются в печатных формах документов.</div>
</li><li>
</li>
<li>
<div><strong>Телефон</strong> - поле с таким типом контактной информации предназначено для хранения телефонных номеров в виде произвольной строки, или в соответствии с шаблоном ввода номера телефона. Предопределенный телефон используется в печатных формах документов.</div>
</li><li>
</li>
<li>
<div><strong>Адрес электронной почты</strong> - поле с таким типом контактной информации предназначено для хранения адреса электронной почты. Реквизит используется при отправке электронных писем из программы.</div>
</li><li>
</li>
<li>
<div><strong>Веб-страница</strong> - поле с таким типом контактной информации предназначено для хранения адресов веб страниц. Позволяет прикрепить гиперссылки на интернет-страницы, после этого ссылки будут храниться в базе с возможностью перехода по ним.</div>
</li><li>
</li>
<li>
<div><strong>Факс</strong> - поле с таким типом контактной информации предназначено для хранения номеров факсов в виде произвольной строки, или в соответствии с шаблоном ввода номера факса. Реквизит используется в печатных формах документов.</div>
</li><li>
</li>
<li>
<div><strong>Другое</strong> - поле с таким типом контактной информации может использоваться для хранения произвольной текстовой контактной информации, например, можно поместить информацию о том, как добраться до организации. Программа позволяет в это поле ввести текст длиной до 1024 символов.</div>
</li><li>
</li>
<li>
<div><strong>Skype</strong> - поле с таким типом контактной информации используется для хранения логина Skype.</div></li></ul><h3>Добавление поля контактной информации в список или документ</h3>
<p>Заполните необходимую информацию:</p>
<ul><li>
<div>Выберите из списка <strong>Тип</strong> контактной информации.</div>
</li><li>
<div>Введите <strong>Наименование</strong>, с которым поле контактной информации появится в списке или документе.</div>
</li><li>
<div>Введите текст <strong>Подсказки</strong>, которая будет выводиться при наведении курсора на поле контактной информации.</div>
</li><li>
</li>
<li>
<div>Введите <strong>Наименование</strong>, с которым поле контактной информации появится в списке или документе.</div></li>
<li>
<div>Выберите <strong>Группу</strong>, если она не введена по умолчанию. Группа соответствует документу или списку программы, в который добавляется новое поле контактной информации.</div></li></ul><h3>Настройки полей контактной информации</h3>
<ul><li>
<div>Включите флажок <strong>Обязательное заполнение</strong>, для того чтобы программа проверяла заполнение поля контактной информации при вводе документов или списков. Сохранение данных без заполнения этого поля будет невозможно.</div>
</li><li>
<div>Настройка <strong>Редактирование только в диалоге</strong> используется для типов контактной информации <strong>Адрес</strong>, <strong>Телефон</strong>, <strong>Факс</strong>. Такая настройка позволяет ограничить ввод нового и редактирование существующего адреса, телефона или факса шаблоном ввода, а также выбором адреса из адресного классификатора. При установленном флажке предусмотрена возможность ввести адрес в свободной форме. Это может понадобиться в исключительных случаях, например, если данные адреса в каких либо документах приводятся с ошибкой, но для печати необходимо их проставить. При этом такой адрес будет храниться в программе с пометкой, что он введен в свободной форме, и использоваться с ограничениями. После уточнения адрес можно будет исправить, заполнив по шаблону.</div>
</li><li>
<div>Настройка <strong>Запрещать ввод некорректного адреса</strong> используется для полей <strong>Адрес</strong>, <strong>Телефон</strong> или <strong>Адрес электронной почты</strong>. Такая настройка позволяет запретить ввод российских адресов, телефонов или адресов электронной почты, которые заполнены не по установленным правилам.</div>
</li><li>
<div>Включите флажок <strong>Разрешить ввод нескольких значений</strong>, для того чтобы можно было ввести несколько значений. Например, у организации или физического лица может быть несколько адресов электронной почты или номеров телефонов, по которым можно с ними связаться.</div></li></ul><h3>Международный формат адреса</h3>
<li>Для создания международного адреса (например, для валютных платежей), включите флажок <strong>Международный формат адреса</strong>, в этом случае ссылка <strong>Дополнительные настройки адреса</strong> становится недоступной.
<h3>Дополнительные настройки поля Адрес </h3>
</li>
<li>Настройка <strong>Редактировать</strong> используется для типов контактной информации <strong>Адрес</strong>, <strong>Телефон</strong>, <strong>Факс</strong>. Такая настройка позволяет выбрать способ ввода этих видов контактной информации:</li>
<ul><li><b>В диалоге</b> - позволяет ограничить ввод нового и редактирование существующего адреса, телефона или факса шаблоном ввода, а также выбором адреса из адресного классификатора. При выбранном значении предусмотрена возможность ввести адрес в свободной форме. Это может понадобиться в исключительных случаях, например, если данные адреса в каких либо документах приводятся с ошибкой, но для печати необходимо их проставить. При этом такой адрес будет храниться в программе с пометкой, что он введен в свободной форме, и использоваться с ограничениями. После уточнения адрес можно будет исправить, заполнив по шаблону.</li>
<li><b>В поле ввода</b> - если для адресов и телефонов не требуется ввод по шаблону (например, для иностранных адресов), то можно отключить ввод в диалоге;</li>
<li><b>В диалоге и в поле ввода</b> - позволяет использовать оба способа ввода. Если правильный ввод адреса не вызывает затруднений, можно будет ввести адрес прямо в поле ввода не открывая диалога, в случае затруднений можно будет открыть шаблон и ввести адрес с помощью шаблона.</li></ul><li>
<div>Настройка <strong>Запрещать ввод некорректного адреса</strong> используется для полей <strong>Адрес</strong>, <strong>Телефон</strong> или <strong>Адрес электронной почты</strong>. Такая настройка позволяет запретить ввод российских адресов, телефонов или адресов электронной почты, которые заполнены не по установленным правилам.</div></li>
<li>Включите флажок <strong>Разрешить ввод нескольких значений</strong>, для того чтобы можно было ввести несколько значений. Например, у организации или физического лица может быть несколько адресов электронной почты или номеров телефонов, по которым можно с ними связаться.</li></ul><h3>Особенности настройки поля Адрес</h3>
<div>
<ul><li><b>Включать страну в представление</b> - включите флажок, для того чтобы страна указывалась при автоматическом составлении программой полного адреса в поле <b>Адрес</b>.</li></ul><p></p>
<ul><li><b>Хранить историю изменений</b> - включите флажок, для того чтобы хранить историю изменений, используется не для всех объектов программы, зависит от настроек разработчика.</li></ul><p></p></div>
<h3>Международный формат адреса</h3>
<ul><li>Для создания международного адреса (например, для валютных платежей), включите флажок <strong>Международный формат адреса</strong>, в этом случае ссылка <strong>Дополнительные настройки адреса</strong> становится недоступной.</li></ul><h3>Дополнительные настройки поля Адрес </h3>
<p>С помощью соответствующей ссылки можно перейти к дополнительным настройкам адреса:</p>
<ul><li>Включите флажок <strong>Только российский адрес</strong>, для того чтобы запретить выбор другой страны при заполнении адреса. Используйте эту возможность, если у сотрудников Вашей организации только российские адреса, это ускорит ввод информации. При этом становятся доступными дополнительные настройки:
<ul><li><strong>Запрещать ввод некорректного адреса</strong> - если флажок включен, то при некорректном вводе российского адреса невозможно будет ввести данные в программу (имеет смысл только при использовании шаблонов ввода и адресного классификатора - для использования этой возможности включите флажок <strong>Редактировать только в диалоге</strong>). Адрес проверяется по ФИАС.
</li><li><strong>Указывать ОКТМО</strong> - включите флажок, для того чтобы автоматически заполнялось поле ОКТМО. При необходимости поле можно отредактировать.</li></ul></li><li><strong>Включать страну в представление</strong> - включите флажок, для того чтобы при автоматическом составлении полного адреса в поле <strong>Адрес</strong> указывалась страна.
</li><li>Если включена возможность хранить историю изменения адреса, то в поле выводится состояние <strong>Хранит историю изменений</strong>.</li></ul><h3>Особенности настройки поля Телефон и факс</h3>
</li>
<li><strong>Указывать ОКТМО</strong> - включите флажок, для того чтобы автоматически заполнялось поле ОКТМО. При необходимости поле можно отредактировать.</li></ul></li></ul><h3>Особенности настройки поля Телефон и факс</h3>
<ul><li>
<div>Для того чтобы использовать <strong>Телефон с добавочным номером</strong>, включите соответствующий флажок.</div>
</li><li>
<div>Для того чтобы использовать <strong>Телефон с добавочным номером</strong>, включите соответствующий флажок.</div></li>
<li>
<div>Для некоторых типов телефонов (например, мобильный телефон) не предусмотрено добавочных номеров.</div></li></ul><h3>Особенности настройки поля Адрес электронной почты</h3>
<ul><li>Если у поля установлен тип <strong>Адрес электронной почты</strong>, то программа проверяет правильность ввода адреса электронной почты. Включите флажок <strong>Запрещать ввод некорректных адресов</strong>, в этом случае ввести некорректный адрес электронной почты будет невозможно.</li></ul><h3>Особенности настройки поля Другое</h3>
<ul><li>
<div>С помощью переключателя можно указать <strong>Вид поля</strong>, для того чтобы более точно расположить поле в окне объекта:</div>
<ul><li>
<div><strong>Многострочное широкое</strong> - включает несколько строк;</div>
</li><li>
<div><strong>Однострочное широкое</strong> - длинная строка;</div>
</li><li>
<div><strong>Многострочное широкое</strong> - включает несколько строк;</div></li>
<li>
<div><strong>Однострочное широкое</strong> - длинная строка;</div></li>
<li>
<div><strong>Однострочное узкое</strong> - если вид контактной информации <strong>Другое</strong> используется для ввода текстовых данных небольшой длины, то размер поля ввода можно уменьшить.</div></li></ul></li></ul><h3>См. также: </h3>
<ul><li>
<div><a href="Catalog.ВидыКонтактнойИнформации/Help">Виды контактной информации</a>; </div></li></ul><ul><li><a href="DataProcessor.ВводКонтактнойИнформации/Help">Ввод контактной информации</a>;
</li><li><a href="v8help://frame/form_common">Работа с формами</a>.</li></ul></li></body></html>
</li>
<li><a href="v8help://frame/form_common">Работа с формами</a>.</li></ul></body></html>
@@ -209,7 +209,7 @@
Пока ВидКонтактнойИнформацииСсылка.Следующий() Цикл
Попытка
ВидКонтактнойИнформации = ВидКонтактнойИнформацииСсылка.Ссылка.ПолучитьОбъект();
ВидКонтактнойИнформации = ВидКонтактнойИнформацииСсылка.Ссылка.ПолучитьОбъект(); // СправочникОбъект.ВидыКонтактнойИнформации
// Исправление наименований на разных языках
Если ЯзыковБольшеОдного Тогда
@@ -8,47 +8,72 @@
<h3>Рекомендации по созданию пароля для входа в программу</h3>
<p>Хороший пароль должен:</p>
<ul><li>быть малопонятным выражением.
</li><li>состоять не менее чем из восьми символов.
</li><li>включать в себя:
</li>
<li>состоять не менее чем из восьми символов.
</li>
<li>включать в себя:
<ul><li>заглавные латинские буквы
</li><li>прописные латинские буквы
</li><li>цифры
</li><li>символы (подчеркивание, скобки и т.д.) </li></ul></li></ul><p>Нежелательно, чтобы пароль совпадал с именем пользователя, полностью состоял из цифр, содержал понятные слова, содержал чередующиеся группы символов. </p>
</li>
<li>прописные латинские буквы
</li>
<li>цифры
</li>
<li>символы (подчеркивание, скобки и т.д.) </li></ul></li></ul><p>Нежелательно, чтобы пароль совпадал с именем пользователя, полностью состоял из цифр, содержал понятные слова, содержал чередующиеся группы символов. </p>
<ul><li>Примеры хороших паролей:<br>“nj7{jhjibq*Gfhjkm, <br>F5”njnGhkmNj;t{HI.
</li><li>Примеры неудачных паролей: <br>Иванов, <br>qwerty, <br>12345678, <br>123123123.</li></ul><h3><a name="1">Ввод внешнего пользователя</a> (при наличии права)</h3>
</li>
<li>Примеры неудачных паролей: <br>Иванов, <br>qwerty, <br>12345678, <br>123123123.</li></ul><h3><a name="1">Ввод внешнего пользователя</a> (при наличии права)</h3>
<p>Если внешнего пользователя ввел ответственный за список и заполнил имя для входа, тогда администратору в карточке внешнего пользователя выводится рекомендация проверить настройки для входа. После разрешения входа рекомендация скрывается, а ответственный более не может изменить настройки для входа, кроме отключения разрешения на вход в программу. Для того чтобы посмотреть всех таких внешних пользователей, которых подготовил ответственный, можно установить отбор в списке по полю <strong>Подготовлен</strong>.</p>
<ul><li>Внешний пользователь связан с каким-то объектом программы (например, контрагентом, сотрудником и т.п.), указанным в поле <strong>Объект</strong>. При вводе по кнопке <img src="CommonPicture.СостояниеПользователя08"></img> <strong>Внешний доступ</strong> (рекомендуется) поле <strong>Объект</strong> заполняется автоматически.
</li><li>При вводе внешнего пользователя по команде <strong>Создать</strong> из <a href="Catalog.ВнешниеПользователи/Help">списка внешних пользователей</a> необходимо заполнить поле <strong>Объект</strong> вручную. Для этого нажмите кнопку <img src="StdPicture.InputFieldSelect"></img> <strong>Выбрать</strong>, выберите список программы, затем выберите в этом списке нужный объект, с которым связан внешний пользователь. Поле <strong>Объект</strong> будет отображаться в программе в различных списках в качестве полного имени внешнего пользователя.
</li><li>Флажок <strong>Недействителен</strong> по умолчанию снят для всех внешних пользователей. Но если внешний пользователь по каким-либо причинам более не работает с программой, и в то же время его нельзя удалить из-за наличия ссылок на него из других объектов программы, то рекомендуется включить флажок <strong>Недействителен</strong>. Такого внешнего пользователя нельзя выбрать, и он не отображается в списке внешних пользователей.
</li><li>На вкладке <strong>Главное </strong>заполните основные сведения о внешнем пользователе:
</li>
<li>При вводе внешнего пользователя по команде <strong>Создать</strong> из <a href="Catalog.ВнешниеПользователи/Help">списка внешних пользователей</a> необходимо заполнить поле <strong>Объект</strong> вручную. Для этого нажмите кнопку <img src="StdPicture.InputFieldSelect"></img> <strong>Выбрать</strong>, выберите список программы, затем выберите в этом списке нужный объект, с которым связан внешний пользователь. Поле <strong>Объект</strong> будет отображаться в программе в различных списках в качестве полного имени внешнего пользователя.
</li>
<li>Флажок <strong>Недействителен</strong> по умолчанию снят для всех внешних пользователей. Но если внешний пользователь по каким-либо причинам более не работает с программой, и в то же время его нельзя удалить из-за наличия ссылок на него из других объектов программы, то рекомендуется включить флажок <strong>Недействителен</strong>. Такого внешнего пользователя нельзя выбрать, и он не отображается в списке внешних пользователей.
</li>
<li>На вкладке <strong>Главное </strong>заполните основные сведения о внешнем пользователе:
<ul><li><strong>Имя (для входа)</strong> - короткое имя, используется для входа в программу.
</li><li><strong>Аутентификация 1С:Предприятия</strong> - по умолчанию флажок включен и активно поле для ввода пароля.
<ul><li>Состояние аутентификации 1С:Предприятия выводится под флажком.</li></ul></li><li>Для ввода пароля нажмите <strong>Установить Пароль</strong>, <a href="CommonForm.СменаПароля/Help">введите пароль</a> для входа в программу. В целях безопасности данных всегда заполняйте это поле.
</li>
<li><strong>Аутентификация 1С:Предприятия</strong> - по умолчанию флажок включен и активно поле для ввода пароля.
<ul><li>Состояние аутентификации 1С:Предприятия выводится под флажком.</li></ul></li>
<li>Для ввода пароля нажмите <strong>Установить Пароль</strong>, <a href="CommonForm.СменаПароля/Help">введите пароль</a> для входа в программу. В целях безопасности данных всегда заполняйте это поле.
<ul><li>Если данные внешнего пользователя еще не были записаны, выводится сообщение. Нажмите кнопку <strong>Записать</strong>.
</li><li>После установки пароля состояние аутентификации меняется на <strong>Пароль установлен</strong>, кнопка меняет значение на <strong>Сменить пароль</strong>.</li></ul></li><li><strong>Потребовать установку пароля при входе</strong> - включите флажок, для того чтобы внешний пользователь при входе в программу ввел свой пароль, который будет известен только ему.
</li><li><strong>Пользователю запрещено изменять пароль</strong> - при необходимости включите флажок и запретите внешнему пользователю менять свой пароль.
</li><li><strong>Аутентификация по протоколу OpenID</strong> - включите флажок, для того чтобы разрешить внешнему пользователю использовать единую учетную запись по протоколу OpenID. При этом можно отключить флажок <strong>Аутентификация 1С: Предприятия</strong>.</li></ul></li><li>На вкладке <strong>Комментарий</strong> напишите дополнительную информацию о внешнем пользователе.</li></ul><h3>Включение внешнего пользователя в группы</h3>
</li>
<li>После установки пароля состояние аутентификации меняется на <strong>Пароль установлен</strong>, кнопка меняет значение на <strong>Сменить пароль</strong>.</li></ul></li>
<li><strong>Потребовать установку пароля при входе</strong> - включите флажок, для того чтобы внешний пользователь при входе в программу ввел свой пароль, который будет известен только ему.
</li>
<li><strong>Пользователю запрещено изменять пароль</strong> - при необходимости включите флажок и запретите внешнему пользователю менять свой пароль.
</li>
<li><strong>Аутентификация по протоколу OpenID</strong> - включите флажок, для того чтобы разрешить внешнему пользователю использовать единую учетную запись по протоколу OpenID. При этом можно отключить флажок <strong>Аутентификация 1С: Предприятия</strong>.</li></ul></li>
<li>На вкладке <strong>Комментарий</strong> напишите дополнительную информацию о внешнем пользователе.</li></ul><h3>Включение внешнего пользователя в группы</h3>
<ul><li>Если в программе включено использование групп пользователей, то внешнего пользователя во время ввода можно включить в одну или несколько <a href="Catalog.ГруппыВнешнихПользователей/Help">групп</a>.
</li><li>Нажмите <strong>Группы</strong> на панели навигации, с помощью флажков выберите одну или несколько <a href="CommonForm.ГруппыПользователей/Help">групп</a>.
</li><li>Для того чтобы быстро отменить свой выбор, нажмите <strong>Исключить из всех групп</strong>.</li></ul><h3>Права доступа внешнего пользователя </h3>
<ul><li>Права доступа могут также настраиватьсяответственным за список внешних пользователей, при этом часть прав доступа (административные права) для него закрыта. В зависимости от программы для настройки прав доступа предусмотрена одна из возможностей:
</li>
<li>Нажмите <strong>Группы</strong> на панели навигации, с помощью флажков выберите одну или несколько <a href="CommonForm.ГруппыПользователей/Help">групп</a>.
</li>
<li>Для того чтобы быстро отменить свой выбор, нажмите <strong>Исключить из всех групп</strong>.</li></ul><h3>Права доступа внешнего пользователя </h3>
<ul><li>Права доступа могут также настраиваться ответственным за список внешних пользователей, при этом часть прав доступа (административные права) для него закрыта. В зависимости от программы для настройки прав доступа предусмотрена одна из возможностей:
<ul><li>Нажмите <strong>Права доступа</strong> на панели навигации, для того чтобы включить внешнего пользователя в одну или несколько <a href="CommonForm.ПраваДоступа/Help">групп доступа</a>. Их необходимо выбрать из <a href="Catalog.ГруппыДоступа/Help">списка</a>.
</li><li>В списке <strong>Разрешенные действия (роли)</strong> можно назначить внешнему пользователю одну или несколько ролей, которые в совокупности образуют его персональные <a href="CommonForm.ПраваДоступаУпрощенно/Help">настройки прав доступа</a>. Роли могут соответствовать как различным должностным обязанностям (или видам деятельности) пользователей, так и более мелким функциям. Выберите нужные роли с помощью флажков.</li></ul></li></ul><h3><a name="2">Разрешение входа в программу (только для администратора)</a></h3>
</li>
<li>В списке <strong>Разрешенные действия (роли)</strong> можно назначить внешнему пользователю одну или несколько ролей, которые в совокупности образуют его персональные <a href="CommonForm.ПраваДоступаУпрощенно/Help">настройки прав доступа</a>. Роли могут соответствовать как различным должностным обязанностям (или видам деятельности) пользователей, так и более мелким функциям. Выберите нужные роли с помощью флажков.</li></ul></li></ul><h3><a name="2">Разрешение входа в программу (только для администратора)</a></h3>
<ul><li>Для входа внешнего пользователя в программу нужно включить флажок <strong>Вход в программу разрешен</strong>. При этом должны быть заданы необходимые свойства: имя (для входа), пароль и другие параметры авторизации.
</li><li>
</li>
<li>
<div>В программе возможно прекращение работы пользователей, которым сняли флажок <strong>Вход в программу разрешен</strong>, интерактивно или программно в связи с окончанием срока действия.</div>
</li><li>
<div>Открытые сеансы пользователей автоматиески завершаются не более чем через 25 минут после того, как вход в программу был запрещен.</div></li></ul><h3>Ограничения на вход в программу</h3>
</li>
<li>
<div>Открытые сеансы пользователей автоматически завершаются не более чем через 25 минут после того, как вход в программу был запрещен.</div></li></ul><h3>Ограничения на вход в программу</h3>
<p>Перейдите по ссылке, для того чтобы <strong>Установить ограничения</strong>. Вход может быть разрешен:</p>
<ul><li>
<div><strong>Согласно общим настройкам входа</strong> - установлено по умолчанию;</div>
</li><li>
</li>
<li>
<div><strong>Без ограничения срока</strong>;</div>
</li><li>
</li>
<li>
<div><strong>Вход разрешен до</strong> (установите срок - введите дату вручную или выберите из календаря с помощью кнопки <img src="StdPicture.InputFieldCalendar"></img>). Для защиты от несанкционированного доступа к программе у всех внешних пользователей добавлен срок действия, который позволяет автоматически отключить внешнего пользователя по прошествии указанной даты;</div>
</li><li><strong>Запретить вход, если не работает более</strong> (укажите количество дней) - если внешний пользователь не войдет в программу больше указанного количества дней, то вход в программу будет невозможен.
</li>
<li><strong>Запретить вход, если не работает более</strong> (укажите количество дней) - если внешний пользователь не войдет в программу больше указанного количества дней, то вход в программу будет невозможен.
<ul><li>
<div>В этом случае внешний пользователь должен будет обратиться к администратору для возобновления работы в программе. </div></li></ul></li><li>
<div>В этом случае внешний пользователь должен будет обратиться к администратору для возобновления работы в программе. </div></li></ul></li>
<li>
<div>Ограничения отражаются в карточке пользователя, также на всех внешних пользователей их можно просмотреть в отчете <a href="Report.СведенияОПользователях/Help">Сведения о внешних пользователях</a>.</div></li></ul><h3>Управление настройками внешнего пользователя</h3>
<ul><li>Программа запоминает <a href="DataProcessor.НастройкиПользователей.Form.НастройкиПользователей/Help">настройки</a> каждого пользователя во время его работы. Для того чтобы просмотреть, скопировать или удалить настройки внешнего пользователя (удалять настройки приходится, если из-за этих неправильных настроек работать в программе становится невозможно), нажмите <strong>Настройки</strong> на панели навигации.</li></ul><h3>Предупреждения программы</h3>
<ul><li>В случае если свойства внешнего пользователя отличаются от свойств <a href="Catalog.Пользователи.Form.ПользователиИнформационнойБазы/Help">пользователя информационной базы</a>, связанного с внешним, то программа выводит предупреждение с перечнем этих свойств. Предлагается записать данные, для того чтобы устранить различия.</li></ul><h3>См. также</h3>
@@ -35,7 +35,7 @@
<li>Выделить внешнего пользователя в списке, с помощью команды меню <strong>Еще - Назначить группы</strong> включить его в одну или несколько групп. Также можно найти эту команду в контекстном меню по правой кнопке мыши.
</li>
<li>Перетащить одного или нескольких внешних пользователей мышью в нужную группу. Для использования этой возможности флажок <strong>Показывать внешних пользователей нижестоящих групп</strong> необходимо отключить.</li></ul></li></ul><h3>Ввод группы внешних пользователей</h3>
<ul><li>Нажмите<img src="StdPicture.CreateFolder"></img> <strong>Создать группу</strong>, введите необходимые <a href="Catalog.ГруппыВнешнихПользователей.Form.ФормаЭлемента/Help">поля</a>.
<ul><li>Нажмите<img src="StdPicture.CreateFolder"></img> <strong>Создать группу внешних пользователей</strong>, введите необходимые <a href="Catalog.ГруппыВнешнихПользователей.Form.ФормаЭлемента/Help">поля</a>.
</li>
<li>Также можно воспользоваться командой <strong>Создать</strong> контекстного меню по правой кнопке мыши в левой части списка.</li></ul><h3>Включение группы внешних пользователей в другую группу</h3>
<ul><li>
@@ -27,7 +27,7 @@
<li>Выделите пользователя в списке, выполните команду меню <strong>Еще - Назначить группы</strong>, с помощью флажков включите его в одну или несколько групп. Также можно найти эту команду в контекстном меню по правой кнопке мыши.
</li>
<li>Перетащите одного или нескольких пользователей мышью в нужную группу. Подтвердите свой выбор, нажав кнопку <strong>Да</strong>. Для использования этой возможности флажок <strong>Показывать пользователей нижестоящих групп</strong> необходимо отключить.</li></ul></li></ul><h3>Ввод группы пользователей</h3>
<ul><li>Для ввода <a href="Catalog.ГруппыПользователей.Form.ФормаЭлемента/Help">группы</a> нажмите <img src="StdPicture.CreateFolder"></img> <strong>Создать группу</strong>.
<ul><li>Для ввода <a href="Catalog.ГруппыПользователей.Form.ФормаЭлемента/Help">группы</a> нажмите <img src="StdPicture.CreateFolder"></img> <strong>Создать группу пользователей</strong>.
</li>
<li>Также можно воспользоваться командой <strong>Создать</strong> контекстного меню по правой кнопке мыши в левой части списка.</li></ul><h3>Включение группы пользователей в другую группу</h3>
<ul><li>
@@ -35,9 +35,6 @@
<items xsi:type="form:FormGroup">
<name>КоманднаяПанель</name>
<id>119</id>
<items xsi:type="form:FormGroup">
<name>ФормаГруппаДействий</name>
<id>123</id>
<items xsi:type="form:Button">
<name>ФормаВыполнитьПроверку</name>
<id>125</id>
@@ -64,6 +61,35 @@
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<items xsi:type="form:Button">
<name>ФормаВыполнитьВсеПроверки</name>
<id>154</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ФормаВыполнитьВсеПроверкиРасширеннаяПодсказка</name>
<id>155</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<commandName>Form.Command.ВыполнитьВсеПроверки</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<items xsi:type="form:FormGroup">
<name>ФормаГруппаДействий</name>
<id>123</id>
<items xsi:type="form:Button">
<name>ФормаВосстановитьПоНачальномуЗаполнению</name>
<id>145</id>
@@ -275,50 +301,7 @@
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:LabelFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>Важность</name>
<id>48</id>
<title>
<key>ru</key>
<value>Важность проблемы</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Список.ВажностьПроблемы</segments>
</dataPath>
<toolTip>
<key>ru</key>
<value>Статус проблем, регистрируемых проверкой</value>
</toolTip>
<extendedTooltip>
<name>ВажностьРасширеннаяПодсказка</name>
<id>50</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ВажностьКонтекстноеМеню</name>
<id>49</id>
<autoFill>true</autoFill>
</contextMenu>
<type>LabelField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:LabelFieldExtInfo">
<width>15</width>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
</extInfo>
@@ -785,7 +768,7 @@
<id>1</id>
<toolTip>
<key>ru</key>
<value>Выполнить проверку ведения учета</value>
<value>Выполнить одну или несколько выбранных проверок ведения учета</value>
</toolTip>
<use>
<common>true</common>
@@ -824,6 +807,28 @@
<currentRowUse>DontUse</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</formCommands>
<formCommands>
<name>ВыполнитьВсеПроверки</name>
<title>
<key>ru</key>
<value>Выполнить все</value>
</title>
<id>3</id>
<toolTip>
<key>ru</key>
<value>Выполнить все проверки ведения учета</value>
</toolTip>
<use>
<common>true</common>
</use>
<action xsi:type="form:FormCommandHandlerContainer">
<handler>
<name>ВыполнитьВсеПроверки</name>
</handler>
</action>
<currentRowUse>Auto</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</formCommands>
<commandInterface>
<navigationPanel/>
<commandBar/>
@@ -156,17 +156,45 @@
&НаКлиенте
Процедура ВыполнитьПроверку(Команда)
Проверки = ВключенныеПроверки();
ЕстьГруппы = Ложь;
Проверки = ВыделенныеПроверки(ЕстьГруппы);
Если Проверки.Количество() = 0 Тогда
ВызватьИсключение НСтр("ru = 'Необходимо выбрать в списке одну или несколько проверок.'");
КонецЕсли;
ДлительнаяОперация = ВыполнитьПроверкиНаСервере(Проверки);
Если ЕстьГруппы Тогда
Проверки = ВсеВыделенныеПроверки(Проверки);
КонецЕсли;
ОповещениеОЗавершении = Новый ОписаниеОповещения("ВыполнитьПроверкуЗавершение", ЭтотОбъект);
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
ПараметрыОжидания.ТекстСообщения = НСтр("ru = 'Выполняется проверка. Это может занять некоторое время.'");
ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, ОповещениеОЗавершении, ПараметрыОжидания);
Если Проверки.Количество() > 0 Тогда
ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Выполнить выбранные проверки (%1)?
|Это может занять некоторое время.'"),
Проверки.Количество());
Иначе
ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Выполнить выбранную проверку ""%1""?
|Это может занять некоторое время.'"),
Проверки[0]);
КонецЕсли;
ПоказатьВопрос(Новый ОписаниеОповещения("ВыполнитьПроверкуПродолжение", ЭтотОбъект, Проверки),
ТекстВопроса, РежимДиалогаВопрос.ДаНет);
КонецПроцедуры
&НаКлиенте
Процедура ВыполнитьВсеПроверки(Команда)
Проверки = ВсеВыделенныеПроверки();
Если Проверки.Количество() = 0 Тогда
ВызватьИсключение НСтр("ru = 'Необходимо выбрать в списке одну или несколько проверок.'");
КонецЕсли;
ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Выполнить все проверки (%1)?
|Это может занять некоторое время.'"),
Проверки.Количество());
ПоказатьВопрос(Новый ОписаниеОповещения("ВыполнитьПроверкуПродолжение", ЭтотОбъект, Проверки),
ТекстВопроса, РежимДиалогаВопрос.ДаНет);
КонецПроцедуры
@@ -226,12 +254,26 @@
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор);
ПараметрыВыполнения.НаименованиеФоновогоЗадания = НСтр("ru = 'Выполнение проверок ведения учета'");
Возврат ДлительныеОперации.ВыполнитьВФоне("КонтрольВеденияУчетаСлужебный.ВыполнитьПроверкиВФоновомЗадании",
Новый Структура("Проверки", Проверки), ПараметрыВыполнения);
Возврат ДлительныеОперации.ВыполнитьПроцедуру(ПараметрыВыполнения, "КонтрольВеденияУчетаСлужебный.ВыполнитьПроверки", Проверки);
КонецФункции
&НаКлиенте
Процедура ВыполнитьПроверкуПродолжение(РезультатВопроса, Проверки) Экспорт
Если РезультатВопроса <> КодВозвратаДиалога.Да Тогда
Возврат;
КонецЕсли;
ДлительнаяОперация = ВыполнитьПроверкиНаСервере(Проверки);
ОповещениеОЗавершении = Новый ОписаниеОповещения("ВыполнитьПроверкуЗавершение", ЭтотОбъект);
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
ПараметрыОжидания.ТекстСообщения = НСтр("ru = 'Выполняется проверка. Это может занять некоторое время.'");
ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, ОповещениеОЗавершении, ПараметрыОжидания);
КонецПроцедуры
&НаКлиенте
Процедура ВыполнитьПроверкуЗавершение(Результат, ДополнительныеПараметры) Экспорт
@@ -261,19 +303,49 @@
КонецПроцедуры
&НаКлиенте
Функция ВключенныеПроверки()
Функция ВыделенныеПроверки(ЕстьГруппы)
Результат = Новый Массив;
Для Каждого Проверка Из Элементы.Список.ВыделенныеСтроки Цикл
ДанныеПроверки = Элементы.Список.ДанныеСтроки(Проверка);
Если ДанныеПроверки <> Неопределено И Не ДанныеПроверки.ЭтоГруппа Тогда
Если ДанныеПроверки <> Неопределено Тогда
Результат.Добавить(ДанныеПроверки.Ссылка);
Если ДанныеПроверки.ЭтоГруппа Тогда
ЕстьГруппы = Истина;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Возврат Результат;
КонецФункции
&НаСервереБезКонтекста
Функция ВсеВыделенныеПроверки(Проверки = Неопределено)
Если Проверки = Неопределено Тогда
Запрос = Новый Запрос(
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ПравилаПроверкиУчета.Ссылка КАК Ссылка
|ИЗ
| Справочник.ПравилаПроверкиУчета КАК ПравилаПроверкиУчета
|ГДЕ
| НЕ ПравилаПроверкиУчета.ЭтоГруппа");
Иначе
Запрос = Новый Запрос(
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ПравилаПроверкиУчета.Ссылка КАК Ссылка
|ИЗ
| Справочник.ПравилаПроверкиУчета КАК ПравилаПроверкиУчета
|ГДЕ
| ПравилаПроверкиУчета.Ссылка В ИЕРАРХИИ(&Проверки)
| И НЕ ПравилаПроверкиУчета.ЭтоГруппа");
Запрос.УстановитьПараметр("Проверки", Проверки);
КонецЕсли;
Возврат Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
КонецФункции
&НаСервере
Функция СформироватьСтрокуСРасписанием()
@@ -169,9 +169,7 @@
Проверки = Новый Массив;
Проверки.Добавить(Объект.Ссылка);
Возврат ДлительныеОперации.ВыполнитьВФоне("КонтрольВеденияУчетаСлужебный.ВыполнитьПроверкиВФоновомЗадании",
Новый Структура("Проверки", Проверки), ПараметрыВыполнения);
Возврат ДлительныеОперации.ВыполнитьПроцедуру(ПараметрыВыполнения, "КонтрольВеденияУчетаСлужебный.ВыполнитьПроверки", Проверки);
КонецФункции
@@ -150,6 +150,10 @@
<type>
<types>EnumRef.ВажностьПроблемыУчета</types>
</type>
<toolTip>
<key>ru</key>
<value>Важность проблем, выявляемых проверкой.</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillChecking>ShowError</fillChecking>
@@ -1,14 +1,19 @@
<!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.9600.17126"></meta></head><body>
<p>Позволяет указать параметры, необходимые для подключения к FTP-ресурсу при рассылке отчетов. <br>Поле <strong>Сервер и каталог</strong> является обязательным для заполнения, остальные поля не обязательны.</p>
<p>Открывается из окна <a href="Catalog.РассылкиОтчетов.Form.ФормаЭлемента/Help">рассылки отчетов</a> по кнопке <img src="StdPicture.InputFieldSelect"></img> <strong>Выбрать</strong>.</p>
<p>Открывается из окна <a href="Catalog.РассылкиОтчетов.Form.ФормаЭлемента/Help">рассылки отчетов</a> (Вкладка <b>Доставка</b>, поле <b>Публиковать</b> - на FTP-ресурс, в поле ввода параметров FTP-ресурса нажать кнопку <img src="StdPicture.InputFieldSelect"></img> <b>Выбрать</b>).</p>
<p><a name="Реквизиты">З</a>аполните необходимые сведения:</p>
<ul><li><a name="СерверИКаталог"><strong>Сервер и каталог</strong></a> - путь к FTP-ресурсу в формате <a href="ftp://сервер/каталог/">ftp://сервер/каталог/</a>;
</li><li><a name="Порт"><strong>Порт</strong></a> - порт FTP-ресурса на сервере (стандартный порт - 21);
</li><li><a name="Логин"><strong>Логин</strong></a> - имя пользователя для доступа к FTP;
</li><li><a name="Пароль"><strong>Пароль</strong></a> - пароль пользователя для доступа к FTP;
</li><li><a name="ПассивноеСоединение"><strong>Пассивное соединение</strong></a> - флажок использования пассивного соединения при подключении к серверу.</li></ul><h3>Ввод параметров одной строкой</h3>
<ul><li><a name="СерверИКаталог"><strong>Сервер и каталог</strong></a> - путь к FTP-ресурсу в формате <b>ftp://сервер/каталог/</b>;
</li>
<li><a name="Порт"><strong>Порт</strong></a> - порт FTP-ресурса на сервере (стандартный порт - 21);
</li>
<li><a name="Логин"><strong>Логин</strong></a> - имя пользователя для доступа к FTP;
</li>
<li><a name="Пароль"><strong>Пароль</strong></a> - пароль пользователя для доступа к FTP;
</li>
<li><a name="ПассивноеСоединение"><strong>Пассивное соединение</strong></a> - флажок использования пассивного соединения при подключении к серверу.</li></ul><h3>Ввод параметров одной строкой</h3>
<ul><li>
<div>Нажмите <strong>Заполнить</strong>, введите строку вида <a href="ftp://User:пароль@сервер:21/каталог/">ftp://User:пароль@сервер:21/каталог/</a>, программа автоматически заполнит все параметры по отдельности.</div></li></ul><p></p>
<div>Нажмите <strong>Заполнить</strong>, введите строку вида <b>ftp://User:пароль@сервер:21/каталог/</b>, программа автоматически заполнит все параметры по отдельности.</div></li></ul><p></p>
<h3>См. также: </h3>
<ul><li><a href="Catalog.РассылкиОтчетов/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>
@@ -17,7 +17,7 @@
<p><a name="ПочтовыйАдрес"><strong>Почтовый адрес</strong></a> - автоматически проставляется адрес электронной почты текущего <a href="Catalog.Пользователи.Form.ФормаЭлемента/Help">пользователя</a>.</p><strong></strong></li></ul></li></ul></li></ul><h3>Отчеты</h3>
<ul><li>На этой вкладке можно выбрать для рассылки один или несколько отчетов из <a href="Catalog.ВариантыОтчетов/Help">списка</a> с помощью кнопки <strong>Подобрать</strong>.
</li>
<li>С помощью кнопки <strong>Просмотр</strong> можно сформировать выбранный отчет.
<li>С помощью кнопки <b>Предварительный просмотр</b> можно сформировать выбранный отчет.
</li>
<li><strong>Настройки отчета</strong> - выводятся настройки отчета, с помощью флажков можно выбрать нужные настройки и указать значения, по которым будет выведен отчет. При необходимости можно изменить настройки выбранного отчета. Для этого выберите нужное значение из списков.
</li>
@@ -55,7 +55,7 @@
<li>Если выбраны <strong>Отчеты указанным получателям</strong>, то кроме доставки по почте появляется возможность сохранить (опубликовать) готовые отчеты. Для этого включите флажок <a name="Публиковать"><strong>Публикова</strong><strong>ть</strong></a> - признак необходимости публикации рассылки. Выберите соответствующее значение:
<ul><li><a name="ВПапку"><strong>В папку</strong></a> - отчеты будут сохранены в указанную <a href="Catalog.ПапкиФайлов.Form.ФормаЭлемента/Help">папку</a> подсистемы "Работа с файлами". С помощью этого способа доставки можно организовать регулярную архивацию отчетов в папку файлов (при этом отключив отправку по электронной почте);
</li>
<li><a name="ВПапкуНаДиске"><strong>В сетевой каталог</strong></a> - отчеты будут сохранены в выбранный сетевой каталог. Запись производится с сервера, поэтому рекомендуется указывать сетевой путь в формате UNC, например: <a href="file://\\server\folder\">\\server\folder\</a>. Укажите адрес этого каталога в поле Windows (если вы работаете на компьютере под управлением этой операционной системы) или в поле Linux (если вы работаете на компьютере под управлением Linux). <strong>Внимание!</strong> Данный способ доставки отчетов недоступен в приложении в Интернете;
<li><a name="ВПапкуНаДиске"><strong>В сетевой каталог</strong></a> - отчеты будут сохранены в выбранный сетевой каталог. Запись производится с сервера, поэтому рекомендуется указывать сетевой путь в формате UNC, например: <b>\\server\folder\</b>. Укажите адрес этого каталога в поле Windows (если вы работаете на компьютере под управлением этой операционной системы) или в поле Linux (если вы работаете на компьютере под управлением Linux). <strong>Внимание!</strong> Данный способ доставки отчетов недоступен в приложении в Интернете;
</li>
<li><a name="НаFTP"><strong>На FTP ресурс</strong></a> - отчеты будут сохранены на ftp-сервере. Заполните необходимые <a href="Catalog.РассылкиОтчетов.Form.ПараметрыFTP/Help">параметры</a>.</li></ul></li>
<li><a name="Проверить"><strong>Проверить</strong></a> - проверка публикации путем записи и удаления тестового файла. Тест считается успешным, если ошибок не возникло.
@@ -414,7 +414,7 @@
// [2] и [3] Анализ СКД отчетов.
Если СтрокаОтчеты.СКД Тогда
НастройкиКД = НастройкиОтчета.Настройки;
ПользовательскиеНастройкиКД = НастройкиОтчета.ПользовательскиеНастройки;
ПользовательскиеНастройкиКД = НастройкиОтчета.ПользовательскиеНастройки; // ПользовательскиеНастройкиКомпоновкиДанных
// [3] Проверка значения настроек.
Фильтр = Новый Структура("Использование, Значение", Истина, "[Получатель]");
Найденные = ОтчетыКлиентСервер.ЭлементыНастроекОтобранные(ПользовательскиеНастройкиКД, Фильтр);
@@ -1274,11 +1274,12 @@
Если СтрокаОтчеты.СКД Тогда
ПараметрыОтчета.Настройки = КомпоновщикНастроекКД.ПользовательскиеНастройки;
Иначе
ПараметрыОтчета.Настройки = Новый Массив;
Настройки = Новый Массив;
Найденные = НастройкиТекущегоОтчета.НайтиСтроки(Новый Структура("Использование", Истина));
Для Каждого СтрокаНастройка Из Найденные Цикл
ДобавляемаяНастройка = Новый Структура("Реквизит, Значение", СтрокаНастройка.Реквизит, СтрокаНастройка.Значение);
ПараметрыОтчета.Настройки.Добавить(ДобавляемаяНастройка);
Настройки.Добавить(ДобавляемаяНастройка);
ПараметрыОтчета.Настройки = Настройки;
КонецЦикла;
КонецЕсли;
@@ -1857,6 +1858,21 @@
Отчет.ВнесеныИзменения = Истина;
КонецПроцедуры
// Обработчик закрытия формы ПолучателиРассылки.
//
// Параметры:
// Результат - Структура - где:
// * Получатели - ТаблицаЗначений - где:
// * Получатель - СправочникСсылка.ГруппыПользователей,
// - СправочникСсылка._ДемоКонтрагенты,
// - СправочникСсылка._ДемоПартнеры,
// - СправочникСсылка.Пользователи -
// * Исключен - Булево -
// * Адрес - Строка -
// * ИндексКартинки - Число -
// * ВидПочтовогоАдресаПолучателей - СправочникСсылка.ВидыКонтактнойИнформации -
// Параметр - Структура, Неопределено -
//
&НаКлиенте
Процедура ПолучателиРассылкиНажатиеЗавершение(Результат, Параметр) Экспорт
Если Результат = Неопределено Тогда
@@ -2006,6 +2022,12 @@
КонецЕсли;
КонецПроцедуры
// Обработчик закрытия диалога форматной строки.
//
// Параметры:
// СтрокаРезультат - Строка -
// Переменные - Структура -
//
&НаКлиенте
Процедура ДобавитьИзменитьШаблонДатыРассылкиЗавершение(СтрокаРезультат, Переменные) Экспорт
Если СтрокаРезультат = Неопределено Тогда
@@ -2979,17 +3001,20 @@
КонецЕсли;
КонецПроцедуры
// Выполняет проверку выбранного отчета.
//
// Параметры:
// СтруктураВыбора - Структура - где:
// * Выбрано - Структура - Строки, выбранные пользователем.
// * Успешно - Структура - Строки, инициализированные и добавленные в список.
// * СОшибками - Структура - Строки, не добавленные в список из-за ошибок, где:
// ** МассивСтрок - Массив - Массив идентификаторов строк.
// ** Количество - Число - Количество строк.
// ** ПредставлениеОтчетов - Строка - Представление всех отчетов указанных строк.
// ** Текст - Строка - Текст возникших ошибок.
//
&НаСервере
Процедура ПроверитьДобавленныеСтрокиОтчетов(СтруктураВыбора)
// СтруктураВыбора:
// Выбрано - Структура - Строки, выбранные пользователем.
// Успешно - Структура - Строки, инициализированные и добавленные в список.
// СОшибками - Структура - Строки, не добавленные в список из-за ошибок.
// * МассивСтрок - Массив - Массив идентификаторов строк.
// * Количество - Число - Количество строк.
// * ПредставлениеОтчетов - Строка - Представление всех отчетов указанных строк.
// * Текст - Строка - Текст возникших ошибок.
МассивОшибок = Новый Массив;
СтруктураВыбора.Выбрано.Количество = СтруктураВыбора.Выбрано.МассивСтрок.Количество();
@@ -3010,8 +3035,11 @@
МассивОшибок.Добавить(СтрокаПредупреждения);
КонецЕсли;
Строки = СтруктураВыбора[Ключ].МассивСтрок; // Массив
Строки.Добавить(ИдентификаторСтрокиОтчеты);
СтруктураВыбора[Ключ].МассивСтрок = Строки;
СтруктураВыбора[Ключ].Количество = СтруктураВыбора[Ключ].Количество + 1;
СтруктураВыбора[Ключ].МассивСтрок.Добавить(ИдентификаторСтрокиОтчеты);
СтруктураВыбора[Ключ].ПредставлениеОтчетов = СтруктураВыбора[Ключ].ПредставлениеОтчетов
+ ?(СтруктураВыбора[Ключ].ПредставлениеОтчетов = "", "", ", ")
+ СтрокаОтчеты.Представление;
@@ -1045,7 +1045,7 @@
<usePurposes>PersonalComputer</usePurposes>
<usePurposes>MobileDevice</usePurposes>
</forms>
<forms uuid="ad6e5d1c-4ebc-429f-b54e-52ae3bff8954">
<forms uuid="d7afa1a6-0ac9-4527-8f1c-5317ce259b52">
<name>Предупреждение</name>
<synonym>
<key>ru</key>
@@ -3546,6 +3546,19 @@ vasyapupkin@example.com завершена.</value>
<common>true</common>
</edit>
</attributes>
<attributes>
<name>Перенастройка</name>
<id>7</id>
<valueType>
<types>Boolean</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<formCommands>
<name>Назад</name>
<title>
@@ -3628,6 +3641,12 @@ vasyapupkin@example.com завершена.</value>
<types>Boolean</types>
</valueType>
</parameters>
<parameters>
<name>Перенастройка</name>
<valueType>
<types>Boolean</types>
</valueType>
</parameters>
<commandInterface>
<navigationPanel/>
<commandBar/>
@@ -29,6 +29,7 @@
ДоступноПолучениеПисем = РаботаСПочтовымиСообщениямиСлужебный.НастройкиПодсистемы().ДоступноПолучениеПисем;
КонтекстныйРежим = Параметры.КонтекстныйРежим;
Перенастройка = Параметры.Перенастройка;
Элементы.ИспользоватьУчетнуюЗапись.Видимость = Не КонтекстныйРежим И ДоступноПолучениеПисем;
Элементы.Протокол.Доступность = ДоступноПолучениеПисем;
Элементы.ОставлятьПисьмаНаСервере.Видимость = ДоступноПолучениеПисем;
@@ -37,7 +38,11 @@
НСтр("ru = 'Для отправки писем необходимо настроить учетную запись электронной почты'"),
НСтр("ru = 'Введите параметры учетной записи'"));
Если КонтекстныйРежим Или Перенастройка Тогда
Заголовок = НСтр("ru = 'Настройка учетной записи электронной почты'");
Иначе
Заголовок = НСтр("ru = 'Создание учетной записи электронной почты'");
КонецЕсли;
ИспользоватьДляПолучения = Не КонтекстныйРежим И ДоступноПолучениеПисем;
ИспользоватьДляОтправки = Истина;
@@ -63,7 +68,6 @@
ЗаполнитьЗначенияСвойств(ЭтотОбъект, Выборка);
КонецЕсли;
Иначе
Заголовок = НСтр("ru = 'Создание учетной записи электронной почты'");
СсылкаНовойУчетнойЗаписи = Справочники.УчетныеЗаписиЭлектроннойПочты.ПолучитьСсылку();
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонтактнаяИнформация") Тогда
@@ -406,7 +410,7 @@
ЗаголовокКнопкиДалее = НСтр("ru = 'Повторить'");
ИначеЕсли ТекущаяСтраница = Элементы.НастройкаУчетнойЗаписи
И СпособНастройки = "Автоматически" Тогда
Если КонтекстныйРежим Тогда
Если КонтекстныйРежим Или Перенастройка Тогда
ЗаголовокКнопкиДалее = НСтр("ru = 'Настроить'");
Иначе
ЗаголовокКнопкиДалее = НСтр("ru = 'Создать'");
@@ -429,7 +433,7 @@
// КнопкаПерейтиКНастройкам
Элементы.КнопкаПерейтиКНастройкам.Видимость = Не ИспользуютсяПрофилиБезопасности И (ТекущаяСтраница = Элементы.НастройкаУчетнойЗаписи
И ПроверкаЗавершиласьСОшибками Или Не КонтекстныйРежим И ТекущаяСтраница = Элементы.УчетнаяЗаписьУспешноНастроена);
И ПроверкаЗавершиласьСОшибками Или Не КонтекстныйРежим И Не Перенастройка И ТекущаяСтраница = Элементы.УчетнаяЗаписьУспешноНастроена);
Если Не КонтекстныйРежим И ТекущаяСтраница = Элементы.УчетнаяЗаписьУспешноНастроена Тогда
Элементы.КнопкаПерейтиКНастройкам.Заголовок = НСтр("ru = 'Перейти к учетной записи'");
@@ -540,7 +544,7 @@
ИспользуемыйПротокол = ПротоколИнтернетПочты.IMAP;
КонецЕсли;
Возврат Справочники.УчетныеЗаписиЭлектроннойПочты.ПроверитьПодключениеКСерверуВходящейПочты(Профиль, Протокол);
Возврат Справочники.УчетныеЗаписиЭлектроннойПочты.ПроверитьПодключениеКСерверуВходящейПочты(Профиль, ИспользуемыйПротокол);
КонецФункции
@@ -289,8 +289,11 @@
Процедура ОткрытьПомощникНастройки(Команда)
ОписаниеОповещения = Новый ОписаниеОповещения("ПриЗавершенииНастройки", ЭтотОбъект);
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("Ключ", Объект.Ссылка);
ПараметрыОткрытия.Вставить("Перенастройка", Истина);
ОткрытьФорму("Справочник.УчетныеЗаписиЭлектроннойПочты.Форма.ПомощникНастройкиУчетнойЗаписи",
Новый Структура("Ключ", Объект.Ссылка), , , , , ОписаниеОповещения);
ПараметрыОткрытия, , , , , ОписаниеОповещения);
КонецПроцедуры
@@ -562,6 +565,8 @@
ШифрованиеПриПолученииПочты = ?(Объект.ИспользоватьЗащищенноеСоединениеДляВходящейПочты, "SSL", "Авто");
СпособАвторизацииПриОтправкеПочты = ?(Объект.ТребуетсяВходНаСерверПередОтправкой, "POP", "SMTP");
Элементы.ФормаПроверитьНастройки.Доступность = Объект.ИспользоватьДляОтправки Или Объект.ИспользоватьДляПолучения;
Элементы.ФормаОткрытьПомощникНастройки.Доступность = Не Объект.Ссылка.Пустая();
КонецПроцедуры
@@ -246,17 +246,17 @@
КонецПроцедуры
&НаКлиенте
Функция ПолучитьТекущийИндексСтроки(ИмяТаблицы)
Функция ПолучитьТекущийИндексСтроки()
// возвращаемое значение функции
ИндексСтроки = Неопределено;
// при обновлении монитора выполняем позиционирование курсора
ТекущиеДанные = Элементы[ИмяТаблицы].ТекущиеДанные;
ТекущиеДанные = Элементы.СписокАвтономныхРабочихМест.ТекущиеДанные;
Если ТекущиеДанные <> Неопределено Тогда
ИндексСтроки = ЭтотОбъект[ИмяТаблицы].Индекс(ТекущиеДанные);
ИндексСтроки = СписокАвтономныхРабочихМест.Индекс(ТекущиеДанные);
КонецЕсли;
@@ -264,31 +264,31 @@
КонецФункции
&НаКлиенте
Процедура ВыполнитьПозиционированиеКурсора(ИмяТаблицы, ИндексСтроки)
Процедура ВыполнитьПозиционированиеКурсора(ИндексСтроки)
Если ИндексСтроки <> Неопределено Тогда
// выполняем проверки позиционирования курсора после получения новых данных
Если ЭтотОбъект[ИмяТаблицы].Количество() <> 0 Тогда
Если СписокАвтономныхРабочихМест.Количество() <> 0 Тогда
Если ИндексСтроки > ЭтотОбъект[ИмяТаблицы].Количество() - 1 Тогда
Если ИндексСтроки > СписокАвтономныхРабочихМест.Количество() - 1 Тогда
ИндексСтроки = ЭтотОбъект[ИмяТаблицы].Количество() - 1;
ИндексСтроки = СписокАвтономныхРабочихМест.Количество() - 1;
КонецЕсли;
// позиционируем курсор
Элементы[ИмяТаблицы].ТекущаяСтрока = ЭтотОбъект[ИмяТаблицы][ИндексСтроки].ПолучитьИдентификатор();
Элементы.СписокАвтономныхРабочихМест.ТекущаяСтрока = СписокАвтономныхРабочихМест[ИндексСтроки].ПолучитьИдентификатор();
КонецЕсли;
КонецЕсли;
// если спозиционировать строку не удалось, то устанавливаем текущей первую строку
Если Элементы[ИмяТаблицы].ТекущаяСтрока = Неопределено
И ЭтотОбъект[ИмяТаблицы].Количество() <> 0 Тогда
Если Элементы.СписокАвтономныхРабочихМест.ТекущаяСтрока = Неопределено
И СписокАвтономныхРабочихМест.Количество() <> 0 Тогда
Элементы[ИмяТаблицы].ТекущаяСтрока = ЭтотОбъект[ИмяТаблицы][0].ПолучитьИдентификатор();
Элементы.СписокАвтономныхРабочихМест.ТекущаяСтрока = СписокАвтономныхРабочихМест[0].ПолучитьИдентификатор();
КонецЕсли;
@@ -297,12 +297,12 @@
&НаКлиенте
Процедура ОбновитьМониторАвтономнойРаботы()
ИндексСтроки = ПолучитьТекущийИндексСтроки("СписокАвтономныхРабочихМест");
ИндексСтроки = ПолучитьТекущийИндексСтроки();
ОбновитьМониторАвтономнойРаботыНаСервере();
// выполняем позиционирование курсора
ВыполнитьПозиционированиеКурсора("СписокАвтономныхРабочихМест", ИндексСтроки);
ВыполнитьПозиционированиеКурсора(ИндексСтроки);
КонецПроцедуры
@@ -90,7 +90,7 @@
Если Задание.Прогресс <> Неопределено Тогда
ПрогрессСтрокой = ПрогрессСтрокой(Задание.Прогресс);
Если Не ПустаяСтрока(ПрогрессСтрокой) Тогда
Элементы.ДекорацияПоясняющийТекстДлительнойОперации.Заголовок = ТекстСообщения + " " + ПрогрессСтрокой;
Элементы.ДекорацияПоясняющийТекстДлительнойОперации.Заголовок = ТекстСообщения + Символы.ПС + ПрогрессСтрокой;
КонецЕсли;
КонецЕсли;
Если Задание.Сообщения <> Неопределено И ВладелецФормы <> Неопределено Тогда
@@ -71,7 +71,6 @@
<key>ru</key>
<value>Командная панель левая часть</value>
</title>
<width>13</width>
<horizontalStretch>false</horizontalStretch>
<extendedTooltip>
<name>КоманднаяПанельЛеваяЧастьExtendedTooltip</name>
@@ -1116,7 +1115,7 @@
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>HorizontalIfPossible</group>
<group>AlwaysHorizontal</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
@@ -18,22 +18,31 @@
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если ОбщегоНазначения.РазделениеВключено() И ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда
Возврат;
КонецЕсли;
ИнформационнаяБазаФайловая = ОбщегоНазначения.ИнформационнаяБазаФайловая();
Источник = Параметры.Источник;
Если Источник = "ПанельАдминистрированияБСП" Тогда
Элементы.ОК.Заголовок = НСтр("ru = 'Изменить'")
КонецЕсли;
Элементы.ЧасовойПоясПрограммы.СписокВыбора.ЗагрузитьЗначения(ПолучитьДопустимыеЧасовыеПояса());
Если ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда
ИнформационнаяБазаФайловая = ОбщегоНазначения.ИнформационнаяБазаФайловая();
ЧасовойПоясПрограммы = ПолучитьЧасовойПоясИнформационнойБазы();
Если ПустаяСтрока(ЧасовойПоясПрограммы) Тогда
ЧасовойПоясПрограммы = ЧасовойПояс();
КонецЕсли;
Элементы.ЧасовойПоясПрограммы.СписокВыбора.ЗагрузитьЗначения(ПолучитьДопустимыеЧасовыеПояса());
Если ОбщегоНазначения.РазделениеВключено() Тогда
Элементы.ГруппаОсновнойЯзык.Видимость = Ложь;
Элементы.ГруппаДополнительныеЯзыки.Видимость = Ложь;
КонецЕсли;
Иначе
ЧасовойПоясПрограммы = ЧасовойПоясСеанса();
КонецЕсли;
УстановитьОсновнойЯзык();
@@ -291,7 +300,7 @@
Элементы.Страницы.ТекущаяСтраница = Элементы.УспешноеЗавершение;
ОбновитьПовторноИспользуемыеЗначения();
Элементы.ОК.Видимость = Истина;
Элементы.ОК.Видимость = Ложь;
Элементы.Закрыть.Видимость = Истина;
Элементы.Закрыть.КнопкаПоУмолчанию = Истина;
ТекущийЭлемент = Элементы.Закрыть;
@@ -354,6 +363,8 @@
&НаСервере
Процедура ЗаписатьЗначенияКонстант()
Если ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда
Если ЧасовойПоясПрограммы <> ПолучитьЧасовойПоясИнформационнойБазы() Тогда
УстановитьПривилегированныйРежим(Истина);
Попытка
@@ -368,6 +379,14 @@
УстановитьЧасовойПоясСеанса(ЧасовойПоясПрограммы);
КонецЕсли;
Иначе
УстановитьЧасовойПоясСеанса(ЧасовойПоясПрограммы);
КонецЕсли;
Если Не ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Или Не ОбщегоНазначения.РазделениеВключено() Тогда
Константы.ОсновнойЯзык.Установить(ОсновнойЯзык);
ПараметрыСеанса.ОсновнойЯзык = ОсновнойЯзык;
@@ -380,11 +399,17 @@
Константы.ИспользоватьДополнительныйЯзык2.Установить(ИспользоватьДополнительныйЯзык2);
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ЗначенияКонстантИзменены()
Если Метаданные.Языки.Количество() = 1 Тогда
Возврат Ложь;
КонецЕсли;
Если СтрСравнить(Константы.ОсновнойЯзык.Получить(), ОсновнойЯзык) <> 0 Тогда
Возврат Истина;
КонецЕсли;
@@ -530,7 +530,7 @@
Для Каждого ТЧ Из МетаданныеОбъекта.ТабличныеЧасти Цикл
ИменаРеквизитов = "";
СодержимоеТЧ = ТекущийОбъект[ТЧ.Имя].Выгрузить();
СодержимоеТЧ = ТекущийОбъект[ТЧ.Имя].Выгрузить(); // ТаблицаЗначений
Для Каждого Реквизит Из ТЧ.Реквизиты Цикл
Если Не Метаданные.КритерииОтбора.СвязанныеДокументы.Состав.Содержит(Реквизит) Тогда
@@ -717,6 +717,12 @@
КонецПроцедуры
// Возвращает ссылки на связанные объекты.
//
// Возвращаемое значение:
// ТаблицаЗначений - где:
// - Ссылка - СправочникСсылка, ДокументСсылка -
//
&НаСервере
Функция ОбъектыПоКритериюОтбора(ЗначениеКритерияОтбора)
@@ -751,7 +757,9 @@
Для Каждого СтрокаТаблицы Из Таблица Цикл
МетаданныеОбъекта = СтрокаТаблицы.Ссылка.Метаданные();
ТекущаяСсылка = СтрокаТаблицы.Ссылка; // СправочникСсылка, ДокументСсылка
МетаданныеОбъекта = ТекущаяСсылка.Метаданные();
Если Не ПравоДоступа("Чтение", МетаданныеОбъекта) Тогда
Продолжить;
КонецЕсли;
@@ -767,7 +775,7 @@
КонецЕсли;
МассивСсылок.Добавить(СтрокаТаблицы.Ссылка);
МассивСсылок.Добавить(ТекущаяСсылка);
КонецЦикла;
@@ -3091,8 +3091,8 @@
// Преобразует введенные английские буквы к русской раскладке при подборе адреса
//
Процедура ПреобразоватьВводАдреса(Текст)
РусскиеКлавиши = "ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮЁ";
АнглийскиеКлавиши = "QWERTYUIOP[]ASDFGHJKL;'ZXCVBNM,.`";
РусскиеКлавиши = "ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЁ";
АнглийскиеКлавиши = "QWERTYUIOP[]ASDFGHJKL;'ZXCVBNM,`";
Текст = ВРег(Текст);
Для Позиция = 0 По СтрДлина(Текст) Цикл
Символ = Сред(Текст, Позиция, 1);
@@ -143,7 +143,7 @@
// Для вызова из процедуры ВариантыОтчетовПереопределяемый.НастроитьВариантыОтчетов.
//
// Параметры:
// Настройки - Коллекция - передается "как есть" из процедуры НастроитьВариантыОтчетов.
// Настройки - см. ВариантыОтчетов.КоллекцияПредопределенныхВариантовОтчетов
// ОтчетМетаданные - ОбъектМетаданных - метаданные отчета, в модуле менеджера которого расположена
// экспортная процедура НастроитьВариантыОтчета(Настройки, НастройкиОтчета).
//
@@ -166,14 +166,11 @@
// в ВариантыОтчетовПереопределяемый.НастроитьВариантыОтчетов.
//
// Параметры:
// Настройки - Коллекция - используется для описания настроек отчетов и вариантов.
// Передается "как есть" из процедур ВариантыОтчетовПереопределяемый.НастроитьВариантыОтчетов
// и НастроитьВариантыОтчета.
// Настройки - см. КоллекцияПредопределенныхВариантовОтчетов
// Отчет - ОбъектМетаданныхОтчет, СправочникСсылка.ИдентификаторыОбъектовМетаданных - метаданные или ссылка отчета.
//
// Возвращаемое значение:
// СтрокаДереваЗначений - настройки отчета и настройки "по умолчанию" для вариантов этого отчета.
// Полученное значение можно использовать в функции ОписаниеВарианта для получения настроек варианта, где:
// СтрокаДереваЗначений - настройки отчета и настройки "по умолчанию" для вариантов этого отчета, где:
// * Включен - Булево - если Ложь, то вариант отчета не регистрируется в подсистеме.
// * ВидимостьПоУмолчанию - Булево - если Ложь, то вариант отчета по умолчанию скрыт в панели отчетов.
// * Размещение - Соответствие - настройки размещения варианта отчета в разделах, где:
@@ -247,8 +244,7 @@
// Для использования в ВариантыОтчетовПереопределяемый.НастроитьВариантыОтчетов.
//
// Параметры:
// Настройки - Коллекция - используется для описания настроек отчетов и вариантов.
// Передается "как есть" из процедур НастроитьВариантыОтчетов и НастроитьВариантыОтчета.
// Настройки - см. ВариантыОтчетов.КоллекцияПредопределенныхВариантовОтчетов
// Отчет - СтрокаДерева, ОбъектМетаданных - описание настроек, метаданные или ссылка отчета.
// КлючВарианта - Строка - имя варианта отчета как оно задано в схеме компоновки данных.
//
@@ -338,8 +334,7 @@
// и из процедуры НастроитьВариантыОтчета модуля объекта отчета.
//
// Параметры:
// Настройки - Коллекция - передается "как есть" из соответствующего параметра
// процедур НастроитьВариантыОтчетов и НастроитьВариантыОтчета.
// Настройки - см. ВариантыОтчетов.КоллекцияПредопределенныхВариантовОтчетов
// ОтчетИлиПодсистема - СтрокаДереваЗначений, ОбъектМетаданных: Отчет, ОбъектМетаданных: Подсистема -
// Описание отчета или подсистемы, для которой устанавливается режим вывода.
// Когда передана подсистема режим устанавливается рекурсивно для всех отчетов из ее состава.
@@ -2072,7 +2067,7 @@
ПоискОписания.Вставить("ЭтоВариант", Истина);
НайденныеОписания = Результат.НайтиСтроки(ПоискОписания);
Описание = НайденныеОписания.Получить(0);
Описание = НайденныеОписания.Получить(0); // см. ОписаниеОтчетаПоУмолчанию
ОсновойВариантВключен = Описание.Включен;
КонецЕсли;
@@ -2654,9 +2649,8 @@
// Заполняет описание настроек для строки варианта отчета, если оно еще не заполнено.
//
// Параметры:
// ОписаниеВарианта - СтрокаТаблицыЗначений - свойства варианта отчета.
// ОписаниеОтчета - СтрокаТаблицыЗначений - свойства отчета, где:
// * Метаданные - ОбъектМетаданныхОтчет - описание метаданных отчета.
// ОписаниеВарианта - см. ОписаниеОтчетаПоУмолчанию
// ОписаниеОтчета - см. ОписаниеОтчетаПоУмолчанию
//
Процедура ЗаполнитьОписаниеСтрокиВарианта(ОписаниеВарианта, ОписаниеОтчета)
Если ОписаниеВарианта.ОписаниеПолучено Тогда
@@ -3447,7 +3441,7 @@
Продолжить; // Возникла проблема.
КонецЕсли;
ОписаниеВарианта = Найденные[0];
ОписаниеВарианта = Найденные[0]; // см. ОписаниеОтчетаПоУмолчанию
ЗаполнитьОписаниеСтрокиВарианта(ОписаниеВарианта, ПредопределенныеВарианты.НайтиСтроки(
Новый Структура("Отчет,ЭтоВариант", ВариантОбъект.Отчет, Ложь))[0]);
@@ -3830,39 +3824,8 @@
// Определяет, изменились ли второстепенные настройки предопределенного варианта отчета.
//
// Параметры:
// ОписаниеВарианта - СтрокаТаблицыЗначений - свойства варианта отчета, где:
// * Включен - Булево - если Ложь, то вариант отчета не регистрируется в подсистеме.
// ВариантИзБазы - СтрокаТаблицыЗначений - свойства основного варианта отчета (см.
// КоллекцияПредопределенныхВариантовОтчетов), где:
// * Отчет - СправочникСсылка.ИдентификаторыОбъектовРасширений,
// СправочникСсылка.ДополнительныеОтчетыИОбработки,
// СправочникСсылка.ИдентификаторыОбъектовМетаданных,
// Строка - полное имя или ссылка на идентификатор отчета.
// * Метаданные - ОбъектМетаданныхОтчет - метаданные отчета.
// * ИспользуетСКД - Булево - признак использования в отчете основной СКД.
// * КлючВарианта - Строка - идентификатор варианта отчета.
// * ОписаниеПолучено - Булево - флажок что описание строки уже получено.
// * Включен - Булево - если Ложь, то вариант отчета не регистрируется в подсистеме.
// * ВидимостьПоУмолчанию - Булево - если Ложь, то вариант отчета по умолчанию скрыт в панели отчетов.
// * Наименование - Строка - наименование варианта отчета.
// * Описание - Строка - пояснение назначения отчета.
// * Размещение - Соответствие - настройки размещения варианта отчета в разделах (подсистемах), где:
// ** Ключ - ОбъектМетаданных - подсистема, в которой размещается отчет или вариант отчета.
// ** Значение - Строка - настройки размещения в подсистеме (группе).
// *** "" - вывод отчета в подсистеме без специального выделение.
// *** "Важный" - вывод отчета в подсистеме с выделением жирным шрифтом.
// *** "СмТакже" - вывод отчета в группе "См. также".
// * НастройкиДляПоиска - Структура - дополнительные настройки для поиска этого варианта отчета.
// * СистемнаяИнформация - Структура - другая служебная информация.
// * Тип - Строка - перечень идентификаторов типов.
// * ЭтоВариант - Булево - признак того, что описание отчета относится к варианту отчета.
// * ФункциональныеОпции - Массив - коллекция идентификаторов функциональных опций, где:
// ** Строка - идентификатор функциональной опции.
// * ГруппироватьПоОтчету - Булево - признак необходимости группировки вариантов по отчету-основанию.
// * КлючЗамеров - Строка - идентификатор замера производительности отчета.
// * ОсновнойВариант - Строка - идентификатор основного варианта отчета.
// * ФорматНастроекСКД - Булево - отчет использует типовой формат хранения настроек на механике СКД.
// * ОпределитьНастройкиФормы - Булево - отчет имеет программный интерфейс для тесной интеграции с формой отчета.
// ОписаниеВарианта - см. ОписаниеОтчетаПоУмолчанию
// ВариантИзБазы - см. ОписаниеОтчетаПоУмолчанию
//
Функция ИзменилисьВторостепенныеНастройкиПредопределенного(ОписаниеВарианта, ВариантИзБазы)
// Шапка
@@ -4019,9 +3982,9 @@
И Результат.ПоискРодителей[СтрокаТаблицы.Отчет] = Неопределено Тогда
Результат.ПоискРодителей[СтрокаТаблицы.Отчет] = СтрокаТаблицы.РеквизитСсылка;
ОсновнойВариант = Результат.ОсновныеВарианты.Добавить(); // см. КоллекцияОсновныхВариантовОтчетов
ОсновнойВариант = Результат.ОсновныеВарианты.Добавить(); // см. ОписаниеОтчетаПоУмолчанию
ОсновнойВариант.Отчет = СтрокаТаблицы.Отчет;
ОсновнойВариант.Вариант = СтрокаТаблицы.РеквизитСсылка; // СправочникСсылка.ВариантыОтчетов
ОсновнойВариант.Вариант = СтрокаТаблицы.РеквизитСсылка;
КонецЕсли;
КонецЦикла;
@@ -4720,7 +4683,8 @@
// ** Важность - Строка - степень важности отчета.
//
Процедура ДеревоПодсистемЗарегистрироватьНастройкиПодсистемы(Контекст, СтрокаРазмещения, Использование)
Найденные = Контекст.ДеревоПодсистем.Строки.НайтиСтроки(Новый Структура("Ссылка", СтрокаРазмещения.Подсистема), Истина);
Поиск = Новый Структура("Ссылка", СтрокаРазмещения.Подсистема);
Найденные = Контекст.ДеревоПодсистем.Строки.НайтиСтроки(Поиск, Истина);
Если Найденные.Количество() = 0 Тогда
Возврат;
КонецЕсли;
@@ -4741,15 +4705,13 @@
//
// Параметры:
// ВариантОбъект - СправочникОбъект.ВариантыОтчетов - Объект варианта отчета, где:
// * Размещение - ТабличнаяЧасть - список подсистем, в которых отображается отчет.
// ИзмененныеПодсистемы - Массив из СтрокаДереваЗначений - строки дерева значений, содержащий измененные настройки
// размещения, где:
// * Ссылка - СправочникСсылка.ИдентификаторыОбъектовРасширений,
// СправочникСсылка.ИдентификаторыОбъектовМетаданных - идентификатор метаданных подсистемы.
// * Ссылка - СправочникСсылка.ИдентификаторыОбъектовРасширений -
// - СправочникСсылка.ИдентификаторыОбъектовМетаданных - идентификатор метаданных подсистемы.
// * Важность - Строка - степень важности отчета для соответствующей подсистемы.
//
Процедура ДеревоПодсистемЗаписать(ВариантОбъект, ИзмененныеПодсистемы) Экспорт
Для Каждого Подсистема Из ИзмененныеПодсистемы Цикл
СтрокаТабличнойЧасти = ВариантОбъект.Размещение.Найти(Подсистема.Ссылка, "Подсистема");
Если СтрокаТабличнойЧасти = Неопределено Тогда
@@ -7065,7 +7027,7 @@
// Определяет способ подключения хранилища вариантов отчетов.
Функция ПоУмолчаниюВсеПодключеныКХранилищу()
МетаданныеХранилища = Метаданные.ХранилищеВариантовОтчетов;
МетаданныеХранилища = Метаданные.ХранилищеВариантовОтчетов; // ОбъектМетаданныхХранилищеНастроек
Возврат (МетаданныеХранилища <> Неопределено И МетаданныеХранилища.Имя = "ХранилищеВариантовОтчетов");
КонецФункции
@@ -7996,53 +7958,34 @@
//
// Возвращаемое значение:
// ТаблицаЗначений - коллекция предопределенных вариантов отчетов, где:
// * Отчет - СправочникСсылка.ИдентификаторыОбъектовРасширений,
// СправочникСсылка.ДополнительныеОтчетыИОбработки,
// СправочникСсылка.ИдентификаторыОбъектовМетаданных,
// Строка - полное имя или ссылка на идентификатор отчета.
// * Отчет - СправочникСсылка.ИдентификаторыОбъектовРасширений -
// - СправочникСсылка.ДополнительныеОтчетыИОбработки -
// - СправочникСсылка.ИдентификаторыОбъектовМетаданных -
// - Строка - полное имя или ссылка на идентификатор отчета.
// * Метаданные - ОбъектМетаданныхОтчет - метаданные отчета.
// * ИспользуетСКД - Булево - признак использования в отчете основной СКД.
// * КлючВарианта - Строка - идентификатор варианта отчета.
// * ОписаниеПолучено - Булево - флажок что описание строки уже получено.
// Описание получается методом ОписаниеВарианта().
// * ОписаниеПолучено - Булево - признак того, что описание строки уже получено.
// * Включен - Булево - если Ложь, то вариант отчета не регистрируется в подсистеме
// * ВидимостьПоУмолчанию - Булево - если Ложь, то вариант отчета по умолчанию скрыт в панели отчетов.
// * Наименование - Строка - наименование варианта отчета.
// * Описание - Строка - пояснение назначения отчета.
// * Размещение - Соответствие - настройки размещения варианта отчета в разделах (подсистемах), где:
// ** Ключ - ОбъектМетаданных - подсистема, в которой размещается отчет или вариант отчета.
// ** Значение - Строка - настройки размещения в подсистеме (группе).
// *** "" - вывод отчета в подсистеме без специального выделение.
// *** "Важный" - вывод отчета в подсистеме с выделением жирным шрифтом.
// *** "СмТакже" - вывод отчета в группе "См. также".
// * НастройкиДляПоиска - Структура - дополнительные настройки для поиска этого варианта отчета.
// Эти настройки необходимо задавать только если СКД не используется или используется не в полном объеме.
// Например, СКД может использоваться только для параметризации и получения данных,
// а вывод выполняться в фиксированный макет табличного документа.
// ** Значение - Строка - настройки размещения в подсистеме (группе) - "", "Важный", "СмТакже".
// * НастройкиДляПоиска - Структура - дополнительные настройки для поиска этого варианта отчета, где:
// ** НаименованияПолей - Строка - имена полей варианта отчета.
// ** НаименованияПараметровИОтборов - Строка - имена настроек варианта отчета.
// ** КлючевыеСлова - Строка - дополнительная терминология (в т.ч. специализированная или устаревшая).
// Разделитель терминов: Символы.ПС.
// ** ИменаМакетов - Строка - используется вместо НаименованияПолей.
// Имена макетов табличных или текстовых документов,
// из которых требуется извлечь информацию о наименованиях полей.
// Имена перечисляются через запятую.
// К сожалению, в макетах отсутствует информация о связях полей и их представлениях
// (которая есть в СКД), поэтому для более точной работы механизма поиска рекомендуется
// заполнять НаименованияПолей, а не ИменаМакетов.
// * СистемнаяИнформация - Структура - другая служебная информация.
// * Тип - Строка - перечень идентификаторов типов.
// * ЭтоВариант - Булево - признак того, что описание отчета относится к варианту отчета.
// * ФункциональныеОпции - Массив - коллекция идентификаторов функциональных опций, где:
// ** Строка - идентификатор функциональной опции.
// * ФункциональныеОпции - Массив из Строка - коллекция идентификаторов функциональных опций, где:
// * ГруппироватьПоОтчету - Булево - признак необходимости группировки вариантов по отчету-основанию.
// * КлючЗамеров - Строка - идентификатор замера производительности отчета.
// * ОсновнойВариант - Строка - идентификатор основного варианта отчета.
// * ФорматНастроекСКД - Булево - отчет использует типовой формат хранения настроек на механике СКД,
// а его основные формы поддерживают стандартную схему взаимодействия между формами (параметры и тип
// возвращаемого значения).
// Если Ложь, тогда для отчета отключаются проверки консистентности и некоторые механизмы, которые
// рассчитывают на типовой формат.
// * ФорматНастроекСКД - Булево - признак хранения настроек в формате СКД.
// * ОпределитьНастройкиФормы - Булево - отчет имеет программный интерфейс для тесной интеграции с формой отчета,
// в том числе может переопределять некоторые настройки формы и подписываться на ее события.
// Если Истина и отчет подключен к общей форме ФормаОтчета,
@@ -8063,7 +8006,7 @@
// // Код процедуры.
// КонецПроцедуры
//
Функция КоллекцияПредопределенныхВариантовОтчетов()
Функция КоллекцияПредопределенныхВариантовОтчетов() Экспорт // АПК:581 Для типизации в EDT.
РеквизитыСправочника = Метаданные.Справочники.ВариантыОтчетов.Реквизиты;
@@ -8119,7 +8062,7 @@
// Возвращает описание указанного отчета по умолчанию.
//
// Параметры:
// ОписанияОтчетов - ТаблицаЗначений - см. КоллекцияПредопределенныхВариантовОтчетов
// ОписанияОтчетов - см. КоллекцияПредопределенныхВариантовОтчетов
// МетаданныеОтчета - ОбъектМетаданныхОтчет -
// СсылкаОтчета - СправочникСсылка.ИдентификаторыОбъектовМетаданных, СправочникСсылка.ИдентификаторыОбъектовРасширений -
// ТипОтчета - Строка - см. ТипОтчетаСтрокой
@@ -8167,8 +8110,7 @@
// Отчет - ОбъектМетаданныхОтчет, СправочникСсылка.ИдентификаторыОбъектовМетаданных - метаданные или ссылка отчета.
//
// Возвращаемое значение:
// Массив - из:
// * СтрокаТаблицыЗначений - см. КоллекцияПредопределенныхВариантовОтчетов
// Массив из СтрокаТаблицыЗначений - см. КоллекцияПредопределенныхВариантовОтчетов
//
Функция НайденныеОписанияОтчета(Отчет)
@@ -99,7 +99,7 @@
// - они отключаются только с отключением всего отчета.
//
// Параметры:
// Настройки - Коллекция - настройки отчетов и вариантов отчетов конфигурации.
// Настройки - см. ВариантыОтчетов.КоллекцияПредопределенныхВариантовОтчетов
//
// Пример:
//
@@ -189,10 +189,8 @@
// Событие возникает в процессе вызова модуля повторного использования.
//
// Параметры:
// КомандыОтчетов - ТаблицаЗначений - таблица команд для вывода в подменю. Для изменения.
// КомандыОтчетов - ТаблицаЗначений - таблица команд для вывода в подменю, где:
// * Идентификатор - Строка - идентификатор команды.
//
// Настройки внешнего вида:
// * Представление - Строка - представление команды в форме.
// * Важность - Строка - суффикс группы в подменю, в которой следует вывести эту команду.
// Допустимо использовать: "Важное", "Обычное" и "СмТакже".
@@ -200,8 +198,6 @@
// рабочее место.
// * Картинка - Картинка - картинка команды.
// * СочетаниеКлавиш - СочетаниеКлавиш - сочетание клавиш для быстрого вызова команды.
//
// Настройки видимости и доступности:
// * ТипПараметра - ОписаниеТипов - типы объектов, для которых предназначена эта команда.
// * ВидимостьВФормах - Строка - имена форм через запятую, в которых должна отображаться команда.
// Используется когда состав команд отличается для различных форм.
@@ -214,12 +210,11 @@
// когда у пользователя нет прав на изменение объекта.
// Если Истина, то в описанной выше ситуации кнопка будет недоступна.
// Необязательный. Значение по умолчанию: Ложь.
//
// Настройки процесса выполнения:
// * МножественныйВыбор - Булево, Неопределено - если Истина, то команда поддерживает множественный выбор.
// В этом случае в параметре выполнения будет передан список ссылок.
// Необязательный. Значение по умолчанию: Истина.
// * РежимЗаписи - Строка - действия, связанные с записью объекта, которые выполняются перед обработчиком команды.
// * РежимЗаписи - Строка - действия, связанные с записью объекта, которые выполняются перед обработчиком команды,
// где:
// ** "НеЗаписывать" - объект не записывается, а в параметрах обработчика вместо ссылок передается
// вся форма. В этом режиме рекомендуется работать напрямую с формой,
// которая передается в структуре 2 параметра обработчика команды.
@@ -231,8 +226,6 @@
// * ТребуетсяРаботаСФайлами - Булево - если Истина, то в веб-клиенте предлагается
// установить расширение для работы с 1С:Предприятием.
// Необязательный. Значение по умолчанию: Ложь.
//
// Настройки обработчика:
// * Менеджер - Строка - полное имя объекта метаданных, отвечающего за выполнение команды.
// Пример: "Отчет._ДемоКнигаПокупок".
// * ИмяФормы - Строка - имя формы, которую требуется открыть или получить для выполнения команды.
@@ -246,8 +239,7 @@
// - Если ИмяФормы заполнено то в модуле указанной формы ожидается клиентская процедура.
// - Если ИмяФормы не заполнено то в модуле менеджера этого объекта ожидается серверная процедура.
// * ДополнительныеПараметры - Структура - параметры обработчика, указанного в Обработчик.
//
// Параметры - Структура - сведения о контексте исполнения.
// Параметры - Структура - сведения о контексте исполнения, где:
// * ИмяФормы - Строка - полное имя формы.
//
// СтандартнаяОбработка - Булево - если установить в Ложь, то событие "ДобавитьКомандыОтчетов" менеджера объекта не
@@ -4217,91 +4217,90 @@
Запрос.УстановитьПараметр("Письмо",Письмо);
Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий();
ШапкаПисьма = Запрос.Выполнить().Выбрать();
ШапкаПисьма.Следующий();
ПараметрыФормирования = ПараметрыФормированияДокументаHTMLНаОснованииПисьма(Выборка);
ПараметрыФормирования = ПараметрыФормированияДокументаHTMLНаОснованииПисьма(ШапкаПисьма);
ПараметрыФормирования.ОбработатьКартинки = ОбработатьКартинки;
ПараметрыФормирования.ОтключитьВнешниеРесурсы = ОтключитьВнешниеРесурсы;
ДокументHTML = СформироватьДокументHTMLНаОснованииПисьма(ПараметрыФормирования, ЕстьВнешниеРесурсы);
Если Выборка.СтатусПисьма = Перечисления.СтатусыИсходящегоЭлектронногоПисьма.Черновик
И Выборка.ВключатьТелоИсходногоПисьма
И Выборка.ВзаимодействиеОснование <> Неопределено
И (ТипЗнч(Выборка.ВзаимодействиеОснование) = Тип("ДокументСсылка.ЭлектронноеПисьмоВходящее")
ИЛИ ТипЗнч(Выборка.ВзаимодействиеОснование) = Тип("ДокументСсылка.ЭлектронноеПисьмоИсходящее")) Тогда
Если ШапкаПисьма.СтатусПисьма = Перечисления.СтатусыИсходящегоЭлектронногоПисьма.Черновик
И ШапкаПисьма.ВключатьТелоИсходногоПисьма
И ШапкаПисьма.ВзаимодействиеОснование <> Неопределено
И (ТипЗнч(ШапкаПисьма.ВзаимодействиеОснование) = Тип("ДокументСсылка.ЭлектронноеПисьмоВходящее")
ИЛИ ТипЗнч(ШапкаПисьма.ВзаимодействиеОснование) = Тип("ДокументСсылка.ЭлектронноеПисьмоИсходящее")) Тогда
ВыборкаОснование = ПолучитьДанныеПисьмаОснования(Выборка.ВзаимодействиеОснование);
ТекстHTML = ВыборкаОснование.ТекстHTML;
Если СтрНайти(ВыборкаОснование.ТекстHTML, "body") = 0 Тогда
ТекстHTML = "<body>" +ВыборкаОснование.ТекстHTML + "</body>";
КонецЕсли;
ШапкаПисьмаОснования = ПолучитьДанныеПисьмаОснования(ШапкаПисьма.ВзаимодействиеОснование);
ПараметрыФормирования = ПараметрыФормированияДокументаHTMLНаОснованииПисьма();
ПараметрыФормирования.Письмо = Выборка.ВзаимодействиеОснование;
ПараметрыФормирования.ТипТекста = ВыборкаОснование.ТипТекста;
ПараметрыФормирования.Текст = ВыборкаОснование.Текст;
ПараметрыФормирования.ТекстHTML = ВыборкаОснование.ТекстHTML;
ПараметрыФормирования.ТипТекстаПреобразование = Выборка.ТипТекста;
ПараметрыФормирования.Письмо = ШапкаПисьма.ВзаимодействиеОснование;
ПараметрыФормирования.ТипТекста = ШапкаПисьмаОснования.ТипТекста;
ПараметрыФормирования.Текст = ШапкаПисьмаОснования.Текст;
ПараметрыФормирования.ТекстHTML = ШапкаПисьмаОснования.ТекстHTML;
ПараметрыФормирования.ТипТекстаПреобразование = ШапкаПисьма.ТипТекста;
ПараметрыФормирования.ОтключитьВнешниеРесурсы = ОтключитьВнешниеРесурсы;
ДокументОснованиеHTML = СформироватьДокументHTMLНаОснованииПисьма(ПараметрыФормирования, ЕстьВнешниеРесурсы);
ЭлементТелоОснованиеHTML = ДокументОснованиеHTML.Тело;
МассивДочернихУзловТелаОснование = МассивДочернихУзловСодержащихHTML(ЭлементТелоОснованиеHTML);
ЭлементDIV = ДобавитьЭлементСАтрибутами(ЭлементТелоОснованиеHTML,
"div",Новый Структура("style","border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm 4.0pt"));
Для каждого ДочернийУзел Из МассивДочернихУзловТелаОснование Цикл
ЭлементDIV.ДобавитьДочерний(ДочернийУзел);
КонецЦикла;
СтруктураАтрибутов = Новый Структура;
СтруктураАтрибутов.Вставить("size", "2");
СтруктураАтрибутов.Вставить("width", "100%");
СтруктураАтрибутов.Вставить("align", "center");
СтруктураАтрибутов.Вставить("tabindex", "-1");
ЭлементHR = ДобавитьЭлементСАтрибутами(ЭлементDIV, "hr", СтруктураАтрибутов);
ВставитьЭлементHTMLПервымДочернимЭлементом(ЭлементDIV,ЭлементHR,МассивДочернихУзловТелаОснование);
СтруктураДанныеШапкиПисьмаОснования = Новый Структура;
СтруктураДанныеШапкиПисьмаОснования.Вставить("ОтправительПредставление", ВыборкаОснование.ОтправительПредставление);
СтруктураДанныеШапкиПисьмаОснования.Вставить("ОтправительАдрес", ВыборкаОснование.ОтправительАдрес);
СтруктураДанныеШапкиПисьмаОснования.Вставить("Дата", ВыборкаОснование.Дата);
СтруктураДанныеШапкиПисьмаОснования.Вставить("Тема", ВыборкаОснование.Тема);
СтруктураДанныеШапкиПисьмаОснования.Вставить("ПолучателиПисьма", ВыборкаОснование.ПолучателиПисьма);
СтруктураДанныеШапкиПисьмаОснования.Вставить("ПолучателиКопий", ВыборкаОснование.ПолучателиКопий);
ЭлементШрифт = СформироватьЭлементДанныхШапкиПисьма(ЭлементDIV,
СтруктураДанныеШапкиПисьмаОснования,
ВыборкаОснование.ИмяОбъектаМетаданных = "ЭлектронноеПисьмоИсходящее");
ВставитьЭлементHTMLПервымДочернимЭлементом(ЭлементDIV,ЭлементШрифт,МассивДочернихУзловТелаОснование);
МассивДочернихУзловТелаТекущее = МассивДочернихУзловСодержащихHTML(ДокументHTML.Тело);
Для Каждого ДочернийУзел Из МассивДочернихУзловТелаТекущее Цикл
ЭлементТелоОснованиеHTML.ВставитьПеред(ДокументОснованиеHTML.ИмпортироватьУзел(ДочернийУзел,Истина),ЭлементDIV);
КонецЦикла;
ДокументHTML = ДокументОснованиеHTML;
ДокументHTML = ОбъединитьПисьма(ДокументHTML, ДокументОснованиеHTML, ШапкаПисьмаОснования);
КонецЕсли;
Если ДляПечати Тогда
СформироватьШапкуИПодвалПечатнойФормыПисьма(Письмо, ДокументHTML, Выборка);
СформироватьШапкуИПодвалПечатнойФормыПисьма(Письмо, ДокументHTML, ШапкаПисьма);
КонецЕсли;
Возврат ПолучитьТекстHTMLИзОбъектаДокументHTML(ДокументHTML);
КонецФункции
Функция ОбъединитьПисьма(ПервоеПисьмоДокументHTML, ВтороеПисьмоДокументHTML, ШапкаВторогоПисьма) Экспорт
ТелоВторогоПисьма = ВтороеПисьмоДокументHTML.Тело;
УзлыHTMLВторогоПисьма = ДочерниеУзлыСодержащиеHTML(ТелоВторогоПисьма);
ЭлементDIV = ДобавитьЭлементСАтрибутами(ТелоВторогоПисьма, "div",
Новый Структура("style", "border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm 4.0pt"));
Для каждого ДочернийУзел Из УзлыHTMLВторогоПисьма Цикл
ЭлементDIV.ДобавитьДочерний(ДочернийУзел);
КонецЦикла;
АтрибутыРазделителя = Новый Структура;
АтрибутыРазделителя.Вставить("size", "2");
АтрибутыРазделителя.Вставить("width", "100%");
АтрибутыРазделителя.Вставить("align", "center");
АтрибутыРазделителя.Вставить("tabindex", "-1");
ЭлементРазделитель = ДобавитьЭлементСАтрибутами(ЭлементDIV, "hr", АтрибутыРазделителя);
ВставитьЭлементHTMLПервымДочернимЭлементом(ЭлементDIV, ЭлементРазделитель, УзлыHTMLВторогоПисьма);
ШапкаПисьма = СформироватьЭлементДанныхШапкиПисьма(ЭлементDIV, ШапкаВторогоПисьма,
ШапкаВторогоПисьма.ИмяОбъектаМетаданных = "ЭлектронноеПисьмоИсходящее");
ВставитьЭлементHTMLПервымДочернимЭлементом(ЭлементDIV, ШапкаПисьма, УзлыHTMLВторогоПисьма);
УзлыТелаПисьма = ДочерниеУзлыСодержащиеHTML(ПервоеПисьмоДокументHTML.Тело);
Для Каждого ДочернийУзел Из УзлыТелаПисьма Цикл
ТелоВторогоПисьма.ВставитьПеред(ВтороеПисьмоДокументHTML.ИмпортироватьУзел(ДочернийУзел, Истина), ЭлементDIV);
КонецЦикла;
СтилиCSS = ПервоеПисьмоДокументHTML.ПолучитьЭлементыПоИмени("style");
Для каждого СтильCSS Из СтилиCSS Цикл
ЭлементыЗаголовка = ВтороеПисьмоДокументHTML.ПолучитьЭлементыПоИмени("head");
Если ЭлементыЗаголовка.Количество() = 0 Тогда
ЭлементЗаголовка = ВтороеПисьмоДокументHTML.СоздатьЭлемент("head");
ВтороеПисьмоДокументHTML.ПолучитьЭлементыПоИмени("html")[0].ВставитьПеред(ЭлементЗаголовка, ТелоВторогоПисьма);
Иначе
ЭлементЗаголовка = ЭлементыЗаголовка[0];
КонецЕсли;
ЭлементЗаголовка.ДобавитьДочерний(ВтороеПисьмоДокументHTML.ИмпортироватьУзел(СтильCSS, Истина));
КонецЦикла;
Возврат ВтороеПисьмоДокументHTML;
КонецФункции
// Формирует документ HTML на основании электронного письма.
//
// Параметры:
@@ -4336,7 +4335,6 @@
И ТипТекста <> Перечисления.ТипыТекстовЭлектронныхПисем.ПростойТекст Тогда
ТекстВходящегоПисьма = ПолучитьОбычныйТекстИзHTML(ТекстHTML);
ДокументHTML = ПолучитьДокументHTMLИзОбычногоТекста(ТекстВходящегоПисьма);
ИначеЕсли ТипТекста = Перечисления.ТипыТекстовЭлектронныхПисем.ПростойТекст
@@ -4347,7 +4345,6 @@
Иначе
КодировкаПисьма = Кодировка;
Если ПустаяСтрока(КодировкаПисьма) Тогда
ПозицияАтрибутаКодировки = СтрНайти(ТекстHTML,"charset");
Если ПозицияАтрибутаКодировки <> 0 Тогда
@@ -4387,13 +4384,9 @@
КонецЦикла;
Если ТаблицаФайлов.Количество() Тогда
ДокументHTML = ЗаменитьИдентификаторыКартинокНаПутьКФайлам(ТекстПисьма, ТаблицаФайлов, КодировкаПисьма, ОбработатьКартинки);
Иначе
ДокументHTML = ПолучитьОбъектДокументHTMLИзТекстаHTML(ТекстПисьма, КодировкаПисьма);
КонецЕсли;
КонецЕсли;
@@ -4788,36 +4781,36 @@
// Формирует элемент HTML шапки исходящего электронного письма.
// Параметры:
// ЭлементРодитель - ЭлементHTML - родительский элемент HTML, для которого будет добавлен элемент данных шапки.
// Выборка - ВыборкаИзРезультатаЗапроса - выборка по данным письма.
// ШапкаПисьма - Структура - выборка по данным письма.
// ТолькоПоПредставлениюОтправителя - Булево - определяет необходимо ли включать адрес отправителя или только
// представление.
//
Функция СформироватьЭлементДанныхШапкиПисьма(ЭлементРодитель,Выборка,ТолькоПоПредставлениюОтправителя = Ложь) Экспорт
Функция СформироватьЭлементДанныхШапкиПисьма(ЭлементРодитель, ШапкаПисьма, ТолькоПоПредставлениюОтправителя = Ложь)
ДокументВладелец = ЭлементРодитель.ДокументВладелец;
ЭлементТаблица = ДокументВладелец.СоздатьЭлемент("table");
УстановитьАтрибутЭлементаHTML(ЭлементТаблица,"border", "0");
ОтправительПредставление = Выборка.ОтправительПредставление
+ ?(ТолькоПоПредставлениюОтправителя Или ПустаяСтрока(Выборка.ОтправительАдрес),
ОтправительПредставление = ШапкаПисьма.ОтправительПредставление
+ ?(ТолькоПоПредставлениюОтправителя Или ПустаяСтрока(ШапкаПисьма.ОтправительАдрес),
"",
"[" + Выборка.ОтправительАдрес +"]");
"[" + ШапкаПисьма.ОтправительАдрес +"]");
ДобавитьСтрокуВТаблицу(ЭлементТаблица, "From: ", ОтправительПредставление);
ДобавитьСтрокуВТаблицу(ЭлементТаблица, "Sent: ", Формат(Выборка.Дата,"ДЛФ=D'"));
ДобавитьСтрокуВТаблицу(ЭлементТаблица, "Sent: ", Формат(ШапкаПисьма.Дата,"ДЛФ=D'"));
ТаблицаПолучателейПисьма = ?(ТипЗнч(Выборка.ПолучателиПисьма) = Тип("ТаблицаЗначений"),Выборка.ПолучателиПисьма, Выборка.ПолучателиПисьма.Выгрузить());
ТаблицаПолучателейПисьма = ?(ТипЗнч(ШапкаПисьма.ПолучателиПисьма) = Тип("ТаблицаЗначений"),
ШапкаПисьма.ПолучателиПисьма, ШапкаПисьма.ПолучателиПисьма.Выгрузить());
ДобавитьСтрокуВТаблицу(ЭлементТаблица, "To: ", ПолучитьПредставленияПолучателейВходящегоПисьма(ТаблицаПолучателейПисьма));
ТаблицаПолучателейКопий = ?(ТипЗнч(Выборка.ПолучателиКопий) = Тип("ТаблицаЗначений"),Выборка.ПолучателиКопий, Выборка.ПолучателиКопий.Выгрузить());
ТаблицаПолучателейКопий = ?(ТипЗнч(ШапкаПисьма.ПолучателиКопий) = Тип("ТаблицаЗначений"),
ШапкаПисьма.ПолучателиКопий, ШапкаПисьма.ПолучателиКопий.Выгрузить());
Если ТаблицаПолучателейКопий.Количество() > 0 Тогда
ДобавитьСтрокуВТаблицу(ЭлементТаблица, "cc: ", ПолучитьПредставленияПолучателейВходящегоПисьма(ТаблицаПолучателейКопий));
КонецЕсли;
Тема = ?(ПустаяСтрока(Выборка.Тема), НСтр("ru = '<Без Темы>'"), Выборка.Тема);
Тема = ?(ПустаяСтрока(ШапкаПисьма.Тема), НСтр("ru = '<Без Темы>'"), ШапкаПисьма.Тема);
ДобавитьСтрокуВТаблицу(ЭлементТаблица, "Subject: ", Тема);
Возврат ЭлементТаблица;
@@ -4833,7 +4826,7 @@
Процедура ДополнитьТелоПисьмаШапкойПечатнойФормы(ДокументHTML, Выборка, ЭтоИсходящее) Экспорт
ЭлементТелоПисьма = ЭлементТелоПисьма(ДокументHTML);
МассивДочернихУзловТела = МассивДочернихУзловСодержащихHTML(ЭлементТелоПисьма);
МассивДочернихУзловТела = ДочерниеУзлыСодержащиеHTML(ЭлементТелоПисьма);
// Имя пользователя учетной записи.
ЭлементПользователь = СформироватьЭлементИмяПользователяУчетнойЗаписи(ЭлементТелоПисьма, Выборка);
@@ -4980,14 +4973,12 @@
// Элемент - ЭлементHTML
//
// Возвращаемое значение:
// Массив - массив дочерних узлов содержащих HTML.
// Массив
//
Функция МассивДочернихУзловСодержащихHTML(Элемент) Экспорт
МассивДочернихУзлов = Новый Массив;
Функция ДочерниеУзлыСодержащиеHTML(Элемент)
Результат = Новый Массив;
Для каждого ДочернийУзел Из Элемент.ДочерниеУзлы Цикл
Если ТипЗнч(ДочернийУзел) = Тип("ЭлементБлокHTML")
ИЛИ ТипЗнч(ДочернийУзел) = Тип("ЭлементHTML")
ИЛИ ТипЗнч(ДочернийУзел) = Тип("ТекстDOM")
@@ -4995,13 +4986,10 @@
ИЛИ ТипЗнч(ДочернийУзел) = Тип("ЭлементТаблицаHTML")
ИЛИ ТипЗнч(ДочернийУзел) = Тип("ЭлементФорматированногоТекстаHTML") Тогда
МассивДочернихУзлов.Добавить(ДочернийУзел);
Результат.Добавить(ДочернийУзел);
КонецЕсли;
КонецЦикла;
Возврат МассивДочернихУзлов;
Возврат Результат;
КонецФункции
@@ -5112,7 +5100,7 @@
// Имя - Строка - имя атрибута HTML.
// ТекстовоеСодержимое - Строка - текстовое содержимое атрибута.
//
Процедура УстановитьАтрибутЭлементаHTML(ЭлементHTML,Имя,ТекстовоеСодержимое)
Процедура УстановитьАтрибутЭлементаHTML(ЭлементHTML, Имя, ТекстовоеСодержимое)
АтрибутHTML = ЭлементHTML.ДокументВладелец.СоздатьАтрибут(Имя);
АтрибутHTML.ТекстовоеСодержимое = ТекстовоеСодержимое;
@@ -5130,18 +5118,13 @@
// Возвращаемое значение:
// ЭлементHTML - добавленный элемент.
//
Функция ДобавитьЭлементСАтрибутами(ЭлементРодитель,Имя,Атрибуты) Экспорт
Функция ДобавитьЭлементСАтрибутами(ЭлементРодитель, Имя, Атрибуты)
ЭлементHTML = ЭлементРодитель.ДокументВладелец.СоздатьЭлемент(Имя);
Для Каждого Атрибут Из Атрибуты Цикл
УстановитьАтрибутЭлементаHTML(ЭлементHTML, Атрибут.Ключ, Атрибут.Значение);
КонецЦикла;
ЭлементРодитель.ДобавитьДочерний(ЭлементHTML);
Возврат ЭлементHTML;
КонецФункции
@@ -5201,9 +5184,7 @@
// ВставляемыйЭлемент - ЭлементHTML - вставляемый элемент HTML.
// МассивДочернихЭлементовРодителя - Массив - массив дочерних элементов родительского элемента.
//
Процедура ВставитьЭлементHTMLПервымДочернимЭлементом(ЭлементРодитель,
ВставляемыйЭлемент,
МассивДочернихЭлементовРодителя) Экспорт
Процедура ВставитьЭлементHTMLПервымДочернимЭлементом(ЭлементРодитель, ВставляемыйЭлемент, МассивДочернихЭлементовРодителя)
Если МассивДочернихЭлементовРодителя.Количество() > 0 Тогда
ЭлементРодитель.ВставитьПеред(ВставляемыйЭлемент, МассивДочернихЭлементовРодителя[0]);
@@ -98,8 +98,9 @@
// Проверка давно не выполнялась.
Если ЗначениеЗаполнено(ИнформацияОПоследнейПроверке.ДатаПоследнейПроверки) Тогда
Подсказка = НСтр("ru = 'Последняя проверка выполнялась %1'");
Подсказка = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Подсказка, ИнформацияОПоследнейПроверке.ДатаПоследнейПроверки);
Подсказка = НСтр("ru = 'Последняя проверка выполнялась %1.'");
Подсказка = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Подсказка,
Формат(ИнформацияОПоследнейПроверке.ДатаПоследнейПроверки, "ДЛФ=Д"));
Иначе
Подсказка = "";
КонецЕсли;
@@ -199,17 +200,14 @@
// Возвращает дату и время последней проверки, а так же необходимость показа предупреждения
// о повторной проверке.
// Учитываются только системные проверки.
//
Функция ИнформацияОПоследнейПроверкеВеденияУчета() Экспорт
Функция ИнформацияОПоследнейПроверкеВеденияУчета(ГруппаПроверок = Неопределено) Экспорт
Результат = Новый Структура;
Результат.Вставить("ДатаПоследнейПроверки", Неопределено);
Результат.Вставить("ПредупреждатьОНеобходимостиПовторнойПроверки", Ложь);
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("КонтекстПроверокВеденияУчета", "СистемныеПроверки");
Запрос.Текст =
Запрос = Новый Запрос(
"ВЫБРАТЬ
| ЕСТЬNULL(МАКСИМУМ(СостоянияПроверокВеденияУчета.ПоследнийЗапуск), Неопределено) КАК ПоследнийЗапуск
|ИЗ
@@ -217,7 +215,14 @@
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПравилаПроверкиУчета КАК ПравилаПроверкиУчета
| ПО СостоянияПроверокВеденияУчета.Проверка = ПравилаПроверкиУчета.Ссылка
|ГДЕ
| ПравилаПроверкиУчета.КонтекстПроверокВеденияУчета = &КонтекстПроверокВеденияУчета";
| &ОтборГруппаПроверок");
Если ГруппаПроверок = Неопределено Тогда
ОтборГруппаПроверок = "ИСТИНА";
Иначе
ОтборГруппаПроверок = "ПравилаПроверкиУчета.КонтекстПроверокВеденияУчета = &КонтекстПроверокВеденияУчета";
КонецЕсли;
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ОтборГруппаПроверок", ОтборГруппаПроверок);
Запрос.УстановитьПараметр("КонтекстПроверокВеденияУчета", "СистемныеПроверки");
УстановитьПривилегированныйРежим(Истина);
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
УстановитьПривилегированныйРежим(Ложь);
@@ -234,6 +239,12 @@
КонецФункции
Функция ИнформацияОСистемныхПроверкахВеденияУчета() Экспорт
Возврат ИнформацияОПоследнейПроверкеВеденияУчета("СистемныеПроверки");
КонецФункции
Функция ПоследняяПроверкаОбъекта(Ссылка) Экспорт
УстановитьПривилегированныйРежим(Истина);
@@ -1771,16 +1782,8 @@
КонецПроцедуры
// Выполняет несколько проверок по переданным параметрам.
//
// Параметры:
// ПараметрыПроверки - Массив - элементы типа Структура, см. параметр
// ПараметрыПроверки в КонтрольВеденияУчета.ОписаниеПроблемы
// АдресХранилища - Строка - Адрес во временном хранилище для размещения результата.
//
Процедура ВыполнитьПроверкиВФоновомЗадании(Знач ПараметрыПроверки, АдресХранилища = Неопределено) Экспорт
Процедура ВыполнитьПроверки(Знач Проверки) Экспорт
Проверки = ПараметрыПроверки.Проверки;
Для Каждого Проверка Из Проверки Цикл
ВыполнитьПроверку(Проверка);
КонецЦикла;
@@ -16,7 +16,7 @@
// ПравилаКонвертации - ТаблицаЗначений - таблица, содержащая правила конвертации объектов.
//
// Возвращаемое значение:
// СтрокаТаблицыЗначений - СтрокаТаблицыЗначений правил конвертации.
// СтрокаТаблицыЗначений - строка таблицы правил конвертации.
//
Функция ИнициализироватьПравилоКонвертацииОбъекта(ПравилаКонвертации) Экспорт
@@ -29,10 +29,42 @@
// Инициализирует компоненты обмена.
//
// Параметры:
// НаправлениеОбмена - строка - "Отправка" либо "Получение".
// НаправлениеОбмена - Строка - направление выполнения обмена: "Отправка" | "Получение".
//
// Возвращаемое значение:
// Структура - Содержит компоненты обмена: правила обмена и параметры обмена.
// Структура - содержит компоненты обмена (правила обмена и параметры обмена):
// * ВерсияФорматаОбмена - Строка - номер версии формата обмена.
// * XMLСхема - Строка - пространство имен формата обмена.
// * МенеджерОбмена - ОбщийМодуль - модуль с правилами конвертации.
// * УзелКорреспондента - ПланОбменаСсылка - ссылка на узел плана обмена.
// * УзелКорреспондентаОбъект - ПланОбменаОбъект - объект узла плана обмена.
// * ВерсияФорматаМенеджераОбмена - Строка - номер версии формата модуля с правилами конвертации.
// * НаправлениеОбмена - Строка - "Отправка" или "Получение".
// * ЭтоОбменЧерезПланОбмена - Булево - признак выполнения обмена по плану обмена.
// * ФлагОшибки - Булево - признак наличия ошибки при выполнении действия обмена.
// * СтрокаСообщенияОбОшибке - Строка - описание ошибки при выполнении действия обмена.
// * КлючСообщенияЖурналаРегистрации - Строка - имя события для записи информации об ошибках в журнал регистрации.
// * ИспользоватьКвитирование - Булево - признак использования квитирования для удаления регистрации изменений.
// * ВыгруженныеОбъекты - Массив из ЛюбаяСсылка - коллекция выгруженных объектов.
// * НеВыгруженныеОбъекты - Массив из ЛюбаяСсылка - коллекция не выгруженных объектов.
// * ВыгруженныеПоСсылкеОбъекты - Массив из ЛюбаяСсылка - коллекция объектов, выгруженных "по ссылке".
// * ДокументыДляОтложенногоПроведения - ТаблицаЗначений - коллекция документов для отложенного проведения:
// ** ДокументСсылка - ДокументСсылка - ссылка на документ.
// ** ДатаДокумента - Дата - дата документа.
// * ПоддерживаемыеОбъектыXDTO - Массив из Строка - коллекция идентификаторов объектов формата.
// * ЗагруженныеОбъекты - ТаблицаЗначений - коллекция загруженных объектов:
// ** ИмяОбработчика - Строка - имя обработчика.
// ** Объект - СправочникОбъект, ДокументОбъект - загруженный объект.
// ** Параметры - Произвольный - произвольные параметры.
// ** СсылкаНаОбъект - ЛюбаяСсылка - ссылка на загруженный объект.
// * ПравилаОбработкиДанных - ТаблицаЗначений - коллекция правил обработки данных.
// * СостояниеОбменаДанными - Структура - описание состояния выполнения обмена:
// ** УзелИнформационнойБазы - ПланОбменаСсылка - узел плана обмена.
// ** ДействиеПриОбмене - ПеречислениеСсылка.ДействияПриОбмене - выполняемое действие.
// ** ДатаНачала - Дата - дата начала выполнения действия.
// ** ДатаОкончания - Дата - дата окончания выполнения действия.
// ** РезультатВыполненияОбмена - ПеречислениеСсылка.РезультатыВыполненияОбмена, Неопределено - результат
// выполнения действия.
//
Функция ИнициализироватьКомпонентыОбмена(НаправлениеОбмена) Экспорт
@@ -579,11 +611,11 @@
// Выполняет выгрузку объекта информационной базы.
//
// Параметры:
// КомпонентыОбмена - Структура - содержит все правила и параметры обмена.
// Объект - ЛюбаяСсылка - Ссылка на объект информационной базы.
// ПравилоОбработки - СтрокаТаблицыЗначений - Строка таблицы значений правил обработки данных,
// КомпонентыОбмена - см. ОбменДаннымиXDTOСервер.ИнициализироватьКомпонентыОбмена
// Объект - ЛюбаяСсылка - ссылка на объект информационной базы.
// ПравилоОбработки - СтрокаТаблицыЗначений - строка таблицы правил обработки данных,
// соответствующая правилу обработки типа выгружаемого объекта.
// Если ПравилоОбработки не задано, оно будет найдено по объекту метаданных выгружаемого объекта.
// Если параметр не задан, правило будет найдено по объекту метаданных выгружаемого объекта.
//
Процедура ВыгрузкаОбъектаВыборки(КомпонентыОбмена, Объект, ПравилоОбработки = Неопределено) Экспорт
@@ -835,21 +867,24 @@
ЗначениеXDTO = ОбъектXDTOИзДанныхXDTO(КомпонентыОбмена, ЗначениеСвойства, Свойство.Тип,,СсылкиИзОбъекта);
ИначеЕсли ТипСвойства = "ОбычноеСвойство" Тогда
Если ЭтоСсылкаXDTO(Свойство.Тип) Тогда // Конвертация ссылки
СвойствоТипЗначения = Свойство.Тип; // ТипЗначенияXDTO
ЗначениеXDTO = КонвертироватьСсылкуВXDTO(КомпонентыОбмена, ЗначениеСвойства, Свойство.Тип);
Если ЭтоСсылкаXDTO(СвойствоТипЗначения) Тогда // Конвертация ссылки
ЗначениеXDTO = КонвертироватьСсылкуВXDTO(КомпонентыОбмена, ЗначениеСвойства, СвойствоТипЗначения);
Если СсылкиИзОбъекта.Найти(ЗначениеСвойства) = Неопределено Тогда
СсылкиИзОбъекта.Добавить(ЗначениеСвойства);
КонецЕсли;
ИначеЕсли Свойство.Тип.Фасеты <> Неопределено
И Свойство.Тип.Фасеты.Перечисления <> Неопределено
И Свойство.Тип.Фасеты.Перечисления.Количество() > 0 Тогда // Конвертация перечисления
ЗначениеXDTO = КонвертироватьПеречислениеВXDTO(КомпонентыОбмена, ЗначениеСвойства, Свойство.Тип);
ИначеЕсли СвойствоТипЗначения.Фасеты <> Неопределено
И СвойствоТипЗначения.Фасеты.Перечисления <> Неопределено
И СвойствоТипЗначения.Фасеты.Перечисления.Количество() > 0 Тогда // Конвертация перечисления
ЗначениеXDTO = КонвертироватьПеречислениеВXDTO(КомпонентыОбмена, ЗначениеСвойства, СвойствоТипЗначения);
Иначе // Конвертация обычного значения.
ЗначениеXDTO = ФабрикаXDTO.Создать(Свойство.Тип, ЗначениеСвойства);
ЗначениеXDTO = ФабрикаXDTO.Создать(СвойствоТипЗначения, ЗначениеСвойства);
КонецЕсли;
ИначеЕсли ТипСвойства = "AdditionalInfo" Тогда
ЗначениеXDTO = СериализаторXDTO.ЗаписатьXDTO(ЗначениеСвойства);
@@ -861,11 +896,13 @@
ИмяСвойстваСтроки = Свойство.Тип.Свойства[0].Имя;
СписокXDTO = ЗначениеXDTO[ИмяСвойстваСтроки]; // СписокXDTO
Для Каждого ИсточникСтрока Из ЗначениеСвойства Цикл
ПриемникСтрока = ОбъектXDTOИзДанныхXDTO(КомпонентыОбмена, ИсточникСтрока, ТипТаблицы,,СсылкиИзОбъекта);
ЗначениеXDTO[ИмяСвойстваСтроки].Добавить(ПриемникСтрока);
СписокXDTO.Добавить(ПриемникСтрока);
КонецЦикла;
@@ -1150,8 +1187,9 @@
СвойстваТЧПриемника.Вставить(ИмяТЧПриемника, ТаблицаПКС);
КонецЕсли;
ТаблицаПКС = СвойстваТЧПриемника[ИмяТЧПриемника];
Для Каждого ПКС Из ТЧИСвойства.Свойства Цикл
СтрокаСвойство = СвойстваТЧПриемника[ИмяТЧПриемника].Добавить();
СтрокаСвойство = ТаблицаПКС.Добавить();
СтрокаСвойство.СвойствоФормата = ПКС.СвойствоФормата;
КонецЦикла;
@@ -1166,7 +1204,7 @@
ПКСДляТЧ = ТЧИСвойства.Свойства;
ИмяТЧПриемника = ТЧИСвойства.ТЧФормата;
ТЧПриемника = Неопределено;
ТЧПриемника = Неопределено; // ТаблицаЗначений
Если Не ЗначениеЗаполнено(ИмяТЧПриемника)
Или Не Приемник.Свойство(ИмяТЧПриемника, ТЧПриемника) Тогда
Продолжить;
@@ -1490,7 +1528,7 @@
// Возвращает объект информационной базы, соответствующий полученным данным.
//
// Параметры:
// КомпонентыОбмена - Структура - содержит все правила и параметры обмена.
// КомпонентыОбмена - см. ОбменДаннымиXDTOСервер.ИнициализироватьКомпонентыОбмена
// ДанныеXDTO - Структура - структура, имитирующая объект XDTO.
//
// ПравилоКонвертации - СтрокаТаблицыЗначений, Структура - параметры текущего правила конвертации.
@@ -1509,7 +1547,7 @@
// Возвращаемое значение:
// - Объект - объект ИБ, если передано действие "КонвертироватьИЗаписать",
// либо если передано действие "ПолучитьСсылку" и в процессе ее получения был создан объект.
// - Ссылка - ссылка на объект ИБ или пустая ссылка заданного типа, если было передано действие "ПолучитьСсылку"
// - ЛюбаяСсылка - ссылка на объект ИБ или пустая ссылка заданного типа, если было передано действие "ПолучитьСсылку"
// и в процессе ее получения объект не был создан.
//
Функция СтруктураОбъектаXDTOВДанныеИБ(КомпонентыОбмена, ДанныеXDTO, Знач ПравилоКонвертации, Действие = "КонвертироватьИЗаписать") Экспорт
@@ -2181,7 +2219,7 @@
// Выполняет преобразование объекта XDTO в структуру с данными.
//
// Параметры:
// ОбъектXDTO - ОбъектXDTO - Значение, которое необходимо преобразовать.
// ОбъектXDTO - ОбъектXDTO - значение, которое необходимо преобразовать.
//
// Возвращаемое значение:
// Структура - Структура, имитирующая объект XDTO.
@@ -2198,9 +2236,10 @@
КонецЦикла;
ЗначениеСсылки = Неопределено;
Если Приемник.Свойство("КлючевыеСвойства")
И Приемник.КлючевыеСвойства.Свойство("Ссылка") Тогда
Приемник.Вставить("Ссылка", Приемник.КлючевыеСвойства.Ссылка);
И Приемник.КлючевыеСвойства.Свойство("Ссылка", ЗначениеСсылки) Тогда
Приемник.Вставить("Ссылка", ЗначениеСсылки);
КонецЕсли;
Возврат Приемник;
@@ -3010,6 +3049,9 @@
КонецПроцедуры
// Параметры:
// КомпонентыОбмена - см. ОбменДаннымиXDTOСервер.ИнициализироватьКомпонентыОбмена
//
Процедура ЗаполнитьПоддерживаемыеОбъектыXDTO(КомпонентыОбмена) Экспорт
Если Не КомпонентыОбмена.ЭтоОбменЧерезПланОбмена
@@ -3239,18 +3281,22 @@
// Реквизиты объекта получаемых данных.
РеквизитыМассив = Новый Массив;
Для Каждого Реквизит Из МетаданныеОбъекта.СтандартныеРеквизиты Цикл
Для Сч = 0 По МетаданныеОбъекта.СтандартныеРеквизиты.Количество() - 1 Цикл
Реквизит = МетаданныеОбъекта.СтандартныеРеквизиты[Сч]; // ОписаниеСтандартногоРеквизита
Если Реквизит.Имя = "Наименование"
ИЛИ Реквизит.Имя = "Код"
ИЛИ Реквизит.Имя = "ЭтоГруппа"
ИЛИ Реквизит.Имя = "Родитель"
ИЛИ Реквизит.Имя = "Владелец"
ИЛИ Реквизит.Имя = "Дата"
ИЛИ Реквизит.Имя = "Номер" Тогда
Или Реквизит.Имя = "Код"
Или Реквизит.Имя = "ЭтоГруппа"
Или Реквизит.Имя = "Родитель"
Или Реквизит.Имя = "Владелец"
Или Реквизит.Имя = "Дата"
Или Реквизит.Имя = "Номер" Тогда
РеквизитыМассив.Добавить(Реквизит.Имя);
КонецЕсли;
КонецЦикла;
Для Каждого Реквизит Из МетаданныеОбъекта.Реквизиты Цикл
Для Сч = 0 По МетаданныеОбъекта.Реквизиты.Количество() - 1 Цикл
Реквизит = МетаданныеОбъекта.Реквизиты[Сч]; // ОбъектМетаданныхРеквизит
РеквизитыМассив.Добавить(Реквизит.Имя);
КонецЦикла;
@@ -3988,6 +4034,25 @@
КонецПроцедуры
// Структура параметров заголовка сообщения по умолчанию.
//
// Возвращаемое значение:
// Структура - описание параметров заголовка сообщения обмена:
// * ФорматОбмена - Строка - имя формата обмена.
// * ЭтоОбменЧерезПланОбмена - Булево - признак обмена через план обмена.
// * ОбменДаннымиСВнешнейСистемой - Булево - признак обмена с внешней системой.
// * ВерсияФорматаОбмена - Строка - номер версии формата обмена.
// * ИмяПланаОбмена - Строка - имя метаданных плана обмена.
// * ПсевдонимПредопределенногоУзла - Строка - код предопределенного узла до перекодирования.
// * ИдентификаторПолучателя - Строка - идентификатор узла получателя сообщения.
// * ИдентификаторОтправителя - Строка - идентификатор узла отправителя сообщения.
// * НомерСообщения - Число - номер исходящего сообщения.
// * НомерПринятого - Число - номер сообщения, загруженного корреспондентом.
// * ПоддерживаемыеВерсии - Массив из Строка - коллекция поддерживаемых версий формата.
// * ПоддерживаемыеОбъекты - ТаблицаЗначений - коллекция поддерживаемых объектов формата.
// * Префикс - Строка - префикс информационной базы корреспондента.
// * УзелКорреспондента - ПланОбменаСсылка, Неопределено - узел плана обмена.
//
Функция ПараметрыЗаголовкаСообщенияОбмена() Экспорт
ПараметрыЗаголовка = Новый Структура;
@@ -4016,6 +4081,10 @@
КонецФункции
// Параметры:
// ФайлОбмена - ЗаписьXML - объект для записи заголовка.
// ПараметрыЗаголовка - см. ОбменДаннымиXDTOСервер.ПараметрыЗаголовкаСообщенияОбмена
//
Процедура ЗаписатьЗаголовокСообщенияОбмена(ФайлОбмена, ПараметрыЗаголовка) Экспорт
// Записываем элемент <Message>
@@ -4030,6 +4099,8 @@
Header.Format = ПараметрыЗаголовка.ФорматОбмена;
Header.CreationDate = ТекущаяУниверсальнаяДата();
AvailableVersion = Header.AvailableVersion; // СписокXDTO
Если ПараметрыЗаголовка.ЭтоОбменЧерезПланОбмена Тогда
Confirmation = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип(XMLБазоваяСхема(), "Confirmation"));
@@ -4043,7 +4114,7 @@
Header.Confirmation = Confirmation;
Для Каждого ВерсияФормата Из ПараметрыЗаголовка.ПоддерживаемыеВерсии Цикл
Header.AvailableVersion.Добавить(ВерсияФормата);
AvailableVersion.Добавить(ВерсияФормата);
КонецЦикла;
ВыгрузитьПоддерживаемыеОбъектыФормата(Header,
@@ -4065,7 +4136,7 @@
Header.Confirmation = Confirmation;
Для Каждого ВерсияФормата Из ПараметрыЗаголовка.ПоддерживаемыеВерсии Цикл
Header.AvailableVersion.Добавить(ВерсияФормата);
AvailableVersion.Добавить(ВерсияФормата);
КонецЦикла;
Если ЗначениеЗаполнено(ПараметрыЗаголовка.ПсевдонимПредопределенногоУзла) Тогда
@@ -4081,13 +4152,20 @@
КонецЕсли;
Иначе
Header.AvailableVersion.Добавить(ПараметрыЗаголовка.ВерсияФорматаОбмена);
AvailableVersion.Добавить(ПараметрыЗаголовка.ВерсияФорматаОбмена);
КонецЕсли;
ФабрикаXDTO.ЗаписатьXML(ФайлОбмена, Header);
КонецПроцедуры
// Параметры:
// ОбъектXDTO - ОбъектXDTO -
// ТипXDTO - ТипОбъектаXDTO -
// Контекст - Структура -
// Отказ - Булево -
// ОписаниеОшибки - Строка -
//
Процедура ПроверитьОбъектXDTOПоСхеме(ОбъектXDTO, ТипXDTO, Контекст, Отказ, ОписаниеОшибки)
ПодробноеПредставление = "";
@@ -4402,6 +4480,9 @@
КонецФункции
// Параметры:
// Тип - ТипОбъектаXDTO - тип объекта.
//
Функция ТаблицаОбъектаПоТипу(Знач Тип)
Результат = Новый ТаблицаЗначений;
@@ -4465,7 +4546,7 @@
Если НомерЭтапа = 1 И ЗначениеЗаполнено(ТЧ.ТЧКонфигурации) И ЗначениеЗаполнено(ТЧ.ТЧФормата) Тогда
// Прямая конвертация табличных частей.
ТЧФормата = Неопределено;
ТЧФормата = Неопределено; // ТаблицаЗначений
Если НЕ ДанныеXDTO.Свойство(ТЧ.ТЧФормата, ТЧФормата) Тогда
Продолжить;
ИначеЕсли ТЧФормата.Количество() = 0 Тогда
@@ -4910,6 +4991,12 @@
#КонецОбласти
#Область ОтложенныеОперации
// Параметры:
// ДанныеДляЗаписиВИБ - СправочникОбъект,
// ДокументОбъект - объект для записи.
// ПравилоКонвертации - СтрокаТаблицыЗначений - строка с правилом конвертации.
// КомпонентыОбмена - см. ОбменДаннымиXDTOСервер.ИнициализироватьКомпонентыОбмена
//
Процедура ЗапомнитьОбъектДляОтложенногоЗаполнения(ДанныеДляЗаписиВИБ, ПравилоКонвертации, КомпонентыОбмена)
Если ПравилоКонвертации.ЕстьОбработчикПослеЗагрузкиВсехДанных Тогда
@@ -5427,12 +5514,13 @@
//
// Параметры:
// КомпонентыОбмена - Структура - содержит все правила и параметры обмена.
// ОбъектXDTO - Объект пакета XDTO "УдалениеОбъекта", который содержит информацию об удаленном объекте
// информационной базы.
// МассивОбъектовКУдалению - Массив, в который будет помещена ссылка на объект, подлежащий удалению.
// ОбъектXDTO - ОбъектXDTO - объект пакета XDTO "УдалениеОбъекта", который содержит информацию об
// удаленном объекте информационной базы.
// МассивОбъектовКУдалению - Массив из ЛюбаяСсылка - массив в который будет помещена ссылка на объект, подлежащий удалению.
// Собственно удаление объектов происходит после загрузки всех данных, при этом учитывается
// какие объекты были загружены (не удаляются ссылки, которые были загружены как другие
// ОбъектыXDTO).
// ТаблицыДляЗагрузки - ТаблицаЗначений - коллекция загружаемых таблиц данных.
//
Процедура ПрочитатьУдаление(КомпонентыОбмена, ОбъектXDTO, МассивОбъектовКУдалению, ТаблицыДляЗагрузки = Неопределено)
@@ -5690,6 +5778,9 @@
КонецПроцедуры
// Параметры:
// КомпонентыОбмена - см. ОбменДаннымиXDTOСервер.ИнициализироватьКомпонентыОбмена
//
Процедура ОбновитьНастройкиXDTOКорреспондента(КомпонентыОбмена)
// Проверяем возможность увеличения версии в корреспонденте.
@@ -6059,7 +6150,7 @@
//
// Параметры:
// КомпонентыОбмена - Структура - содержит все правила и параметры обмена.
// ПравилоОбработки - Строка таблицы правил обработки данных, соответствующая обрабатываемому ПОД.
// ПравилоОбработки - СтрокаТаблицыЗначений - строка правил обработки данных, соответствующая обрабатываемому ПОД.
//
// Возвращаемое значение - то что вернет обработчик ВыборкаДанных (например, выборка результата запроса).
//
@@ -6960,6 +7051,10 @@
КонецПроцедуры
// Параметры:
// ТипОбъектаXDTO - ТипОбъектаXDTO -
// Свойства - Массив из Строка -
//
Процедура ЗаполнитьСписокСвойствОбъектаXDTO(ТипОбъектаXDTO, Свойства)
Для Каждого ДочернееСвойство Из ТипОбъектаXDTO.Свойства Цикл
@@ -1369,7 +1369,8 @@
// Необходимо сбросить ранее установленный признак регистрации изменений для повторной отправки сообщения в МС.
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ОбменДаннымиВМоделиСервиса") Тогда
Константы["ЗарегистрированыИзмененияДанных"].Установить(Ложь);
МенеджерКонстанты = ОбщегоНазначения.ОбщийМодуль("Константы.ЗарегистрированыИзмененияДанных");
МенеджерКонстанты.Установить(Ложь);
КонецЕсли;
КонецЕсли;
@@ -1997,7 +1998,7 @@
ПолноеИмяРегистратора = ЧтениеXML.ЗначениеАтрибута("FilterType");
МенеджерРегистратора = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ПолноеИмяРегистратора);
СсылкаНаРегистратор = МенеджерРегистратора.ПолучитьСсылку(ЗначениеРегистратора);
ОбъектКОбработке.Отбор.Регистратор.Установить(СсылкаНаРегистратор);
ОбменДаннымиСлужебный.УстановитьЗначениеЭлементаОтбора(ОбъектКОбработке.Отбор, "Регистратор", СсылкаНаРегистратор);
КонецЕсли;
@@ -3760,7 +3761,7 @@
ВызватьИсключение ТекстИсключения;
КонецЕсли;
Набор.Отбор.Регистратор.Установить(ДокументОбъект.Ссылка);
ОбменДаннымиСлужебный.УстановитьЗначениеЭлементаОтбора(Набор.Отбор, "Регистратор", ДокументОбъект.Ссылка);
// Набор не записывается сразу, чтобы не откатывать транзакцию, если впоследствии
// выяснится, что на один из регистров не хватает прав.
@@ -3772,13 +3773,15 @@
Для Каждого СтрокаДвижения Из МассивОбрабатываемыхСтрокТаблицыДвижений Цикл
Попытка
СтрокаДвижения.НаборЗаписей.Записать();
Набор = СтрокаДвижения.НаборЗаписей; // РегистрНакопленияНаборЗаписей и т.п.
Набор.Записать();
Исключение
// Возможно «сработало» ограничение на уровне записей или подсистема даты запрета изменения.
ТекстИсключения = НСтр("ru = 'Операция не выполнена: %1
|%2'");
ТекстИсключения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстИсключения, СтрокаДвижения.Имя, КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
ВызватьИсключение ТекстИсключения;
// Возможно "сработало" ограничение на уровне записей или подсистема даты запрета изменения.
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Операция не выполнена: %1
|%2'"),
СтрокаДвижения.Имя,
КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;
КонецЦикла;
@@ -3792,33 +3795,9 @@
// Удаление записей регистрации из всех последовательностей.
Если ДокументОбъект.Метаданные().ЗаполнениеПоследовательностей = Метаданные.СвойстваОбъектов.ЗаполнениеПоследовательностей.ЗаполнятьАвтоматически Тогда
ТекстЗапроса = "";
КоллекцияПоследовательностей = ДокументОбъект.ПринадлежностьПоследовательностям;
Для Каждого Последовательность Из КоллекцияПоследовательностей Цикл
// В запросе получаем имена последовательностей, в которых документ зарегистрирован.
ТекстЗапроса = ТекстЗапроса + "
|" + ?(ТекстЗапроса = "", "", "ОБЪЕДИНИТЬ ВСЕ ") + "
|ВЫБРАТЬ """ + Последовательность.Метаданные().Имя
+ """ КАК Имя ИЗ " + Последовательность.Метаданные().ПолноеИмя()
+ " ГДЕ Регистратор = &Регистратор";
КонецЦикла;
Если ТекстЗапроса = "" Тогда
ТаблицаРегистраций = Новый ТаблицаЗначений();
Иначе
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("Регистратор", ДокументОбъект.Ссылка);
ТаблицаРегистраций = Запрос.Выполнить().Выгрузить();
КонецЕсли;
// Получение списка последовательностей в которых зарегистрирован документ.
Для Каждого НаборЗаписейРегистрацииВПоследовательности Из КоллекцияПоследовательностей Цикл
Если (НаборЗаписейРегистрацииВПоследовательности.Количество() > 0)
ИЛИ (НЕ ТаблицаРегистраций.Найти(НаборЗаписейРегистрацииВПоследовательности.Метаданные().Имя, "Имя") = Неопределено) Тогда
НаборЗаписейРегистрацииВПоследовательности.Очистить();
Для Каждого НаборЗаписейПоследовательности Из ДокументОбъект.ПринадлежностьПоследовательностям Цикл
Если НаборЗаписейПоследовательности.Количество() > 0 Тогда
НаборЗаписейПоследовательности.Очистить();
КонецЕсли;
КонецЦикла;
КонецЕсли;
@@ -4109,9 +4088,13 @@
КонецПроцедуры
// См. ОбщегоНазначенияПереопределяемый.ПриДобавленииИсключенийПоискаСсылок.
Процедура ПриДобавленииИсключенийПоискаСсылок(Массив) Экспорт
//
// Параметры:
// Исключения - см. ОбщегоНазначенияПереопределяемый.ПриДобавленииИсключенийПоискаСсылок.ИсключенияПоискаСсылок
//
Процедура ПриДобавленииИсключенийПоискаСсылок(Исключения) Экспорт
Массив.Добавить(Метаданные.РегистрыСведений.РезультатыОбменаДанными.ПолноеИмя());
Исключения.Добавить(Метаданные.РегистрыСведений.РезультатыОбменаДанными.ПолноеИмя());
КонецПроцедуры
@@ -4127,6 +4110,10 @@
КонецПроцедуры
// См. ИнтеграцияПодсистемБСП.ПриРегистрацииМенеджеровВнешнихМодулей.
//
// Параметры:
// Менеджеры - Массив из ОбщийМодуль - ссылки на модули.
//
Процедура ПриРегистрацииМенеджеровВнешнихМодулей(Менеджеры) Экспорт
Менеджеры.Добавить(ОбменДаннымиСервер);
@@ -7966,9 +7953,10 @@
Формат(Окр(ФайлАрхива.Размер() / 1024 / 1024, 3), "ЧН=0; ЧГ=0"));
ЗаписьЖурналаРегистрацииОбменаДанными(Комментарий, СтруктураНастроекОбмена);
ИмяФайла = ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла(КаталогСборки, Разархиватор.Элементы[0].Имя);
ЭлементАрхива = Разархиватор.Элементы.Получить(0);
ИмяФайла = ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла(КаталогСборки, ЭлементАрхива.Имя);
Разархиватор.Извлечь(Разархиватор.Элементы[0], КаталогСборки);
Разархиватор.Извлечь(ЭлементАрхива, КаталогСборки);
Разархиватор.Закрыть();
Файл = Новый Файл(ИмяФайла);
@@ -8841,7 +8829,7 @@
Запрос.Текст = ТекстЗапроса;
Запрос.УстановитьПараметр("УзелИнформационнойБазы", УзелИнформационнойБазы);
МассивРезультатовЗапроса = Запрос.ВыполнитьПакет();
МассивРезультатовЗапроса = Запрос.ВыполнитьПакет(); // Массив из РезультатЗапроса
ВыборкаРезультатовЗагрузкиДанных = МассивРезультатовЗапроса[0].Выбрать();
ВыборкаРезультатовВыгрузкиДанных = МассивРезультатовЗапроса[1].Выбрать();
@@ -9449,7 +9437,7 @@
КонецЕсли;
//
СтруктураНастроекОбмена.ИмяПланаОбмена = СтруктураНастроекОбмена.УзелИнформационнойБазы.Метаданные().Имя;
СтруктураНастроекОбмена.ИмяПланаОбмена = ОбменДаннымиПовтИсп.ПолучитьИмяПланаОбмена(СтруктураНастроекОбмена.УзелИнформационнойБазы);
СтруктураНастроекОбмена.ОбменПоПравиламКонвертацииОбъектов = ОбменДаннымиПовтИсп.ЭтоУзелУниверсальногоОбменаДанными(СтруктураНастроекОбмена.УзелИнформационнойБазы);
СтруктураНастроекОбмена.ТекущийУзелПланаОбмена = ПланыОбмена[СтруктураНастроекОбмена.ИмяПланаОбмена].ЭтотУзел();
@@ -10262,7 +10250,7 @@
// Регистрирует ошибки при отложенной записи объекта в мониторе проблем обмена.
//
// Параметры:
// Объект - Объект ссылочного типа - Объект при отложенной записи которого возникли ошибки.
// Объект - СправочникОбъект, ДокументОбъект и т.п. - объект, при отложенной записи которого возникли ошибки.
// УзелОбмена - ПланОбменаСсылка - Узел информационной базы из которой получен объект.
// СообщениеОбОшибке - Строка - текст сообщения для журнала регистрации.
// Рекомендуется передавать в качестве этого параметра КраткоеПредставлениеОшибки(ИнформацияОбОшибке()).
@@ -10331,7 +10319,7 @@
// Подсчет количества объектов ИБ, подлежащих выгрузке при создании начального образа.
//
// Параметры:
// Получатель - План обмена объект.
// Получатель - ПланОбменаОбъект - узел плана обмена, соответствующий получателю.
//
// Возвращаемое значение - число.
Функция РассчитатьКоличествоОбъектовВБазе(Получатель)
@@ -11473,6 +11461,13 @@
// Возвращает признак того, что реквизит входит в подмножество стандартных реквизитов.
//
// Параметры:
// СтандартныеРеквизиты - ОписанияСтандартныхРеквизитов - коллекция стандартных реквизитов.
// ИмяРеквизита - Строка - имя проверяемого реквизита.
//
// Возвращаемое значение:
// Булево - Истина, если заданный реквизит является стандартным.
//
Функция ЭтоСтандартныйРеквизит(СтандартныеРеквизиты, ИмяРеквизита) Экспорт
Для Каждого Реквизит Из СтандартныеРеквизиты Цикл
@@ -11917,9 +11912,7 @@
КонецФункции
// Параметры:
// СтрокиДерева - КоллекцияСтрокДереваЗначений - строки дерева идентификаторов:
// * Идентификатор - Строка -
// * Ссылка - ЛюбаяСсылка -
// СтрокиДерева - КоллекцияСтрокДереваЗначений - строки дерева идентификаторов объектов.
//
Процедура ЗаполнитьИдентификаторыСсылокВДереве(СтрокиДерева)
@@ -13069,6 +13062,15 @@
КонецПроцедуры
// Для внутреннего использования.
//
// Параметры:
// Объект - СправочникОбъект, ДокументОбъект и т.п. - объект данных.
//
// Возвращаемое значение:
// Структура - объект данных в виде структуры. Ключи соответствуют именам реквизитов и табличных частей,
// значения - соответствующим им значениям.
//
Функция ПолучитьКонтекстОбъекта(Знач Объект) Экспорт
Результат = Новый Структура;
@@ -13405,6 +13407,10 @@
КонецФункции
// См. ТекущиеДелаПереопределяемый.ПриОпределенииОбработчиковТекущихДел.
//
// Параметры:
// ТекущиеДела - ТаблицаЗначений - определяет параметры дела.
//
Процедура ПриЗаполненииСпискаТекущихДелПредупрежденияСинхронизации(ТекущиеДела)
МодульТекущиеДелаСервер = ОбщегоНазначения.ОбщийМодуль("ТекущиеДелаСервер");
@@ -13443,6 +13449,10 @@
КонецПроцедуры
// См. ТекущиеДелаПереопределяемый.ПриОпределенииОбработчиковТекущихДел.
//
// Параметры:
// ТекущиеДела - ТаблицаЗначений - определяет параметры дела.
//
Процедура ПриЗаполненииСпискаТекущихДелНеобходимоОбновление(ТекущиеДела)
МодульТекущиеДелаСервер = ОбщегоНазначения.ОбщийМодуль("ТекущиеДелаСервер");
@@ -13567,8 +13577,8 @@
// Возвращаемое значение:
// ТаблицаЗначений - коллекция регистров с движениями по заданному регистратору:
// * Имя - Строка - полное имя таблицы регистра.
// * НаборЗаписей - РегистрСведенийНаборЗаписей, РегистрНакопленияНаборЗаписей -
// * БезусловноеУдаление - Булево -
// * НаборЗаписей - РегистрСведенийНаборЗаписей, РегистрНакопленияНаборЗаписей, и т.п. - набор записей.
// * БезусловноеУдаление - Булево - признак безусловного удаления записей.
//
Функция ОпределитьНаличиеДвиженийПоДокументу(ДокументСсылка)
@@ -13657,7 +13667,7 @@
// Структура - содержит поля:
// * ВариантыНастроекОбмена - ТаблицаЗначений - Возможные настройки плана обмена.
// Используется для для создания заготовленных
// шаблонов с заполненным настройками планов обмена
// шаблонов с заполненным настройками планов обмена.
// * ВидГруппыДляВариантовНастроек - ВидГруппыФормы - вариант вида группы для отображения в
// дереве команд создания обмена вариантов настроек.
// * ИмяКонфигурацииИсточника - Строка - Имя конфигурации источника, выводимое в
@@ -13758,7 +13768,7 @@
// Массив = Новый Массив;
// Массив.Добавить("Константа.ИспользоватьСинхронизациюДанных");
// Массив.Добавить("Справочник.Валюты");
// Массив.Добавить("Справочник.Организации");
// Массив.Добавить("Справочник._ДемоОрганизации");
// Отбор = Новый Структура;
// Отбор.Вставить("ПолноеИмя", Массив);
//
@@ -14085,13 +14095,17 @@
КонецПроцедуры
// Параметры:
// ЗапросыРазрешений - Массив из УникальныйИдентификатор - коллекция запросов разрешений.
// Объект - КонстантаМенеджерЗначения - менеджер значения объекта данных.
//
Процедура ЗапросВнешнихРесурсовДляКаталогаСообщенийОбменаДанными(ЗапросыРазрешений, Объект) Экспорт
ЗначениеКонстанты = Объект.Значение;
МодульРаботаВБезопасномРежиме = ОбщегоНазначения.ОбщийМодуль("РаботаВБезопасномРежиме");
Если Не ПустаяСтрока(ЗначениеКонстанты) Тогда
Разрешения = Новый Массив();
Разрешения = Новый Массив;
Разрешения.Добавить(МодульРаботаВБезопасномРежиме.РазрешениеНаИспользованиеКаталогаФайловойСистемы(
ЗначениеКонстанты, Истина, Истина));
@@ -14162,9 +14176,16 @@
// ЕстьСценарийУзла - Булево - флаг необходимости дополнительной настройки.
//
// Возвращаемое значение:
// Структура - данные для дальнейшего оперирования дополнением выгрузки.
// Структура - данные для дальнейшего оперирования дополнением выгрузки:
// * УзелИнформационнойБазы - ПланОбменаСсылка - ссылка на узел, для которого производится настройка.
// * ВариантВыгрузки - Число - текущий вариант выгрузки.
// * ПериодОтбораВсехДокументов - СтандартныйПериод - период отбора документов. По умолчанию - прошлый месяц.
// * АдресКомпоновщикаВсехДокументов - Строка - адрес компоновщика настроек для отбора документов.
// * ДополнительнаяРегистрация - см. ОписаниеДополнительнойРегистрацииВариантаВыгрузки
// * ПараметрыСценарияДополнения - см. ОписаниеСтандартныхВариантовДополненияВыгрузки
// * АдресХранилищаФормы - УникальныйИдентификатор - уникальный идентификатор формы для временного хранилища.
//
Функция ИнтерактивноеИзменениеВыгрузки(Знач УзелИнформационнойБазы, Знач АдресХранилищаФормы, Знач ЕстьСценарийУзла=Неопределено) Экспорт
Функция ИнтерактивноеИзменениеВыгрузки(Знач УзелИнформационнойБазы, Знач АдресХранилищаФормы, Знач ЕстьСценарийУзла = Неопределено) Экспорт
УстановитьПривилегированныйРежим(Истина);
@@ -14183,64 +14204,167 @@
Данные = ОбработкаДополнения.КомпоновщикНастроекОбщегоОтбора(АдресХранилищаФормы);
Результат.Вставить("АдресКомпоновщикаВсехДокументов", ПоместитьВоВременноеХранилище(Данные, АдресХранилищаФормы));
Результат.Вставить("ДополнительнаяРегистрация", Новый ТаблицаЗначений);
Колонки = Результат.ДополнительнаяРегистрация.Колонки;
Результат.Вставить("ДополнительнаяРегистрация", ОписаниеДополнительнойРегистрацииВариантаВыгрузки());
ТипСтрока = Новый ОписаниеТипов("Строка");
Колонки.Добавить("ПолноеИмяМетаданных", ТипСтрока);
Колонки.Добавить("Отбор", Новый ОписаниеТипов("ОтборКомпоновкиДанных"));
Колонки.Добавить("Период", Новый ОписаниеТипов("СтандартныйПериод"));
Колонки.Добавить("ВыборПериода", Новый ОписаниеТипов("Булево"));
Колонки.Добавить("Представление", ТипСтрока);
Колонки.Добавить("ОтборСтрокой", ТипСтрока);
Колонки.Добавить("Количество", ТипСтрока);
Результат.Вставить("ПараметрыСценарияДополнения", ОписаниеСтандартныхВариантовДополненияВыгрузки());
Результат.Вставить("ПараметрыСценарияДополнения", Новый Структура);
ПараметрыСценарияДополнения = Результат.ПараметрыСценарияДополнения;
ИмяПланаОбмена = ОбменДаннымиПовтИсп.ПолучитьИмяПланаОбмена(УзелИнформационнойБазы);
ПараметрыСценарияДополнения.Вставить("ВариантБезДополнения", Новый Структура("Использование, Порядок, Заголовок", Истина, 1));
ПараметрыСценарияДополнения.ВариантБезДополнения.Вставить("Пояснение",
НСтр("ru='Будут отправлены только данные согласно общим настройкам.'"));
ПараметрыСценарияДополнения.Вставить("ВариантВсеДокументы", Новый Структура("Использование, Порядок, Заголовок", Истина, 2));
ПараметрыСценарияДополнения.ВариантВсеДокументы.Вставить("Пояснение",
НСтр("ru='Дополнительно будут отправлены все документы за период, удовлетворяющие условиям отбора.'"));
ПараметрыСценарияДополнения.Вставить("ВариантПроизвольныйОтбор", Новый Структура("Использование, Порядок, Заголовок", Истина, 3));
ПараметрыСценарияДополнения.ВариантПроизвольныйОтбор.Вставить("Пояснение",
НСтр("ru='Дополнительно будут отправлены данные согласно отбору.'"));
ПараметрыСценарияДополнения.Вставить("ВариантДополнительно", Новый Структура("Использование, Порядок, Заголовок", Ложь, 4));
ПараметрыСценарияДополнения.ВариантДополнительно.Вставить("Пояснение",
НСтр("ru='Будут отправлены дополнительные данные по настройкам.'"));
ВариантДополнительно = ПараметрыСценарияДополнения.ВариантДополнительно;
ВариантДополнительно.Вставить("Заголовок", "");
ВариантДополнительно.Вставить("ИспользоватьПериодОтбора", Ложь);
ВариантДополнительно.Вставить("ПериодОтбора");
ВариантДополнительно.Вставить("Отбор", Результат.ДополнительнаяРегистрация.Скопировать());
ВариантДополнительно.Вставить("ИмяФормыОтбора");
ВариантДополнительно.Вставить("ЗаголовокКомандыФормы");
МетаУзел = УзелИнформационнойБазы.Метаданные();
Если ЕстьСценарийУзла=Неопределено Тогда
Если ЕстьСценарийУзла = Неопределено Тогда
// Можно определить по метаданным узла.
ЕстьСценарийУзла = Ложь;
КонецЕсли;
Если ЕстьСценарийУзла Тогда
Если ЕстьАлгоритмМенеджераПланаОбмена("НастроитьИнтерактивнуюВыгрузку",МетаУзел.Имя) Тогда
МодульМенеджераУзла = ПланыОбмена[МетаУзел.Имя];
Если ЕстьСценарийУзла
И ЕстьАлгоритмМенеджераПланаОбмена("НастроитьИнтерактивнуюВыгрузку", ИмяПланаОбмена) Тогда
МодульМенеджераУзла = ПланыОбмена[ИмяПланаОбмена];
МодульМенеджераУзла.НастроитьИнтерактивнуюВыгрузку(УзелИнформационнойБазы, Результат.ПараметрыСценарияДополнения);
КонецЕсли;
КонецЕсли;
Результат.Вставить("АдресХранилищаФормы", АдресХранилищаФормы);
УстановитьПривилегированныйРежим(Ложь);
Возврат Результат;
КонецФункции
// Возвращаемое значение:
// ТаблицаЗначений - содержит строки с описанием подробных отборов по сценарию узла:
// * ПолноеИмяМетаданных - Строка - полное имя метаданных регистрируемого объекта, отбор которого описывает строка.
// Например "Документ._ДемоПоступлениеТоваров". Можно
// использовать специальные значения "ВсеДокументы" и
// "ВсеСправочники" для отбора соответственно всех
// документов и всех справочников, регистрирующихся на узле "Получатель".
// * Отбор - ОтборКомпоновкиДанных - отбор по умолчанию. Поля отбора формируются в соответствии с общим
// правилами формирования полей компоновки. Например, для указания
// отбора по реквизиту документа "Организация", необходимо
// использовать поле "Ссылка.Организация".
// * Период - СтандартныйПериод - значение периода общего отбора для метаданных строки, предлагаемого по умолчанию.
// * ВыборПериода - Булево - признак того, что данная строка описывает отбор с общим периодом.
// * Представление - Строка - представление отбора.
// * ОтборСтрокой - Строка - значение отбора в виде строки.
// * Количество - Строка - количество элементов в отборе.
//
Функция ОписаниеДополнительнойРегистрацииВариантаВыгрузки()
ДополнительнаяРегистрация = Новый ТаблицаЗначений;
ДополнительнаяРегистрация.Колонки.Добавить("ПолноеИмяМетаданных", Новый ОписаниеТипов("Строка"));
ДополнительнаяРегистрация.Колонки.Добавить("Отбор", Новый ОписаниеТипов("ОтборКомпоновкиДанных"));
ДополнительнаяРегистрация.Колонки.Добавить("Период", Новый ОписаниеТипов("СтандартныйПериод"));
ДополнительнаяРегистрация.Колонки.Добавить("ВыборПериода", Новый ОписаниеТипов("Булево"));
ДополнительнаяРегистрация.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
ДополнительнаяРегистрация.Колонки.Добавить("ОтборСтрокой", Новый ОписаниеТипов("Строка"));
ДополнительнаяРегистрация.Колонки.Добавить("Количество", Новый ОписаниеТипов("Строка"));
Возврат ДополнительнаяРегистрация;
КонецФункции
// Возвращаемое значение:
// Структура - набор вариантов дополнения выгрузки:
// * ВариантБезДополнения - см. ОписаниеСтандартногоВариантаБезДополнения
// * ВариантВсеДокументы - см. ОписаниеСтандартногоВариантаВсеДокументы
// * ВариантПроизвольныйОтбор - см. ОписаниеСтандартногоВариантаПроизвольныйОтбор
// * ВариантДополнительно - см. ОписаниеСтандартногоВариантаДополнительно
//
Функция ОписаниеСтандартныхВариантовДополненияВыгрузки()
Результат = Новый Структура;
Результат.Вставить("ВариантБезДополнения", ОписаниеСтандартногоВариантаБезДополнения());
Результат.Вставить("ВариантВсеДокументы", ОписаниеСтандартногоВариантаВсеДокументы());
Результат.Вставить("ВариантПроизвольныйОтбор", ОписаниеСтандартногоВариантаПроизвольныйОтбор());
Результат.Вставить("ВариантДополнительно", ОписаниеСтандартногоВариантаДополнительно());
Возврат Результат;
КонецФункции
// Возвращаемое значение:
// Структура - настройки типового варианта дополнения выгрузки "Не добавлять":
// * Использование - Булево - признак разрешения использования варианта. По умолчанию Истина.
// * Порядок - Число - порядок размещения варианта на форме помощника, сверху вниз. По умолчанию 1.
// * Заголовок - Строка - позволяет переопределить название типового варианта.
// * Пояснение - Строка - позволяет переопределить текст пояснения варианта для пользователя.
//
Функция ОписаниеСтандартногоВариантаБезДополнения()
Результат = Новый Структура;
Результат.Вставить("Использование", Истина);
Результат.Вставить("Порядок", 1);
Результат.Вставить("Заголовок", "");
Результат.Вставить("Пояснение", НСтр("ru = 'Будут отправлены только данные согласно общим настройкам.'"));
Возврат Результат;
КонецФункции
// Возвращаемое значение:
// Структура - настройки типового варианта дополнения выгрузки "Добавить все документы за период":
// * Использование - Булево - признак разрешения использования варианта. По умолчанию Истина.
// * Порядок - Число - порядок размещения варианта на форме помощника, сверху вниз. По умолчанию 2.
// * Заголовок - Строка - позволяет переопределить название типового варианта.
// * Пояснение - Строка - позволяет переопределить текст пояснения варианта для пользователя.
//
Функция ОписаниеСтандартногоВариантаВсеДокументы()
Результат = Новый Структура;
Результат.Вставить("Использование", Истина);
Результат.Вставить("Порядок", 2);
Результат.Вставить("Заголовок", "");
Результат.Вставить("Пояснение", НСтр("ru = 'Дополнительно будут отправлены все документы за период, удовлетворяющие условиям отбора.'"));
Возврат Результат;
КонецФункции
// Возвращаемое значение:
// Структура - настройки типового варианта дополнения выгрузки "Добавить данные с произвольным отбором":
// * Использование - Булево - признак разрешения использования варианта. По умолчанию Истина.
// * Порядок - Число - порядок размещения варианта на форме помощника, сверху вниз. По умолчанию 3.
// * Заголовок - Строка - позволяет переопределить название типового варианта.
// * Пояснение - Строка - позволяет переопределить текст пояснения варианта для пользователя.
//
Функция ОписаниеСтандартногоВариантаПроизвольныйОтбор()
Результат = Новый Структура;
Результат.Вставить("Использование", Истина);
Результат.Вставить("Порядок", 3);
Результат.Вставить("Заголовок", "");
Результат.Вставить("Пояснение", НСтр("ru = 'Дополнительно будут отправлены данные согласно отбору.'"));
Возврат Результат;
КонецФункции
// Возвращаемое значение:
// Структура - настройки типового варианта дополнения выгрузки по сценарию узла:
// * Использование - Булево - признак разрешения использования варианта. По умолчанию Ложь.
// * Порядок - Число - порядок размещения варианта на форме помощника, сверху вниз. По умолчанию 4.
// * Заголовок - Строка - позволяет переопределить название типового варианта.
// * Пояснение - Строка - позволяет переопределить текст пояснения варианта для пользователя.
// * ИспользоватьПериодОтбора - Булево - признак того, что необходим общий отбор по периоду. По умолчанию Ложь.
// * ПериодОтбора - СтандартныйПериод - значение периода общего отбора, предлагаемого по умолчанию.
// * ИмяФормыОтбора - Строка - имя формы, вызываемой для редактирования настроек.
// * ЗаголовокКомандыФормы - Строка - заголовок для отрисовки на форме команды открытия формы настроек.
// * Отбор - см. ОписаниеДополнительнойРегистрацииВариантаВыгрузки
//
Функция ОписаниеСтандартногоВариантаДополнительно()
Результат = Новый Структура;
Результат.Вставить("Использование", Истина);
Результат.Вставить("Порядок", 3);
Результат.Вставить("Заголовок", "");
Результат.Вставить("Пояснение", НСтр("ru = 'Дополнительно будут отправлены данные согласно отбору.'"));
Результат.Вставить("ИспользоватьПериодОтбора", Ложь);
Результат.Вставить("ПериодОтбора", Новый СтандартныйПериод);
Результат.Вставить("ИмяФормыОтбора", "");
Результат.Вставить("ЗаголовокКомандыФормы", "");
Результат.Вставить("Отбор", ОписаниеДополнительнойРегистрацииВариантаВыгрузки());
Возврат Результат;
КонецФункции
// Очистка отбора всех документов.
@@ -14410,8 +14534,7 @@
//
// Параметры:
// Форма - ФормаКлиентскогоПриложения - форма для установки реквизита.
// НастройкиДополненияВыгрузки - Структура - исходные настройки:
// * ДополнительнаяРегистрация - ДеревоЗначений -
// НастройкиДополненияВыгрузки - см. ИнтерактивноеИзменениеВыгрузки
// ИмяРеквизитаДополнения - Строка - имя реквизита формы для создания или заполнения.
//
Процедура ИнтерактивноеИзменениеВыгрузкиРеквизитПоНастройкам(Форма, Знач НастройкиДополненияВыгрузки, Знач ИмяРеквизитаДополнения="ДополнениеВыгрузки") Экспорт
@@ -14453,9 +14576,11 @@
// Проверяем и добавляем колонки дополнительной регистрации сценария узла.
ПутьРеквизитаТаблицы = РеквизитДополнения.Имя + ".ДополнительнаяРегистрацияСценарияУзла";
Если Форма.ПолучитьРеквизиты(ПутьРеквизитаТаблицы).Количество()=0 Тогда
Если Форма.ПолучитьРеквизиты(ПутьРеквизитаТаблицы).Количество() = 0 Тогда
Добавляемые.Очистить();
Колонки = ПараметрыСценарияДополнения.ВариантДополнительно.Отбор.Колонки;
Для Каждого Колонка Из Колонки Цикл
Добавляемые.Добавить(Новый РеквизитФормы(Колонка.Имя, Колонка.ТипЗначения, ПутьРеквизитаТаблицы));
КонецЦикла;
@@ -923,7 +923,7 @@
КонецПроцедуры
// Параметры:
// Данные - СправочникОбъект, ДокументОбъект, ПланСчетовОбъект, ПланВидовРасчетаОбъект - объект данных.
// Данные - СправочникОбъект, ПланСчетовОбъект, РегистрСведенийНаборЗаписей, и т.п. - произвольный объект данных.
// ТаблицаПредопределенных - см. ОбменДаннымиСлужебный.ТаблицаПредопределенныхДанных
//
Процедура ЗаменитьСсылкиНаПредопределенныеЭлементы(Данные, ТаблицаПредопределенных) Экспорт
@@ -966,9 +966,15 @@
ИначеЕсли ОбщегоНазначения.ЭтоРегистр(МетаданныеОбъекта) Тогда
Для Каждого ЭлементОтбора Из Данные.Отбор Цикл
ЗначениеОтбора = Новый Структура("Значение", ЭлементОтбора.Значение);
ПроверитьЗаменитьСсылкуПредопределенногоВРеквизитеОбъекта(ЗначениеОтбора, "Значение", ТаблицаПредопределенных);
ЭлементОтбора.Установить(ЗначениеОтбора.Значение);
СтруктураОтбора = Новый Структура("Значение, Использование");
ЗаполнитьЗначенияСвойств(СтруктураОтбора, ЭлементОтбора);
Если СтруктураОтбора.Использование = Ложь Тогда
Продолжить;
КонецЕсли;
ПроверитьЗаменитьСсылкуПредопределенногоВРеквизитеОбъекта(СтруктураОтбора, "Значение", ТаблицаПредопределенных);
ЭлементОтбора.Установить(СтруктураОтбора.Значение);
КонецЦикла;
ПроверитьЗаменитьСсылкуПредопределенныхВТаблицеДанных(Данные, ТаблицаПредопределенных);
@@ -1047,6 +1053,20 @@
Возврат Результат;
КонецФункции
// Параметры:
// Отбор - Отбор - произвольный отбор.
// КлючЭлемента - Строка - имя элемента отбора.
// ЗначениеЭлемента - Произвольный - значение элемента отбора.
//
Процедура УстановитьЗначениеЭлементаОтбора(Отбор, КлючЭлемента, ЗначениеЭлемента) Экспорт
ЭлементОтбора = Отбор.Найти(КлючЭлемента);
Если ЭлементОтбора <> Неопределено Тогда
ЭлементОтбора.Установить(ЗначениеЭлемента);
КонецЕсли;
КонецПроцедуры
#Область РаботаСРегистрамиСведений
// Добавляет одну запись в регистр сведений по переданным значениям структуры.
@@ -1138,25 +1158,15 @@
//
Функция СоздатьНаборЗаписейРегистраСведений(СтруктураЗаписи, ИмяРегистра) Экспорт
МетаданныеРегистра = Метаданные.РегистрыСведений[ИмяРегистра]; // ОбъектМетаданныхРегистрСведений
// Создаем набор записей регистра.
НаборЗаписей = РегистрыСведений[ИмяРегистра].СоздатьНаборЗаписей();
НаборЗаписей = РегистрыСведений[ИмяРегистра].СоздатьНаборЗаписей(); // РегистрСведенийНаборЗаписей
// Устанавливаем отбор по измерениям регистра.
Для Каждого Измерение Из МетаданныеРегистра.Измерения Цикл
// Если задано значение в структуре, то отбор устанавливаем.
ЗначениеСвойства = Неопределено;
Если СтруктураЗаписи.Свойство(Измерение.Имя, ЗначениеСвойства) Тогда
НаборЗаписей.Отбор[Измерение.Имя].Установить(ЗначениеСвойства);
КонецЕсли;
Для Каждого КлючЗначение Из СтруктураЗаписи Цикл
УстановитьЗначениеЭлементаОтбора(НаборЗаписей.Отбор, КлючЗначение.Ключ, КлючЗначение.Значение);
КонецЦикла;
Возврат НаборЗаписей;
КонецФункции
#КонецОбласти
@@ -436,7 +436,7 @@
//
// Параметры:
// Получатель - ПланОбменаСсылка - узел плана обмена, для которого выполняется регистрация изменений
// данных;
// данных.
// Данные - СправочникОбъект, ДокументОбъект, Произвольный, УдалениеОбъекта - объект, представляющий данные,
// хранимые в базе данных, такой как документ, элемент справочника, счет бухгалтерского учета, менеджер
// записи константы, набор записей регистра и т. п.
@@ -750,7 +750,7 @@
Для Каждого Строка Из ЗарегистрированныеДанныеОдногоТипа Цикл
СсылкаНаОбъект = Строка.Ссылка; // ЛюбаяСсылка
СсылкаНаОбъект = Строка.Ссылка;
Если ОбщегоНазначения.СсылкаСуществует(СсылкаНаОбъект) Тогда
@@ -781,7 +781,7 @@
Если ЗарегистрированныеДанныеОдногоТипа.Колонки.Найти(ЭлементОтбора.Имя) <> Неопределено Тогда
НаборЗаписей.Отбор[ЭлементОтбора.Имя].Установить(Строка[ЭлементОтбора.Имя]);
ЭлементОтбора.Установить(Строка[ЭлементОтбора.Имя]);
КонецЕсли;
@@ -3568,11 +3568,10 @@
КонецПроцедуры
// Параметры:
// Объект - СправочникОбъект, ДокументОбъект, ПланВидовХарактеристикОбъект, ПланСчетовОбъект, ПланВидовРасчетаОбъект,
// БизнесПроцессОбъект, ЗадачаОбъект -
// МетаданныеОбъекта - ОбъектМетаданных -
// ЗаписатьОбъект - Булево -
// ЭтоСсылочныйТип - Булево -
// Объект - СправочникОбъект, ДокументОбъект, и т.п - элемент данных.
// МетаданныеОбъекта - ОбъектМетаданных - метаданные элемента данных.
// ЗаписатьОбъект - Булево - Истина, если было выполнено замещение объекта этой ИБ полученным объектом.
// ЭтоСсылочныйТип - Булево - Истина, если объект ссылочного типа.
//
Процедура ЗарегистрироватьПредупреждениеОКоллизииВЖурналеРегистрации(Объект, МетаданныеОбъекта, ЗаписатьОбъект, ЭтоСсылочныйТип)
@@ -41,7 +41,7 @@
Процедура ПриДобавленииПодсистемы(Описание) Экспорт
Описание.Имя = "СтандартныеПодсистемы";
Описание.Версия = "3.1.2.223";
Описание.Версия = "3.1.2.229";
Описание.ИдентификаторИнтернетПоддержки = "SSL";
Описание.РежимВыполненияОтложенныхОбработчиков = "Параллельно";
Описание.ПараллельноеОтложенноеОбновлениеСВерсии = "2.3.3.0";
@@ -1338,6 +1338,24 @@
Если ОбщегоНазначения.РазделениеВключено() Тогда
Возврат;
КонецЕсли;
Если Пользователи.ЭтоПолноправныйПользователь(, Истина)
И Не ОбновлениеИнформационнойБазы.НеобходимоОбновлениеИнформационнойБазы()
И ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ОбновлениеКонфигурации") Тогда
Значение = ОбщегоНазначения.ХранилищеСистемныхНастроекЗагрузить("ПроверкаПатчей", "НомерВерсии");
Если Значение = Неопределено
Или ОбщегоНазначенияКлиентСервер.СравнитьВерсии(Метаданные.Версия, Значение) > 0 Тогда
МодульОбновлениеКонфигурации = ОбщегоНазначения.ОбщийМодуль("ОбновлениеКонфигурации");
Результат = МодульОбновлениеКонфигурации.ИсправленияИзменены();
ОбщегоНазначения.ХранилищеСистемныхНастроекСохранить("ПроверкаПатчей", "НомерВерсии", Метаданные.Версия);
Если Результат.ЕстьИзменения Тогда
Сведения = СведенияОбОбновленииИнформационнойБазы();
Сведения.ВерсияУдалениеПатчей = Метаданные.Версия;
ЗаписатьСведенияОбОбновленииИнформационнойБазы(Сведения);
КонецЕсли;
КонецЕсли;
КонецЕсли;
СтатусОбработчиков = СтатусНевыполненныхОбработчиков();
Если СтатусОбработчиков = "" Тогда
Возврат;
@@ -6183,6 +6201,7 @@
СведенияОбОбновлении.Вставить("ПланОтложенногоОбновления");
СведенияОбОбновлении.Вставить("СеансОбновления");
СведенияОбОбновлении.Вставить("ОписаниеПотоков");
СведенияОбОбновлении.Вставить("ВерсияУдалениеПатчей");
Если ТипЗнч(СтарыеСведения) = Тип("Структура") Тогда
ЗаполнитьЗначенияСвойств(СведенияОбОбновлении, СтарыеСведения);
@@ -117,34 +117,6 @@
КонецФункции
// Выполнят установку порядка разделов поиска
// для события ПолнотекстовыйПоискСерверПереопределяемый.ПриПолученииРазделовПолнотекстовогоПоиска
//
// Параметры:
// РазделыПоиска - ДеревоЗначений - области поиска. Содержит колонки:
// ** Раздел - Строка - Представление раздела: подсистемы или объекта метаданных.
// ** Картинка - Картинка - Картинка раздела, рекомендуется только для корневых разделов.
// ** ОбъектМД - СправочникСсылка.ИдентификаторыОбъектовМетаданных - Задается только для объектов метаданных,
// для разделов остается пустым.
// ПорядокРазделов - Массив - синонимы подсистем - разделов, чем выше индекс - тем ниже в списке будет раздел.
//
Процедура УстановитьПорядокРазделовПолнотекстовогоПоиска(РазделыПоиска, ПорядокРазделов) Экспорт
КолонкаПорядка = РазделыПоиска.Колонки.Добавить("Порядок");
Для Индекс = 0 По ПорядокРазделов.ВГраница() Цикл
ИмяРаздела = ПорядокРазделов[Индекс];
СтрокаРаздел = РазделыПоиска.Строки.Найти(ИмяРаздела, "Раздел");
Если СтрокаРаздел <> Неопределено Тогда
СтрокаРаздел.Порядок = Индекс;
КонецЕсли;
КонецЦикла;
РазделыПоиска.Строки.Сортировать("Порядок");
РазделыПоиска.Колонки.Удалить(КолонкаПорядка);
КонецПроцедуры
// Объект метаданных с функциональной опцией использования полнотекстового поиска.
//
// Возвращаемое значение:
@@ -10,30 +10,26 @@
// Позволяет внести изменения в дерево с разделами полнотекстового поиска, отображаемое при выборе области поиска.
// По умолчанию дерево разделов формируется на основании состава подсистем конфигурации.
// Структура дерева описана в форме Обработка.ПолнотекстовыйПоискВДанных.Форма.ВыборОбластиПоиска.
// Все колонки, не указанные в параметрах, будут автоматически рассчитаны.
// При необходимости построить дерево разделов самостоятельно требуется сохранить состав колонок.
//
// Параметры:
// РазделыПоиска - ДеревоЗначений - области поиска. Содержит колонки:
// ** Раздел - Строка - представление раздела: подсистемы или объекта метаданных.
// ** Раздел - Строка - представление раздела, например, название подсистемы или объекта метаданных.
// ** Картинка - Картинка - картинка раздела, рекомендуется только для корневых разделов.
// ** ОбъектМД - СправочникСсылка.ИдентификаторыОбъектовМетаданных - задается только для объектов метаданных,
// для разделов остается пустым.
// Пример:
//
// НовыйРаздел = РазделыПоиска.Строки.Добавить();
// НовыйРаздел.Раздел = "Главное";
// НовыйРаздел.Картинка = БиблиотекаКартинок._ДемоРазделГлавное;
// РазделГлавное = РазделыПоиска.Строки.Добавить();
// РазделГлавное.Раздел = "Главное";
// РазделГлавное.Картинка = БиблиотекаКартинок.РазделГлавное;
//
// ОбъектМетаданных = Метаданные.Документы._ДемоСчетНаОплатуПокупателю;
// СчетНаОплату = Метаданные.Документы._ДемоСчетНаОплатуПокупателю;
// Если ПравоДоступа("Просмотр", СчетНаОплату)
// И ОбщегоНазначения.ОбъектМетаданныхДоступенПоФункциональнымОпциям(СчетНаОплату) Тогда
//
// Если ПравоДоступа("Просмотр", ОбъектМетаданных)
// И ОбщегоНазначения.ОбъектМетаданныхДоступенПоФункциональнымОпциям(ОбъектМетаданных) Тогда
//
// НовыйОбъектРаздела = НовыйРаздел.Строки.Добавить();
// НовыйОбъектРаздела.Раздел = ОбъектМетаданных.ПредставлениеСписка;
// НовыйОбъектРаздела.ОбъектМД = ОбщегоНазначения.ИдентификаторОбъектаМетаданных(ОбъектМетаданных);
// ОбъектРаздела = РазделГлавное.Строки.Добавить();
// ОбъектРаздела.Раздел = СчетНаОплату.ПредставлениеСписка;
// ОбъектРаздела.ОбъектМД = ОбщегоНазначения.ИдентификаторОбъектаМетаданных(СчетНаОплату);
// КонецЕсли;
//
Процедура ПриПолученииРазделовПолнотекстовогоПоиска(РазделыПоиска) Экспорт
@@ -2698,7 +2698,7 @@
// Возвращаемое значение:
// Структура - где:
// * СписокПолей - Массив из Структура, поля:
// ** Имя - Строка - имя реквизита поиска.
// ** Имя - Строка - имя реквизита поиска;
// ** ШаблонПредставления - Строка - шаблон для формирования значения представления по именам реквизитов,
// например: "%1.Наименование (%1.Код)". Здесь "Наименование" и "Код" - имена
// реквизитов, "%1" - заполнитель для передачи псевдонима таблицы.
@@ -2736,7 +2736,11 @@
Новый Структура("Имя, ШаблонПредставления", ИмяПоля, ШаблонПредставления));
КонецЦикла;
Возврат Новый Структура("СписокПолей, ИменаПолейДляОтбораВКлассификаторе", Результат, ПоляОтбора);
ПоляПоиска = Новый Структура;
ПоляПоиска.Вставить("СписокПолей", Результат);
ПоляПоиска.Вставить("ИменаПолейДляОтбораВКлассификаторе", ПоляОтбора);
Возврат ПоляПоиска;
КонецФункции
@@ -11,8 +11,8 @@
// Преобразует введенные английские буквы к русской раскладке при подборе адреса
//
Процедура ПреобразоватьВводАдреса(Текст) Экспорт
РусскиеКлавиши = "ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮЁ";
АнглийскиеКлавиши = "QWERTYUIOP[]ASDFGHJKL;'ZXCVBNM,.`";
РусскиеКлавиши = "ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЁ";
АнглийскиеКлавиши = "QWERTYUIOP[]ASDFGHJKL;'ZXCVBNM,`";
Текст = ВРег(Текст);
Для Позиция = 0 По СтрДлина(Текст) Цикл
Символ = Сред(Текст, Позиция, 1);
@@ -1142,7 +1142,7 @@
//
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи, Параметры) Экспорт
Если ЗначениеЗаполнено(Параметры.ЗначениеКопирования) Тогда
Если Не ЗначениеЗаполнено(Параметры.Ключ) И ЗначениеЗаполнено(Параметры.ЗначениеКопирования) Тогда
РаботаСФайламиСлужебный.СкопироватьПрисоединенныеФайлы(
Параметры.ЗначениеКопирования, ТекущийОбъект);
@@ -2431,7 +2431,8 @@
ГиперссылкаПерехода.Заголовок = ДобавляемыйЭлемент.Заголовок;
Если ДобавляемыйЭлемент.ОтображатьКоличество Тогда
КоличествоПрисоединенныхФайлов = РаботаСФайламиСлужебныйВызовСервера.КоличествоПрисоединенныхФайлов(ВладелецПрисоединенныхФайлов);
Владелец = ?(ЗначениеЗаполнено(Форма.Параметры.ЗначениеКопирования), Форма.Параметры.ЗначениеКопирования, ВладелецПрисоединенныхФайлов);
КоличествоПрисоединенныхФайлов = РаботаСФайламиСлужебныйВызовСервера.КоличествоПрисоединенныхФайлов(Владелец);
Если КоличествоПрисоединенныхФайлов > 0 Тогда
ГиперссылкаПерехода.Заголовок = ГиперссылкаПерехода.Заголовок + " ("
+ Формат(КоличествоПрисоединенныхФайлов, "ЧГ=") + ")";
@@ -1011,6 +1011,9 @@
ВерсияСсылка = Выборка.Ссылка;
ПутьКФайлу = Выборка.ПутьКФайлу;
Если Прав(ПутьКФайлу, 1) = "." Тогда
ПутьКФайлу = Лев(ПутьКФайлу, СтрДлина(ПутьКФайлу) - 1);
КонецЕсли;
Если ЗначениеЗаполнено(Выборка.ПутьКФайлу)
И ЗначениеЗаполнено(Выборка.Том) Тогда
@@ -12,7 +12,7 @@
//
// Параметры:
// Рассылка - СправочникСсылка.РассылкиОтчетов - выполняемая рассылка отчетов.
// ПараметрыЖурнала - Структура - параметры записи в журнал регистрации.
// ПараметрыЖурнала - Структура - параметры записи в журнал регистрации, где:
// * ИмяСобытия - Строка - имя события (или группы событий).
// * Метаданные - ОбъектМетаданных - метаданные для привязки события журнала регистрации.
// * Данные - Произвольный - данные для привязки события журнала регистрации.
@@ -242,10 +242,10 @@
// * Отчет - СправочникСсылка.ВариантыОтчетов, СправочникСсылка.ДополнительныеОтчетыИОбработки -
// Отчет, который необходимо сформировать.
// * ОтправлятьЕслиПустой - Булево - флаг отправки отчета даже если он пустой.
// * Настройки - настройки, с которыми должен сформироваться отчет.
// * Настройки - настройки, с которыми должен сформироваться отчет, где:
// Дополнительно используется для определения принадлежности отчета к СКД.
// - ПользовательскиеНастройкиКомпоновкиДанных - табличный документ сформируется механизмами СКД.
// - Структура - Табличный документ сформируется при помощи метода "Сформировать()".
// - Структура - Табличный документ сформируется при помощи метода "Сформировать()", где:
// *** Ключ - Строка - имя реквизита объекта отчета.
// *** Значение - Произвольный - значение реквизита объекта отчета.
// - Неопределено - настройки по умолчанию. Для определения принадлежности к СКД
@@ -1640,7 +1640,7 @@
// Поддерживает передачу информации об ошибке.
//
// Параметры:
// ПараметрыЖурнала - Структура - Параметры записи в журнал регистрации.
// ПараметрыЖурнала - Структура - Параметры записи в журнал регистрации, где:
// * ИмяСобытия - Строка - Имя события (или группы событий).
// * Метаданные - ОбъектМетаданных - Метаданные для привязки события журнала регистрации.
// * Данные - Произвольный - Данные для привязки события журнала регистрации.
@@ -9,6 +9,17 @@
#Область СлужебныеПроцедурыИФункции
// Для внутреннего использования.
//
// Параметры:
// ПараметрыПолучателей - Структура -
//
// Возвращаемое значение:
// Структура - где:
// * Получатели - Соответствие -
// * БылиКритичныеОшибки - Булево -
// * Текст - Строка -
// * Подробно - Строка -
//
Функция СформироватьСписокПолучателейРассылки(Знач ПараметрыПолучателей) Экспорт
ПараметрыЖурнала = Новый Структура("ИмяСобытия, Метаданные, Данные, МассивОшибок, БылиОшибки");
ПараметрыЖурнала.ИмяСобытия = НСтр("ru = 'Рассылка отчетов. Формирование списка получателей'", ОбщегоНазначения.КодОсновногоЯзыка());
@@ -2397,7 +2397,8 @@
// Привилегированный режим (установлен платформой).
// Проверка основного языка программирования, установленного в конфигурации.
Если Метаданные.ВариантВстроенногоЯзыка <> Метаданные.СвойстваОбъектов.ВариантВстроенногоЯзыка.Русский Тогда
ТекущийЯзыкВстроенногоЯзыка = Метаданные.СвойстваОбъектов.ВариантВстроенногоЯзыка["Русский"];
Если Метаданные.ВариантВстроенногоЯзыка <> ТекущийЯзыкВстроенногоЯзыка Тогда
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Вариант встроенного языка конфигурации ""%1"" не поддерживается.
|Необходимо использовать вариант языка ""%2"".'"),
@@ -286,10 +286,11 @@
// Добавляет контактную информацию к объекту по представлению или JSON.
//
// Параметры:
// СсылкаИлиОбъект - Произвольный - ссылка или объект владельца содержащего контактную информацию.
// Для ссылки после добавления контактной информации владелец будет записан.
// Если передан объект, то контактная информация будет добавлена без записи.
// Для сохранения изменений объект необходимо будет записать отдельно.
// СсылкаИлиОбъект - СправочникСсылка, ДокументСсылка, СправочникОбъект, ДокументОбъект - ссылка или объект владельца
// содержащего контактную информацию. Для ссылки после добавления контактной
// информации владелец будет записан. Если передан объект, то контактная
// информация будет добавлена без записи. Для сохранения изменений объект
// необходимо будет записать отдельно.
// ЗначениеИлиПредставление - Строка - представление, JSON или XML соответствующее XDTO-пакету КонтактнаяИнформация
// или Адрес.
// ВидКонтактнойИнформации - СправочникСсылка.ВидыКонтактнойИнформации - Вид добавляемой контактной информации.
@@ -318,7 +319,8 @@
// Добавляет или изменяет контактную информацию для нескольких владельцев контактной информации.
//
// Параметры:
// КонтактнаяИнформация - ТаблицаЗначений - Таблица содержащая контактную информацию
// КонтактнаяИнформация - ТаблицаЗначений - см. УправлениеКонтактнойИнформацией.НоваяКонтактнаяИнформация
// Таблица содержащая контактную информацию
// Описание колонок см. функцию НоваяКонтактнаяИнформация.
// Важно! Если в колонке Объект указана ссылка, то после добавления
// контактной информации владелец будет записан.
@@ -1987,7 +1989,7 @@
// Обработчик подписки события "ОбработкаЗаполнения".
//
// Параметры:
// Источник - Произвольный - объект, содержащий контактную информацию.
// Источник - СправочникОбъект, ДокументОбъект - объект, содержащий контактную информацию.
// ДанныеЗаполнения - Структура - данные с контактной информацией для заполнения объекта.
// ТекстЗаполнения - Строка - не используется.
// СтандартнаяОбработка - Булево - не используется.
@@ -2869,7 +2871,13 @@
// * Ссылка - СправочникСсылка.ВидыКонтактнойИнформации - ссылка на вид контактной информации.
//
// Возвращаемое значение:
// ТаблицаЗначений - виды контактной информации.
// ТаблицаЗначений - виды контактной информации, где:
// * Ссылка - СправочникСсылка.ВидыКонтактнойИнформации -
// * Представление - Строка -
// * Наименование - Строка -
// * РазрешитьВводНесколькихЗначений - Булево -
// * РеквизитДопУпорядочивания - Число -
// * Тип - ПеречислениеСсылка.ТипыКонтактнойИнформации -
//
Функция ВидыКонтактнойИнформацииОбъекта(ВладелецКонтактнойИнформации, ТипКонтактнойИнформации = Неопределено) Экспорт
@@ -3384,7 +3392,7 @@
ОбработкаНавигационнойСсылки = ПараметрыКонтактнойИнформации.ОбработкаНавигационнойСсылки;
ЗаголовокСлева = ЗаголовокСлева(ПараметрыКонтактнойИнформации.ПоложениеЗаголовка);
Элемент = Форма.Элементы.Добавить(ИмяРеквизита, Тип("ПолеФормы"), Родитель);
Элемент = Форма.Элементы.Добавить(ИмяРеквизита, Тип("ПолеФормы"), Родитель); // РасширениеПоляФормыДляПоляВвода, РасширениеПоляФормыДляПоляНадписи
Элемент.ПутьКДанным = ИмяРеквизита;
Если ИнформацияОВидеКИ.ВидРедактирования = "Диалог" И ИнформацияОВидеКИ.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес Тогда
@@ -4239,7 +4247,8 @@
Если ТипЗнч(КонтактнаяИнформация) = Тип("ТаблицаЗначений") Тогда
КолонкиТаблицы = КонтактнаяИнформация.Колонки;
Иначе
КолонкиТаблицы = КонтактнаяИнформация.ВыгрузитьКолонки().Колонки;
ТаблицаКонтактнаяИнформация = КонтактнаяИнформация.ВыгрузитьКолонки(); // ТаблицаЗначений
КолонкиТаблицы = ТаблицаКонтактнаяИнформация.Колонки;
КонецЕсли;
Если КолонкиТаблицы.Найти("ИдентификаторСтрокиТабличнойЧасти") = Неопределено Тогда
@@ -4779,7 +4788,8 @@
Если Кнопка = Неопределено Тогда
Кнопка = Форма.Элементы.Добавить(ИмяЭлемента, Тип("КнопкаФормы"), Подменю);
Кнопка.ИмяКоманды = ИмяКоманды;
ПараметрыКонтактнойИнформации.ДобавленныеЭлементы.Добавить(ИмяЭлемента, 1);
ДобавленныеЭлементы = ПараметрыКонтактнойИнформации.ДобавленныеЭлементы; // СписокЗначений
ДобавленныеЭлементы.Добавить(ИмяЭлемента, 1);
КонецЕсли;
Кнопка.Заголовок = ЗаголовокЭлемента;
Кнопка.Видимость = ЗначениеЗаполнено(ЗаголовокЭлемента);
@@ -834,7 +834,7 @@
Возврат Результат;
КонецФункции
// Функция-конструктор
// Функция-конструктор таблицы содержащей адрес, где каждая строка это часть адреса.
//
// Возвращаемое значение:
// ТаблицаЗначений - колонки:
@@ -847,7 +847,7 @@
// * Длина - Число -
// * Идентификатор - Строка-
//
Функция ЧастиАдреса()
Функция ЧастиАдреса() Экспорт
ТипСтрока = Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(128));
ТипЧисло = Новый ОписаниеТипов("Число");
@@ -451,6 +451,8 @@
//
Процедура ЗагрузитьПочтуПользователя(Результат)
ДлительныеОперации.СообщитьПрогресс(, НСтр("ru = 'Получение почты'"));
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
@@ -516,6 +518,8 @@
Процедура ОтправитьПочтуПользователя(Результат)
ДлительныеОперации.СообщитьПрогресс(, НСтр("ru = 'Отправка почты'"));
Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
@@ -84,6 +84,7 @@
ОтправитьЗагрузитьПочтуПользователяЗавершение(ДлительнаяОперация, ДополнительныеПараметры);
ИначеЕсли ДлительнаяОперация.Статус = "Выполняется" Тогда
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(Форма);
ПараметрыОжидания.ВыводитьПрогрессВыполнения = Истина;
ОповещениеОЗавершении = Новый ОписаниеОповещения("ОтправитьЗагрузитьПочтуПользователяЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, ОповещениеОЗавершении, ПараметрыОжидания);
КонецЕсли;
@@ -158,12 +158,6 @@
КонецПроцедуры
Процедура ОткрытьСписокШаблонов() Экспорт
ОткрытьФорму("Справочник.ШаблоныСообщений.ФормаСписка");
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
+9 -9
View File
@@ -1,17 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="11a30762-d54f-4522-8289-99086caa109b">
<mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="d6c5e2eb-17ec-49d7-be61-3fc45ea8deb1">
<name>БиблиотекаСтандартныхПодсистем</name>
<synonym>
<key>ru</key>
<value>Библиотека стандартных подсистем, редакция 3.1</value>
</synonym>
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="04a34bab-27ba-4e81-a799-ea37f627b66c"/>
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="406703a4-f35f-49fe-8115-05447d47fe43"/>
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="843e1333-0afc-452a-85bb-4bfe34e59cbe"/>
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="ca5b9b14-7f09-4a97-bc90-727d13db1fc9"/>
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="a93bf13a-a6eb-4e81-b52b-ce51a2cd401e"/>
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="3e2c5b26-a84c-4864-801f-daeab23892f1"/>
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="73a7adab-b47f-445b-8836-232b7b7befc0"/>
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="623e56e1-faff-4b93-ac53-a2de898e7ff3"/>
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="4f5181d4-abfe-4f84-9f04-f3a57efa9c99"/>
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="b7b12751-834d-4423-9ddf-d239daf6d687"/>
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="34d6b602-7efa-47ac-9e18-3315e6131add"/>
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="c503e7ff-6f37-47fc-82bc-5e565e6e2cb7"/>
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="f2c90693-6069-433e-b70e-71b23c4845b2"/>
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="0c139a26-6d28-47e0-bbf9-7dcd57c805b6"/>
<defaultRunMode>ManagedApplication</defaultRunMode>
<usePurposes>PersonalComputer</usePurposes>
<scriptVariant>Russian</scriptVariant>
@@ -19,7 +19,7 @@
<defaultRoles>Role.АдминистраторСистемы</defaultRoles>
<defaultRoles>Role.ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок</defaultRoles>
<vendor>Фирма &quot;1С&quot;</vendor>
<version>3.1.2.223</version>
<version>3.1.2.229</version>
<updateCatalogAddress>http://downloads.v8.1c.ru/tmplts/</updateCatalogAddress>
<includeHelpInContents>true</includeHelpInContents>
<usedMobileApplicationFunctionalities>
@@ -1 +1 @@
{6,1,1,f3088d9d-f4c0-4e71-b504-e5adb72786f8,1,5da1f3c6-ab1c-4d3d-b1d3-49335cb3b630,"3.1.2.223","Фирма ""1С""","БиблиотекаСтандартныхПодсистем",5912,1,0,11a30762-d54f-4522-8289-99086caa109b,11a30762-d54f-4522-8289-99086caa109b,1,0,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,1,0,9233322b-dfdb-4c66-91fe-1299292d40a5,9233322b-dfdb-4c66-91fe-1299292d40a5,1,0,7795348b-2f52-47f7-bf00-e11e5e795a43,7795348b-2f52-47f7-bf00-e11e5e795a43,1,0,0421b67e-ed26-491d-ab98-ec59002ed4ce,0421b67e-ed26-491d-ab98-ec59002ed4ce,1,0,bb47ced2-31f9-4870-8633-20b986e53ccc,bb47ced2-31f9-4870-8633-20b986e53ccc,1,0,7d8acec9-f5a9-411e-921c-446ed0dd3332,7d8acec9-f5a9-411e-921c-446ed0dd3332,1,0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,1,0,cdbd26b1-9583-46e8-adf7-8cc705639892,cdbd26b1-9583-46e8-adf7-8cc705639892,1,0,c0e38c3e-7088-4e35-9d84-2d0ab9655402,c0e38c3e-7088-4e35-9d84-2d0ab9655402,1,0,1098786f-dd24-4cce-b212-be0cb5f01735,1098786f-dd24-4cce-b212-be0cb5f01735,1,0,3c0037f3-4422-4836-b116-8c72e32bdd55,3c0037f3-4422-4836-b116-8c72e32bdd55,1,0,6f7c6c31-206b-4010-bdad-1ad2e304f154,6f7c6c31-206b-4010-bdad-1ad2e304f154,1,0,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,1,0,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,1,0,5b68d479-7880-44de-84e3-7f578b43f0dc,5b68d479-7880-44de-84e3-7f578b43f0dc,1,0,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,1,0,b4629308-42de-4ce8-8591-cf0c2399a9a2,b4629308-42de-4ce8-8591-cf0c2399a9a2,1,0,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,1,0,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,1,0,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,1,0,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1,0,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,1,0,b93b8760-6200-40ee-8bdc-875ba80a6155,b93b8760-6200-40ee-8bdc-875ba80a6155,1,0,e8b248d9-9049-456a-9c7d-7a0462cc67ab,e8b248d9-9049-456a-9c7d-7a0462cc67ab,1,0,d4562287-440d-4462-9de2-7097ccbf3764,d4562287-440d-4462-9de2-7097ccbf3764,1,0,1983fe34-c984-4659-ba41-0e94504f8989,1983fe34-c984-4659-ba41-0e94504f8989,1,0,ec797c75-02c5-4cf5-9dd4-26cd46c99519,ec797c75-02c5-4cf5-9dd4-26cd46c99519,1,0,6fccdf59-fc99-4a2b-a144-fffe438a147c,6fccdf59-fc99-4a2b-a144-fffe438a147c,1,0,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,1,0,08a413ff-bebd-42e5-8ff3-2115746a0844,08a413ff-bebd-42e5-8ff3-2115746a0844,1,0,da9b32e6-5b93-45a6-84b2-238d57541e18,da9b32e6-5b93-45a6-84b2-238d57541e18,1,0,e43d69c8-b284-47da-b236-611bc94a15b6,e43d69c8-b284-47da-b236-611bc94a15b6,1,0,31eeaa05-6c49-41fe-b840-1edbad4ccac7,31eeaa05-6c49-41fe-b840-1edbad4ccac7,1,0,842c8662-8f39-405e-9665-cbdabc116159,842c8662-8f39-405e-9665-cbdabc116159,1,0,fca4b033-02c4-4d61-9e51-87783c3cef1a,fca4b033-02c4-4d61-9e51-87783c3cef1a,1,0,396ef757-d7f6-411f-8c4c-1acb1106a009,396ef757-d7f6-411f-8c4c-1acb1106a009,1,0,839e29b1-a0d2-40fa-9f3e-46e66b943358,839e29b1-a0d2-40fa-9f3e-46e66b943358,1,0,c56d2cc7-630a-441b-b23f-ba78c34849bd,c56d2cc7-630a-441b-b23f-ba78c34849bd,1,0,9aecf4f5-46ed-4d1c-a584-cd028e467895,9aecf4f5-46ed-4d1c-a584-cd028e467895,1,0,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,1,0,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,1,0,a1f10624-22e9-4a04-b370-fd085bdd0f67,a1f10624-22e9-4a04-b370-fd085bdd0f67,1,0,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,1,0,3cffb795-2a28-4beb-92f4-5813f5994022,3cffb795-2a28-4beb-92f4-5813f5994022,1,0,3323ca68-1382-4710-a933-23fc56588935,3323ca68-1382-4710-a933-23fc56588935,1,0,d6b12775-3255-42b8-88b2-62684f873e7d,d6b12775-3255-42b8-88b2-62684f873e7d,1,0,cc23d903-ccc5-42f4-862f-5e7278c4e346,cc23d903-ccc5-42f4-862f-5e7278c4e346,1,0,98f033e0-fa40-46e0-b51a-87a066749a35,98f033e0-fa40-46e0-b51a-87a066749a35,1,0,e8b4cb2d-1180-4101-954a-4cb5464f198c,e8b4cb2d-1180-4101-954a-4cb5464f198c,1,0,a379287d-1ce8-460d-a503-910e728e28f1,a379287d-1ce8-460d-a503-910e728e28f1,1,0,f765c4ba-c677-42ac-8d0c-43bb485405b9,f765c4ba-c677-42ac-8d0c-43bb485405b9,1,0,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,1,0,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,1,0,4009cb3a-6754-481f-911b-907558cea38a,4009cb3a-6754-481f-911b-907558cea38a,1,0,653a7fd8-91c7-49aa-aa63-45da087e0d0a,653a7fd8-91c7-49aa-aa63-45da087e0d0a,1,0,d7cf3981-cf63-4a21-868b-8175a7704a8f,d7cf3981-cf63-4a21-868b-8175a7704a8f,1,0,0ae93712-74e8-41c7-8f2d-4dfc8983697d,0ae93712-74e8-41c7-8f2d-4dfc8983697d,1,0,9e4dfdfa-ec05-4c9e-89bd-fc24f60f2678,9e4dfdfa-ec05-4c9e-89bd-fc24f60f2678,1,0,64f548c8-c1fc-434e-b3ee-5be367ead1db,64f548c8-c1fc-434e-b3ee-5be367ead1db,1,0,cd592a5d-b184-4558-8a28-7079ccf28b89,cd592a5d-b184-4558-8a28-7079ccf28b89,1,0,2009c673-c1a5-45fc-8da2-a36c435085a6,2009c673-c1a5Line truncated
{6,1,1,5f44b8f8-7c22-4011-8a49-d32a018cf2a3,1,bda93047-e05d-499f-b474-2282e5121d73,"3.1.2.229","Фирма ""1С""","БиблиотекаСтандартныхПодсистем",5912,1,0,d6c5e2eb-17ec-49d7-be61-3fc45ea8deb1,d6c5e2eb-17ec-49d7-be61-3fc45ea8deb1,1,0,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,1,0,9233322b-dfdb-4c66-91fe-1299292d40a5,9233322b-dfdb-4c66-91fe-1299292d40a5,1,0,7795348b-2f52-47f7-bf00-e11e5e795a43,7795348b-2f52-47f7-bf00-e11e5e795a43,1,0,0421b67e-ed26-491d-ab98-ec59002ed4ce,0421b67e-ed26-491d-ab98-ec59002ed4ce,1,0,bb47ced2-31f9-4870-8633-20b986e53ccc,bb47ced2-31f9-4870-8633-20b986e53ccc,1,0,7d8acec9-f5a9-411e-921c-446ed0dd3332,7d8acec9-f5a9-411e-921c-446ed0dd3332,1,0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,1,0,cdbd26b1-9583-46e8-adf7-8cc705639892,cdbd26b1-9583-46e8-adf7-8cc705639892,1,0,c0e38c3e-7088-4e35-9d84-2d0ab9655402,c0e38c3e-7088-4e35-9d84-2d0ab9655402,1,0,1098786f-dd24-4cce-b212-be0cb5f01735,1098786f-dd24-4cce-b212-be0cb5f01735,1,0,3c0037f3-4422-4836-b116-8c72e32bdd55,3c0037f3-4422-4836-b116-8c72e32bdd55,1,0,6f7c6c31-206b-4010-bdad-1ad2e304f154,6f7c6c31-206b-4010-bdad-1ad2e304f154,1,0,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,1,0,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,1,0,5b68d479-7880-44de-84e3-7f578b43f0dc,5b68d479-7880-44de-84e3-7f578b43f0dc,1,0,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,bf9ca98c-5c95-4cfb-9181-8c1d847f9fbb,1,0,b4629308-42de-4ce8-8591-cf0c2399a9a2,b4629308-42de-4ce8-8591-cf0c2399a9a2,1,0,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,1,0,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,1,0,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,1,0,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1,0,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,de7ed8f7-3c02-47e0-aea8-4747ac68a5d5,1,0,b93b8760-6200-40ee-8bdc-875ba80a6155,b93b8760-6200-40ee-8bdc-875ba80a6155,1,0,e8b248d9-9049-456a-9c7d-7a0462cc67ab,e8b248d9-9049-456a-9c7d-7a0462cc67ab,1,0,d4562287-440d-4462-9de2-7097ccbf3764,d4562287-440d-4462-9de2-7097ccbf3764,1,0,1983fe34-c984-4659-ba41-0e94504f8989,1983fe34-c984-4659-ba41-0e94504f8989,1,0,ec797c75-02c5-4cf5-9dd4-26cd46c99519,ec797c75-02c5-4cf5-9dd4-26cd46c99519,1,0,6fccdf59-fc99-4a2b-a144-fffe438a147c,6fccdf59-fc99-4a2b-a144-fffe438a147c,1,0,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,1,0,08a413ff-bebd-42e5-8ff3-2115746a0844,08a413ff-bebd-42e5-8ff3-2115746a0844,1,0,da9b32e6-5b93-45a6-84b2-238d57541e18,da9b32e6-5b93-45a6-84b2-238d57541e18,1,0,e43d69c8-b284-47da-b236-611bc94a15b6,e43d69c8-b284-47da-b236-611bc94a15b6,1,0,31eeaa05-6c49-41fe-b840-1edbad4ccac7,31eeaa05-6c49-41fe-b840-1edbad4ccac7,1,0,842c8662-8f39-405e-9665-cbdabc116159,842c8662-8f39-405e-9665-cbdabc116159,1,0,fca4b033-02c4-4d61-9e51-87783c3cef1a,fca4b033-02c4-4d61-9e51-87783c3cef1a,1,0,396ef757-d7f6-411f-8c4c-1acb1106a009,396ef757-d7f6-411f-8c4c-1acb1106a009,1,0,839e29b1-a0d2-40fa-9f3e-46e66b943358,839e29b1-a0d2-40fa-9f3e-46e66b943358,1,0,c56d2cc7-630a-441b-b23f-ba78c34849bd,c56d2cc7-630a-441b-b23f-ba78c34849bd,1,0,9aecf4f5-46ed-4d1c-a584-cd028e467895,9aecf4f5-46ed-4d1c-a584-cd028e467895,1,0,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,21d92c2f-6c78-43ce-b1f4-59d7845b5a91,1,0,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,1,0,a1f10624-22e9-4a04-b370-fd085bdd0f67,a1f10624-22e9-4a04-b370-fd085bdd0f67,1,0,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,2a4b10be-3cd7-4755-905f-7b4d02ff6a22,1,0,3cffb795-2a28-4beb-92f4-5813f5994022,3cffb795-2a28-4beb-92f4-5813f5994022,1,0,3323ca68-1382-4710-a933-23fc56588935,3323ca68-1382-4710-a933-23fc56588935,1,0,d6b12775-3255-42b8-88b2-62684f873e7d,d6b12775-3255-42b8-88b2-62684f873e7d,1,0,cc23d903-ccc5-42f4-862f-5e7278c4e346,cc23d903-ccc5-42f4-862f-5e7278c4e346,1,0,98f033e0-fa40-46e0-b51a-87a066749a35,98f033e0-fa40-46e0-b51a-87a066749a35,1,0,e8b4cb2d-1180-4101-954a-4cb5464f198c,e8b4cb2d-1180-4101-954a-4cb5464f198c,1,0,a379287d-1ce8-460d-a503-910e728e28f1,a379287d-1ce8-460d-a503-910e728e28f1,1,0,f765c4ba-c677-42ac-8d0c-43bb485405b9,f765c4ba-c677-42ac-8d0c-43bb485405b9,1,0,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,1,0,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,d8c58e53-b7b9-4426-bdfa-d0816adf8cc1,1,0,4009cb3a-6754-481f-911b-907558cea38a,4009cb3a-6754-481f-911b-907558cea38a,1,0,653a7fd8-91c7-49aa-aa63-45da087e0d0a,653a7fd8-91c7-49aa-aa63-45da087e0d0a,1,0,d7cf3981-cf63-4a21-868b-8175a7704a8f,d7cf3981-cf63-4a21-868b-8175a7704a8f,1,0,0ae93712-74e8-41c7-8f2d-4dfc8983697d,0ae93712-74e8-41c7-8f2d-4dfc8983697d,1,0,9e4dfdfa-ec05-4c9e-89bd-fc24f60f2678,9e4dfdfa-ec05-4c9e-89bd-fc24f60f2678,1,0,64f548c8-c1fc-434e-b3ee-5be367ead1db,64f548c8-c1fc-434e-b3ee-5be367ead1db,1,0,cd592a5d-b184-4558-8a28-7079ccf28b89,cd592a5d-b184-4558-8a28-7079ccf28b89,1,0,2009c673-c1a5-45fc-8da2-a36c435085a6,2009c673-c1a5Line truncated
@@ -385,8 +385,8 @@
&НаКлиенте
Процедура ПолученФайлВыгрузки(ПолученныеФайлы, ДополнительныеПараметры) Экспорт
Если ПолученныеФайлы <> Неопределено Тогда
Если НЕ ЗначениеЗаполнено(ПутьКФайлуВыгрузки) Тогда
ПутьКФайлуВыгрузки = ПолученныеФайлы[0].Имя;
Если Не ЗначениеЗаполнено(ПутьКФайлуВыгрузки) Тогда
ПутьКФайлуВыгрузки = ПолученныеФайлы.Получить(0).Имя;
КонецЕсли;
СообщитьОбОкончанииОперации(Ложь);
ЭтотОбъект.ОбновитьОтображениеДанных();
@@ -487,7 +487,7 @@
Если ИсточникЗагрузки = 1 Тогда
СтруктураПараметров.Вставить("ТекстXML", ДанныеДляЗагрузкиXDTO);
Иначе
ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресФайлаЗагрузки);
ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресФайлаЗагрузки); // ДвоичныеДанные
АдресНаСервере = ПолучитьИмяВременногоФайла("xml");
// Удаление временного файла происходит не через УдалитьФайлы(АдресНаСервере) в этой функции,
// а через УдалитьФайлы(АдресНаСервере) в процедуре ЗагрузкаСообщения модуля обработки.
@@ -576,7 +576,7 @@
&НаСервере
Процедура ОткрытьXMLНаСервере()
ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресФайлаЗагрузки);
ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресФайлаЗагрузки); // ДвоичныеДанные
АдресНаСервере = ПолучитьИмяВременногоФайла("xml");
ДвоичныеДанные.Записать(АдресНаСервере);
ТХ = Новый ТекстовыйДокумент;
@@ -587,7 +587,7 @@
&НаСервере
Процедура ЗагрузитьНастройкиВыгрузкиНаСервере()
ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресФайлаЗагрузки);
ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресФайлаЗагрузки); // ДвоичныеДанные
ИмяФайлаНаСервере = ПолучитьИмяВременногоФайла("xml");
ДвоичныеДанные.Записать(ИмяФайлаНаСервере);
@@ -623,7 +623,8 @@
КонецЦикла;
Продолжить;
ИначеЕсли ЧтениеXML.Имя = "Filter" Тогда
СтрокаОтбора = НовСтрока.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборКомпоновки = НовСтрока.Отбор; // ОтборКомпоновкиДанных
СтрокаОтбора = ОтборКомпоновки.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ТипЗначенияОтбора = Неопределено;
ЗначениеОтбора = Неопределено;
Пока ЧтениеXML.ПрочитатьАтрибут() Цикл
@@ -265,6 +265,15 @@
КонецПроцедуры
// Параметры:
// ТаблицаПравил - ТаблицаЗначений - таблица правил регистрации.
//
Функция НовоеПравилоРегистрации(ТаблицаПравил)
Возврат ТаблицаПравил.Добавить();
КонецФункции
// Осуществляет загрузку правила регистрации объектов.
//
// Параметры:
@@ -286,7 +295,7 @@
Возврат;
КонецЕсли;
НоваяСтрока = ПравилаРегистрацииОбъектов.Добавить();
НоваяСтрока = НовоеПравилоРегистрации(ПравилаРегистрацииОбъектов);
Пока Правила.Прочитать() Цикл
@@ -367,14 +367,16 @@
Функция ПроверитьСведенияОбОрганизации()
ПроверяемыеРеквизиты = Новый Массив;
НеобязательныеРеквизиты = Новый Структура(
"ЭтоИндивидуальныйПредприниматель, Организация, БИК, РасчетныйСчет, КорреспондентскийСчет");
Для Каждого Реквизит Из СведенияОбОрганизации Цикл
ИмяРеквизита = Реквизит.Ключ;
Если СтрНайти(ИмяРеквизита, "XML") > 0
Или ИмяРеквизита = "Организация"
Или ИмяРеквизита = "ЭтоИндивидуальныйПредприниматель"
Или (ИмяРеквизита = "КПП"
И ЭтоИндивидуальныйПредприниматель) Тогда
Или НеобязательныеРеквизиты.Свойство(ИмяРеквизита)
Или (ЭтоИндивидуальныйПредприниматель
И ИмяРеквизита = "КПП") Тогда
Продолжить;
КонецЕсли;
@@ -384,10 +386,12 @@
Если ИмяРеквизита = "Телефон"
Или ИмяРеквизита = "ФактическийАдрес"
Или ИмяРеквизита = "ЮридическийАдрес" Тогда
ПараметрыРеквизитаДляПроверки.Вставить("Значение", ЭтотОбъект[ИмяРеквизита + "XML"]);
Иначе
ПараметрыРеквизитаДляПроверки.Вставить("Значение", ЭтотОбъект[ИмяРеквизита]);
КонецЕсли;
ПараметрыРеквизитаДляПроверки.Вставить("ПолеСообщения", ИмяРеквизита);
ПараметрыРеквизитаДляПроверки.Вставить("ТекстНезаполненного",
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
@@ -1493,23 +1493,23 @@
&НаСервере
Функция ПроверитьЗаполнениеОсновныхРеквизитов()
ПроверяемыеРеквизиты = Новый Массив;
РеквизитыОрганизации = РеквизитыОрганизации(Истина);
РеквизитыОрганизации.Телефон = "";
РеквизитыОрганизации.ЮридическийАдрес = "";
РеквизитыОрганизации.ФактическийАдрес = "";
Если ЭтоИндивидуальныйПредприниматель Тогда
РеквизитыОрганизации.КПП = "";
КонецЕсли;
ПроверяемыеРеквизиты = Новый Массив;
ДобавитьРеквизитыДляПроверки(ПроверяемыеРеквизиты, РеквизитыОрганизации,
"Организация", НСтр("ru = 'У организации не заполнено поле ""%1""'"));
ДобавитьРеквизитыДляПроверки(ПроверяемыеРеквизиты, Новый Структура("ЮридическийАдрес", НСтр("ru = 'Юридический адрес'")),
ДобавитьРеквизитыДляПроверки(ПроверяемыеРеквизиты,
Новый Структура("ЮридическийАдрес", НСтр("ru = 'Юридический адрес'")),
"Организация", НСтр("ru = 'Юридический адрес: %1'"), Ложь);
ДобавитьРеквизитыДляПроверки(ПроверяемыеРеквизиты, Новый Структура("ФактическийАдрес", НСтр("ru = 'Фактический адрес'")),
ДобавитьРеквизитыДляПроверки(ПроверяемыеРеквизиты,
Новый Структура("ФактическийАдрес", НСтр("ru = 'Фактический адрес'")),
"Организация", НСтр("ru = 'Фактический адрес: %1'"), Ложь);
ДобавитьРеквизитыДляПроверки(ПроверяемыеРеквизиты, Новый Структура("Телефон", НСтр("ru = 'Телефон'")),
ДобавитьРеквизитыДляПроверки(ПроверяемыеРеквизиты,
Новый Структура("Телефон", НСтр("ru = 'Телефон'")),
"Организация", НСтр("ru = 'Телефон: %1'"), Ложь);
РеквизитыВладельца = РеквизитыВладельцаСертификата(Истина);
@@ -1585,7 +1585,14 @@
Функция РеквизитыОрганизации(ДляПроверки = Ложь)
Реквизиты = Новый Структура;
Реквизиты.Вставить("БИК", "");
Реквизиты.Вставить("РасчетныйСчет", "");
Реквизиты.Вставить("КорреспондентскийСчет", "");
Реквизиты.Вставить("Телефон", "");
Реквизиты.Вставить("ЮридическийАдрес", "");
Реквизиты.Вставить("ФактическийАдрес", "");
Реквизиты.Вставить("ЭтоИндивидуальныйПредприниматель");
Реквизиты.Вставить("НаименованиеСокращенное",
?(ДляПроверки, НСтр("ru = 'Наименование (сокращенное)'"), ""));
Реквизиты.Вставить("НаименованиеПолное",
@@ -1596,18 +1603,6 @@
?(ДляПроверки, НСтр("ru = 'КПП'"), ""));
Реквизиты.Вставить("ОГРН",
?(ДляПроверки, НСтр("ru = 'ОГРН'"), ""));
Реквизиты.Вставить("РасчетныйСчет",
?(ДляПроверки, НСтр("ru = 'Расчетный счет'"), ""));
Реквизиты.Вставить("БИК",
?(ДляПроверки, НСтр("ru = 'БИК'"), ""));
Реквизиты.Вставить("КорреспондентскийСчет",
?(ДляПроверки, НСтр("ru = 'Корреспондентский счет'"), ""));
Реквизиты.Вставить("Телефон",
?(ДляПроверки, НСтр("ru = 'Телефон'"), ""));
Реквизиты.Вставить("ЮридическийАдрес",
?(ДляПроверки, НСтр("ru = 'Юридический адрес'"), ""));
Реквизиты.Вставить("ФактическийАдрес",
?(ДляПроверки, НСтр("ru = 'Фактический адрес'"), ""));
Возврат Реквизиты;
@@ -217,14 +217,16 @@
// Значение - ПеречислениеСсылка - значение перечисления.
//
// Возвращаемое значение:
// Строка - Строка - имя переданного значения перечисления.
// Строка - имя переданного значения перечисления.
//
Функция одИмяЗначенияПеречисления(Значение) Экспорт
ОбъектМД = Значение.Метаданные();
ИндексЗначения = Перечисления[ОбъектМД.Имя].Индекс(Значение);
Возврат ОбъектМД.ЗначенияПеречисления[ИндексЗначения].Имя;
МенеджерПеречисления = Перечисления[ОбъектМД.Имя]; // ПеречислениеМенеджер
ИндексЗначения = МенеджерПеречисления.Индекс(Значение);
Возврат ОбъектМД.ЗначенияПеречисления.Получить(ИндексЗначения).Имя;
КонецФункции
@@ -251,7 +253,7 @@
//
// Параметры:
// Источник - Произвольный -произвольный источник данных.
// Приемник - xml-узел объекта приемника.
// Приемник - ЗаписьXML - xml-узел объекта приемника.
// ВходящиеДанные - Произвольный - вспомогательные данные, передаваемые правилу
// для выполнения конвертации.
// ИсходящиеДанные - Произвольный - произвольные вспомогательные данные, передаваемые правилам
@@ -260,7 +262,7 @@
// УзелСсылки - xml-узел ссылки объекта приемника.
// ТолькоПолучитьУзелСсылки - Булево - Если Истина, то выгрузка объекта не производится, только формируется
// xml-узел ссылки.
// ПКО - СтрокаТаблицыЗначений - ссылка на правило конвертации.
// ПКО - СтрокаТаблицыЗначений - строка таблицы правил конвертации.
// ВыгружатьСсылкиУПодчиненныхОбъектов - булево - если Истина то выгружаются ссылки у подчиненных объектов.
// ВыгрузкаСтрокиНабораЗаписейРегистра - булево - если Истина то происходит выгрузка строки набора записей.
// УзелПредка - xml-узел предка объекта приемника.
@@ -271,10 +273,10 @@
// СтекВыгрузкиОбъекта - массив - содержит сведения о вышестоящих объектах выгрузки.
//
// Возвращаемое значение:
// xml-узел ссылки или значение приемника.
// ЗаписьXML - xml-узел ссылки или значение приемника.
//
//
Функция ВыгрузитьПоПравилу(Источник = Неопределено,
Функция ВыгрузитьПоПравилу(
Источник = Неопределено,
Приемник = Неопределено,
ВходящиеДанные = Неопределено,
ИсходящиеДанные = Неопределено,
@@ -290,7 +292,6 @@
ЭтоПравилоСГлобальнойВыгрузкойОбъектов = Ложь,
НеИспользоватьПравилоСГлобальнойВыгрузкойИНеЗапоминатьВыгруженные = Ложь,
СтекВыгрузкиОбъекта = Неопределено) Экспорт
//
ОпределитьПКОПоПараметрам(ПКО, Источник, ИмяПКО);
@@ -1266,7 +1267,31 @@
// Выгружает данные по указанному правилу.
//
// Параметры:
// Правило - СтрокаТаблицыЗначений - ссылка на правило выгрузки данных.
// Правило - СтрокаТаблицыЗначений - ссылка на правило выгрузки данных:
// * Включить - Булево -
// * Имя - Произвольный -
// * Наименование - Произвольный -
// * Порядок - Произвольный -
// * СпособОтбораДанных - Произвольный -
// * ОбъектВыборки - Произвольный -
// * ОбъектВыборкиМетаданные - Произвольный -
// * ПравилоКонвертации - Произвольный -
// * ПередОбработкой - Произвольный -
// * ИмяОбработчикаПередОбработкой - Произвольный -
// * ПослеОбработки - Произвольный -
// * ИмяОбработчикаПослеОбработки - Произвольный -
// * ПередВыгрузкой - Произвольный -
// * ИмяОбработчикаПередВыгрузкой - Произвольный -
// * ПослеВыгрузки - Произвольный -
// * ИмяОбработчикаПослеВыгрузки - Произвольный -
// * ИспользоватьОтбор - Булево -
// * НастройкиПостроителя - Произвольный -
// * ИмяОбъектаДляЗапроса - Произвольный -
// * ИмяОбъектаДляЗапросаРегистра - Произвольный -
// * ИмяТипаПриемника - Произвольный -
// * НеВыгружатьОбъектыСозданныеВБазеПриемнике - Булево -
// * СсылкаНаУзелОбмена - Произвольный -
// * СинхронизироватьПоИдентификатору - Булево -
//
Процедура ВыгрузитьДанныеПоПравилу(Правило) Экспорт
@@ -1567,9 +1592,9 @@
// Добавляет в xml файл информацию о типах значения.
//
// Параметры:
// Приемник - xml-узел объекта приемника.
// Приемник - ЗаписьXML - xml-узел объекта приемника.
// Тип - Строка, Массив - выгружаемый одиночный тип, или список выгружаемых строковых типов.
// СписокАтрибутов - Структура - Ключ содержит имя атрибута.
// СписокАтрибутов - Структура - ключ содержит имя атрибута.
//
Процедура ВыгрузитьИнформациюОТипах(Приемник, Тип, СписокАтрибутов = Неопределено) Экспорт
@@ -3819,15 +3844,15 @@
#Область ПроцедурыИФункцииРаботыСОбъектомXMLЗапись
// Создает новый xml-узел
// Создает новый xml-узел.
// Функция может быть использована в обработчиках событий, программный код
// которых хранится в правила обмена данными. Вызывается методом Выполнить().
//
// Параметры:
// Имя - Имя узла
// Имя - Строка - имя узла.
//
// Возвращаемое значение:
// Объект нового xml-узла
// ЗаписьXML - объект нового xml-узла.
//
Функция СоздатьУзел(Имя)
@@ -4520,13 +4545,211 @@
#КонецОбласти
#Область ОписаниеТиповКоллекций
// Возвращаемое значение:
// ТаблицаЗначений - коллекция правил конвертации данных:
// * Имя - Строка -
// * Наименование - Строка -
// * Порядок - Число -
// * СинхронизироватьПоИдентификатору - Булево -
// * НеСоздаватьЕслиНеНайден - Булево -
// * НеВыгружатьОбъектыСвойствПоСсылкам - Булево -
// * ПродолжитьПоискПоПолямПоискаЕслиПоИдентификаторуНеНашли - Булево -
// * ПриПереносеОбъектаПоСсылкеУстанавливатьТолькоGIUD - Булево -
// * НеЗамещатьОбъектСозданныйВИнформационнойБазеПриемнике - Булево -
// * ИспользоватьБыстрыйПоискПриЗагрузке - Булево -
// * ГенерироватьНовыйНомерИлиКодЕслиНеУказан - Булево -
// * МаленькоеКоличествоОбъектов - Булево -
// * КоличествоОбращенийДляВыгрузкиСсылки - Число -
// * КоличествоЭлементовВИБ - Число -
// * СпособВыгрузки - Произвольный -
// * Источник - Произвольный -
// * Приемник - Произвольный -
// * ТипИсточника - Строка -
// * ТипПриемника - Строка -
// * ПередВыгрузкой - Произвольный -
// * ИмяОбработчикаПередВыгрузкой - Строка -
// * ПриВыгрузке - Произвольный -
// * ИмяОбработчикаПриВыгрузке - Строка -
// * ПослеВыгрузки - Произвольный -
// * ИмяОбработчикаПослеВыгрузки - Строка -
// * ПослеВыгрузкиВФайл - Произвольный -
// * ИмяОбработчикаПослеВыгрузкиВФайл - Строка -
// * ЕстьОбработчикПередВыгрузкой - Булево -
// * ЕстьОбработчикПриВыгрузке - Булево -
// * ЕстьОбработчикПослеВыгрузки - Булево -
// * ЕстьОбработчикПослеВыгрузкиВФайл - Булево -
// * ПередЗагрузкой - Произвольный -
// * ИмяОбработчикаПередЗагрузкой - Строка -
// * ПриЗагрузке - Произвольный -
// * ИмяОбработчикаПриЗагрузке - Строка -
// * ПослеЗагрузки - Произвольный -
// * ИмяОбработчикаПослеЗагрузки - Строка -
// * ПоследовательностьПолейПоиска - Произвольный -
// * ИмяОбработчикаПоследовательностьПолейПоиска - Строка -
// * ПоискПоТабличнымЧастям - см. КоллекцияПоискПоТабличнымЧастям
// * ПриоритетОбъектовОбмена - Произвольный -
// * ЕстьОбработчикПередЗагрузкой - Булево -
// * ЕстьОбработчикПриЗагрузке - Булево -
// * ЕстьОбработчикПослеЗагрузки - Булево -
// * ЕстьОбработчикПоследовательностьПолейПоиска - Булево -
// * Свойства - см. КоллекцияПравилаКонвертацииСвойств
// * СвойстваПоиска - см. КоллекцияПравилаКонвертацииСвойств
// * СвойстваОтключенные - см. КоллекцияПравилаКонвертацииСвойств
// * ЗначенияПредопределенныхДанных - Соответствие -
// * ЗначенияПредопределенныхДанныхПрочитанные - Структура -
// * Выгруженные - ТаблицаЗначений -
// * ВыгружатьПредставлениеИсточника - Булево -
// * НеЗамещать - Булево -
// * ЗапоминатьВыгруженные - Булево -
// * ВсеОбъектыВыгружены - Булево -
// * ПоляПоиска - Строка -
// * ПоляТаблицы - Строка -
//
Функция КоллекцияПравилаКонвертации()
Возврат ТаблицаПравилКонвертации;
КонецФункции
// Возвращаемое значение:
// ТаблицаЗначений - коллекция правил поиска по табличным частям:
// * ИмяЭлемента - Произвольный -
// * МассивКлючевыхПолейПоиска - Массив из Произвольный -
// * КлючевыеПоляПоиска - Произвольный -
// * Валидное - Булево -
//
Функция КоллекцияПоискПоТабличнымЧастям()
ПоискПоТабличнымЧастям = Новый ТаблицаЗначений;
ПоискПоТабличнымЧастям.Колонки.Добавить("ИмяЭлемента");
ПоискПоТабличнымЧастям.Колонки.Добавить("МассивКлючевыхПолейПоиска");
ПоискПоТабличнымЧастям.Колонки.Добавить("КлючевыеПоляПоиска");
ПоискПоТабличнымЧастям.Колонки.Добавить("Валидное", одОписаниеТипа("Булево"));
Возврат ПоискПоТабличнымЧастям;
КонецФункции
// Возвращаемое значение:
// ТаблицаЗначений - коллекция правил конвертации свойств данных:
// * Имя - Строка -
// * Наименование - Строка -
// * Порядок - Число -
// * ЭтоГруппа - Булево -
// * ЭтоПолеПоиска - Булево -
// * ПравилаГруппы - см. КоллекцияПравилаКонвертацииСвойств
// * ПравилаГруппыОтключенные - Произвольный -
// * ВидИсточника - Произвольный -
// * ВидПриемника - Произвольный -
// * УпрощеннаяВыгрузкаСвойства - Булево -
// * НуженУзелXMLПриВыгрузке - Булево -
// * НуженУзелXMLПриВыгрузкеГруппы - Булево -
// * ТипИсточника - Строка -
// * ТипПриемника - Строка -
// * Источник - Произвольный -
// * Приемник - Произвольный -
// * ПравилоКонвертации - Произвольный -
// * ПолучитьИзВходящихДанных - Булево -
// * НеЗамещать - Булево -
// * ЭтоОбязательноеСвойство - Булево -
// * ПередВыгрузкой - Произвольный -
// * ИмяОбработчикаПередВыгрузкой - Произвольный -
// * ПриВыгрузке - Произвольный -
// * ИмяОбработчикаПриВыгрузке - Произвольный -
// * ПослеВыгрузки - Произвольный -
// * ИмяОбработчикаПослеВыгрузки - Произвольный -
// * ПередОбработкойВыгрузки - Произвольный -
// * ИмяОбработчикаПередОбработкойВыгрузки - Произвольный -
// * ПослеОбработкиВыгрузки - Произвольный -
// * ИмяОбработчикаПослеОбработкиВыгрузки - Произвольный -
// * ЕстьОбработчикПередВыгрузкой - Булево -
// * ЕстьОбработчикПриВыгрузке - Булево -
// * ЕстьОбработчикПослеВыгрузки - Булево -
// * ЕстьОбработчикПередОбработкойВыгрузки - Булево -
// * ЕстьОбработчикПослеОбработкиВыгрузки - Булево -
// * ПриводитьКДлине - Число -
// * ИмяПараметраДляПередачи - Строка -
// * ПоискПоДатеНаРавенство - Булево -
// * ВыгружатьГруппуЧерезФайл - Булево -
// * СтрокаПолейПоиска - Произвольный -
//
Функция КоллекцияПравилаКонвертацииСвойств()
Возврат ТаблицаПравилКонвертацииСвойств;
КонецФункции
// Возвращаемое значение:
// ТаблицаЗначений - коллекция правил выгрузки данных:
// * Включить - Булево -
// * Имя - Произвольный -
// * Наименование - Произвольный -
// * Порядок - Произвольный -
// * СпособОтбораДанных - Произвольный -
// * ОбъектВыборки - Произвольный -
// * ОбъектВыборкиМетаданные - Произвольный -
// * ПравилоКонвертации - Произвольный -
// * ПередОбработкой - Произвольный -
// * ИмяОбработчикаПередОбработкой - Произвольный -
// * ПослеОбработки - Произвольный -
// * ИмяОбработчикаПослеОбработки - Произвольный -
// * ПередВыгрузкой - Произвольный -
// * ИмяОбработчикаПередВыгрузкой - Произвольный -
// * ПослеВыгрузки - Произвольный -
// * ИмяОбработчикаПослеВыгрузки - Произвольный -
// * ИспользоватьОтбор - Булево -
// * НастройкиПостроителя - Произвольный -
// * ИмяОбъектаДляЗапроса - Произвольный -
// * ИмяОбъектаДляЗапросаРегистра - Произвольный -
// * ИмяТипаПриемника - Произвольный -
// * НеВыгружатьОбъектыСозданныеВБазеПриемнике - Булево -
// * СсылкаНаУзелОбмена - Произвольный -
// * СинхронизироватьПоИдентификатору - Булево -
//
Функция КоллекцияПравилаВыгрузкиДанных()
Возврат ТаблицаПравилВыгрузки;
КонецФункции
// Возвращаемое значение:
// ДеревоЗначений - коллекция правил очистки данных:
// * Включить - Булево -
// * ЭтоГруппа - Булево -
// * Имя - Произвольный -
// * Наименование - Произвольный -
// * Порядок - Число -
// * СпособОтбораДанных - Произвольный -
// * ОбъектВыборки - Произвольный -
// * УдалятьЗаПериод - Произвольный -
// * Непосредственно - Булево -
// * ПередОбработкой - Произвольный -
// * ИмяОбработчикаПередОбработкой - Произвольный -
// * ПослеОбработки - Произвольный -
// * ИмяОбработчикаПослеОбработки - Произвольный -
// * ПередУдалением - Произвольный -
// * ИмяОбработчикаПередУдалением - Произвольный -
//
Функция КоллекцияПравилаОчисткиДанных()
Возврат ТаблицаПравилОчистки;
КонецФункции
#КонецОбласти
#Область ПроцедурыЗагрузкиПравилОбмена
// Осуществляет загрузку правила конвертации группы свойств.
//
// Параметры:
// ПравилаОбмена - ЧтениеXML - Объект типа ЧтениеXML.
// ТаблицаСвойств - таблица значений, содержащая ПКС.
// ТаблицаСвойств - см. КоллекцияПравилаКонвертацииСвойств
// СвойстваОтключенные - см. КоллекцияПравилаКонвертацииСвойств
// СинхронизироватьПоИдентификатору - Булево - Истина, если синхронизация выполняется по идентификатору.
// ИмяПКО - Строка - имя правила конвертации.
//
Процедура ЗагрузитьПКГС(ПравилаОбмена, ТаблицаСвойств, СвойстваОтключенные, СинхронизироватьПоИдентификатору, ИмяПКО = "")
@@ -4708,19 +4931,15 @@
// Осуществляет загрузку правила конвертации свойств.
//
// Параметры:
// ПравилаОбмена - ЧтениеXML - Объект типа ЧтениеXML.
// ТаблицаСвойств - таблица значений, содержащая ПКС.
//
// Параметры:
// ПравилаОбмена - ЧтениеXML - объект, содержащий текст правил обмена.
// ТаблицаСвойств - ТаблицаЗначений - таблица ПКС.
// СвойстваОтключенные - ТаблицаЗначений - таблица отключенных ПКС.
// ТаблицаСвойств - см. КоллекцияПравилаКонвертацииСвойств
// СвойстваОтключенные - см. КоллекцияПравилаКонвертацииСвойств
// СвойстваПКО - Структура - уточняющие сведения об изменяемых данных:
// * ИмяПКО - Строка - Имя ПКО.
// * СинхронизироватьПоИдентификатору - Булево - признак использования алгоритма поиска по уникальному идентификатору.
// * ИмяРодителя - Строка - имя родительского ПКО или ПКГС.
// СтрокаПолейПоиска - Строка - свойства поиска ПКО.
// ТаблицаПоиска - ТаблицаЗначений - таблица ПКС (синхронизирующих).
// ТаблицаПоиска - см. КоллекцияПравилаКонвертацииСвойств
//
Процедура ЗагрузитьПКС(ПравилаОбмена,
ТаблицаСвойств,
@@ -4886,8 +5105,8 @@
//
// Параметры:
// ПравилаОбмена - ЧтениеXML - Объект типа ЧтениеXML.
// ТаблицаСвойств - таблица значений, содержащая ПКС.
// ТаблицаПоиска - таблица значений, содержащая ПКС (синхронизирующих).
// ТаблицаСвойств - ТаблицаЗначений - таблица значений, содержащая ПКС.
// ТаблицаПоиска - ТаблицаЗначений - таблица значений, содержащая ПКС (синхронизирующих).
//
Процедура ЗагрузитьСвойства(ПравилаОбмена,
ТаблицаСвойств,
@@ -4993,7 +5212,7 @@
ЗаписьXML.ЗаписатьНачалоЭлемента("Правило");
НоваяСтрока = ТаблицаПравилКонвертации.Добавить();
НоваяСтрока = КоллекцияПравилаКонвертации().Добавить();
// Значения по умолчанию
@@ -5001,14 +5220,7 @@
НоваяСтрока.НеЗамещать = Ложь;
НоваяСтрока.ПриоритетОбъектовОбмена = Перечисления.ПриоритетыОбъектовОбмена.ПриоритетОбъектаОбменаВыше;
ПоискПоТабличнымЧастям = Новый ТаблицаЗначений;
ПоискПоТабличнымЧастям.Колонки.Добавить("ИмяЭлемента");
ПоискПоТабличнымЧастям.Колонки.Добавить("МассивКлючевыхПолейПоиска");
ПоискПоТабличнымЧастям.Колонки.Добавить("КлючевыеПоляПоиска");
ПоискПоТабличнымЧастям.Колонки.Добавить("Валидное", одОписаниеТипа("Булево"));
НоваяСтрока.ПоискПоТабличнымЧастям = ПоискПоТабличнымЧастям;
НоваяСтрока.ПоискПоТабличнымЧастям = КоллекцияПоискПоТабличнымЧастям();
Пока ПравилаОбмена.Прочитать() Цикл
@@ -5122,9 +5334,9 @@
ИначеЕсли ИмяУзла = "Свойства" Тогда
НоваяСтрока.Свойства = ТаблицаПравилКонвертацииСвойств.Скопировать();
НоваяСтрока.СвойстваПоиска = ТаблицаПравилКонвертацииСвойств.Скопировать();
НоваяСтрока.СвойстваОтключенные = ТаблицаПравилКонвертацииСвойств.Скопировать();
НоваяСтрока.Свойства = КоллекцияПравилаКонвертацииСвойств().Скопировать();
НоваяСтрока.СвойстваПоиска = КоллекцияПравилаКонвертацииСвойств().Скопировать();
НоваяСтрока.СвойстваОтключенные = КоллекцияПравилаКонвертацииСвойств().Скопировать();
Если НоваяСтрока.СинхронизироватьПоИдентификатору = Истина Тогда
@@ -5626,8 +5838,8 @@
//
Процедура ЗагрузитьПравилаОчистки(ПравилаОбмена, ЗаписьXML)
ТаблицаПравилОчистки.Строки.Очистить();
СтрокиДЗ = ТаблицаПравилОчистки.Строки;
КоллекцияПравилаОчисткиДанных().Строки.Очистить();
СтрокиДЗ = КоллекцияПравилаОчисткиДанных().Строки;
ЗаписьXML.ЗаписатьНачалоЭлемента("ПравилаОчисткиДанных");
@@ -6008,11 +6220,10 @@
//
// Параметры:
// ПравилаОбмена - ЧтениеXML - Объект типа ЧтениеXML.
// НоваяСтрока - строка дерева значений, описывающая правило выгрузки данных.
//
Процедура ЗагрузитьПВД(ПравилаОбмена)
НоваяСтрока = ТаблицаПравилВыгрузки.Добавить();
НоваяСтрока = КоллекцияПравилаВыгрузкиДанных().Добавить();
НоваяСтрока.Включить = Не одАтрибут(ПравилаОбмена, ТипБулево, "Отключить");
@@ -6158,11 +6369,11 @@
Отбор.Вставить("ТипИсточника", ТипИсточника);
Отбор.Вставить("ТипПриемника", ТипПриемника);
Если ТаблицаПравилКонвертации.НайтиСтроки(Отбор).Количество() <> 0 Тогда
Если КоллекцияПравилаКонвертации().НайтиСтроки(Отбор).Количество() <> 0 Тогда
Возврат;
КонецЕсли;
НоваяСтрока = ТаблицаПравилКонвертации.Добавить();
НоваяСтрока = КоллекцияПравилаКонвертации().Добавить();
НоваяСтрока.ЗапоминатьВыгруженные = Истина;
НоваяСтрока.НеЗамещать = Ложь;
@@ -6214,10 +6425,10 @@
//
// Параметры:
// Объект - Объект-источник, для которого ищем правило конвертации.
// ИмяПравила - имя правила конвертации.
// ИмяПравила - Строка - имя правила конвертации.
//
// Возвращаемое значение:
// Ссылка на правило конвертации (строка в таблице правил).
// СтрокаТаблицыЗначений - ссылка на правило конвертации (строка в таблице правил).
//
Функция НайтиПравило(Объект = Неопределено, ИмяПравила = "")
@@ -6243,10 +6454,6 @@
КонецФункции
// Восстанавливает правила из внутреннего формата.
//
// Параметры:
//
Процедура ВосстановитьПравилаИзВнутреннегоФормата() Экспорт
Если СохраненныеНастройки = Неопределено Тогда
@@ -6264,8 +6471,8 @@
КонецЕсли;
Конвертация = СтруктураПравил.Конвертация;
ТаблицаПравилВыгрузки = СтруктураПравил.ТаблицаПравилВыгрузки;
ТаблицаПравилКонвертации = СтруктураПравил.ТаблицаПравилКонвертации;
ТаблицаПравилВыгрузки = СтруктураПравил.ТаблицаПравилВыгрузки; // см. КоллекцияПравилаВыгрузкиДанных
ТаблицаПравилКонвертации = СтруктураПравил.ТаблицаПравилКонвертации; // см. КоллекцияПравилаКонвертации
ТаблицаНастройкиПараметров = СтруктураПравил.ТаблицаНастройкиПараметров;
Алгоритмы = СтруктураПравил.Алгоритмы;
@@ -6593,7 +6800,7 @@
// Обходит дерево правил очистки данных и выполняет очистку.
//
// Параметры:
// Строки - Коллекция строк дерева значений.
// Строки - СтрокаДереваЗначений - коллекция строк дерева правил очистки данных.
//
Процедура ОбработатьПравилаОчистки(Строки)
@@ -7053,7 +7260,7 @@
ИначеЕсли ИмяТипа = "РегистрСведений" Тогда
НаборЗаписейРегистра = Менеджер.СоздатьНаборЗаписей();
НаборЗаписейРегистра = Менеджер.СоздатьНаборЗаписей(); // РегистрСведенийНаборЗаписей
Объект = НаборЗаписейРегистра.Добавить();
Возврат Объект;
@@ -9010,7 +9217,7 @@
Возврат Неопределено;
КонецЕсли;
НаборЗаписей = МенеджерРегистраСоответствийОбъектов.СоздатьНаборЗаписей();
НаборЗаписей = МенеджерРегистраСоответствийОбъектов.СоздатьНаборЗаписей(); // РегистрСведенийНаборЗаписей.СоответствияОбъектовИнформационныхБаз
// отбор для набора записей
НаборЗаписей.Отбор.УзелИнформационнойБазы.Установить(УзелОбменаЗагрузкаДанных);
@@ -9048,7 +9255,7 @@
Для Каждого Правило Из ПравилаКонвертации Цикл
Менеджер = Менеджеры.Получить(Тип(Правило.ТипИсточника)).Менеджер;
Менеджер = Менеджеры.Получить(Тип(Правило.ТипИсточника)).Менеджер; // СправочникМенеджер, ДокументМенеджер, и т.п.
Если ТипЗнч(Менеджер) = Тип("ТочкиМаршрутаБизнесПроцесса") Тогда
Продолжить;
@@ -9310,7 +9517,7 @@
Попытка
Если РежимЧтенияОтбора Тогда
ОтборРегистра[Имя].Установить(Значение);
ОбменДаннымиСлужебный.УстановитьЗначениеЭлементаОтбора(ОтборРегистра, Имя, Значение);
ИначеЕсли РежимЧтенияЗаписей Тогда
ТекущаяСтрокаНабораЗаписей[Имя] = Значение;
КонецЕсли;
@@ -10343,7 +10550,7 @@
КонецЕсли;
НаборДвиженийДокумента.Отбор.Регистратор.Установить(СсылкаНаДокумент.Ссылка);
ОбменДаннымиСлужебный.УстановитьЗначениеЭлементаОтбора(НаборДвиженийДокумента.Отбор, "Регистратор", СсылкаНаДокумент.Ссылка);
НаборДвиженийДокумента.Прочитать();
Возврат НаборДвиженийДокумента;
@@ -11494,17 +11701,17 @@
// Формирует узлы свойств объекта приемника в соответствии с указанной коллекцией правил конвертации свойств.
//
// Параметры:
// Источник - произвольный источник данных.
// Приемник - xml-узел объекта приемника.
// ВходящиеДанные - произвольные вспомогательные данные, передаваемые правилу
// Источник - Произвольный - произвольный источник данных.
// Приемник - ЗаписьXML - xml-узел объекта приемника.
// ВходящиеДанные - Произвольный - произвольные вспомогательные данные, передаваемые правилу
// для выполнения конвертации.
// ИсходящиеДанные - произвольные вспомогательные данные, передаваемые правилам
// ИсходящиеДанные - Произвольный - произвольные вспомогательные данные, передаваемые правилам
// конвертации объектов свойств.
// ПКО - ссылка на правило конвертации объектов (родитель коллекции правил конвертации свойств).
// КоллекцияПКС - коллекция правил конвертации свойств.
// УзелКоллекцииСвойств - xml-узел коллекции свойств.
// ОбъектКоллекции - если указан, то выполняется выгрузка свойств объекта коллекции, иначе Источника.
// ИмяПредопределенногоЭлемента - если указан, то в свойствах пишется имя предопределенного элемента.
// ПКО - СтрокаТаблицыЗначений - ссылка на правило конвертации объектов.
// КоллекцияПКС - см. КоллекцияПравилаКонвертацииСвойств
// УзелКоллекцииСвойств - ЗаписьXML - xml-узел коллекции свойств.
// ОбъектКоллекции - Произвольный - если указан, то выполняется выгрузка свойств объекта коллекции, иначе Источника.
// ИмяПредопределенногоЭлемента - Строка - если указан, то в свойствах пишется имя предопределенного элемента.
//
Процедура ВыгрузитьСвойства(Источник,
Приемник,
@@ -12257,7 +12464,7 @@
//
// Параметры:
// Объект - выгружаемый объект выборки.
// Правило - ссылка на правило выгрузки данных.
// ПравилоВыгрузки - ссылка на правило выгрузки данных.
// Свойства - свойства объекта метаданного выгружаемого объекта.
// ВходящиеДанные - произвольные вспомогательные данные.
//
@@ -12306,20 +12513,31 @@
КонецФункции
// Возвращаемое значение:
// ПостроительОтчета - объект построителя для выборки данных.
//
Функция ОбъектПостроительОтчета()
Если ПостроительОтчета = Неопределено Тогда
ПостроительОтчета = Новый ПостроительОтчета;
КонецЕсли;
Возврат ПостроительОтчета;
КонецФункции
Функция ВыборкаДляВыгрузкиСОграничениями(Правило)
ИмяМетаданных = Правило.ИмяОбъектаДляЗапроса;
СтрокаРазрешения = ?(ВыгружатьТолькоРазрешенные, " РАЗРЕШЕННЫЕ ", "");
ПостроительОтчета.Текст = "ВЫБРАТЬ " + СтрокаРазрешения + " Объект.Ссылка КАК Ссылка ИЗ " + ИмяМетаданных + " КАК Объект "+ "{ГДЕ Объект.Ссылка.* КАК " + СтрЗаменить(ИмяМетаданных, ".", "_") + "}";
ПостроительОтчета.Отбор.Сбросить();
Если НЕ Правило.НастройкиПостроителя = Неопределено Тогда
ПостроительОтчета.УстановитьНастройки(Правило.НастройкиПостроителя);
ОбъектПостроительОтчета().Текст = "ВЫБРАТЬ " + СтрокаРазрешения + " Объект.Ссылка КАК Ссылка ИЗ " + ИмяМетаданных + " КАК Объект "+ "{ГДЕ Объект.Ссылка.* КАК " + СтрЗаменить(ИмяМетаданных, ".", "_") + "}";
ОбъектПостроительОтчета().Отбор.Сбросить();
Если Не Правило.НастройкиПостроителя = Неопределено Тогда
ОбъектПостроительОтчета().УстановитьНастройки(Правило.НастройкиПостроителя);
КонецЕсли;
ПостроительОтчета.Выполнить();
Выборка = ПостроительОтчета.Результат.Выбрать();
ОбъектПостроительОтчета().Выполнить();
Выборка = ОбъектПостроительОтчета().Результат.Выбрать();
Возврат Выборка;
@@ -12329,17 +12547,15 @@
Выборка = Неопределено;
ТипВыборки = ТипЗнч(ВыборкаДанных);
Если ТипВыборки = Тип("ВыборкаИзРезультатаЗапроса") Тогда
Если ТипЗнч(ВыборкаДанных) = Тип("ВыборкаИзРезультатаЗапроса") Тогда
Выборка = ВыборкаДанных;
ИначеЕсли ТипВыборки = Тип("РезультатЗапроса") Тогда
ИначеЕсли ТипЗнч(ВыборкаДанных) = Тип("РезультатЗапроса") Тогда
Выборка = ВыборкаДанных.Выбрать();
ИначеЕсли ТипВыборки = Тип("Запрос") Тогда
ИначеЕсли ТипЗнч(ВыборкаДанных) = Тип("Запрос") Тогда
РезультатЗапроса = ВыборкаДанных.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
@@ -12525,7 +12741,7 @@
ТаблицаРезультат = ИнициализацияТаблицыРеквизитовРегистрации();
// Получаем предварительную таблицу из правил конвертации.
Для Каждого ПКО Из ТаблицаПравилКонвертации Цикл
Для Каждого ПКО Из КоллекцияПравилаКонвертации() Цикл
ЗаполнитьТаблицуРеквизитовРегистрацииОбъектовПоПравилу(ПКО, ТаблицаРезультат);
@@ -12926,7 +13142,7 @@
// Инициализирует колонки таблицы правил конвертации свойств объектов.
//
// Параметры:
// Таб - ТаблицаЗначений. инициализируемая таблица правил конвертации свойств.
// Таб - ТаблицаЗначений - инициализируемая таблица правил конвертации свойств.
//
Процедура ИнициализацияТаблицыПравилКонвертацииСвойств(Таб)
@@ -12991,7 +13207,7 @@
Функция СоздатьТаблицуВыгруженныхОбъектов()
Таблица = Новый ТаблицаЗначений();
Таблица = Новый ТаблицаЗначений;
Таблица.Колонки.Добавить("Ключ");
Таблица.Колонки.Добавить("УзелСсылки");
Таблица.Колонки.Добавить("ВыгруженаТолькоСсылка", Новый ОписаниеТипов("Булево"));
@@ -13007,9 +13223,6 @@
// Инициализирует колонки таблицы правил конвертации объектов.
//
// Параметры:
// Нет.
//
Процедура ИнициализацияТаблицыПравилКонвертации()
Колонки = ТаблицаПравилКонвертации.Колонки;
@@ -13109,9 +13322,6 @@
// Инициализирует колонки таблицы правил выгрузки данных.
//
// Параметры:
// Нет
//
Процедура ИнициализацияТаблицыПравилВыгрузки()
Колонки = ТаблицаПравилВыгрузки.Колонки;
@@ -13155,9 +13365,6 @@
// Инициализирует колонки таблицы правил очистки данных.
//
// Параметры:
// Нет.
//
Процедура ИнициализацияТаблицыПравилОчистки()
Колонки = ТаблицаПравилОчистки.Колонки;
@@ -13186,9 +13393,6 @@
// Инициализирует колонки таблицы настройки параметров.
//
// Параметры:
// Нет.
//
Процедура ИнициализацияТаблицыНастройкиПараметров()
Колонки = ТаблицаНастройкиПараметров.Колонки;
@@ -16456,11 +16660,11 @@
Возврат;
КонецЕсли;
ПравилаКонвертацииСвойств = Новый ТаблицаЗначений;
ПравилаКонвертацииСвойств = Новый ТаблицаЗначений; // см. КоллекцияПравилаКонвертацииСвойств
ИнициализацияТаблицыПравилКонвертацииСвойств(ПравилаКонвертацииСвойств);
Свойства = ПравилаКонвертацииСвойств.Скопировать();
СвойстваПоиска = ПравилаКонвертацииСвойств.Скопировать();
Свойства = ПравилаКонвертацииСвойств.Скопировать(); // см. КоллекцияПравилаКонвертацииСвойств
СвойстваПоиска = ПравилаКонвертацииСвойств.Скопировать(); // см. КоллекцияПравилаКонвертацииСвойств
МетаданныеОбщегоУзла = Метаданные.ПланыОбмена[ИмяПланаОбмена];
@@ -16478,7 +16682,7 @@
ПКС.ВидПриемника = "ТабличнаяЧасть";
ПКС.Источник = Свойство;
ПКС.Приемник = Свойство;
ПКС.ПравилаГруппы = ПравилаКонвертацииСвойств.Скопировать();
ПКС.ПравилаГруппы = ПравилаКонвертацииСвойств.Скопировать(); // см. КоллекцияПравилаКонвертацииСвойств
Для Каждого Реквизит Из МетаданныеОбщегоУзла.ТабличныеЧасти[Свойство].Реквизиты Цикл
@@ -1233,16 +1233,16 @@
<name>ГруппаНастройкаШаблоныСообщений</name>
<id>1801</id>
<items xsi:type="form:Button">
<name>НастроитьШаблоныСообщений</name>
<id>1803</id>
<name>СправочникШаблоныСообщенийОткрытьСписок</name>
<id>1810</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>НастроитьШаблоныСообщенийРасширеннаяПодсказка</name>
<id>1804</id>
<name>СправочникШаблоныСообщенийОткрытьСписокРасширеннаяПодсказка</name>
<id>1811</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
@@ -1251,7 +1251,7 @@
</extInfo>
</extendedTooltip>
<type>Hyperlink</type>
<commandName>Form.Command.ШаблоныСообщений</commandName>
<commandName>Catalog.ШаблоныСообщений.StandardCommand.OpenList</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
@@ -2651,24 +2651,6 @@
<currentRowUse>DontUse</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</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>
<formCommands>
<name>РолиИИсполнителиЗадач</name>
<title>
@@ -157,16 +157,6 @@
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура ШаблоныСообщений(Команда)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ШаблоныСообщений") Тогда
МодульШаблоныСообщенийКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ШаблоныСообщенийКлиент");
МодульШаблоныСообщенийКлиент.ОткрытьСписокШаблонов();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура РолиИИсполнителиЗадач(Команда)
@@ -10,6 +10,62 @@
#Область СлужебныйПрограммныйИнтерфейс
// Параметры:
// НастройкаXDTO - Булево - Истина, если настраивается обмен через XDTO.
//
// Возвращаемое значение:
// Структура - состав настроек подключения для настройки обмена:
// * ИмяПланаОбмена - Строка - имя плана обмена.
// * ИмяПланаОбменаКорреспондента - Строка - имя плана обмена корреспондента.
// * ИдентификаторНастройки - Строка - имя варианта настройки, как оно задано в модуле менеджера плана обмена.
// * ФорматОбмена - Строка - имя формата обмена.
// * Наименование - Строка - наименование этого приложения.
// * НаименованиеКорреспондента - Строка - наименование приложения корреспондента.
// * Префикс - Строка - префикс этого приложения.
// * ПрефиксКорреспондента - Строка - префикс приложения корреспондента.
// * ИдентификаторИнформационнойБазыИсточника - Строка - идентификатор этого приложения.
// * ИдентификаторИнформационнойБазыПриемника - Строка - идентификатор приложения корреспондента.
// * КонечнаяТочкаКорреспондента - ОпределяемыйТип.КонечнаяТочкаОбменаСообщениями - точка обмена сообщениями.
// * Корреспондент - ПланОбменаСсылка - узел плана обмена.
// * ОбластьДанныхКорреспондента - Число - номер области данных корреспондента.
// * НастройкиXDTOКорреспондента - Структура - описание настроек формата обмена XDTO корреспондента:
// ** ПоддерживаемыеВерсии - Массив из Строка - (опционально) набор поддерживаемых версий формата обмена.
// ** ПоддерживаемыеОбъекты - ХранилищеЗначения - таблица поддерживаемых объектов формата.
//
Функция ОписаниеНастроекПодключения(НастройкаXDTO) Экспорт
НастройкиПодключения = Новый Структура;
НастройкиПодключения.Вставить("ИмяПланаОбмена", "");
НастройкиПодключения.Вставить("ИмяПланаОбменаКорреспондента", "");
НастройкиПодключения.Вставить("ИдентификаторНастройки", "");
НастройкиПодключения.Вставить("ФорматОбмена", "");
НастройкиПодключения.Вставить("Наименование", "");
НастройкиПодключения.Вставить("НаименованиеКорреспондента", "");
НастройкиПодключения.Вставить("Префикс", "");
НастройкиПодключения.Вставить("ПрефиксКорреспондента", "");
НастройкиПодключения.Вставить("ИдентификаторИнформационнойБазыИсточника", "");
НастройкиПодключения.Вставить("ИдентификаторИнформационнойБазыПриемника", "");
НастройкиПодключения.Вставить("КонечнаяТочкаКорреспондента");
НастройкиПодключения.Вставить("Корреспондент");
НастройкиПодключения.Вставить("ОбластьДанныхКорреспондента", 0);
Если НастройкаXDTO Тогда
НастройкиXDTOКорреспондента = Новый Структура;
НастройкиXDTOКорреспондента.Вставить("ПоддерживаемыеВерсии", Новый Массив);
НастройкиXDTOКорреспондента.Вставить("ПоддерживаемыеОбъекты");
НастройкиПодключения.Вставить("НастройкиXDTOКорреспондента", НастройкиXDTOКорреспондента);
КонецЕсли;
КонецФункции
// Для внутреннего использования
//
Процедура НастроитьОбменШаг1_3_0_1_1(Параметры, АдресВременногоХранилища) Экспорт
@@ -23,11 +79,10 @@
МенеджерПланаОбменСообщениями = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени("ПланОбмена."
+ ИмяПланаОбменаСообщениями);
НастройкиПодключения = Неопределено;
НастройкиПодключения = Неопределено; // см. ОписаниеНастроекПодключения
Параметры.Свойство("НастройкиПодключения", НастройкиПодключения);
ПараметрыОбработчикаСессии = Неопределено;
ИнициализироватьПараметрыОбработчикаДлительнойОперации(ПараметрыОбработчикаСессии, Неопределено);
ПараметрыОбработчикаСессии = ПараметрыОбработчикаДлительнойОперации();
УстановитьПривилегированныйРежим(Истина);
@@ -117,7 +172,7 @@
МодульСообщенияВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("СообщенияВМоделиСервиса");
ИнициализироватьПараметрыОбработчикаДлительнойОперации(ПараметрыОбработчика, Неопределено);
ПараметрыОбработчика = ПараметрыОбработчикаДлительнойОперации();
УстановитьПривилегированныйРежим(Истина);
@@ -369,7 +424,7 @@
МодульСообщенияВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("СообщенияВМоделиСервиса");
ИнициализироватьПараметрыОбработчикаДлительнойОперации(ПараметрыОбработчика, Неопределено);
ПараметрыОбработчика = ПараметрыОбработчикаДлительнойОперации();
ПараметрыОбработчика.ДополнительныеПараметры.Вставить("НастройкиПодключения", НастройкиПодключения);
ИмяПланаОбмена = НастройкиПодключения.ИмяПланаОбмена;
@@ -634,7 +689,7 @@
МодульСообщенияВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("СообщенияВМоделиСервиса");
ИнициализироватьПараметрыОбработчикаДлительнойОперации(ПараметрыОбработчика, Неопределено);
ПараметрыОбработчика = ПараметрыОбработчикаДлительнойОперации();
УстановитьПривилегированныйРежим(Истина);
@@ -772,7 +827,7 @@
//
Процедура ПриНачалеДлительнойОперации(ФоновоеЗадание, ПараметрыОбработчика, ПродолжитьОжидание = Истина)
ИнициализироватьПараметрыОбработчикаДлительнойОперации(ПараметрыОбработчика, ФоновоеЗадание);
ПараметрыОбработчика = ПараметрыОбработчикаДлительнойОперации(ФоновоеЗадание);
Если ФоновоеЗадание.Статус = "Выполняется" Тогда
ПараметрыОбработчика.АдресРезультата = ФоновоеЗадание.АдресРезультата;
@@ -832,7 +887,7 @@
КонецПроцедуры
Процедура ИнициализироватьПараметрыОбработчикаДлительнойОперации(ПараметрыОбработчика, ФоновоеЗадание)
Функция ПараметрыОбработчикаДлительнойОперации(ФоновоеЗадание = Неопределено)
ПараметрыОбработчика = Новый Структура;
ПараметрыОбработчика.Вставить("ФоновоеЗадание", ФоновоеЗадание);
@@ -843,7 +898,9 @@
ПараметрыОбработчика.Вставить("АдресРезультата", Неопределено);
ПараметрыОбработчика.Вставить("ДополнительныеПараметры", Новый Структура);
КонецПроцедуры
Возврат ПараметрыОбработчика;
КонецФункции
Функция КлючФоновогоЗадания(ИмяПланаОбмена, Действие)
@@ -899,7 +956,7 @@
Продолжить;
КонецЕсли;
ИнициализироватьПараметрыОбработчикаДлительнойОперации(СтрокаКодыУзлов.ПараметрыОбработчика, Неопределено);
СтрокаКодыУзлов.ПараметрыОбработчика = ПараметрыОбработчикаДлительнойОперации();
НачатьТранзакцию();
Попытка
@@ -959,7 +1016,7 @@
МодульСообщенияВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("СообщенияВМоделиСервиса");
ИнициализироватьПараметрыОбработчикаДлительнойОперации(ПараметрыОбработчика, Неопределено);
ПараметрыОбработчика = ПараметрыОбработчикаДлительнойОперации();
ИмяПланаОбмена = НастройкиПодключения.ИмяПланаОбмена;
ОбластьДанныхКорреспондента = НастройкиПодключения.ОбластьДанныхКорреспондента;
@@ -410,7 +410,7 @@
Возврат;
КонецЕсли;
ТаблицаПриложений = СтатусЗавершения.Результат;
ТаблицаПриложений = СтатусЗавершения.Результат; // ТаблицаЗначений
ТаблицаПриложений.Колонки.Добавить("КартинкаРежимИспользования", Новый ОписаниеТипов("Число"));
ТаблицаПриложений.ЗаполнитьЗначения(1, "КартинкаРежимИспользования"); // приложение в Интернете
@@ -894,37 +894,35 @@
Если ЭтоОбменСПриложениемВСервисе Тогда
НастройкиПодключения = Новый Структура;
НастройкиПодключения.Вставить("ИмяПланаОбмена", ИмяПланаОбменаКорреспондента);
НастройкиПодключения.Вставить("ИмяПланаОбменаКорреспондента", ИмяПланаОбмена);
МодульПомощникНастройки = ОбменДаннымиСервер.МодульПомощникНастройкиСинхронизацииДанныхМеждуПриложениямиВИнтернете();
НастройкиПодключения.Вставить("ИдентификаторНастройки", ИдентификаторНастройки);
НастройкиПодключения = МодульПомощникНастройки.ОписаниеНастроекПодключения(НастройкаXDTO);
НастройкиПодключения.Вставить("ФорматОбмена", ФорматОбмена);
НастройкиПодключения.ИмяПланаОбмена = ИмяПланаОбменаКорреспондента;
НастройкиПодключения.ИмяПланаОбменаКорреспондента = ИмяПланаОбмена;
НастройкиПодключения.Вставить("Наименование", Наименование);
НастройкиПодключения.Вставить("НаименованиеКорреспондента", НаименованиеКорреспондента);
НастройкиПодключения.ИдентификаторНастройки = ИдентификаторНастройки;
НастройкиПодключения.Вставить("Префикс", Префикс);
НастройкиПодключения.Вставить("ПрефиксКорреспондента", ПрефиксКорреспондента);
НастройкиПодключения.ФорматОбмена = ФорматОбмена;
НастройкиПодключения.Вставить("ИдентификаторИнформационнойБазыИсточника", ИдентификаторИнформационнойБазыИсточника);
НастройкиПодключения.Вставить("ИдентификаторИнформационнойБазыПриемника", ИдентификаторИнформационнойБазыПриемника);
НастройкиПодключения.Наименование = Наименование;
НастройкиПодключения.НаименованиеКорреспондента = НаименованиеКорреспондента;
НастройкиПодключения.Вставить("КонечнаяТочкаКорреспондента", КонечнаяТочкаКорреспондента);
НастройкиПодключения.Префикс = Префикс;
НастройкиПодключения.ПрефиксКорреспондента = ПрефиксКорреспондента;
НастройкиПодключения.Вставить("Корреспондент");
НастройкиПодключения.Вставить("ОбластьДанныхКорреспондента", ОбластьДанныхКорреспондента);
НастройкиПодключения.ИдентификаторИнформационнойБазыИсточника = ИдентификаторИнформационнойБазыИсточника;
НастройкиПодключения.ИдентификаторИнформационнойБазыПриемника = ИдентификаторИнформационнойБазыПриемника;
НастройкиПодключения.КонечнаяТочкаКорреспондента = КонечнаяТочкаКорреспондента;
НастройкиПодключения.ОбластьДанныхКорреспондента = ОбластьДанныхКорреспондента;
Если НастройкаXDTO Тогда
НастройкиПодключения.Вставить("НастройкиXDTOКорреспондента", Новый Структура);
НастройкиПодключения.НастройкиXDTOКорреспондента.Вставить("ПоддерживаемыеВерсии", Новый Массив);
НастройкиПодключения.НастройкиXDTOКорреспондента.Вставить("ПоддерживаемыеОбъекты", ПоддерживаемыеОбъектыФорматаКорреспондента);
НастройкиПодключения.НастройкиXDTOКорреспондента.ПоддерживаемыеВерсии.Добавить(ВерсияФорматаОбмена);
НастройкиПодключения.НастройкиXDTOКорреспондента.ПоддерживаемыеОбъекты = ПоддерживаемыеОбъектыФорматаКорреспондента;
КонецЕсли;
МодульПомощникНастройки = ОбменДаннымиСервер.МодульПомощникНастройкиСинхронизацииДанныхМеждуПриложениямиВИнтернете();
Иначе
// Настройки подключения в формате структуры реквизитов помощника создания обмена данными.
@@ -1337,7 +1335,7 @@
ВременныйФайл = ПолучитьИмяВременногоФайла("xml");
ДанныеФайла = ПолучитьИзВременногоХранилища(АдресВХранилище);
ДанныеФайла = ПолучитьИзВременногоХранилища(АдресВХранилище); // ДвоичныеДанные
ДанныеФайла.Записать(ВременныйФайл);
Попытка
@@ -1373,7 +1371,7 @@
ВременныйФайл = ПолучитьИмяВременногоФайла("xml");
ДанныеФайла = ПолучитьИзВременногоХранилища(АдресВХранилище);
ДанныеФайла = ПолучитьИзВременногоХранилища(АдресВХранилище); // ДвоичныеДанные
ДанныеФайла.Записать(ВременныйФайл);
Попытка
@@ -1302,7 +1302,7 @@
ЭлементБлокировки.УстановитьЗначение("Ссылка", НастройкиСинхронизации.УзелОбмена);
Блокировка.Заблокировать();
УзелОбъект = НастройкиСинхронизации.УзелОбмена.ПолучитьОбъект();
УзелОбъект = НастройкиСинхронизации.УзелОбмена.ПолучитьОбъект(); // ПланОбменаОбъект
ПланыОбмена[ИмяПланаОбмена].ПриСохраненииНастроекСинхронизацииДанных(УзелОбъект,
НастройкиСинхронизации.ДанныеЗаполнения);
УзелОбъект.Записать();
@@ -1597,7 +1597,7 @@
КодЭтогоУзла = КодУзла(НастройкиПодключения);
КодНовогоУзла = КодУзлаКорреспондента(НастройкиПодключения);
МенеджерПланаОбмена = ПланыОбмена[НастройкиПодключения.ИмяПланаОбмена];
МенеджерПланаОбмена = ПланыОбмена[НастройкиПодключения.ИмяПланаОбмена]; // ПланОбменаМенеджер
// Обновляем код предопределенного узла этой базы, если он не заполнен.
ЭтотУзел = МенеджерПланаОбмена.ЭтотУзел();
@@ -1609,17 +1609,16 @@
ЭлементБлокировки.УстановитьЗначение("Ссылка", ЭтотУзел);
Блокировка.Заблокировать();
КодЭтогоУзлаВБазе = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ЭтотУзел, "Код");
СвойстваЭтогоУзла = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ЭтотУзел, "Код, Наименование");
КодЭтогоУзлаВБазе = СвойстваЭтогоУзла.Код;
НаименованиеЭтогоУзлаВБазе = СвойстваЭтогоУзла.Наименование;
ОбновитьКод = Ложь;
ОбновитьНаименование = Ложь;
Если ПустаяСтрока(КодЭтогоУзлаВБазе) Тогда
ЭтотУзелОбъект = ЭтотУзел.ПолучитьОбъект();
ЭтотУзелОбъект.Код = КодЭтогоУзла;
ЭтотУзелОбъект.Наименование = НастройкиПодключения.НаименованиеЭтойБазы;
ЭтотУзелОбъект.ДополнительныеСвойства.Вставить("ПолучениеСообщенияОбмена");
ЭтотУзелОбъект.Записать();
КодЭтогоУзлаВБазе = КодЭтогоУзла;
ОбновитьКод = Истина;
ОбновитьНаименование = Истина;
ИначеЕсли КодЭтогоУзлаВБазе <> КодЭтогоУзла Тогда
Если Не ОбщегоНазначения.РазделениеВключено()
И Не ОбменДаннымиСервер.ЭтоПланОбменаXDTO(НастройкиПодключения.ИмяПланаОбмена)
@@ -1627,16 +1626,30 @@
Или НастройкиПодключения.ИспользоватьПрефиксыДляНастройкиОбменаКорреспондента)
И ОбменДаннымиСервер.УзлыПланаОбмена(НастройкиПодключения.ИмяПланаОбмена).Количество() = 0 Тогда
ЭтотУзелОбъект = ЭтотУзел.ПолучитьОбъект();
ЭтотУзелОбъект.Код = КодЭтогоУзла;
ЭтотУзелОбъект.ДополнительныеСвойства.Вставить("ПолучениеСообщенияОбмена");
ЭтотУзелОбъект.Записать();
КодЭтогоУзлаВБазе = КодЭтогоУзла;
ОбновитьКод = Истина;
КонецЕсли;
КонецЕсли;
Если Не ОбновитьНаименование
И Не ОбщегоНазначения.РазделениеВключено()
И НаименованиеЭтогоУзлаВБазе <> НастройкиПодключения.НаименованиеЭтойБазы Тогда
ОбновитьНаименование = Истина;
КонецЕсли;
Если ОбновитьКод Или ОбновитьНаименование Тогда
ЭтотУзелОбъект = ЭтотУзел.ПолучитьОбъект();
Если ОбновитьКод Тогда
ЭтотУзелОбъект.Код = КодЭтогоУзла;
КодЭтогоУзлаВБазе = КодЭтогоУзла;
КонецЕсли;
Если ОбновитьНаименование Тогда
ЭтотУзелОбъект.Наименование = НастройкиПодключения.НаименованиеЭтойБазы;
КонецЕсли;
ЭтотУзелОбъект.ДополнительныеСвойства.Вставить("ПолучениеСообщенияОбмена");
ЭтотУзелОбъект.Записать();
КонецЕсли;
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
@@ -437,7 +437,7 @@
Процедура СоздатьОбновитьУзлыПланаОбмена(НастройкаОтборовНаУзле, ЗначенияПоУмолчаниюНаУзле, КодЭтогоУзла, КодНовогоУзла)
МенеджерПланаОбмена = ПланыОбмена[ИмяПланаОбмена];
МенеджерПланаОбмена = ПланыОбмена[ИмяПланаОбмена]; // ПланОбменаМенеджер
// ОБНОВЛЯЕМ ЭТОТ УЗЕЛ ПРИ НЕОБХОДИМОСТИ
@@ -2241,6 +2241,8 @@
&НаСервере
Функция ТекстСериализации(Сериализация)
ОбработкаОбъект = ЭтотОбъект();
Текст = Новый ТекстовыйДокумент;
Запись = Новый ЗаписьXML;
@@ -2257,9 +2259,8 @@
// Набор данных с отбором
Менеджер = МенеджерПоМетаданным(СписокНаборовЗаписейИмяТаблицы);
Значение = Менеджер.СоздатьНаборЗаписей();
Отбор = Значение.Отбор;
Для Каждого ИмяЗначение Из Элемент.Данные Цикл
Отбор[ИмяЗначение.Ключ].Установить(ИмяЗначение.Значение);
ОбработкаОбъект.УстановитьЗначениеЭлементаОтбора(Значение.Отбор, ИмяЗначение.Ключ, ИмяЗначение.Значение);
КонецЦикла;
Значение.Прочитать();
@@ -2505,7 +2506,9 @@
&НаСервере
Функция СтруктураКлючаНабораЗаписей(Знач ТекущиеДанные)
Описание = ЭтотОбъект().ХарактеристикиПоМетаданным(СписокНаборовЗаписейИмяТаблицы);
ОбработкаОбъект = ЭтотОбъект();
Описание = ОбработкаОбъект.ХарактеристикиПоМетаданным(СписокНаборовЗаписейИмяТаблицы);
Если Описание = Неопределено Тогда
// Неизвестный источник
@@ -2535,9 +2538,9 @@
Результат.ИмяФормы = СписокНаборовЗаписейИмяТаблицы + ".ФормаСписка";
Иначе
Набор = Описание.Менеджер.СоздатьНаборЗаписей();
Набор = Описание.Менеджер.СоздатьНаборЗаписей(); // РегистрСведенийНаборЗаписей, и т.п.
Для Каждого КлючЗначение Из Измерения Цикл
Набор.Отбор[КлючЗначение.Ключ].Установить(КлючЗначение.Значение);
ОбработкаОбъект.УстановитьЗначениеЭлементаОтбора(Набор.Отбор, КлючЗначение.Ключ, КлючЗначение.Значение);
КонецЦикла;
Набор.Прочитать();
Если Набор.Количество() = 1 Тогда
@@ -464,7 +464,7 @@
Описание = ХарактеристикиПоМетаданным(ИмяТаблицы);
ТекущийОбъект = Описание.Менеджер.СоздатьНаборЗаписей();
Для Каждого КлючЗначение Из ОбъектРегистрации Цикл
ТекущийОбъект.Отбор[КлючЗначение.Ключ].Установить(КлючЗначение.Значение);
УстановитьЗначениеЭлементаОтбора(ТекущийОбъект.Отбор, КлючЗначение.Ключ, КлючЗначение.Значение);
КонецЦикла;
Иначе
@@ -1418,7 +1418,7 @@
Набор = Описание.Менеджер.СоздатьНаборЗаписей();
Для Каждого КлючЗначение Из Элемент Цикл
Набор.Отбор[КлючЗначение.Ключ].Установить(КлючЗначение.Значение);
УстановитьЗначениеЭлементаОтбора(Набор.Отбор, КлючЗначение.Ключ, КлючЗначение.Значение);
КонецЦикла;
Значения.Добавить(Набор);
// Смотрим опциональные варианты.
@@ -1801,7 +1801,7 @@
Иначе
Описание = ХарактеристикиПоМетаданным(Мета);
Набор = Описание.Менеджер.СоздатьНаборЗаписей();
Набор.Отбор.Регистратор.Установить(ОбъектРегистрации);
УстановитьЗначениеЭлементаОтбора(Набор.Отбор, "Регистратор", ОбъектРегистрации);
Набор.Прочитать();
Результат.Добавить(Набор);
// И проверим полученный набор рекурсивно.
@@ -1828,7 +1828,7 @@
Результат.Добавить(Мета);
Иначе
Набор = Описание.Менеджер.СоздатьНаборЗаписей();
Набор.Отбор.Регистратор.Установить(ОбъектРегистрации);
УстановитьЗначениеЭлементаОтбора(Набор.Отбор, "Регистратор", ОбъектРегистрации);
Набор.Прочитать();
Результат.Добавить(Набор);
КонецЕсли;
@@ -2047,7 +2047,7 @@
Набор = Описание.Менеджер.СоздатьНаборЗаписей();
Для Каждого КлючЗначение Из СтруктураПолей Цикл
Набор.Отбор[КлючЗначение.Ключ].Установить(КлючЗначение.Значение);
УстановитьЗначениеЭлементаОтбора(Набор.Отбор, КлючЗначение.Ключ, КлючЗначение.Значение);
КонецЦикла;
Набор.Прочитать();
@@ -2260,6 +2260,20 @@
Возврат Результат;
КонецФункции
// Параметры:
// Отбор - Отбор - произвольный отбор.
// КлючЭлемента - Строка - имя элемента отбора.
// ЗначениеЭлемента - Произвольный - значение элемента отбора.
//
Процедура УстановитьЗначениеЭлементаОтбора(Отбор, КлючЭлемента, ЗначениеЭлемента) Экспорт
ЭлементОтбора = Отбор.Найти(КлючЭлемента);
Если ЭлементОтбора <> Неопределено Тогда
ЭлементОтбора.Установить(ЗначениеЭлемента);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Иначе
@@ -4,6 +4,105 @@
<key>ru</key>
<value>Результаты обновления программы</value>
</title>
<items xsi:type="form:FormGroup">
<name>ГруппаИнформацияОбУдаленииПатчей</name>
<id>255</id>
<items xsi:type="form:Decoration">
<name>УдалениеПатчейКартинка</name>
<id>257</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>УдалениеПатчейКартинкаРасширеннаяПодсказка</name>
<id>259</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>УдалениеПатчейКартинкаКонтекстноеМеню</name>
<id>258</id>
<autoFill>true</autoFill>
</contextMenu>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:PictureDecorationExtInfo">
<picture xsi:type="core:PictureRef">
<picture>CommonPicture.Предупреждение32</picture>
</picture>
<fileDragMode>AsFileRef</fileDragMode>
</extInfo>
</items>
<items xsi:type="form:Decoration">
<name>УдалениеПатчейНадпись</name>
<id>260</id>
<title>
<key>ru</key>
<value>Удаление устаревших исправлений (патчей) не было выполнено штатно при обновлении на новую версию, поэтому они удалены при первом входе администратора в программу.
Возможные причины:
• обновление выполнялось нерекомендуемыми сторонними средствами;
• патч, который не подходит для этой версии программы, был установлен вручную, например, с помощью конфигуратора.
Подобные действия могут приводить к различным ошибкам при работе программы и при ее обновлении на новую версию. Рекомендуется использовать штатные средства для обновления.</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>УдалениеПатчейНадписьРасширеннаяПодсказка</name>
<id>262</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>УдалениеПатчейНадписьКонтекстноеМеню</name>
<id>261</id>
<autoFill>true</autoFill>
</contextMenu>
<type>Label</type>
<maxWidth>60</maxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ГруппаИнформацияОбУдаленииПатчейРасширеннаяПодсказка</name>
<id>256</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>AlwaysHorizontal</group>
<behavior>Auto</behavior>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>Группа1</name>
<id>230</id>
@@ -117,7 +117,7 @@
ОбработатьРезультатОбновленияНаСервере();
СкрытьЛишниеГруппыНаФорме(Параметры.ОткрытиеИзПанелиАдминистрирования);
СкрытьЛишниеГруппыНаФорме(Параметры.ОткрытиеИзПанелиАдминистрирования, СведенияОбОбновлении);
Элементы.ОткрытьСписокОтложенныхОбработчиков.Заголовок = ТекстСообщения;
Элементы.ЗаголовокИнформации.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
@@ -282,7 +282,7 @@
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура СкрытьЛишниеГруппыНаФорме(ОткрытиеИзПанелиАдминистрирования)
Процедура СкрытьЛишниеГруппыНаФорме(ОткрытиеИзПанелиАдминистрирования, Сведения)
ЭтоПолноправныйПользователь = Пользователи.ЭтоПолноправныйПользователь(, Истина);
@@ -296,6 +296,15 @@
КлючСохраненияПоложенияОкна = "ФормаДляАдминистратора";
КонецЕсли;
Если ЭтоПолноправныйПользователь
И ЗначениеЗаполнено(Сведения.ВерсияУдалениеПатчей)
И Метаданные.Версия = Сведения.ВерсияУдалениеПатчей Тогда
Элементы.ГруппаИнформацияОбУдаленииПатчей.Видимость = Истина;
КлючСохраненияПоложенияОкна = "ПредупреждениеПоУдалениюПатчей";
Иначе
Элементы.ГруппаИнформацияОбУдаленииПатчей.Видимость = Ложь;
КонецЕсли;
Элементы.СнятьБлокировкуРегламентныхЗаданий.Видимость = ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЗавершениеРаботыПользователей");
КонецПроцедуры
@@ -31,8 +31,7 @@
СписокПолейТаблицы = Параметры.СписокПолейТаблицы;
СписокПолейСопоставления = Параметры.СписокПолейСопоставления;
// установка заголовка формы
Заголовок = Параметры.Заголовок;
Параметры.Свойство("Заголовок", Заголовок);
СценарийАвтоматическогоСопоставленияОбъектов();
@@ -304,8 +303,11 @@
ПолеИсточника = СтрЗаменить(ИмяПоляИсточника, "NN", Строка(НомерПоля));
ПолеПриемника = СтрЗаменить(ИмяПоляПриемника, "NN", Строка(НомерПоля));
Элементы[ПолеИсточника].Видимость = Ложь;
Элементы[ПолеПриемника].Видимость = Ложь;
ЭлементПолеИсточника = Элементы[ПолеИсточника]; // ПолеФормы
ЭлементПолеПриемника = Элементы[ПолеПриемника]; // ПолеФормы
ЭлементПолеИсточника.Видимость = Ложь;
ЭлементПолеПриемника.Видимость = Ложь;
КонецЦикла;
@@ -317,13 +319,16 @@
ПолеИсточника = СтрЗаменить(ИмяПоляИсточника, "NN", Строка(НомерПоля));
ПолеПриемника = СтрЗаменить(ИмяПоляПриемника, "NN", Строка(НомерПоля));
ЭлементПолеИсточника = Элементы[ПолеИсточника]; // ПолеФормы
ЭлементПолеПриемника = Элементы[ПолеПриемника]; // ПолеФормы
// Устанавливаем видимость полей.
Элементы[ПолеИсточника].Видимость = Элемент.Пометка;
Элементы[ПолеПриемника].Видимость = Элемент.Пометка;
ЭлементПолеИсточника.Видимость = Элемент.Пометка;
ЭлементПолеПриемника.Видимость = Элемент.Пометка;
// Устанавливаем заголовки полей.
Элементы[ПолеИсточника].Заголовок = Элемент.Представление;
Элементы[ПолеПриемника].Заголовок = Элемент.Представление;
ЭлементПолеИсточника.Заголовок = Элемент.Представление;
ЭлементПолеПриемника.Заголовок = Элемент.Представление;
КонецЦикла;
@@ -996,8 +996,11 @@
ПолеИсточника = СтрЗаменить(ИмяПоляИсточника, "NN", Строка(НомерПоля));
ПолеПриемника = СтрЗаменить(ИмяПоляПриемника, "NN", Строка(НомерПоля));
Элементы[ПолеИсточника].Видимость = Ложь;
Элементы[ПолеПриемника].Видимость = Ложь;
ЭлементПолеИсточника = Элементы[ПолеИсточника]; // ПолеФормы
ЭлементПолеПриемника = Элементы[ПолеПриемника]; // ПолеФормы
ЭлементПолеИсточника.Видимость = Ложь;
ЭлементПолеПриемника.Видимость = Ложь;
КонецЦикла;
@@ -1009,13 +1012,16 @@
ПолеИсточника = СтрЗаменить(ИмяПоляИсточника, "NN", Строка(НомерПоля));
ПолеПриемника = СтрЗаменить(ИмяПоляПриемника, "NN", Строка(НомерПоля));
ЭлементПолеИсточника = Элементы[ПолеИсточника]; // ПолеФормы
ЭлементПолеПриемника = Элементы[ПолеПриемника]; // ПолеФормы
// Устанавливаем видимость полей.
Элементы[ПолеИсточника].Видимость = Элемент.Пометка;
Элементы[ПолеПриемника].Видимость = Элемент.Пометка;
ЭлементПолеИсточника.Видимость = Элемент.Пометка;
ЭлементПолеПриемника.Видимость = Элемент.Пометка;
// Устанавливаем заголовки полей.
Элементы[ПолеИсточника].Заголовок = Элемент.Представление;
Элементы[ПолеПриемника].Заголовок = Элемент.Представление;
ЭлементПолеИсточника.Заголовок = Элемент.Представление;
ЭлементПолеПриемника.Заголовок = Элемент.Представление;
КонецЦикла;
@@ -333,12 +333,25 @@
КонецФункции
Функция ПолучитьСообщениеОбмена(ПроверкаНаличия)
// Возвращаемое значение:
// ТаблицаЗначений - коллекция сообщений обмена:
// * Идентификатор - Массив из Строка - коллекция идентификаторов сообщений.
// * ДатаОтправления - Дата - дата отправки сообщения.
//
Функция ТаблицаСообщенийОбмена()
ТаблицаСообщенийОбмена = Новый ТаблицаЗначений;
ТаблицаСообщенийОбмена.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Массив"));
ТаблицаСообщенийОбмена.Колонки.Добавить("ДатаОтправления", Новый ОписаниеТипов("Дата"));
Возврат ТаблицаСообщенийОбмена;
КонецФункции
Функция ПолучитьСообщениеОбмена(ПроверкаНаличия)
ТаблицаСообщенийОбмена = ТаблицаСообщенийОбмена();
МассивКолонок = Новый Массив;
МассивКолонок.Добавить("Идентификатор");
@@ -413,7 +426,7 @@
Возврат Ложь;
КонецПопытки;
ДвоичныеДанные = НаборСообщений[0].Вложения.Получить(ШаблонИмениФайлаСообщения+".zip");
ДвоичныеДанные = НаборСообщений[0].Вложения.Получить(ШаблонИмениФайлаСообщения+".zip"); // ДвоичныеДанные
Если ДвоичныеДанные <> Неопределено Тогда
ФайлЗапакован = Истина;
@@ -221,7 +221,7 @@
<id>1232</id>
<title>
<key>ru</key>
<value>Проверка ведения учета в программе давно не выполнялась. &lt;link ПерейтиКСпискуПроверок>Рекомендуется провести проверку до обновления&lt;/>.</value>
<value>Проверка ведения учета в программе давно не выполнялась. Рекомендуется &lt;link ПерейтиКСпискуПроверок>выполнить системные проверки&lt;/> до обновления.</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
@@ -95,11 +95,12 @@
Видимость = Ложь;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонтрольВеденияУчета") Тогда
МодульКонтрольВеденияУчетаСлужебный = ОбщегоНазначения.ОбщийМодуль("КонтрольВеденияУчетаСлужебный");
Информация = МодульКонтрольВеденияУчетаСлужебный.ИнформацияОПоследнейПроверкеВеденияУчета();
Информация = МодульКонтрольВеденияУчетаСлужебный.ИнформацияОСистемныхПроверкахВеденияУчета();
Если Информация.ПредупреждатьОНеобходимостиПовторнойПроверки Тогда
Подсказка = НСтр("ru = 'Последняя проверка выполнялась %1'");
Если ЗначениеЗаполнено(Информация.ДатаПоследнейПроверки) Тогда
Подсказка = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Подсказка, Информация.ДатаПоследнейПроверки);
Подсказка = НСтр("ru = 'Последняя системная проверка выполнялась %1.'");
Подсказка = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Подсказка,
Формат(Информация.ДатаПоследнейПроверки, "ДЛФ=Д"));
Иначе
Подсказка = "";
КонецЕсли;
@@ -1683,24 +1683,19 @@
#Область ФормированиеТелаПисьма
&НаСервере
Функция СформироватьТекстПисьмаВключаяПисьмоОснование(ДокументHTMLТекущееРедактирование, ТекущийОбъект)
Функция СформироватьТекстПисьмаВключаяПисьмоОснование(РедактируемыйДокументHTML, ТекущийОбъект)
Выборка = Взаимодействия.ПолучитьДанныеПисьмаОснования(Объект.ВзаимодействиеОснование);
Если ФорматСообщения = Перечисления.СпособыРедактированияЭлектронныхПисем.ОбычныйТекст Тогда
Возврат СформироватьИсходящееОбычныйТекст(Выборка, ТекущийОбъект);
Иначе
Возврат СформироватьИсходящееHTML(Выборка,ДокументHTMLТекущееРедактирование, ТекущийОбъект);
Возврат СформироватьИсходящееHTML(Выборка, РедактируемыйДокументHTML, ТекущийОбъект);
КонецЕсли;
КонецФункции
&НаСервере
Функция СформироватьИсходящееHTML(Выборка,ДокументHTMLТекущееРедактирование, ТекущийОбъект)
Функция СформироватьИсходящееHTML(Выборка, РедактируемыйДокументHTML, ТекущийОбъект)
// Получим ДокументHTML входящего письма.
Если Выборка.ТипТекста = Перечисления.ТипыТекстовЭлектронныхПисем.ПростойТекст Тогда
@@ -1711,57 +1706,18 @@
ЭлементТелоПисьма = ДокументHTML.Тело;
Если ЭлементТелоПисьма = Неопределено Тогда
Если ДокументHTMLТекущееРедактирование = Неопределено Тогда
Если РедактируемыйДокументHTML = Неопределено Тогда
Возврат ТекущийОбъект.ТекстHTML;
Иначе
Возврат Взаимодействия.ПолучитьТекстHTMLИзОбъектаДокументHTML(ДокументHTMLТекущееРедактирование);
Возврат Взаимодействия.ПолучитьТекстHTMLИзОбъектаДокументHTML(РедактируемыйДокументHTML);
КонецЕсли
КонецЕсли;
Если ДокументHTMLТекущееРедактирование = Неопределено Тогда
ДокументHTMLТекущееРедактирование = Взаимодействия.ПолучитьОбъектДокументHTMLИзТекстаHTML(ТекущийОбъект.ТекстHTML);
Если РедактируемыйДокументHTML = Неопределено Тогда
РедактируемыйДокументHTML = Взаимодействия.ПолучитьОбъектДокументHTMLИзТекстаHTML(ТекущийОбъект.ТекстHTML);
КонецЕсли;
МассивДочернихУзловТела = Взаимодействия.МассивДочернихУзловСодержащихHTML(ЭлементТелоПисьма);
// Добавляем текст отредактированный в поле форматированного документа.
Если ДокументHTMLТекущееРедактирование.Тело <> Неопределено Тогда
Для каждого ДочернийУзел Из ДокументHTMLТекущееРедактирование.Тело.ДочерниеУзлы Цикл
ЭлементТелоПисьма.ДобавитьДочерний(ДокументHTML.ИмпортироватьУзел(ДочернийУзел,Истина));
КонецЦикла;
КонецЕсли;
ЭлементDIV = Взаимодействия.ДобавитьЭлементСАтрибутами(
ЭлементТелоПисьма,
"div",
Новый Структура("style", "border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm 4.0pt"));
Для каждого ДочернийУзел Из МассивДочернихУзловТела Цикл
ЭлементDIV.ДобавитьДочерний(ДочернийУзел);
КонецЦикла;
// Подготовим шапку письма основания.
// Горизонтальный разделитель.
СтруктураАтрибутов = Новый Структура;
СтруктураАтрибутов.Вставить("size", "2");
СтруктураАтрибутов.Вставить("width", "100%");
СтруктураАтрибутов.Вставить("align", "center");
СтруктураАтрибутов.Вставить("tabindex", "-1");
ЭлементHR = Взаимодействия.ДобавитьЭлементСАтрибутами(
ЭлементDIV,
"hr",
СтруктураАтрибутов);
Взаимодействия.ВставитьЭлементHTMLПервымДочернимЭлементом(ЭлементDIV ,ЭлементHR, МассивДочернихУзловТела);
// Данные письма основания
ЭлементШрифт = Взаимодействия.СформироватьЭлементДанныхШапкиПисьма(ЭлементDIV, Выборка);
Взаимодействия.ВставитьЭлементHTMLПервымДочернимЭлементом(ЭлементDIV, ЭлементШрифт, МассивДочернихУзловТела);
ДокументHTML = Взаимодействия.ОбъединитьПисьма(РедактируемыйДокументHTML, ДокументHTML, Выборка);
Возврат Взаимодействия.ПолучитьТекстHTMLИзОбъектаДокументHTML(ДокументHTML);
КонецФункции
@@ -919,8 +919,8 @@
&НаКлиенте
Функция ПреобразоватьВводАдреса(Текст)
РусскиеКлавиши = "ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮЁ";
АнглийскиеКлавиши = "QWERTYUIOP[]ASDFGHJKL;'ZXCVBNM,.`";
РусскиеКлавиши = "ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЁ";
АнглийскиеКлавиши = "QWERTYUIOP[]ASDFGHJKL;'ZXCVBNM,`";
Текст = ВРег(Текст);
Для Позиция = 0 По СтрДлина(Текст) Цикл
Символ = Сред(Текст, Позиция, 1);
@@ -42,7 +42,7 @@
Элементы.СтраницаНепринятыеПоДатеЗапрета.Видимость = ИспользуетсяВерсионирование И ИспользуетсяДатыЗапретаИзменения;
// Устанавливаем отборы динамических списков и сохраняем их в реквизите для управления ими.
НастроитьОтборыДинамическихСписков(НастройкиОтборовДинамическихСписков);
НастройкиОтборовДинамическихСписков = НастройкиОтборовДинамическихСписков();
Если ОбщегоНазначения.РазделениеВключено() И ИспользуетсяВерсионирование Тогда
Элементы.КоллизииАвторДругойВерсии.Заголовок = НСтр("ru = 'Версия получена из приложения'");
@@ -270,7 +270,7 @@
&НаКлиенте
Процедура НепринятыеПоДатеПриАктивизацииСтроки(Элемент)
СвязанныеЭлементы = Новый Массив;
СвязанныеЭлементы = Новый Массив; // Массив из ГруппаФормы, КнопкаФормы
СвязанныеЭлементы.Добавить(Элементы.НепринятыеПоДатеСравнитьСДаннымиВБазе);
СвязанныеЭлементы.Добавить(Элементы.НепринятыеПоДатеПринятьВерсию);
СвязанныеЭлементы.Добавить(Элементы.НепринятыеПоДатеИзменить);
@@ -1155,76 +1155,56 @@
КонецПроцедуры
// Параметры:
// ДинамическийСписок - ДинамическийСписок - объект для установки отбора.
// НастройкаОтбора - см. НастройкаОтбораПоРезультатамОбменов
// - см. НастройкаОтбораПоВерсиямОбъектов
//
&НаСервере
Процедура ОбновитьОтборПоПериоду(Обновлять = Истина)
Процедура ОбновитьОтборДинамическогоСпискаПоПериоду(ДинамическийСписок, НастройкаОтбора)
Использование = ЗначениеЗаполнено(Период);
ОтборПоПериодуС = ЭлементОтбораДинамическогоСписка(ДинамическийСписок, НастройкаОтбора.ДатаНачала);
ОтборПоПериодуПо = ЭлементОтбораДинамическогоСписка(ДинамическийСписок, НастройкаОтбора.ДатаОкончания);
ОтборПоПериодуС.Использование = Использование;
ОтборПоПериодуПо.Использование = Использование;
ОтборПоПериодуС.ПравоеЗначение = Период.ДатаНачала;
ОтборПоПериодуПо.ПравоеЗначение = Период.ДатаОкончания;
КонецПроцедуры
&НаСервере
Процедура ОбновитьОтборПоПериоду(Обновлять = Истина)
// Непроведенные документы
ОтборПоПериодуДокументС = ЭлементОтбораДинамическогоСписка(НепроведенныеДокументы,
НастройкиОтборовДинамическихСписков.НепроведенныеДокументы.ДатаНачала);
ОтборПоПериодуДокументПо = ЭлементОтбораДинамическогоСписка(НепроведенныеДокументы,
НастройкиОтборовДинамическихСписков.НепроведенныеДокументы.ДатаОкончания);
ОтборПоПериодуДокументС.Использование = Использование;
ОтборПоПериодуДокументПо.Использование = Использование;
ОтборПоПериодуДокументС.ПравоеЗначение = Период.ДатаНачала;
ОтборПоПериодуДокументПо.ПравоеЗначение = Период.ДатаОкончания;
НастройкаОтбора = НастройкиОтборовДинамическихСписков.НепроведенныеДокументы; // см. НастройкаОтбораПоРезультатамОбменов
ОбновитьОтборДинамическогоСпискаПоПериоду(НепроведенныеДокументы, НастройкаОтбора);
// Незаполненные реквизиты
ОтборПоПериодуОбъектС = ЭлементОтбораДинамическогоСписка(НезаполненныеРеквизиты,
НастройкиОтборовДинамическихСписков.НезаполненныеРеквизиты.ДатаНачала);
ОтборПоПериодуОбъектПо = ЭлементОтбораДинамическогоСписка(НезаполненныеРеквизиты,
НастройкиОтборовДинамическихСписков.НезаполненныеРеквизиты.ДатаОкончания);
ОтборПоПериодуОбъектС.Использование = Использование;
ОтборПоПериодуОбъектПо.Использование = Использование;
ОтборПоПериодуОбъектС.ПравоеЗначение = Период.ДатаНачала;
ОтборПоПериодуОбъектПо.ПравоеЗначение = Период.ДатаОкончания;
НастройкаОтбора = НастройкиОтборовДинамическихСписков.НезаполненныеРеквизиты; // см. НастройкаОтбораПоРезультатамОбменов
ОбновитьОтборДинамическогоСпискаПоПериоду(НезаполненныеРеквизиты, НастройкаОтбора);
// Ошибки объекта XDTO
ОтборПоПериодуОбъектС = ЭлементОтбораДинамическогоСписка(ОшибкиОбъектаXDTO,
НастройкиОтборовДинамическихСписков.ОшибкиОбъектаXDTO.ДатаНачала);
ОтборПоПериодуОбъектПо = ЭлементОтбораДинамическогоСписка(ОшибкиОбъектаXDTO,
НастройкиОтборовДинамическихСписков.ОшибкиОбъектаXDTO.ДатаОкончания);
ОтборПоПериодуОбъектС.Использование = Использование;
ОтборПоПериодуОбъектПо.Использование = Использование;
ОтборПоПериодуОбъектС.ПравоеЗначение = Период.ДатаНачала;
ОтборПоПериодуОбъектПо.ПравоеЗначение = Период.ДатаОкончания;
НастройкаОтбора = НастройкиОтборовДинамическихСписков.ОшибкиОбъектаXDTO; // см. НастройкаОтбораПоРезультатамОбменов
ОбновитьОтборДинамическогоСпискаПоПериоду(ОшибкиОбъектаXDTO, НастройкаОтбора);
Если ИспользуетсяВерсионирование Тогда
ОтборПоПериодуКоллизииС = ЭлементОтбораДинамическогоСписка(Коллизии,
НастройкиОтборовДинамическихСписков.Коллизии.ДатаНачала);
ОтборПоПериодуКоллизииПо = ЭлементОтбораДинамическогоСписка(Коллизии,
НастройкиОтборовДинамическихСписков.Коллизии.ДатаОкончания);
НастройкаОтбора = НастройкиОтборовДинамическихСписков.Коллизии; // см. НастройкаОтбораПоВерсиямОбъектов
ОбновитьОтборДинамическогоСпискаПоПериоду(Коллизии, НастройкаОтбора);
ОтборПоПериодуКоллизииС.Использование = Использование;
ОтборПоПериодуКоллизииПо.Использование = Использование;
ОтборПоПериодуКоллизииС.ПравоеЗначение = Период.ДатаНачала;
ОтборПоПериодуКоллизииПо.ПравоеЗначение = Период.ДатаОкончания;
ОтборПоПериодуНепринятыеС = ЭлементОтбораДинамическогоСписка(НепринятыеПоДате,
НастройкиОтборовДинамическихСписков.НепринятыеПоДате.ДатаНачала);
ОтборПоПериодуНепринятыеПо = ЭлементОтбораДинамическогоСписка(НепринятыеПоДате,
НастройкиОтборовДинамическихСписков.НепринятыеПоДате.ДатаОкончания);
ОтборПоПериодуНепринятыеС.Использование = Использование;
ОтборПоПериодуНепринятыеПо.Использование = Использование;
ОтборПоПериодуНепринятыеС.ПравоеЗначение = Период.ДатаНачала;
ОтборПоПериодуНепринятыеПо.ПравоеЗначение = Период.ДатаОкончания;
НастройкаОтбора = НастройкиОтборовДинамическихСписков.НепринятыеПоДате; // см. НастройкаОтбораПоВерсиямОбъектов
ОбновитьОтборДинамическогоСпискаПоПериоду(НепринятыеПоДате, НастройкаОтбора);
КонецЕсли;
Если Обновлять Тогда
ОбновитьНаСервере();
КонецЕсли;
КонецПроцедуры
&НаСервере
@@ -1261,7 +1241,10 @@
Если ЗначениеЗаполнено(ОбновляемыйЭлемент) Тогда
Элементы[ОбновляемыйЭлемент].Обновить();
ЭлементФормы = Элементы.Найти(ОбновляемыйЭлемент);
Если ЭлементФормы <> Неопределено Тогда
ЭлементФормы.Обновить();
КонецЕсли;
Иначе
@@ -1367,104 +1350,118 @@
КонецПроцедуры
// Параметры:
// Отбор - ОтборКомпоновкиДанных - объект отбора.
//
// Возвращаемое значение:
// Структура - набор полей отбора:
// * Пропущена - ИдентификаторКомпоновкиДанных, Неопределено - идентификатор элемента компоновки.
// * ДатаНачала - ИдентификаторКомпоновкиДанных, Неопределено - идентификатор элемента компоновки.
// * ДатаОкончания - ИдентификаторКомпоновкиДанных, Неопределено - идентификатор элемента компоновки.
// * УзелРавно - ИдентификаторКомпоновкиДанных, Неопределено - идентификатор элемента компоновки.
// * Причина - ИдентификаторКомпоновкиДанных, Неопределено - идентификатор элемента компоновки.
// * УзелВСписке - ИдентификаторКомпоновкиДанных, Неопределено - идентификатор элемента компоновки.
//
&НаСервере
Процедура НастроитьОтборыДинамическихСписков(Результат)
Функция НастройкаОтбораПоРезультатамОбменов(Отбор)
Настройка = Новый Структура;
Настройка.Вставить("Пропущена", Отбор.ПолучитьИдентификаторПоОбъекту(
ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "Пропущена", ВидСравненияКомпоновкиДанных.Равно, Ложь, ,Истина)));
Настройка.Вставить("ДатаНачала", Отбор.ПолучитьИдентификаторПоОбъекту(
ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "ДатаВозникновения", ВидСравненияКомпоновкиДанных.БольшеИлиРавно, '00010101', , Истина)));
Настройка.Вставить("ДатаОкончания", Отбор.ПолучитьИдентификаторПоОбъекту(
ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "ДатаВозникновения", ВидСравненияКомпоновкиДанных.МеньшеИлиРавно, '00010101', , Истина)));
Настройка.Вставить("УзелРавно", Отбор.ПолучитьИдентификаторПоОбъекту(
ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "УзелИнформационнойБазы", ВидСравненияКомпоновкиДанных.Равно, Неопределено, , Ложь)));
Настройка.Вставить("Причина", Отбор.ПолучитьИдентификаторПоОбъекту(
ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "Причина", ВидСравненияКомпоновкиДанных.Содержит, Неопределено, , Ложь)));
Настройка.Вставить("УзелВСписке", Отбор.ПолучитьИдентификаторПоОбъекту(
ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "УзелИнформационнойБазы", ВидСравненияКомпоновкиДанных.ВСписке, Неопределено, , Ложь)));
Возврат Настройка;
КонецФункции
// Параметры:
// Отбор - ОтборКомпоновкиДанных - объект отбора.
// ОтборПоПричине - Булево - Истина, если в настройку необходимо включить отбор по причине проблемы.
//
// Возвращаемое значение:
// Структура - набор полей отбора:
// * АвторРавно - ИдентификаторКомпоновкиДанных, Неопределено - идентификатор элемента компоновки.
// * ДатаНачала - ИдентификаторКомпоновкиДанных, Неопределено - идентификатор элемента компоновки.
// * ДатаОкончания - ИдентификаторКомпоновкиДанных, Неопределено - идентификатор элемента компоновки.
// * ВерсияПроигнорирована - ИдентификаторКомпоновкиДанных, Неопределено - идентификатор элемента компоновки.
// * АвторВСписке - ИдентификаторКомпоновкиДанных, Неопределено - идентификатор элемента компоновки.
// * ПричинаЗапрета - ИдентификаторКомпоновкиДанных, Неопределено - (необязательное) идентификатор элемента компоновки.
//
&НаСервере
Функция НастройкаОтбораПоВерсиямОбъектов(Отбор, ОтборПоПричине = Ложь)
Настройка = Новый Структура;
Настройка.Вставить("АвторРавно", Отбор.ПолучитьИдентификаторПоОбъекту(
ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "АвторДругойВерсии", ВидСравненияКомпоновкиДанных.Равно, Неопределено, ,Ложь)));
Настройка.Вставить("ДатаНачала", Отбор.ПолучитьИдентификаторПоОбъекту(
ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "Дата", ВидСравненияКомпоновкиДанных.БольшеИлиРавно, '00010101', , Истина)));
Настройка.Вставить("ДатаОкончания", Отбор.ПолучитьИдентификаторПоОбъекту(
ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "Дата", ВидСравненияКомпоновкиДанных.МеньшеИлиРавно, '00010101', , Истина)));
Настройка.Вставить("ВерсияПроигнорирована", Отбор.ПолучитьИдентификаторПоОбъекту(
ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "ВерсияПроигнорирована", ВидСравненияКомпоновкиДанных.Равно, Ложь, , Истина)));
Настройка.Вставить("АвторВСписке", Отбор.ПолучитьИдентификаторПоОбъекту(
ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "АвторДругойВерсии", ВидСравненияКомпоновкиДанных.ВСписке, Неопределено, ,Ложь)));
Если ОтборПоПричине Тогда
Настройка.Вставить("ПричинаЗапрета", Отбор.ПолучитьИдентификаторПоОбъекту(
ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "ПричинаЗапрета", ВидСравненияКомпоновкиДанных.Равно, Неопределено, , Ложь)));
КонецЕсли;
Возврат Настройка;
КонецФункции
// Возвращаемое значение:
// Структура - набор настроек отборов:
// * НепроведенныеДокументы - см. НастройкаОтбораПоРезультатамОбменов
// * НезаполненныеРеквизиты - см. НастройкаОтбораПоРезультатамОбменов
// * ОшибкиОбъектаXDTO - см. НастройкаОтбораПоРезультатамОбменов
// * Коллизии - см. НастройкаОтбораПоВерсиямОбъектов
// * НепринятыеПоДате - см. НастройкаОтбораПоВерсиямОбъектов
//
&НаСервере
Функция НастройкиОтборовДинамическихСписков()
Результат = Новый Структура;
// Непроведенные документы
Отбор = НепроведенныеДокументы.КомпоновщикНастроек.Настройки.Отбор;
Результат.Вставить("НепроведенныеДокументы", Новый Структура);
Настройка = Результат.НепроведенныеДокументы;
Настройка.Вставить("Пропущена", Отбор.ПолучитьИдентификаторПоОбъекту(
ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "Пропущена", ВидСравненияКомпоновкиДанных.Равно, Ложь, ,Истина)));
Настройка.Вставить("ДатаНачала", Отбор.ПолучитьИдентификаторПоОбъекту(
ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "ДатаВозникновения", ВидСравненияКомпоновкиДанных.БольшеИлиРавно, '00010101', , Истина)));
Настройка.Вставить("ДатаОкончания", Отбор.ПолучитьИдентификаторПоОбъекту(
ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "ДатаВозникновения", ВидСравненияКомпоновкиДанных.МеньшеИлиРавно, '00010101', , Истина)));
Настройка.Вставить("УзелРавно", Отбор.ПолучитьИдентификаторПоОбъекту(
ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "УзелИнформационнойБазы", ВидСравненияКомпоновкиДанных.Равно, Неопределено, , Ложь)));
Настройка.Вставить("Причина", Отбор.ПолучитьИдентификаторПоОбъекту(
ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "Причина", ВидСравненияКомпоновкиДанных.Содержит, Неопределено, , Ложь)));
Настройка.Вставить("УзелВСписке", Отбор.ПолучитьИдентификаторПоОбъекту(
ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "УзелИнформационнойБазы", ВидСравненияКомпоновкиДанных.ВСписке, Неопределено, , Ложь)));
Результат.Вставить("НепроведенныеДокументы", НастройкаОтбораПоРезультатамОбменов(Отбор));
// Незаполненные реквизиты
Отбор = НезаполненныеРеквизиты.КомпоновщикНастроек.Настройки.Отбор;
Результат.Вставить("НезаполненныеРеквизиты", Новый Структура);
Настройка = Результат.НезаполненныеРеквизиты;
Настройка.Вставить("Пропущена", Отбор.ПолучитьИдентификаторПоОбъекту(
ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "Пропущена", ВидСравненияКомпоновкиДанных.Равно, Ложь, ,Истина)));
Настройка.Вставить("ДатаНачала", Отбор.ПолучитьИдентификаторПоОбъекту(
ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "ДатаВозникновения", ВидСравненияКомпоновкиДанных.БольшеИлиРавно, '00010101', , Истина)));
Настройка.Вставить("ДатаОкончания", Отбор.ПолучитьИдентификаторПоОбъекту(
ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "ДатаВозникновения", ВидСравненияКомпоновкиДанных.МеньшеИлиРавно, '00010101', , Истина)));
Настройка.Вставить("УзелРавно", Отбор.ПолучитьИдентификаторПоОбъекту(
ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "УзелИнформационнойБазы", ВидСравненияКомпоновкиДанных.Равно, Неопределено, , Ложь)));
Настройка.Вставить("Причина", Отбор.ПолучитьИдентификаторПоОбъекту(
ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "Причина", ВидСравненияКомпоновкиДанных.Содержит, Неопределено, , Ложь)));
Настройка.Вставить("УзелВСписке", Отбор.ПолучитьИдентификаторПоОбъекту(
ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "УзелИнформационнойБазы", ВидСравненияКомпоновкиДанных.ВСписке, Неопределено, , Ложь)));
Результат.Вставить("НезаполненныеРеквизиты", НастройкаОтбораПоРезультатамОбменов(Отбор));
// Ошибки XDTO
Отбор = ОшибкиОбъектаXDTO.КомпоновщикНастроек.Настройки.Отбор;
Результат.Вставить("ОшибкиОбъектаXDTO", Новый Структура);
Настройка = Результат.ОшибкиОбъектаXDTO;
Настройка.Вставить("Пропущена", Отбор.ПолучитьИдентификаторПоОбъекту(
ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "Пропущена", ВидСравненияКомпоновкиДанных.Равно, Ложь, ,Истина)));
Настройка.Вставить("ДатаНачала", Отбор.ПолучитьИдентификаторПоОбъекту(
ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "ДатаВозникновения", ВидСравненияКомпоновкиДанных.БольшеИлиРавно, '00010101', , Истина)));
Настройка.Вставить("ДатаОкончания", Отбор.ПолучитьИдентификаторПоОбъекту(
ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "ДатаВозникновения", ВидСравненияКомпоновкиДанных.МеньшеИлиРавно, '00010101', , Истина)));
Настройка.Вставить("УзелРавно", Отбор.ПолучитьИдентификаторПоОбъекту(
ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "УзелИнформационнойБазы", ВидСравненияКомпоновкиДанных.Равно, Неопределено, , Ложь)));
Настройка.Вставить("Причина", Отбор.ПолучитьИдентификаторПоОбъекту(
ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "Причина", ВидСравненияКомпоновкиДанных.Содержит, Неопределено, , Ложь)));
Настройка.Вставить("УзелВСписке", Отбор.ПолучитьИдентификаторПоОбъекту(
ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "УзелИнформационнойБазы", ВидСравненияКомпоновкиДанных.ВСписке, Неопределено, , Ложь)));
Результат.Вставить("ОшибкиОбъектаXDTO", НастройкаОтбораПоРезультатамОбменов(Отбор));
Если ИспользуетсяВерсионирование Тогда
// Конфликты
Отбор = Коллизии.КомпоновщикНастроек.Настройки.Отбор;
Результат.Вставить("Коллизии", Новый Структура);
Настройка = Результат.Коллизии;
Настройка.Вставить("АвторРавно", Отбор.ПолучитьИдентификаторПоОбъекту(
ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "АвторДругойВерсии", ВидСравненияКомпоновкиДанных.Равно, Неопределено, ,Ложь)));
Настройка.Вставить("ДатаНачала", Отбор.ПолучитьИдентификаторПоОбъекту(
ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "Дата", ВидСравненияКомпоновкиДанных.БольшеИлиРавно, '00010101', , Истина)));
Настройка.Вставить("ДатаОкончания", Отбор.ПолучитьИдентификаторПоОбъекту(
ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "Дата", ВидСравненияКомпоновкиДанных.МеньшеИлиРавно, '00010101', , Истина)));
Настройка.Вставить("ВерсияПроигнорирована", Отбор.ПолучитьИдентификаторПоОбъекту(
ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "ВерсияПроигнорирована", ВидСравненияКомпоновкиДанных.Равно, Ложь, , Истина)));
Настройка.Вставить("АвторВСписке", Отбор.ПолучитьИдентификаторПоОбъекту(
ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "АвторДругойВерсии", ВидСравненияКомпоновкиДанных.ВСписке, Неопределено, ,Ложь)));
Результат.Вставить("Коллизии", НастройкаОтбораПоВерсиямОбъектов(Отбор));
// Непринятые по дате запрета
Отбор = НепринятыеПоДате.КомпоновщикНастроек.Настройки.Отбор;
Результат.Вставить("НепринятыеПоДате", Новый Структура);
Настройка = Результат.НепринятыеПоДате;
Настройка.Вставить("АвторРавно", Отбор.ПолучитьИдентификаторПоОбъекту(
ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "АвторДругойВерсии", ВидСравненияКомпоновкиДанных.Равно, Неопределено, ,Ложь)));
Настройка.Вставить("ДатаНачала", Отбор.ПолучитьИдентификаторПоОбъекту(
ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "Дата", ВидСравненияКомпоновкиДанных.БольшеИлиРавно, '00010101', , Истина)));
Настройка.Вставить("ДатаОкончания", Отбор.ПолучитьИдентификаторПоОбъекту(
ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "Дата", ВидСравненияКомпоновкиДанных.МеньшеИлиРавно, '00010101', , Истина)));
Настройка.Вставить("ПричинаЗапрета", Отбор.ПолучитьИдентификаторПоОбъекту(
ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "ПричинаЗапрета", ВидСравненияКомпоновкиДанных.Равно, Неопределено, , Ложь)));
Настройка.Вставить("ВерсияПроигнорирована", Отбор.ПолучитьИдентификаторПоОбъекту(
ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "ВерсияПроигнорирована", ВидСравненияКомпоновкиДанных.Равно, Ложь, , Истина)));
Настройка.Вставить("АвторВСписке", Отбор.ПолучитьИдентификаторПоОбъекту(
ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "АвторДругойВерсии", ВидСравненияКомпоновкиДанных.ВСписке, Неопределено, ,Ложь)));
Результат.Вставить("НепринятыеПоДате", НастройкаОтбораПоВерсиямОбъектов(Отбор, Истина));
КонецЕсли;
КонецПроцедуры
Возврат Результат;
КонецФункции
&НаСервереБезКонтекста
Функция ЭлементОтбораДинамическогоСписка(Знач ДинамическийСписок, Знач Идентификатор)
@@ -1,23 +1,27 @@
<!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>Контекстный отчет, открывается из документов или списков документов по команде <b>Движения документа</b> стандартного подменю <b>Отчеты</b>. Команда предусмотрена для всех документов, поддерживающих операцию проведения. Следует иметь в виду, что если документ имеет движения, но не поддерживает операцию проведения, то он не будет учтен в отчете.</p>
<p>Контекстный отчет, открывается из документов или списков документов по команде меню <b>Еще -</b> <b>Отчеты - </b><b>Движения документа</b> стандартного подменю. Команда предусмотрена для всех документов, поддерживающих операцию проведения. Следует иметь в виду, что если документ имеет движения, но не поддерживает операцию проведения, то он не будет учтен в отчете.</p>
<h3>Работа со списком регистров</h3>
<p>При проведении документов сведения о его движениях записываются в различные регистры, например, регистры накопления или регистры бухгалтерии. По умолчанию в отчет выводятся сведения из всех регистров.</p>
<p></p>
<ul><li>Наименования регистров в отчете представляют собой гиперссылки. Нажав на гиперссылку, можно перейти в регистр и подробно посмотреть движения документа.
</li><li>С помощью поля <b>Выводить только</b> в шапке отчета можно ограничить список регистров документа. Нажмите кнопку <img src="StdPicture.InputFieldSelect"></img>. Выберите нужные регистры в открывшемся <a href="CommonForm.ВводЗначенийСпискомСФлажками/Help">списке</a> с помощью флажков, нажмите <b>ОК</b>. После выбора значений рядом с полем включается флажок.</li></ul><h3>Настройка отчета</h3>
</li>
<li>С помощью поля <b>Выводить только</b> в шапке отчета можно ограничить список регистров документа. Нажмите кнопку <img src="StdPicture.InputFieldSelect"></img>. Выберите нужные регистры в открывшемся <a href="CommonForm.ВводЗначенийСпискомСФлажками/Help">списке</a> с помощью флажков, нажмите <b>ОК</b>. После выбора значений рядом с полем включается флажок.</li></ul><h3>Настройка отчета</h3>
<div>Нажмите на кнопку <b>Настройки</b>. </div>
<div>С помощью флажков можно:</div>
<p></p>
<div>
<ul><li>настроить оформление отчета:
<ul><li>выделить отрицательное красным;
</li><li>выделить цветом виды движения накопления.</li></ul></li><li>изменить выбор регистров.</li></ul><div><a name="СтандартныеПодсистемы.Варианты отчетов">Можно перейти в расширенный режим с помощью тумблера в поле <b>Вид</b> и поменять остальные </a><a href="CommonForm.ФормаНастроекОтчета/Help">настройки отчета</a>. </div></div>
</li>
<li>выделить цветом виды движения накопления.</li></ul></li>
<li>изменить выбор регистров.</li></ul><div><a name="СтандартныеПодсистемы.Варианты отчетов">Можно перейти в расширенный режим с помощью тумблера в поле <b>Вид</b> и поменять остальные </a><a href="CommonForm.ФормаНастроекОтчета/Help">настройки отчета</a>. </div></div>
<div>
<h3 style="FONT-SIZE: 13px">Варианты отчета</h3></div>
<div>С помощью кнопки <img src="CommonPicture.ВыбратьВариантОтчета"></img> можно выбрать один из двух вариантов отчета:</div>
<div>
<ul><li><strong>Горизонтально</strong> - если колонок немного, то для просмотра движений удобен этот вариант. Все характеристики движений можно увидеть в одной строке.
</li><li><strong>Вертикально</strong> - предоставляет возможность расположить данные более компактно, что облегчает просмотр регистров с большим количеством колонок. Для наглядности строки пронумерованы, а в подсказке выводятся названия колонок в выбранной строке.</li></ul><div><b>Внимание!</b> Другие команды в данном случае отсутствуют, т.к. сохранение своих вариантов для контекстных отчетов не предусмотрено. Это следует иметь в виду при изменении настроек вариантов данного отчета. При закрытии отчета программа не предлагает сохранить новый вариант отчета.</div>
</li>
<li><strong>Вертикально</strong> - предоставляет возможность расположить данные более компактно, что облегчает просмотр регистров с большим количеством колонок. Для наглядности строки пронумерованы, а в подсказке выводятся названия колонок в выбранной строке.</li></ul><div><b>Внимание!</b> Другие команды в данном случае отсутствуют, т.к. сохранение своих вариантов для контекстных отчетов не предусмотрено. Это следует иметь в виду при изменении настроек вариантов данного отчета. При закрытии отчета программа не предлагает сохранить новый вариант отчета.</div>
<div><span style="FONT-SIZE: 13px; FONT-WEIGHT: bold">См. также:</span></div></div>
<ul><li><a name="СтандартныеПодсистемы.Варианты отчетов"></a><a href="CommonForm.ФормаОтчета/Help">Работа с отчетами</a>.</li></ul></body></html>
@@ -10,12 +10,11 @@
#Область ОписаниеПеременных
Перем КлючТекущегоВарианта; // Строка - хранит идентификатор настроек варианта отчета.
Перем КлючТекущегоВарианта; // Строка
// Хранит идентификатор настроек варианта отчета.
// Также см. Синтакс-помощник.
Перем СвойстваРегистров; // ТаблицаЗначений, каждая строка которой хранит сведения о регистре,
// регистратором которого является документ-владелец.
Перем Примечания; // ТаблицаЗначений, каждая строка которой хранит текст примечания,
// для нумерованных строк вертикального варианта отчета.
Перем СвойстваРегистров; // см. ПалитраСвойствРегистров
Перем Примечания; // см. ПалитраСвойствПримечаний
#КонецОбласти
@@ -595,7 +594,9 @@
КонецЕсли;
НаборыДанных = НаборыДанныхОтчета(ДокументВладелец);
ЭлементыНаборовДанных = СхемаКомпоновкиДанных.НаборыДанных["Main"].Элементы;
ОсновнойНаборДанных = СхемаКомпоновкиДанных.НаборыДанных["Main"]; // НаборДанныхОбъединениеСхемыКомпоновкиДанных
ЭлементыНаборовДанных = ОсновнойНаборДанных.Элементы;
ИндексНабора = 0;
Для Каждого НаборДанных Из НаборыДанных Цикл
@@ -784,7 +785,9 @@
КонецЕсли;
НаборыДанных = НаборыДанныхОтчета(ДокументВладелец, Истина);
ЭлементыНаборовДанных = СхемаКомпоновкиДанных.НаборыДанных["Main"].Элементы;
ОсновнойНаборДанных = СхемаКомпоновкиДанных.НаборыДанных["Main"]; // НаборДанныхОбъединениеСхемыКомпоновкиДанных
ЭлементыНаборовДанных = ОсновнойНаборДанных.Элементы;
ИндексНабора = 0;
Для Каждого НаборДанных Из НаборыДанных Цикл
@@ -1152,6 +1155,20 @@
КонецПроцедуры
// Добавляет поле набора данных.
//
// Параметры:
// НаборДанных - НаборДанныхОбъединениеСхемыКомпоновкиДанных,
// - НаборДанныхЗапросСхемыКомпоновкиДанных,
// - НаборДанныхОбъектСхемыКомпоновкиДанных,
// - Неопределено -
// Поле - Строка -
// Заголовок - Строка -
// ПутьКДанным - Неопределено, Строка -
//
// Возвращаемое значение:
// ПолеНабораДанныхСхемыКомпоновкиДанных, ПапкаПолейНабораДанныхСхемыКомпоновкиДанных - Описание
//
Функция ДобавитьПолеНабораДанных(НаборДанных, Поле, Заголовок, ПутьКДанным = Неопределено)
Если ПутьКДанным = Неопределено Тогда
@@ -1446,8 +1463,8 @@
Продолжить;
КонецЕсли;
НайденныеПримечания = Примечания.НайтиСтроки(
Новый Структура("ПолноеИмяРегистра, Этаж", ПолноеИмяРегистра, ОбластьНумератора.Текст));
Поиск = Новый Структура("ПолноеИмяРегистра, Этаж", ПолноеИмяРегистра, ОбластьНумератора.Текст);
НайденныеПримечания = Примечания.НайтиСтроки(Поиск); // Массив из СтрокаТаблицыЗначений
Если НайденныеПримечания.Количество() = 0 Тогда
Продолжить;
@@ -1575,7 +1592,7 @@
Для Каждого Движение Из ДвиженияДокумента Цикл
МетаданныеРегистра = Движение.Ключ;
МетаданныеРегистра = Движение.Ключ; // ОбъектМетаданныхРегистрСведений, ОбъектМетаданныхРегистрНакопления, ОбъектМетаданныхРегистрРасчета
СвойстваРегистра = СвойстваРегистров.Добавить();
СвойстваРегистра.ИмяПоляРегистратора = Движение.Значение;
@@ -1666,6 +1683,26 @@
КонецПроцедуры
// Конструктор коллекции движений документа, каждый элемент которой хранит сведения о регистре,
// регистратором которого является документ-владелец.
//
// Возвращаемое значение:
// ТаблицаЗначений - где:
// * Приоритет - Число -
// * ПолноеИмяРегистра - Строка -
// * ИмяГруппировки - Строка -
// * ИмяРегистра - Строка -
// * ПредставлениеРегистра - Строка -
// * ВидРегистра - Строка -
// * ВидРегистраНакопления - Строка -
// * ПредставлениеВидаРегистра - Строка -
// * ПериодичностьРегистраРасчета - Строка -
// * ПериодичностьРегистраСведений - Строка -
// * РежимЗаписиРегистраСведений - Строка -
// * ИмяПоляРегистратора - Строка -
// * КоличествоЗаписей - Число -
// * ЗаголовокТаблицы - Строка -
//
Функция ПалитраСвойствРегистров()
ПалитраСвойствРегистров = Новый ТаблицаЗначений;
@@ -1736,14 +1773,16 @@
Заголовок = НСтр("ru = 'Данные расчета'");
КонецЕсли;
Элементы = ВыбраннаяГруппа.Элементы;
Элементы = ВыбраннаяГруппа.Элементы; // КоллекцияВыбранныхПолейКомпоновкиДанных
Если Индекс <= Элементы.Количество() - 1 Тогда
ВыбранноеПоле = Элементы[Индекс];
ВыбранноеПоле = Элементы[Индекс]; // ВыбранноеПолеКомпоновкиДанных
ЗаголовокПоля = ВыбранноеПоле.Заголовок;
Если ВыбранноеПоле.Использование Тогда
ТекстПримечания = ТекстПримечания
+ ?(ЗначениеЗаполнено(ТекстПримечания), ", ", "")
+ Элементы[Индекс].Заголовок + " (" + Заголовок + ")";
+ ЗаголовокПоля + " (" + Заголовок + ")";
КонецЕсли;
КонецЕсли;
КонецЦикла;
@@ -1762,6 +1801,16 @@
КонецПроцедуры
// Конструктор коллекции примечаний, каждый элемент которой хранит текст примечания,
// для нумерованных строк вертикального варианта отчета.
//
// Возвращаемое значение:
// ТаблицаЗначений - где:
// * ПолноеИмяРегистра - Строка -
// * Примечание - Строка -
// * Этаж - Строка -
// * Этажность - Число -
//
Функция ПалитраСвойствПримечаний()
ПалитраСвойствПримечаний = Новый ТаблицаЗначений;
@@ -1802,6 +1851,17 @@
#Область Прочее
// Возвращает коллекцию регистров, на которые текущий пользователь имеет право.
//
// Параметры:
// Регистратор - ДокументСсылка -
// Движения - КоллекцияДвижений, Неопределено -
//
// Возвращаемое значение:
// Соответствие - где:
// * Ключ - ОбъектМетаданныхРегистрСведений, ОбъектМетаданныхРегистрНакопления, ОбъектМетаданныхРегистрРасчета -
// * Значение - Строка -
//
Функция РегистрыСДвижениямиДокумента(Регистратор, Движения = Неопределено)
Если Движения = Неопределено Тогда
@@ -2061,26 +2121,35 @@
КонецФункции
Процедура НайтиГруппировкуРекурсивно(КоллекцияЭлементов, МассивВыбранныхПолей, ЗначениеПоиска)
// Описание
//
// Параметры:
// КоллекцияЭлементов - КоллекцияЭлементовСтруктурыНастроекКомпоновкиДанных -
// - КоллекцияЭлементовСтруктурыТаблицыКомпоновкиДанных -
// - КоллекцияЭлементовСтруктурыДиаграммыКомпоновкиДанных -
// ВыбранныеПоляГруппировок - Массив из ВыбранноеПолеКомпоновкиДанных -
// ЗначениеПоиска - Строка -
//
Процедура НайтиГруппировкуРекурсивно(КоллекцияЭлементов, ВыбранныеПоляГруппировок, ЗначениеПоиска)
Для каждого Элемент Из КоллекцияЭлементов Цикл
Если ТипЗнч(Элемент) = Тип("ГруппировкаКомпоновкиДанных") Тогда
Если Элемент.Имя = ЗначениеПоиска Тогда
Если Элемент.Структура.Количество() > 0 Тогда
ДетальныеЗаписи = Элемент.Структура[0];
ДетальныеЗаписи = Элемент.Структура[0]; // ГруппировкаКомпоновкиДанных
ВыбранныеПоля = ДетальныеЗаписи.Выбор.Элементы;
Для Каждого ВыбранноеПоле Из ВыбранныеПоля Цикл
МассивВыбранныхПолей.Добавить(ВыбранноеПоле);
ВыбранныеПоляГруппировок.Добавить(ВыбранноеПоле);
КонецЦикла;
КонецЕсли;
КонецЕсли;
НайтиГруппировкуРекурсивно(Элемент.Структура, МассивВыбранныхПолей, ЗначениеПоиска);
НайтиГруппировкуРекурсивно(Элемент.Структура, ВыбранныеПоляГруппировок, ЗначениеПоиска);
ИначеЕсли ТипЗнч(Элемент) = Тип("ТаблицаКомпоновкиДанных") Тогда
НайтиГруппировкуРекурсивно(Элемент.Строки, МассивВыбранныхПолей, ЗначениеПоиска);
НайтиГруппировкуРекурсивно(Элемент.Колонки, МассивВыбранныхПолей, ЗначениеПоиска);
НайтиГруппировкуРекурсивно(Элемент.Строки, ВыбранныеПоляГруппировок, ЗначениеПоиска);
НайтиГруппировкуРекурсивно(Элемент.Колонки, ВыбранныеПоляГруппировок, ЗначениеПоиска);
ИначеЕсли ТипЗнч(Элемент) = Тип("ДиаграммаКомпоновкиДанных") Тогда
НайтиГруппировкуРекурсивно(Элемент.Серии, МассивВыбранныхПолей, ЗначениеПоиска);
НайтиГруппировкуРекурсивно(Элемент.Точки, МассивВыбранныхПолей, ЗначениеПоиска);
НайтиГруппировкуРекурсивно(Элемент.Серии, ВыбранныеПоляГруппировок, ЗначениеПоиска);
НайтиГруппировкуРекурсивно(Элемент.Точки, ВыбранныеПоляГруппировок, ЗначениеПоиска);
КонецЕсли;
КонецЦикла;
@@ -165,29 +165,6 @@
// Пользовательские настройки, которые будут загружены в компоновщик настроек после его инициализации.
// Неопределено когда пользовательские настройки не надо загружать (уже загружены ранее).
//
// Варианты вызова:
// Если КлючСхемы <> "1" Тогда
// КлючСхемы = "1";
// СхемаКД = ПолучитьОбщийМакет("МояОбщаяСхемаКомпоновки");
// ОтчетыСервер.ПодключитьСхему(ЭтотОбъект, Контекст, СхемаКД, КлючСхемы);
// КонецЕсли; - компоновщик отчета инициализируется на основании схемы из общих макетов.
// Если ТипЗнч(НовыеПользовательскиеНастройкиКД) = Тип("ПользовательскиеНастройкиКомпоновкиДанных") Тогда
// ПолноеИмяОбъектаМетаданных = "";
// Для Каждого ЭлементКД Из НовыеПользовательскиеНастройкиКД.Элементы Цикл
// Если ТипЗнч(ЭлементКД) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда
// ИмяПараметра = Строка(ЭлементКД.Параметр);
// Если ИмяПараметра = "ОбъектМетаданных" Тогда
// ПолноеИмяОбъектаМетаданных = ЭлементКД.Значение;
// КонецЕсли;
// КонецЕсли;
// КонецЦикла;
// Если КлючСхемы <> ПолноеИмяОбъектаМетаданных Тогда
// КлючСхемы = ПолноеИмяОбъектаМетаданных;
// СхемаКД = Новый СхемаКомпоновкиДанных;
// ОтчетыСервер.ПодключитьСхему(ЭтотОбъект, Контекст, СхемаКД, КлючСхемы);
// КонецЕсли;
// КонецЕсли; - схема зависит от значения параметра, выведенного в пользовательские настройки отчета.
//
Процедура ПередЗагрузкойНастроекВКомпоновщик(Контекст, КлючСхемы, КлючВарианта, НовыеНастройкиКД, НовыеПользовательскиеНастройкиКД) Экспорт
ПараметрВыводитьОтветственного = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ВыводитьОтветственного"));
@@ -246,7 +223,7 @@
УстановитьПараметрыДанных(НовыеНастройкиКД, Новый Структура("Контекст", Контекст));
КонецЕсли;
УстановитьЛокализованныеПараметры(НовыеНастройкиКД);
УстановитьЗначенияПараметров(НовыеНастройкиКД);
ДополнительныеСвойства = КомпоновщикНастроек.Настройки.ДополнительныеСвойства;
Если ДополнительныеСвойства.Свойство("СписокПроблем") Тогда
@@ -268,10 +245,10 @@
ПроверкиВеденияУчета = КонтрольВеденияУчетаСлужебныйПовтИсп.ПроверкиВеденияУчета();
КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("ИнформацияОПоследнейПроверке", ПодсказкаОПоследнейПроверке());
НастройкиКД = КомпоновщикНастроек.ПолучитьНастройки();
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиКД, ДанныеРасшифровки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
@@ -290,14 +267,28 @@
#Область СлужебныеПроцедурыИФункции
#Область ВыводСКД
Функция ПодсказкаОПоследнейПроверке()
ИнформацияОПоследнейПроверке = КонтрольВеденияУчетаСлужебный.ИнформацияОПоследнейПроверкеВеденияУчета();
Если ЗначениеЗаполнено(ИнформацияОПоследнейПроверке.ДатаПоследнейПроверки) Тогда
Подсказка = НСтр("ru = 'выполнялась %1.'");
Подсказка = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Подсказка,
Формат(ИнформацияОПоследнейПроверке.ДатаПоследнейПроверки, "ДЛФ=Д"));
Иначе
Подсказка = НСтр("ru = 'еще ни разу не выполнялась.'");
КонецЕсли;
Если ИнформацияОПоследнейПроверке.ПредупреждатьОНеобходимостиПовторнойПроверки Тогда
Подсказка = " " + НСтр("ru = 'Рекомендуется выполнить проверку, чтобы просмотреть актуальные результаты.'");
КонецЕсли;
Возврат Подсказка;
КонецФункции
Процедура ДоопределитьГотовыйМакет(ДокументРезультат, СтруктураОтчетаНеИзменена)
ДоопределитьШапку(ДокументРезультат, СтруктураОтчетаНеИзменена);
ДоопределитьВыводИтогов(ДокументРезультат, СтруктураОтчетаНеИзменена);
ПроставитьГиперссылкиРешений(ДокументРезультат);
КонецПроцедуры
@@ -540,10 +531,6 @@
КонецФункции
#КонецОбласти
#Область ПрограммныеНастройкиСКД
Процедура УстановитьПараметрыДанных(НастройкиКД, СтруктураПараметров)
ПараметрыДанных = НастройкиКД.ПараметрыДанных.Элементы;
@@ -571,7 +558,7 @@
КонецПроцедуры
Процедура УстановитьЛокализованныеПараметры(НастройкиКД)
Процедура УстановитьЗначенияПараметров(НастройкиКД)
ПараметрыДанных = НастройкиКД.ПараметрыДанных.Элементы;
@@ -586,17 +573,13 @@
ТекущийПараметрКД = ПараметрыДанных.Найти(Новый ПараметрКомпоновкиДанных(ЭлементСтруктуры.Ключ));
Если ТекущийПараметрКД <> Неопределено Тогда
ТекущийПараметрКД.Использование = Истина;
ТекущийПараметрКД.Значение = ЭлементСтруктуры.Значение;
Иначе
ПараметрДанных = НастройкиКД.ПараметрыДанных.Элементы.Добавить();
ПараметрДанных.Использование = Истина;
ПараметрДанных.Значение = ЭлементСтруктуры.Значение;
ПараметрДанных.Параметр = Новый ПараметрКомпоновкиДанных(ЭлементСтруктуры.Ключ);
КонецЕсли;
КонецЦикла;
@@ -688,9 +671,8 @@
Если Элемент.Структура.Количество() = 0 Тогда
Продолжить;
Иначе
Группировка = НайтиГруппировку(Элемент.Структура, ИмяПоля);
КонецЕсли;
Группировка = НайтиГруппировку(Элемент.Структура, ИмяПоля);
КонецЦикла;
@@ -720,8 +702,6 @@
КонецФункции
#КонецОбласти
Функция СтруктураОтчетаНеИзменена(ИсходнаяСтруктура = Неопределено, КонечнаяСтруктура = Неопределено)
ИсходнаяСтруктура = СтруктураОтчетаДеревом(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
@@ -526,6 +526,24 @@
<useRestriction>true</useRestriction>
<expression>&amp;Период.ДатаОкончания</expression>
</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:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</valueType>
<value xsi:type="xs:string"/>
<useRestriction>false</useRestriction>
</parameter>
<template>
<name>Макет1</name>
<template xmlns:dcsat="http://v8.1c.ru/8.1/data-composition-system/area-template" xsi:type="dcsat:AreaTemplate">
@@ -620,6 +638,22 @@
<dcscor:parameter>МаксимальнаяШирина</dcscor:parameter>
<dcscor:value xsi:type="xs:decimal">2.75</dcscor:value>
</dcscor:item>
<dcscor:item>
<dcscor:parameter>РежимИзмененияРазмераКолонки</dcscor:parameter>
<dcscor:value xsi:type="v8ui:SizeChangeMode">QuickChange</dcscor:value>
</dcscor:item>
<dcscor:item>
<dcscor:parameter>Картинка</dcscor:parameter>
<dcscor:value xsi:type="v8ui:Picture" ref="v8ui:Информация"/>
</dcscor:item>
<dcscor:item>
<dcscor:parameter>РазмерКартинки</dcscor:parameter>
<dcscor:value xmlns:mxl="http://v8.1c.ru/8.2/data/spreadsheet" xsi:type="mxl:PictureSize">RealSize</dcscor:value>
</dcscor:item>
<dcscor:item>
<dcscor:parameter>ВертикальноеПоложениеКартинки</dcscor:parameter>
<dcscor:value xsi:type="v8ui:VerticalAlign">Top</dcscor:value>
</dcscor:item>
</dcsat:appearance>
</dcsat:tableCell>
<dcsat:tableCell>
@@ -1072,6 +1106,27 @@
<dcscor:value xsi:type="dcsset:DataCompositionTextOutputType">DontOutput</dcscor:value>
</dcscor:item>
</dcsset:outputParameters>
<dcsset:item xsi:type="dcsset:StructureItemGroup">
<dcsset:name>ИнформацияОПоследнейПроверке</dcsset:name>
<dcsset:order>
<dcsset:item xsi:type="dcsset:OrderItemAuto"/>
</dcsset:order>
<dcsset:selection>
<dcsset:item xsi:type="dcsset:SelectedItemField">
<dcsset:field>ПараметрыДанных.ИнформацияОПоследнейПроверке</dcsset:field>
</dcsset:item>
</dcsset:selection>
<dcsset:outputParameters>
<dcscor:item xsi:type="dcsset:SettingsParameterValue">
<dcscor:parameter>МакетОформления</dcscor:parameter>
<dcscor:value xsi:type="xs:string">БезОформления</dcscor:value>
</dcscor:item>
<dcscor:item xsi:type="dcsset:SettingsParameterValue">
<dcscor:parameter>ТипЗаголовкаПолей</dcscor:parameter>
<dcscor:value xsi:type="dcscor:DataCompositionFieldsTitleType">Short</dcscor:value>
</dcscor:item>
</dcsset:outputParameters>
</dcsset:item>
<dcsset:item xsi:type="dcsset:StructureItemGroup">
<dcsset:name>Примечание</dcsset:name>
<dcsset:order>
@@ -516,93 +516,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>Administration</name>
<value>true</value>
</right>
<right>
<name>DataAdministration</name>
<value>true</value>
</right>
<right>
<name>UpdateDataBaseConfiguration</name>
<value>true</value>
</right>
<right>
<name>ExclusiveMode</name>
<value>true</value>
</right>
<right>
<name>ActiveUsers</name>
<value>true</value>
</right>
<right>
<name>EventLog</name>
<value>true</value>
</right>
<right>
<name>ThinClient</name>
<value>true</value>
</right>
<right>
<name>WebClient</name>
<value>true</value>
</right>
<right>
<name>ThickClient</name>
<value>true</value>
</right>
<right>
<name>ExternalConnection</name>
<value>true</value>
</right>
<right>
<name>Automation</name>
<value>true</value>
</right>
<right>
<name>TechnicalSpecialistMode</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
<right>
<name>SaveUserData</name>
<value>true</value>
</right>
<right>
<name>ConfigurationExtensionsAdministration</name>
<value>true</value>
</right>
<right>
<name>Output</name>
<value>true</value>
</right>
</object>
<object>
<name>Constant.НастройкаПроксиСервера</name>
<right>
@@ -4209,6 +4122,93 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>Administration</name>
<value>true</value>
</right>
<right>
<name>DataAdministration</name>
<value>true</value>
</right>
<right>
<name>UpdateDataBaseConfiguration</name>
<value>true</value>
</right>
<right>
<name>ExclusiveMode</name>
<value>true</value>
</right>
<right>
<name>ActiveUsers</name>
<value>true</value>
</right>
<right>
<name>EventLog</name>
<value>true</value>
</right>
<right>
<name>ThinClient</name>
<value>true</value>
</right>
<right>
<name>WebClient</name>
<value>true</value>
</right>
<right>
<name>ThickClient</name>
<value>true</value>
</right>
<right>
<name>ExternalConnection</name>
<value>true</value>
</right>
<right>
<name>Automation</name>
<value>true</value>
</right>
<right>
<name>TechnicalSpecialistMode</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
<right>
<name>SaveUserData</name>
<value>true</value>
</right>
<right>
<name>ConfigurationExtensionsAdministration</name>
<value>true</value>
</right>
<right>
<name>Output</name>
<value>true</value>
</right>
</object>
<object>
<name>InformationRegister.ЗемельныеУчастки</name>
<right>
@@ -14,37 +14,6 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
<right>
<name>Output</name>
<value>true</value>
</right>
</object>
<object>
<name>Catalog.РассылкиОтчетов.Command.СобытияРассылки</name>
<right>
@@ -107,6 +76,37 @@
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>MainWindowModeNormal</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeEmbeddedWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeFullscreenWorkplace</name>
<value>true</value>
</right>
<right>
<name>MainWindowModeKiosk</name>
<value>true</value>
</right>
<right>
<name>AnalyticsSystemClient</name>
<value>true</value>
</right>
<right>
<name>Output</name>
<value>true</value>
</right>
</object>
<restrictionTemplate>
<name>ДляОбъекта(ПолеОбъекта)</name>
<condition>// ДляОбъекта(ПолеОбъекта = "")
@@ -752,45 +752,6 @@
<value>false</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>Administration</name>
<value>false</value>
</right>
<right>
<name>UpdateDataBaseConfiguration</name>
<value>false</value>
</right>
<right>
<name>ThickClient</name>
<value>false</value>
</right>
<right>
<name>ExternalConnection</name>
<value>false</value>
</right>
<right>
<name>Automation</name>
<value>false</value>
</right>
<right>
<name>TechnicalSpecialistMode</name>
<value>false</value>
</right>
<right>
<name>ConfigurationExtensionsAdministration</name>
<value>false</value>
</right>
<right>
<name>InteractiveOpenExtDataProcessors</name>
<value>false</value>
</right>
<right>
<name>InteractiveOpenExtReports</name>
<value>false</value>
</right>
</object>
<object>
<name>Constant.НастройкаПроксиСервера</name>
<right>
@@ -5681,6 +5642,45 @@
<value>false</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
<name>Administration</name>
<value>false</value>
</right>
<right>
<name>UpdateDataBaseConfiguration</name>
<value>false</value>
</right>
<right>
<name>ThickClient</name>
<value>false</value>
</right>
<right>
<name>ExternalConnection</name>
<value>false</value>
</right>
<right>
<name>Automation</name>
<value>false</value>
</right>
<right>
<name>TechnicalSpecialistMode</name>
<value>false</value>
</right>
<right>
<name>ConfigurationExtensionsAdministration</name>
<value>false</value>
</right>
<right>
<name>InteractiveOpenExtDataProcessors</name>
<value>false</value>
</right>
<right>
<name>InteractiveOpenExtReports</name>
<value>false</value>
</right>
</object>
<object>
<name>InformationRegister.ЗемельныеУчастки</name>
<right>
@@ -3,6 +3,13 @@
<setForNewObjects>false</setForNewObjects>
<setForAttributesByDefault>true</setForAttributesByDefault>
<independentRightsOfChildObjects>false</independentRightsOfChildObjects>
<object>
<name>DataProcessor.ЖурналРегистрации.Command.ЖурналРегистрации</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
<right>
@@ -34,13 +41,6 @@
<value>true</value>
</right>
</object>
<object>
<name>DataProcessor.ЖурналРегистрации.Command.ЖурналРегистрации</name>
<right>
<name>View</name>
<value>true</value>
</right>
</object>
<object>
<name>DataProcessor.ЖурналРегистрации</name>
<right>
@@ -103,4 +103,5 @@
<content>CommonForm.УстановленныеИсправления</content>
<content>DataProcessor.НастройкаСтандартногоИнтерфейсаOData</content>
<content>Catalog.ВнешниеКомпоненты</content>
<content>Catalog.ШаблоныСообщений</content>
</mdclass:Subsystem>