2_3_2_195

This commit is contained in:
Компания 1С committed 2017-04-13 02:25:00 +03:00
1 parent 3d1db4a506
commit a3cf6e8089
1637 files changed
+190310 -54633

No files matched your search

@@ -798,6 +798,7 @@
<extInfo xsi:type="form:PageGroupExtInfo">
<group>Vertical</group>
<showTitle>auto</showTitle>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
@@ -875,6 +876,7 @@
<extInfo xsi:type="form:PageGroupExtInfo">
<group>Vertical</group>
<showTitle>auto</showTitle>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<visible>true</visible>
@@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16421"></meta></head><body>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 11.00.9600.18427"></meta></head><body>
<p>Предназначена для выполнения бизнес-процесса <a href="BusinessProcess.Задание.Form.ФормаБизнесПроцесса/Help">Задание</a>.</p>
<p>Открывается из списков <a href="Task.ЗадачаИсполнителя/Help">задач</a>, например, <a href="Task.ЗадачаИсполнителя.Form.МоиЗадачиДляРабочегоСтола/Help">Мои задачи на рабочем столе</a> или <a href="Task.ЗадачаИсполнителя.Form.ФормаСписка/Help">Все задачи</a>.</p>
<h3>Главное</h3>
@@ -800,6 +800,7 @@
<extInfo xsi:type="form:PageGroupExtInfo">
<group>Vertical</group>
<showTitle>auto</showTitle>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
@@ -877,6 +878,7 @@
<extInfo xsi:type="form:PageGroupExtInfo">
<group>Vertical</group>
<showTitle>auto</showTitle>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<visible>true</visible>
@@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16421"></meta></head><body>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 11.00.9600.18427"></meta></head><body>
<p>Предназначена для проверки выполнения <a href="v8help://1cv8/EnterprWorkingWithBusinessProcesses_StandardInterface">бизнес-процесса</a> <a href="BusinessProcess.Задание.Form.ФормаБизнесПроцесса/Help">Задание</a>.</p>
<p>Открывается из списков <a href="Task.ЗадачаИсполнителя/Help">задач</a>, например, <a href="Task.ЗадачаИсполнителя.Form.МоиЗадачиДляРабочегоСтола/Help">Мои задачи на рабочем столе</a> или <a href="Task.ЗадачаИсполнителя.Form.ФормаСписка/Help">Все задачи</a>.</p>
<h3>Главное</h3>
@@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16421"></meta></head><body>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 11.00.9600.18427"></meta></head><body>
<p>Предназначено для постановки и проверки выполнения произвольных <a href="Task.ЗадачаИсполнителя/Help">задач</a>.</p>
<p>Можно запустить из документа программы по команде <strong>Создать на основании</strong> (из бизнес-процесса также, при соответствующих настройках - такое задание станет подчиненным бизнес-процессом). Также можно начать новый <a href="v8help://1cv8/EnterprWorkingWithBusinessProcesses_StandardInterface">бизнес-процесс</a> <strong>Задание</strong> по команде <strong>Создать</strong> в списке <a href="BusinessProcess.Задание/Help">Задания</a>.</p>
<h3>Сведения о задании</h3>
@@ -1,3 +1,5 @@
#Область ОписаниеПеременных
&НаКлиенте
Перем ОткрытаФормаВыбораИсполнителя; // Признак того, что исполнитель выбирается из формы, а не быстрым вводом.
&НаКлиенте
@@ -5,6 +7,8 @@
&НаКлиенте
Перем КонтекстВыбора;
#КонецОбласти
#Область ОбработчикиСобытийФормы
&НаСервере
@@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16421"></meta></head><body>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 11.00.9600.18427"></meta></head><body>
<p>Предназначен для управления бизнес-процессами <strong>Задание</strong>.</p>
<p>Этот <a href="v8help://1cv8/EnterprWorkingWithBusinessProcesses_StandardInterface">бизнес-процесс</a> состоит из двух шагов - исполнение и проверка, при этом проверяющий может вернуть задачу на доработку.</p>
<p>Формируемые программой по бизнес-процессу <strong>Задание</strong> <a href="Task.ЗадачаИсполнителя/Help">задачи</a> на исполнение и на проверку адресуются исполнителю не только явно, с использованием персональной адресации, но и с помощью <a href="Catalog.РолиИсполнителей/Help">ролевой адресации</a>.</p>
@@ -73,9 +73,11 @@
////////////////////////////////////////////////////////////////////////////////
// Групповое изменение объектов.
// Возвращает список реквизитов, которые не нужно редактировать
// с помощью обработки группового изменения объектов.
// Возвращает реквизиты объекта, которые разрешается редактировать
// с помощью обработки группового изменения реквизитов.
//
// Возвращаемое значение:
// Массив - список имен реквизитов объекта.
Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт
Результат = Новый Массив;
@@ -9,7 +9,7 @@
// Логика ограничения для
// - чтения: Автор ИЛИ Исполнитель (с учетом адресации) ИЛИ Проверяющий (с учетом адресации) ИЛИ Предмет
// - изменения: Автор
// - изменения: Автор.
// Если предмет не задан (т.е. бизнес-процесс без основания),
// тогда предмет не участвует в логике ограничения.
@@ -171,8 +171,12 @@
НаПроверке = Истина;
Проверяющий = Пользователи.АвторизованныйПользователь();
Состояние = Перечисления.СостоянияБизнесПроцессов.Активен;
// Для возможности автоподбора в незаполненном поле Исполнитель.
Исполнитель = Справочники.Пользователи.ПустаяСсылка();
Если ТипЗнч(ДанныеЗаполнения) = Тип("СправочникСсылка.Пользователи") Тогда
Исполнитель = ДанныеЗаполнения;
Иначе
// Для возможности автоподбора в незаполненном поле Исполнитель.
Исполнитель = Справочники.Пользователи.ПустаяСсылка();
КонецЕсли;
КонецЕсли;
Если ДанныеЗаполнения <> Неопределено И ТипЗнч(ДанныеЗаполнения) <> Тип("Структура")
@@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16421"></meta></head><body>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 11.00.9600.18427"></meta></head><body>
<p>Содержит общую информацию о <a href="Catalog.Валюты/Help">валютах</a> и предназначен для добавления новых валют (рекомендуется для корректного заполнения данных о <a href="Catalog.Валюты.Form.ФормаЭлемента/Help">валюте</a>).</p>
<p>В Общероссийском классификаторе валют выводится:</p>
<ul><li>
@@ -671,7 +671,7 @@
ВЫБОР
КОГДА КурсыВалют.Кратность = 1
ТОГДА &quot; &quot;
ИНАЧЕ &quot;руб. за&quot;
ИНАЧЕ ВЫРАЗИТЬ(&amp;ПояснениеКратности КАК СТРОКА(50))
КОНЕЦ КАК РубЗа,
ВЫБОР
КОГДА КурсыВалют.Кратность = 1
@@ -9,7 +9,8 @@
КонецЕсли;
ДатаКурса = НачалоДня(ТекущаяДатаСеанса());
Список.Параметры.УстановитьЗначениеПараметра ("КонецПериода", ДатаКурса);
Список.Параметры.УстановитьЗначениеПараметра("КонецПериода", ДатаКурса);
Список.Параметры.УстановитьЗначениеПараметра("ПояснениеКратности", НСтр("ru = 'руб. за'"));
Элементы.Валюты.РежимВыбора = Параметры.РежимВыбора;
@@ -704,6 +704,7 @@
<extInfo xsi:type="form:PageGroupExtInfo">
<group>Vertical</group>
<showTitle>auto</showTitle>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
@@ -1596,6 +1597,7 @@
<extInfo xsi:type="form:PageGroupExtInfo">
<group>Vertical</group>
<showTitle>auto</showTitle>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<visible>true</visible>
@@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16421"></meta></head><body>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 11.00.9600.18427"></meta></head><body>
<p>Описание свойств используемой валюты.</p>
<p>Валюта широко используется в деятельности любого предприятия: во всех документах, которые имеют дело с денежными суммами (счета, платежные поручения, договоры, накладные) присутствует поле <strong>Валюта</strong>, явно или по умолчанию. Значение поля <strong>Валюта</strong> заполняется в зависимости от направления деятельности предприятия: рубль, иностранная валюта или у.е.</p>
<h3>Основные сведения о валюте</h3>
+1 -1
View File
@@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16421"></meta></head><body>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 11.00.9600.18427"></meta></head><body>
<p>Список предназначен для ведения валют, используемых в программе. Необходимые для работы валюты можно подобрать из <a href="Catalog.Валюты.Form.ПодборВалютИзКлассификатора/Help">Общероссийского классификатора валют</a> - ОКВ (рекомендуется) или добавить вручную.</p>
<p>Открыть список валют можно из раздела <strong>Справочники</strong>.</p>
<p>В списке выводится:</p>
@@ -5,9 +5,11 @@
////////////////////////////////////////////////////////////////////////////////
// Групповое изменение объектов.
// Возвращает список реквизитов, которые не нужно редактировать
// с помощью обработки группового изменения объектов.
// Возвращает реквизиты объекта, которые разрешается редактировать
// с помощью обработки группового изменения реквизитов.
//
// Возвращаемое значение:
// Массив - список имен реквизитов объекта.
Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт
Результат = Новый Массив;
@@ -31,4 +33,33 @@
#КонецОбласти
#Область СлужебныйПрограммныйИнтерфейс
// Отключает у валюты 643 загрузку из интернета.
Процедура ОтключитьЗагрузкуКурсаВалюты643ИзИнтернета(Параметры) Экспорт
ТекстЗапроса =
"ВЫБРАТЬ
| Валюты.Ссылка
|ИЗ
| Справочник.Валюты КАК Валюты
|ГДЕ
| Валюты.Код = ""643""
| И Валюты.СпособУстановкиКурса = ЗНАЧЕНИЕ(Перечисление.СпособыУстановкиКурсаВалюты.ЗагрузкаИзИнтернета)";
Запрос = Новый Запрос(ТекстЗапроса);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Валюта = Выборка.Ссылка.ПолучитьОбъект();
Валюта.СпособУстановкиКурса = Перечисления.СпособыУстановкиКурсаВалюты.РучнойВвод;
ОбновлениеИнформационнойБазы.ЗаписатьДанные(Валюта);
КонецЦикла;
Параметры.ОбработкаЗавершена = Истина;
КонецПроцедуры
#КонецОбласти
#КонецЕсли
+34 -89
View File
@@ -11,8 +11,16 @@
|ИЗ
| Справочник.Валюты КАК Валюты
|ГДЕ
| (Валюты.СпособУстановкиКурса = ЗНАЧЕНИЕ(Перечисление.СпособыУстановкиКурсаВалюты.НаценкаНаКурсДругойВалюты)
| ИЛИ Валюты.СпособУстановкиКурса = ЗНАЧЕНИЕ(Перечисление.СпособыУстановкиКурсаВалюты.РасчетПоФормуле))";
| Валюты.СпособУстановкиКурса = ЗНАЧЕНИЕ(Перечисление.СпособыУстановкиКурсаВалюты.НаценкаНаКурсДругойВалюты)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| Валюты.Наименование
|ИЗ
| Справочник.Валюты КАК Валюты
|ГДЕ
| Валюты.СпособУстановкиКурса = ЗНАЧЕНИЕ(Перечисление.СпособыУстановкиКурсаВалюты.РасчетПоФормуле)";
Запрос = Новый Запрос(ТекстЗапроса);
ЗависимыеВалюты = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("СимвольныйКод");
@@ -65,10 +73,32 @@
РаботаСКурсамиВалют.ПроверитьКорректностьКурсаНа01_01_1980(Ссылка);
Если ДополнительныеСвойства.Свойство("ОбновитьКурсы") Тогда
ПараметрыВалюты = Новый Структура;
ПараметрыВалюты.Вставить("ОсновнаяВалюта");
ПараметрыВалюты.Вставить("Ссылка");
ПараметрыВалюты.Вставить("Наценка");
ПараметрыВалюты.Вставить("ДополнительныеСвойства");
ПараметрыВалюты.Вставить("ФормулаРасчетаКурса");
ЗаполнитьЗначенияСвойств(ПараметрыВалюты, ЭтотОбъект);
ПараметрыЗадания = Новый Структура;
ПараметрыЗадания.Вставить("ПодчиненнаяВалюта", ПараметрыВалюты);
ПараметрыЗадания.Вставить("СпособУстановкиКурса", СпособУстановкиКурса);
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(Новый УникальныйИдентификатор());
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("Справочник.Валюты");
ЭлементБлокировки.УстановитьЗначение("Ссылка", Ссылка);
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
Блокировка.Заблокировать();
Результат = ДлительныеОперации.ВыполнитьВФоне("РаботаСКурсамиВалют.ОбновитьКурсВалюты", ПараметрыЗадания, ПараметрыВыполнения);
Если Результат.Статус = "Ошибка" Тогда
ВызватьИсключение Результат.КраткоеПредставлениеОшибки;
КонецЕсли;
Если ОбщегоНазначенияПовтИсп.РазделениеВключено() Тогда
РаботаСКурсамиВалют.ПриОбновленииКурсовВалютВМоделиСервиса(ЭтотОбъект);
Иначе
ОбновитьКурсВалюты(ЭтотОбъект);
КонецЕсли;
КонецЕсли;
@@ -109,89 +139,4 @@
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Процедура ОбновитьКурсВалюты(ПодчиненнаяВалюта)
Если СпособУстановкиКурса = Перечисления.СпособыУстановкиКурсаВалюты.НаценкаНаКурсДругойВалюты Тогда
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| КурсыВалют.Период,
| КурсыВалют.Валюта,
| КурсыВалют.Курс,
| КурсыВалют.Кратность
|ИЗ
| РегистрСведений.КурсыВалют КАК КурсыВалют
|ГДЕ
| КурсыВалют.Валюта = &ВалютаИсточник";
Запрос.УстановитьПараметр("ВалютаИсточник", ПодчиненнаяВалюта.ОсновнаяВалюта);
Выборка = Запрос.Выполнить().Выбрать();
НаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Валюта.Установить(ПодчиненнаяВалюта.Ссылка);
Наценка = ПодчиненнаяВалюта.Наценка;
Пока Выборка.Следующий() Цикл
НоваяЗаписьНабораКурсов = НаборЗаписей.Добавить();
НоваяЗаписьНабораКурсов.Валюта = ПодчиненнаяВалюта.Ссылка;
НоваяЗаписьНабораКурсов.Кратность = Выборка.Кратность;
НоваяЗаписьНабораКурсов.Курс = Выборка.Курс + Выборка.Курс * Наценка / 100;
НоваяЗаписьНабораКурсов.Период = Выборка.Период;
КонецЦикла;
НаборЗаписей.ДополнительныеСвойства.Вставить("ОтключитьКонтрольПодчиненныхВалют");
Если ПодчиненнаяВалюта.ДополнительныеСвойства.Свойство("ЭтоНовый") Тогда
НаборЗаписей.ДополнительныеСвойства.Вставить("ПропуститьПроверкуЗапретаИзменения");
КонецЕсли;
НаборЗаписей.Записать();
ИначеЕсли СпособУстановкиКурса = Перечисления.СпособыУстановкиКурсаВалюты.РасчетПоФормуле Тогда
// Получить основные валюты для ПодчиненнаяВалюта.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Валюты.Ссылка КАК Ссылка
|ИЗ
| Справочник.Валюты КАК Валюты
|ГДЕ
| &ФормулаРасчетаКурса ПОДОБНО ""%"" + Валюты.Наименование + ""%""";
Запрос.УстановитьПараметр("ФормулаРасчетаКурса", ПодчиненнаяВалюта.ФормулаРасчетаКурса);
ОсновныеВалюты = Запрос.Выполнить().Выгрузить();
Если ОсновныеВалюты.Количество() = 0 Тогда
ТекстОшибки = НСтр("ru = 'В формуле должна быть использована хотя бы одна основная валюта.'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, , "Объект.ФормулаРасчетаКурса");
ВызватьИсключение ТекстОшибки;
КонецЕсли;
ОбновленныеПериоды = Новый Соответствие; // Кэш для однократного пересчета курса за один и тот же период.
// Перезаписать курсы основных валют для обновления курса валюты ПодчиненнаяВалюта.
Для каждого ЗаписьОсновнойВалюты Из ОсновныеВалюты Цикл
НаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Валюта.Установить(ЗаписьОсновнойВалюты.Ссылка);
НаборЗаписей.Прочитать();
НаборЗаписей.ДополнительныеСвойства.Вставить("ОбновитьКурсЗависимойВалюты", ПодчиненнаяВалюта.Ссылка);
НаборЗаписей.ДополнительныеСвойства.Вставить("ОбновленныеПериоды", ОбновленныеПериоды);
Если ПодчиненнаяВалюта.ДополнительныеСвойства.Свойство("ЭтоНовый") Тогда
НаборЗаписей.ДополнительныеСвойства.Вставить("ПропуститьПроверкуЗапретаИзменения");
КонецЕсли;
НаборЗаписей.Записать();
КонецЦикла
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#КонецЕсли
@@ -128,6 +128,7 @@
<Item Code="901" CodeSymbol="TWD" Name="Новый тайваньский доллар" Description="Тайвань (Китай)" RBCLoading="ложь"/>
<Item Code="931" CodeSymbol="CUC" Name="Конвертируемое песо" Description="Куба" RBCLoading="ложь"/>
<Item Code="932" CodeSymbol="ZWL" Name="Доллар Зимбабве" Description="Зимбабве" RBCLoading="ложь"/>
<Item Code="933" CodeSymbol="BYN" Name="Белорусский рубль" Description="Беларусь" RBCLoading="истина"/>
<Item Code="934" CodeSymbol="TMT" Name="Новый туркменский манат" Description="Туркмения" RBCLoading="истина"/>
<Item Code="936" CodeSymbol="GHS" Name="Ганский седи" Description="Гана" RBCLoading="ложь"/>
<Item Code="937" CodeSymbol="VEF" Name="Боливар" Description="Венесуэла" RBCLoading="ложь"/>
@@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16421"></meta></head><body>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 11.00.9600.18427"></meta></head><body>
<p>Ведение списка вариантов ответов на <a href="ChartOfCharacteristicTypes.ВопросыДляАнкетирования/Help">вопросы</a> типов <strong>Выбор одного</strong> или <strong>нескольких вариантов ответа из предложенных.</strong></p>
<p>Существуют вопросы <a href="Document.Анкета.Form.ФормаСписка/Help">анкеты</a> типа <strong>Выбор одного варианта ответа из предложенных</strong> или <strong>Выбор нескольких вариантов ответа из предложенных</strong>. В этих случаях ответ респондента сводится к выбору одного или нескольких вариантов ответа из списка с помощью переключателей.</p>
<p>Задайте возможные варианты ответов на <a href="ChartOfCharacteristicTypes.ВопросыДляАнкетирования.Form.ФормаЭлемента/Help">вопрос</a>.</p>
@@ -5,9 +5,11 @@
////////////////////////////////////////////////////////////////////////////////
// Групповое изменение объектов.
// Возвращает список реквизитов, которые разрешается редактировать
// с помощью обработки группового изменения объектов.
// Возвращает реквизиты объекта, которые разрешается редактировать
// с помощью обработки группового изменения реквизитов.
//
// Возвращаемое значение:
// Массив - список имен реквизитов объекта.
Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт
Результат = Новый Массив;
@@ -548,6 +548,7 @@
</title>
<id>9</id>
<valueType>
<types>CatalogRef.ВнешниеПользователи</types>
<types>CatalogRef.Пользователи</types>
</valueType>
<view>
@@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16421"></meta></head><body>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 11.00.9600.18427"></meta></head><body>
<p>Позволяет настраивать размещение одного или нескольких <a href="Catalog.ВариантыОтчетов/Help">вариантов отчетов</a> в разделах программы.</p>
<p>Открывается по команде <strong>Разместить в разделах</strong> из списка <strong>Отчеты</strong>.</p>
<ul><li>В поле <strong>Варианты отчетов</strong> перечисляются выбранные для размещения варианты.
@@ -122,7 +122,7 @@
Процедура ПоказатьРезультатВыполнения()
ОчиститьСообщения();
Если РезультатВыполнения <> Неопределено Тогда
СтандартныеПодсистемыКлиент.ПоказатьРезультатВыполнения(ЭтотОбъект, РезультатВыполнения);
СтандартныеПодсистемыКлиент.ВывестиПредупреждение(ЭтотОбъект, РезультатВыполнения);
РезультатВыполнения = Неопределено;
КонецЕсли;
КонецПроцедуры
@@ -138,18 +138,14 @@
Найденные = ДеревоПриемник.Строки.НайтиСтроки(Новый Структура("Использование", 1), Истина);
Для Каждого СтрокаДерева Из Найденные Цикл
СтрокаДерева.Использование = 0;
Если СтрокаДерева.Использование <> СтрокаДерева.ИспользованиеПоУмолчанию Тогда
СтрокаДерева.ИзмененПользователем = Истина;
КонецЕсли;
КонецЦикла;
СтрокаДерева.Модифицированность = Истина;
КонецЦикла;
Найденные = ДеревоПриемник.Строки.НайтиСтроки(Новый Структура("Использование", 2), Истина);
Для Каждого СтрокаДерева Из Найденные Цикл
СтрокаДерева.Использование = 0;
Если СтрокаДерева.Использование <> СтрокаДерева.ИспользованиеПоУмолчанию Тогда
СтрокаДерева.ИзмененПользователем = Истина;
КонецЕсли;
КонецЦикла;
СтрокаДерева.Модифицированность = Истина;
КонецЦикла;
ЗначениеВРеквизитФормы(ДеревоПриемник, "ДеревоПодсистем");
Возврат;
@@ -157,11 +153,8 @@
КоличествоВариантов = ИзменяемыеВарианты.Количество();
Если КоличествоВариантов = 0 Тогда
РезультатВыполнения = Новый Структура;
ТекстСообщения = НСтр("ru = 'Необходимо выбрать варианты отчетов'");
СтандартныеПодсистемыКлиентСервер.ВывестиСообщение(РезультатВыполнения, ТекстСообщения);
РезультатВыполнения = Новый ФиксированнаяСтруктура(РезультатВыполнения);
Элементы.ДеревоПодсистем.Доступность = Ложь;
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения, , "ИзменяемыеВарианты");
Возврат;
КонецЕсли;
@@ -275,7 +268,7 @@
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ПолныеПраваНаВарианты", ВариантыОтчетов.ПолныеПраваНаВарианты());
Запрос.УстановитьПараметр("ТекущийПользователь", Пользователи.ТекущийПользователь());
Запрос.УстановитьПараметр("ТекущийПользователь", Пользователи.АвторизованныйПользователь());
Запрос.УстановитьПараметр("МассивВариантов", ИзменяемыеВарианты.ВыгрузитьЗначения());
Запрос.УстановитьПараметр("ОтчетыПользователя", ВариантыОтчетов.ОтчетыТекущегоПользователя());
Запрос.УстановитьПараметр("ОтключенныеВариантыПрограммы", ВариантыОтчетовПовтИсп.ОтключенныеВариантыПрограммы());
@@ -289,42 +282,42 @@
КоличествоОшибок = ОтфильтрованныеВарианты.Количество();
Если КоличествоОшибок > 0 Тогда
РезультатВыполнения = Новый Структура;
РезультатВыполнения = Новый Структура("Текст, Подробно");
ТекущаяПричина = 0;
ПрефиксЗаписи = Символы.ПС + " ";
ТекстОшибок = "";
РезультатВыполнения.Подробно = "";
Для Каждого СтрокаТаблицы Из ОтфильтрованныеВарианты Цикл
Если ТекущаяПричина <> СтрокаТаблицы.Причина Тогда
ТекущаяПричина = СтрокаТаблицы.Причина;
ТекстОшибок = ?(ТекстОшибок = "", "", ТекстОшибок + Символы.ПС + Символы.ПС);
РезультатВыполнения.Подробно = РезультатВыполнения.Подробно + Символы.ПС + Символы.ПС;
Если ТекущаяПричина = 1 Тогда
ТекстОшибок = ТекстОшибок + НСтр("ru = 'Помеченные на удаление:'");
РезультатВыполнения.Подробно = РезультатВыполнения.Подробно + НСтр("ru = 'Помеченные на удаление:'");
ИначеЕсли ТекущаяПричина = 2 Тогда
ТекстОшибок = ТекстОшибок + НСтр("ru = 'Недостаточно прав для изменения:'");
РезультатВыполнения.Подробно = РезультатВыполнения.Подробно + НСтр("ru = 'Недостаточно прав для изменения:'");
ИначеЕсли ТекущаяПричина = 3 Тогда
ТекстОшибок = ТекстОшибок + НСтр("ru = 'Отчет отключен или недоступен по правам:'");
РезультатВыполнения.Подробно = РезультатВыполнения.Подробно + НСтр("ru = 'Отчет отключен или недоступен по правам:'");
ИначеЕсли ТекущаяПричина = 4 Тогда
ТекстОшибок = ТекстОшибок + НСтр("ru = 'Вариант отчета отключен по функциональной опции:'");
РезультатВыполнения.Подробно = РезультатВыполнения.Подробно + НСтр("ru = 'Вариант отчета отключен по функциональной опции:'");
КонецЕсли;
КонецЕсли;
ТекстОшибок = ТекстОшибок + Символы.ПС + " - " + Строка(СтрокаТаблицы.Ссылка);
РезультатВыполнения.Подробно = СокрЛ(РезультатВыполнения.Подробно) + Символы.ПС + " - " + Строка(СтрокаТаблицы.Ссылка);
ИзменяемыеВарианты.Удалить(ИзменяемыеВарианты.НайтиПоЗначению(СтрокаТаблицы.Ссылка));
КонецЦикла;
КоличествоВариантов = ИзменяемыеВарианты.Количество();
Если КоличествоВариантов = 0 Тогда
ТекстСообщения = НСтр("ru = 'Недостаточно прав для размещения в разделах выбранных вариантов отчетов.'");
РезультатВыполнения.Текст = НСтр("ru = 'Недостаточно прав для размещения в разделах выбранных вариантов отчетов.'");
Элементы.ДеревоПодсистем.Доступность = Ложь;
РезультатВыполнения.Вставить("Отказ", Истина);
Иначе
ТекстСообщения = НСтр("ru = 'Недостаточно прав для размещения в разделах некоторых вариантов отчетов (%1).'");
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстСообщения, Формат(КоличествоОшибок, "ЧГ="));
РезультатВыполнения.Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Недостаточно прав для размещения в разделах некоторых вариантов отчетов (%1).'"),
Формат(КоличествоОшибок, "ЧГ="));
Элементы.ДеревоПодсистем.Доступность = Истина;
КонецЕсли;
СтандартныеПодсистемыКлиентСервер.ВывестиПредупреждение(РезультатВыполнения, ТекстСообщения, ТекстОшибок);
РезультатВыполнения = Новый ФиксированнаяСтруктура(РезультатВыполнения);
Иначе
Элементы.ДеревоПодсистем.Доступность = Истина;
@@ -347,12 +340,17 @@
Кэш = Новый Структура;
НачатьТранзакцию();
Для Каждого ЭлементСписка Из ИзменяемыеВарианты Цикл
ВариантОбъект = ЭлементСписка.Значение.ПолучитьОбъект();
ВариантыОтчетов.ДеревоПодсистемЗаписать(ЭтотОбъект, ВариантОбъект, Кэш);
ВариантОбъект.Записать();
КонецЦикла;
ЗафиксироватьТранзакцию();
Попытка
Для Каждого ЭлементСписка Из ИзменяемыеВарианты Цикл
ВариантОбъект = ЭлементСписка.Значение.ПолучитьОбъект();
ВариантыОтчетов.ДеревоПодсистемЗаписать(ЭтотОбъект, ВариантОбъект, Кэш);
ВариантОбъект.Записать();
КонецЦикла;
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
КонецПроцедуры
@@ -199,10 +199,6 @@
<value>Сбросить настройки размещения</value>
</title>
<id>1</id>
<toolTip>
<key>ru</key>
<value> </value>
</toolTip>
<use>
<common>true</common>
</use>
@@ -64,14 +64,19 @@
Функция СброситьНастройкиРазмещенияСервер(Знач ИзменяемыеВарианты)
КоличествоВариантов = 0;
НачатьТранзакцию();
Для Каждого ЭлементСписка Из ИзменяемыеВарианты Цикл
ВариантОбъект = ЭлементСписка.Значение.ПолучитьОбъект();
Если ВариантыОтчетов.СброситьНастройкиВариантаОтчета(ВариантОбъект) Тогда
ВариантОбъект.Записать();
КоличествоВариантов = КоличествоВариантов + 1;
КонецЕсли;
КонецЦикла;
ЗафиксироватьТранзакцию();
Попытка
Для Каждого ЭлементСписка Из ИзменяемыеВарианты Цикл
ВариантОбъект = ЭлементСписка.Значение.ПолучитьОбъект();
Если ВариантыОтчетов.СброситьНастройкиВариантаОтчета(ВариантОбъект) Тогда
ВариантОбъект.Записать();
КоличествоВариантов = КоличествоВариантов + 1;
КонецЕсли;
КонецЦикла;
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
Возврат КоличествоВариантов;
КонецФункции
@@ -95,8 +100,7 @@
|ГДЕ
| ВариантыОтчетовРазмещение.Ссылка В(&МассивВариантов)
| И ВариантыОтчетовРазмещение.Пользовательский = ЛОЖЬ
| И (ВариантыОтчетовРазмещение.ТипОтчета = &ТипВнутренний
| ИЛИ ВариантыОтчетовРазмещение.ТипОтчета = &ТипРасширение)
| И ВариантыОтчетовРазмещение.ТипОтчета В (&ТипВнутренний, &ТипРасширение)
| И ВариантыОтчетовРазмещение.ПометкаУдаления = ЛОЖЬ";
МассивВариантов = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
@@ -67,8 +67,13 @@
&НаСервереБезКонтекста
Функция СброситьНастройкиПользователейСервер(Знач ИзменяемыеВарианты)
НачатьТранзакцию();
РегистрыСведений.НастройкиВариантовОтчетов.СброситьНастройки(ИзменяемыеВарианты.ВыгрузитьЗначения());
ЗафиксироватьТранзакцию();
Попытка
РегистрыСведений.НастройкиВариантовОтчетов.СброситьНастройки(ИзменяемыеВарианты.ВыгрузитьЗначения());
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
КонецФункции
////////////////////////////////////////////////////////////////////////////////
@@ -929,12 +929,9 @@
<excludedCommands>Change</excludedCommands>
<excludedCommands>Copy</excludedCommands>
<excludedCommands>Create</excludedCommands>
<excludedCommands>HierarchicalList</excludedCommands>
<excludedCommands>LevelDown</excludedCommands>
<excludedCommands>LevelUp</excludedCommands>
<excludedCommands>List</excludedCommands>
<excludedCommands>MoveItem</excludedCommands>
<excludedCommands>Tree</excludedCommands>
<items xsi:type="form:FormGroup">
<name>Строки</name>
<id>137</id>
@@ -1104,10 +1101,6 @@
<key>ru</key>
<value>Колонки первой строки</value>
</title>
<toolTip>
<key>ru</key>
<value> </value>
</toolTip>
<extendedTooltip>
<name>КолонкиПервойСтрокиРасширеннаяПодсказка</name>
<id>140</id>
@@ -1173,10 +1166,6 @@
<key>ru</key>
<value>Колонки второй строки</value>
</title>
<toolTip>
<key>ru</key>
<value> </value>
</toolTip>
<extendedTooltip>
<name>КолонкиВторойСтрокиРасширеннаяПодсказка</name>
<id>142</id>
@@ -1473,10 +1462,6 @@
<key>ru</key>
<value>Техническая информация</value>
</title>
<toolTip>
<key>ru</key>
<value> </value>
</toolTip>
<extendedTooltip>
<name>ТехническаяИнформацияРасширеннаяПодсказка</name>
<id>149</id>
@@ -1505,6 +1490,10 @@
<event>Selection</event>
<name>СписокВыбор</name>
</handlers>
<handlers>
<event>BeforeRowChange</event>
<name>СписокПередНачаломИзменения</name>
</handlers>
<searchStringAddition>
<name>СписокСтрокаПоиска</name>
<id>179</id>
@@ -139,7 +139,8 @@
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = ВариантыОтчетовКлиентСервер.ИмяСобытияИзменениеВарианта() Тогда
Если ИмяСобытия = ВариантыОтчетовКлиентСервер.ИмяСобытияИзменениеВарианта()
Или ИмяСобытия = "Запись_НаборКонстант" Тогда
ДеревоПодсистемТекущаяСтрока = -1;
ПодключитьОбработчикОжидания("ДеревоПодсистемОбработчикАктивизацииСтроки", 0.1, Истина);
КонецЕсли;
@@ -282,6 +283,12 @@
#Область ОбработчикиСобытийЭлементовТаблицыФормыСписок
&НаКлиенте
Процедура СписокПередНачаломИзменения(Элемент, Отказ)
Отказ = Истина;
ВариантыОтчетовКлиент.ПоказатьНастройкиОтчета(Элементы.Список.ТекущаяСтрока);
КонецПроцедуры
&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
Если РежимРаботыФормы = "ВсеОтчетыРаздела" Тогда
@@ -466,74 +473,79 @@
НачатьТранзакцию();
УжеРазмещены = "";
НеМогутРазмещаться = "";
Для Каждого ВариантСсылка Из ПараметрыРазмещения.Варианты.Массив Цикл
Если ВариантСсылка.ТипОтчета = Перечисления.ТипыОтчетов.Внешний Тогда
НеМогутРазмещаться = ?(НеМогутРазмещаться = "", "", НеМогутРазмещаться + Символы.ПС)
+ " "
+ Строка(ВариантСсылка)
+ " ("
+ НСтр("ru = 'внешний'")
+ ")";
Продолжить;
ИначеЕсли ВариантСсылка.ПометкаУдаления Тогда
НеМогутРазмещаться = ?(НеМогутРазмещаться = "", "", НеМогутРазмещаться + Символы.ПС)
+ " "
+ Строка(ВариантСсылка)
+ " ("
+ НСтр("ru = 'помечен на удаление'")
+ ")";
Продолжить;
КонецЕсли;
ЕстьИзменения = Ложь;
ВариантОбъект = ВариантСсылка.ПолучитьОбъект();
СтрокаПриемник = ВариантОбъект.Размещение.Найти(ПараметрыРазмещения.Приемник.Ссылка, "Подсистема");
Если СтрокаПриемник = Неопределено Тогда
СтрокаПриемник = ВариантОбъект.Размещение.Добавить();
СтрокаПриемник.Подсистема = ПараметрыРазмещения.Приемник.Ссылка;
КонецЕсли;
// Удаление строки из исходной подсистемы.
// Важно помнить что исключение предопределенного варианта из подсистемы выполняется путем выключения флажка
// подсистемы.
Если ПараметрыРазмещения.Действие = "Перемещение" Тогда
Для Каждого ИсключаемаяПодсистема Из ИсключаемыеПодсистемы Цикл
СтрокаИсточник = ВариантОбъект.Размещение.Найти(ИсключаемаяПодсистема, "Подсистема");
Если СтрокаИсточник <> Неопределено Тогда
Если СтрокаИсточник.Использование Тогда
СтрокаИсточник.Использование = Ложь;
Если Не ЕстьИзменения Тогда
ЗаполнитьЗначенияСвойств(СтрокаПриемник, СтрокаИсточник, "Важный, СмТакже");
ЕстьИзменения = Истина;
Попытка
Для Каждого ВариантСсылка Из ПараметрыРазмещения.Варианты.Массив Цикл
Если ВариантСсылка.ТипОтчета = Перечисления.ТипыОтчетов.Внешний Тогда
НеМогутРазмещаться = ?(НеМогутРазмещаться = "", "", НеМогутРазмещаться + Символы.ПС)
+ " "
+ Строка(ВариантСсылка)
+ " ("
+ НСтр("ru = 'внешний'")
+ ")";
Продолжить;
ИначеЕсли ВариантСсылка.ПометкаУдаления Тогда
НеМогутРазмещаться = ?(НеМогутРазмещаться = "", "", НеМогутРазмещаться + Символы.ПС)
+ " "
+ Строка(ВариантСсылка)
+ " ("
+ НСтр("ru = 'помечен на удаление'")
+ ")";
Продолжить;
КонецЕсли;
ЕстьИзменения = Ложь;
ВариантОбъект = ВариантСсылка.ПолучитьОбъект();
СтрокаПриемник = ВариантОбъект.Размещение.Найти(ПараметрыРазмещения.Приемник.Ссылка, "Подсистема");
Если СтрокаПриемник = Неопределено Тогда
СтрокаПриемник = ВариантОбъект.Размещение.Добавить();
СтрокаПриемник.Подсистема = ПараметрыРазмещения.Приемник.Ссылка;
КонецЕсли;
// Удаление строки из исходной подсистемы.
// Важно помнить что исключение предопределенного варианта из подсистемы выполняется путем выключения флажка
// подсистемы.
Если ПараметрыРазмещения.Действие = "Перемещение" Тогда
Для Каждого ИсключаемаяПодсистема Из ИсключаемыеПодсистемы Цикл
СтрокаИсточник = ВариантОбъект.Размещение.Найти(ИсключаемаяПодсистема, "Подсистема");
Если СтрокаИсточник <> Неопределено Тогда
Если СтрокаИсточник.Использование Тогда
СтрокаИсточник.Использование = Ложь;
Если Не ЕстьИзменения Тогда
ЗаполнитьЗначенияСвойств(СтрокаПриемник, СтрокаИсточник, "Важный, СмТакже");
ЕстьИзменения = Истина;
КонецЕсли;
КонецЕсли;
СтрокаИсточник.Важный = Ложь;
СтрокаИсточник.СмТакже = Ложь;
ИначеЕсли Не ВариантОбъект.Пользовательский Тогда
СтрокаИсточник = ВариантОбъект.Размещение.Добавить();
СтрокаИсточник.Подсистема = ИсключаемаяПодсистема;
ЕстьИзменения = Истина;
КонецЕсли;
СтрокаИсточник.Важный = Ложь;
СтрокаИсточник.СмТакже = Ложь;
ИначеЕсли Не ВариантОбъект.Пользовательский Тогда
СтрокаИсточник = ВариантОбъект.Размещение.Добавить();
СтрокаИсточник.Подсистема = ИсключаемаяПодсистема;
ЕстьИзменения = Истина;
КонецЕсли;
КонецЦикла;
КонецЕсли;
// Регистрация строки в подсистеме-приемнике.
Если Не СтрокаПриемник.Использование Тогда
ЕстьИзменения = Истина;
СтрокаПриемник.Использование = Истина;
КонецЕсли;
Если ЕстьИзменения Тогда
Размещено = Размещено + 1;
ВариантОбъект.Записать();
Иначе
УжеРазмещены = ?(УжеРазмещены = "", "", УжеРазмещены + Символы.ПС)
+ " "
+ Строка(ВариантСсылка);
КонецЕсли;
КонецЦикла;
ЗафиксироватьТранзакцию();
КонецЦикла;
КонецЕсли;
// Регистрация строки в подсистеме-приемнике.
Если Не СтрокаПриемник.Использование Тогда
ЕстьИзменения = Истина;
СтрокаПриемник.Использование = Истина;
КонецЕсли;
Если ЕстьИзменения Тогда
Размещено = Размещено + 1;
ВариантОбъект.Записать();
Иначе
УжеРазмещены = ?(УжеРазмещены = "", "", УжеРазмещены + Символы.ПС)
+ " "
+ Строка(ВариантСсылка);
КонецЕсли;
КонецЦикла;
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
РезультатВыполнения = Новый Структура;
Если ПараметрыРазмещения.Варианты.Всего = Размещено Тогда
@@ -1832,15 +1832,13 @@
<edit/>
</attributes>
<attributes>
<name>ОткрытьФормуДополнительногоОтчетаПриОткрытии</name>
<name>ПараметрыОткрытияФормыОтчета</name>
<title>
<key>ru</key>
<value>Открыть форму дополнительного отчета при открытии</value>
<value>Параметры открытия формы отчета</value>
</title>
<id>9</id>
<valueType>
<types>Boolean</types>
</valueType>
<id>11</id>
<valueType/>
<view>
<common>true</common>
</view>
@@ -1861,10 +1859,6 @@
<event>AfterWriteAtServer</event>
<name>ПослеЗаписиНаСервере</name>
</handlers>
<handlers>
<event>OnReadAtServer</event>
<name>ПриЧтенииНаСервере</name>
</handlers>
<handlers>
<event>BeforeWriteAtServer</event>
<name>ПередЗаписьюНаСервере</name>
@@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16421"></meta></head><body>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 11.00.9600.18427"></meta></head><body>
<p>Предназначен для хранения <a href="Catalog.ВариантыОтчетов/Help">вариантов отчетов</a> и настройки их размещения в командном интерфейсе.</p>
<h3><a name="Реквизиты">Сведения</a> о варианте отчета</h3>
<ul><li>Заполните <strong>Наименование</strong> варианта отчета, которое выводится в списках программы и в панели отчетов.
@@ -9,8 +9,7 @@
ОшибкаОткрытия = НСтр("ru = 'Новый вариант отчета можно создать только из формы отчета'");
Возврат;
КонецЕсли;
Параметры.Свойство("ОткрытьФормуДополнительногоОтчетаПриОткрытии", ОткрытьФормуДополнительногоОтчетаПриОткрытии);
Если ОткрытьФормуДополнительногоОтчетаПриОткрытии Тогда
Если Параметры.Свойство("ПараметрыОткрытияФормыОтчета", ПараметрыОткрытияФормыОтчета) Тогда
Возврат;
КонецЕсли;
@@ -21,7 +20,7 @@
ПрочитатьСвойстваПредопределенного(Истина);
ПолныеПраваНаВарианты = ВариантыОтчетов.ПолныеПраваНаВарианты();
ПравоНаЭтотВариант = ПолныеПраваНаВарианты Или Объект.Автор = Пользователи.ТекущийПользователь();
ПравоНаЭтотВариант = ПолныеПраваНаВарианты Или Объект.Автор = Пользователи.АвторизованныйПользователь();
Если Не ПравоНаЭтотВариант Тогда
ТолькоПросмотр = Истина;
Элементы.ДеревоПодсистем.ТолькоПросмотр = Истина;
@@ -62,19 +61,6 @@
ВариантыОтчетов.ДеревоПодсистемДобавитьУсловноеОформление(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект) // Перезаполнение реквизитов, автоматически очищаемых после записи объекта.
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
Если ОткрытьФормуДополнительногоОтчетаПриОткрытии Тогда
Возврат;
КонецЕсли;
ПрочитатьСвойстваПредопределенного(Ложь);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Если Не ПустаяСтрока(ОшибкаОткрытия) Тогда
@@ -84,15 +70,17 @@
ТолькоПросмотр = Истина;
КонецЕсли;
ПоказатьПредупреждение(, ОшибкаОткрытия);
ИначеЕсли ОткрытьФормуДополнительногоОтчетаПриОткрытии Тогда
ИначеЕсли ПараметрыОткрытияФормыОтчета <> Неопределено Тогда
Отказ = Истина;
ВариантыОтчетовКлиент.ОткрытьФормуОтчета(ЭтотОбъект, Объект);
ВариантыОтчетовКлиент.ОткрытьФормуОтчета(Неопределено, ПараметрыОткрытияФормыОтчета);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если Источник <> ЭтотОбъект И ИмяСобытия = ВариантыОтчетовКлиентСервер.ИмяСобытияИзменениеВарианта() Тогда
Если Источник <> ЭтотОбъект
И (ИмяСобытия = ВариантыОтчетовКлиентСервер.ИмяСобытияИзменениеВарианта()
Или ИмяСобытия = "Запись_НаборКонстант") Тогда
ПерезаполнитьДерево(Истина);
Элементы.ДеревоПодсистем.Развернуть(ДеревоПодсистем.ПолучитьЭлементы()[0].ПолучитьИдентификатор(), Истина);
КонецЕсли;
@@ -117,15 +105,19 @@
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
ПерезаполнитьДерево(Ложь);
СтандартныеПодсистемыКлиентСервер.РазвернутьУзлыДерева(ПараметрыЗаписи, "ДеревоПодсистем", "*", Истина);
ПрочитатьСвойстваПредопределенного(Ложь);
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
ПараметрОповещения = Новый Структура("Ссылка, Наименование, Автор, Описание");//, ВидимостьПоУмолчанию");
ПараметрОповещения = Новый Структура("Ссылка, Наименование, Автор, Описание");
ЗаполнитьЗначенияСвойств(ПараметрОповещения, Объект);
Оповестить(ВариантыОтчетовКлиентСервер.ИмяСобытияИзменениеВарианта(), ПараметрОповещения, ЭтотОбъект);
СтандартныеПодсистемыКлиент.ПоказатьРезультатВыполнения(ЭтотОбъект, ПараметрыЗаписи);
РазворачиваемыйУзел = Новый Структура("ИмяТаблицы, Идентификатор, СПодчиненными");
РазворачиваемыйУзел.ИмяТаблицы = "ДеревоПодсистем";
РазворачиваемыйУзел.Идентификатор = "*";
РазворачиваемыйУзел.СПодчиненными = Истина;
СтандартныеПодсистемыКлиент.РазвернутьУзлыДерева(ЭтотОбъект, РазворачиваемыйУзел);
КонецПроцедуры
#КонецОбласти
@@ -163,11 +155,13 @@
&НаСервере
Функция ПерезаполнитьДерево(Прочитать)
ВыделенныеСтроки = ОтчетыСервер.ЗапомнитьВыделенныеСтроки(ЭтотОбъект, "ДеревоПодсистем", "Ссылка");
Если Прочитать Тогда
ЭтотОбъект.Прочитать();
КонецЕсли;
ДеревоПриемник = ВариантыОтчетов.ДеревоПодсистемСформировать(ЭтотОбъект, Объект);
ЗначениеВРеквизитФормы(ДеревоПриемник, "ДеревоПодсистем");
ОтчетыСервер.ВосстановитьВыделенныеСтроки(ЭтотОбъект, "ДеревоПодсистем", ВыделенныеСтроки);
Возврат Истина;
КонецФункции
@@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16421"></meta></head><body>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 11.00.9600.18427"></meta></head><body>
<p>Предназначен для управления вариантами отчетов, для настройки размещения в панелях отчетов разделов программы.</p>
<p>Программа позволяет сохранять и использовать несколько вариантов одного и того же отчета. Предусмотрены предопределенные варианты отчетов. Также можно создавать свои собственные варианты отчетов, изменяя настройки существующих: <a href="v8help://mngui/reportFormMain">настройки</a> формирования и внешнего вида (состав полей, сортировки, группировки, условное оформление).</p>
<p>В программе предусмотрена возможность создавать общие варианты отчетов. Общие варианты отчетов доступны всем пользователям этого отчета.</p>
@@ -2,7 +2,11 @@
#Область ПрограммныйИнтерфейс
// Реквизиты, которые разрешается изменять сразу для нескольких объектов.
// Возвращает реквизиты объекта, которые разрешается редактировать
// с помощью обработки группового изменения реквизитов.
//
// Возвращаемое значение:
// Массив - список имен реквизитов объекта.
Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт
Результат = Новый Массив;
@@ -17,3 +21,58 @@
#КонецОбласти
#КонецЕсли
#Область ОбработчикиСобытий
Процедура ОбработкаПолученияФормы(ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка)
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
// Переопределение для целей избранного - вместо карточки с настройками размещения отчета будет открываться его основная форма.
Если ВидФормы = "ФормаОбъекта" Тогда
ПоказатьКарточку = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Параметры, "ПоказатьКарточку");
Если ПоказатьКарточку = Истина Тогда
Возврат;
КонецЕсли;
ПараметрыОткрытия = ВариантыОтчетов.ПараметрыОткрытия(Параметры.Ключ);
ВариантыОтчетовКлиентСервер.ДополнитьСтруктуруКлючом(ПараметрыОткрытия, "ВыполнятьЗамеры", Ложь);
Если ПараметрыОткрытия.ТипОтчета = "Внутренний" Или ПараметрыОткрытия.ТипОтчета = "Расширение" Тогда
Вид = "Отчет";
ИначеЕсли ПараметрыОткрытия.ТипОтчета = "Дополнительный" Тогда
Вид = "ВнешнийОтчет";
Если Не ПараметрыОткрытия.Свойство("Подключен") Тогда
ВариантыОтчетов.ПриПодключенииОтчета(ПараметрыОткрытия);
КонецЕсли;
Если Не ПараметрыОткрытия.Подключен Тогда
ВызватьИсключение НСтр("ru = 'Вариант внешнего отчета можно открыть только из формы отчета.'");
КонецЕсли;
Иначе
ВызватьИсключение НСтр("ru = 'Вариант внешнего отчета можно открыть только из формы отчета.'");
КонецЕсли;
ПолноеИмяОтчета = Вид + "." + ПараметрыОткрытия.ИмяОтчета;
Уникальность = ПолноеИмяОтчета;
Если ЗначениеЗаполнено(ПараметрыОткрытия.КлючВарианта) Тогда
Уникальность = Уникальность + "/КлючВарианта." + ПараметрыОткрытия.КлючВарианта;
КонецЕсли;
ПараметрыОткрытия.Вставить("КлючПараметровПечати", Уникальность);
ПараметрыОткрытия.Вставить("КлючСохраненияПоложенияОкна", Уникальность);
СтандартнаяОбработка = Ложь;
Если ПараметрыОткрытия.ТипОтчета = "Дополнительный" Тогда // Для платформы.
ВыбраннаяФорма = "Справочник.ВариантыОтчетов.Форма.ФормаЭлемента";
Параметры.Вставить("ПараметрыОткрытияФормыОтчета", ПараметрыОткрытия);
Возврат;
КонецЕсли;
ВыбраннаяФорма = ПолноеИмяОтчета + ".Форма";
ОбщегоНазначенияКлиентСервер.ДополнитьСтруктуру(Параметры, ПараметрыОткрытия);
КонецЕсли;
#КонецЕсли
КонецПроцедуры
#КонецОбласти
@@ -84,25 +84,26 @@
#Область СлужебныеПроцедурыИФункции
Процедура ПроиндексироватьНастройки()
Если Пользовательский Или ТипОтчета = Перечисления.ТипыОтчетов.Дополнительный Тогда
Попытка
ВариантыОтчетов.ПроиндексироватьСодержимоеСхемы(ЭтотОбъект);
Исключение
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось проиндексировать схему варианта ""%1"" отчета ""%2"":'"),
КлючВарианта,
Строка(Отчет));
ВариантыОтчетов.ОшибкаПоВарианту(Ссылка, ТекстОшибки + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;
Иначе
Дополнительный = (ТипОтчета = Перечисления.ТипыОтчетов.Дополнительный);
Если Не Пользовательский И Не Дополнительный Тогда
// Для предопределенных вариантов отчетов данные хранятся в неразделенном справочнике.
Если НаименованияПолей <> "" Тогда
НаименованияПолей = "";
КонецЕсли;
Если НаименованияПараметровИОтборов <> "" Тогда
НаименованияПараметровИОтборов = "";
КонецЕсли;
НаименованияПолей = "";
НаименованияПараметровИОтборов = "";
Возврат;
КонецЕсли;
Если Дополнительный И БезопасныйРежим() = Ложь Тогда
Возврат; // Оставить текущие настройки.
КонецЕсли;
Попытка
ВариантыОтчетов.ПроиндексироватьСодержимоеСхемы(ЭтотОбъект);
Исключение
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось проиндексировать схему варианта ""%1"" отчета ""%2"":'"),
КлючВарианта,
Строка(Отчет));
ТекстОшибки = ТекстОшибки + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
ВариантыОтчетов.ОшибкаПоВарианту(Ссылка, ТекстОшибки);
КонецПопытки;
КонецПроцедуры
// Заполняет родителя варианта отчета, основываясь на ссылке отчета и предопределенных настройках.
@@ -251,6 +251,7 @@
<value>Автор</value>
</synonym>
<type>
<types>CatalogRef.ВнешниеПользователи</types>
<types>CatalogRef.Пользователи</types>
</type>
<toolTip>
@@ -404,6 +405,27 @@
<toolTip>
<key>ru</key>
<value>Параметры и фильтры, выведенные в отчете.
Используется при поиске.</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:StringValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="73c1a829-0191-486b-97a0-7f333c6f8011">
<name>КлючевыеСлова</name>
<synonym>
<key>ru</key>
<value>Ключевые слова</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers/>
</type>
<toolTip>
<key>ru</key>
<value>Дополнительная терминология (в т.ч. специализированная или устаревшая).
Используется при поиске.</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
@@ -1,8 +1,12 @@
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ОписаниеПеременных
Перем НовыйОбъект;
#КонецОбласти
#Область ОбработчикиСобытий
Процедура ПередЗаписью(Отказ)
@@ -114,6 +114,7 @@
<codeAllowedLength>Variable</codeAllowedLength>
<checkUnique>true</checkUnique>
<autonumbering>true</autonumbering>
<predefinedDataUpdate>AutoUpdate</predefinedDataUpdate>
<editType>InDialog</editType>
<choiceMode>BothWays</choiceMode>
<defaultObjectForm>Catalog.ВерсииРасширений.Form.ФормаЭлемента</defaultObjectForm>
@@ -1020,6 +1020,7 @@
</title>
<id>2</id>
<valueType>
<types>CatalogRef.УчетныеЗаписиСинхронизацииФайлов</types>
<types>CatalogRef.Пользователи</types>
</valueType>
<view>
@@ -1,9 +1,13 @@
#Область ОписаниеПеременных
&НаКлиенте
Перем Ссылка1;
&НаКлиенте
Перем Ссылка2;
#КонецОбласти
#Область ОбработчикиСобытийФормы
&НаСервере
@@ -37,7 +41,7 @@
КонецЕсли;
ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ДанныеФайла(ТекущиеДанные.Ссылка);
Если ДанныеФайла.Редактирует.Пустая() Тогда
Если Не ЗначениеЗаполнено(ДанныеФайла.Редактирует) Тогда
СменитьАктивнуюВерсиюФайла(ТекущиеДанные.Ссылка);
ЗаполнитьСписок();
Оповестить("Запись_Файл", Новый Структура("Событие", "АктивнаяВерсияИзменена"), Параметры.Файл);
@@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16421"></meta></head><body>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 11.00.9600.18427"></meta></head><body>
<p>Выбор программы для сравнения версий файлов. В программе предусмотрена возможность сравнивать версии файлов формата HTML, TXT, RTF, DOC, DOCX, ODT.</p>
<p>Позволяет задать текстовый редактор, который будет использоваться для сравнения версий файлов между собой. Вызывается при выполнении команды <strong>Показать отличия</strong> из <a href="Catalog.ВерсииФайлов/Help">списка версий файла</a>, если текстовый редактор для сравнения не задан по умолчанию.</p>
<h3>Выбор способа сравнения версий</h3>
@@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16421"></meta></head><body>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 11.00.9600.18427"></meta></head><body>
<p>Предназначен для выбора версии файла.</p>
<p>Вызывается из <a href="Catalog.ВерсииФайлов.Form.ФормаЭлемента/Help">карточки версии файла</a> при выборе <strong>Родительской версии</strong>.</p>
<p>В списке выводится:</p>
@@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16421"></meta></head><body>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 11.00.9600.18427"></meta></head><body>
<p>Просмотр сведений о версии файла.</p>
<p>По окончании редактирования файла (по команде <strong>Завершить редактирование</strong> в <a href="Catalog.Файлы.Form.Файлы/Help">списке файлов</a>) программа рекомендует сохранить версию файла и ввести информацию о данной версии. По умолчанию эта возможность включена (рекомендуется использовать сохранение версий, так как в случае серьезных ошибок, которые привели к порче файла, можно вернуться к более ранней, неиспорченной версии). Впоследствии можно отредактировать комментарий и при необходимости изменить автора версии.</p>
<h3>Сведения о версии файла</h3>
@@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16421"></meta></head><body>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 11.00.9600.18427"></meta></head><body>
<p>Предназначен для просмотра и управления версиями файла.</p>
<p>Для просмотра списка всех версий <a href="Catalog.Файлы.Form.ФормаЭлемента/Help">файла</a> откройте его карточку (в <a href="Catalog.Файлы/Help">списке файлов</a> нажмите <strong>F2</strong> или <strong>Еще -</strong> <strong>Открыть карточку</strong>) и нажмите <strong>Версии файла</strong> на панели навигации.</p>
<p>Список версий является иерархическим, для удобства просмотра отображается в виде дерева. В этом случае легко проследить историю редактирования файла. Более поздние версии отображаются подчиненными более ранним. При этом первую версию файла удалить из списка невозможно.</p>
@@ -2,9 +2,11 @@
#Область ПрограммныйИнтерфейс
// Возвращает список реквизитов, которые разрешается редактировать
// с помощью обработки группового изменения объектов.
// Возвращает реквизиты объекта, которые разрешается редактировать
// с помощью обработки группового изменения реквизитов.
//
// Возвращаемое значение:
// Массив - список имен реквизитов объекта.
Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт
РедактируемыеРеквизиты = Новый Массив;
@@ -29,26 +29,20 @@
ЗаписьПодписанногоОбъекта = ДополнительныеСвойства.ЗаписьПодписанногоОбъекта;
КонецЕсли;
// Разрешаем ставить пометку удаления на подписанную версию.
Если НЕ ПривилегированныйРежим() И ЗаписьПодписанногоОбъекта <> Истина И НЕ УстановленаПометкаУдаления Тогда
Если ЗаписьПодписанногоОбъекта <> Истина Тогда
Если ЗначениеЗаполнено(Ссылка) Тогда
СтруктураРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Ссылка, "ПодписанЭП, Зашифрован");
СсылкаПодписан = СтруктураРеквизитов.ПодписанЭП;
СсылкаЗашифрован = СтруктураРеквизитов.Зашифрован;
Если ПодписанЭП И СсылкаПодписан Тогда
ВызватьИсключение НСтр("ru = 'Подписанную версию нельзя редактировать.'");
КонецЕсли;
Если Зашифрован И СсылкаЗашифрован И ПодписанЭП И НЕ СсылкаПодписан Тогда
ВызватьИсключение НСтр("ru = 'Зашифрованный файл нельзя подписывать.'");
КонецЕсли;
СтруктураРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Ссылка,
"ПодписанЭП, Зашифрован");
СсылкаПодписан = СтруктураРеквизитов.ПодписанЭП;
СсылкаЗашифрован = СтруктураРеквизитов.Зашифрован;
Если Зашифрован И СсылкаЗашифрован И ПодписанЭП И НЕ СсылкаПодписан Тогда
ВызватьИсключение НСтр("ru = 'Зашифрованную версию файла нельзя подписывать.'");
КонецЕсли;
КонецЕсли;
КонецЕсли;
// Выполним установку индекса пиктограммы при записи объекта.
@@ -149,6 +149,7 @@
<value>Автор</value>
</synonym>
<type>
<types>CatalogRef.УчетныеЗаписиСинхронизацииФайлов</types>
<types>CatalogRef.Пользователи</types>
</type>
<toolTip>
@@ -157,7 +158,6 @@
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<quickChoice>DontUse</quickChoice>
<createOnInput>Use</createOnInput>
<fillValue xsi:type="core:ReferenceValue">
<value>Catalog.Пользователи.EmptyRef</value>
@@ -716,6 +716,43 @@
<dataHistory>Use</dataHistory>
<fullTextSearch>Use</fullTextSearch>
</attributes>
<attributes uuid="d99991b8-3a81-4e18-b0ad-05fc3e3a199b">
<name>ДатаПроверкиПодписи</name>
<synonym>
<key>ru</key>
<value>Дата проверки подписи</value>
</synonym>
<type>
<types>Date</types>
<dateQualifiers/>
</type>
<toolTip>
<key>ru</key>
<value>Дата последней проверки подписи.</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<dataHistory>Use</dataHistory>
<fullTextSearch>Use</fullTextSearch>
</attributes>
<attributes uuid="dd383422-dddb-4a81-9326-015fd345b5c1">
<name>ПодписьВерна</name>
<synonym>
<key>ru</key>
<value>Подпись верна</value>
</synonym>
<type>
<types>Boolean</types>
</type>
<toolTip>
<key>ru</key>
<value>Результат последней проверки подписи.</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<dataHistory>Use</dataHistory>
<fullTextSearch>Use</fullTextSearch>
</attributes>
</tabularSections>
<forms uuid="9a4a0b04-3dfb-4551-90f0-16231f64b14f">
<name>ФормаЭлемента</name>
@@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16421"></meta></head><body>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 11.00.9600.18427"></meta></head><body>
<p>Список предназначен для выбора вида контактной информации.</p>
<p>Открывается по кнопке <strong>Выбрать</strong> из окна ввода нового <a href="Catalog.ВидыКонтактнойИнформации.Form.ФормаЭлемента/Help">поля контактной информации</a>.</p>
<p>Виды контактной информации представляют собой предопределенные группы, каждая из которых соответствует спискам или документам, которые являются носителями контактной информации, а элементы внутри этих групп определяют состав контактной информации этих объектов программы. При этом состав групп не может быть изменен. Список групп имеет иерархическую структуру в виде дерева.</p>
@@ -32,7 +32,7 @@
Процедура ПереместитьЭлементВверх()
Если Не ВозможноПеремещениеЭлемента(Элементы.Список.ТекущиеДанные.Ссылка, "Вверх") Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(Нстр("ru = 'Перемещение данного вида контактной информации не предусмотрено'"));
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(НСтр("ru = 'Перемещение данного вида контактной информации не предусмотрено'"));
Возврат;
КонецЕсли;
@@ -44,7 +44,7 @@
Процедура ПереместитьЭлементВниз()
Если Не ВозможноПеремещениеЭлемента(Элементы.Список.ТекущиеДанные.Ссылка, "Вниз") Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(Нстр("ru = 'Перемещение данного вида контактной информации не предусмотрено'"));
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(НСтр("ru = 'Перемещение данного вида контактной информации не предусмотрено'"));
Возврат;
КонецЕсли;
@@ -319,6 +319,48 @@
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:CheckBoxFieldExtInfo"/>
</items>
<items xsi:type="form:Decoration">
<name>ХранитИсториюИзменений</name>
<id>145</id>
<title>
<key>ru</key>
<value>Хранит историю изменений</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<toolTip>
<key>ru</key>
<value>Поле контактной информации хранит не только текущее значение, но и его историю изменений на указанную дату. Для просмотра истории необходимо в контекстном меню элемента контактной информации выбрать пункт «История изменений».</value>
</toolTip>
<toolTipRepresentation>Button</toolTipRepresentation>
<extendedTooltip>
<name>ХранитИсториюИзмененийРасширеннаяПодсказка</name>
<id>147</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ХранитИсториюИзмененийКонтекстноеМеню</name>
<id>146</id>
<autoFill>true</autoFill>
</contextMenu>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<textColor xsi:type="core:ColorRef">
<color>Style.ПоясняющийТекст</color>
</textColor>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
@@ -795,6 +837,7 @@
<extInfo xsi:type="form:PageGroupExtInfo">
<group>Vertical</group>
<showTitle>auto</showTitle>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
@@ -857,6 +900,7 @@
<extInfo xsi:type="form:PageGroupExtInfo">
<group>Vertical</group>
<showTitle>auto</showTitle>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
@@ -896,6 +940,40 @@
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:CheckBoxFieldExtInfo"/>
</items>
<items xsi:type="form:FormField">
<name>ПроверятьКорректность1</name>
<id>137</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Объект.ПроверятьКорректность</segments>
</dataPath>
<titleLocation>Right</titleLocation>
<extendedTooltip>
<name>ПроверятьКорректность1РасширеннаяПодсказка</name>
<id>139</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ПроверятьКорректность1КонтекстноеМеню</name>
<id>138</id>
<autoFill>true</autoFill>
</contextMenu>
<type>CheckBoxField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:CheckBoxFieldExtInfo"/>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
@@ -923,6 +1001,7 @@
<extInfo xsi:type="form:PageGroupExtInfo">
<group>Vertical</group>
<showTitle>auto</showTitle>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
@@ -985,11 +1064,71 @@
<extInfo xsi:type="form:PageGroupExtInfo">
<group>Vertical</group>
<showTitle>auto</showTitle>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>Другое</name>
<id>51</id>
<items xsi:type="form:FormField">
<name>МногострочноеПоле</name>
<id>142</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Объект.МногострочноеПоле</segments>
</dataPath>
<titleLocation>Right</titleLocation>
<extendedTooltip>
<name>МногострочноеПолеРасширеннаяПодсказка</name>
<id>144</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>МногострочноеПолеКонтекстноеМеню</name>
<id>143</id>
<autoFill>true</autoFill>
</contextMenu>
<type>CheckBoxField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:CheckBoxFieldExtInfo"/>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ДругоеExtendedTooltip</name>
<id>110</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>Page</type>
<extInfo xsi:type="form:PageGroupExtInfo">
<group>Vertical</group>
<showTitle>auto</showTitle>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>Прочие</name>
<id>140</id>
<items xsi:type="form:Decoration">
<name>ДекорацияЗаглушка</name>
<id>54</id>
@@ -1025,9 +1164,17 @@
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Прочие</value>
</title>
<toolTip>
<key>ru</key>
<value>Прочие</value>
</toolTip>
<extendedTooltip>
<name>ДругоеExtendedTooltip</name>
<id>110</id>
<name>ПрочиеРасширеннаяПодсказка</name>
<id>141</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
@@ -1039,6 +1186,7 @@
<extInfo xsi:type="form:PageGroupExtInfo">
<group>Vertical</group>
<showTitle>auto</showTitle>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<visible>true</visible>
@@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16421"></meta></head><body>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 11.00.9600.18427"></meta></head><body>
<p>Описание свойств поля контактной информации.</p>
<p>Поставка программы осуществляется c предопределенными полями контактной информации для некоторых документов и списков. У предопределенных полей контактной информации можно только поменять  настройки, остальные реквизиты заполнены по умолчанию и защищены от редактирования.</p>
<h3>Типы контактной информации</h3>
@@ -16,7 +16,7 @@
</li><li>
<div><strong>Другое</strong> - поле с таким типом контактной информации может использоваться для хранения произвольной текстовой контактной информации, например, можно поместить информацию о том, как добраться до организации. Программа позволяет в это поле ввести текст длиной до 1024 символов.</div>
</li><li>
<div>Skype - поле с таким типом контактной информации используется для хранения логина Skype.</div></li></ul><h3>Добавление поля контактной информации в список или документ</h3>
<div><strong>Skype</strong> - поле с таким типом контактной информации используется для хранения логина Skype.</div></li></ul><h3>Добавление поля контактной информации в список или документ</h3>
<p>Заполните необходимую информацию:</p>
<ul><li>
<div>Выберите из списка <strong>Тип</strong> контактной информации.</div>
@@ -31,17 +31,23 @@
</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>
<ul><li>Включите флажок <strong>Только российский</strong>, для того чтобы запретить выбор другой страны при заполнении адреса. Используйте эту возможность, если у сотрудников Вашей организации только российские адреса, это ускорит ввод информации. При этом становятся доступными дополнительные настройки:
<ul><li><strong>Запрещать ввод некорректного</strong> - если флажок включен, то при некорректном вводе российского адреса невозможно будет ввести данные в программу (имеет смысл только при использовании шаблонов ввода и адресного классификатора - для использования этой возможности включите флажок <strong>Редактировать только в диалоге</strong>).
<ul><li><strong>Запрещать ввод некорректного адреса</strong> - если флажок включен, то при некорректном вводе российского адреса невозможно будет ввести данные в программу (имеет смысл только при использовании шаблонов ввода и адресного классификатора - для использования этой возможности включите флажок <strong>Редактировать только в диалоге</strong>).
</li><li><strong>Проверять по КЛАДР</strong>;
</li><li><strong>Проверять по ФИАС</strong> - при использовании классификатора ФИАС адреса ведутся в дополнительных разрезах (например, <strong>Округ</strong>);
</li><li><strong>Скрывать неактуальные адреса</strong> - включите флажок, для того чтобы программа не показывала в списках устаревшие адреса на момент последней загрузки классификатора адреса. Такие адреса помечены в списках значком <img src="CommonPicture.КонтактнаяИнформацияНеактуально"></img>. По умолчанию флажок отключен. </li></ul></li><li><strong>Включать страну в представление</strong> - включите флажок, для того чтобы при автоматическом составлении полного адреса в поле <strong>Адрес</strong> указывалась страна.</li></ul><h3>Особенности настройки поля Телефон и факс</h3>
</li><li><strong>Скрывать неактуальные адреса</strong> - включите флажок, для того чтобы программа не показывала в списках устаревшие адреса на момент последней загрузки классификатора адреса. Такие адреса помечены в списках значком <img src="CommonPicture.КонтактнаяИнформацияНеактуально"></img>. По умолчанию флажок отключен.
</li><li><strong>Указывать ОКТМО</strong> - включите флажок, для того чтобы автоматически заполнялось поле ОКТМО. При необходимости поле можно отредактировать.</li></ul></li><li><strong>Включать страну в представление</strong> - включите флажок, для того чтобы при автоматическом составлении полного адреса в поле <strong>Адрес</strong> указывалась страна.
</li><li>Если включена возможность хранить историю изменения адреса, то в поле выводится состояние <strong>Хранит историю изменений</strong>.</li></ul><h3>Особенности настройки поля Телефон и факс</h3>
<ul><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>Если у поля установлен тип <strong>Адрес электронной почты</strong>, то программа проверяет правильность ввода адреса электронной почты. Включите флажок <strong>Запрещать ввод некорректных адресов</strong>, в этом случае ввести некорректный адрес электронной почты будет невозможно.</li></ul><h3>Особенности настройки поля Другое</h3>
<ul><li>
<div>С помощью флажка <strong>Многострочное поле</strong> можно указать, выводить эти поля как многострочные или однострочные. Такая возможность позволяет более точно расположить поле в окне объекта.</div></li></ul><h3>См. также: </h3>
<ul><li><a href="Catalog.ВидыКонтактнойИнформации/Help">Виды контактной информации</a>;
</li><li><a href="DataProcessor.ВводКонтактнойИнформации/Help">Ввод контактной информации</a>;
</li><li><a href="v8help://frame/form_common">Работа с формами</a>.</li></ul></body></html>
@@ -28,16 +28,21 @@
КонецЕсли;
СсылкаРодителя = Объект.Родитель;
ТекущийУровень = ?(СсылкаРодителя.Пустая(), 0, СсылкаРодителя.Уровень() );
Элементы.РазрешитьВводНесколькихЗначений.Доступность = ?(ТекущийУровень = 1, Ложь, Истина);
Если Не Объект.МожноИзменятьСпособРедактирования Тогда
Элементы.РедактированиеТолькоВДиалоге.Доступность = Ложь;
Элементы.РазрешитьВводНесколькихЗначений.Доступность = Ложь;
Элементы.ГруппаНаименованиеНастройкиПоТипам.Доступность = Ложь;
Иначе
Если Объект.ХранитьИсториюИзменений ИЛИ СсылкаРодителя.Пустая() ИЛИ СсылкаРодителя.Уровень() > 0 Тогда
Элементы.РазрешитьВводНесколькихЗначений.Доступность = Ложь;
Иначе
Элементы.РазрешитьВводНесколькихЗначений.Доступность = Истина;
КонецЕсли;
КонецЕсли;
Элементы.ХранитИсториюИзменений.Видимость = Объект.ХранитьИсториюИзменений;
ПроверятьПоКлассификатору = ?(Объект.ПроверятьПоФИАС, 0, 1);
КонецПроцедуры
@@ -151,9 +156,12 @@
Или Объект.Тип = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.Факс") Тогда
Элементы.Проверки.ТекущаяСтраница = Элементы.Проверки.ПодчиненныеЭлементы.Телефон;
Элементы.РедактированиеТолькоВДиалоге.Доступность = Объект.МожноИзменятьСпособРедактирования;
Иначе
ИначеЕсли Объект.Тип = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.Другое") Тогда
Элементы.Проверки.ТекущаяСтраница = Элементы.Проверки.ПодчиненныеЭлементы.Другое;
Элементы.РедактированиеТолькоВДиалоге.Доступность = Ложь;
Иначе
Элементы.Проверки.ТекущаяСтраница = Элементы.Проверки.ПодчиненныеЭлементы.Прочие;
Элементы.РедактированиеТолькоВДиалоге.Доступность = Ложь;
КонецЕсли;
КонецПроцедуры
@@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16421"></meta></head><body>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 11.00.9600.18427"></meta></head><body>
<p>Предназначен для настройки видов контактной информации в документах и списках программы. </p>
<p>Программа позволяет хранить и обрабатывать контактную информацию, использующуюся на предприятии.</p>
<p>Работа с контактной информацией в разных списках программы реализована одинаково. Все списки предоставляют одинаковую возможность по работе с адресами или телефонами. В программе также предусмотрена возможность хранения контактной информации в табличных частях документов и загрузка контактной информации. В табличных частях документов можно редактировать контактную информацию. Такая возможность может потребоваться при работе в документах представляемой электронной отчетности. Связано это с необходимостью сохранения в данных документа точной копии представленных в фискальные органы сведений, в том числе адресов и телефонов физических лиц.</p>
@@ -23,12 +23,11 @@
////////////////////////////////////////////////////////////////////////////////
// Групповое изменение объектов.
// Возвращает список реквизитов, которые не нужно редактировать
// с помощью обработки группового изменения объектов.
// Возвращает реквизиты объекта, которые не рекомендуется редактировать
// с помощью обработки группового изменения реквизитов.
//
// Возвращаемое значение:
// Массив - содержит строки имен реквизитов.
//
// Массив - список имен реквизитов объекта.
Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт
Результат = Новый Массив;
@@ -0,0 +1,22 @@
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ОбработчикиСобытий
Процедура ПередЗаписью(Отказ)
Если ЭтотОбъект.ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
Если НЕ ЭтотОбъект.ЭтоГруппа Тогда
Результат = УправлениеКонтактнойИнформациейСлужебный.ПроверитьПараметрыВидаКонтактнойИнформации(ЭтотОбъект);
Если Результат.ЕстьОшибки Тогда
Отказ = Истина;
ВызватьИсключение Результат.ТекстОшибки;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#КонецЕсли
@@ -529,6 +529,44 @@
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="9395eb9d-6aff-4af5-a6f1-5c39014ba67b">
<name>МногострочноеПоле</name>
<synonym>
<key>ru</key>
<value>Многострочное поле</value>
</synonym>
<type>
<types>Boolean</types>
</type>
<toolTip>
<key>ru</key>
<value>Выводит многострочное поле </value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<attributes uuid="eb3f959c-94a4-4e77-b9f9-e81954254079">
<name>ХранитьИсториюИзменений</name>
<synonym>
<key>ru</key>
<value>Хранить историю изменений</value>
</synonym>
<type>
<types>Boolean</types>
</type>
<toolTip>
<key>ru</key>
<value>Сохранять историю изменения контактной информации</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
</attributes>
<forms uuid="f5ef3f75-7d12-4284-844f-54d19d1f7e2f">
<name>ФормаСписка</name>
<synonym>
@@ -15,8 +15,8 @@
ПараметрыВыполненияКоманды.Окно);
Исключение
ИнформацияОбОшибке = ИнформацияОбОшибке();
Если Найти(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке),
"ВызватьИсключение ОписаниеОшибкиКакПредупреждения") > 0 Тогда
Если СтрНайти(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке),
"ВызватьИсключение" + " " + "ОписаниеОшибкиКакПредупреждения") > 0 Тогда
ПоказатьПредупреждение(, КраткоеПредставлениеОшибки(ИнформацияОбОшибке));
Иначе
@@ -1111,6 +1111,10 @@
<event>OnActivateRow</event>
<name>ВнешниеПользователиСписокПриАктивизацииСтроки</name>
</handlers>
<handlers>
<event>BeforeRowChange</event>
<name>ВнешниеПользователиСписокПередНачаломИзменения</name>
</handlers>
<searchStringAddition>
<name>ВнешниеПользователиСписокСтрокаПоиска</name>
<id>179</id>
@@ -2006,6 +2010,9 @@
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Items.ГруппыВнешнихПользователей.CurrentData.DeletionMark</segments>
</dataPath>
<titleLocation>Top</titleLocation>
<extendedTooltip>
<name>ГруппыВнешнихПользователейКомментарийРасширеннаяПодсказка</name>
@@ -2093,6 +2100,7 @@
<type>Page</type>
<extInfo xsi:type="form:PageGroupExtInfo">
<group>Vertical</group>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
@@ -2199,6 +2207,7 @@
<type>Page</type>
<extInfo xsi:type="form:PageGroupExtInfo">
<group>Vertical</group>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<visible>true</visible>
@@ -138,7 +138,7 @@
Если Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов") Тогда
Элементы.ФормаИзменитьВыделенные.Видимость = Ложь;
Элементы.ПользователиСписокКонтекстноеМенюИзменитьВыделенные.Видимость = Ложь;
Элементы.ВнешниеПользователиСписокКонтекстноеМенюИзменитьВыделенные.Видимость = Ложь;
КонецЕсли;
ОписаниеОбъекта = Новый Структура;
@@ -223,7 +223,7 @@
Процедура ВидПользователейНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ОписаниеОповещения = Новый ОписаниеОповещения("ПослеВыбораНазначения", ЭтотОбъект);
ПользователиСлужебныйКлиент.ВыбратьНазначение(ЭтотОбъект, Нстр("ru = 'Выбор вида пользователей'"), Ложь, Истина, ОписаниеОповещения);
ПользователиСлужебныйКлиент.ВыбратьНазначение(ЭтотОбъект, НСтр("ru = 'Выбор вида пользователей'"), Ложь, Истина, ОписаниеОповещения);
КонецПроцедуры
@@ -442,6 +442,20 @@
КонецПроцедуры
&НаКлиенте
Процедура ВнешниеПользователиСписокПередНачаломИзменения(Элемент, Отказ)
Отказ = Истина;
Если Не ЗначениеЗаполнено(Элемент.ТекущаяСтрока) Тогда
Возврат;
КонецЕсли;
ПараметрыФормы = Новый Структура("Ключ", Элемент.ТекущаяСтрока);
ОткрытьФорму("Справочник.ВнешниеПользователи.ФормаОбъекта", ПараметрыФормы, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура ВнешниеПользователиСписокПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле)
@@ -1085,18 +1099,13 @@
НСтр("ru = 'Перемещение пользователей'"), , СообщениеПользователю.Сообщение, БиблиотекаКартинок.Информация32);
Иначе
ПараметрыПредупреждения = Новый Структура("Текст", СообщениеПользователю.Сообщение);
Если СообщениеПользователю.Пользователи <> Неопределено Тогда
Отчет = НСтр("ru = 'Следующие пользователи не были включены в выбранную группу:'");
Отчет = Отчет + Символы.ПС + СообщениеПользователю.Пользователи;
ТекстВопроса = СообщениеПользователю.Сообщение;
Результат = Новый Структура;
СтандартныеПодсистемыКлиентСервер.ВывестиПредупреждение(Результат, ТекстВопроса, Отчет);
СтандартныеПодсистемыКлиент.ПоказатьРезультатВыполнения(ЭтотОбъект, Результат);
Иначе
ПоказатьПредупреждение(,СообщениеПользователю.Сообщение);
Подробно = НСтр("ru = 'Следующие пользователи не были включены в выбранную группу:'");
Подробно = Подробно + Символы.ПС + СообщениеПользователю.Пользователи;
ПараметрыПредупреждения.Вставить("Подробно", Подробно);
КонецЕсли;
СтандартныеПодсистемыКлиент.ВывестиПредупреждение(ЭтотОбъект, ПараметрыПредупреждения);
КонецЕсли;
@@ -679,6 +679,7 @@
<extInfo xsi:type="form:PageGroupExtInfo">
<group>Vertical</group>
<showTitle>auto</showTitle>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
@@ -754,6 +755,7 @@
<extInfo xsi:type="form:PageGroupExtInfo">
<group>Vertical</group>
<showTitle>auto</showTitle>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<visible>true</visible>
@@ -1846,6 +1848,7 @@
<extInfo xsi:type="form:PageGroupExtInfo">
<group>Vertical</group>
<showTitle>auto</showTitle>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
@@ -1874,6 +1877,7 @@
<extInfo xsi:type="form:PageGroupExtInfo">
<group>Vertical</group>
<showTitle>auto</showTitle>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
@@ -1950,6 +1954,7 @@
<extInfo xsi:type="form:PageGroupExtInfo">
<group>Vertical</group>
<showTitle>auto</showTitle>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<visible>true</visible>
@@ -2033,22 +2038,6 @@
<main>true</main>
<savedData>true</savedData>
</attributes>
<attributes>
<name>ПользовательИБПароль</name>
<title>
<key>ru</key>
<value>Пользователь ИБПароль</value>
</title>
<id>3</id>
<valueType/>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
<savedData>true</savedData>
</attributes>
<attributes>
<name>ПользовательИБЯзык</name>
<title>
@@ -2390,6 +2379,40 @@
<common>true</common>
</edit>
</columns>
<columns>
<name>ЭтоНедоступнаяРоль</name>
<title>
<key>ru</key>
<value>Это недоступная роль</value>
</title>
<id>6</id>
<valueType>
<types>Boolean</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</columns>
<columns>
<name>ЭтоНесуществующаяРоль</name>
<title>
<key>ru</key>
<value>Это несуществующая роль</value>
</title>
<id>7</id>
<valueType>
<types>Boolean</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</columns>
</attributes>
<attributes>
<name>ЗапретРедактированияРолей</name>
@@ -2736,6 +2759,37 @@
<common>true</common>
</edit>
</attributes>
<attributes>
<name>ПользовательИБПароль</name>
<title>
<key>ru</key>
<value>Пользователь ИБПароль</value>
</title>
<id>38</id>
<valueType/>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
<savedData>true</savedData>
</attributes>
<attributes>
<name>ПользовательИБСтарыйПароль</name>
<title>
<key>ru</key>
<value>Пользователь ИБСтарый пароль</value>
</title>
<id>39</id>
<valueType/>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<formCommands>
<name>ПоказатьТолькоВыбранныеРоли</name>
<title>
@@ -2860,6 +2914,7 @@
</handler>
</action>
<functionalOptions>FunctionalOption.ИспользоватьВнешнихПользователей</functionalOptions>
<modifiesStoredData>true</modifiesStoredData>
<currentRowUse>DontUse</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</formCommands>
@@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16421"></meta></head><body>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 11.00.9600.18427"></meta></head><body>
<p>Описание свойств внешнего пользователя.</p>
<p>Для <a href="#1">ввода или редактирования</a> сведений о внешнем пользователе необходимы права администрирования или права ответственного за список <a href="Catalog.ВнешниеПользователи/Help">внешних пользователей</a>. </p>
<p><a href="#2">Вход в программу</a> разрешает только администратор. </p>
@@ -15,7 +15,7 @@
</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> будет отображаться в программе в различных списках в качестве полного имени внешнего пользователя. 
@@ -33,7 +33,7 @@
</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>
<div>В программе возможно прекращение работы пользователей, которым сняли флажок <strong>Вход в программу разрешен</strong>, интерактивно или программно в связи с окончанием срока действия.</div>
@@ -121,7 +121,9 @@
КонецЕсли;
Если ОбщегоНазначенияПовтИсп.ЭтоАвтономноеРабочееМесто() Тогда
ТолькоПросмотр = Истина;
Элементы.ГруппаШапка.ТолькоПросмотр = Истина;
Элементы.СтраницаДополнительныеРеквизиты.ТолькоПросмотр = Истина;
Элементы.СтраницаКомментарий.ТолькоПросмотр = Истина;
КонецЕсли;
КонецПроцедуры
@@ -245,19 +247,14 @@
Объект.Наименование = ТекущееПредставлениеОбъектаАвторизации;
ТекущийОбъект.Наименование = ТекущееПредставлениеОбъектаАвторизации;
Если ТребуетсяЗаписьПользователяИБ(ЭтотОбъект)
Или ПараметрыЗаписи.Свойство("КраткоеИмя") Тогда
Если ТребуетсяЗаписьПользователяИБ(ЭтотОбъект) Тогда
ОписаниеПользователяИБ = ОписаниеПользователяИБ();
Если ПараметрыЗаписи.Свойство("КраткоеИмя") Тогда
ОписаниеПользователяИБ.Вставить("Имя", ПараметрыЗаписи.КраткоеИмя);
КонецЕсли;
Если ЗначениеЗаполнено(Объект.ИдентификаторПользователяИБ) Тогда
ОписаниеПользователяИБ.Вставить("УникальныйИдентификатор", Объект.ИдентификаторПользователяИБ);
КонецЕсли;
ОписаниеПользователяИБ.Вставить("Действие", "Записать");
ОписаниеПользователяИБ.Вставить("ЗаполнитьПароль", Истина);
ТекущийОбъект.ДополнительныеСвойства.Вставить("ОписаниеПользователяИБ", ОписаниеПользователяИБ);
КонецЕсли;
@@ -334,10 +331,6 @@
ПользователиСлужебныйКлиент.РазвернутьПодсистемыРолей(ЭтотОбъект);
Если ПараметрыЗаписи.Свойство("СменитьПарольПослеЗаписи") Тогда
ПодключитьОбработчикОжидания("СменитьПарольНачало", 0.1, Истина);
КонецЕсли;
КонецПроцедуры
&НаСервере
@@ -371,6 +364,34 @@
КонецЕсли;
КонецЕсли;
// Проверка наличия ролей в метаданных.
Если Не Элементы.Роли.ТолькоПросмотр Тогда
Ошибки = Неопределено;
ЭлементыДерева = Роли.ПолучитьЭлементы();
Для Каждого Строка Из ЭлементыДерева Цикл
Если Не Строка.Пометка Тогда
Продолжить;
КонецЕсли;
Если Строка.ЭтоНесуществующаяРоль Тогда
ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки,
"Роли[%1].РолиСиноним",
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Роль ""%1"" не найдена в метаданных.'"), Строка.Синоним),
"Роли",
ЭлементыДерева.Индекс(Строка),
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Роль ""%1"" в строке %%1 не найдена в метаданных.'"), Строка.Синоним));
КонецЕсли;
Если Строка.ЭтоНедоступнаяРоль Тогда
ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки,
"Роли[%1].РолиСиноним",
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Роль ""%1"" недоступна для внешних пользователей.'"), Строка.Синоним),
"Роли",
ЭлементыДерева.Индекс(Строка),
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Роль ""%1"" в строке %%1 недоступна для внешних пользователей.'"), Строка.Синоним));
КонецЕсли;
КонецЦикла;
ОбщегоНазначенияКлиентСервер.СообщитьОшибкиПользователю(Ошибки, Отказ);
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда
МодульУправлениеСвойствами = ОбщегоНазначения.ОбщийМодуль("УправлениеСвойствами");
МодульУправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты);
@@ -565,51 +586,12 @@
&НаКлиенте
Процедура СменитьПароль(Команда)
Если Не Модифицированность
И ЗначениеЗаполнено(Объект.Ссылка)
И ПользовательИБСуществует Тогда
СменитьПарольНачало();
Возврат;
КонецЕсли;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ВернутьПарольБезУстановки", Истина);
ДополнительныеПараметры.Вставить("СтарыйПароль", ПользовательИБСтарыйПароль);
Контекст = Новый Структура;
Если Не ЗначениеЗаполнено(ТекущееПредставлениеОбъектаАвторизации)
Или ЗначениеЗаполнено(Объект.Ссылка)
И ПользовательИБСуществует Тогда
СменитьПарольПослеПодтвержденияЗаписи("Записать", Контекст);
Возврат;
КонецЕсли;
// Текст вопроса в стиле 1С:Предприятия.
Если ЗначениеЗаполнено(ПользовательИБИмя) Тогда
ТекстВопроса = НСтр("ru = 'Установка пароля возможна только после записи данных.'");
Иначе
Контекст.Вставить("КраткоеИмя",
ПользователиСлужебныйКлиентСервер.ПолучитьКраткоеИмяПользователяИБ(
ТекущееПредставлениеОбъектаАвторизации));
Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Установка пароля возможна только после записи поля
|Имя (для входа), которое будет установлено: ""%1"".'"),
Контекст.КраткоеИмя);
Иначе
ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Установка пароля возможна только после записи данных,
|при этом будет установлено Имя (для входа): ""%1"".'"),
Контекст.КраткоеИмя);
КонецЕсли;
КонецЕсли;
Кнопки = Новый СписокЗначений;
Кнопки.Добавить("Записать", НСтр("ru = 'Записать'"));
Кнопки.Добавить("НеЗаписывать", НСтр("ru = 'Не записывать'"));
ПоказатьВопрос(Новый ОписаниеОповещения("СменитьПарольПослеПодтвержденияЗаписи", ЭтотОбъект, Контекст),
ТекстВопроса, Кнопки);
ПользователиСлужебныйКлиент.ОткрытьФормуСменыПароля(Объект.Ссылка, Новый ОписаниеОповещения(
"СменитьПарольПослеПолученияПароля", ЭтотОбъект), ДополнительныеПараметры);
КонецПроцедуры
@@ -700,40 +682,16 @@
// Продолжение процедуры СменитьПароль.
&НаКлиенте
Процедура СменитьПарольПослеПодтвержденияЗаписи(Ответ, Контекст) Экспорт
Если Ответ <> "Записать" Тогда
Возврат;
КонецЕсли;
ПараметрыЗаписи = Новый Структура("СменитьПарольПослеЗаписи");
Если Контекст.Свойство("КраткоеИмя") Тогда
ПараметрыЗаписи.Вставить("КраткоеИмя", Контекст.КраткоеИмя);
КонецЕсли;
Записать(ПараметрыЗаписи);
КонецПроцедуры
// Продолжение процедуры СменитьПароль.
&НаКлиенте
Процедура СменитьПарольНачало()
ПользователиСлужебныйКлиент.ОткрытьФормуСменыПароля(Объект.Ссылка, Новый ОписаниеОповещения(
"СменитьПарольПослеСменыПароля", ЭтотОбъект));
КонецПроцедуры
// Продолжение процедуры СменитьПароль.
&НаКлиенте
Процедура СменитьПарольПослеСменыПароля(Результат, Контекст) Экспорт
Процедура СменитьПарольПослеПолученияПароля(Результат, Контекст) Экспорт
Если Не ЗначениеЗаполнено(Результат) Тогда
Возврат;
КонецЕсли;
Прочитать();
ПользовательИБПароль = Результат.НовыйПароль;
ПользовательИБСтарыйПароль = Результат.СтарыйПароль;
УстановитьНаличиеПароля(ЭтотОбъект, ЗначениеЗаполнено(ПользовательИБПароль));
КонецПроцедуры
@@ -779,7 +737,7 @@
ПользователиСлужебный.ПриОпределенииДействийВФорме(Объект.Ссылка, ДействияВФорме);
// Проверка имен действий в форме.
Если Найти(", Просмотр, Редактирование,", ", " + ДействияВФорме.Роли + ",") = 0 Тогда
Если СтрНайти(", Просмотр, Редактирование,", ", " + ДействияВФорме.Роли + ",") = 0 Тогда
ДействияВФорме.Роли = "";
ИначеЕсли ДействияВФорме.Роли = "Редактирование"
@@ -788,21 +746,21 @@
ДействияВФорме.Роли = "Просмотр";
КонецЕсли;
Если Найти(", Просмотр, ПросмотрВсех, Редактирование, РедактированиеСвоих, РедактированиеВсех,",
Если СтрНайти(", Просмотр, ПросмотрВсех, Редактирование, РедактированиеСвоих, РедактированиеВсех,",
", " + ДействияВФорме.СвойстваПользователяИБ + ",") = 0 Тогда
ДействияВФорме.СвойстваПользователяИБ = "";
Иначе // Поддержка обратной совместимости.
Если Найти(ДействияВФорме.СвойстваПользователяИБ, "Просмотр") Тогда
Если СтрНайти(ДействияВФорме.СвойстваПользователяИБ, "Просмотр") Тогда
ДействияВФорме.СвойстваПользователяИБ = "Просмотр";
ИначеЕсли Найти(ДействияВФорме.СвойстваПользователяИБ, "Редактирование") Тогда
ИначеЕсли СтрНайти(ДействияВФорме.СвойстваПользователяИБ, "Редактирование") Тогда
ДействияВФорме.СвойстваПользователяИБ = "Редактирование";
КонецЕсли;
КонецЕсли;
Если Найти(", Просмотр, Редактирование,", ", " + ДействияВФорме.СвойстваЭлемента + ",") = 0 Тогда
Если СтрНайти(", Просмотр, Редактирование,", ", " + ДействияВФорме.СвойстваЭлемента + ",") = 0 Тогда
ДействияВФорме.СвойстваЭлемента = "";
КонецЕсли;
@@ -848,8 +806,8 @@
Если УровеньДоступа.НастройкиДляВхода Тогда
Результат.Вставить("АутентификацияСтандартная", ПользовательИБАутентификацияСтандартная);
Результат.Вставить("Имя", ПользовательИБИмя);
Результат.Вставить("Пароль", ПользовательИБПароль);
Результат.Вставить("Имя", ПользовательИБИмя);
Результат.Вставить("АутентификацияOpenID", ПользовательИБАутентификацияOpenID);
КонецЕсли;
КонецЕсли;
@@ -1267,8 +1225,7 @@
Или УровеньДоступа.ИзменениеТекущего
И Не ПользовательИБЗапрещеноИзменятьПароль);
ОбработатьИнтерфейсРолей(
"УстановитьТолькоПросмотрРолей",
ОбработатьИнтерфейсРолей("УстановитьТолькоПросмотрРолей",
ЗапретРедактированияРолей
Или ДействияВФорме.Роли <> "Редактирование"
Или Не Объект.УстановитьРолиНепосредственно
@@ -1353,11 +1310,10 @@
Процедура ОбработатьИнтерфейсРолей(Действие, ОсновнойПараметр = Неопределено)
ПараметрыДействия = Новый Структура;
ПараметрыДействия.Вставить("ОсновнойПараметр", ОсновнойПараметр);
ПараметрыДействия.Вставить("Форма", ЭтотОбъект);
ПараметрыДействия.Вставить("КоллекцияРолей", ПользовательИБРоли);
ПараметрыДействия.Вставить("ТипПользователей", Перечисления.ТипыПользователей.ВнешнийПользователь);
ПараметрыДействия.Вставить("СкрытьРольПолныеПрава", Истина);
ПараметрыДействия.Вставить("ОсновнойПараметр", ОсновнойПараметр);
ПараметрыДействия.Вставить("Форма", ЭтотОбъект);
ПараметрыДействия.Вставить("КоллекцияРолей", ПользовательИБРоли);
ПараметрыДействия.Вставить("НазначениеРолей", "ДляВнешнихПользователей");
ПользователиСлужебный.ОбработатьИнтерфейсРолей(Действие, ПараметрыДействия);
@@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16421"></meta></head><body>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 11.00.9600.18427"></meta></head><body>
<p>Предназначен для ведения пользователей, которые работают с программой "извне". Их доступ, как правило, сильно ограничен. Внешние пользователи не принимают активного участия в процессах учета, работают обособленно, не взаимодействуют между собой. Например, это сотрудники в кадровой базе, покупатели в интернет-магазине, респонденты в базе для анкетирования.</p>
<p>Открыть список внешних пользователей можно из раздела <strong>Администрирование - Настройки пользователей и прав</strong>. Также можно его открыть из раздела <strong>Анкетирование</strong> (<strong>Управление доступом</strong>).</p>
<p>Внешние пользователи программы разного типа, поэтому информация о них хранится в различных списках программы.</p>
@@ -32,7 +32,7 @@
<ul><li>
<div>Выберите группу в левой части списка, воспользуйтесь командой контекстного меню по правой кнопке мыши <strong>Переместить в группу</strong>. </div>
</li><li>
<div>Выберите группу для перемещения.</div></li></ul><h3><a name="#S">Подбор участников групп</a>ы внешних пользователей</h3>
<div>Выберите группу для перемещения.</div></li></ul><h3><a name="S">Подбор участников групп</a>ы внешних пользователей</h3>
<ul><li>В случае если из списка внешних пользователей производится подбор участников группы, он состоит из трех частей.  Слева в верхней части списка отображаются группы, в нижней части внешние пользователи выбранной группы. В правой части списка отображаются выбранные пользователи.
</li><li>
<div>Для удобства подбора в верхней левой части списка показаны уже имеющиеся группы внешних пользователей. Выбрав нужную группу (или группу <strong>Все внешние пользователи</strong>), можно просмотреть пользователей этой группы в нижней левой части списка.</div>
@@ -2,9 +2,11 @@
#Область ПрограммныйИнтерфейс
// Возвращает список реквизитов, которые не нужно редактировать
// с помощью обработки группового изменения объектов.
// Возвращает реквизиты объекта, которые не рекомендуется редактировать
// с помощью обработки группового изменения реквизитов.
//
// Возвращаемое значение:
// Массив - список имен реквизитов объекта.
Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт
НеРедактируемыеРеквизиты = Новый Массив;
@@ -56,7 +58,7 @@
ОбъектАвторизацииИспользуется = ПользователиСлужебныйВызовСервера.ОбъектАвторизацииИспользуется(
Параметры.ОбъектАвторизации,
,
Неопределено,
НайденныйВнешнийПользователь,
ЕстьПравоДобавленияВнешнегоПользователя);
@@ -1,5 +1,7 @@
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ОписаниеПеременных
Перем ПараметрыОбработкиПользователяИБ; // Параметры, заполняемые при обработке пользователя ИБ.
// Используются в обработчике события ПриЗаписи.
@@ -9,9 +11,12 @@
Перем СтарыйОбъектАвторизации; // Значений объекта авторизации до изменения.
// Используются в обработчике события ПриЗаписи.
#КонецОбласти
// *Область ПрограммныйИнтерфейс
//
// Программный интерфейс объекта реализован через ДополнительныеСвойства:
//
// ОписаниеПользователяИБ - Структура, как и в модуле объекта справочника Пользователи.
//
// *КонецОбласти
@@ -454,6 +454,10 @@
<comment>Внешний пользователь объекта авторизации</comment>
<group>FormCommandBarImportant</group>
<representation>Picture</representation>
<toolTip>
<key>ru</key>
<value>Внешний пользователь (для входа в программу)</value>
</toolTip>
<picture xsi:type="core:PictureRef">
<picture>CommonPicture.СостояниеПользователя08</picture>
</picture>
@@ -5,9 +5,11 @@
////////////////////////////////////////////////////////////////////////////////
// Групповое изменение объектов.
// Возвращает список реквизитов, которые разрешается редактировать
// с помощью обработки группового изменения объектов.
// Возвращает реквизиты объекта, которые разрешается редактировать
// с помощью обработки группового изменения реквизитов.
//
// Возвращаемое значение:
// Массив - список имен реквизитов объекта.
Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт
Результат = Новый Массив;
@@ -2,9 +2,11 @@
#Область ПрограммныйИнтерфейс
// Возвращает список реквизитов, которые разрешается редактировать
// с помощью обработки группового изменения объектов.
// Возвращает реквизиты объекта, которые разрешается редактировать
// с помощью обработки группового изменения реквизитов.
//
// Возвращаемое значение:
// Массив - список имен реквизитов объекта.
Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт
Возврат ПрисоединенныеФайлы.РеквизитыРедактируемыеВГрупповойОбработке();
@@ -656,6 +656,43 @@
<dataHistory>Use</dataHistory>
<fullTextSearch>Use</fullTextSearch>
</attributes>
<attributes uuid="e72e59c0-391d-497e-9407-063e0edf573e">
<name>ДатаПроверкиПодписи</name>
<synonym>
<key>ru</key>
<value>Дата проверки подписи</value>
</synonym>
<type>
<types>Date</types>
<dateQualifiers/>
</type>
<toolTip>
<key>ru</key>
<value>Дата последней проверки подписи.</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<dataHistory>Use</dataHistory>
<fullTextSearch>Use</fullTextSearch>
</attributes>
<attributes uuid="ae8a1e69-ee1c-4efa-8d63-0279b18617f6">
<name>ПодписьВерна</name>
<synonym>
<key>ru</key>
<value>Подпись верна</value>
</synonym>
<type>
<types>Boolean</types>
</type>
<toolTip>
<key>ru</key>
<value>Результат последней проверки подписи.</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<dataHistory>Use</dataHistory>
<fullTextSearch>Use</fullTextSearch>
</attributes>
</tabularSections>
<tabularSections uuid="a7ec91a5-2ed4-4ecd-b794-fcd3bb5ea4a2">
<producedTypes>
@@ -1067,6 +1067,7 @@
<extInfo xsi:type="form:PageGroupExtInfo">
<group>Vertical</group>
<showTitle>auto</showTitle>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
@@ -1517,6 +1518,7 @@
<extInfo xsi:type="form:PageGroupExtInfo">
<group>Vertical</group>
<showTitle>auto</showTitle>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
@@ -1592,6 +1594,7 @@
<extInfo xsi:type="form:PageGroupExtInfo">
<group>Vertical</group>
<showTitle>auto</showTitle>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<visible>true</visible>
@@ -1843,6 +1846,40 @@
<common>true</common>
</edit>
</columns>
<columns>
<name>ЭтоНедоступнаяРоль</name>
<title>
<key>ru</key>
<value>Это недоступная роль</value>
</title>
<id>6</id>
<valueType>
<types>Boolean</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</columns>
<columns>
<name>ЭтоНесуществующаяРоль</name>
<title>
<key>ru</key>
<value>Это несуществующая роль</value>
</title>
<id>7</id>
<valueType>
<types>Boolean</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</columns>
</attributes>
<attributes>
<name>ПоказатьПодсистемыРолей</name>
@@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16421"></meta></head><body>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 11.00.9600.18427"></meta></head><body>
<h1>Группа внешних пользователей</h1>
<p>Просмотр и редактирование свойств группы <a href="Catalog.ВнешниеПользователи/Help">внешних пользователей</a>.</p>
<p class="Usual">Внешних пользователей можно объединять в <a href="Catalog.ГруппыВнешнихПользователей/Help">группы</a> по разным признакам. Группа внешних пользователей может включать однородных пользователей, например, контрагентов или физические лица. Также можно создать группу внешних пользователей, которая включает различных внешних пользователей со сходными свойствами, например, респондентов или участников опроса. Так удобнее настраивать права доступа.</p>
@@ -18,9 +18,13 @@
// Подготовка вспомогательных данных.
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
ВсеОбъектыАвторизации = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Родитель,
"ВсеОбъектыАвторизации");
ВсеОбъектыАвторизации = ?(ВсеОбъектыАвторизации = Неопределено, Ложь, ВсеОбъектыАвторизации);
Если Объект.Родитель = Справочники.ГруппыВнешнихПользователей.ВсеВнешниеПользователи
Или ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Родитель, "ВсеОбъектыАвторизации") = Истина Тогда
Если ВсеОбъектыАвторизации
Или Объект.Родитель = Справочники.ГруппыВнешнихПользователей.ВсеВнешниеПользователи Тогда
Объект.Родитель = Справочники.ГруппыВнешнихПользователей.ПустаяСсылка();
КонецЕсли;
@@ -96,7 +100,7 @@
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
ОбработатьИнтерфейсРолей("ЗаполнитьРоли", Объект.Роли);
ОбработатьИнтерфейсРолей("НастроитьИнтерфейсРолейПриСозданииФормы", Истина);
ОбработатьИнтерфейсРолей("НастроитьИнтерфейсРолейПриЧтенииНаСервере", Истина);
КонецПроцедуры
@@ -133,19 +137,30 @@
// Проверка наличия ролей в метаданных.
ПроверенныеРеквизитыОбъекта.Добавить("Роли.Роль");
ЭлементыДерева = Роли.ПолучитьЭлементы();
Для каждого Строка Из ЭлементыДерева Цикл
Если Строка.Пометка И Лев(Строка.Синоним, 1) = "?" Тогда
ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки,
"Роли[%1].РолиСиноним",
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Роль ""%1"" не найдена в метаданных.'"), Строка.Синоним),
"Роли",
ЭлементыДерева.Индекс(Строка),
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Роль ""%1"" в строке %%1 не найдена в метаданных.'"), Строка.Синоним));
КонецЕсли;
КонецЦикла;
Если Не Элементы.Роли.ТолькоПросмотр Тогда
ЭлементыДерева = Роли.ПолучитьЭлементы();
Для Каждого Строка Из ЭлементыДерева Цикл
Если Не Строка.Пометка Тогда
Продолжить;
КонецЕсли;
Если Строка.ЭтоНесуществующаяРоль Тогда
ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки,
"Роли[%1].РолиСиноним",
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Роль ""%1"" не найдена в метаданных.'"), Строка.Синоним),
"Роли",
ЭлементыДерева.Индекс(Строка),
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Роль ""%1"" в строке %%1 не найдена в метаданных.'"), Строка.Синоним));
КонецЕсли;
Если Строка.ЭтоНедоступнаяРоль Тогда
ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки,
"Роли[%1].РолиСиноним",
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Роль ""%1"" недоступна для внешних пользователей.'"), Строка.Синоним),
"Роли",
ЭлементыДерева.Индекс(Строка),
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Роль ""%1"" в строке %%1 недоступна для внешних пользователей.'"), Строка.Синоним));
КонецЕсли;
КонецЦикла;
КонецЕсли;
ОбщегоНазначенияКлиентСервер.СообщитьОшибкиПользователю(Ошибки, Отказ);
НепроверяемыеРеквизиты.Добавить("Объект");
@@ -325,7 +340,7 @@
Процедура ВыбратьНазначение(Команда)
ОписаниеОповещения = Новый ОписаниеОповещения("ПослеВыбораНазначения", ЭтотОбъект);
ПользователиСлужебныйКлиент.ВыбратьНазначение(ЭтотОбъект, Нстр("ru = 'Выбор вида пользователей'"), Ложь, Ложь, ОписаниеОповещения);
ПользователиСлужебныйКлиент.ВыбратьНазначение(ЭтотОбъект, НСтр("ru = 'Выбор вида пользователей'"), Ложь, Ложь, ОписаниеОповещения);
КонецПроцедуры
@@ -464,15 +479,15 @@
ПользователиСлужебный.ПриОпределенииДействийВФорме(Объект.Ссылка, ДействияВФорме);
// Проверка имен действий в форме.
Если Найти(", Просмотр, Редактирование,", ", " + ДействияВФорме.Роли + ",") = 0 Тогда
Если СтрНайти(", Просмотр, Редактирование,", ", " + ДействияВФорме.Роли + ",") = 0 Тогда
ДействияВФорме.Роли = "";
ИначеЕсли ПользователиСлужебный.ЗапретРедактированияРолей() Тогда
ДействияВФорме.Роли = "";
КонецЕсли;
Если Найти(", Просмотр, Редактирование,", ", " + ДействияВФорме.СоставГруппы + ",") = 0 Тогда
Если СтрНайти(", Просмотр, Редактирование,", ", " + ДействияВФорме.СоставГруппы + ",") = 0 Тогда
ДействияВФорме.СвойстваПользователяИБ = "";
КонецЕсли;
Если Найти(", Просмотр, Редактирование,", ", " + ДействияВФорме.СвойстваЭлемента + ",") = 0 Тогда
Если СтрНайти(", Просмотр, Редактирование,", ", " + ДействияВФорме.СвойстваЭлемента + ",") = 0 Тогда
ДействияВФорме.СвойстваЭлемента = "";
КонецЕсли;
@@ -731,11 +746,10 @@
Процедура ОбработатьИнтерфейсРолей(Действие, ОсновнойПараметр = Неопределено)
ПараметрыДействия = Новый Структура;
ПараметрыДействия.Вставить("ОсновнойПараметр", ОсновнойПараметр);
ПараметрыДействия.Вставить("Форма", ЭтотОбъект);
ПараметрыДействия.Вставить("КоллекцияРолей", КоллекцияРолей);
ПараметрыДействия.Вставить("ТипПользователей", Перечисления.ТипыПользователей.ВнешнийПользователь);
ПараметрыДействия.Вставить("СкрытьРольПолныеПрава", Истина);
ПараметрыДействия.Вставить("ОсновнойПараметр", ОсновнойПараметр);
ПараметрыДействия.Вставить("Форма", ЭтотОбъект);
ПараметрыДействия.Вставить("КоллекцияРолей", КоллекцияРолей);
ПараметрыДействия.Вставить("НазначениеРолей", "ДляВнешнихПользователей");
ПользователиСлужебный.ОбработатьИнтерфейсРолей(Действие, ПараметрыДействия);
@@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16421"></meta></head><body>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 11.00.9600.18427"></meta></head><body>
<p>Предназначен для ведения групп <a href="Catalog.ВнешниеПользователи/Help">внешних пользователей</a>.</p>
<p>Удобно использовать группы, когда в программе много внешних пользователей: </p>
<ul><li>
@@ -2,9 +2,11 @@
#Область ПрограммныйИнтерфейс
// Возвращает список реквизитов, которые не нужно редактировать
// с помощью обработки группового изменения объектов.
// Возвращает реквизиты объекта, которые не рекомендуется редактировать
// с помощью обработки группового изменения реквизитов.
//
// Возвращаемое значение:
// Массив - список имен реквизитов объекта.
Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт
НеРедактируемыеРеквизиты = Новый Массив;
@@ -1,5 +1,7 @@
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ОписаниеПеременных
Перем СтарыйРодитель; // Значение родителя группы до изменения для использования
// в обработчике события ПриЗаписи.
@@ -18,6 +20,8 @@
Перем ЭтоНовый; // Показывает, что был записан новый объект.
// Используются в обработчике события ПриЗаписи.
#КонецОбласти
#Область ОбработчикиСобытий
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
@@ -139,7 +143,7 @@
Если ОбщегоНазначенияКлиентСервер.СпискиЗначенийИдентичны(НазначениеВсеВнешниеПользователи, МассивНазначения) Тогда
ВызватьИсключение
НСтр("ru = 'Невозможно создать группу, совпадающую по назначению с предопределенной группой ""Все внешние пользователи"".'");
НСтр("ru = 'Невозможно создать группу, совпадающую по назначению с предопределенной группой ""Все внешние пользователи"".'");
КонецЕсли;
Запрос = Новый Запрос;
@@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16421"></meta></head><body>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 11.00.9600.18427"></meta></head><body>
<p>Список предназначен для выбора папок <a href="Catalog.ГруппыДоступа.Form.ФормаСписка/Help">групп доступа</a>.</p>
<p>Т.к. групп доступа может быть очень много и с похожими настройками ограничений прав, предусмотрена возможность создавать папки для упрощения поиска нужной <a href="Catalog.ГруппыДоступа.Form.ФормаЭлемента/Help">группы доступа</a> и понимания ограничений прав доступа в целом.</p>
<p><a href="Catalog.ГруппыДоступа/Help">Группы доступа</a> можно сгруппировать по различным признакам.</p>
@@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16421"></meta></head><body>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 11.00.9600.18427"></meta></head><body>
<p>Описание свойств папки <a href="Catalog.ГруппыДоступа/Help">групп доступа</a>.</p>
<p>Т.к. <a href="Catalog.ГруппыДоступа.Form.ФормаСписка/Help">групп доступа</a> может быть очень много и с похожими настройками ограничений прав, предусмотрена возможность создавать <a href="Catalog.ГруппыДоступа.Form.ФормаВыбораГруппы/Help">папки</a> для упрощения поиска нужной <a href="Catalog.ГруппыДоступа.Form.ФормаЭлемента/Help">группы доступа</a> и понимания ограничений прав доступа в целом.</p>
<p>Группы доступа можно сгруппировать в папки по различным признакам.</p>
@@ -420,6 +420,10 @@
<event>Drag</event>
<name>СписокПеретаскивание</name>
</handlers>
<handlers>
<event>BeforeRowChange</event>
<name>СписокПередНачаломИзменения</name>
</handlers>
<searchStringAddition>
<name>СписокСтрокаПоиска</name>
<id>44</id>
@@ -660,6 +664,9 @@
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>Items.Список.CurrentData.Описание</segments>
</dataPath>
<titleLocation>Left</titleLocation>
<extendedTooltip>
<name>ОписаниеExtendedTooltip</name>
@@ -720,6 +727,9 @@
<edit>
<common>true</common>
</edit>
<notDefaultUseAlwaysAttributes xsi:type="form:DataPath">
<segments>Список.IsFolder</segments>
</notDefaultUseAlwaysAttributes>
<notDefaultUseAlwaysAttributes xsi:type="form:DataPath">
<segments>Список.Ref</segments>
</notDefaultUseAlwaysAttributes>
@@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16421"></meta></head><body>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 11.00.9600.18427"></meta></head><body>
<p>Список групп доступа предназначен для ведения <a href="Catalog.ГруппыДоступа/Help">групп доступа</a> и позволяет просмотреть имеющиеся настройки прав с ограничениями.</p>
<p>Список групп доступа открывается по команде <strong>Группы доступа</strong> из раздела <strong>Администрирование - Настройки пользователей и прав</strong>. Для быстрого перехода к списку групп доступа, созданных на базе профиля групп доступа, можно воспользоваться командой <strong>Группы доступа</strong> на панели навигации профиля групп доступа.</p>
<p>Группа доступа определяет совокупность действий с данными программы, которые могут выполнять участники этой группы. Как правило, группы доступа соответствуют различным должностным обязанностям (или видам деятельности) <a href="Catalog.Пользователи/Help">пользователей</a> программы. Пользователь может входить одновременно в одну или несколько групп доступа, которые в совокупности образуют его <a href="CommonForm.ПраваДоступа/Help">персональные настройки прав доступа</a>.</p>
@@ -13,6 +13,6 @@
<div><strong>Ответственный</strong> - в этой колонке выводится <a href="Catalog.Пользователи.Form.ФормаЭлемента/Help">пользователь</a>, ответственный за данную группу доступа.</div></li></ul><h3>Ввод группы доступа</h3>
<ul><li>Нажмите <strong>Создать</strong>, заполните необходимые <a href="Catalog.ГруппыДоступа.Form.ФормаЭлемента/Help">поля</a>.</li></ul><h3>Ввод папки групп доступа</h3>
<ul><li>В списке предусмотрена возможность создавать папки (группы) для упрощения поиска нужной группы доступа и понимания ограничений прав доступа в целом, т.к. групп доступа может быть очень много и с похожими настройками ограничений прав.
</li><li>Нажмите <strong>Создать группу</strong>, введите <strong>Наименование</strong> <a href="Catalog.ГруппыДоступа.Form.ФормаГруппы/Help">папки</a>.</li></ul><h3><a name="#B">Изменение</a> состава группы доступа</h3>
</li><li>Нажмите <strong>Создать группу</strong>, введите <strong>Наименование</strong> <a href="Catalog.ГруппыДоступа.Form.ФормаГруппы/Help">папки</a>.</li></ul><h3><a name="B">Изменение</a> состава группы доступа</h3>
<ul><li>Выберите нужную <a href="Catalog.ГруппыДоступа.Form.ФормаЭлемента/Help">группу доступа</a>, нажмите <strong>Еще - Изменить</strong>.</li></ul><h3>См. также:</h3>
<ul><li><a href="v8help://frame/form_common">Работа с формами</a></li></ul></body></html>
@@ -157,6 +157,23 @@
КонецПроцедуры
&НаКлиенте
Процедура СписокПередНачаломИзменения(Элемент, Отказ)
ТекущиеДанные = Элемент.ТекущиеДанные;
Если ТекущиеДанные = Неопределено
Или ТекущиеДанные.ЭтоГруппа Тогда
Возврат;
КонецЕсли;
Отказ = Истина;
ПараметрыФормы = Новый Структура("Ключ", ТекущиеДанные.Ссылка);
ОткрытьФорму("Справочник.ГруппыДоступа.ФормаОбъекта", ПараметрыФормы, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура СписокПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле)
@@ -767,6 +767,7 @@
<extInfo xsi:type="form:PageGroupExtInfo">
<group>Vertical</group>
<showTitle>auto</showTitle>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
@@ -1509,6 +1510,7 @@
<extInfo xsi:type="form:PageGroupExtInfo">
<group>Vertical</group>
<showTitle>auto</showTitle>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
@@ -1586,6 +1588,7 @@
<extInfo xsi:type="form:PageGroupExtInfo">
<group>Vertical</group>
<showTitle>auto</showTitle>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<visible>true</visible>
@@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16421"></meta></head><body>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 11.00.9600.18427"></meta></head><body>
<p>Описание свойств группы доступа.</p>
<p>Группа доступа определяет совокупность действий с данными программы, которые могут выполнять участники этой группы. Как правило, <a href="Catalog.ГруппыДоступа.Form.ФормаСписка/Help">группы доступа</a> соответствуют различным должностным обязанностям (или видам деятельности) пользователей программы. Пользователь может входить одновременно в одну или несколько групп доступа, которые в совокупности образуют его персональные настройки прав доступа.</p>
<p>С помощью группы доступа можно задавать и администрировать общие настройки прав доступа для некоторой группы пользователей, выполняющих однотипные функции в программе, например, <strong>Бухгалтеры</strong>.</p>
@@ -12,14 +12,14 @@
<ul><li>В поле <strong>Группа (папка)</strong> выберите папку из <a href="Catalog.ГруппыДоступа.Form.ФормаВыбораГруппы/Help">списка</a>.  </li></ul></li><li>Поле <strong>Назначение</strong> заполняется программой автоматически из профиля групп доступа, например, <strong>Пользователи</strong>. Это определяет состав участников группы доступа.
<ul><li>В зависимости от настроек профиля в группу доступа могут входить разные типы пользователей: <a href="Catalog.Пользователи/Help">пользователи</a> и <a href="Catalog.ГруппыПользователей/Help">группы пользователей</a>. В составе участников группы доступа могут быть также перечислены <a href="Catalog.ВнешниеПользователи/Help">внешние пользователи</a> и <a href="Catalog.ГруппыВнешнихПользователей/Help">группы внешних пользователей</a> (это может понадобиться для проведения анкетирования, например). </li></ul></li><li>На вкладке <a href="#1">Участники</a> заполните список участников группы доступа, укажите ответственного за группу доступа.
</li><li>На вкладке <a href="#2">Ограничения доступа</a> необходимо произвести дополнительные настройки прав доступа.
</li><li>На вкладке <strong>Описание</strong> можно ввести подробную информацию о группе доступа.</li></ul><h3><a name="#1">Участники</a></h3>
</li><li>На вкладке <strong>Описание</strong> можно ввести подробную информацию о группе доступа.</li></ul><h3><a name="1">Участники</a></h3>
<ul><li>
<div>В зависимости от указанного в поле <strong>Назначение</strong> состава группы доступа на этой вкладке будут доступны соответствующие списки пользователей для выбора участников группы доступа. </div>
<ul><li>
<div>Для добавления сразу нескольких участников нажмите <strong>Подобрать</strong>, для добавления одного участника нажмите <strong>Еще - Добавить</strong>. Выберите из предлагаемого списка нужных участников группы доступа. </div>
</li><li>
<div>Для удаления одного или нескольких ненужных участников группы доступа выделите их, нажмите <img src="StdPicture.Delete" width="16" height="16"></img> <strong>Удалить</strong>.</div></li></ul></li><li>
<div>Заполните поле <strong>Ответственный</strong> (выберите из списка <strong>Пользователи</strong>). Пользователь, указанный в группе доступа как <strong>Ответственный</strong>, может изменять состав участников данной группы. </div></li></ul><h3><a name="#2">Ограничения доступа</a></h3>
<div>Для удаления одного или нескольких ненужных участников группы доступа выделите их, нажмите <strong>Еще - Удалить</strong>.</div></li></ul></li><li>
<div>Заполните поле <strong>Ответственный</strong> (выберите из списка <strong>Пользователи</strong>). Пользователь, указанный в группе доступа как <strong>Ответственный</strong>, может изменять состав участников данной группы. </div></li></ul><h3><a name="2">Ограничения доступа</a></h3>
<ul><li>На вкладке <strong>Ограничения доступа</strong> необходимо указать дополнительные настройки прав доступа. В зависимости от настроек профиля, в группе доступа ограничения доступа только уточняются. Иногда ограничения доступа в профиле настроены так, что уточнений не требуется. В таких случаях вкладка <strong>Ограничения доступа</strong> становится недоступной.
</li><li>Состав видов доступа, перечисленных на этой вкладке, зависит от профиля, выбранного в поле <strong>Профиль</strong>. Кроме того, профиль также определяет, как именно действует настройка вида доступа: она разрешает только просмотр или также включает возможность редактирования данных.  Например, в случае если профиль групп доступа включает в себя роль для чтения документов <strong>Поступление товаров</strong>, то пользователи получают возможность просматривать документы по заданным организациям. Если же в профиле содержится роль для добавления и изменения, то появляется возможность редактировать такие документы.
</li><li>С помощью поля <strong>Вид доступа</strong> можно задать границы области данных, с которой разрешено работать участникам группы доступа. Вид доступа - это некоторое правило, по которому "разрешается" доступ к данным программы. Например, с помощью вида доступа <strong>Организации</strong> можно разрешить работать пользователям только с документами  по конкретным организациям, или наоборот, скрыть от них документы некоторых организаций.
@@ -193,8 +193,8 @@
УстановитьПривилегированныйРежим(Истина);
ПрофильПомеченНаУдаление = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(
Объект.Профиль, "ПометкаУдаления") = Истина;
ПрофильПомеченНаУдаление = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Профиль, "ПометкаУдаления");
ПрофильПомеченНаУдаление = ?(ПрофильПомеченНаУдаление = Неопределено, Ложь, ПрофильПомеченНаУдаление);
УстановитьПривилегированныйРежим(Ложь);
@@ -1285,7 +1285,9 @@
ПараметрыФормы.Вставить("Назначение", Назначение.ВыгрузитьЗначения());
Если СправочникВнешниеПользователиДоступен Тогда
Если Не ИспользоватьВнешнихПользователей Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Ведение внешних пользователей отключено в настройках программы.'"));
ИначеЕсли СправочникВнешниеПользователиДоступен Тогда
ОткрытьФорму("Справочник.ВнешниеПользователи.ФормаВыбора", ПараметрыФормы, Элементы.Пользователи);
Иначе
ПоказатьПредупреждение(, НСтр("ru = 'Недостаточно прав для выбора внешних пользователей.'"));
@@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16421"></meta></head><body>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 11.00.9600.18427"></meta></head><body>
<p><a href="Catalog.ГруппыДоступа.Form.ФормаСписка/Help">Группы доступа</a> предназначены для настройки прав и ограничений прав доступа конкретным пользователям и группам пользователей программы.</p>
<p>Программа позволяет настроить доступ пользователей к различным функциям, спискам и документам. Предусмотрены предопределенные наборы ролей. Кроме этого, имеется возможность самостоятельной настройки доступа. Управление доступом осуществляет администратор. При этом пользователь, назначенный ответственным в <a href="Catalog.ГруппыДоступа.Form.ФормаЭлемента/Help">группе доступа</a>, может изменять состав своей группы доступа.</p>
<p>Набор прав и возможности по их ограничению определяются заданным <a href="Catalog.ПрофилиГруппДоступа/Help">профилем групп доступа</a>. </p>
@@ -2,9 +2,11 @@
#Область ПрограммныйИнтерфейс
// Возвращает список реквизитов, которые не нужно редактировать
// с помощью обработки группового изменения объектов.
// Возвращает реквизиты объекта, которые не рекомендуется редактировать
// с помощью обработки группового изменения реквизитов.
//
// Возвращаемое значение:
// Массив - список имен реквизитов объекта.
Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт
НеРедактируемыеРеквизиты = Новый Массив;
@@ -92,13 +94,13 @@
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ГруппыДоступа.Ссылка
| ГруппыДоступа.Ссылка КАК Ссылка
|ИЗ
| Справочник.ГруппыДоступа КАК ГруппыДоступа
|ГДЕ
| (ГруппыДоступа.Профиль = &Профиль
| ИЛИ &Профиль = ЗНАЧЕНИЕ(Справочник.ПрофилиГруппДоступа.Администратор)
| И ГруппыДоступа.Ссылка = ЗНАЧЕНИЕ(Справочник.ГруппыДоступа.Администраторы))";
| НЕ(ГруппыДоступа.Профиль <> &Профиль
| И НЕ(&Профиль = ЗНАЧЕНИЕ(Справочник.ПрофилиГруппДоступа.Администратор)
| И ГруппыДоступа.Ссылка = ЗНАЧЕНИЕ(Справочник.ГруппыДоступа.Администраторы)))";
Запрос.УстановитьПараметр("Профиль", Профиль.Ссылка);
Выборка = Запрос.Выполнить().Выбрать();
@@ -179,7 +181,7 @@
// а функция вернет Неопределено, если родитель не найден.
//
// Возвращаемое значение:
// СправочникСсылка.ГруппыДоступа
// СправочникСсылка.ГруппыДоступа.
//
Функция РодительПерсональныхГруппДоступа(Знач НеСоздавать = Ложь, НаименованиеГруппыЭлементов = Неопределено) Экспорт
@@ -1,5 +1,7 @@
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ОписаниеПеременных
Перем СтарыйПрофиль; // Профиль группы доступа до изменения
// для использования в обработчике события ПриЗаписи.
@@ -9,6 +11,8 @@
Перем СтарыеУчастники; // Участники группы доступа до изменения
// для использования в обработчике события ПриЗаписи.
#КонецОбласти
#Область ОбработчикиСобытий
Процедура ПередЗаписью(Отказ)
@@ -90,14 +94,15 @@
// При снятии пометки удаления с группы доступа выполняется
// снятие пометки удаления с профиля этой группы доступа.
Если НЕ ПометкаУдаления
И СтараяПометкаУдаления = Истина
И ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Профиль, "ПометкаУдаления") = Истина Тогда
ЗаблокироватьДанныеДляРедактирования(Профиль);
ПрофильОбъект = Профиль.ПолучитьОбъект();
ПрофильОбъект.ПометкаУдаления = Ложь;
ПрофильОбъект.Записать();
Если НЕ ПометкаУдаления И СтараяПометкаУдаления = Истина Тогда
ПометкаУдаленияПрофиля = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Профиль, "ПометкаУдаления");
ПометкаУдаленияПрофиля = ?(ПометкаУдаленияПрофиля = Неопределено, Ложь, ПометкаУдаленияПрофиля);
Если ПометкаУдаленияПрофиля Тогда
ЗаблокироватьДанныеДляРедактирования(Профиль);
ПрофильОбъект = Профиль.ПолучитьОбъект();
ПрофильОбъект.ПометкаУдаления = Ложь;
ПрофильОбъект.Записать();
КонецЕсли;
КонецЕсли;
КонецЕсли;
@@ -2,9 +2,11 @@
#Область ПрограммныйИнтерфейс
// Возвращает список реквизитов, которые не нужно редактировать
// с помощью обработки группового изменения объектов.
// Возвращает реквизиты объекта, которые не рекомендуется редактировать
// с помощью обработки группового изменения реквизитов.
//
// Возвращаемое значение:
// Массив - список имен реквизитов объекта.
Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт
Результат = Новый Массив;
@@ -854,6 +854,7 @@
<extInfo xsi:type="form:PageGroupExtInfo">
<group>Vertical</group>
<showTitle>auto</showTitle>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
@@ -930,6 +931,7 @@
<extInfo xsi:type="form:PageGroupExtInfo">
<group>Vertical</group>
<showTitle>auto</showTitle>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<visible>true</visible>
@@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16421"></meta></head><body>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 11.00.9600.18427"></meta></head><body>
<h1>Группа пользователей</h1>
<p>Просмотр и редактирование свойств группы <a href="Catalog.Пользователи/Help">пользователей</a>.</p>
<p>Пользователей можно объединять в <a href="Catalog.ГруппыПользователей/Help">группы</a> по разным признакам, например, по должностям или в соответствии со структурой предприятия. Это ускоряет настройку прав доступа - можно настроить их одновременно нескольким пользователям, которые выполняют сходные функции.</p>
@@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16421"></meta></head><body>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 11.00.9600.18427"></meta></head><body>
<p>Предназначен для ведения групп пользователей.</p>
<p>Удобно использовать группы, когда в программе много <a href="Catalog.Пользователи/Help">пользователей</a>:</p>
<ul><li>
@@ -1,5 +1,7 @@
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ОписаниеПеременных
Перем СтарыйРодитель; // Значение родителя группы до изменения для использования
// в обработчике события ПриЗаписи.
@@ -10,6 +12,8 @@
Перем ЭтоНовый; // Показывает, что был записан новый объект.
// Используются в обработчике события ПриЗаписи.
#КонецОбласти
#Область ОбработчикиСобытий
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
@@ -6,10 +6,6 @@
<items xsi:type="form:Table">
<name>ВсеПользователи</name>
<id>1</id>
<title>
<key>ru</key>
<value>Команды нет в быстром доступе у пользователей</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
@@ -417,7 +413,6 @@
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>Vertical</group>
<behavior>Auto</behavior>
<representation>NormalSeparation</representation>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<showTitle>auto</showTitle>
@@ -430,7 +425,7 @@
<id>13</id>
<title>
<key>ru</key>
<value>Команда есть в быстром доступе у пользователей</value>
<value>Пользователи, для которых видна команда</value>
</title>
<visible>true</visible>
<enabled>true</enabled>
@@ -772,6 +767,7 @@
<event>OnCreateAtServer</event>
<name>ПриСозданииНаСервере</name>
</handlers>
<width>60</width>
<windowOpeningMode>LockOwner</windowOpeningMode>
<saveWindowSettings>true</saveWindowSettings>
<autoUrl>true</autoUrl>
@@ -875,7 +871,7 @@
<name>УстановитьДоступДляВсехПользователей</name>
<title>
<key>ru</key>
<value>Добавить все >></value>
<value>>></value>
</title>
<id>2</id>
<toolTip>
@@ -897,7 +893,7 @@
<name>УстановитьКомандуДляВыделенныхПользователей</name>
<title>
<key>ru</key>
<value>Добавить ></value>
<value>></value>
</title>
<id>3</id>
<toolTip>
@@ -919,7 +915,7 @@
<name>УбратьДоступККомандеУВсехПользователей</name>
<title>
<key>ru</key>
<value>&lt;&lt; Удалить все</value>
<value>&lt;&lt;</value>
</title>
<id>4</id>
<toolTip>
@@ -941,7 +937,7 @@
<name>УбратьДоступККомандеУВыделенныхПользователей</name>
<title>
<key>ru</key>
<value>&lt; Удалить</value>
<value>&lt;</value>
</title>
<id>5</id>
<toolTip>
@@ -6,7 +6,7 @@
Возврат;
КонецЕсли;
Заголовок = СтрШаблон(НСтр("ru = 'Быстрый доступ к команде ""%1""'"), Параметры.ПредставлениеКоманды);
Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Быстрый доступ к команде ""%1""'"), Параметры.ПредставлениеКоманды);
ЗаполнитьТаблицы();
@@ -276,36 +276,41 @@
НачатьТранзакцию();
Объект = ВыделеннаяСтрока.ПолучитьОбъект();
Если ВариантПубликации = "Используется" Тогда
Объект.Публикация = Перечисления.ВариантыПубликацииДополнительныхОтчетовИОбработок.Используется;
ИначеЕсли ВариантПубликации = "РежимОтладки" Тогда
Объект.Публикация = Перечисления.ВариантыПубликацииДополнительныхОтчетовИОбработок.РежимОтладки;
Иначе
Объект.Публикация = Перечисления.ВариантыПубликацииДополнительныхОтчетовИОбработок.Отключена;
КонецЕсли;
Объект.ДополнительныеСвойства.Вставить("ПроверкаСписка");
Если Не Объект.ПроверитьЗаполнение() Тогда
ОтменитьТранзакцию();
Элементы.Список.Обновить();
Попытка
Объект = ВыделеннаяСтрока.ПолучитьОбъект();
Если ВариантПубликации = "Используется" Тогда
Объект.Публикация = Перечисления.ВариантыПубликацииДополнительныхОтчетовИОбработок.Используется;
ИначеЕсли ВариантПубликации = "РежимОтладки" Тогда
Объект.Публикация = Перечисления.ВариантыПубликацииДополнительныхОтчетовИОбработок.РежимОтладки;
Иначе
Объект.Публикация = Перечисления.ВариантыПубликацииДополнительныхОтчетовИОбработок.Отключена;
КонецЕсли;
ПредставлениеОшибки = "";
МассивСообщений = ПолучитьСообщенияПользователю(Истина);
Для Каждого СообщениеПользователю Из МассивСообщений Цикл
ПредставлениеОшибки = ПредставлениеОшибки + СообщениеПользователю.Текст + Символы.ПС;
КонецЦикла;
Объект.ДополнительныеСвойства.Вставить("ПроверкаСписка");
Если Не Объект.ПроверитьЗаполнение() Тогда
ОтменитьТранзакцию();
Элементы.Список.Обновить();
ПредставлениеОшибки = "";
МассивСообщений = ПолучитьСообщенияПользователю(Истина);
Для Каждого СообщениеПользователю Из МассивСообщений Цикл
ПредставлениеОшибки = ПредставлениеОшибки + СообщениеПользователю.Текст + Символы.ПС;
КонецЦикла;
РазблокироватьДанныеДляРедактирования(ВыделеннаяСтрока);
СтандартныеПодсистемыКлиентСервер.ВывестиПредупреждение(РезультатВыполнения, ПредставлениеОшибки);
Возврат РезультатВыполнения;
КонецЕсли;
Объект.Записать();
РазблокироватьДанныеДляРедактирования(ВыделеннаяСтрока);
СтандартныеПодсистемыКлиентСервер.ВывестиПредупреждение(РезультатВыполнения, ПредставлениеОшибки);
Возврат РезультатВыполнения;
КонецЕсли;
Объект.Записать();
ЗафиксироватьТранзакцию();
РазблокироватьДанныеДляРедактирования(ВыделеннаяСтрока);
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
КонецЦикла;
@@ -307,6 +307,7 @@
<extInfo xsi:type="form:PageGroupExtInfo">
<group>Vertical</group>
<showTitle>auto</showTitle>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<visible>true</visible>
@@ -716,6 +717,63 @@
<currentRowUse>Auto</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>КоманднаяПанельОбъектКоманды</name>
<id>402</id>
<items xsi:type="form:Button">
<name>ВыполнитьКоманду</name>
<id>404</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ВыполнитьКомандуРасширеннаяПодсказка</name>
<id>405</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<commandName>Form.Command.ВыполнитьКоманду</commandName>
<buttonImportance>Normal</buttonImportance>
<representation>Auto</representation>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<placementArea>UserCmds</placementArea>
<representationInContextMenu>Auto</representationInContextMenu>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Командная панель объект команды</value>
</title>
<toolTip>
<key>ru</key>
<value>Командная панель объект команды</value>
</toolTip>
<extendedTooltip>
<name>КоманднаяПанельОбъектКомандыРасширеннаяПодсказка</name>
<id>403</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>CommandBar</type>
<extInfo xsi:type="form:CommandBarExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</items>
<items xsi:type="form:Table">
<name>ОбъектКоманды</name>
<id>147</id>
@@ -1180,6 +1238,7 @@
<extInfo xsi:type="form:PageGroupExtInfo">
<group>Vertical</group>
<showTitle>auto</showTitle>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
@@ -1287,6 +1346,7 @@
<type>Page</type>
<extInfo xsi:type="form:PageGroupExtInfo">
<showTitle>auto</showTitle>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
@@ -1836,6 +1896,7 @@
<extInfo xsi:type="form:PageGroupExtInfo">
<group>Vertical</group>
<showTitle>auto</showTitle>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<visible>true</visible>
@@ -1890,6 +1951,7 @@
<extInfo xsi:type="form:PageGroupExtInfo">
<group>Vertical</group>
<showTitle>auto</showTitle>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
@@ -2008,6 +2070,7 @@
<extInfo xsi:type="form:PageGroupExtInfo">
<group>Vertical</group>
<showTitle>auto</showTitle>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
@@ -2080,6 +2143,7 @@
<extInfo xsi:type="form:PageGroupExtInfo">
<group>Vertical</group>
<showTitle>auto</showTitle>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
@@ -2151,6 +2215,7 @@
<extInfo xsi:type="form:PageGroupExtInfo">
<group>Vertical</group>
<showTitle>auto</showTitle>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<visible>true</visible>
@@ -2291,6 +2356,7 @@
<extInfo xsi:type="form:PageGroupExtInfo">
<group>Vertical</group>
<showTitle>auto</showTitle>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
@@ -2372,6 +2438,7 @@
<extInfo xsi:type="form:PageGroupExtInfo">
<group>Vertical</group>
<showTitle>auto</showTitle>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<visible>true</visible>
@@ -2411,8 +2478,8 @@
<title>
<key>ru</key>
<value>Для того, чтобы &quot;изолировать&quot; возможность обращения к внешних ресурсам из кода дополнительного отчета
или обработки только вышеперчисленными операциями, требуется&lt;link int://sp-on> включить использование профилей&lt;/> &lt;link int://sp-on>безопасности&lt;/>.
При этом для дополинтельного отчета или обработки будет создан &quot;персональный&quot; профиль безопасности, содержащий
или обработки только вышеперечисленными операциями, требуется &lt;link int://sp-on>включить использование профилей безопасности&lt;/>.
При этом для дополнительного отчета или обработки будет создан &quot;персональный&quot; профиль безопасности, содержащий
разрешения только на выполнение явно одобренных операций и подключение дополнительного отчета или обработке к
программе без установки безопасного режима больше не будет требоваться.</value>
</title>
@@ -2483,7 +2550,7 @@
</extInfo>
</items>
<items xsi:type="form:Decoration">
<name>ДекормацияРазрешенияСмТакже</name>
<name>ДекорацияРазрешенияСмТакже</name>
<id>311</id>
<title>
<key>ru</key>
@@ -2495,7 +2562,7 @@
<common>true</common>
</userVisible>
<extendedTooltip>
<name>ДекормацияРазрешенияСмТакжеРасширеннаяПодсказка</name>
<name>ДекорацияРазрешенияСмТакжеРасширеннаяПодсказка</name>
<id>313</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
@@ -2505,7 +2572,7 @@
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ДекормацияРазрешенияСмТакжеКонтекстноеМеню</name>
<name>ДекорацияРазрешенияСмТакжеКонтекстноеМеню</name>
<id>312</id>
<autoFill>true</autoFill>
</contextMenu>
@@ -2539,6 +2606,7 @@
<extInfo xsi:type="form:PageGroupExtInfo">
<group>Vertical</group>
<showTitle>auto</showTitle>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
@@ -2744,6 +2812,7 @@
<extInfo xsi:type="form:PageGroupExtInfo">
<group>Vertical</group>
<showTitle>auto</showTitle>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
@@ -3061,6 +3130,7 @@
<extInfo xsi:type="form:PageGroupExtInfo">
<group>Vertical</group>
<showTitle>auto</showTitle>
<scrollOnCompress>false</scrollOnCompress>
</extInfo>
</items>
<visible>true</visible>
@@ -4133,10 +4203,6 @@
<value>Настроить быстрый доступ...</value>
</title>
<id>3</id>
<toolTip>
<key>ru</key>
<value> </value>
</toolTip>
<use>
<common>true</common>
</use>
@@ -4155,10 +4221,6 @@
<value>Настроить расписание...</value>
</title>
<id>4</id>
<toolTip>
<key>ru</key>
<value> </value>
</toolTip>
<use>
<common>true</common>
</use>
@@ -4293,6 +4355,32 @@
<currentRowUse>DontUse</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</formCommands>
<formCommands>
<name>ВыполнитьКоманду</name>
<title>
<key>ru</key>
<value>Выполнить</value>
</title>
<id>10</id>
<toolTip>
<key>ru</key>
<value>Выполнить выбранную команду обработки (отчета).</value>
</toolTip>
<use>
<common>true</common>
</use>
<picture xsi:type="core:PictureRef">
<picture>StdPicture.GenerateReport</picture>
</picture>
<action xsi:type="form:FormCommandHandlerContainer">
<handler>
<name>ВыполнитьКоманду</name>
</handler>
</action>
<representation>TextPicture</representation>
<currentRowUse>DontUse</currentRowUse>
<selectedRowsUse>Auto</selectedRowsUse>
</formCommands>
<commandInterface>
<navigationPanel/>
<commandBar>
@@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16421"></meta></head><body>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 11.00.9600.18427"></meta></head><body>
<p>Регистрация в программе <a href="Catalog.ДополнительныеОтчетыИОбработки/Help">дополнительных отчетов и обработок</a>.</p>
<p>Часть сведений в карточке дополнительного отчета или обработки программа проставляет по умолчанию, они указаны разработчиком в файле внешней обработки или отчета и их невозможно изменить (список команд и дополнительная информация). Каждая дополнительная обработка может предоставлять одну или несколько команд, размещаемых в окнах объектов программы или в разделах программы.</p>
<p>Существуют два типа дополнительных отчетов и обработок: </p>
@@ -33,16 +33,16 @@
</li><li><strong>Имя объекта</strong>;
</li><li><strong>Описание</strong> - подробная информация о дополнительном отчете или обработке.</li></ul></li><li><strong>Группа</strong> - включите дополнительную обработку или отчет в одну из групп. Выберите нужную группу из списка. Группы помогают упорядочить дополнительные отчеты и обработки.</li></ul><h3>Загрузка из файла</h3>
<ul><li>С помощью команды <strong>Загрузить из файла</strong> можно обновить обработку во внутреннем хранилище программы. Вид загружаемой обработки должен соответствовать текущему виду обработки. Укажите путь к файлу, нажмите <strong>Открыть</strong>.</li></ul><h3>Выгрузка в файл</h3>
<ul><li>С помощью команды <strong>Выгрузить в файл</strong> можно выгрузить дополнительный отчет или обработку из хранилища в файл на диске компьютера. Укажите папку на компьютере, нажмите <strong>Сохранить</strong>. Имя файлу присваивается автоматически, имеется возможность его переименовать.</li></ul><h3><a name="#1">Режим работы</a></h3>
<ul><li>С помощью команды <strong>Выгрузить в файл</strong> можно выгрузить дополнительный отчет или обработку из хранилища в файл на диске компьютера. Укажите папку на компьютере, нажмите <strong>Сохранить</strong>. Имя файлу присваивается автоматически, имеется возможность его переименовать.</li></ul><h3><a name="1">Режим работы</a></h3>
<ul><li>Как правило, большинство обработок должны выполняться в безопасном режиме. Это гарантирует, что они не содержат "ненадежный" программный код, который выполняется на сервере.
</li><li>Однако некоторые обработки могут требовать выполнения в небезопасном режиме. Такие обработки следует загружать только из надежных источников (поставщиков) или перед загрузкой самостоятельно выполнять их аудит.
</li><li>Подробнее о безопасном режиме работы см. документацию по платформе 1С:Предприятие.</li></ul><h3>Особенности регистрации <a name="#A">назначаемых</a> дополнительных обработок и отчетов</h3>
</li><li>Подробнее о безопасном режиме работы см. документацию по платформе 1С:Предприятие.</li></ul><h3>Особенности регистрации <a name="A">назначаемых</a> дополнительных обработок и отчетов</h3>
<ul><li>Для дополнительных обработок или отчетов, предназначенных для работы со списками или документами программы, можно выбрать из списка объекты, в которых будут доступны команды обработки или отчета.
<ul><li><strong>Назначение</strong> -  для выбора объектов программы нажмите ссылку, которая принимает значение <strong>Не определено</strong> (если ни одного объекта не выбрано) или перечисляет выбранные объекты. С помощью флажков выберите нужные объекты.
</li><li><strong>Показывать</strong> - команды обработок или отчетов могут быть доступны:
<ul><li>из списка выбранных объектов, если установлен флажок <strong>В списках</strong>; 
</li><li>из окна самого объекта, если установлен флажок <strong>В формах элементов справочников и документов</strong>. Можно установить оба флажка одновременно.</li></ul></li></ul></li><li>
<div>на вкладке <strong>Команды</strong> перечень команд заполняется по умолчанию из списка, заполненного разработчиком. Эти команды становятся доступными в указанном в назначении списке или документе при подключении дополнительного отчета или обработки.</div></li></ul><h3>Особенности регистрации <a name="#B">глобальных</a> (общих) дополнительных отчетов и обработок</h3>
<div>на вкладке <strong>Команды</strong> перечень команд заполняется по умолчанию из списка, заполненного разработчиком. Эти команды становятся доступными в указанном в назначении списке или документе при подключении дополнительного отчета или обработки.</div></li></ul><h3>Особенности регистрации <a name="B">глобальных</a> (общих) дополнительных отчетов и обработок</h3>
<ul><li>Для обработок и отчетов, которые вызываются из командного интерфейса (не прикрепляются к объектам конфигурации), необходимо указать разделы интерфейса, в которых команды обработок будут доступны через команды <strong>Дополнительные отчеты</strong> и <strong>Дополнительные обработки</strong>.
<ul><li><strong>Размещение</strong> - для выбора разделов нажмите ссылку, которая принимает значение <strong>Не определено</strong> (если ни одного раздела не выбрано) или перечисляет выбранные разделы. С помощью флажков выберите нужные разделы программы, для подтверждения настройки нажмите <strong>ОК</strong>.</li></ul></li><li>Перечень команд и их настройки могут размещаться на отдельной вкладке <strong>Команды</strong>. На вкладке выводится:
<ul><li><strong>Наименование</strong> - полное наименование команды;
@@ -1,6 +1,10 @@
#Область ОписаниеПеременных
&НаКлиенте
Перем КлиентскийКэш;
#КонецОбласти
#Область ОбработчикиСобытийФормы
&НаСервере
@@ -150,7 +154,7 @@
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Ссылка", ТекущийОбъект.Ссылка);
Запрос.Текст =
"ВЫБРАТЬ
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ДанныеРегистра.ИдентификаторКоманды,
| ДанныеРегистра.Пользователь
|ИЗ
@@ -262,9 +266,9 @@
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияВключениеПрофилейБезопасностиНадписьОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылка, СтандартнаяОбработка)
Процедура ДекорацияВключениеПрофилейБезопасностиНадписьОбработкаНавигационнойСсылки(Элемент, Ссылка, СтандартнаяОбработка)
Если НавигационнаяСсылка = "int://sp-on" Тогда
Если Ссылка = "int://sp-on" Тогда
ОткрытьФорму(
"Обработка.НастройкаРазрешенийНаИспользованиеВнешнихРесурсов.Форма.НастройкиИспользованияПрофилейБезопасности",
@@ -429,6 +433,35 @@
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыполнитьКоманду(Команда)
СтрокаТаблицыКоманд = Элементы.ОбъектКоманды.ТекущиеДанные;
Если СтрокаТаблицыКоманд = Неопределено Тогда
Возврат;
КонецЕсли;
Если Не СтрокаТаблицыКоманд.ВариантЗапуска = ПредопределенноеЗначение("Перечисление.СпособыВызоваДополнительныхОбработок.ОткрытиеФормы")
И Не СтрокаТаблицыКоманд.ВариантЗапуска = ПредопределенноеЗначение("Перечисление.СпособыВызоваДополнительныхОбработок.ВызовКлиентскогоМетода")
И Не СтрокаТаблицыКоманд.ВариантЗапуска = ПредопределенноеЗначение("Перечисление.СпособыВызоваДополнительныхОбработок.ВызовСерверногоМетода")
И Не СтрокаТаблицыКоманд.ВариантЗапуска = ПредопределенноеЗначение("Перечисление.СпособыВызоваДополнительныхОбработок.СценарийВБезопасномРежиме") Тогда
Возврат;
КонецЕсли;
Контекст = Новый Структура;
Контекст.Вставить("ИдентификаторВыполняемойКоманды", СтрокаТаблицыКоманд.Идентификатор);
Обработчик = Новый ОписаниеОповещения("ВыполнитьКомандуПослеПодтвержденияЗаписи", ЭтотОбъект, Контекст);
Если Объект.Ссылка.Пустая() Или Модифицированность Тогда
ТекстВопроса = НСтр("ru = 'Для выполнения команды необходимо записать данные.'");
Кнопки = Новый СписокЗначений;
Кнопки.Добавить("ЗаписатьИПродолжить", НСтр("ru = 'Записать и продолжить'"));
Кнопки.Добавить(КодВозвратаДиалога.Отмена);
ПоказатьВопрос(Обработчик, ТекстВопроса, Кнопки);
Иначе
ВыполнитьОбработкуОповещения(Обработчик, "ПродолжитьБезЗаписи");
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
@@ -480,13 +513,10 @@
Если ПараметрыЗаписи.РегистрацияОбработки Тогда
ОбновитьПовторноИспользуемыеЗначения();
Обработчик = Новый ОписаниеОповещения("ЗаписатьНаКлиентеЗавершение", ЭтотОбъект, ПараметрыЗаписи);
ТекстПредупреждения = НСтр("ru = 'Для применения изменений в открытых окнах
|необходимо их закрыть и открыть заново.'");
ПоказатьПредупреждение(Обработчик, ТекстПредупреждения);
Иначе
ЗаписатьНаКлиентеЗавершение(ПараметрыЗаписи);
ТекстОповещения = НСтр("ru = 'Для применения изменений в открытых окнах необходимо их закрыть и открыть заново.'");
ПоказатьОповещениеПользователя(, , ТекстОповещения);
КонецЕсли;
ЗаписатьНаКлиентеЗавершение(ПараметрыЗаписи);
КонецПроцедуры
@@ -499,7 +529,7 @@
КонецФункции
&НаКлиенте
Процедура ЗаписатьНаКлиентеЗавершение(ПараметрыЗаписи) Экспорт
Процедура ЗаписатьНаКлиентеЗавершение(ПараметрыЗаписи)
Если ПараметрыЗаписи.ЗакрытьПослеЗаписи И Открыта() Тогда
Закрыть();
КонецЕсли;
@@ -507,6 +537,18 @@
&НаКлиенте
Процедура ОбновлениеИзФайлаЗапуск()
Оповещение = Новый ОписаниеОповещения("ОбновлениеИзФайлаПослеПодтверждения", ЭтотОбъект);
ПараметрыФормы = Новый Структура("Ключ", "ПередДобавлениемДОИО");
ОткрытьФорму("ОбщаяФорма.ПредупреждениеБезопасности", ПараметрыФормы, , , , , Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ОбновлениеИзФайлаПослеПодтверждения(Ответ, ПараметрыРегистрации) Экспорт
Если Ответ <> "Продолжить" Тогда
ОбновлениеИзФайлаЗавершение(Неопределено, ПараметрыРегистрации);
Возврат;
КонецЕсли;
ПараметрыРегистрации = Новый Структура;
ПараметрыРегистрации.Вставить("Успех", Ложь);
ПараметрыРегистрации.Вставить("АдресДанныхОбработки", АдресДанныхОбработки);
@@ -527,6 +569,7 @@
КонецЕсли;
СтандартныеПодсистемыКлиент.ПоказатьПомещениеФайла(Обработчик, УникальныйИдентификатор, Объект.ИмяФайла, ПараметрыДиалога);
КонецПроцедуры
&НаКлиенте
@@ -555,10 +598,13 @@
ПараметрыРегистрации.ЭтоОтчет = Ложь;
Иначе
ПараметрыРегистрации.Успех = Ложь;
ВернутьРезультатПослеПоказаПредупреждения(
НСтр("ru = 'Расширение файла не соответствует расширению внешнего отчета (ERF) или обработки (EPF).'"),
Новый ОписаниеОповещения("ОбновлениеИзФайлаЗавершение", ЭтотОбъект, ПараметрыРегистрации),
Неопределено);
ОбработчикРезультата = Новый ОписаниеОповещения("ОбновлениеИзФайлаЗавершение", ЭтотОбъект, ПараметрыРегистрации);
ТекстПредупреждения = НСтр("ru = 'Расширение файла не соответствует расширению внешнего отчета (ERF) или обработки (EPF).'");
ПараметрыВозврата = Новый Структура;
ПараметрыВозврата.Вставить("Обработчик", ОбработчикРезультата);
ПараметрыВозврата.Вставить("Результат", Неопределено);
ОбработчикПростогоДиалога = Новый ОписаниеОповещения("ВернутьРезультатПослеЗакрытияПростогоДиалога", ЭтотОбъект, ПараметрыВозврата);
ПоказатьПредупреждение(ОбработчикПростогоДиалога, ТекстПредупреждения);
Возврат;
КонецЕсли;
@@ -567,19 +613,8 @@
ОбновлениеИзФайлаМеханикаНаКлиенте(ПараметрыРегистрации);
КонецПроцедуры
&НаКлиенте
Процедура ВернутьРезультатПослеПоказаПредупреждения(ТекстПредупреждения, Обработчик, Результат, Заголовок = Неопределено, Таймаут = 0)
// Показывает окно предупреждение, а после его закрытия вызывает обработчик с заданным результатом.
ПараметрыОбработчика = Новый Структура;
ПараметрыОбработчика.Вставить("Обработчик", Обработчик);
ПараметрыОбработчика.Вставить("Результат", Результат);
Обработчик = Новый ОписаниеОповещения("ВернутьРезультатПослеЗакрытияПростогоДиалога", ЭтотОбъект, ПараметрыОбработчика);
ПоказатьПредупреждение(Обработчик, ТекстПредупреждения, Таймаут, Заголовок);
КонецПроцедуры
&НаКлиенте
Процедура ВернутьРезультатПослеЗакрытияПростогоДиалога(ПараметрыОбработчика) Экспорт
// Продолжение процедуры (см. выше).
Если ТипЗнч(ПараметрыОбработчика.Обработчик) = Тип("ОписаниеОповещения") Тогда
ВыполнитьОбработкуОповещения(ПараметрыОбработчика.Обработчик, ПараметрыОбработчика.Результат);
КонецЕсли;
@@ -618,45 +653,47 @@
Если ПараметрыРегистрации.КоличествоКонфликтующих > 1 Тогда
Если ПараметрыРегистрации.ЭтоОтчет Тогда
ЗаголовокВопроса = НСтр("ru = 'Конфликты при загрузке внешнего отчета'");
ТекстВопроса = НСтр("ru = 'Внутреннее имя отчета ""[Name]"" уже занято другими дополнительными отчетами ([Count]):
ТекстВопроса = НСтр("ru = 'Внутреннее имя отчета ""[Name]""
|уже занято существующими дополнительными отчетами ([Count]):
|[List].
|
|Выберите:
|1. ""[Continue]"" - выполнить загрузку, отключив публикацию этого отчета.
|2. ""[Disable]"" - выполнить загрузку, отключив публикацию всех других конфликтующих отчетов.
|3. ""[Open]"" - отменить загрузку и открыть список конфликтующих отчетов.'");
|1. ""[Continue]"" - загрузить новый отчет в режиме отладки.
|2. ""[Disable]"" - загрузить новый отчет, отключив публикацию всех конфликтующих отчетов.
|3. ""[Open]"" - отменить загрузку и показать список конфликтующих отчетов.'");
Иначе
ЗаголовокВопроса = НСтр("ru = 'Конфликты при загрузке внешней обработки'");
ТекстВопроса = НСтр("ru = 'Внутреннее имя обработки ""[Name]"" уже занято другими дополнительными обработками ([Count]):
ТекстВопроса = НСтр("ru = 'Внутреннее имя обработки ""[Name]""
|уже занято существующими дополнительными обработками ([Count]):
|[List].
|
|Выберите:
|1. ""[Continue]"" - выполнить загрузку, отключив публикацию этой обработки.
|2. ""[Disable]"" - выполнить загрузку, отключив публикацию всех других конфликтующих обработок.
|3. ""[Open]"" - отменить загрузку и открыть список конфликтующих обработок.'");
|1. ""[Continue]"" - загрузить новую обработку в режиме отладки.
|2. ""[Disable]"" - загрузить новую обработку, отключив публикацию всех конфликтующих обработок.
|3. ""[Open]"" - отменить загрузку и показать список конфликтующих обработок.'");
КонецЕсли;
ПредставлениеКнопкиОтключить = НСтр("ru = 'Отключить конфликтующие'");
ПредставлениеКнопкиОткрыть = НСтр("ru = 'Отменить и показать список'");
Иначе
Если ПараметрыРегистрации.ЭтоОтчет Тогда
ЗаголовокВопроса = НСтр("ru = 'Конфликт при загрузке внешнего отчета'");
ТекстВопроса = НСтр("ru = 'Внутреннее имя отчета ""[Name]"" уже занято другим дополнительным отчетом:
|[List].
ТекстВопроса = НСтр("ru = 'Внутреннее имя отчета ""[Name]""
|уже занято существующим дополнительным отчетом [List].
|
|Выберите:
|1. ""[Continue]"" - выполнить загрузку, отключив публикацию этого отчета.
|2. ""[Disable]"" - выполнить загрузку, отключив публикацию другого отчета.
|3. ""[Open]"" - отменить загрузку и открыть карточку другого отчета.'");
|1. ""[Continue]"" - загрузить новый отчет в режиме отладки.
|2. ""[Disable]"" - загрузить новый отчет, отключив публикацию конфликтующего отчета.
|3. ""[Open]"" - открыть карточку конфликтующего отчета.'");
ПредставлениеКнопкиОтключить = НСтр("ru = 'Отключить другой отчет'");
Иначе
ЗаголовокВопроса = НСтр("ru = 'Конфликт при загрузке внешней обработки'");
ТекстВопроса = НСтр("ru = 'Внутреннее имя обработки ""[Name]"" уже занято другой дополнительной обработкой:
|[List].
ТекстВопроса = НСтр("ru = 'Внутреннее имя обработки ""[Name]""
|уже занято существующей дополнительной обработкой [List].
|
|Выберите:
|1. ""[Continue]"" - выполнить загрузку, отключив публикацию этой обработки.
|2. ""[Disable]"" - выполнить загрузку, отключив публикацию другой обработки.
|3. ""[Open]"" - отменить загрузку и открыть карточку другой обработку.'");
|1. ""[Continue]"" - загрузить новую обработку в режиме отладки.
|2. ""[Disable]"" - загрузить новую обработку, отключив публикацию конфликтующей обработки.
|3. ""[Open]"" - открыть карточку конфликтующей обработки.'");
ПредставлениеКнопкиОтключить = НСтр("ru = 'Отключить другую обработку'");
КонецЕсли;
ПредставлениеКнопкиОткрыть = НСтр("ru = 'Отменить и открыть'");
@@ -749,7 +786,8 @@
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Вариант отчета ""%1"" не зарегистрирован.'"), Вариант.Наименование);
ПоказатьПредупреждение(, ТекстОшибки);
Иначе
ПоказатьЗначение(, Вариант.Ссылка);
МодульВариантыОтчетовКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ВариантыОтчетовКлиент");
МодульВариантыОтчетовКлиент.ПоказатьНастройкиОтчета(Вариант.Ссылка);
КонецЕсли;
КонецПроцедуры
@@ -879,6 +917,86 @@
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыполнитьКомандуПослеПодтвержденияЗаписи(Ответ, Контекст) Экспорт
Если Ответ = "ЗаписатьИПродолжить" Тогда
ОчиститьСообщения();
Если Не Записать() Тогда
Возврат; // Запись не удалась, сообщения о причинах выводит платформа.
КонецЕсли;
ИначеЕсли Ответ <> "ПродолжитьБезЗаписи" Тогда
Возврат;
КонецЕсли;
Если Объект.Ссылка.Пустая() Или Модифицированность Тогда
Возврат; // Финальная проверка.
КонецЕсли;
СтрокаТаблицыКоманд = Элементы.ОбъектКоманды.ТекущиеДанные;
Если СтрокаТаблицыКоманд = Неопределено
Или СтрокаТаблицыКоманд.Идентификатор <> Контекст.ИдентификаторВыполняемойКоманды Тогда
Найденные = Объект.Команды.НайтиСтроки(Новый Структура("Идентификатор", Контекст.ИдентификаторВыполняемойКоманды));
Если Найденные.Количество() = 0 Тогда
Возврат;
КонецЕсли;
СтрокаТаблицыКоманд = Найденные[0];
КонецЕсли;
ВыполняемаяКоманда = Новый Структура(
"Ссылка, Представление,
|Идентификатор, ВариантЗапуска, ПоказыватьОповещение,
|Модификатор, ОбъектыНазначения, ЭтоОтчет, Вид");
ЗаполнитьЗначенияСвойств(ВыполняемаяКоманда, СтрокаТаблицыКоманд);
ВыполняемаяКоманда.Ссылка = Объект.Ссылка;
ВыполняемаяКоманда.Вид = Объект.Вид;
ВыполняемаяКоманда.ЭтоОтчет = (Объект.Вид = ВидДополнительныйОтчет Или Объект.Вид = ВидОтчет);
Если СтрокаТаблицыКоманд.ВариантЗапуска = ПредопределенноеЗначение("Перечисление.СпособыВызоваДополнительныхОбработок.ОткрытиеФормы") Тогда
ДополнительныеОтчетыИОбработкиКлиент.ВыполнитьОткрытиеФормыОбработки(ВыполняемаяКоманда, ЭтотОбъект, ВыполняемаяКоманда.ОбъектыНазначения);
ИначеЕсли СтрокаТаблицыКоманд.ВариантЗапуска = ПредопределенноеЗначение("Перечисление.СпособыВызоваДополнительныхОбработок.ВызовКлиентскогоМетода") Тогда
ДополнительныеОтчетыИОбработкиКлиент.ВыполнитьКлиентскийМетодОбработки(ВыполняемаяКоманда, ЭтотОбъект, ВыполняемаяКоманда.ОбъектыНазначения);
ИначеЕсли СтрокаТаблицыКоманд.ВариантЗапуска = ПредопределенноеЗначение("Перечисление.СпособыВызоваДополнительныхОбработок.ВызовСерверногоМетода")
Или СтрокаТаблицыКоманд.ВариантЗапуска = ПредопределенноеЗначение("Перечисление.СпособыВызоваДополнительныхОбработок.СценарийВБезопасномРежиме") Тогда
ЗаголовокСостояния = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Выполняется команда ""%1""'"),
СтрокаТаблицыКоманд.Представление);
Состояние(ЗаголовокСостояния + "...", , , БиблиотекаКартинок.ДлительнаяОперация48);
ДлительнаяОперация = НачатьВыполнениеСервернойКомандыВФоне(ВыполняемаяКоманда, УникальныйИдентификатор);
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
ПараметрыОжидания.ТекстСообщения = ЗаголовокСостояния;
ПараметрыОжидания.ОповещениеПользователя.Показать = ВыполняемаяКоманда.ПоказыватьОповещение;
ПараметрыОжидания.ВыводитьОкноОжидания = Истина;
ОповещениеОЗавершении = Новый ОписаниеОповещения("ПослеЗавершенияВыполненияСервернойКомандыВФоне", ЭтотОбъект, ВыполняемаяКоманда);
ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, ОповещениеОЗавершении, ПараметрыОжидания);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗавершенияВыполненияСервернойКомандыВФоне(Задание, ВыполняемаяКоманда) Экспорт
Если Задание.Статус = "Ошибка" Тогда
Результат = Новый Структура;
ВводныйТекст = НСтр("ru = 'Не удалось выполнить команду.'");
Кратко = ВводныйТекст + Символы.ПС + Задание.КраткоеПредставлениеОшибки;
Подробно = Задание.ПодробноеПредставлениеОшибки;
СтандартныеПодсистемыКлиентСервер.ВывестиПредупреждение(Результат, Кратко, Подробно);
Иначе
Результат = ПолучитьИзВременногоХранилища(Задание.АдресРезультата);
КонецЕсли;
Если Результат <> Неопределено Тогда
СтандартныеПодсистемыКлиент.ПоказатьРезультатВыполнения(ЭтотОбъект, Результат);
КонецЕсли;
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
// Клиент, Сервер
@@ -908,6 +1026,21 @@
////////////////////////////////////////////////////////////////////////////////
// Вызов сервера, Сервер
&НаСервереБезКонтекста
Функция НачатьВыполнениеСервернойКомандыВФоне(ВыполняемаяКоманда, УникальныйИдентификатор)
ИмяПроцедуры = "ДополнительныеОтчетыИОбработки.ВыполнитьКоманду";
ПараметрыПроцедуры = Новый Структура("ДополнительнаяОбработкаСсылка, ИдентификаторКоманды, ОбъектыНазначения");
ПараметрыПроцедуры.ДополнительнаяОбработкаСсылка = ВыполняемаяКоманда.Ссылка;
ПараметрыПроцедуры.ИдентификаторКоманды = ВыполняемаяКоманда.Идентификатор;
ПараметрыПроцедуры.ОбъектыНазначения = ВыполняемаяКоманда.ОбъектыНазначения;
НастройкиЗапуска = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор);
НастройкиЗапуска.НаименованиеФоновогоЗадания = НСтр("ru = 'Дополнительные отчеты и обработки: Выполнение серверного метода обработки'");
Возврат ДлительныеОперации.ВыполнитьВФоне(ИмяПроцедуры, ПараметрыПроцедуры, НастройкиЗапуска);
КонецФункции
&НаСервере
Процедура ОбновлениеИзФайлаМеханикаНаСервере(ПараметрыРегистрации)
ОбъектСправочника = РеквизитФормыВЗначение("Объект");
@@ -926,13 +1059,13 @@
// Представление занявших объектов.
ПредставлениеЗанявших = "";
Для Каждого ЭлементСписка Из ПараметрыРегистрации.Конфликтующие Цикл
ПредставлениеЗанявших = ПредставлениеЗанявших
+ ?(ПредставлениеЗанявших = "", "", ", ")
+ СокрЛП(ЭлементСписка.Представление);
Если СтрДлина(ПредставлениеЗанявших) > 80 Тогда
ПредставлениеЗанявших = Лев(ПредставлениеЗанявших, 70) + "... ";
ПредставлениеЗанявших = ПредставлениеЗанявших + "... ";
Прервать;
КонецЕсли;
ПредставлениеЗанявших = ПредставлениеЗанявших
+ ?(ПредставлениеЗанявших = "", "", ", ")
+ """" + СокрЛП(ЭлементСписка.Представление) + """";
КонецЦикла;
ПараметрыРегистрации.Вставить("ПредставлениеЗанявших", ПредставлениеЗанявших);
// Количество занявших объектов.
@@ -950,7 +1083,7 @@
ЗаголовокОшибки);
КонецЕсли;
УстановитьВидимостьДоступность(Истина);
УстановитьВидимостьДоступность(ПараметрыРегистрации.Успех);
КонецПроцедуры
&НаСервере
@@ -1042,6 +1175,19 @@
Элементы.СтраницаКоманды.Заголовок = НазваниеСтраницыКоманд() + " (" + Формат(КоличествоКоманд, "ЧГ=") + ")";
КонецЕсли;
Элементы.ВыполнитьКоманду.Видимость = Ложь;
Если ЭтоГлобальнаяОбработка И КоличествоКоманд > 0 Тогда
Для Каждого СтрокаТаблицыКоманд Из Объект.Команды Цикл
Если СтрокаТаблицыКоманд.ВариантЗапуска = ПредопределенноеЗначение("Перечисление.СпособыВызоваДополнительныхОбработок.ОткрытиеФормы")
Или СтрокаТаблицыКоманд.ВариантЗапуска = ПредопределенноеЗначение("Перечисление.СпособыВызоваДополнительныхОбработок.ВызовКлиентскогоМетода")
Или СтрокаТаблицыКоманд.ВариантЗапуска = ПредопределенноеЗначение("Перечисление.СпособыВызоваДополнительныхОбработок.ВызовСерверногоМетода")
Или СтрокаТаблицыКоманд.ВариантЗапуска = ПредопределенноеЗначение("Перечисление.СпособыВызоваДополнительныхОбработок.СценарийВБезопасномРежиме") Тогда
Элементы.ВыполнитьКоманду.Видимость = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КоличествоРазрешений = ПолучитьТаблицуРазрешений().Количество();
РежимСовместимостиРазрешений = Объект.РежимСовместимостиРазрешений;
@@ -1236,8 +1382,10 @@
Свойства = РаботаВБезопасномРежимеСлужебный.СвойстваДляРегистраРазрешений(Объект.Ссылка);
УстановитьПривилегированныйРежим(Истина);
ПредставлениеРазрешений_2_2_2 = РаботаВБезопасномРежимеСлужебный.ПредставлениеРазрешенийНаИспользованиеВнешнихРесурсов(
Свойства.Тип, Свойства.Идентификатор, Свойства.Тип, Свойства.Идентификатор, Разрешения);
УстановитьПривилегированныйРежим(Ложь);
КонецЕсли;
@@ -1412,8 +1560,6 @@
КонецФункции
///
&НаСервере
Функция ВыбранныеОбъектыНазначения()
Результат = Новый СписокЗначений;
@@ -1,4 +1,4 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16421"></meta></head><body>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 11.00.9600.18427"></meta></head><body>
<p>Предназначен для хранения в программе дополнительных отчетов и обработок.</p>
<p>Программа позволяет подключать и использовать дополнительные (внешние) отчеты и обработки в режиме 1С:Предприятия. Они позволяют расширять возможности программы, не внося в нее изменений, что может быть востребовано для оперативного решения каких-либо задач без снятия с поддержки поставщика программы.</p>
<p>Дополнительные отчеты и обработки разрабатываются в режиме Конфигуратора, для этого надо обращаться к разработчику. Также можно получить их из интернета.</p>
@@ -35,7 +35,7 @@
</li><li>
<div>по полям <strong>Вид</strong> и <strong>Публикация</strong> - можно сочетать два вида отбора в больших списках.</div></li></ul><h3>Загрузка из файла</h3>
<ul><li>С помощью команды <strong>Загрузить из файла</strong> можно обновить обработку во внутреннем хранилище программы. Укажите путь к файлу, нажмите <strong>Открыть</strong>.</li></ul><h3>Выгрузка в файл</h3>
<ul><li>С помощью команды <strong>Еще -</strong> <strong>Выгрузить в файл</strong> можно выгрузить дополнительный отчет или обработку из хранилища в файл на диске компьютера. Укажите папку на компьютере, нажмите <strong>Сохранить</strong>. Имя файлу присваивается автоматически, имеется возможность его переименовать.</li></ul><h3><a name="#1">Виды дополнительных отчетов и обработок</a></h3>
<ul><li>С помощью команды <strong>Еще -</strong> <strong>Выгрузить в файл</strong> можно выгрузить дополнительный отчет или обработку из хранилища в файл на диске компьютера. Укажите папку на компьютере, нажмите <strong>Сохранить</strong>. Имя файлу присваивается автоматически, имеется возможность его переименовать.</li></ul><h3><a name="1">Виды дополнительных отчетов и обработок</a></h3>
<p>Существует несколько видов дополнительных отчетов и обработок:</p>
<ul><li><strong>Глобальные отчеты и обработки</strong> - используются независимо от данных программы, также называются общими. Команды для их использования размещаются в разделах программы. С помощью глобальных отчетов и обработок можно загружать данные в программу, производить обновление или очистку индекса полнотекстового поиска и т.д. Они содержат команды, вызываемые только из разделов командного интерфейса. Команды не зависят от конкретных объектов программы. Список доступных разделов для размещения команд определен разработчиком заранее и включен в файл дополнительного отчета или обработки, его невозможно изменить.
</li><li><strong>Назначаемые дополнительные отчеты и обработки</strong> - предназначены для конкретных документов или списков программы, которых может быть несколько, при этом список доступных назначений определен разработчиком заранее и включен в текст дополнительного отчета или обработки, поэтому при настройке дополнительного отчета или обработки можно только выбирать из этого списка. К этому типу относятся несколько видов дополнительных отчетов и обработок:
@@ -2,7 +2,11 @@
#Область ПрограммныйИнтерфейс
// Реквизиты, которые разрешается изменять сразу для нескольких объектов.
// Возвращает реквизиты объекта, которые разрешается редактировать
// с помощью обработки группового изменения реквизитов.
//
// Возвращаемое значение:
// Массив - список имен реквизитов объекта.
Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт
Результат = Новый Массив;
@@ -1,7 +1,11 @@
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ОписаниеПеременных
Перем ЭтоГлобальнаяОбработка;
#КонецОбласти
#Область ОбработчикиСобытий
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
@@ -67,7 +71,7 @@
Если Конфликтующие.Количество() > 0 Тогда
Отказ = Истина;
Если ПроверкаЭлемента Тогда
ТекстОшибки = СтрШаблон(
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Имя ""%1"", используемое данным отчетом (обработкой), уже занято другим опубликованным дополнительным отчетом (обработкой).
|
|Для продолжения необходимо изменить вид Публикации с ""%2"" на ""%3"" или ""%4"".'"),
@@ -76,7 +80,7 @@
Строка(Перечисления.ВариантыПубликацииДополнительныхОтчетовИОбработок.РежимОтладки),
Строка(Перечисления.ВариантыПубликацииДополнительныхОтчетовИОбработок.Отключена));
Иначе
ТекстОшибки = СтрШаблон(
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Имя ""%1"", используемое отчетом (обработкой) ""%2"", уже занято другим опубликованным дополнительным отчетом (обработкой).'"),
ИмяОбъекта,
ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ЭтотОбъект.Ссылка, "Наименование"));
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16421"></meta></head><body>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 11.00.9600.18427"></meta></head><body>
<p>Предназначена для настройки и хранения отборов, по которым в дальнейшем можно осуществлять быстрый доступ к группе документов взаимодействий.</p>
<p><a href="Catalog.ЗакладкиВзаимодействий/Help">Закладки</a> могут быть только индивидуальными. С помощью закладок можно группировать <a href="DocumentJournal.Взаимодействия.Form.ФормаСписка/Help">документы взаимодействий</a>, например, по отделам предприятия, используя различные условия отбора.</p>
<h3 style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 5px; MARGIN-LEFT: 20px"><a name="70a6370b13ca43baa611bed9691c461119059afee61f135f174b11e300c4cc0dda01">Ввод закладки взаимодействий</a></h3>
<h3 style="MARGIN-BOTTOM: 5px; MARGIN-LEFT: 20px; MARGIN-TOP: 0px"><a name="70a6370b13ca43baa611bed9691c461119059afee61f135f174b11e300c4cc0dda01">Ввод закладки взаимодействий</a></h3>
<ul><li>Напишите <strong>Наименование</strong>. Поле является обязательным.
</li><li>Для того чтобы задать новое условие для отбора, нажмите <strong>Добавить новый элемент</strong>.<strong> </strong> Условий может быть несколько.
</li><li>В колонке <strong>Поле</strong> <img src="StdPicture.InputFieldSelect" width="12" height="12"></img> выберите поле документа взаимодействий, по которому будет происходить отбор. Для этого в списке укажите нужное поле, затем нажмите <strong>Выбрать</strong>. Также можно использовать двойной щелчок мыши. 
Loaded 100 of 1637 files, more files were not shown because too many files have changed in this diff. Show more