From 32b6e70824fb637f10e5c106fdf861d1f419ca31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9A=D0=BE=D0=BC=D0=BF=D0=B0=D0=BD=D0=B8=D1=8F=201=D0=A1?= Date: Fri, 5 Jun 2020 18:29:00 +0300 Subject: [PATCH] 3_1_3_162 --- .../Forms/ФормаБизнесПроцесса/Form.form | 1 + .../Forms/ФормаБизнесПроцесса/Module.bsl | 44 +- .../Задание/ManagerModule.bsl | 9 +- .../Задание/ObjectModule.bsl | 13 +- SSL/src/Catalogs/Валюты/ManagerModule.bsl | 3 +- .../ВариантыОтветовАнкет/ManagerModule.bsl | 3 +- .../Forms/РазмещениеВРазделах/Module.bsl | 78 +- .../Forms/СбросНастроекРазмещения/Module.bsl | 6 +- .../СбросПользовательскихНастроек/Module.bsl | 10 +- .../Forms/ФормаСписка/Module.bsl | 91 +- .../Forms/ФормаЭлемента/Module.bsl | 6 +- .../ВариантыОтчетов/ManagerModule.bsl | 3 +- .../Catalogs/ВариантыОтчетов/ObjectModule.bsl | 37 +- .../ВариантыОтчетов/ВариантыОтчетов.mdo | 22 + .../ВерсииРасширений/ManagerModule.bsl | 36 +- .../Catalogs/ВерсииФайлов/ManagerModule.bsl | 3 +- .../Catalogs/ВерсииФайлов/ВерсииФайлов.mdo | 1 + .../Module.bsl | 6 +- .../Forms/ФормаСписка/Form.form | 105 +- .../Forms/ФормаСписка/Module.bsl | 67 + .../Forms/ФормаЭлемента/Form.form | 301 + .../Forms/ФормаЭлемента/Help/ru.html | 15 +- .../Forms/ФормаЭлемента/Module.bsl | 217 +- .../ManagerModule.bsl | 322 +- .../ВидыКонтактнойИнформации/ObjectModule.bsl | 50 + .../ВидыКонтактнойИнформации.mdo | 82 + .../Catalogs/ВидыПроверок/ManagerModule.bsl | 3 +- .../Catalogs/ВидыПроверок/ВидыПроверок.mdo | 1 + .../Form.form | 12 +- .../Module.bsl | 16 +- .../ПоискКомпонентыНаПортале1СИТС/Module.bsl | 3 - .../Forms/ФормаЭлемента/Module.bsl | 42 +- .../ВнешниеКомпоненты/ManagerModule.bsl | 3 +- .../ВнешниеКомпоненты/ВнешниеКомпоненты.mdo | 2 +- .../Forms/ФормаСписка/Module.bsl | 32 +- .../Forms/ФормаЭлемента/Module.bsl | 6 +- .../ВнешниеПользователи/ManagerModule.bsl | 3 +- .../ВнешниеПользователи/ObjectModule.bsl | 2 +- .../ВопросыШаблонаАнкеты/ManagerModule.bsl | 3 +- .../ManagerModule.bsl | 3 +- .../Forms/ФормаЭлемента/Module.bsl | 4 +- .../ManagerModule.bsl | 3 +- .../Forms/ВыборПоОтветственному/Module.bsl | 7 +- .../Forms/ФормаЭлемента/Module.bsl | 1 + .../Catalogs/ГруппыДоступа/ManagerModule.bsl | 13 +- .../Catalogs/ГруппыДоступа/ObjectModule.bsl | 8 + .../ГруппыИсполнителейЗадач/ManagerModule.bsl | 3 +- .../Forms/ФормаСписка/Form.form | 7 + .../Forms/ФормаСписка/Module.bsl | 13 +- .../Forms/ФормаЭлемента/Module.bsl | 8 +- .../ManagerModule.bsl | 3 +- .../ObjectModule.bsl | 4 +- .../ЗакладкиВзаимодействий/ManagerModule.bsl | 3 +- SSL/src/Catalogs/Заметки/ManagerModule.bsl | 3 +- .../ManagerModule.bsl | 3 +- .../ЗначенияСвойствОбъектов/ManagerModule.bsl | 3 +- .../ManagerModule.bsl | 3 +- .../ManagerModule.bsl | 140 +- .../ИдентификаторыОбъектовМетаданных.mdo | 56 +- .../ManagerModule.bsl | 3 +- .../Календари/Forms/ФормаЭлемента/Form.form | 1 + .../Календари/Forms/ФормаЭлемента/Module.bsl | 13 +- .../КлассификаторБанков/ManagerModule.bsl | 3 +- .../Forms/ФормаСписка/Module.bsl | 4 +- .../ManagerModule.bsl | 21 +- .../ОбщиеВнешниеКомпоненты/ManagerModule.bsl | 3 +- .../Forms/ФормаЭлемента/Module.bsl | 8 +- .../Catalogs/ПапкиФайлов/ManagerModule.bsl | 3 +- .../Forms/ФормаВыбора/Form.form | 66 + .../Forms/ФормаВыбора/Module.bsl | 67 +- .../ПапкиЭлектронныхПисем/ManagerModule.bsl | 3 +- .../Пользователи/Forms/ФормаСписка/Form.form | 2142 +++++-- .../Пользователи/Forms/ФормаСписка/Module.bsl | 331 +- .../Forms/ФормаЭлемента/Form.form | 348 +- .../Forms/ФормаЭлемента/Module.bsl | 138 +- .../Catalogs/Пользователи/ManagerModule.bsl | 15 +- .../Catalogs/Пользователи/Пользователи.mdo | 15 + .../ManagerModule.bsl | 3 +- ...авляемыеДополнительныеОтчетыИОбработки.mdo | 5 +- .../ManagerModule.bsl | 5 +- .../Forms/ФормаСписка/Module.bsl | 18 +- .../Forms/ФормаЭлемента/Module.bsl | 4 +- .../ManagerModule.bsl | 4 +- .../ManagerModule.bsl | 4 +- .../ОшибкаОбращенияКПрограмме/Module.bsl | 5 + .../Forms/ФормаЭлемента/Form.form | 37 + .../Forms/ФормаЭлемента/Help/ru.html | 19 +- .../Forms/ФормаЭлемента/Module.bsl | 2 + .../ManagerModule.bsl | 6 +- .../ManagerModule.bsl | 73 +- .../Template.mxlx | 6 +- .../ПрофилиГруппДоступа/ManagerModule.bsl | 249 +- .../ПрофилиГруппДоступа/ObjectModule.bsl | 29 +- .../Forms/ФормаЭлемента/Module.bsl | 47 +- .../РассылкиОтчетов/ManagerModule.bsl | 5 +- .../РассылкиОтчетов/РассылкиОтчетов.mdo | 38 +- .../РолиИсполнителей/ManagerModule.bsl | 7 +- .../Form.form | 115 +- .../Module.bsl | 30 +- .../Module.bsl | 34 +- .../Forms/ПодписаниеДанных/Form.form | 217 +- .../Forms/ПроверкаСертификата/Form.form | 42 +- .../Forms/ПроверкаСертификата/Module.bsl | 143 +- .../Forms/РасшифровкаДанных/Module.bsl | 6 +- .../Forms/ФормаЭлемента/Module.bsl | 3 +- .../Forms/ШифрованиеДанных/Module.bsl | 22 +- .../ManagerModule.bsl | 3 +- .../ManagerModule.bsl | 3 +- .../Список/ExtInfo/ListSettings.dcss | 21 + .../Forms/ФормаВыбора/Form.form | 338 ++ .../Forms/ФормаВыбораСостояния/Form.form | 431 ++ .../Forms/ФормаВыбораСостояния/Module.bsl | 61 + .../Список/ExtInfo/ListSettings.dcss | 21 + .../Forms/ФормаСписка/Form.form | 369 ++ .../Forms/ФормаСписка/Module.bsl | 112 + .../Forms/ФормаЭлемента/Form.form | 128 + .../Forms/ФормаЭлемента/Module.bsl | 44 + .../ManagerModule.bsl | 54 + ...СостоянияОригиналовПервичныхДокументов.mdo | 229 + .../СтраныМира/Forms/Классификатор/Module.bsl | 15 +- .../СтраныМира/Forms/ФормаЭлемента/Form.form | 7 + .../СтраныМира/Forms/ФормаЭлемента/Module.bsl | 5 + SSL/src/Catalogs/СтраныМира/ManagerModule.bsl | 62 +- .../ManagerModule.bsl | 3 +- .../СценарииОбменовДанными/ManagerModule.bsl | 3 +- .../ManagerModule.bsl | 3 +- .../УдалениеЛишнихФайловИзТома/Module.bsl | 74 +- .../ТомаХраненияФайлов/ManagerModule.bsl | 11 +- .../ПомощникНастройкиУчетнойЗаписи/Form.form | 1386 +---- .../ПомощникНастройкиУчетнойЗаписи/Module.bsl | 58 +- .../ПроверкаНастроекУчетнойЗаписи/Form.form | 32 +- .../Forms/ФормаВыбора/Form.form | 17 + .../Forms/ФормаВыбора/Module.bsl | 20 +- .../Forms/ФормаСписка/Form.form | 6 +- .../Forms/ФормаСписка/Module.bsl | 57 + .../Forms/ФормаЭлемента/Form.form | 855 +-- .../Forms/ФормаЭлемента/Module.bsl | 233 +- .../ManagerModule.bsl | 75 +- .../УчетныеЗаписиЭлектроннойПочты.mdo | 25 +- SSL/src/Catalogs/Файлы/Forms/Файлы/Module.bsl | 2 +- .../Файлы/Forms/ФормаЭлемента/Form.form | 13 + .../Файлы/Forms/ФормаЭлемента/Module.bsl | 27 +- SSL/src/Catalogs/Файлы/ManagerModule.bsl | 4 +- .../ФормаМастераТабличныхВопросов/Module.bsl | 4 + .../Forms/ФормаЭлемента/Module.bsl | 1 + .../Catalogs/ШаблоныАнкет/ManagerModule.bsl | 3 +- .../Forms/СформироватьСообщение/Module.bsl | 20 +- .../Forms/ФормаЭлемента/Form.form | 16 + .../Forms/ФормаЭлемента/Module.bsl | 256 +- .../ШаблоныСообщений/ManagerModule.bsl | 189 + .../ManagerModule.bsl | 3 +- .../ManagerModule.bsl | 3 +- .../ManagerModule.bsl | 3 +- .../Forms/ФормаЭлемента/Module.bsl | 4 + .../ВопросыДляАнкетирования/ManagerModule.bsl | 3 +- .../ВопросыДляАнкетирования/ObjectModule.bsl | 1 + .../Forms/ЗависимостьРеквизитов/Module.bsl | 17 +- .../РазблокированиеРеквизитов/Module.bsl | 1 + .../Forms/ФормаЭлемента/Form.form | 130 + .../Forms/ФормаЭлемента/Help/ru.html | 8 +- .../Forms/ФормаЭлемента/Module.bsl | 204 +- .../ManagerModule.bsl | 261 +- .../ObjectModule.bsl | 36 +- .../ДополнительныеРеквизитыИСведения.mdo | 28 +- .../ОбъектыАдресацииЗадач/ManagerModule.bsl | 9 +- .../ManagerModule.bsl | 10 +- .../ОбластьДанныхВспомогательныеДанные.mdo | 8 + .../ОбластьДанныхОсновныеДанные.mdo | 20 + .../CommandModule.bsl | 19 + ...рналУчетаОригиналовПервичныхДокументов.mdo | 10 + ...СистемнойУчетнойЗаписиЭлектроннойПочты.mdo | 2 +- .../СвязанныеДокументы/СвязанныеДокументы.mdo | 5 +- SSL/src/CommonForms/АдреснаяКнига/Form.form | 2803 +++++---- SSL/src/CommonForms/АдреснаяКнига/Module.bsl | 49 +- .../ВводЗначенийСпискомСФлажками/Form.form | 2 +- .../ВводЗначенийСпискомСФлажками/Module.bsl | 8 +- SSL/src/CommonForms/Вопрос/Module.bsl | 11 +- SSL/src/CommonForms/ВыборКонтакта/Form.form | 29 + SSL/src/CommonForms/ВыборКонтакта/Module.bsl | 10 +- .../ВыборОбъектовМетаданных/Form.form | 298 +- .../ВыборОбъектовМетаданных/Module.bsl | 719 ++- .../ГруппыПользователей/Module.bsl | 30 +- .../ДополнительныеОтчетыИОбработки/Form.form | 2 +- .../Module.bsl | 34 +- .../НастройкаКолонтитулов/Module.bsl | 6 +- .../НастройкаРабочегоКаталога/Form.form | 466 +- .../НастройкаРабочегоКаталога/Help/ru.html | 5 +- .../НастройкаРабочегоКаталога/Module.bsl | 71 +- .../НастройкиПравОбъектов/Module.bsl | 14 +- .../Form.form | 15 +- .../Module.bsl | 4 +- .../Form.form | 17 +- .../Module.bsl | 16 +- .../CommonForms/ОтправкаСообщения/Module.bsl | 63 +- .../Form.form | 8 +- .../Module.bsl | 6 +- SSL/src/CommonForms/ПанельОтчетов/Module.bsl | 187 +- .../CommonForms/ПечатьДокументов/Module.bsl | 63 +- .../ПраваДоступаУпрощенно/Module.bsl | 10 +- .../ПредупреждениеБезопасности/Form.form | 338 +- .../Module.bsl | 8 +- SSL/src/CommonForms/Расширения/Module.bsl | 21 +- .../РасширенноеПредставлениеОшибки/Form.form | 1 - .../РасширенноеПредставлениеОшибки/Module.bsl | 48 +- .../Module.bsl | 72 +- .../Module.bsl | 2 +- .../CommonForms/РезультатПроверки/Form.form | 9 +- .../CommonForms/СвязанныеДокументы/Form.form | 289 +- .../CommonForms/СвязанныеДокументы/Module.bsl | 684 ++- SSL/src/CommonForms/Сертификат/Module.bsl | 2 +- .../Module.bsl | 7 +- .../CommonForms/УточнениеКонтактов/Module.bsl | 25 +- .../ФормаНастроекОтчета/Module.bsl | 344 +- SSL/src/CommonForms/ФормаОтчета/Form.form | 111 + SSL/src/CommonForms/ФормаОтчета/Module.bsl | 494 +- SSL/src/CommonForms/ФормаПоиска/Module.bsl | 10 +- .../CommonModules/АвтономнаяРабота/Module.bsl | 26 +- .../АвтономнаяРаботаСлужебный/Module.bsl | 29 +- .../АдминистрированиеКластера/Module.bsl | 163 +- .../АдминистрированиеКластераCOM/Module.bsl | 22 +- .../Module.bsl | 32 +- .../АдминистрированиеКластераRAS/Module.bsl | 14 +- .../Module.bsl | 204 +- .../Module.bsl | 188 +- .../АдресныйКлассификатор/Module.bsl | 73 +- .../АдресныйКлассификаторКлиент/Module.bsl | 28 +- .../АдресныйКлассификаторПовтИсп/Module.bsl | 28 +- .../АдресныйКлассификаторСлужебный/Module.bsl | 1805 ++++-- .../АнализЖурналаРегистрацииКлиент/Module.bsl | 33 +- .../CommonModules/Анкетирование/Module.bsl | 69 +- .../АнкетированиеКлиентСервер/Module.bsl | 4 +- .../Module.bsl | 15 +- .../БизнесПроцессыИЗадачиКлиент/Module.bsl | 56 +- .../Module.bsl | 13 +- .../Module.bsl | 24 +- .../Module.bsl | 8 +- .../БизнесПроцессыИЗадачиСервер/Module.bsl | 66 +- .../Module.bsl | 7 +- .../CommonModules/ВариантыОтчетов/Module.bsl | 1517 +++-- .../ВариантыОтчетовВызовСервера/Module.bsl | 12 +- .../ВариантыОтчетовКлиент/Module.bsl | 48 +- .../ВариантыОтчетовКлиентСервер/Module.bsl | 8 +- .../Module.bsl | 17 +- .../ВариантыОтчетовПовтИсп/Module.bsl | 16 +- .../ВерсионированиеОбъектов/Module.bsl | 163 +- .../Module.bsl | 22 +- .../ВерсионированиеОбъектовСобытия/Module.bsl | 1 + .../CommonModules/Взаимодействия/Module.bsl | 1419 +++-- .../ВзаимодействияВызовСервера/Module.bsl | 15 +- .../ВзаимодействияКлиент/Module.bsl | 66 +- .../Module.bsl | 4 +- .../ВзаимодействияКлиентСервер/Module.bsl | 25 +- .../Module.bsl | 3 +- .../ВзаимодействияПереопределяемый/Module.bsl | 18 +- .../ВзаимодействияСобытия/Module.bsl | 16 +- .../Module.bsl | 47 + .../ВнешниеКомпонентыВызовСервера/Module.bsl | 6 +- .../ВнешниеКомпонентыКлиент/Module.bsl | 48 +- .../ВнешниеКомпонентыСервер/Module.bsl | 11 +- .../ВнешниеКомпонентыСлужебный/Module.bsl | 327 +- .../Module.bsl | 5 +- .../Module.bsl | 38 +- .../ВызовОнлайнПоддержки/Module.bsl | 15 +- .../Module.bsl | 8 +- .../ВызовОнлайнПоддержкиКлиент/Module.bsl | 9 +- .../Module.bsl | 1 + .../CommonModules/ГрафикиРаботы/Module.bsl | 20 +- .../ГрафикиРаботыКлиент/Module.bsl | 4 +- .../ГрупповоеИзменениеОбъектов/Module.bsl | 76 + .../ГрупповоеИзменениеОбъектов.mdo | 11 + .../Module.bsl | 42 +- .../Module.bsl | 17 + .../ДатыЗапретаИзменения/Module.bsl | 310 +- .../Module.bsl | 91 +- .../ДатыЗапретаИзмененияСлужебный/Module.bsl | 544 +- .../Module.bsl | 10 +- .../Module.bsl | 2 +- .../ДлительныеОперации/Module.bsl | 65 +- .../ДлительныеОперацииКлиент/Module.bsl | 25 +- .../ДополнительныеОтчетыИОбработки/Module.bsl | 475 +- .../Module.bsl | 18 +- .../Module.bsl | 23 +- .../Module.bsl | 167 +- .../Module.bsl | 6 +- .../Module.bsl | 28 +- .../Module.bsl | 53 +- .../Module.bsl | 2 +- .../Module.bsl | 4 +- .../Module.bsl | 24 +- .../ЖурналРегистрации/Module.bsl | 37 +- .../ЖурналРегистрацииКлиент/Module.bsl | 72 +- .../ЗагрузкаДанныхИзФайла/Module.bsl | 66 +- .../ЗагрузкаДанныхИзФайлаКлиент/Module.bsl | 6 +- .../Module.bsl | 18 +- .../Module.bsl | 2 +- .../ЗаметкиПользователяСлужебный/Module.bsl | 7 + .../ЗаполнениеОбъектов/Module.bsl | 4 +- .../Module.bsl | 12 +- .../Module.bsl | 38 +- .../Module.bsl | 13 +- .../Module.bsl | 22 +- .../ЗащитаПерсональныхДанных/Module.bsl | 53 +- .../Module.bsl | 16 +- .../ЗащитаПерсональныхДанныхКлиент/Module.bsl | 9 +- .../Module.bsl | 4 +- .../Module.bsl | 8 +- .../Module.bsl | 16 +- .../ИнтеграцияПодсистемБСП/Module.bsl | 223 +- .../ИнтеграцияПодсистемБСПКлиент/Module.bsl | 11 +- .../ИнтерфейсODataСлужебный/Module.bsl | 12 +- .../ИнформацияПриЗапуске/Module.bsl | 12 +- .../Module.bsl | 4 +- .../КалендарныеГрафики/Module.bsl | 29 +- .../Module.bsl | 4 +- .../КалендарныеГрафикиСлужебный/Module.bsl | 4 +- .../КонтрольВеденияУчета/Module.bsl | 208 +- .../Module.bsl | 9 +- .../КонтрольВеденияУчетаКлиент/Module.bsl | 17 +- .../Module.bsl | 108 +- .../КонтрольВеденияУчетаСлужебный/Module.bsl | 201 +- .../Module.bsl | 55 +- .../Module.bsl | 36 +- .../МультиязычностьКлиент/Module.bsl | 9 +- .../МультиязычностьКлиентСервер/Module.bsl | 14 +- .../Module.bsl | 6 +- .../МультиязычностьСервер/Module.bsl | 279 +- .../НапоминанияПользователя/Module.bsl | 3 +- .../НапоминанияПользователяКлиент/Module.bsl | 1 + .../Module.bsl | 1 + .../Module.bsl | 3 +- .../Module.bsl | 72 +- .../НастройкаПорядкаЭлементов/Module.bsl | 19 +- .../Module.bsl | 10 +- .../Module.bsl | 23 +- .../ОбменДаннымиXDTOСервер/Module.bsl | 1474 +++-- .../ОбменДаннымиВМоделиСервиса/Module.bsl | 38 +- .../Module.bsl | 2 +- .../Module.bsl | 4 +- .../Module.bsl | 10 +- .../ОбменДаннымиВнешнееСоединение/Module.bsl | 4 +- .../ОбменДаннымиВызовСервера/Module.bsl | 19 +- .../ОбменДаннымиКлиент/Module.bsl | 100 +- .../ОбменДаннымиПереопределяемый/Module.bsl | 75 +- .../ОбменДаннымиПовтИсп/Module.bsl | 31 +- .../ОбменДаннымиСервер/Module.bsl | 806 +-- .../ОбменДаннымиСлужебный/Module.bsl | 36 +- .../ОбменДаннымиСобытия/Module.bsl | 216 +- .../ОбновлениеИнформационнойБазы/Module.bsl | 646 +- .../Module.bsl | 8 +- .../Module.bsl | 81 +- .../Module.bsl | 3435 ++++++----- .../Module.bsl | 40 +- .../Module.bsl | 1 + .../ОбновлениеКонфигурации/Module.bsl | 62 +- .../Module.bsl | 7 + .../ОбновлениеКонфигурацииКлиент/Module.bsl | 65 +- SSL/src/CommonModules/Обсуждения/Module.bsl | 570 ++ .../CommonModules/Обсуждения/Обсуждения.mdo | 11 + .../CommonModules/ОбсужденияКлиент/Module.bsl | 30 + .../ОбсужденияКлиент/ОбсужденияКлиент.mdo | 10 + .../ОбсужденияСлужебный/Module.bsl | 71 +- .../ОбсужденияСлужебныйКлиент/Module.bsl | 68 + .../Module.bsl | 20 + .../ОбсужденияСлужебныйКлиентСервер.mdo | 12 + .../CommonModules/ОбщегоНазначения/Module.bsl | 1509 +++-- .../ОбщегоНазначенияВызовСервера/Module.bsl | 48 +- .../ОбщегоНазначенияКлиент/Module.bsl | 66 +- .../Module.bsl | 22 +- .../ОбщегоНазначенияКлиентПовтИсп/Module.bsl | 8 +- .../ОбщегоНазначенияКлиентСервер/Module.bsl | 301 +- .../Module.bsl | 50 +- .../Module.bsl | 105 +- .../Module.bsl | 77 +- .../ОрганизацииПереопределяемый/Module.bsl | 106 +- .../ОрганизацииСервер/Module.bsl | 83 +- SSL/src/CommonModules/ОтправкаSMS/Module.bsl | 3 +- .../ОтправкаSMSКлиент/Module.bsl | 2 +- .../Module.bsl | 8 +- .../ОтправкаSMSПереопределяемый/Module.bsl | 16 +- .../ОтправкаSMSЧерезGSMINFORM/Module.bsl | 10 +- .../ОтправкаSMSЧерезSMS4B/Module.bsl | 6 +- .../ОтправкаSMSЧерезSMSRU/Module.bsl | 8 +- .../ОтправкаSMSЧерезSMSЦЕНТР/Module.bsl | 6 +- .../ОтправкаSMSЧерезБилайн/Module.bsl | 6 +- .../ОтправкаSMSЧерезМТС/Module.bsl | 6 +- .../ОтправкаSMSЧерезСМСУслуги/Module.bsl | 14 +- .../Module.bsl | 4 +- .../Module.bsl | 37 +- SSL/src/CommonModules/ОтчетыКлиент/Module.bsl | 183 +- .../ОтчетыКлиентПереопределяемый/Module.bsl | 5 +- .../ОтчетыКлиентСервер/Module.bsl | 179 +- .../ОтчетыПереопределяемый/Module.bsl | 9 +- SSL/src/CommonModules/ОтчетыСервер/Module.bsl | 2189 +------ .../ОценкаПроизводительности/Module.bsl | 38 +- .../Module.bsl | 1 + .../Module.bsl | 2 + .../ОценкаПроизводительностиКлиент/Module.bsl | 16 +- .../Module.bsl | 30 +- .../Module.bsl | 87 +- .../ПодключаемыеКоманды/Module.bsl | 166 +- .../ПодключаемыеКомандыКлиент/Module.bsl | 181 +- .../Module.bsl | 33 +- .../Module.bsl | 14 +- .../ПоискИУдалениеДублей/Module.bsl | 616 +- .../ПоискИУдалениеДублейКлиент/Module.bsl | 63 +- .../Module.bsl | 31 +- .../ПолнотекстовыйПоискСервер/Module.bsl | 24 +- .../ПолучениеФайловИзИнтернета/Module.bsl | 29 +- .../Module.bsl | 10 +- .../Module.bsl | 32 +- .../Module.bsl | 38 +- SSL/src/CommonModules/Пользователи/Module.bsl | 119 +- .../ПользователиПереопределяемый/Module.bsl | 79 +- .../ПользователиСлужебный/Module.bsl | 419 +- .../Module.bsl | 62 +- .../Module.bsl | 2 +- .../ПользователиСлужебныйКлиент/Module.bsl | 24 +- .../Module.bsl | 35 +- .../ПользователиСлужебныйПовтИсп/Module.bsl | 22 +- .../Module.bsl | 10 +- .../Module.bsl | 25 +- .../ПрефиксацияОбъектовСлужебный/Module.bsl | 13 +- .../ПрефиксацияОбъектовСобытия/Module.bsl | 16 +- .../РаботаВБезопасномРежиме/Module.bsl | 9 +- .../Module.bsl | 4 +- .../Module.bsl | 8 +- .../CommonModules/РаботаСАдресами/Module.bsl | 908 ++- .../РаботаСАдресамиКлиент/Module.bsl | 18 + .../РаботаСАдресамиКлиентСервер/Module.bsl | 148 +- .../CommonModules/РаботаСБанками/Module.bsl | 4 +- .../РаботаСКурсамиВалют/Module.bsl | 6 +- .../Module.bsl | 6 +- .../РаботаСКурсамиВалютСлужебный/Module.bsl | 26 +- .../РаботаСПочтовымиСообщениями/Module.bsl | 81 +- .../Module.bsl | 14 +- .../Module.bsl | 1 + .../Module.bsl | 20 +- .../Module.bsl | 96 +- .../CommonModules/РаботаСФайлами/Module.bsl | 686 +-- .../РаботаСФайламиВТомахСлужебный/Module.bsl | 78 +- .../РаботаСФайламиКлиент/Module.bsl | 54 +- .../Module.bsl | 2 +- .../РаботаСФайламиКлиентСервер/Module.bsl | 10 +- .../РаботаСФайламиПереопределяемый/Module.bsl | 12 +- .../РаботаСФайламиСлужебный/Module.bsl | 548 +- .../Module.bsl | 48 +- .../Module.bsl | 239 +- .../РаботаСФайламиСлужебныйКлиент/Module.bsl | 758 +-- .../РаботаСФайламиСлужебныйПовтИсп/Module.bsl | 105 +- .../CommonModules/РассылкаОтчетов/Module.bsl | 498 +- .../РассылкаОтчетовВызовСервера/Module.bsl | 12 +- .../РассылкаОтчетовКлиент/Module.bsl | 46 +- .../РассылкаОтчетовКлиентСервер/Module.bsl | 12 +- .../Module.bsl | 22 +- .../РассылкаОтчетовПовтИсп/Module.bsl | 14 +- .../РегламентныеЗаданияКлиент/Module.bsl | 4 + .../Module.bsl | 16 +- .../РегламентныеЗаданияСервер/Module.bsl | 112 +- .../РегламентныеЗаданияСлужебный/Module.bsl | 159 +- .../РезервноеКопированиеИБКлиент/Module.bsl | 9 +- .../Module.bsl | 2 +- .../РезервноеКопированиеИБСервер/Module.bsl | 41 +- .../СклонениеПредставленийОбъектов/Module.bsl | 70 +- .../Module.bsl | 10 +- .../Module.bsl | 20 +- .../Module.bsl | 8 +- SSL/src/CommonModules/СоединенияИБ/Module.bsl | 9 +- .../СоединенияИБВызовСервера/Module.bsl | 2 +- .../СоединенияИБКлиент/Module.bsl | 5 +- .../СозданиеНаОсновании/Module.bsl | 2 +- .../Module.bsl | 52 +- .../Module.bsl | 22 +- .../Module.bsl | 22 +- .../Module.bsl | 14 +- .../Module.bsl | 8 +- .../Module.bsl | 28 +- .../Module.bsl | 8 +- .../Module.bsl | 16 +- .../Module.bsl | 5 - .../Module.bsl | 6 +- .../Module.bsl | 6 +- .../Module.bsl | 20 +- .../Module.bsl | 2 +- .../Module.bsl | 33 +- .../СтандартныеПодсистемыКлиент/Module.bsl | 211 +- .../Module.bsl | 2 +- .../Module.bsl | 6 +- .../СтандартныеПодсистемыПовтИсп/Module.bsl | 83 +- .../СтандартныеПодсистемыСервер/Module.bsl | 123 +- .../CommonModules/СтроковыеФункции/Module.bsl | 33 +- .../СтроковыеФункцииКлиент/Module.bsl | 7 +- .../СтроковыеФункцииКлиентСервер/Module.bsl | 32 +- .../Module.bsl | 31 +- .../Module.bsl | 126 + .../ТекущиеДелаПереопределяемый/Module.bsl | 2 +- .../ТекущиеДелаСервер/Module.bsl | 7 +- .../ТекущиеДелаСлужебный/Module.bsl | 30 +- .../ТекущиеДелаСлужебныйПовтИсп/Module.bsl | 2 +- .../УдалениеПомеченныхОбъектов/Module.bsl | 637 +- .../Module.bsl | 261 +- .../Module.bsl | 30 +- .../Module.bsl | 1422 ++++- .../Module.bsl | 62 +- .../Module.bsl | 37 + ...омеченныхОбъектовСлужебныйКлиентСервер.mdo | 12 + .../УдалениеПомеченныхПовтИсп/Module.bsl | 22 + .../УдалениеПомеченныхПовтИсп.mdo | 12 + .../УправлениеДоступом/Module.bsl | 365 +- .../Module.bsl | 17 +- .../УправлениеДоступомСлужебный/Module.bsl | 4143 ++++++++++--- .../Module.bsl | 3 +- .../Module.bsl | 10 + .../Module.bsl | 267 +- .../Module.bsl | 194 +- .../Module.bsl | 427 +- .../Module.bsl | 1 + .../УправлениеКолонтитулами/Module.bsl | 5 +- .../Module.bsl | 1256 ++-- .../Module.bsl | 210 +- .../Module.bsl | 54 +- .../Module.bsl | 6 +- .../Module.bsl | 300 +- .../Module.bsl | 5 +- .../Module.bsl | 37 +- .../УправлениеПечатью/Module.bsl | 234 +- .../УправлениеПечатьюMSWordКлиент/Module.bsl | 14 +- .../УправлениеПечатьюMSWordКлиент.mdo | 2 +- .../Module.bsl | 7 +- .../УправлениеПечатьюOOWriterКлиент.mdo | 2 +- .../УправлениеПечатьюВызовСервера/Module.bsl | 2 +- .../УправлениеПечатьюКлиент/Module.bsl | 46 +- .../Module.bsl | 63 +- .../УправлениеПечатьюРФ/Module.bsl | 88 +- .../УправлениеПечатьюСлужебный/Module.bsl | 118 +- .../Module.bsl | 18 +- .../УправлениеСвойствами/Module.bsl | 146 +- .../УправлениеСвойствамиКлиент/Module.bsl | 5 +- .../Module.bsl | 45 +- .../УправлениеСвойствамиПовтИсп/Module.bsl | 5 +- .../УправлениеСвойствамиСлужебный/Module.bsl | 170 +- .../УправлениеЭлектроннойПочтой/Module.bsl | 451 +- .../Module.bsl | 6 +- .../Module.bsl | 1039 ++++ .../УчетОригиналовПервичныхДокументов.mdo | 11 + .../Module.bsl | 97 + ...гиналовПервичныхДокументовВызовСервера.mdo | 10 + .../Module.bsl | 470 ++ ...четОригиналовПервичныхДокументовКлиент.mdo | 10 + .../Module.bsl | 31 + ...вичныхДокументовКлиентПереопределяемый.mdo | 10 + .../Module.bsl | 22 + ...ловПервичныхДокументовПереопределяемый.mdo | 11 + .../CommonModules/ФайловаяСистема/Module.bsl | 10 +- .../ФайловаяСистемаКлиент/Module.bsl | 66 +- .../ФайловаяСистемаСлужебныйКлиент/Module.bsl | 54 +- .../ФайловаяСистемаСлужебныйКлиент.mdo | 1 + .../ФизическиеЛицаКлиентСервер/Module.bsl | 6 +- .../CommonModules/ЦентрМониторинга/Module.bsl | 2 +- .../Module.bsl | 4 +- .../ЦентрМониторингаСлужебный/Module.bsl | 49 +- .../CommonModules/ШаблоныСообщений/Module.bsl | 120 +- .../ШаблоныСообщенийКлиент/Module.bsl | 51 +- .../ШаблоныСообщенийКлиентСервер/Module.bsl | 56 +- .../Module.bsl | 59 +- .../ШаблоныСообщенийСервер/Module.bsl | 10 +- .../ШаблоныСообщенийСлужебный/Module.bsl | 644 +- .../ЭлектроннаяПодпись/Module.bsl | 88 +- .../ЭлектроннаяПодписьКлиент/Module.bsl | 170 +- .../Module.bsl | 5 +- .../Module.bsl | 115 +- ...троннаяПодписьКлиентСерверЛокализация.mdo} | 4 +- .../Module.bsl | 8 +- .../ЭлектроннаяПодписьСлужебный/Module.bsl | 104 +- .../Module.bsl | 27 +- .../Module.bsl | 433 +- .../Module.bsl | 119 +- .../Module.bsl | 46 +- .../CommonPictures/BotFather/BotFather.mdo | 8 + SSL/src/CommonPictures/BotFather/Picture.png | Bin 0 -> 112695 bytes .../BotFatherВконтакте/BotFatherВконтакте.mdo | 8 + .../BotFatherВконтакте/Picture.png | Bin 0 -> 17617 bytes .../CommonPictures/ВКонтакте16х16/Picture.png | Bin 0 -> 407 bytes .../ВКонтакте16х16/ВКонтакте16х16.mdo | 8 + .../ДлительнаяОперация16/Picture.zip | Bin 51322 -> 33003 bytes .../Picture.zip | Bin 0 -> 26653 bytes ...аммНаличиеОригиналаПервичногоДокумента.mdo | 8 + .../Picture.zip | Bin 0 -> 15523 bytes ...атныеФормыОригиналаПервичногоДокумента.mdo | 8 + .../Picture.zip | Bin 0 -> 13062 bytes ...ьСостоянияОригиналаПервичногоДокумента.mdo | 8 + .../Picture.zip | Bin 0 -> 30364 bytes ...СостоянияОригиналовПервичныхДокументов.mdo | 8 + .../CommonPictures/ПодменюСервис/Picture.zip | Bin 0 -> 7661 bytes .../ПодменюСервис/ПодменюСервис.mdo | 8 + SSL/src/CommonPictures/Просмотр/Picture.zip | Bin 0 -> 13470 bytes SSL/src/CommonPictures/Просмотр/Просмотр.mdo | 8 + .../CommonPictures/Редактирование/Picture.zip | Bin 0 -> 11723 bytes .../Редактирование/Редактирование.mdo | 8 + SSL/src/CommonPictures/Создание/Picture.zip | Bin 0 -> 10367 bytes SSL/src/CommonPictures/Создание/Создание.mdo | 8 + .../Picture.zip | Bin 0 -> 17771 bytes ...лаПервичногоДокументаОригиналНеПолучен.mdo | 8 + .../Picture.zip | Bin 0 -> 17584 bytes ...налаПервичногоДокументаОригиналПолучен.mdo | 8 + .../СтруктураПодчиненности/Picture.zip | Bin 0 -> 7048 bytes .../СтруктураПодчиненности.mdo | 8 + .../CommonPictures/Телеграм16х16/Picture.png | Bin 0 -> 640 bytes .../Телеграм16х16/Телеграм16х16.mdo | 8 + .../Picture.zip | Bin 0 -> 9045 bytes ...ьСостояниеОригиналаПервичногоДокумента.mdo | 8 + .../Picture.zip | Bin 0 -> 5161 bytes ...алаПервичногоДокументаПоПечатнымФормам.mdo | 8 + .../КомпонентаПоискаСтрок/Template.addin | Bin 425581 -> 439158 bytes .../Template.dcs | 20 + SSL/src/Configuration/Configuration.mdo | 85 +- .../ManagedApplicationModule.bsl | 13 + .../OrdinaryApplicationModule.bsl | 13 + .../Configuration/ParentConfigurations.bin | 2 +- ...оватьУчетОригиналовПервичныхДокументов.mdo | 20 + ...роверятьИспользованиеУдаляемыхОбъектов.mdo | 20 + .../Forms/Форма/Module.bsl | 10 + .../Forms/ВводАдресаВСвободнойФорме/Form.form | 12 + .../ВводАдресаВСвободнойФорме/Module.bsl | 44 +- .../Forms/ВводТелефона/Form.form | 6 + .../Forms/ВводТелефона/Module.bsl | 5 +- .../ИсторияКонтактнойИнформации/Module.bsl | 7 +- .../ManagerModule.bsl | 3 +- .../Forms/Форма/Form.form | 105 + .../Forms/Форма/Module.bsl | 27 +- .../ObjectModule.bsl | 84 +- .../ВыгрузкаЗагрузкаEnterpriseData.mdo | 13 + .../ManagerModule.bsl | 32 +- .../ObjectModule.bsl | 43 +- .../Forms/Форма/Module.bsl | 8 +- .../ВыполнениеОбменаДанными/ManagerModule.bsl | 8 +- .../Forms/ВыборВидаОбъектов/Module.bsl | 5 + .../Forms/ВыбранныеЭлементы/Form.form | 204 +- .../Forms/ВыбранныеЭлементы/Module.bsl | 72 +- .../Forms/РедактированиеФормулы/Module.bsl | 4 +- .../Forms/Форма/Form.form | 15 +- .../Forms/Форма/Module.bsl | 392 +- .../ObjectModule.bsl | 61 +- .../ДоступныеАнкеты/Forms/Форма/Module.bsl | 1 + .../Forms/ЖурналРегистрации/Form.form | 11 + .../Forms/ЖурналРегистрации/Module.bsl | 23 +- .../ЖурналРегистрации/Forms/Событие/Form.form | 14 + .../Forms/Событие/Module.bsl | 17 +- .../Forms/ЗагрузкаДанныхИзФайла/Module.bsl | 175 +- .../Forms/РасширениеФайла/Module.bsl | 6 +- .../ЗагрузкаДанныхИзФайла/ManagerModule.bsl | 112 +- .../ManagerModule.bsl | 75 +- .../Forms/Форма/Module.bsl | 2 +- .../ЗагрузкаКурсовВалют/ManagerModule.bsl | 28 +- .../ObjectModule.bsl | 31 +- .../Forms/ЗаменаЭлементов/Module.bsl | 137 +- .../Forms/ОбъединениеЭлементов/Module.bsl | 106 +- .../ManagerModule.bsl | 29 +- .../Template.txt | 2 +- .../ПериодыНерабочихДней/Template.txt | 1 + .../Forms/Форма/Form.form | 11 + .../Forms/Форма/Module.bsl | 19 +- .../ManagerModule.bsl | 6 +- .../СведенияОВладельцеСертификата/Module.bsl | 4 +- .../Forms/СведенияОбОрганизации/Module.bsl | 15 +- .../Forms/Форма/Module.bsl | 64 +- .../ManagerModule.bsl | 40 +- .../ObjectModule.bsl | 37 +- .../Forms/Форма/Module.bsl | 13 +- .../КонвертацияОбъектовXDTO/ObjectModule.bsl | 52 +- .../ObjectModule.bsl | 813 +-- .../ObjectModule.bsl | 4 +- .../Module.bsl | 13 +- .../Module.bsl | 50 +- .../ManagerModule.bsl | 25 +- .../ObjectModule.bsl | 17 +- .../НастройкаРезервногоКопирования/Form.form | 5 +- .../НастройкаРезервногоКопирования/Module.bsl | 6 +- .../Form.form | 2 +- .../Module.bsl | 69 +- .../ManagerModule.bsl | 22 +- .../ObjectModule.bsl | 2 +- .../Forms/ВыборПользователей/Form.form | 150 +- .../Forms/ВыборПользователей/Module.bsl | 13 +- .../НастройкиПользователей/ManagerModule.bsl | 200 +- .../CommandModule.bsl | 24 + .../ОбъектыПересеченияОбработчика/Form.form | 516 ++ .../ОбъектыПересеченияОбработчика/Module.bsl | 21 + .../ExtInfo/ListSettings.dcss | 21 + .../Form.form | 283 + .../Module.bsl | 42 + .../Forms/ФормаОбработчика/Form.form | 5256 ++++++++++++++++ .../Forms/ФормаОбработчика/Help/ru.html | 13 + .../Forms/ФормаОбработчика/Module.bsl | 1209 ++++ .../Forms/ФормаСпискаОбработчиков/Form.form | 3421 +++++++++++ .../ФормаСпискаОбработчиков/Help/ru.html | 43 + .../Forms/ФормаСпискаОбработчиков/Module.bsl | 4416 ++++++++++++++ .../Help/ru.html | 6 + .../ManagerModule.bsl | 28 + .../ObjectModule.bsl | 1773 ++++++ .../Templates/cut_tags/Template.txt | 29 + .../ОписаниеОбработчиковОбновления.mdo | 1322 ++++ .../Module.bsl | 4 +- .../Forms/Форма/Module.bsl | 36 +- .../ОценкаПроизводительности/ObjectModule.bsl | 50 +- .../Forms/ИнтернетПоддержкаИСервисы/Form.form | 76 +- .../ИнтернетПоддержкаИСервисы/Module.bsl | 48 +- .../НастройкиПользователейИПрав/Form.form | 94 +- .../Forms/НастройкиРаботыСФайлами/Form.form | 52 +- .../Forms/НастройкиРаботыСФайлами/Module.bsl | 8 +- .../Forms/Обслуживание/Module.bsl | 2 +- .../Forms/ОбщиеНастройки/Form.form | 294 +- .../Forms/ОбщиеНастройки/Help/ru.html | 12 +- .../Forms/ОбщиеНастройки/Module.bsl | 49 + .../Forms/Органайзер/Module.bsl | 47 +- .../ПечатныеФормыОтчетыИОбработки/Form.form | 204 + .../ПечатныеФормыОтчетыИОбработки/Module.bsl | 23 + .../ManagerModule.bsl | 2 +- .../ПереносФайлов/Forms/Форма/Module.bsl | 11 +- .../CommandModule.bsl | 16 + .../Form.form | 516 ++ .../Module.bsl | 129 + .../Forms/СозданиеБотаВКонтакте/Form.form | 719 +++ .../Forms/СозданиеБотаВКонтакте/Module.bsl | 113 + .../Forms/СозданиеБотаТелеграм/Form.form | 654 ++ .../Forms/СозданиеБотаТелеграм/Module.bsl | 113 + .../Forms/Форма/Form.form | 308 +- .../Forms/Форма/Module.bsl | 54 +- .../ПодключениеОбсуждений.mdo | 36 + .../Forms/ПоискДублей/Form.form | 1028 +++- .../Forms/ПоискДублей/Module.bsl | 477 +- .../Forms/ПравилаОтбора/Form.form | 124 +- .../Forms/ПравилаОтбора/Module.bsl | 17 + .../Forms/ПравилаПоиска/Form.form | 170 +- .../Forms/ПравилаПоиска/Help/ru.html | 15 + .../Forms/ПравилаПоиска/Module.bsl | 33 +- .../ПоискИУдалениеДублей/ObjectModule.bsl | 360 +- .../ПоискИУдалениеДублей.mdo | 5 + .../Forms/ВыборОбластиПоиска/Form.form | 5 +- .../Forms/ВыборОбластиПоиска/Module.bsl | 51 +- .../ПолнотекстовыйПоискВДанных.mdo | 2 +- .../Forms/Форма/Form.form | 2 +- .../Forms/Форма/Module.bsl | 2 +- .../ManagerModule.bsl | 7 +- .../ObjectModule.bsl | 2 +- .../ManagerModule.bsl | 3 +- .../НастройкаНаСторонеСервиса/Module.bsl | 14 +- .../ObjectModule.bsl | 7 +- .../ManagerModule.bsl | 2 +- .../ObjectModule.bsl | 2 +- .../ВерсияПрисоединенногоФайла/Module.bsl | 6 +- .../Forms/ВыборКодировки/Module.bsl | 2 +- .../Forms/ГруппаФайлов/Module.bsl | 22 +- .../Forms/ПрисоединенныеФайлы/Module.bsl | 6 +- .../Forms/ПрисоединенныйФайл/Form.form | 13 + .../Forms/ПрисоединенныйФайл/Module.bsl | 23 +- .../ФайлыВОсновномРабочемКаталоге/Form.form | 1277 ---- .../Help/ru.html | 16 - .../ФайлыВОсновномРабочемКаталоге/Module.bsl | 455 -- .../Forms/ФормаВозвратаФайла/Help/ru.html | 14 +- .../Forms/ФормаВыбораРежимаОткрытия/Form.form | 16 + .../ФормаВыбораРежимаОткрытия/Module.bsl | 13 + .../ФормаЗавершениеРедактирования/Form.form | 56 - .../ФормаЗавершениеРедактирования/Module.bsl | 6 - .../Forms/ФормаИмпортаПапки/Form.form | 4 +- .../Forms/ФормаИмпортаПапки/Module.bsl | 2 +- .../Forms/ФормаЭкспортаПапки/Form.form | 2 +- .../Forms/ФормаЭкспортаПапки/Module.bsl | 52 +- .../РаботаСФайлами/РаботаСФайлами.mdo | 15 - .../Forms/ВводАдреса/Form.form | 6 + .../Forms/ВводАдреса/Module.bsl | 134 +- .../Forms/ВыборАдресаПоУровню/Module.bsl | 2 + .../Forms/НаселенныйПунктАдреса/Module.bsl | 19 +- .../Forms/НастройкиАдреса/Form.form | 89 + .../Forms/НастройкиАдреса/Module.bsl | 1 + .../ManagerModule.bsl | 238 +- .../Forms/Форма/Module.bsl | 75 +- .../ObjectModule.bsl | 144 +- .../Forms/РегламентноеЗадание/Help/ru.html | 21 +- .../РегламентныеИФоновыеЗадания/Form.form | 1 - .../РегламентныеИФоновыеЗадания/Module.bsl | 6 +- .../Module.bsl | 4 +- .../РезервноеКопированиеДанных/Module.bsl | 12 +- .../ИндикацияХодаОбновленияИБ/Module.bsl | 85 +- .../Form.form | 33 +- .../Module.bsl | 154 +- .../Forms/ОтложенныеОбработчики/Module.bsl | 166 +- .../РезультатыОбновленияПрограммы.mdo | 1 + .../Forms/РезультатСканирования/Module.bsl | 1 + .../Forms/Форма/Module.bsl | 36 + .../ObjectModule.bsl | 122 +- .../ObjectModule.bsl | 8 +- .../ТекущиеДела/Forms/Форма/Module.bsl | 4 +- .../ObjectModule.bsl | 2 +- .../CommandModule.bsl | 4 +- .../Form.form | 928 +++ .../Help/ru.html | 8 + .../Module.bsl | 814 +++ .../Forms/НастройкиУдаленияОбъектов/Form.form | 1066 ++++ .../НастройкиУдаленияОбъектов/Module.bsl | 349 ++ .../Forms/ОсновнаяФорма/Form.form | 4698 ++++++++------- .../Forms/ОсновнаяФорма/Module.bsl | 2464 ++++---- .../УдалениеПомеченныхОбъектов/Help/ru.html | 80 +- .../ManagerModule.bsl | 2352 ++++---- .../УдалениеПомеченныхОбъектов.mdo | 23 + .../Forms/УправляемаяФорма/Module.bsl | 9 +- .../Module.bsl | 5 +- .../ObjectModule.bsl | 685 +-- .../Forms/ОсновнаяФорма/Module.bsl | 71 +- .../Forms/Форма/Module.bsl | 17 +- .../Template.txt | 8 +- .../Template.txt | 35 +- .../СкриптУдаленияПатчей/Template.txt | 7 +- .../ВладелецЗначенийКлючейДоступаОбъект.mdo | 1 - .../DefinedTypes/КурсВалюты/КурсВалюты.mdo | 19 + .../ОбъектСНастраиваемымПорядком.mdo | 1 + ...ктСУчетомОригиналовПервичныхДокументов.mdo | 17 + .../Forms/ПечатьЭлектронногоПисьма/Module.bsl | 16 +- .../Forms/ФормаСписка/Form.form | 287 +- .../Forms/ФормаСписка/Module.bsl | 217 +- .../ФормаСпискаПараметрическая/Module.bsl | 2 +- .../Анкета/Forms/ФормаДокумента/Module.bsl | 25 +- SSL/src/Documents/Анкета/ManagerModule.bsl | 3 +- .../Встреча/Forms/ФормаДокумента/Module.bsl | 1 - SSL/src/Documents/Встреча/ManagerModule.bsl | 3 +- .../ManagerModule.bsl | 3 +- .../ObjectModule.bsl | 2 +- .../НазначениеОпросов/ManagerModule.bsl | 42 +- .../Forms/ФормаДокумента/Module.bsl | 11 +- .../ManagerModule.bsl | 20 +- .../Template.bin | Bin 23791 -> 24442 bytes .../Template.mxlx | 2 +- .../Documents/СообщениеSMS/ManagerModule.bsl | 3 +- .../ТелефонныйЗвонок/ManagerModule.bsl | 3 +- .../ТелефонныйЗвонок/ObjectModule.bsl | 2 +- .../ТелефонныйЗвонок/ТелефонныйЗвонок.mdo | 1 + .../ManagerModule.bsl | 3 +- .../ЭлектронноеПисьмоВходящее.mdo | 3 +- .../Forms/ФормаДокумента/Form.form | 5347 +++++++++-------- .../Forms/ФормаДокумента/Module.bsl | 151 +- .../ManagerModule.bsl | 3 +- .../ObjectModule.bsl | 2 +- .../ЭлектронноеПисьмоИсходящее.mdo | 2 +- .../РежимыВыполненияОбработчиков.mdo | 52 + ...РежимыВыполненияОтложенныхОбработчиков.mdo | 45 + .../ManagerModule.bsl | 0 .../СтатусыОбработчиковОбновления.mdo | 66 + ...ыеРеквизитыОбработкаПроверкиЗаполнения.mdo | 2 + ...ользованиеУдаляемыхОбъектовВКонстантах.mdo | 13 + ...ованиеУдаляемыхОбъектовВНаборахЗаписей.mdo | 15 + ...ляемыхОбъектовВНаборахРегистровРасчета.mdo | 13 + ...спользованиеУдаляемыхОбъектовВОбъектах.mdo | 20 + ...льНеразделенныхНаборовЗаписейПриЗаписи.mdo | 1 + .../ОбновитьВнешнегоПользователя.mdo} | 6 +- .../ОбновлениеИнформационнойБазы.mdo | 4 +- ...оватьУчетОригиналовПервичныхДокументов.mdo | 14 + .../ЗагрузкаАдресногоКлассификатора/Form.form | 162 +- .../Module.bsl | 11 +- .../ОчисткаАдресногоКлассификатора/Form.form | 115 +- .../ОчисткаАдресногоКлассификатора/Module.bsl | 12 +- .../Module.bsl | 6 +- .../АдресныеОбъекты/ManagerModule.bsl | 6 +- .../КлассификаторСубъектовРФ/Template.txt | 188 +- .../ВерсииОбъектов/ManagerModule.bsl | 23 +- .../ГруппыЗначенийДоступа/ManagerModule.bsl | 3 +- .../ManagerModule.bsl | 9 +- .../Forms/ДатыЗапретаИзменения/Module.bsl | 14 +- .../ЗамерыВремени/ManagerModule.bsl | 6 +- .../ManagerModule.bsl | 6 +- .../ManagerModule.bsl | 4 +- .../ЗначенияГруппДоступа/ManagerModule.bsl | 7 +- .../ИсполнителиЗадач/RecordSetModule.bsl | 3 +- .../КалендарныеГрафики/ManagerModule.bsl | 22 +- .../КодировкиФайлов/ManagerModule.bsl | 327 + .../КурсыВалют/КурсыВалют.mdo | 11 +- .../ManagerModule.bsl | 8 +- .../ManagerModule.bsl | 39 +- .../ManagerModule.bsl | 31 +- .../НастройкиОбменаДаннымиXDTO.mdo | 18 + .../НастройкиОчисткиФайлов/ManagerModule.bsl | 11 + .../НастройкиПравОбъектов/ManagerModule.bsl | 173 +- .../НастройкиСинхронизацииФайлов/Module.bsl | 11 +- .../ManagerModule.bsl | 12 + .../CommandModule.bsl | 0 .../Forms/ФормаЗаписи/Form.form | 2 +- ...астройкиУчетныхЗаписейЭлектроннойПочты.mdo | 4 +- .../ManagerModule.bsl | 4 +- .../НеудаленныеОбъекты/ManagerModule.bsl | 60 + .../НеудаленныеОбъекты/RecordSetModule.bsl | 79 + .../НеудаленныеОбъекты/НеудаленныеОбъекты.mdo | 103 + .../Form.form | 16 + .../Module.bsl | 48 +- .../ОбработчикиОбновления.mdo | 495 ++ .../ОбработчикиОбновленияОбщихДанных.mdo | 210 + .../ManagerModule.bsl | 4 +- .../ManagerModule.bsl | 35 +- .../ПакетыДляОтправки/ManagerModule.bsl | 6 +- .../ManagerModule.bsl | 15 +- .../ManagerModule.bsl | 2 +- .../ManagerModule.bsl | 6 +- .../Forms/МакетыПечатныхФорм/Form.form | 4 +- .../Forms/РедактированиеМакета/Form.form | 2 +- .../Forms/РедактированиеМакета/Module.bsl | 19 +- .../ManagerModule.bsl | 10 +- .../ManagerModule.bsl | 32 +- .../ПотокиОбновления/ПотокиОбновления.mdo | 171 + .../ПраваРолей/ManagerModule.bsl | 16 + .../Module.bsl | 34 +- .../ПравилаКонвертацииОбъектов/Module.bsl | 16 +- .../ПравилаДляОбменаДанными/ManagerModule.bsl | 103 +- .../RecordSetModule.bsl | 2 +- .../ManagerModule.bsl | 22 +- .../ManagerModule.bsl | 31 +- .../Module.bsl | 25 +- .../ManagerModule.bsl | 11 +- .../ManagerModule.bsl | 12 +- .../Forms/Форма/Module.bsl | 66 +- .../СведенияОФайлах/ManagerModule.bsl | 1 - .../ManagerModule.bsl | 3 +- .../Form.form | 1589 +++++ .../Module.bsl | 621 ++ .../Forms/ФормаЗаписи/Form.form | 344 ++ .../ManagerModule.bsl | 169 + .../RecordSetModule.bsl | 27 + ...СостоянияОригиналовПервичныхДокументов.mdo | 236 + .../СостоянияПапокПисем/ManagerModule.bsl | 3 +- .../ManagerModule.bsl | 11 +- .../ТаблицыГруппДоступа/ManagerModule.bsl | 4 +- .../УдаляемыеОбъекты/RecordSetModule.bsl | 30 + .../УдаляемыеОбъекты/УдаляемыеОбъекты.mdo | 100 + .../ManagerModule.bsl | 47 +- .../АнализЖурналаРегистрации/ObjectModule.bsl | 26 +- .../РасшифровкаТабличныхВопросов/Module.bsl | 3 +- SSL/src/Reports/АнализОпроса/ObjectModule.bsl | 14 +- .../АнализПравДоступа/ManagerModule.bsl | 148 + .../АнализПравДоступа/ObjectModule.bsl | 785 +++ .../Templates/Макет/Template.dcs | 4150 +++++++++++++ .../АнализПравДоступа/АнализПравДоступа.mdo | 24 + .../ДатыЗапретаЗагрузки/ObjectModule.bsl | 11 +- .../ДатыЗапретаИзменения/ObjectModule.bsl | 6 +- .../ДвиженияДокумента/ManagerModule.bsl | 9 +- .../ДвиженияДокумента/ObjectModule.bsl | 342 +- .../ПустаяСхемаКомпоновкиДанных/Template.dcs | 15 +- .../ManagerModule.bsl | 6 +- .../ObjectModule.bsl | 6 +- .../МестаИспользованияСсылок/ObjectModule.bsl | 6 +- .../ОбъемНенужныхФайлов/ObjectModule.bsl | 10 + .../ПраваДоступа/Forms/ФормаОтчета/Module.bsl | 2 +- .../Reports/ПраваДоступа/ManagerModule.bsl | 4 + .../ObjectModule.bsl | 71 + .../Template.dcs | 329 + .../ПрогрессОбновленияОбластейДанных.mdo | 22 + .../ObjectModule.bsl | 18 +- .../Forms/АвтоисправлениеПроблемы/Module.bsl | 47 +- .../РезультатыПроверкиУчета/ManagerModule.bsl | 6 + .../РезультатыПроверкиУчета/ObjectModule.bsl | 90 +- .../Template.dcs | 10 +- .../УниверсальныйОтчет/ManagerModule.bsl | 432 +- .../УниверсальныйОтчет/ObjectModule.bsl | 58 +- .../Template.dcs | 26 +- .../Roles/АдминистраторСистемы/Rights.rights | 233 +- SSL/src/Roles/БазовыеПраваБСП/Rights.rights | 22 + .../Rights.rights | 22 + .../Rights.rights | 2 +- .../Rights.rights | 62 +- .../Rights.rights | 81 + ...СостоянийОригиналовПервичныхДокументов.mdo | 8 + .../Rights.rights | 47 + ...СостоянийОригиналовПервичныхДокументов.mdo | 8 + SSL/src/Roles/ПолныеПрава/Rights.rights | 160 +- .../Roles/УдалениеДанныхOData/Rights.rights | 74 + .../Rights.rights | 32 + ...СостоянийОригиналовПервичныхДокументов.mdo | 8 + .../Schedule.schedule | 16 + .../ИсправлениеУстаревшихАдресов.mdo | 12 + .../Schedule.schedule | 22 + ...ПроверкиИспользованияУдаляемыхОбъектов.mdo | 13 + .../ВыполняетсяУдалениеОбъектов.mdo | 11 + .../Forms/ВыборВариантаОтчета/Module.bsl | 10 +- .../Forms/ВыборПоляОтчета/Module.bsl | 3 +- .../Forms/ПанельДругихОтчетов/Module.bsl | 162 +- .../Forms/СохранениеВариантаОтчета/Form.form | 34 + .../Forms/СохранениеВариантаОтчета/Module.bsl | 277 +- .../Module.bsl | 4 +- .../ManagerModule.bsl | 139 +- .../ДействиеВКолонкеСпискаШрифт.mdo | 18 + .../ОбразецНастройкиКолонтитуловШрифт.mdo | 15 + .../ПравоНедействительногоПользователяФон.mdo | 13 + .../ПравоПросмотраФон/ПравоПросмотраФон.mdo | 13 + .../ПравоРедактированияФон.mdo | 13 + .../ПравоСозданияФон/ПравоСозданияФон.mdo | 13 + .../Администрирование/Администрирование.mdo | 1 + .../БазоваяФункциональность.mdo | 1 + .../Subsystems/Валюты/Валюты.mdo | 1 + .../ВариантыОтчетов/ВариантыОтчетов.mdo | 1 + .../ГрупповоеИзменениеОбъектов.mdo | 1 + .../КонтактнаяИнформация.mdo | 1 + .../ОбновлениеВерсииИБ/ОбновлениеВерсииИБ.mdo | 7 + .../Subsystems/Обсуждения/Обсуждения.mdo | 7 + .../Subsystems/Пользователи/Пользователи.mdo | 2 +- .../ОбновлениеВерсииИБВМоделиСервиса.mdo | 1 + .../РаботаСПочтовымиСообщениями.mdo | 2 +- .../СтруктураПодчиненности.mdo | 1 + .../УдалениеПомеченныхОбъектов.mdo | 12 + .../УправлениеДоступом/УправлениеДоступом.mdo | 8 + .../CommandInterface.cmi | 29 + .../УчетОригиналовПервичныхДокументов.mdo | 31 + .../ЭлектроннаяПодпись/ЭлектроннаяПодпись.mdo | 2 +- .../СтандартныеПодсистемы.mdo | 1 + .../Forms/МоиЗадачи/Module.bsl | 19 +- .../МоиЗадачиДляРабочегоСтола/Module.bsl | 15 +- .../Forms/ПеренаправитьЗадачи/Form.form | 2 +- .../Forms/ПеренаправитьЗадачи/Module.bsl | 2 +- .../Forms/ФормаСписка/Module.bsl | 15 +- .../Tasks/ЗадачаИсполнителя/ManagerModule.bsl | 3 +- .../Tasks/ЗадачаИсполнителя/ObjectModule.bsl | 2 +- .../EnterpriseDataExchange_1_0_1_1/Module.bsl | 6 +- .../EnterpriseDataUpload_1_0_1_1/Module.bsl | 3 +- .../WebServices/Exchange_3_0_1_1/Module.bsl | 1 - .../WebServices/InterfaceVersion/Module.bsl | 2 +- .../Module.bsl | 3 +- .../Module.bsl | 3 +- .../XDTOPackages/ExchangeMessage/Package.xdto | 8 + 1022 files changed, 96280 insertions(+), 36685 deletions(-) create mode 100644 SSL/src/Catalogs/СостоянияОригиналовПервичныхДокументов/Forms/ФормаВыбора/Attributes/Список/ExtInfo/ListSettings.dcss create mode 100644 SSL/src/Catalogs/СостоянияОригиналовПервичныхДокументов/Forms/ФормаВыбора/Form.form create mode 100644 SSL/src/Catalogs/СостоянияОригиналовПервичныхДокументов/Forms/ФормаВыбораСостояния/Form.form create mode 100644 SSL/src/Catalogs/СостоянияОригиналовПервичныхДокументов/Forms/ФормаВыбораСостояния/Module.bsl create mode 100644 SSL/src/Catalogs/СостоянияОригиналовПервичныхДокументов/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss create mode 100644 SSL/src/Catalogs/СостоянияОригиналовПервичныхДокументов/Forms/ФормаСписка/Form.form create mode 100644 SSL/src/Catalogs/СостоянияОригиналовПервичныхДокументов/Forms/ФормаСписка/Module.bsl create mode 100644 SSL/src/Catalogs/СостоянияОригиналовПервичныхДокументов/Forms/ФормаЭлемента/Form.form create mode 100644 SSL/src/Catalogs/СостоянияОригиналовПервичныхДокументов/Forms/ФормаЭлемента/Module.bsl create mode 100644 SSL/src/Catalogs/СостоянияОригиналовПервичныхДокументов/ManagerModule.bsl create mode 100644 SSL/src/Catalogs/СостоянияОригиналовПервичныхДокументов/СостоянияОригиналовПервичныхДокументов.mdo create mode 100644 SSL/src/CommonCommands/ЖурналУчетаОригиналовПервичныхДокументов/CommandModule.bsl create mode 100644 SSL/src/CommonCommands/ЖурналУчетаОригиналовПервичныхДокументов/ЖурналУчетаОригиналовПервичныхДокументов.mdo create mode 100644 SSL/src/CommonModules/ГрупповоеИзменениеОбъектов/Module.bsl create mode 100644 SSL/src/CommonModules/ГрупповоеИзменениеОбъектов/ГрупповоеИзменениеОбъектов.mdo create mode 100644 SSL/src/CommonModules/Обсуждения/Module.bsl create mode 100644 SSL/src/CommonModules/Обсуждения/Обсуждения.mdo create mode 100644 SSL/src/CommonModules/ОбсужденияКлиент/Module.bsl create mode 100644 SSL/src/CommonModules/ОбсужденияКлиент/ОбсужденияКлиент.mdo create mode 100644 SSL/src/CommonModules/ОбсужденияСлужебныйКлиентСервер/Module.bsl create mode 100644 SSL/src/CommonModules/ОбсужденияСлужебныйКлиентСервер/ОбсужденияСлужебныйКлиентСервер.mdo create mode 100644 SSL/src/CommonModules/УдалениеПомеченныхОбъектовСлужебныйКлиентСервер/Module.bsl create mode 100644 SSL/src/CommonModules/УдалениеПомеченныхОбъектовСлужебныйКлиентСервер/УдалениеПомеченныхОбъектовСлужебныйКлиентСервер.mdo create mode 100644 SSL/src/CommonModules/УдалениеПомеченныхПовтИсп/Module.bsl create mode 100644 SSL/src/CommonModules/УдалениеПомеченныхПовтИсп/УдалениеПомеченныхПовтИсп.mdo create mode 100644 SSL/src/CommonModules/УчетОригиналовПервичныхДокументов/Module.bsl create mode 100644 SSL/src/CommonModules/УчетОригиналовПервичныхДокументов/УчетОригиналовПервичныхДокументов.mdo create mode 100644 SSL/src/CommonModules/УчетОригиналовПервичныхДокументовВызовСервера/Module.bsl create mode 100644 SSL/src/CommonModules/УчетОригиналовПервичныхДокументовВызовСервера/УчетОригиналовПервичныхДокументовВызовСервера.mdo create mode 100644 SSL/src/CommonModules/УчетОригиналовПервичныхДокументовКлиент/Module.bsl create mode 100644 SSL/src/CommonModules/УчетОригиналовПервичныхДокументовКлиент/УчетОригиналовПервичныхДокументовКлиент.mdo create mode 100644 SSL/src/CommonModules/УчетОригиналовПервичныхДокументовКлиентПереопределяемый/Module.bsl create mode 100644 SSL/src/CommonModules/УчетОригиналовПервичныхДокументовКлиентПереопределяемый/УчетОригиналовПервичныхДокументовКлиентПереопределяемый.mdo create mode 100644 SSL/src/CommonModules/УчетОригиналовПервичныхДокументовПереопределяемый/Module.bsl create mode 100644 SSL/src/CommonModules/УчетОригиналовПервичныхДокументовПереопределяемый/УчетОригиналовПервичныхДокументовПереопределяемый.mdo rename SSL/src/CommonModules/{ЭлектроннаяПодписьЛокализацияКлиентСервер => ЭлектроннаяПодписьКлиентСерверЛокализация}/Module.bsl (83%) rename SSL/src/CommonModules/{ЭлектроннаяПодписьЛокализацияКлиентСервер/ЭлектроннаяПодписьЛокализацияКлиентСервер.mdo => ЭлектроннаяПодписьКлиентСерверЛокализация/ЭлектроннаяПодписьКлиентСерверЛокализация.mdo} (67%) create mode 100644 SSL/src/CommonPictures/BotFather/BotFather.mdo create mode 100644 SSL/src/CommonPictures/BotFather/Picture.png create mode 100644 SSL/src/CommonPictures/BotFatherВконтакте/BotFatherВконтакте.mdo create mode 100644 SSL/src/CommonPictures/BotFatherВконтакте/Picture.png create mode 100644 SSL/src/CommonPictures/ВКонтакте16х16/Picture.png create mode 100644 SSL/src/CommonPictures/ВКонтакте16х16/ВКонтакте16х16.mdo create mode 100644 SSL/src/CommonPictures/КоллекцияПиктограммНаличиеОригиналаПервичногоДокумента/Picture.zip create mode 100644 SSL/src/CommonPictures/КоллекцияПиктограммНаличиеОригиналаПервичногоДокумента/КоллекцияПиктограммНаличиеОригиналаПервичногоДокумента.mdo create mode 100644 SSL/src/CommonPictures/КоллекцияПиктограммПечатныеФормыОригиналаПервичногоДокумента/Picture.zip create mode 100644 SSL/src/CommonPictures/КоллекцияПиктограммПечатныеФормыОригиналаПервичногоДокумента/КоллекцияПиктограммПечатныеФормыОригиналаПервичногоДокумента.mdo create mode 100644 SSL/src/CommonPictures/НастроитьСостоянияОригиналаПервичногоДокумента/Picture.zip create mode 100644 SSL/src/CommonPictures/НастроитьСостоянияОригиналаПервичногоДокумента/НастроитьСостоянияОригиналаПервичногоДокумента.mdo create mode 100644 SSL/src/CommonPictures/ПиктограммыЭлементовСправочникаСостоянияОригиналовПервичныхДокументов/Picture.zip create mode 100644 SSL/src/CommonPictures/ПиктограммыЭлементовСправочникаСостоянияОригиналовПервичныхДокументов/ПиктограммыЭлементовСправочникаСостоянияОригиналовПервичныхДокументов.mdo create mode 100644 SSL/src/CommonPictures/ПодменюСервис/Picture.zip create mode 100644 SSL/src/CommonPictures/ПодменюСервис/ПодменюСервис.mdo create mode 100644 SSL/src/CommonPictures/Просмотр/Picture.zip create mode 100644 SSL/src/CommonPictures/Просмотр/Просмотр.mdo create mode 100644 SSL/src/CommonPictures/Редактирование/Picture.zip create mode 100644 SSL/src/CommonPictures/Редактирование/Редактирование.mdo create mode 100644 SSL/src/CommonPictures/Создание/Picture.zip create mode 100644 SSL/src/CommonPictures/Создание/Создание.mdo create mode 100644 SSL/src/CommonPictures/СостояниеОригиналаПервичногоДокументаОригиналНеПолучен/Picture.zip create mode 100644 SSL/src/CommonPictures/СостояниеОригиналаПервичногоДокументаОригиналНеПолучен/СостояниеОригиналаПервичногоДокументаОригиналНеПолучен.mdo create mode 100644 SSL/src/CommonPictures/СостояниеОригиналаПервичногоДокументаОригиналПолучен/Picture.zip create mode 100644 SSL/src/CommonPictures/СостояниеОригиналаПервичногоДокументаОригиналПолучен/СостояниеОригиналаПервичногоДокументаОригиналПолучен.mdo create mode 100644 SSL/src/CommonPictures/СтруктураПодчиненности/Picture.zip create mode 100644 SSL/src/CommonPictures/СтруктураПодчиненности/СтруктураПодчиненности.mdo create mode 100644 SSL/src/CommonPictures/Телеграм16х16/Picture.png create mode 100644 SSL/src/CommonPictures/Телеграм16х16/Телеграм16х16.mdo create mode 100644 SSL/src/CommonPictures/УстановитьСостояниеОригиналаПервичногоДокумента/Picture.zip create mode 100644 SSL/src/CommonPictures/УстановитьСостояниеОригиналаПервичногоДокумента/УстановитьСостояниеОригиналаПервичногоДокумента.mdo create mode 100644 SSL/src/CommonPictures/УточнитьСостояниеОригиналаПервичногоДокументаПоПечатнымФормам/Picture.zip create mode 100644 SSL/src/CommonPictures/УточнитьСостояниеОригиналаПервичногоДокументаПоПечатнымФормам/УточнитьСостояниеОригиналаПервичногоДокументаПоПечатнымФормам.mdo create mode 100644 SSL/src/Constants/ИспользоватьУчетОригиналовПервичныхДокументов/ИспользоватьУчетОригиналовПервичныхДокументов.mdo create mode 100644 SSL/src/Constants/ПроверятьИспользованиеУдаляемыхОбъектов/ПроверятьИспользованиеУдаляемыхОбъектов.mdo create mode 100644 SSL/src/DataProcessors/ОписаниеОбработчиковОбновления/Commands/ОписаниеОбработчиковОбновления/CommandModule.bsl create mode 100644 SSL/src/DataProcessors/ОписаниеОбработчиковОбновления/Forms/ОбъектыПересеченияОбработчика/Form.form create mode 100644 SSL/src/DataProcessors/ОписаниеОбработчиковОбновления/Forms/ОбъектыПересеченияОбработчика/Module.bsl create mode 100644 SSL/src/DataProcessors/ОписаниеОбработчиковОбновления/Forms/ФормаВыбораИдентификаторовОбъектовМетаданных/Attributes/СписокИдентификаторов/ExtInfo/ListSettings.dcss create mode 100644 SSL/src/DataProcessors/ОписаниеОбработчиковОбновления/Forms/ФормаВыбораИдентификаторовОбъектовМетаданных/Form.form create mode 100644 SSL/src/DataProcessors/ОписаниеОбработчиковОбновления/Forms/ФормаВыбораИдентификаторовОбъектовМетаданных/Module.bsl create mode 100644 SSL/src/DataProcessors/ОписаниеОбработчиковОбновления/Forms/ФормаОбработчика/Form.form create mode 100644 SSL/src/DataProcessors/ОписаниеОбработчиковОбновления/Forms/ФормаОбработчика/Help/ru.html create mode 100644 SSL/src/DataProcessors/ОписаниеОбработчиковОбновления/Forms/ФормаОбработчика/Module.bsl create mode 100644 SSL/src/DataProcessors/ОписаниеОбработчиковОбновления/Forms/ФормаСпискаОбработчиков/Form.form create mode 100644 SSL/src/DataProcessors/ОписаниеОбработчиковОбновления/Forms/ФормаСпискаОбработчиков/Help/ru.html create mode 100644 SSL/src/DataProcessors/ОписаниеОбработчиковОбновления/Forms/ФормаСпискаОбработчиков/Module.bsl create mode 100644 SSL/src/DataProcessors/ОписаниеОбработчиковОбновления/Help/ru.html create mode 100644 SSL/src/DataProcessors/ОписаниеОбработчиковОбновления/ManagerModule.bsl create mode 100644 SSL/src/DataProcessors/ОписаниеОбработчиковОбновления/ObjectModule.bsl create mode 100644 SSL/src/DataProcessors/ОписаниеОбработчиковОбновления/Templates/cut_tags/Template.txt create mode 100644 SSL/src/DataProcessors/ОписаниеОбработчиковОбновления/ОписаниеОбработчиковОбновления.mdo create mode 100644 SSL/src/DataProcessors/ПодключениеОбсуждений/Commands/НастройкиСообщенийИзДругихПрограмм/CommandModule.bsl create mode 100644 SSL/src/DataProcessors/ПодключениеОбсуждений/Forms/НастройкиСообщенийИзДругихПрограмм/Form.form create mode 100644 SSL/src/DataProcessors/ПодключениеОбсуждений/Forms/НастройкиСообщенийИзДругихПрограмм/Module.bsl create mode 100644 SSL/src/DataProcessors/ПодключениеОбсуждений/Forms/СозданиеБотаВКонтакте/Form.form create mode 100644 SSL/src/DataProcessors/ПодключениеОбсуждений/Forms/СозданиеБотаВКонтакте/Module.bsl create mode 100644 SSL/src/DataProcessors/ПодключениеОбсуждений/Forms/СозданиеБотаТелеграм/Form.form create mode 100644 SSL/src/DataProcessors/ПодключениеОбсуждений/Forms/СозданиеБотаТелеграм/Module.bsl create mode 100644 SSL/src/DataProcessors/ПоискИУдалениеДублей/Forms/ПравилаПоиска/Help/ru.html delete mode 100644 SSL/src/DataProcessors/РаботаСФайлами/Forms/ФайлыВОсновномРабочемКаталоге/Form.form delete mode 100644 SSL/src/DataProcessors/РаботаСФайлами/Forms/ФайлыВОсновномРабочемКаталоге/Help/ru.html delete mode 100644 SSL/src/DataProcessors/РаботаСФайлами/Forms/ФайлыВОсновномРабочемКаталоге/Module.bsl create mode 100644 SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Forms/ВыборОбъектовМетаданныхПоПодсистемам/Form.form create mode 100644 SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Forms/ВыборОбъектовМетаданныхПоПодсистемам/Help/ru.html create mode 100644 SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Forms/ВыборОбъектовМетаданныхПоПодсистемам/Module.bsl create mode 100644 SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Forms/НастройкиУдаленияОбъектов/Form.form create mode 100644 SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Forms/НастройкиУдаленияОбъектов/Module.bsl create mode 100644 SSL/src/DefinedTypes/КурсВалюты/КурсВалюты.mdo create mode 100644 SSL/src/DefinedTypes/ОбъектСУчетомОригиналовПервичныхДокументов/ОбъектСУчетомОригиналовПервичныхДокументов.mdo create mode 100644 SSL/src/Enums/РежимыВыполненияОбработчиков/РежимыВыполненияОбработчиков.mdo create mode 100644 SSL/src/Enums/РежимыВыполненияОтложенныхОбработчиков/РежимыВыполненияОтложенныхОбработчиков.mdo create mode 100644 SSL/src/Enums/СтатусыОбработчиковОбновления/ManagerModule.bsl create mode 100644 SSL/src/Enums/СтатусыОбработчиковОбновления/СтатусыОбработчиковОбновления.mdo create mode 100644 SSL/src/EventSubscriptions/ЗапретитьИспользованиеУдаляемыхОбъектовВКонстантах/ЗапретитьИспользованиеУдаляемыхОбъектовВКонстантах.mdo create mode 100644 SSL/src/EventSubscriptions/ЗапретитьИспользованиеУдаляемыхОбъектовВНаборахЗаписей/ЗапретитьИспользованиеУдаляемыхОбъектовВНаборахЗаписей.mdo create mode 100644 SSL/src/EventSubscriptions/ЗапретитьИспользованиеУдаляемыхОбъектовВНаборахРегистровРасчета/ЗапретитьИспользованиеУдаляемыхОбъектовВНаборахРегистровРасчета.mdo create mode 100644 SSL/src/EventSubscriptions/ЗапретитьИспользованиеУдаляемыхОбъектовВОбъектах/ЗапретитьИспользованиеУдаляемыхОбъектовВОбъектах.mdo rename SSL/src/EventSubscriptions/{ОбновитьПредставлениеВнешнегоПользователя/ОбновитьПредставлениеВнешнегоПользователя.mdo => ОбновитьВнешнегоПользователя/ОбновитьВнешнегоПользователя.mdo} (57%) create mode 100644 SSL/src/FunctionalOptions/ИспользоватьУчетОригиналовПервичныхДокументов/ИспользоватьУчетОригиналовПервичныхДокументов.mdo create mode 100644 SSL/src/InformationRegisters/КодировкиФайлов/ManagerModule.bsl rename SSL/src/InformationRegisters/НастройкиУчетныхЗаписейЭлектроннойПочты/Commands/{Настройки => ДополнительныеНастройки}/CommandModule.bsl (100%) create mode 100644 SSL/src/InformationRegisters/НеудаленныеОбъекты/ManagerModule.bsl create mode 100644 SSL/src/InformationRegisters/НеудаленныеОбъекты/RecordSetModule.bsl create mode 100644 SSL/src/InformationRegisters/НеудаленныеОбъекты/НеудаленныеОбъекты.mdo create mode 100644 SSL/src/InformationRegisters/ОбработчикиОбновления/ОбработчикиОбновления.mdo create mode 100644 SSL/src/InformationRegisters/ОбработчикиОбновленияОбщихДанных/ОбработчикиОбновленияОбщихДанных.mdo create mode 100644 SSL/src/InformationRegisters/ПотокиОбновления/ПотокиОбновления.mdo create mode 100644 SSL/src/InformationRegisters/СостоянияОригиналовПервичныхДокументов/Forms/ИзменениеСостоянийОригиналовПервичныхДокументов/Form.form create mode 100644 SSL/src/InformationRegisters/СостоянияОригиналовПервичныхДокументов/Forms/ИзменениеСостоянийОригиналовПервичныхДокументов/Module.bsl create mode 100644 SSL/src/InformationRegisters/СостоянияОригиналовПервичныхДокументов/Forms/ФормаЗаписи/Form.form create mode 100644 SSL/src/InformationRegisters/СостоянияОригиналовПервичныхДокументов/ManagerModule.bsl create mode 100644 SSL/src/InformationRegisters/СостоянияОригиналовПервичныхДокументов/RecordSetModule.bsl create mode 100644 SSL/src/InformationRegisters/СостоянияОригиналовПервичныхДокументов/СостоянияОригиналовПервичныхДокументов.mdo create mode 100644 SSL/src/InformationRegisters/УдаляемыеОбъекты/RecordSetModule.bsl create mode 100644 SSL/src/InformationRegisters/УдаляемыеОбъекты/УдаляемыеОбъекты.mdo create mode 100644 SSL/src/Reports/АнализПравДоступа/ManagerModule.bsl create mode 100644 SSL/src/Reports/АнализПравДоступа/ObjectModule.bsl create mode 100644 SSL/src/Reports/АнализПравДоступа/Templates/Макет/Template.dcs create mode 100644 SSL/src/Reports/АнализПравДоступа/АнализПравДоступа.mdo create mode 100644 SSL/src/Reports/ПрогрессОбновленияОбластейДанных/ObjectModule.bsl create mode 100644 SSL/src/Reports/ПрогрессОбновленияОбластейДанных/Templates/ОсновнаяСхемаКомпоновкиДанных/Template.dcs create mode 100644 SSL/src/Reports/ПрогрессОбновленияОбластейДанных/ПрогрессОбновленияОбластейДанных.mdo create mode 100644 SSL/src/Roles/ДобавлениеИзменениеСостоянийОригиналовПервичныхДокументов/Rights.rights create mode 100644 SSL/src/Roles/ДобавлениеИзменениеСостоянийОригиналовПервичныхДокументов/ДобавлениеИзменениеСостоянийОригиналовПервичныхДокументов.mdo create mode 100644 SSL/src/Roles/ИзменениеСостоянийОригиналовПервичныхДокументов/Rights.rights create mode 100644 SSL/src/Roles/ИзменениеСостоянийОригиналовПервичныхДокументов/ИзменениеСостоянийОригиналовПервичныхДокументов.mdo create mode 100644 SSL/src/Roles/ЧтениеСостоянийОригиналовПервичныхДокументов/Rights.rights create mode 100644 SSL/src/Roles/ЧтениеСостоянийОригиналовПервичныхДокументов/ЧтениеСостоянийОригиналовПервичныхДокументов.mdo create mode 100644 SSL/src/ScheduledJobs/ИсправлениеУстаревшихАдресов/Schedule.schedule create mode 100644 SSL/src/ScheduledJobs/ИсправлениеУстаревшихАдресов/ИсправлениеУстаревшихАдресов.mdo create mode 100644 SSL/src/ScheduledJobs/ОтключениеПроверкиИспользованияУдаляемыхОбъектов/Schedule.schedule create mode 100644 SSL/src/ScheduledJobs/ОтключениеПроверкиИспользованияУдаляемыхОбъектов/ОтключениеПроверкиИспользованияУдаляемыхОбъектов.mdo create mode 100644 SSL/src/SessionParameters/ВыполняетсяУдалениеОбъектов/ВыполняетсяУдалениеОбъектов.mdo create mode 100644 SSL/src/StyleItems/ДействиеВКолонкеСпискаШрифт/ДействиеВКолонкеСпискаШрифт.mdo create mode 100644 SSL/src/StyleItems/ОбразецНастройкиКолонтитуловШрифт/ОбразецНастройкиКолонтитуловШрифт.mdo create mode 100644 SSL/src/StyleItems/ПравоНедействительногоПользователяФон/ПравоНедействительногоПользователяФон.mdo create mode 100644 SSL/src/StyleItems/ПравоПросмотраФон/ПравоПросмотраФон.mdo create mode 100644 SSL/src/StyleItems/ПравоРедактированияФон/ПравоРедактированияФон.mdo create mode 100644 SSL/src/StyleItems/ПравоСозданияФон/ПравоСозданияФон.mdo create mode 100644 SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/УчетОригиналовПервичныхДокументов/CommandInterface.cmi create mode 100644 SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/УчетОригиналовПервичныхДокументов/УчетОригиналовПервичныхДокументов.mdo diff --git a/SSL/src/BusinessProcesses/Задание/Forms/ФормаБизнесПроцесса/Form.form b/SSL/src/BusinessProcesses/Задание/Forms/ФормаБизнесПроцесса/Form.form index de8cc1f6f..937b7e1ce 100644 --- a/SSL/src/BusinessProcesses/Задание/Forms/ФормаБизнесПроцесса/Form.form +++ b/SSL/src/BusinessProcesses/Задание/Forms/ФормаБизнесПроцесса/Form.form @@ -128,6 +128,7 @@ ru Состояние + false ГруппаСостояниеExtendedTooltip 107 diff --git a/SSL/src/BusinessProcesses/Задание/Forms/ФормаБизнесПроцесса/Module.bsl b/SSL/src/BusinessProcesses/Задание/Forms/ФормаБизнесПроцесса/Module.bsl index 336084322..40e19cd8c 100644 --- a/SSL/src/BusinessProcesses/Задание/Forms/ФормаБизнесПроцесса/Module.bsl +++ b/SSL/src/BusinessProcesses/Задание/Forms/ФормаБизнесПроцесса/Module.bsl @@ -101,6 +101,10 @@ Отложен = (Параметр.Отложен И Параметр.Состояние = ПредопределенноеЗначение("Перечисление.СостоянияПроцессовДляЗапуска.ГотовКСтарту")); ДатаОтложенногоСтарта = Параметр.ДатаОтложенногоСтарта; УстановитьСвойстваЭлементовФормы(ЭтотОбъект); + Если Элементы.ГруппаСостояние.Видимость Тогда + ИнфоНадписьЗаголовок = СтроковыеФункцииКлиент.ФорматированнаяСтрока(СообщениеОСтатусеЗадания(ЭтотОбъект)); + Элементы.ИнфоНадписьЗаголовок.Высота = ?(СтрДлина(ИнфоНадписьЗаголовок) > 80, 2, 1); + КонецЕсли; КонецЕсли; // СтандартныеПодсистемы.РаботаСФайлами @@ -140,6 +144,10 @@ &НаКлиенте Процедура ОбновитьФорму() УстановитьСвойстваЭлементовФормы(ЭтотОбъект); + Если Элементы.ГруппаСостояние.Видимость Тогда + ИнфоНадписьЗаголовок = СтроковыеФункцииКлиент.ФорматированнаяСтрока(СообщениеОСтатусеЗадания(ЭтотОбъект)); + Элементы.ИнфоНадписьЗаголовок.Высота = ?(СтрДлина(ИнфоНадписьЗаголовок) > 80, 2, 1); + КонецЕсли; ОбновитьДоступностьКомандОстановки(); КонецПроцедуры @@ -500,6 +508,10 @@ КонецЕсли; УстановитьСвойстваЭлементовФормы(ЭтотОбъект); + Если Элементы.ГруппаСостояние.Видимость Тогда + ИнфоНадписьЗаголовок = СтроковыеФункции.ФорматированнаяСтрока(СообщениеОСтатусеЗадания(ЭтотОбъект)); + Элементы.ИнфоНадписьЗаголовок.Высота = ?(СтрДлина(ИнфоНадписьЗаголовок) > 80, 2, 1); + КонецЕсли; КонецПроцедуры @@ -573,23 +585,15 @@ КонецЕсли; КонецЕсли; - УстановитьСвойстваГруппеСостояний(Форма); + Форма.Элементы.ГруппаСостояние.Видимость = Форма.Объект.Завершен Или ОбъектСтартован(Форма); УстановитьДоступностьПроверяющего(Форма); КонецПроцедуры &НаКлиентеНаСервереБезКонтекста -Процедура УстановитьСвойстваГруппеСостояний(Форма) - - ОтображатьГруппу = Форма.Объект.Завершен Или ОбъектСтартован(Форма); - Форма.Элементы.ГруппаСостояние.Видимость = ОтображатьГруппу; +Функция СообщениеОСтатусеЗадания(Форма) - Если НЕ ОтображатьГруппу Тогда - Возврат; - КонецЕсли; - - МассивСтрок = Новый Массив; - Высота = 1; + ТекстСостояния = ""; Если Форма.Объект.Завершен Тогда ДатаЗавершенияСтрокой = ?(Форма.ИспользоватьДатуИВремяВСрокахЗадач, @@ -598,34 +602,28 @@ НСтр("ru = 'Задание выполнено %1.'"), НСтр("ru = 'Задание отменено %1.'")); ТекстСостояния = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаТекста, ДатаЗавершенияСтрокой); - МассивСтрок.Добавить(ТекстСостояния); Для каждого Элемент Из Форма.Элементы Цикл Если ТипЗнч(Элемент) <> Тип("ПолеФормы") И ТипЗнч(Элемент) <> Тип("ГруппаФормы") Тогда Продолжить; КонецЕсли; Элемент.ТолькоПросмотр = Истина; - КонецЦикла; + КонецЦикла; ИначеЕсли Форма.Объект.Стартован Тогда ТекстСостояния = ?(Форма.ИзменятьЗаданияЗаднимЧислом, - НСтр("ru = 'Изменения формулировки, важности, автора, а также перенос сроков исполнения и проверки задания вступят в силу немедленно для ранее выданной задачи.'"), + НСтр("ru = 'Изменения формулировки, важности, автора, а также перенос сроков исполнения и проверки задания вступят в силу немедленно для ранее выданной задачи.'"), НСтр("ru = 'Изменения формулировки, важности, автора, а также перенос сроков исполнения и проверки задания не будут отражены в ранее выданной задаче.'")); - МассивСтрок.Добавить(ТекстСостояния); - Высота = 2; - ИначеЕсли Форма.Отложен Тогда ДатаОтложенногоСтартаСтрокой = ?(Форма.ИспользоватьДатуИВремяВСрокахЗадач, Формат(Форма.ДатаОтложенногоСтарта, "ДЛФ=DT"), Формат(Форма.ДатаОтложенногоСтарта, "ДЛФ=D")); - ТекстСостояния = НСтр("ru = 'Задание будет запущено'") + " "; - МассивСтрок.Добавить(ТекстСостояния); - МассивСтрок.Добавить(Новый ФорматированнаяСтрока(ДатаОтложенногоСтартаСтрокой,,,, "ОткрытьНастройкуОтложенногоСтарта")); + ТекстСостояния = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Задание будет запущено %1'"), + ДатаОтложенногоСтартаСтрокой); КонецЕсли; - Форма.ИнфоНадписьЗаголовок = Новый ФорматированнаяСтрока(МассивСтрок); - Форма.Элементы.ИнфоНадписьЗаголовок.МаксимальнаяВысота = Высота; + Возврат ТекстСостояния; -КонецПроцедуры +КонецФункции &НаСервере Процедура ПроверитьДатуЗавершенияОтложенногоПроцесса(ПроверяемыйОбъект, Отказ) diff --git a/SSL/src/BusinessProcesses/Задание/ManagerModule.bsl b/SSL/src/BusinessProcesses/Задание/ManagerModule.bsl index 892538960..13498810f 100644 --- a/SSL/src/BusinessProcesses/Задание/ManagerModule.bsl +++ b/SSL/src/BusinessProcesses/Задание/ManagerModule.bsl @@ -18,7 +18,8 @@ // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: -// Массив Из Строка - +// Массив Из Строка +// Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт Результат = Новый Массив; @@ -211,9 +212,9 @@ // Устанавливает состояние элементов формы задачи. // // Параметры: -// Форма - ФормаКлиентскогоПриложения - где: -// * Элементы - ВсеЭлементыФормы - где: -// ** Предмет - РасширениеПоляФормыДляПоляНадписи - +// Форма - ФормаКлиентскогоПриложения: +// * Элементы - ВсеЭлементыФормы: +// ** Предмет - РасширениеПоляФормыДляПоляНадписи // Процедура УстановитьСостояниеЭлементовФормыЗадачи(Форма) Экспорт diff --git a/SSL/src/BusinessProcesses/Задание/ObjectModule.bsl b/SSL/src/BusinessProcesses/Задание/ObjectModule.bsl index 161655318..61e947060 100644 --- a/SSL/src/BusinessProcesses/Задание/ObjectModule.bsl +++ b/SSL/src/BusinessProcesses/Задание/ObjectModule.bsl @@ -127,9 +127,9 @@ // Обработчики событий элементов карты маршрута. // Параметры: -// ТочкаМаршрутаБизнесПроцесса - ТочкаМаршрутаБизнесПроцессаСсылка.Задание - -// ФормируемыеЗадачи - Массив из ЗадачаОбъект - -// Отказ - Булево - +// ТочкаМаршрутаБизнесПроцесса - ТочкаМаршрутаБизнесПроцессаСсылка.Задание +// ФормируемыеЗадачи - Массив из ЗадачаОбъект +// Отказ - Булево // Процедура ВыполнитьПриСозданииЗадач(ТочкаМаршрутаБизнесПроцесса, ФормируемыеЗадачи, Отказ) @@ -172,11 +172,10 @@ Записать(); КонецПроцедуры - // Параметры: -// ТочкаМаршрутаБизнесПроцесса - ТочкаМаршрутаБизнесПроцессаСсылка.Задание - -// ФормируемыеЗадачи - Массив из ЗадачаОбъект - -// Отказ - Булево - +// ТочкаМаршрутаБизнесПроцесса - ТочкаМаршрутаБизнесПроцессаСсылка.Задание +// ФормируемыеЗадачи - Массив из ЗадачаОбъект +// Отказ - Булево // Процедура ПроверитьПриСозданииЗадач(ТочкаМаршрутаБизнесПроцесса, ФормируемыеЗадачи, Отказ) diff --git a/SSL/src/Catalogs/Валюты/ManagerModule.bsl b/SSL/src/Catalogs/Валюты/ManagerModule.bsl index 8d5d5d145..fb7afe9ee 100644 --- a/SSL/src/Catalogs/Валюты/ManagerModule.bsl +++ b/SSL/src/Catalogs/Валюты/ManagerModule.bsl @@ -18,7 +18,8 @@ // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: -// Массив Из Строка - +// Массив Из Строка +// Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт Результат = Новый Массив; diff --git a/SSL/src/Catalogs/ВариантыОтветовАнкет/ManagerModule.bsl b/SSL/src/Catalogs/ВариантыОтветовАнкет/ManagerModule.bsl index 7fe56bea7..4ba53c400 100644 --- a/SSL/src/Catalogs/ВариантыОтветовАнкет/ManagerModule.bsl +++ b/SSL/src/Catalogs/ВариантыОтветовАнкет/ManagerModule.bsl @@ -18,7 +18,8 @@ // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: -// Массив Из Строка - +// Массив Из Строка +// Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт Результат = Новый Массив; diff --git a/SSL/src/Catalogs/ВариантыОтчетов/Forms/РазмещениеВРазделах/Module.bsl b/SSL/src/Catalogs/ВариантыОтчетов/Forms/РазмещениеВРазделах/Module.bsl index 30bd35bed..d5d235720 100644 --- a/SSL/src/Catalogs/ВариантыОтчетов/Forms/РазмещениеВРазделах/Module.bsl +++ b/SSL/src/Catalogs/ВариантыОтчетов/Forms/РазмещениеВРазделах/Module.bsl @@ -172,14 +172,14 @@ // Возвращает данные для заполнения дерева разделов. // // Возвращаемое значение: -// Структура - где: -// * ОтфильтрованныеВарианты - ТаблицаЗначений - где: -// ** Ссылка - СправочникСсылка.ВариантыОтчетов - -// ** Причина - Число - -// * ВхожденияПодсистем - ТаблицаЗначений - где: -// ** Ссылка - СправочникСсылка.ВариантыОтчетов - -// ** Количество - Число - -// ** Важность - Строка - +// Структура: +// * ОтфильтрованныеВарианты - ТаблицаЗначений: +// ** Ссылка - СправочникСсылка.ВариантыОтчетов +// ** Причина - Число +// * ВхожденияПодсистем - ТаблицаЗначений: +// ** Ссылка - СправочникСсылка.ВариантыОтчетов +// ** Количество - Число +// ** Важность - Строка // &НаСервере Функция ДанныеЗаполненияРазделов() @@ -347,36 +347,38 @@ // Добавляет рекурсивно строку в дерево подсистем. // // Параметры: -// ПриемникРодитель - СтрокаДереваЗначений, ДеревоЗначений - где: -// * Ссылка - СправочникСсылка.ИдентификаторыОбъектовРасширений - -// - СправочникСсылка.ИдентификаторыОбъектовМетаданных - -// * Имя - Строка - -// * ПолноеИмя - Строка - -// * Представление - Строка - -// * РазделСсылка - СправочникСсылка.ИдентификаторыОбъектовРасширений - -// - СправочникСсылка.ИдентификаторыОбъектовМетаданных - -// * РазделПолноеИмя - Строка - -// * Приоритет - Строка - -// * ПолноеПредставление - Строка - -// * Важность - Строка - -// * Модифицированность - Булево - -// ИсточникРодитель - СтрокаДереваЗначений, ДеревоЗначений - где: -// * Ссылка - СправочникСсылка.ИдентификаторыОбъектовРасширений - -// - СправочникСсылка.ИдентификаторыОбъектовМетаданных - -// * Имя - Строка - -// * ПолноеИмя - Строка - -// * Представление - Строка - -// * РазделСсылка - СправочникСсылка.ИдентификаторыОбъектовРасширений - -// - СправочникСсылка.ИдентификаторыОбъектовМетаданных - -// * РазделПолноеИмя - Строка - -// * Приоритет - Строка - -// * ПолноеПредставление - Строка - -// * Важность - Строка - -// * Модифицированность - Булево - -// ВхожденияПодсистем - ТаблицаЗначений - где: -// * Ссылка - СправочникСсылка.ВариантыОтчетов - -// * Количество - Число - -// * Важность - Строка - +// ПриемникРодитель - СтрокаДереваЗначений +// - ДеревоЗначений: +// * Ссылка - СправочникСсылка.ИдентификаторыОбъектовРасширений +// - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// * Имя - Строка +// * ПолноеИмя - Строка +// * Представление - Строка +// * РазделСсылка - СправочникСсылка.ИдентификаторыОбъектовРасширений +// - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// * РазделПолноеИмя - Строка +// * Приоритет - Строка +// * ПолноеПредставление - Строка +// * Важность - Строка +// * Модифицированность - Булево +// ИсточникРодитель - СтрокаДереваЗначений +// - ДеревоЗначений: +// * Ссылка - СправочникСсылка.ИдентификаторыОбъектовРасширений +// - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// * Имя - Строка +// * ПолноеИмя - Строка +// * Представление - Строка +// * РазделСсылка - СправочникСсылка.ИдентификаторыОбъектовРасширений +// - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// * РазделПолноеИмя - Строка +// * Приоритет - Строка +// * ПолноеПредставление - Строка +// * Важность - Строка +// * Модифицированность - Булево +// ВхожденияПодсистем - ТаблицаЗначений: +// * Ссылка - СправочникСсылка.ВариантыОтчетов +// * Количество - Число +// * Важность - Строка // &НаСервере Процедура ДобавитьПодсистемыВДерево(ПриемникРодитель, ИсточникРодитель, ВхожденияПодсистем) diff --git a/SSL/src/Catalogs/ВариантыОтчетов/Forms/СбросНастроекРазмещения/Module.bsl b/SSL/src/Catalogs/ВариантыОтчетов/Forms/СбросНастроекРазмещения/Module.bsl index bc19ce692..c62c36222 100644 --- a/SSL/src/Catalogs/ВариантыОтчетов/Forms/СбросНастроекРазмещения/Module.bsl +++ b/SSL/src/Catalogs/ВариантыОтчетов/Forms/СбросНастроекРазмещения/Module.bsl @@ -10,14 +10,14 @@ &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) - - Если Не Параметры.Свойство("Варианты") Или ТипЗнч(Параметры.Варианты) <> Тип("Массив") Тогда + Варианты = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Параметры, "Варианты"); // Массив из СправочникСсылка.ВариантыОтчетов + Если ТипЗнч(Варианты) <> Тип("Массив") Тогда ТекстОшибки = НСтр("ru = 'Не указаны варианты отчетов.'"); Возврат; КонецЕсли; ОпределитьПоведениеВМобильномКлиенте(); - ИзменяемыеВарианты.ЗагрузитьЗначения(Параметры.Варианты); + ИзменяемыеВарианты.ЗагрузитьЗначения(Варианты); Отфильтровать(); КонецПроцедуры diff --git a/SSL/src/Catalogs/ВариантыОтчетов/Forms/СбросПользовательскихНастроек/Module.bsl b/SSL/src/Catalogs/ВариантыОтчетов/Forms/СбросПользовательскихНастроек/Module.bsl index 7171b403c..3ca568b8f 100644 --- a/SSL/src/Catalogs/ВариантыОтчетов/Forms/СбросПользовательскихНастроек/Module.bsl +++ b/SSL/src/Catalogs/ВариантыОтчетов/Forms/СбросПользовательскихНастроек/Module.bsl @@ -10,20 +10,20 @@ &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) - - Если Не Параметры.Свойство("Варианты") Или ТипЗнч(Параметры.Варианты) <> Тип("Массив") Тогда + Варианты = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Параметры, "Варианты"); // Массив из СправочникСсылка.ВариантыОтчетов + Если ТипЗнч(Варианты) <> Тип("Массив") Тогда ТекстОшибки = НСтр("ru = 'Не указаны варианты отчетов.'"); Возврат; КонецЕсли; - Если Не ЕстьПользовательскиеНастройки(Параметры.Варианты) Тогда + Если Не ЕстьПользовательскиеНастройки(Варианты) Тогда ТекстОшибки = НСтр("ru = 'Пользовательские настройки выбранных вариантов отчетов (%1 шт) не заданы или уже сброшены.'"); - ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстОшибки, Формат(Параметры.Варианты.Количество(), "ЧН=0; ЧГ=0")); + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстОшибки, Формат(Варианты.Количество(), "ЧН=0; ЧГ=0")); Возврат; КонецЕсли; ОпределитьПоведениеВМобильномКлиенте(); - ИзменяемыеВарианты.ЗагрузитьЗначения(Параметры.Варианты); + ИзменяемыеВарианты.ЗагрузитьЗначения(Варианты); КонецПроцедуры &НаКлиенте diff --git a/SSL/src/Catalogs/ВариантыОтчетов/Forms/ФормаСписка/Module.bsl b/SSL/src/Catalogs/ВариантыОтчетов/Forms/ФормаСписка/Module.bsl index 7d82b4f81..7252b43b9 100644 --- a/SSL/src/Catalogs/ВариантыОтчетов/Forms/ФормаСписка/Module.bsl +++ b/SSL/src/Catalogs/ВариантыОтчетов/Forms/ФормаСписка/Module.bsl @@ -31,15 +31,19 @@ РежимРаботыФормы = "ВсеОтчетыРаздела"; РодительскиеЭлементы = Новый Массив; // Массив из ДанныеФормыЭлементДерева РодительскиеЭлементы.Добавить(ДеревоПодсистем.ПолучитьЭлементы()[0]); + Пока РодительскиеЭлементы.Количество() > 0 Цикл - РодительскийЭлемент = РодительскиеЭлементы[0].ПолучитьЭлементы(); // ДанныеФормыКоллекцияЭлементовДерева + РодительскийЭлемент = ЭлементДереваПодсистем(РодительскиеЭлементы); + ДочерниеЭлементы = РодительскийЭлемент.ПолучитьЭлементы(); РодительскиеЭлементы.Удалить(0); - Для Каждого ДочернийЭлемент Из РодительскийЭлемент Цикл + + Для Каждого ДочернийЭлемент Из ДочерниеЭлементы Цикл Если ДочернийЭлемент.Ссылка = Параметры.РазделСсылка Тогда Элементы.ДеревоПодсистем.ТекущаяСтрока = ДочернийЭлемент.ПолучитьИдентификатор(); РодительскиеЭлементы.Очистить(); Прервать; КонецЕсли; + РодительскиеЭлементы.Добавить(ДочернийЭлемент); КонецЦикла; КонецЦикла; @@ -339,17 +343,17 @@ // Возвращает параметры перетаскивания. // // Параметры: -// ПараметрыПеретаскивания - ПараметрыПеретаскивания - -// Строка - Число - +// ПараметрыПеретаскивания - ПараметрыПеретаскивания +// Строка - Число // // Возвращаемое значение: -// Неопределено - -// Структура - где: -// * Варианты - Структура - где: -// ** Массив - Массив из ДанныеФормыЭлементДерева - -// ** Всего - Число - -// ** Представление - Строка - -// * Действие - Строка - +// Неопределено +// Структура: +// * Варианты - Структура: +// ** Массив - Массив из ДанныеФормыЭлементДерева +// ** Всего - Число +// ** Представление - Строка +// * Действие - Строка // * Приемник - см. СвойстваДанныхСтроки // * Источник - см. СвойстваДанныхСтроки // @@ -421,12 +425,12 @@ // Конструктор свойств данных строки. // // Возвращаемое значение: -// Структура - где: -// * Ссылка - Неопределено - -// - СправочникСсылка.ИдентификаторыОбъектовРасширений - -// - СправочникСсылка.ИдентификаторыОбъектовМетаданных - -// * ПолноеПредставление - Строка - -// * Идентификатор - Число - +// Структура: +// * Ссылка - Неопределено +// - СправочникСсылка.ИдентификаторыОбъектовРасширений +// - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// * ПолноеПредставление - Строка +// * Идентификатор - Число // &НаКлиенте Функция СвойстваДанныхСтроки() @@ -443,15 +447,15 @@ // Обработчик завершения перетаскивания. // // Параметры: -// Ответ - КодВозвратаДиалога - -// ПараметрыРазмещения - Структура - где: -// * Варианты - Структура - где: -// ** Массив - Массив из ДанныеФормыЭлементДерева - -// ** Всего - Число - -// ** Представление - Строка - -// * Действие - Строка - -// * Приемник - ДанныеФормыЭлементДерева - -// * Источник - ДанныеФормыЭлементДерева - +// Ответ - КодВозвратаДиалога +// ПараметрыРазмещения - Структура: +// * Варианты - Структура: +// ** Массив - Массив из ДанныеФормыЭлементДерева +// ** Всего - Число +// ** Представление - Строка +// * Действие - Строка +// * Приемник - ДанныеФормыЭлементДерева +// * Источник - ДанныеФормыЭлементДерева // &НаКлиенте Процедура ДеревоПодсистемПеретаскиваниеЗавершение(Ответ, ПараметрыРазмещения) Экспорт @@ -638,10 +642,10 @@ // ПараметрыРазмещения - см. ПараметрыРазмещения // // Возвращаемое значение: -// Структура - где: -// * Размещено - Число - -// * УжеРазмещены - Строка - -// * НеМогутРазмещаться - Строка - +// Структура: +// * Размещено - Число +// * УжеРазмещены - Строка +// * НеМогутРазмещаться - Строка // &НаСервере Функция РазместитьВариантыВПодсистеме(ПараметрыРазмещения) @@ -806,4 +810,31 @@ КонецЕсли; КонецПроцедуры +// Параметры: +// ЭлементыДерева - Массив из ДанныеФормыЭлементДерева: +// * Ссылка - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// - СправочникСсылка.ИдентификаторыОбъектовРасширений +// * Представление - Строка +// * Имя - Строка +// * ПолноеИмя - Строка +// * Приоритет - Строка +// * ПолноеПредставление - Строка +// +// Возвращаемое значение: +// ДанныеФормыЭлементДерева: +// * Ссылка - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// - СправочникСсылка.ИдентификаторыОбъектовРасширений +// * Представление - Строка +// * Имя - Строка +// * ПолноеИмя - Строка +// * Приоритет - Строка +// * ПолноеПредставление - Строка +// +&НаСервере +Функция ЭлементДереваПодсистем(ЭлементыДерева) + + Возврат ЭлементыДерева[0]; + +КонецФункции + #КонецОбласти \ No newline at end of file diff --git a/SSL/src/Catalogs/ВариантыОтчетов/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/ВариантыОтчетов/Forms/ФормаЭлемента/Module.bsl index 699afbaa6..79f51c909 100644 --- a/SSL/src/Catalogs/ВариантыОтчетов/Forms/ФормаЭлемента/Module.bsl +++ b/SSL/src/Catalogs/ВариантыОтчетов/Forms/ФормаЭлемента/Module.bsl @@ -251,14 +251,16 @@ &НаКлиенте Процедура ПодобратьПользователей(Команда) - ВариантыОтчетовКлиент.ПодобратьПользователейВариантаОтчета(ЭтотОбъект); + ВариантыОтчетовКлиент.ПодобратьПользователейВариантаОтчета( + ЭтотОбъект, Элементы.ПользователиВариантаГруппаПодобрать.Видимость); КонецПроцедуры &НаКлиенте Процедура ПодобратьГруппыВнешнихПользователей(Команда) - ВариантыОтчетовКлиент.ПодобратьПользователейВариантаОтчета(ЭтотОбъект, Истина); + ВариантыОтчетовКлиент.ПодобратьПользователейВариантаОтчета( + ЭтотОбъект, Элементы.ПользователиВариантаГруппаПодобрать.Видимость, Истина); КонецПроцедуры diff --git a/SSL/src/Catalogs/ВариантыОтчетов/ManagerModule.bsl b/SSL/src/Catalogs/ВариантыОтчетов/ManagerModule.bsl index b5f906a4f..4037d5e13 100644 --- a/SSL/src/Catalogs/ВариантыОтчетов/ManagerModule.bsl +++ b/SSL/src/Catalogs/ВариантыОтчетов/ManagerModule.bsl @@ -18,7 +18,8 @@ // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: -// Массив Из Строка - +// Массив Из Строка +// Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт Результат = Новый Массив; diff --git a/SSL/src/Catalogs/ВариантыОтчетов/ObjectModule.bsl b/SSL/src/Catalogs/ВариантыОтчетов/ObjectModule.bsl index ce88ae88c..2172f5db9 100644 --- a/SSL/src/Catalogs/ВариантыОтчетов/ObjectModule.bsl +++ b/SSL/src/Catalogs/ВариантыОтчетов/ObjectModule.bsl @@ -88,17 +88,7 @@ ИнтерактивнаяПометкаУдаления = ?(Пользовательский, ПометкаУдаления, Ложь); КонецЕсли; - // Удаление из табличной части подсистем, помеченных на удаление. - УдаляемыеСтроки = Новый Массив; - Для Каждого СтрокаРазмещения Из Размещение Цикл - Если СтрокаРазмещения.Подсистема.ПометкаУдаления = Истина Тогда - УдаляемыеСтроки.Добавить(СтрокаРазмещения); - КонецЕсли; - КонецЦикла; - Для Каждого СтрокаРазмещения Из УдаляемыеСтроки Цикл - Размещение.Удалить(СтрокаРазмещения); - КонецЦикла; - + ПроверитьРазмещение(); ЗаполнитьПоляДляПоиска(); КонецПроцедуры @@ -205,6 +195,31 @@ КонецПроцедуры +Процедура ПроверитьРазмещение() + + Если ЗначениеЗаполнено(Контекст) Тогда + + Размещение.Очистить(); + Возврат; + + КонецЕсли; + + // Удаление из табличной части подсистем, помеченных на удаление. + УдаляемыеСтроки = Новый Массив; + Для Каждого СтрокаРазмещения Из Размещение Цикл + + Если СтрокаРазмещения.Подсистема.ПометкаУдаления = Истина Тогда + УдаляемыеСтроки.Добавить(СтрокаРазмещения); + КонецЕсли; + + КонецЦикла; + + Для Каждого СтрокаРазмещения Из УдаляемыеСтроки Цикл + Размещение.Удалить(СтрокаРазмещения); + КонецЦикла; + +КонецПроцедуры + // Заполнение реквизитов НаименованияПолей и НаименованияПараметровИОтборов. Процедура ЗаполнитьПоляДляПоиска() diff --git a/SSL/src/Catalogs/ВариантыОтчетов/ВариантыОтчетов.mdo b/SSL/src/Catalogs/ВариантыОтчетов/ВариантыОтчетов.mdo index fdaeda2de..c1d5394ad 100644 --- a/SSL/src/Catalogs/ВариантыОтчетов/ВариантыОтчетов.mdo +++ b/SSL/src/Catalogs/ВариантыОтчетов/ВариантыОтчетов.mdo @@ -261,6 +261,28 @@ Use Use + + Контекст + + ru + Контекст + + + String + + 430 + + + + ru + Служебный реквизит. Полное имя объекта метаданных, в контексте которого формируется вариант отчета. Используется, как разделитель вариантов отчетов. + + + + + Use + Use + НаименованияПараметровИОтборов diff --git a/SSL/src/Catalogs/ВерсииРасширений/ManagerModule.bsl b/SSL/src/Catalogs/ВерсииРасширений/ManagerModule.bsl index 45f30f82b..d6fc0fc14 100644 --- a/SSL/src/Catalogs/ВерсииРасширений/ManagerModule.bsl +++ b/SSL/src/Catalogs/ВерсииРасширений/ManagerModule.bsl @@ -60,7 +60,7 @@ // расширений, независимо от установленных разделителей. // // Возвращаемое значение: -// ФиксированнаяСтруктура - со свойствами: +// ФиксированнаяСтруктура: // * Основные - Строка - контрольная сумма всех расширений, кроме исправительных расширений. // * Исправления - Строка - контрольная сумма всех исправительных расширений. // @@ -131,6 +131,15 @@ УстановленныеРасширения.Вставить("ОсновныеСостояние", КонтрольныеСуммыРасширений(Основные, "Все")); УстановленныеРасширения.Вставить("ИсправленияСостояние", КонтрольныеСуммыРасширений(Исправления, "Все")); + Если ПриЗапуске + И АктивныеРасширения.Количество() = 0 + И НеподключенныеРасширения.Количество() = 0 + И РасширенияБазыДанных.Количество() <> 0 + И СтандартныеПодсистемыСервер.ЭтоБазоваяВерсияКонфигурации() Тогда + + УстановленныеРасширения.Вставить("РасширенияНедоступны"); + КонецЕсли; + Возврат Новый ФиксированнаяСтруктура(УстановленныеРасширения); КонецФункции @@ -138,12 +147,16 @@ // Возвращает признак изменения состава расширений после запуска сеанса. // // Возвращаемое значение: -// Булево - +// Булево // Функция РасширенияИзмененыДинамически() Экспорт УстановитьПривилегированныйРежим(Истина); + Если ПараметрыСеанса.УстановленныеРасширения.Свойство("РасширенияНедоступны") Тогда + Возврат Ложь; + КонецЕсли; + УстановленныеРасширения = УстановленныеРасширения(); Возврат ПараметрыСеанса.УстановленныеРасширения.ОсновныеСостояние <> УстановленныеРасширения.ОсновныеСостояние @@ -151,17 +164,16 @@ КонецФункции -// Структура - со свойствами: -// * Расширения - Структура со свойствами: +// Возвращает информацию по измененным расширениям и исправлениям. +// +// Возвращаемое значение: +// Структура: +// * Расширения - Структура: // * Добавлено - Число // * Удалено - Число -// * Изменено - Число -// * СписокНовых - Массив из Строка -// * Исправления - Структура со свойствами: +// * Исправления - Структура: // * Добавлено - Число // * Удалено - Число -// * Изменено - Число -// * СписокНовых - Массив из Строка // Функция ДинамическиИзмененныеРасширения() Экспорт @@ -506,7 +518,7 @@ // Для общих форм Расширения, УстановленныеИсправления. // // Возвращаемое значение: -// РасширениеКонфигурации, Неопределено - +// РасширениеКонфигурации, Неопределено // Функция НайтиРасширение(ИдентификаторРасширения) Экспорт @@ -527,7 +539,7 @@ // Для общих форм Расширения, УстановленныеИсправления. // // Параметры: -// Расширение - РасширениеКонфигурации - +// Расширение - РасширениеКонфигурации // Процедура ОтключитьПредупрежденияБезопасности(Расширение) Экспорт @@ -638,7 +650,7 @@ // Для общих форм Расширения, УстановленныеИсправления. // // Возвращаемое значение: -// Массив Из УникальныйИдентификатор - +// Массив Из УникальныйИдентификатор // Функция ЗапросыНаОтменуРазрешенийИспользованияВнешнегоМодуля(ИдентификаторыРасширений) Экспорт diff --git a/SSL/src/Catalogs/ВерсииФайлов/ManagerModule.bsl b/SSL/src/Catalogs/ВерсииФайлов/ManagerModule.bsl index ddd3aa33f..a4f097806 100644 --- a/SSL/src/Catalogs/ВерсииФайлов/ManagerModule.bsl +++ b/SSL/src/Catalogs/ВерсииФайлов/ManagerModule.bsl @@ -18,7 +18,8 @@ // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: -// Массив Из Строка - +// Массив Из Строка +// Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт РедактируемыеРеквизиты = Новый Массив; diff --git a/SSL/src/Catalogs/ВерсииФайлов/ВерсииФайлов.mdo b/SSL/src/Catalogs/ВерсииФайлов/ВерсииФайлов.mdo index e5e24dfb5..a9cb87a2e 100644 --- a/SSL/src/Catalogs/ВерсииФайлов/ВерсииФайлов.mdo +++ b/SSL/src/Catalogs/ВерсииФайлов/ВерсииФайлов.mdo @@ -121,6 +121,7 @@ ru + Catalog.ВерсииФайлов.StandardAttribute.Owner Managed Use diff --git a/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ИсправлениеВидовКонтактнойИнформации/Module.bsl b/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ИсправлениеВидовКонтактнойИнформации/Module.bsl index 6025fd3f8..27c03e3ad 100644 --- a/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ИсправлениеВидовКонтактнойИнформации/Module.bsl +++ b/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ИсправлениеВидовКонтактнойИнформации/Module.bsl @@ -14,6 +14,10 @@ ИдентификаторПроверки = Параметры.ИдентификаторПроверки; УстановитьТекущуюСтраницу(ЭтотОбъект, "Вопрос"); + Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда + ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиФормы.Авто; + КонецЕсли; + КонецПроцедуры #КонецОбласти @@ -79,7 +83,7 @@ Процедура ИсправитьПроблемуВФонеЗавершение(Результат, ДополнительныеПараметры) Экспорт ДлительнаяОперация = Неопределено; - + Если Результат = Неопределено Тогда УстановитьТекущуюСтраницу(ЭтотОбъект, "ИдетИсправлениеПроблемы"); Возврат; diff --git a/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаСписка/Form.form b/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаСписка/Form.form index 1f3230b7e..814f9b5f5 100644 --- a/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаСписка/Form.form +++ b/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаСписка/Form.form @@ -101,7 +101,7 @@ true - Список.Ref + Список.Ссылка СсылкаExtendedTooltip @@ -139,6 +139,10 @@ Left true + + Selection + СписокВыбор + BeforeAddRow СписокПередНачаломДобавления @@ -227,6 +231,32 @@ СписокКонтекстноеМеню 2 + + СписокКонтекстноеМенюПерейтиКСписку + 57 + true + true + + true + + + СписокКонтекстноеМенюПерейтиКСпискуРасширеннаяПодсказка + 58 + Label + true + true + + Left + + + Form.Command.ПерейтиКСписку + Normal + Auto + true + true + UserCmds + Auto + true Tree @@ -272,6 +302,33 @@ ФормаКоманднаяПанель -1 + + ФормаПерейтиКСписку + 55 + true + true + + true + + + ФормаПерейтиКСпискуРасширеннаяПодсказка + 56 + Label + true + true + + Left + + + Form.Command.ПерейтиКСписку + Normal + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + Left true @@ -302,15 +359,18 @@ true - - Список.Ref - Список.ИндексПиктограммы Список.РеквизитДопУпорядочивания + + Список.Ссылка + + + Список.ЭтоГруппа +
true
ВЫБРАТЬ @@ -361,22 +421,23 @@ ИНАЧЕ 3 КОНЕЦ КОНЕЦ КАК ИндексПиктограммы, - СправочникВидыКонтактнойИнформации.Ссылка, + СправочникВидыКонтактнойИнформации.Ссылка КАК Ссылка, ВЫБОР КОГДА &ЭтоОсновнойЯзык - ТОГДА СправочникВидыКонтактнойИнформации.Наименование + ТОГДА СправочникВидыКонтактнойИнформации.Наименование ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ВидыКонтактнойИнформацииПредставления.Наименование, СправочникВидыКонтактнойИнформации.Наименование) КАК СТРОКА(150)) КОНЕЦ КАК Наименование, - СправочникВидыКонтактнойИнформации.РеквизитДопУпорядочивания, - СправочникВидыКонтактнойИнформации.Используется + СправочникВидыКонтактнойИнформации.РеквизитДопУпорядочивания КАК РеквизитДопУпорядочивания, + СправочникВидыКонтактнойИнформации.Используется КАК Используется, + СправочникВидыКонтактнойИнформации.ЭтоГруппа КАК ЭтоГруппа ИЗ Справочник.ВидыКонтактнойИнформации КАК СправочникВидыКонтактнойИнформации ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыКонтактнойИнформации.Представления КАК ВидыКонтактнойИнформацииПредставления ПО (ВидыКонтактнойИнформацииПредставления.Ссылка = СправочникВидыКонтактнойИнформации.Ссылка) - И ВидыКонтактнойИнформацииПредставления.КодЯзыка = &КодЯзыка + И (ВидыКонтактнойИнформацииПредставления.КодЯзыка = &КодЯзыка) ГДЕ - СправочникВидыКонтактнойИнформации.Используется И ЕстьNULL(СправочникВидыКонтактнойИнформации.Родитель.Используется, Истина) - + СправочникВидыКонтактнойИнформации.Используется + И ЕСТЬNULL(СправочникВидыКонтактнойИнформации.Родитель.Используется, ИСТИНА) Catalog.ВидыКонтактнойИнформации true true @@ -385,6 +446,28 @@ true
+ + ПерейтиКСписку + + <key>ru</key> + <value>Перейти к списку...</value> + + 1 + + ru + Перейти к списку с контактной информацией + + + true + + + + ПерейтиКСписку + + + Auto + Auto + diff --git a/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаСписка/Module.bsl b/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаСписка/Module.bsl index bc8183e0c..2b77781fe 100644 --- a/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаСписка/Module.bsl +++ b/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаСписка/Module.bsl @@ -40,8 +40,33 @@ #КонецОбласти +#Область ОбработчикиСобытийЭлементовТаблицыФормыСписок + +&НаКлиенте +Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + Если Элементы.Список.ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + ТекущиеДанные = Элементы.Список.ТекущиеДанные; + Если ТекущиеДанные.ЭтоГруппа Тогда + СтандартнаяОбработка = Ложь; + ПерейтиКСписку(Неопределено); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + #Область ОбработчикиКомандФормы +&НаКлиенте +Процедура ПерейтиКСписку(Команда) + Если Элементы.Список.ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + ОткрытьФорму(ИмяФормыСписка(Элементы.Список.ТекущиеДанные.Ссылка)); +КонецПроцедуры + // СтандартныеПодсистемы.ПодключаемыеКоманды &НаКлиенте Процедура Подключаемый_ВыполнитьКоманду(Команда) @@ -81,4 +106,46 @@ КонецПроцедуры +&НаСервереБезКонтекста +Функция ИмяФормыСписка(ВидКонтактнойИнформацииСсылка) + + ЭтоГруппа = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ВидКонтактнойИнформацииСсылка, "ЭтоГруппа,Родитель"); + ГруппаВидаСсылка = ?(ЭтоГруппа.ЭтоГруппа, ВидКонтактнойИнформацииСсылка, ЭтоГруппа.Родитель); + + Запрос = Новый Запрос( + "ВЫБРАТЬ + |ВЫБОР + | КОГДА ВидыКонтактнойИнформации.ИмяПредопределенногоВида <> """" + | ТОГДА ВидыКонтактнойИнформации.ИмяПредопределенногоВида + | ИНАЧЕ ВидыКонтактнойИнформации.ИмяПредопределенныхДанных + |КОНЕЦ КАК ИмяПредопределенногоВида + |ИЗ + | Справочник.ВидыКонтактнойИнформации КАК ВидыКонтактнойИнформации + |ГДЕ + | ВидыКонтактнойИнформации.Ссылка = &ГруппаВидаСсылка"); + + Запрос.УстановитьПараметр("ГруппаВидаСсылка", ГруппаВидаСсылка); + ИмяПредопределенногоВида = ВРЕГ(Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("ИмяПредопределенногоВида")[0]); + + ИменаБазовыхТипов = Новый Массив; + ИменаБазовыхТипов.Добавить("Справочник"); + ИменаБазовыхТипов.Добавить("Документ"); + ИменаБазовыхТипов.Добавить("БизнесПроцесс"); + ИменаБазовыхТипов.Добавить("Задача"); + ИменаБазовыхТипов.Добавить("ПланСчетов"); + ИменаБазовыхТипов.Добавить("ПланОбмена"); + ИменаБазовыхТипов.Добавить("ПланВидовХарактеристик"); + ИменаБазовыхТипов.Добавить("ПланВидовРасчета"); + Для каждого ИмяБазовогоТипа Из ИменаБазовыхТипов Цикл + Если СтрНачинаетсяС(ИмяПредопределенногоВида, ВРег(ИмяБазовогоТипа)) Тогда + Возврат ИмяБазовогоТипа + "." + + Сред(ИмяПредопределенногоВида, СтрДлина(ИмяБазовогоТипа) + 1, СтрДлина(ИмяПредопределенногоВида)) + + ".ФормаСписка"; + КонецЕсли; + КонецЦикла; + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Невозможно перейти в списку для %1'"), ВидКонтактнойИнформацииСсылка); + +КонецФункции + #КонецОбласти \ No newline at end of file diff --git a/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаЭлемента/Form.form b/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаЭлемента/Form.form index 4a9653d91..22cc05e24 100644 --- a/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаЭлемента/Form.form +++ b/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаЭлемента/Form.form @@ -100,6 +100,10 @@ Объект.Description true + + OnChange + НаименованиеПриИзменении + НаименованиеExtendedTooltip 87 @@ -771,6 +775,169 @@ true + + МаскаПриВводеНомераТелефона + 178 + + <key>ru</key> + <value>Вводить номер по маске:</value> + + true + true + + true + + + Объект.ВводитьНомерПоМаске + + Right + + МаскаПриВводеНомераТелефонаРасширеннаяПодсказка + 180 + Label + true + true + + Left + + + + МаскаПриВводеНомераТелефонаКонтекстноеМеню + 179 + true + + CheckBoxField + Enter + true + Left + true + + + + МаскаТелефона + 184 + + ДекорацияОтступМаскаТелефона + 186 + true + true + + true + + + ДекорацияОтступМаскаТелефонаРасширеннаяПодсказка + 188 + Label + true + true + + Left + + + + ДекорацияОтступМаскаТелефонаКонтекстноеМеню + 187 + true + + Label + 1 + true + true + + Left + + + + ШаблонМаскиНомераТелефона + 181 + true + true + + true + + + Объект.МаскаНомераТелефона + + None + Button + + ШаблонМаскиНомераТелефонаРасширеннаяПодсказка + 183 + + <key>ru</key> + <value><font Arial><fontsize 8><bgcolor #ffffff><color #333333>В строке маски допустимо использование следующих специальных символов:</></></></> +<font Arial><fontsize 8><bgcolor #ffffff><color #333333>! - любой введенный символ преобразуется в верхний регистр;</></></></> +<font Arial><fontsize 8><bgcolor #ffffff><color #333333>9 - допустимо ввести произвольный символ цифры;</></></></> +<font Arial><fontsize 8><bgcolor #ffffff><color #333333># - допустимо ввести произвольный символ цифры или - (знак минус) или + (знак плюс) или пробел;</></></></> +<font Arial><fontsize 8><bgcolor #ffffff><color #333333>N - допустимо ввести любые алфавитно-цифровые символы (буквы или цифры);</></></></> +<font Arial><fontsize 8><bgcolor #ffffff><color #333333>U - допустимо ввести любые алфавитно-цифровые символы (буквы или цифры) и любой введенный символ преобразуется в верхний регистр;</></></></> +<font Arial><fontsize 8><bgcolor #ffffff><color #333333>X (латинского алфавита) - допустимо ввести произвольный символ;</></></></> +<font Arial><fontsize 8><bgcolor #ffffff><color #333333>^ - недопустимо вводить этот символ интерактивно пользователем, он может устанавливаться только из языка;</></></></> +<font Arial><fontsize 8><bgcolor #ffffff><color #333333>@ – допустимо ввести любые алфавитно-цифровые символы (буквы или цифры) в верхнем регистре или пробел.</></></></> +<font Arial><fontsize 8><bgcolor #ffffff><color #333333></></></></></value> + + true + Label + true + true + + Left + + + + ШаблонМаскиНомераТелефонаКонтекстноеМеню + 182 + true + + InputField + Enter + true + Left + true + + 20 + true + true + true + true + true + true + Normal + + ru + +9 (999) 999-99-99 + + + + true + true + + true + + + <key>ru</key> + <value>Маска телефона</value> + + + МаскаТелефонаРасширеннаяПодсказка + 185 + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Auto + true + true + Auto + Auto + + true true @@ -1094,12 +1261,116 @@ Auto + + ГруппаИдентификаторДляФормул + 171 + + ИдентификаторДляФормул + 173 + true + true + + true + + + Объект.ИдентификаторДляФормул + + + ИдентификаторДляФормулРасширеннаяПодсказка + 175 + Label + true + true + + Left + + + + ИдентификаторДляФормулКонтекстноеМеню + 174 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + + + ЗаполнитьИдентификаторДляФормул + 176 + true + true + + true + + + ЗаполнитьИдентификаторДляФормулРасширеннаяПодсказка + 177 + Label + true + true + + Left + + + UsualButton + Form.Command.ЗаполнитьИдентификаторДляФормул + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Идентификатор для формул</value> + + + ГруппаИдентификаторДляФормулРасширеннаяПодсказка + 172 + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + Auto + true + true + Auto + Auto + + ФормаКоманднаяПанель -1 Left true + + NotificationProcessing + ОбработкаОповещения + OnOpen ПриОткрытии @@ -1189,6 +1460,32 @@ DontUse Auto + + ЗаполнитьИдентификаторДляФормул + + <key>ru</key> + <value>Заполнить идентификатор для формул</value> + + 2 + + ru + Заполнить идентификатор для формул + + + true + + + CommonPicture.ЗаполнитьФорму + + + + ЗаполнитьИдентификаторДляФормул + + + Picture + Auto + Auto + @@ -1202,6 +1499,10 @@ OnReadAtServer ПриЧтенииНаСервере + + BeforeWrite + ПередЗаписью + BeforeWriteAtServer ПередЗаписьюНаСервере diff --git a/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаЭлемента/Help/ru.html b/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаЭлемента/Help/ru.html index dcc7c808d..34caa4068 100644 --- a/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаЭлемента/Help/ru.html +++ b/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаЭлемента/Help/ru.html @@ -30,7 +30,8 @@
  • Введите Наименование, с которым поле контактной информации появится в списке или документе.
  • -
    Выберите Группу, если она не введена по умолчанию. Группа соответствует документу или списку программы, в который добавляется новое поле контактной информации.
  • Настройки полей контактной информации

    +
    Выберите Группу, если она не введена по умолчанию. Группа соответствует документу или списку программы, в который добавляется новое поле контактной информации.
    +
  • Поле Идентификатор для формул заполняется автоматически по специальным правилам. Не рекомендуется его изменять. Если автоматического заполнения не произошло, можно нажать кнопку  Заполнить. Данный реквизит будет использоваться для построения и выполнения формул пользователями с разными языками интерфейса.
  • Настройки полей контактной информации

    • Включите флажок Обязательное заполнение, для того чтобы программа проверяла заполнение поля контактной информации при вводе документов или списков. Сохранение данных без заполнения этого поля будет невозможно.
    • @@ -49,7 +50,8 @@
      • Включите флажок Только российский адрес, для того чтобы запретить выбор другой страны при заполнении адреса. Используйте эту возможность, если у сотрудников Вашей организации только российские адреса, это ускорит ввод информации. При этом становятся доступными дополнительные настройки:
        • Запрещать ввод некорректного адреса - если флажок включен, то при некорректном вводе российского адреса невозможно будет ввести данные в программу (имеет смысл только при использовании шаблонов ввода и адресного классификатора - для использования этой возможности включите флажок Редактировать только в диалоге). Адрес проверяется по ФИАС.
        • -
        • Указывать ОКТМО - включите флажок, для того чтобы автоматически заполнялось поле ОКТМО. При необходимости поле можно отредактировать.

      Особенности настройки поля Телефон и факс

      +
    • Указывать ОКТМО - включите флажок, для того чтобы автоматически заполнялось поле ОКТМО. При необходимости поле можно отредактировать.
    • +
    • Автоматически исправлять устаревшие адреса - можно включить автоматическую проверку и исправление адресов. В этом случае регламентное задание 1 раз в неделю проверяет и исправляет адреса, ставшие устаревшими.

    Особенности настройки поля Телефон и факс

    • Для того чтобы использовать Телефон с добавочным номером, включите соответствующий флажок.
    • @@ -62,7 +64,14 @@
    • Однострочное широкое - длинная строка;
    • -
      Однострочное узкое - если вид контактной информации Другое используется для ввода текстовых данных небольшой длины, то размер поля ввода можно уменьшить.

    См. также:

    +
    Однострочное узкое - если вид контактной информации Другое используется для ввода текстовых данных небольшой длины, то размер поля ввода можно уменьшить.

    Разрешение редактирования реквизитов

    +

    Для того чтобы не допустить рассогласование данных в программе, следующие реквизиты не доступны для редактирования:

    +

    +
    • Тип;
    • +
    • Группа;
    • +
    • Идентификатор формул.

    +

    Перед тем, как разрешить их редактирование, рекомендуется оценить последствия, проверив все места использования в программе.

    +

    См. также:

    • Ввод контактной информации;
    • diff --git a/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаЭлемента/Module.bsl index ae3639d2d..d1a7e8464 100644 --- a/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаЭлемента/Module.bsl +++ b/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаЭлемента/Module.bsl @@ -16,6 +16,7 @@ Элементы.Родитель.ТолькоПросмотр = Истина; Элементы.Тип.ТолькоПросмотр = Истина; Элементы.ГруппаТипОбщиеДляВсех.ТолькоПросмотр = Объект.ЗапретитьРедактированиеПользователем; + Элементы.ИдентификаторДляФормул.ТолькоПросмотр = Истина; Иначе // Обработчик подсистемы запрета редактирования реквизитов объектов. Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЗапретРедактированияРеквизитовОбъектов") Тогда @@ -78,6 +79,13 @@ МультиязычностьСервер.ПриСозданииНаСервере(ЭтотОбъект, Объект); + Элементы.ЗаполнитьИдентификаторДляФормул.Доступность = НЕ Элементы.ИдентификаторДляФормул.ТолькоПросмотр; + + Если Метаданные.ОбщиеМодули.Найти("РаботаСАдресами") <> Неопределено Тогда + МодульРаботаСАдресами = ОбщегоНазначения.ОбщийМодуль("РаботаСАдресами"); + МодульРаботаСАдресами.ЗаполнитьМаскиНомераТелефона(Элементы.ШаблонМаскиНомераТелефона.СписокВыбора); + КонецЕсли; + КонецПроцедуры &НаКлиенте @@ -92,6 +100,46 @@ КонецПроцедуры +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + Если ИмяСобытия = "ПослеВводаСтрокНаРазныхЯзыках" + И Параметр = ЭтотОбъект Тогда + Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда + ОбновитьПредлагаемоеЗначениеИдентификатора(); + КонецЕсли; + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ПередЗаписью(Отказ, ПараметрыЗаписи) + + Если НЕ ПараметрыЗаписи.Свойство("КогдаИдентификаторДляФормулУжеИспользуется") + И ЗначениеЗаполнено(Объект.ИдентификаторДляФормул) Тогда + // Заполнение идентификатора для формул + // и проверка есть ли свойство с тем же наименованием. + ТекстВопроса = ИдентификаторДляФормулУжеИспользуется( + Объект.ИдентификаторДляФормул, Объект.Ссылка, Объект.Родитель); + + Если ЗначениеЗаполнено(ТекстВопроса) Тогда + Кнопки = Новый СписокЗначений; + Кнопки.Добавить("ПродолжитьЗапись", НСтр("ru = 'Продолжить'")); + Кнопки.Добавить("ВернутьсяКВводуИдентификатора", НСтр("ru = 'Отмена'")); + + ПоказатьВопрос( + Новый ОписаниеОповещения("ПослеОтветаНаВопросКогдаИдентификаторДляФормулУжеИспользуется", ЭтотОбъект, ПараметрыЗаписи), + ТекстВопроса, Кнопки, , "ПродолжитьЗапись"); + + ОтказПриЗаписи = Истина; + Отказ = Истина; + Возврат; + + Иначе + ПараметрыЗаписи.Вставить("ПроверкаИдентификатораДляФормулВыполнена"); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + &НаСервере Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) @@ -99,6 +147,19 @@ Отказ = Истина; КонецЕсли; + // Формирование идентификатора для формул дополнительного реквизита (сведения). + Если Не ЗначениеЗаполнено(ТекущийОбъект.ИдентификаторДляФормул) + Или ПараметрыЗаписи.Свойство("КогдаИдентификаторДляФормулУжеИспользуется") Тогда + НаименованиеОбъекта = НаименованиеДляФормированияИдентификатора(ТекущийОбъект.Наименование, ТекущийОбъект.Представления); + ТекущийОбъект.ИдентификаторДляФормул = Справочники.ВидыКонтактнойИнформации.УникальныйИдентификаторДляФормул( + НаименованиеОбъекта, ТекущийОбъект.Ссылка, ТекущийОбъект.Родитель); + + ПараметрыЗаписи.Вставить("ПроверкаИдентификатораДляФормулВыполнена"); + КонецЕсли; + Если ПараметрыЗаписи.Свойство("ПроверкаИдентификатораДляФормулВыполнена") Тогда + ТекущийОбъект.ДополнительныеСвойства.Вставить("ПроверкаИдентификатораДляФормулВыполнена"); + КонецЕсли; + МультиязычностьСервер.ПередЗаписьюНаСервере(ТекущийОбъект); КонецПроцедуры @@ -114,6 +175,8 @@ КонецЕсли; КонецЕсли; + Элементы.ЗаполнитьИдентификаторДляФормул.Доступность = НЕ Элементы.ИдентификаторДляФормул.ТолькоПросмотр; + МультиязычностьСервер.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); КонецПроцедуры @@ -129,6 +192,13 @@ #Область ОбработчикиСобытийЭлементовШапкиФормы +&НаКлиенте +Процедура НаименованиеПриИзменении(Элемент) + Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда + ОбновитьПредлагаемоеЗначениеИдентификатора(); + КонецЕсли; +КонецПроцедуры + &НаКлиенте Процедура ТипПриИзменении(Элемент) @@ -195,6 +265,18 @@ МультиязычностьКлиент.ПриОткрытии(ЭтотОбъект, Объект, Элемент, СтандартнаяОбработка); КонецПроцедуры +&НаКлиенте +Процедура ДоступностьПолейДляАдреса() + + Если Объект.ВидРедактирования = "ПолеВвода" Тогда + Объект.ВключатьСтрануВПредставление = Ложь; + Элементы.ВключатьСтрануВПредставление.Доступность = Ложь; + Иначе + Элементы.ВключатьСтрануВПредставление.Доступность = Истина; + КонецЕсли; + +КонецПроцедуры + #КонецОбласти #Область ОбработчикиКомандФормы @@ -205,12 +287,22 @@ Если Не Объект.Предопределенный Тогда Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ЗапретРедактированияРеквизитовОбъектов") Тогда МодульЗапретРедактированияРеквизитовОбъектовКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ЗапретРедактированияРеквизитовОбъектовКлиент"); - МодульЗапретРедактированияРеквизитовОбъектовКлиент.РазрешитьРедактированиеРеквизитовОбъекта(ЭтотОбъект); + Оповещение = Новый ОписаниеОповещения("РазрешитьРедактированиеРеквизитовОбъектаЗавершение", ЭтотОбъект); + МодульЗапретРедактированияРеквизитовОбъектовКлиент.РазрешитьРедактированиеРеквизитовОбъекта(ЭтотОбъект, Оповещение); КонецЕсли; КонецЕсли; КонецПроцедуры +&НаКлиенте +Процедура РазрешитьРедактированиеРеквизитовОбъектаЗавершение(Результат, ДополнительныеПараметры) Экспорт + + Если НЕ Результат = Неопределено Тогда + Элементы.ЗаполнитьИдентификаторДляФормул.Доступность = НЕ Элементы.ИдентификаторДляФормул.ТолькоПросмотр; + КонецЕсли; + +КонецПроцедуры + &НаКлиенте Процедура ДополнительныеНастройкиАдреса(Команда) ОповещениеОЗакрытие = Новый ОписаниеОповещения("ПослеЗакрытияФормыНастроекАдреса", ЭтотОбъект); @@ -221,6 +313,11 @@ ОткрытьФорму(ИмяФормыНастройкиАдреса, ПараметрыФормы,,,,, ОповещениеОЗакрытие); КонецПроцедуры +&НаКлиенте +Процедура ЗаполнитьИдентификаторДляФормул(Команда) + ЗаполнитьИдентификаторДляФормулНаСервере(); +КонецПроцедуры + #КонецОбласти #Область СлужебныеПроцедурыИФункции @@ -234,6 +331,9 @@ Элементы.ДополнительныеНастройкиАдреса.Видимость = ДоступныДополнительныеНастройкиАдреса; Элементы.ДополнительныеНастройкиАдреса.Доступность = Не Объект.МеждународныйФорматАдреса; Элементы.ВидРедактирования.Видимость = Истина; + + ДоступностьПолейДляАдреса(); + Иначе Элементы.ДополнительныеНастройкиАдреса.Видимость = Ложь; Если Объект.Тип = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты") Тогда @@ -293,5 +393,120 @@ КонецЕсли; КонецПроцедуры +&НаСервере +Процедура ОбновитьПредлагаемоеЗначениеИдентификатора() + + ПредлагаемыйИдентификатор = ""; + Если Не Элементы.ИдентификаторДляФормул.ТолькоПросмотр Тогда + Представление = НаименованиеДляФормированияИдентификатора(Объект.Наименование, Объект.Представления); + ПредлагаемыйИдентификатор = Справочники.ВидыКонтактнойИнформации.УникальныйИдентификаторДляФормул( + Представление, Объект.Ссылка, Объект.Родитель); + Если ПредлагаемыйИдентификатор <> Объект.ИдентификаторДляФормул Тогда + Объект.ИдентификаторДляФормул = ПредлагаемыйИдентификатор; + Модифицированность = Истина; + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ЗаполнитьИдентификаторДляФормулНаСервере() + ЗаголовокДляИдентификатора = НаименованиеДляФормированияИдентификатора(Объект.Наименование, Объект.Представления); + Объект.ИдентификаторДляФормул = Справочники.ВидыКонтактнойИнформации.УникальныйИдентификаторДляФормул( + ЗаголовокДляИдентификатора, Объект.Ссылка, Объект.Родитель); +КонецПроцедуры + +&НаСервереБезКонтекста +Функция НаименованиеДляФормированияИдентификатора(Знач Наименование, Знач Представления) + Если ТекущийЯзык() <> ОбщегоНазначения.КодОсновногоЯзыка() Тогда + Отбор = Новый Структура(); + Отбор.Вставить("КодЯзыка", ОбщегоНазначения.КодОсновногоЯзыка()); + НайденныеСтроки = Представления.НайтиСтроки(Отбор); + Если НайденныеСтроки.Количество() > 0 Тогда + Наименование = НайденныеСтроки[0].Наименование; + КонецЕсли; + КонецЕсли; + + Возврат Наименование; +КонецФункции + +&НаКлиенте +Процедура ПослеОтветаНаВопросКогдаИдентификаторДляФормулУжеИспользуется(Ответ, ПараметрыЗаписи) Экспорт + + Если Ответ <> "ПродолжитьЗапись" Тогда + Если ПараметрыЗаписи.Свойство("ОбработкаПродолжения") Тогда + ВыполнитьОбработкуОповещения( + Новый ОписаниеОповещения(ПараметрыЗаписи.ОбработкаПродолжения.ИмяПроцедуры, + ЭтотОбъект, ПараметрыЗаписи.ОбработкаПродолжения.Параметры), + Истина); + КонецЕсли; + Иначе + ПараметрыЗаписи.Вставить("КогдаИдентификаторДляФормулУжеИспользуется"); + Записать(ПараметрыЗаписи); + КонецЕсли; + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ИдентификаторДляФормулУжеИспользуется(Знач ИдентификаторДляФормул, Знач ТекущийВидКонтактнойИнформации, Знач Родитель) + + ПроверочныйИдентификатор = Справочники.ВидыКонтактнойИнформации.ИдентификаторДляФормул(ИдентификаторДляФормул); + Если ВРег(ИдентификаторДляФормул) <> ВРег(ПроверочныйИдентификатор) Тогда + ТекстВопроса = НСтр("ru = 'Идентификатор ""%1"" не соответствует правилам именования переменных. + |Идентификатор не должен содержать пробелов и специальных символов. + | + |Создать новый идентификатор для формул и продолжить запись?'"); + ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + ТекстВопроса, + ИдентификаторДляФормул); + Возврат ТекстВопроса; + КонецЕсли; + + РодительВерхнегоУровня = Родитель; + Пока ЗначениеЗаполнено(РодительВерхнегоУровня) Цикл + Значение = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(РодительВерхнегоУровня, "Родитель"); + Если ЗначениеЗаполнено(Значение) Тогда + РодительВерхнегоУровня = Значение; + Иначе + Прервать; + КонецЕсли; + КонецЦикла; + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ ПЕРВЫЕ 1 + | ВидыКонтактнойИнформации.Ссылка + |ИЗ + | Справочник.ВидыКонтактнойИнформации КАК ВидыКонтактнойИнформации + |ГДЕ + | ВидыКонтактнойИнформации.ИдентификаторДляФормул = &ИдентификаторДляФормул + | И ВидыКонтактнойИнформации.Ссылка <> &Ссылка + | И ВидыКонтактнойИнформации.Ссылка В ИЕРАРХИИ (&Родитель)"; + + Запрос.УстановитьПараметр("Ссылка", ТекущийВидКонтактнойИнформации); + Запрос.УстановитьПараметр("ИдентификаторДляФормул", ИдентификаторДляФормул); + Запрос.УстановитьПараметр("Родитель", РодительВерхнегоУровня); + + Выборка = Запрос.Выполнить().Выбрать(); + + Если НЕ Выборка.Следующий() Тогда + Возврат ""; + КонецЕсли; + + ТекстВопроса = НСтр("ru = 'Существует вид контактной информации с идентификатором для формул + |""%1"". + | + |Рекомендуется использовать другой идентификатор для формул, + |иначе программа может работать некорректно. + | + |Создать новый идентификатор для формул и продолжить запись?'"); + ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + ТекстВопроса, + ИдентификаторДляФормул); + + Возврат ТекстВопроса; + +КонецФункции + #КонецОбласти diff --git a/SSL/src/Catalogs/ВидыКонтактнойИнформации/ManagerModule.bsl b/SSL/src/Catalogs/ВидыКонтактнойИнформации/ManagerModule.bsl index 2901f6892..9ad692ec0 100644 --- a/SSL/src/Catalogs/ВидыКонтактнойИнформации/ManagerModule.bsl +++ b/SSL/src/Catalogs/ВидыКонтактнойИнформации/ManagerModule.bsl @@ -18,7 +18,8 @@ // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: -// Массив Из Строка - +// Массив Из Строка +// Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт Результат = Новый Массив; @@ -38,6 +39,7 @@ БлокируемыеРеквизиты.Добавить("Тип;Тип"); БлокируемыеРеквизиты.Добавить("Родитель"); + БлокируемыеРеквизиты.Добавить("ИдентификаторДляФормул"); Возврат БлокируемыеРеквизиты; @@ -53,9 +55,9 @@ // // Параметры: // ПарыЗамен - Соответствие - Ключ - что будет заменено, значение - на что будет заменено. -// Параметры - Структура - Набор флагов, описывающих действие с заменяемыми элементами. +// Параметры - Структура - набор флагов, описывающих действие с заменяемыми элементами. // Содержит необязательные реквизиты: -// * СпособУдаления - Строка, может принимать значения: +// * СпособУдаления - Строка - может принимать значения: // "Непосредственно" - Если после замены ссылка нигде не используется, // то она будет удалена непосредственно // "Пометка" - Если после замены ссылка не используется, то @@ -94,28 +96,28 @@ // // Параметры: // -// ПараметрыПоиска - Структура - Предлагаемые параметры поиска. Содержит поля: +// ПараметрыПоиска - Структура - предлагаемые параметры поиска. Содержит поля: // -// * ПравилаПоиска - ТаблицаЗначений - Предлагаемые правила сравнения для объектов. -// Может быть изменена для установки новых вариантов. Содержит колонки. -// ** Реквизит - Строка - Имя реквизита для сравнения. -// ** Правило - Строка - Правило сравнения: "Равно" - сравнение по равенству, "Подобно" -подобие строк, +// * ПравилаПоиска - ТаблицаЗначений - предлагаемые правила сравнения для объектов. +// Может быть изменена для установки новых вариантов. Содержит колонки: +// ** Реквизит - Строка - имя реквизита для сравнения. +// ** Правило - Строка - правило сравнения: "Равно" - сравнение по равенству, "Подобно" -подобие строк, // "" - пустая строка - не сравнивать. // -// * КомпоновщикОтбора - КомпоновщикНастроекКомпоновкиДанных - Инициализированный компоновщик для +// * КомпоновщикОтбора - КомпоновщикНастроекКомпоновкиДанных - инициализированный компоновщик для // предварительного отбора. Может быть изменен, например, для // усиления отборов. // -// * ОграниченияСравнения - Массив - Предназначен для заполнения описания прикладных правил-ограничений. +// * ОграниченияСравнения - Массив - предназначен для заполнения описания прикладных правил-ограничений. // Должен быть дополнен структурами с полями: -// ** Представление - Строка - Описание правила-ограничения для пользователя. -// ** ДополнительныеПоля - Строка - Список дополнительных реквизитов запятую, необходимых для +// ** Представление - Строка - описание правила-ограничения для пользователя. +// ** ДополнительныеПоля - Строка - список дополнительных реквизитов запятую, необходимых для // дополнительного анализа. // -// * КоличествоЭлементовДляСравнения - Число - Количество кандидатов в дубли, передаваемых одним вызовом +// * КоличествоЭлементовДляСравнения - Число - количество кандидатов в дубли, передаваемых одним вызовом // обработчику. // -// ДополнительныеПараметры - Произвольный - Значение, переданное при вызове программного интерфейса +// ДополнительныеПараметры - Произвольный - значение, переданное при вызове программного интерфейса // ОбщегоНазначения.НайтиДублиЭлементов. // При вызове пользователем из обработки "ПоискИЗаменаДублей" равно Неопределено. // @@ -135,18 +137,18 @@ // // Параметры: // -// ТаблицаКандидатов - ТаблицаЗначений - Описывает кандидатов в дубли. Содержит колонки: -// - Ссылка1 - ЛюбаяСсылка - Ссылка на элемент первого кандидата. -// - Ссылка2 - ЛюбаяСсылка - Ссылка на элемент второго кандидата. -// - ЭтоДубли - Булево - Флаг того, что кандидаты действительно являются дублями. По умолчанию содержит +// ТаблицаКандидатов - ТаблицаЗначений - описывает кандидатов в дубли. Содержит колонки: +// - Ссылка1 - ЛюбаяСсылка - ссылка на элемент первого кандидата. +// - Ссылка2 - ЛюбаяСсылка - ссылка на элемент второго кандидата. +// - ЭтоДубли - Булево - флаг того, что кандидаты действительно являются дублями. По умолчанию содержит // значение Ложь, может быть изменено на Истина, если кандидаты - действительно // дубли. -// - Поля1 - Структура - Содержит поля Код, Наименование и дополнительные поля первого кандидата, +// - Поля1 - Структура - содержит поля Код, Наименование и дополнительные поля первого кандидата, // указанные в ПараметрыПоискаДублей. -// - Поля2 - Структура - Содержит поля Код, Наименование и дополнительные поля второго кандидата, +// - Поля2 - Структура - содержит поля Код, Наименование и дополнительные поля второго кандидата, // указанные в ПараметрыПоискаДублей. // -// ДополнительныеПараметры - Произвольный - Значение, переданное при вызове программного интерфейса +// ДополнительныеПараметры - Произвольный - значение, переданное при вызове программного интерфейса // ОбщегоНазначения.НайтиДублиЭлементов. // При вызове пользователем из обработки "ПоискИЗаменаДублей" равно Неопределено. // @@ -180,6 +182,271 @@ #Область СлужебныеПроцедурыИФункции +#Область ИдентификаторДляФормул + +// Проверяет уникальность идентификатора в рамках объекта метаданных для которого предназначен вид контактной +// информации (родитель) а также соответствие идентификатора правилам написания. +// +// Параметры: +// ИдентификаторДляФормул - Строка - идентификатор для формул. +// Ссылка - СправочникСсылка.ВидыКонтактнойИнформации - ссылка на текущий объект. +// Родитель - СправочникСсылка.ВидыКонтактнойИнформации - ссылка на родитель текущего объекта. +// Отказ - Булево - флаг отказа при наличии ошибки. +// +Процедура ПроверитьУникальностьИдентификатора(ИдентификаторДляФормул, Ссылка, Родитель, Отказ) Экспорт + + Если ЗначениеЗаполнено(ИдентификаторДляФормул) Тогда + + ИдентификаторПоПравилам = Истина; + ПроверочныйИдентификатор = ИдентификаторДляФормул(ИдентификаторДляФормул); + Если НЕ ВРег(ПроверочныйИдентификатор) = ВРег(ИдентификаторДляФормул) Тогда + ИдентификаторПоПравилам = Ложь; + + ТекстОшибки = НСтр("ru = 'Идентификатор ""%1"" не соответствует правилам именования переменных. + |Идентификатор не должен содержать пробелов и специальных символов.'"); + ОбщегоНазначения.СообщитьПользователю( + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстОшибки, ИдентификаторДляФормул),, + "ИдентификаторДляФормул",, Отказ); + + КодЯзыка = ОбщегоНазначения.КодОсновногоЯзыка(); + ИмяСобытия = НСтр("ru = 'Запись дополнительного реквизита (сведения)'", КодЯзыка); + ТекстОшибки = НСтр("ru = 'Идентификатор ""%1"" не соответствует правилам именования переменных. + |Идентификатор не должен содержать пробелов и специальных символов.'", КодЯзыка); + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстОшибки, + ИдентификаторДляФормул); + ЗаписьЖурналаРегистрации(ИмяСобытия, + УровеньЖурналаРегистрации.Ошибка, + Ссылка.Метаданные(), + Ссылка, + ТекстОшибки); + КонецЕсли; + + Если ИдентификаторПоПравилам Тогда + РодительВерхнегоУровня = Родитель; + Пока ЗначениеЗаполнено(РодительВерхнегоУровня) Цикл + Значение = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(РодительВерхнегоУровня, "Родитель"); + Если ЗначениеЗаполнено(Значение) Тогда + РодительВерхнегоУровня = Значение; + Иначе + Прервать; + КонецЕсли; + КонецЦикла; + Если НЕ ИдентификаторДляФормулУникален(ИдентификаторДляФормул, Ссылка, РодительВерхнегоУровня) Тогда + + Отказ = Истина; + + ТекстОшибки = НСтр("ru = 'В базе данных уже содержится вид контактной информации с идентификатором ""%1"" внутри группы ""%2"". Идентификатор должен быть уникальным'"); + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстОшибки, + ИдентификаторДляФормул, РодительВерхнегоУровня); + ОбщегоНазначения.СообщитьПользователю(ТекстОшибки,, "ИдентификаторДляФормул"); + + КодЯзыка = ОбщегоНазначения.КодОсновногоЯзыка(); + ТекстОшибки = НСтр("ru = 'В базе данных уже содержится вид контактной информации с идентификатором ""%1"" внутри группы ""%2"". Идентификатор должен быть уникальным'", КодЯзыка); + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстОшибки, + ИдентификаторДляФормул, РодительВерхнегоУровня); + ИмяСобытия = НСтр("ru = 'Запись дополнительного реквизита (сведения)'", КодЯзыка); + ЗаписьЖурналаРегистрации(ИмяСобытия, + УровеньЖурналаРегистрации.Ошибка, + Ссылка.Метаданные(), + Ссылка, + ТекстОшибки); + КонецЕсли; + КонецЕсли; + + Иначе + + ТекстОшибки = НСтр("ru = 'Идентификатор для формул не заполнен'"); + ОбщегоНазначения.СообщитьПользователю( + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстОшибки, ИдентификаторДляФормул),, + "ИдентификаторДляФормул",, Отказ); + + КодЯзыка = ОбщегоНазначения.КодОсновногоЯзыка(); + ИмяСобытия = НСтр("ru = 'Запись дополнительного реквизита (сведения)'", КодЯзыка); + ТекстОшибки = НСтр("ru = 'Идентификатор для формул не заполнен'", КодЯзыка); + ЗаписьЖурналаРегистрации(ИмяСобытия, + УровеньЖурналаРегистрации.Ошибка, + Ссылка.Метаданные(), + Ссылка, + ТекстОшибки); + + КонецЕсли; + +КонецПроцедуры + +// Возвращает уникальный идентификатора для формул (после проверки на уникальность) +// +// Параметры: +// ПредставлениеОбъекта - Строка - представление, из которого будет сформирован идентификатор для формул. +// СсылкаНаТекущийОбъект - СправочникСсылка.ВидыКонтактнойИнформации - ссылка на текущий элемент. +// Родитель - СправочникСсылка.ВидыКонтактнойИнформации - ссылка на родитель текущего объекта. +// Возвращаемое значение: +// Строка - уникальное значение идентификатора для формул. +// +Функция УникальныйИдентификаторДляФормул(ПредставлениеОбъекта, СсылкаНаТекущийОбъект, Родитель) Экспорт + + Идентификатор = ИдентификаторДляФормул(ПредставлениеОбъекта); + Если ПустаяСтрока(Идентификатор) Тогда + // Представление состоит и спецсимволов или цифр. + Префикс = НСтр("ru = 'Идентификатор'"); + Идентификатор = ИдентификаторДляФормул(Префикс + ПредставлениеОбъекта); + КонецЕсли; + + РодительВерхнегоУровня = Родитель; + Пока ЗначениеЗаполнено(РодительВерхнегоУровня) Цикл + Значение = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(РодительВерхнегоУровня, "Родитель"); + Если ЗначениеЗаполнено(Значение) Тогда + РодительВерхнегоУровня = Значение; + Иначе + Прервать; + КонецЕсли; + КонецЦикла; + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | ВидыКонтактнойИнформации.ИдентификаторДляФормул КАК ИдентификаторДляФормул + |ИЗ + | Справочник.ВидыКонтактнойИнформации КАК ВидыКонтактнойИнформации + |ГДЕ + | ВидыКонтактнойИнформации.ИдентификаторДляФормул = &ИдентификаторДляФормул + | И ВидыКонтактнойИнформации.Ссылка <> &СсылкаНаТекущийОбъект + | И ВидыКонтактнойИнформации.Ссылка В ИЕРАРХИИ (&РодительВерхнегоУровня) + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ВидыКонтактнойИнформации.ИдентификаторДляФормул КАК ИдентификаторДляФормул + |ИЗ + | Справочник.ВидыКонтактнойИнформации КАК ВидыКонтактнойИнформации + |ГДЕ + | ВидыКонтактнойИнформации.ИдентификаторДляФормул ПОДОБНО &ИдентификаторДляФормулПодобие + | И ВидыКонтактнойИнформации.Ссылка <> &СсылкаНаТекущийОбъект + | И ВидыКонтактнойИнформации.Ссылка В ИЕРАРХИИ (&РодительВерхнегоУровня)"; + Запрос.УстановитьПараметр("СсылкаНаТекущийОбъект", СсылкаНаТекущийОбъект); + Запрос.УстановитьПараметр("РодительВерхнегоУровня", РодительВерхнегоУровня); + Запрос.УстановитьПараметр("ИдентификаторДляФормул", Идентификатор); + Запрос.УстановитьПараметр("ИдентификаторДляФормулПодобие", Идентификатор + "%"); + + РезультатыЗапроса = Запрос.ВыполнитьПакет(); + УникальностьПоТочномуСоответствию = РезультатыЗапроса[0]; + Если НЕ УникальностьПоТочномуСоответствию.Пустой() Тогда + // Есть элементы с данным идентификатором. + ИспользованныеИдентификаторы = Новый Соответствие; + ВыборкаПодобных = РезультатыЗапроса[1].Выбрать(); + Пока ВыборкаПодобных.Следующий() Цикл + ИспользованныеИдентификаторы.Вставить(ВРЕГ(ВыборкаПодобных.ИдентификаторДляФормул), Истина); + КонецЦикла; + + ДобавляемыйНомер = 1; + ИдентификаторБезНомера = Идентификатор; + Пока НЕ ИспользованныеИдентификаторы.Получить(ВРЕГ(Идентификатор)) = Неопределено Цикл + ДобавляемыйНомер = ДобавляемыйНомер + 1; + Идентификатор = ИдентификаторБезНомера + ДобавляемыйНомер; + КонецЦикла; + КонецЕсли; + ИспользованныеИдентификаторы = Новый Соответствие; + + Возврат Идентификатор; +КонецФункции + +Функция ИдентификаторДляФормулУникален(ПроверяемыйИдентификатор, СсылкаНаТекущийОбъект, Родитель) + + РодительВерхнегоУровня = Родитель; + Пока ЗначениеЗаполнено(РодительВерхнегоУровня) Цикл + Значение = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(РодительВерхнегоУровня, "Родитель"); + Если ЗначениеЗаполнено(Значение) Тогда + РодительВерхнегоУровня = Значение; + Иначе + Прервать; + КонецЕсли; + КонецЦикла; + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ ПЕРВЫЕ 1 + | Таблица.Ссылка + |ИЗ + | Справочник.ВидыКонтактнойИнформации КАК Таблица + |ГДЕ + | Таблица.Ссылка <> &СсылкаНаТекущийОбъект + | И Таблица.Ссылка В ИЕРАРХИИ (&РодительВерхнегоУровня) + | И Таблица.ИдентификаторДляФормул = &ИдентификаторДляФормул"; + Запрос.УстановитьПараметр("ИдентификаторДляФормул", ПроверяемыйИдентификатор); + Запрос.УстановитьПараметр("СсылкаНаТекущийОбъект", СсылкаНаТекущийОбъект); + Запрос.УстановитьПараметр("РодительВерхнегоУровня", РодительВерхнегоУровня); + + РезультатЗапроса = Запрос.Выполнить(); + + Возврат РезультатЗапроса.Пустой(); +КонецФункции + +// Вычисляет значение идентификатора из строки соответствии с правилами именования переменных. +// +// Параметры: +// СтрокаПредставления - Строка - наименование, строка из которой необходимо получить идентификатор. +// +// Возвращаемое значение: +// Строка - идентификатор, соответствующий правилам именования идентификаторов. +// +Функция ИдентификаторДляФормул(СтрокаПредставления) Экспорт + + СпецСимволы = СпецСимволы(); + + Идентификатор = ""; + БылСпецСимвол = Ложь; + + Для НомСимвола = 1 По СтрДлина(СтрокаПредставления) Цикл + + Символ = Сред(СтрокаПредставления, НомСимвола, 1); + + Если СтрНайти(СпецСимволы, Символ) <> 0 Тогда + БылСпецСимвол = Истина; + Если Символ = "_" Тогда + Идентификатор = Идентификатор + Символ; + КонецЕсли; + ИначеЕсли БылСпецСимвол + ИЛИ НомСимвола = 1 Тогда + БылСпецСимвол = Ложь; + Идентификатор = Идентификатор + ВРег(Символ); + Иначе + Идентификатор = Идентификатор + Символ; + КонецЕсли; + + КонецЦикла; + + Возврат Идентификатор; + +КонецФункции + +Функция СпецСимволы() + Диапазоны = Новый Массив; + Диапазоны.Добавить(Новый Структура("Мин, Макс", 0, 32)); + Диапазоны.Добавить(Новый Структура("Мин, Макс", 127, 191)); + + СпецСимволы = " .,+,-,/,*,?,=,<,>,(,)%!@#$%&*""№:;{}[]?()\|/`~'^_"; + Для Каждого Диапазон Из Диапазоны Цикл + Для КодСимвола = Диапазон.Мин По Диапазон.Макс Цикл + СпецСимволы = СпецСимволы + Символ(КодСимвола); + КонецЦикла; + КонецЦикла; + Возврат СпецСимволы; +КонецФункции + +Функция НаименованиеДляФормированияИдентификатора(Знач Наименование, Знач Представления) + Если ТекущийЯзык().КодЯзыка <> ОбщегоНазначения.КодОсновногоЯзыка() Тогда + Отбор = Новый Структура(); + Отбор.Вставить("КодЯзыка", ОбщегоНазначения.КодОсновногоЯзыка()); + НайденныеСтроки = Представления.НайтиСтроки(Отбор); + Если НайденныеСтроки.Количество() > 0 Тогда + Наименование = НайденныеСтроки[0].Наименование; + КонецЕсли; + КонецЕсли; + + Возврат Наименование; +КонецФункции + +#КонецОбласти + // Регистрирует к обработке виды контактной информации. // Процедура ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию(Параметры) Экспорт @@ -208,6 +475,7 @@ ОбъектовОбработано = 0; Пока ВидКонтактнойИнформацииСсылка.Следующий() Цикл + НачатьТранзакцию(); Попытка ВидКонтактнойИнформации = ВидКонтактнойИнформацииСсылка.Ссылка.ПолучитьОбъект(); // СправочникОбъект.ВидыКонтактнойИнформации @@ -234,10 +502,22 @@ ВидКонтактнойИнформации.ВидРедактирования = "ПолеВводаИДиалог"; КонецЕсли; КонецЕсли; + + Если НЕ ВидКонтактнойИнформации.ЭтоГруппа + И НЕ ЗначениеЗаполнено(ВидКонтактнойИнформации.ИдентификаторДляФормул) Тогда + НаименованиеДляИдентификатора = НаименованиеДляФормированияИдентификатора(ВидКонтактнойИнформации.Наименование, + ВидКонтактнойИнформации.Представления); + ВидКонтактнойИнформации.ИдентификаторДляФормул = УникальныйИдентификаторДляФормул(НаименованиеДляИдентификатора, + ВидКонтактнойИнформации.Ссылка, ВидКонтактнойИнформации.Родитель); + КонецЕсли; + ОбновлениеИнформационнойБазы.ЗаписатьДанные(ВидКонтактнойИнформации); ОбъектовОбработано = ОбъектовОбработано + 1; + ЗафиксироватьТранзакцию(); Исключение + ОтменитьТранзакцию(); + // Если не удалось обработать какой-либо вид контактной информации, повторяем попытку снова. ПроблемныхОбъектов = ПроблемныхОбъектов + 1; diff --git a/SSL/src/Catalogs/ВидыКонтактнойИнформации/ObjectModule.bsl b/SSL/src/Catalogs/ВидыКонтактнойИнформации/ObjectModule.bsl index b0ccb0c3c..736b13b77 100644 --- a/SSL/src/Catalogs/ВидыКонтактнойИнформации/ObjectModule.bsl +++ b/SSL/src/Catalogs/ВидыКонтактнойИнформации/ObjectModule.bsl @@ -30,10 +30,22 @@ Если ПустаяСтрока(ИмяГруппы) Тогда ИмяГруппы = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Родитель, "ИмяПредопределенныхДанных"); КонецЕсли; + + ПроверкаИдентификатораДляФормул(Отказ); КонецЕсли; КонецПроцедуры +Процедура ПриЗаписи(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + УстановитьСостояниеРегламентногоЗадания(); + +КонецПроцедуры + Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) Если СтрНачинаетсяС(ИмяПредопределенныхДанных, "Удалить") Тогда @@ -53,18 +65,56 @@ Процедура ПриКопировании(ОбъектКопирования) ИмяПредопределенногоВида = ""; + Если НЕ ЭтоГруппа Тогда + ИдентификаторДляФормул = ""; + КонецЕсли; КонецПроцедуры #КонецОбласти #Область СлужебныеПроцедурыИФункции +Процедура ПроверкаИдентификатораДляФормул(Отказ) + Если НЕ ДополнительныеСвойства.Свойство("ПроверкаИдентификатораДляФормулВыполнена") Тогда + // Программная запись. + Если ЗначениеЗаполнено(ИдентификаторДляФормул) Тогда + Справочники.ВидыКонтактнойИнформации.ПроверитьУникальностьИдентификатора(ИдентификаторДляФормул, + Ссылка, Родитель, Отказ); + Иначе + // Установка идентификатора. + ИдентификаторДляФормул = Справочники.ВидыКонтактнойИнформации.УникальныйИдентификаторДляФормул( + НаименованиеДляФормированияИдентификатора(), Ссылка, Родитель); + КонецЕсли; + КонецЕсли; +КонецПроцедуры + +Функция НаименованиеДляФормированияИдентификатора() + НаименованиеДляИдентификатора = Наименование; + Если ТекущийЯзык() <> ОбщегоНазначения.КодОсновногоЯзыка() Тогда + Отбор = Новый Структура(); + Отбор.Вставить("КодЯзыка", ОбщегоНазначения.КодОсновногоЯзыка()); + НайденныеСтроки = Представления.НайтиСтроки(Отбор); + Если НайденныеСтроки.Количество() > 0 Тогда + НаименованиеДляИдентификатора = НайденныеСтроки[0].Наименование; + КонецЕсли; + КонецЕсли; + + Возврат НаименованиеДляИдентификатора; +КонецФункции + Процедура ПриЧтенииПредставленийНаСервере() Экспорт МультиязычностьСервер.ПриЧтенииПредставленийНаСервере(ЭтотОбъект); КонецПроцедуры +Процедура УстановитьСостояниеРегламентногоЗадания() + + Статус = ?(ИсправлятьУстаревшиеАдреса = Истина, Истина, Неопределено); + УправлениеКонтактнойИнформациейСлужебный.УстановитьИспользованиеРегламентногоЗадания(Статус); + +КонецПроцедуры + #КонецОбласти #Иначе diff --git a/SSL/src/Catalogs/ВидыКонтактнойИнформации/ВидыКонтактнойИнформации.mdo b/SSL/src/Catalogs/ВидыКонтактнойИнформации/ВидыКонтактнойИнформации.mdo index b297a2cd5..fe0abed75 100644 --- a/SSL/src/Catalogs/ВидыКонтактнойИнформации/ВидыКонтактнойИнформации.mdo +++ b/SSL/src/Catalogs/ВидыКонтактнойИнформации/ВидыКонтактнойИнформации.mdo @@ -588,6 +588,88 @@ Use Use + + ИсправлятьУстаревшиеАдреса + + ru + Исправлять устаревшие адреса + + + Boolean + + + ru + Автоматические исправлять устаревшие адреса на новые + + + + + Use + Use + + + ИдентификаторДляФормул + + ru + Идентификатор для формул + + + en + Идентификатор для формул + + + String + + 150 + + + + + + Use + Use + + + МаскаНомераТелефона + + ru + Маска номера телефона + + + String + + 150 + + + + ru + Содержит строку маски для интерактивного ввода номера телефона. + + + + + Use + Use + + + ВводитьНомерПоМаске + + ru + Вводить номер по маске + + + Boolean + + + ru + Признак, что ввод номера телефона выполняется по маске. + + + + + Use + Use + diff --git a/SSL/src/Catalogs/ВидыПроверок/ManagerModule.bsl b/SSL/src/Catalogs/ВидыПроверок/ManagerModule.bsl index 6240a8e35..3de8f8906 100644 --- a/SSL/src/Catalogs/ВидыПроверок/ManagerModule.bsl +++ b/SSL/src/Catalogs/ВидыПроверок/ManagerModule.bsl @@ -18,7 +18,8 @@ // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: -// Массив Из Строка - +// Массив Из Строка +// Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт НеРедактируемыеРеквизиты = Новый Массив; diff --git a/SSL/src/Catalogs/ВидыПроверок/ВидыПроверок.mdo b/SSL/src/Catalogs/ВидыПроверок/ВидыПроверок.mdo index 548ef1c78..10a4accaf 100644 --- a/SSL/src/Catalogs/ВидыПроверок/ВидыПроверок.mdo +++ b/SSL/src/Catalogs/ВидыПроверок/ВидыПроверок.mdo @@ -132,6 +132,7 @@ Вид проверки true + HierarchyOfItems 2 true 9 diff --git a/SSL/src/Catalogs/ВнешниеКомпоненты/Forms/ОбновлениеКомпонентСПортала1СИТС/Form.form b/SSL/src/Catalogs/ВнешниеКомпоненты/Forms/ОбновлениеКомпонентСПортала1СИТС/Form.form index 7c92014db..6c875138e 100644 --- a/SSL/src/Catalogs/ВнешниеКомпоненты/Forms/ОбновлениеКомпонентСПортала1СИТС/Form.form +++ b/SSL/src/Catalogs/ВнешниеКомпоненты/Forms/ОбновлениеКомпонентСПортала1СИТС/Form.form @@ -669,7 +669,7 @@ - МассивСсылок + ОбновляемыеКомпоненты 1 ValueList @@ -688,13 +688,9 @@ ПодключитьИнтернетПоддержку <key>ru</key> - <value>Подключить интернет поддержку</value> + <value>Подключить Интернет-поддержку</value> 1 - - ru - Подключить интернет поддержку - true @@ -715,7 +711,7 @@ 2 ru - Загрузить + Загрузить внешнюю компоненту с портала 1С:ИТС true @@ -729,7 +725,7 @@ Auto - МассивСсылок + ОбновляемыеКомпоненты true diff --git a/SSL/src/Catalogs/ВнешниеКомпоненты/Forms/ОбновлениеКомпонентСПортала1СИТС/Module.bsl b/SSL/src/Catalogs/ВнешниеКомпоненты/Forms/ОбновлениеКомпонентСПортала1СИТС/Module.bsl index 4ef1c1f36..c1716a58a 100644 --- a/SSL/src/Catalogs/ВнешниеКомпоненты/Forms/ОбновлениеКомпонентСПортала1СИТС/Module.bsl +++ b/SSL/src/Catalogs/ВнешниеКомпоненты/Forms/ОбновлениеКомпонентСПортала1СИТС/Module.bsl @@ -11,10 +11,9 @@ &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) - Если ТипЗнч(Параметры.МассивСсылок) <> Тип("Массив") - Или Параметры.МассивСсылок.Количество() = 0 Тогда - - ВызватьИсключение НСтр("ru = 'Должна быть хоть одна ссылка указана.'"); + Если ТипЗнч(Параметры.ОбновляемыеКомпоненты) <> Тип("Массив") + Или Параметры.ОбновляемыеКомпоненты.Количество() = 0 Тогда + ВызватьИсключение НСтр("ru = 'Некорректное значение параметра формы ОбновляемыеКомпоненты.'"); КонецЕсли; ДанныеАутентификацииПорталаСохранены = ДанныеАутентификацииПорталаСохранены(); @@ -22,8 +21,9 @@ ТекстПояснения = ""; ПредложитьОбновление = Ложь; - Для Каждого Ссылка Из Параметры.МассивСсылок Цикл - Реквизиты = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Ссылка, "Идентификатор, Версия, ОбновлятьСПортала1СИТС"); + РеквизитыКомпонент = ОбщегоНазначения.ЗначенияРеквизитовОбъектов(Параметры.ОбновляемыеКомпоненты, "Идентификатор, Версия, ОбновлятьСПортала1СИТС"); + Для Каждого ОбновляемаяКомпонента Из Параметры.ОбновляемыеКомпоненты Цикл + Реквизиты = РеквизитыКомпонент[ОбновляемаяКомпонента]; ТекстПояснения = ТекстПояснения + ВнешниеКомпонентыСлужебный.ПредставлениеКомпоненты(Реквизиты.Идентификатор, Реквизиты. Версия) + ?(Реквизиты.ОбновлятьСПортала1СИТС, "", " - " + НСтр("ru = 'обновление отключено'") + ".") @@ -31,7 +31,7 @@ ПредложитьОбновление = ПредложитьОбновление Или Реквизиты.ОбновлятьСПортала1СИТС; Если Реквизиты.ОбновлятьСПортала1СИТС Тогда - МассивСсылок.Добавить(Ссылка); + ОбновляемыеКомпоненты.Добавить(ОбновляемаяКомпонента); КонецЕсли; КонецЦикла; @@ -140,7 +140,7 @@ КонецЕсли; ПараметрыПроцедуры = Новый Структура; - ПараметрыПроцедуры.Вставить("МассивСсылок", МассивСсылок.ВыгрузитьЗначения()); + ПараметрыПроцедуры.Вставить("ОбновляемыеКомпоненты", ОбновляемыеКомпоненты.ВыгрузитьЗначения()); ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор); ПараметрыВыполнения.НаименованиеФоновогоЗадания = НСтр("ru = 'Обновление внешней компоненты.'"); diff --git a/SSL/src/Catalogs/ВнешниеКомпоненты/Forms/ПоискКомпонентыНаПортале1СИТС/Module.bsl b/SSL/src/Catalogs/ВнешниеКомпоненты/Forms/ПоискКомпонентыНаПортале1СИТС/Module.bsl index 757b64357..56372b980 100644 --- a/SSL/src/Catalogs/ВнешниеКомпоненты/Forms/ПоискКомпонентыНаПортале1СИТС/Module.bsl +++ b/SSL/src/Catalogs/ВнешниеКомпоненты/Forms/ПоискКомпонентыНаПортале1СИТС/Module.bsl @@ -130,9 +130,6 @@ &НаКлиенте Процедура ПослеПолученияКомпонентыСПортала(Результат, ДополнительныеПараметры) Экспорт - // Ответ: - // - Структура - Выполнено - результат в структуре. - // - Неопределено - Отменено пользователем. Если Результат = Неопределено Тогда Возврат; КонецЕсли; diff --git a/SSL/src/Catalogs/ВнешниеКомпоненты/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/ВнешниеКомпоненты/Forms/ФормаЭлемента/Module.bsl index 8decc9a4e..274ca8085 100644 --- a/SSL/src/Catalogs/ВнешниеКомпоненты/Forms/ФормаЭлемента/Module.bsl +++ b/SSL/src/Catalogs/ВнешниеКомпоненты/Forms/ФормаЭлемента/Module.bsl @@ -98,16 +98,18 @@ Возврат; КонецЕсли; - СтандартнаяОбработка = Ложь; - - ПараметрЗакрытия = ВнешниеКомпонентыСлужебныйКлиент.РезультатЗагрузкиКомпоненты(); - ПараметрЗакрытия.Загружена = Записана; - ПараметрЗакрытия.Идентификатор = Объект.Идентификатор; - ПараметрЗакрытия.Версия = Объект.Версия; - ПараметрЗакрытия.Наименование = Объект.Наименование; - ПараметрЗакрытия.ДополнительнаяИнформация = ДополнительнаяИнформация; - - Закрыть(ПараметрЗакрытия); + Если Не Модифицированность Тогда + СтандартнаяОбработка = Ложь; + + ПараметрЗакрытия = ВнешниеКомпонентыСлужебныйКлиент.РезультатЗагрузкиКомпоненты(); + ПараметрЗакрытия.Загружена = Записана; + ПараметрЗакрытия.Идентификатор = Объект.Идентификатор; + ПараметрЗакрытия.Версия = Объект.Версия; + ПараметрЗакрытия.Наименование = Объект.Наименование; + ПараметрЗакрытия.ДополнительнаяИнформация = ДополнительнаяИнформация; + + Закрыть(ПараметрЗакрытия); + КонецЕсли; КонецПроцедуры @@ -139,7 +141,7 @@ Если Модифицированность Тогда Оповещение = Новый ОписаниеОповещения("ПослеЗакрытияВопросаЗаписатьОбъект", ЭтотОбъект); ПоказатьВопрос(Оповещение, - НСтр("ru = 'Для проверки обновления необходимо записать объект. Записать?'"), + НСтр("ru = 'Для проверки обновления необходимо записать изменения. Записать?'"), РежимДиалогаВопрос.ДаНет); Иначе НачатьОбновлениеКомпонентыСПортала(); @@ -201,7 +203,6 @@ #Область КлиентскаяЛогика -// Строит диалог загрузки компоненты из файла. &НаКлиенте Процедура ЗагрузитьКомпонентуИзФайла() @@ -251,6 +252,7 @@ Результат = ЗагрузитьКомпонентуИзФайлаНаСервере(ПараметрыЗагрузки); Если Результат.Загружена И ЭтоАдресВременногоХранилища(АдресДвоичныхДанныхКомпоненты)Тогда ДополнительнаяИнформация = Результат.ДополнительнаяИнформация; + Модифицированность = Истина; Иначе ЗагрузитьКомпонентуПриОтображенииОшибки(Результат.ОписаниеОшибки); КонецЕсли; @@ -307,12 +309,11 @@ РазблокироватьДанныеФормыДляРедактирования(); - МассивСсылок = Новый Массив; - МассивСсылок.Добавить(Объект.Ссылка); + ОбновляемыеКомпоненты = Новый Массив; + ОбновляемыеКомпоненты.Добавить(Объект.Ссылка); Оповещение = Новый ОписаниеОповещения("ПослеОбновленияКомпонентыСПортала", ЭтотОбъект); - - ВнешниеКомпонентыСлужебныйКлиент.ОбновитьКомпонентыСПортала(Оповещение, МассивСсылок); + ВнешниеКомпонентыСлужебныйКлиент.ОбновитьКомпонентыСПортала(Оповещение, ОбновляемыеКомпоненты); КонецПроцедуры @@ -332,7 +333,7 @@ Функция ЗагрузитьКомпонентуИзФайлаНаСервере(ПараметрыЗагрузки) Если Не Пользователи.ЭтоПолноправныйПользователь(,, Ложь) Тогда - ВызватьИсключение НСтр("ru = 'Недостаточно прав для совершения операции.'"); + ВызватьИсключение НСтр("ru = 'Недостаточно прав для загрузки компоненты.'"); КонецЕсли; ОбъектСправочника = РеквизитФормыВЗначение("Объект"); @@ -353,10 +354,9 @@ Если ОбъектСправочника.Идентификатор <> Информация.Реквизиты.Идентификатор Тогда Результат.ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Текущий идентификатор %1 отличается от загружаемого %2 - |Обновление невозможно.'"), - ОбъектСправочника.Идентификатор, - Информация.Реквизиты.Идентификатор); + НСтр("ru = 'Невозможно обновить компоненту, т.к. различаются идентификаторы. + |Ожидался %1, а идентификатор загружаемой внешней компоненты: %2.'"), + ОбъектСправочника.Идентификатор, Информация.Реквизиты.Идентификатор); Возврат Результат; КонецЕсли; diff --git a/SSL/src/Catalogs/ВнешниеКомпоненты/ManagerModule.bsl b/SSL/src/Catalogs/ВнешниеКомпоненты/ManagerModule.bsl index 009d091bb..a06b13796 100644 --- a/SSL/src/Catalogs/ВнешниеКомпоненты/ManagerModule.bsl +++ b/SSL/src/Catalogs/ВнешниеКомпоненты/ManagerModule.bsl @@ -18,7 +18,8 @@ // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: -// Массив Из Строка - +// Массив Из Строка +// Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт Результат = Новый Массив; diff --git a/SSL/src/Catalogs/ВнешниеКомпоненты/ВнешниеКомпоненты.mdo b/SSL/src/Catalogs/ВнешниеКомпоненты/ВнешниеКомпоненты.mdo index 32f5582f9..c0dc820c5 100644 --- a/SSL/src/Catalogs/ВнешниеКомпоненты/ВнешниеКомпоненты.mdo +++ b/SSL/src/Catalogs/ВнешниеКомпоненты/ВнешниеКомпоненты.mdo @@ -523,7 +523,7 @@ ОбновлениеКомпонентСПортала1СИТС ru - Обновление компонент с Портала 1С:ИТС + Обновление компонент с портала 1С:ИТС PersonalComputer MobileDevice diff --git a/SSL/src/Catalogs/ВнешниеПользователи/Forms/ФормаСписка/Module.bsl b/SSL/src/Catalogs/ВнешниеПользователи/Forms/ФормаСписка/Module.bsl index 484135612..7efbf83ec 100644 --- a/SSL/src/Catalogs/ВнешниеПользователи/Forms/ФормаСписка/Module.bsl +++ b/SSL/src/Catalogs/ВнешниеПользователи/Forms/ФормаСписка/Module.bsl @@ -37,7 +37,7 @@ // Начальное значение настройки до загрузки данных из настроек. ВыбиратьИерархически = Истина; - ЗаполнитьХранимыеПараметры(); + НовыйХранимыеПараметры(); МассивПустыхСсылок = Неопределено; Параметры.Свойство("Назначение", МассивПустыхСсылок); @@ -597,7 +597,7 @@ МассивПользователей = РезультатВыбора(); ОповеститьОВыборе(МассивПользователей); ЭтотОбъект.Модифицированность = Ложь; - Закрыть(); + Закрыть(МассивПользователей); КонецЕсли; КонецПроцедуры @@ -660,8 +660,18 @@ #Область СлужебныеПроцедурыИФункции +// Возвращаемое значение: +// Структура: +// * ВыборГруппВнешнихПользователей - Булево +// * ОтборОбъектАвторизации - ОпределяемыйТип.ВнешнийПользователь +// * РасширенныйПодбор - Булево +// * ГруппаВсеПользователи - СправочникСсылка.ГруппыВнешнихПользователей +// * ТекущаяСтрока - Число +// * ЗаголовокФормыПодбора - Строка +// * ИспользоватьГруппы - Булево +// &НаСервере -Процедура ЗаполнитьХранимыеПараметры() +Функция НовыйХранимыеПараметры() ХранимыеПараметры = Новый Структура; ХранимыеПараметры.Вставить("ВыборГруппВнешнихПользователей", Параметры.ВыборГруппВнешнихПользователей); @@ -671,8 +681,9 @@ Иначе ХранимыеПараметры.Вставить("ОтборОбъектАвторизации", Неопределено); КонецЕсли; + Возврат ХранимыеПараметры; -КонецПроцедуры +КонецФункции &НаСервере Процедура ЗаполнитьПараметрыДинамическихСписков(МассивПустыхСсылок = Неопределено) @@ -910,6 +921,9 @@ &НаСервере Процедура ЗаполнитьСписокВыбранныхПользователейИГрупп(ВыбранныеЭлементыИКартинки) + ПользователиСлужебный.ВыбратьПользователейГруппы( + ВыбранныеЭлементыИКартинки, ХранимыеПараметры, Элементы.ВнешниеПользователиСписок); + Для Каждого СтрокаМассива Из ВыбранныеЭлементыИКартинки Цикл ВыбранныйПользовательИлиГруппа = СтрокаМассива.ВыбранныйЭлемент; @@ -1164,11 +1178,11 @@ // Обработчик вопроса. // // Параметры: -// Ответ - КодВозвратаДиалога - -// ДополнительныеПараметры - Структура - где: -// * ПараметрыПеретаскивания - ПараметрыПеретаскивания - -// * Строка - СправочникСсылка.ГруппыВнешнихПользователей - -// * Перемещение - ДействиеПеретаскивания - +// Ответ - КодВозвратаДиалога +// ДополнительныеПараметры - Структура: +// * ПараметрыПеретаскивания - ПараметрыПеретаскивания +// * Строка - СправочникСсылка.ГруппыВнешнихПользователей +// * Перемещение - ДействиеПеретаскивания // &НаКлиенте Процедура ГруппыВнешнихПользователейПеретаскиваниеОбработкаВопроса(Ответ, ДополнительныеПараметры) Экспорт diff --git a/SSL/src/Catalogs/ВнешниеПользователи/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/ВнешниеПользователи/Forms/ФормаЭлемента/Module.bsl index ac298dee7..fa0c6c3a0 100644 --- a/SSL/src/Catalogs/ВнешниеПользователи/Forms/ФормаЭлемента/Module.bsl +++ b/SSL/src/Catalogs/ВнешниеПользователи/Forms/ФормаЭлемента/Module.bsl @@ -468,10 +468,10 @@ Если Строка.ЭтоНесуществующаяРоль Тогда ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки, "Роли[%1].РолиСиноним", - СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Роль ""%1"" не найдена в метаданных.'"), Строка.Синоним), + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Несуществующая роль ""%1"".'"), Строка.Синоним), "Роли", ЭлементыДерева.Индекс(Строка), - СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Роль ""%1"" в строке %2 не найдена в метаданных.'"), Строка.Синоним, "%1")); + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Несуществующая роль ""%1"" в строке %2.'"), Строка.Синоним, "%1")); КонецЕсли; Если Строка.ЭтоНедоступнаяРоль Тогда ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки, @@ -1353,7 +1353,7 @@ КонецЕсли; Элементы.СопоставлениеПояснениеНесоответствия.Заголовок = - НСтр("ru = 'Пользователь информационной базы не найден.'") + Рекомендация; + НСтр("ru = 'Несуществующий пользователь информационной базы.'") + Рекомендация; КонецПроцедуры diff --git a/SSL/src/Catalogs/ВнешниеПользователи/ManagerModule.bsl b/SSL/src/Catalogs/ВнешниеПользователи/ManagerModule.bsl index 73556536d..684fdb9e0 100644 --- a/SSL/src/Catalogs/ВнешниеПользователи/ManagerModule.bsl +++ b/SSL/src/Catalogs/ВнешниеПользователи/ManagerModule.bsl @@ -18,7 +18,8 @@ // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: -// Массив Из Строка - +// Массив Из Строка +// Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт НеРедактируемыеРеквизиты = Новый Массив; diff --git a/SSL/src/Catalogs/ВнешниеПользователи/ObjectModule.bsl b/SSL/src/Catalogs/ВнешниеПользователи/ObjectModule.bsl index 56671a553..42638ba40 100644 --- a/SSL/src/Catalogs/ВнешниеПользователи/ObjectModule.bsl +++ b/SSL/src/Catalogs/ВнешниеПользователи/ObjectModule.bsl @@ -82,7 +82,7 @@ Блокировка.Добавить("Справочник.ГруппыВнешнихПользователей"); Блокировка.Заблокировать(); - ОбъектГруппы = ДополнительныеСвойства.ГруппаНовогоВнешнегоПользователя.ПолучитьОбъект(); + ОбъектГруппы = ДополнительныеСвойства.ГруппаНовогоВнешнегоПользователя.ПолучитьОбъект(); // СправочникСсылка.ГруппыВнешнихПользователей ОбъектГруппы.Состав.Добавить().ВнешнийПользователь = Ссылка; ОбъектГруппы.Записать(); КонецЕсли; diff --git a/SSL/src/Catalogs/ВопросыШаблонаАнкеты/ManagerModule.bsl b/SSL/src/Catalogs/ВопросыШаблонаАнкеты/ManagerModule.bsl index cda2e7435..cf29d1f39 100644 --- a/SSL/src/Catalogs/ВопросыШаблонаАнкеты/ManagerModule.bsl +++ b/SSL/src/Catalogs/ВопросыШаблонаАнкеты/ManagerModule.bsl @@ -18,7 +18,8 @@ // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: -// Массив Из Строка - +// Массив Из Строка +// Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт Результат = Новый Массив; diff --git a/SSL/src/Catalogs/ВстречаПрисоединенныеФайлы/ManagerModule.bsl b/SSL/src/Catalogs/ВстречаПрисоединенныеФайлы/ManagerModule.bsl index c0b9772bf..ec189d0e3 100644 --- a/SSL/src/Catalogs/ВстречаПрисоединенныеФайлы/ManagerModule.bsl +++ b/SSL/src/Catalogs/ВстречаПрисоединенныеФайлы/ManagerModule.bsl @@ -18,7 +18,8 @@ // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: -// Массив Из Строка - +// Массив Из Строка +// Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт Возврат РаботаСФайлами.РеквизитыРедактируемыеВГрупповойОбработке(); diff --git a/SSL/src/Catalogs/ГруппыВнешнихПользователей/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/ГруппыВнешнихПользователей/Forms/ФормаЭлемента/Module.bsl index 8fa8b5276..cff58d851 100644 --- a/SSL/src/Catalogs/ГруппыВнешнихПользователей/Forms/ФормаЭлемента/Module.bsl +++ b/SSL/src/Catalogs/ГруппыВнешнихПользователей/Forms/ФормаЭлемента/Module.bsl @@ -171,10 +171,10 @@ Если Строка.ЭтоНесуществующаяРоль Тогда ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки, "Роли[%1].РолиСиноним", - СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Роль ""%1"" не найдена в метаданных.'"), Строка.Синоним), + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Несуществующая роль ""%1"".'"), Строка.Синоним), "Роли", ЭлементыДерева.Индекс(Строка), - СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Роль ""%1"" в строке %2 не найдена в метаданных.'"), Строка.Синоним, "%1")); + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Несуществующая роль ""%1"" в строке %2.'"), Строка.Синоним, "%1")); КонецЕсли; Если Строка.ЭтоНедоступнаяРоль Тогда ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки, diff --git a/SSL/src/Catalogs/ГруппыВнешнихПользователей/ManagerModule.bsl b/SSL/src/Catalogs/ГруппыВнешнихПользователей/ManagerModule.bsl index ba021a8b1..7e7761afd 100644 --- a/SSL/src/Catalogs/ГруппыВнешнихПользователей/ManagerModule.bsl +++ b/SSL/src/Catalogs/ГруппыВнешнихПользователей/ManagerModule.bsl @@ -18,7 +18,8 @@ // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: -// Массив Из Строка - +// Массив Из Строка +// Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт НеРедактируемыеРеквизиты = Новый Массив; diff --git a/SSL/src/Catalogs/ГруппыДоступа/Forms/ВыборПоОтветственному/Module.bsl b/SSL/src/Catalogs/ГруппыДоступа/Forms/ВыборПоОтветственному/Module.bsl index 1cdaf47d1..86b36e9cb 100644 --- a/SSL/src/Catalogs/ГруппыДоступа/Forms/ВыборПоОтветственному/Module.bsl +++ b/SSL/src/Catalogs/ГруппыДоступа/Forms/ВыборПоОтветственному/Module.bsl @@ -123,9 +123,10 @@ КонецЕсли; КонецЦикла; - Для каждого УдалитьПапку Из УдалитьПапки Цикл - Если УдалитьПапку.Ключ.Индекс(УдалитьПапку.Значение) > -1 Тогда - УдалитьПапку.Ключ.Удалить(УдалитьПапку.Значение); + Для Каждого КлючИЗначение Из УдалитьПапки Цикл + Строки = КлючИЗначение.Ключ; // КоллекцияСтрокДереваЗначений + Если Строки.Индекс(КлючИЗначение.Значение) > -1 Тогда + Строки.Удалить(КлючИЗначение.Значение); КонецЕсли; КонецЦикла; diff --git a/SSL/src/Catalogs/ГруппыДоступа/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/ГруппыДоступа/Forms/ФормаЭлемента/Module.bsl index a78f04ff7..28c2b3b33 100644 --- a/SSL/src/Catalogs/ГруппыДоступа/Forms/ФормаЭлемента/Module.bsl +++ b/SSL/src/Catalogs/ГруппыДоступа/Forms/ФормаЭлемента/Module.bsl @@ -1319,6 +1319,7 @@ ПараметрыФормы.Вставить("МножественныйВыбор", Истина); ПараметрыФормы.Вставить("РасширенныйПодбор", Истина); ПараметрыФормы.Вставить("ПараметрыРасширеннойФормыПодбора", ПараметрыРасширеннойФормыПодбора()); + ПараметрыФормы.Вставить("ВыборГруппПользователей", Истина); ИначеЕсли Объект.Ссылка <> ПредопределенноеЗначение("Справочник.ГруппыДоступа.Администраторы") Тогда Если ВыборИПодборВнешнихПользователей Тогда ПараметрыФормы.Вставить("ВыборГруппВнешнихПользователей", Истина); diff --git a/SSL/src/Catalogs/ГруппыДоступа/ManagerModule.bsl b/SSL/src/Catalogs/ГруппыДоступа/ManagerModule.bsl index 8d0f499f2..01a6815b2 100644 --- a/SSL/src/Catalogs/ГруппыДоступа/ManagerModule.bsl +++ b/SSL/src/Catalogs/ГруппыДоступа/ManagerModule.bsl @@ -18,7 +18,8 @@ // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: -// Массив Из Строка - +// Массив Из Строка +// Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт НеРедактируемыеРеквизиты = Новый Массив; @@ -265,13 +266,15 @@ // Если родитель не найден он будет создан. // // Параметры: -// НеСоздавать - Булево, если задан Истина, родитель не будет автоматически создан, +// НеСоздавать - Булево - если задан Истина, родитель не будет автоматически создан, // а функция вернет Неопределено, если родитель не найден. // +// НаименованиеГруппыЭлементов - Строка +// // Возвращаемое значение: // СправочникСсылка.ГруппыДоступа - ссылка на группу-родителя. // -Функция РодительПерсональныхГруппДоступа(Знач НеСоздавать = Ложь, НаименованиеГруппыЭлементов = Неопределено) Экспорт +Функция РодительПерсональныхГруппДоступа(Знач НеСоздавать = Ложь, НаименованиеГруппыЭлементов = "") Экспорт УстановитьПривилегированныйРежим(Истина); @@ -604,6 +607,10 @@ // Только для внутреннего использования. +// +// Параметры: +// ЭлементДанных - СправочникОбъект.ГруппыДоступа +// Процедура ЗарегистрироватьГруппуДоступаИзмененнуюПриЗагрузке(ЭлементДанных) Экспорт СтарыеЗначения = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ЭлементДанных.Ссылка, diff --git a/SSL/src/Catalogs/ГруппыДоступа/ObjectModule.bsl b/SSL/src/Catalogs/ГруппыДоступа/ObjectModule.bsl index 02709de9f..373e0e553 100644 --- a/SSL/src/Catalogs/ГруппыДоступа/ObjectModule.bsl +++ b/SSL/src/Catalogs/ГруппыДоступа/ObjectModule.bsl @@ -195,6 +195,14 @@ #Область СлужебныеПроцедурыИФункции +// Параметры: +// НовыеУчастники - СправочникТабличнаяЧасть.ГруппыДоступа.Пользователи +// СтарыеУчастники - РезультатЗапроса +// Возвращаемое значение: +// Структура: +// * ВнешниеПользователи - Булево +// * Пользователи - Булево +// Функция ТипыИзмененныхУчастников(НовыеУчастники, СтарыеУчастники) ТипыИзмененныхУчастников = Новый Структура; diff --git a/SSL/src/Catalogs/ГруппыИсполнителейЗадач/ManagerModule.bsl b/SSL/src/Catalogs/ГруппыИсполнителейЗадач/ManagerModule.bsl index db90de988..363a488fa 100644 --- a/SSL/src/Catalogs/ГруппыИсполнителейЗадач/ManagerModule.bsl +++ b/SSL/src/Catalogs/ГруппыИсполнителейЗадач/ManagerModule.bsl @@ -18,7 +18,8 @@ // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: -// Массив Из Строка - +// Массив Из Строка +// Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт Результат = Новый Массив; diff --git a/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ФормаСписка/Form.form b/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ФормаСписка/Form.form index 5835fb0bf..8c7c1fead 100644 --- a/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ФормаСписка/Form.form +++ b/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ФормаСписка/Form.form @@ -1722,6 +1722,13 @@ DontUse Auto + + Заголовок + + String + + + diff --git a/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ФормаСписка/Module.bsl b/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ФормаСписка/Module.bsl index 3f8ecf853..9fee5ae0c 100644 --- a/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ФормаСписка/Module.bsl +++ b/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ФормаСписка/Module.bsl @@ -15,8 +15,8 @@ Если Параметры.РежимВыбора Тогда РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца; КонецЕсли; - - Если Параметры.Свойство("Заголовок") Тогда + + Если ЗначениеЗаполнено(Параметры.Заголовок) Тогда АвтоЗаголовок = Ложь; Заголовок = Параметры.Заголовок; КонецЕсли; @@ -212,15 +212,6 @@ Возврат Истина; КонецФункции -&НаКлиенте -Процедура ЗагрузитьФайлОбработкиОтчетаЗавершение(Результат, ДополнительныеПараметры) Экспорт - - Если Результат = "ФайлЗагружен" Тогда - ПоказатьЗначение(,Элементы.Список.ТекущиеДанные.Ссылка); - КонецЕсли; - -КонецПроцедуры - &НаСервере Процедура УстановитьУсловноеОформление() diff --git a/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ФормаЭлемента/Module.bsl index 9dfb3ada2..5b7ec54fb 100644 --- a/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ФормаЭлемента/Module.bsl +++ b/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ФормаЭлемента/Module.bsl @@ -903,6 +903,10 @@ КонецПроцедуры +// Параметры: +// Ответ - КодВозвратаДиалога +// ДополнительныеПараметры - Структура +// &НаКлиенте Процедура ВариантыДополнительногоОтчетаПередУдалениемЗавершение(Ответ, ДополнительныеПараметры) Экспорт Если Ответ = КодВозвратаДиалога.Да Тогда @@ -1332,7 +1336,7 @@ &НаСервере Процедура СформироватьСписокРазрешений() - ТаблицаРазрешений = ПолучитьИзВременногоХранилища(АдресРазрешений); + ТаблицаРазрешений = ПолучитьИзВременногоХранилища(АдресРазрешений);// СправочникТабличнаяЧасть.ДополнительныеОтчетыИОбработки.Разрешения Разрешения = Новый Массив(); @@ -1459,7 +1463,7 @@ МодульВариантыОтчетов = ОбщегоНазначения.ОбщийМодуль("ВариантыОтчетов"); ОтчетМетаданные = ВнешнийОбъект.Метаданные(); - СхемаКДМетаданные = ОтчетМетаданные.ОсновнаяСхемаКомпоновкиДанных; + СхемаКДМетаданные = ОтчетМетаданные.ОсновнаяСхемаКомпоновкиДанных;// ОбъектМетаданных Если СхемаКДМетаданные <> Неопределено Тогда СхемаКД = ВнешнийОбъект.ПолучитьМакет(СхемаКДМетаданные.Имя); Для Каждого ВариантНастроекКД Из СхемаКД.ВариантыНастроек Цикл diff --git a/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/ManagerModule.bsl b/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/ManagerModule.bsl index f7501c74f..d7d199fe3 100644 --- a/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/ManagerModule.bsl +++ b/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/ManagerModule.bsl @@ -18,7 +18,8 @@ // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: -// Массив Из Строка - +// Массив Из Строка +// Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт Результат = Новый Массив; diff --git a/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/ObjectModule.bsl b/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/ObjectModule.bsl index 21540cb6f..1c2cb01b4 100644 --- a/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/ObjectModule.bsl +++ b/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/ObjectModule.bsl @@ -221,7 +221,7 @@ Возврат; КонецЕсли; - ТаблицаКоманд = ДополнительныеСвойства.АктуальныеКоманды; + ТаблицаКоманд = ДополнительныеСвойства.АктуальныеКоманды;// СправочникТабличнаяЧасть.ДополнительныеОтчетыИОбработки.Команды ЗаданияДляОбновления = Новый Соответствие; @@ -293,7 +293,7 @@ УстановитьПривилегированныйРежим(Истина); Для Каждого КлючИЗначение Из ДополнительныеСвойства.ЗаданияДляОбновления Цикл - Команда = КлючИЗначение.Ключ; + Команда = КлючИЗначение.Ключ;// СправочникТабличнаяЧастьСтрока.ДополнительныеОтчетыИОбработки.Команды Задание = КлючИЗначение.Значение; Изменения = Новый Структура; diff --git a/SSL/src/Catalogs/ЗакладкиВзаимодействий/ManagerModule.bsl b/SSL/src/Catalogs/ЗакладкиВзаимодействий/ManagerModule.bsl index 3d7b5419b..a7705d0b2 100644 --- a/SSL/src/Catalogs/ЗакладкиВзаимодействий/ManagerModule.bsl +++ b/SSL/src/Catalogs/ЗакладкиВзаимодействий/ManagerModule.bsl @@ -18,7 +18,8 @@ // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: -// Массив - список имен реквизитов объекта. +// Массив Из Строка +// Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт Результат = Новый Массив; diff --git a/SSL/src/Catalogs/Заметки/ManagerModule.bsl b/SSL/src/Catalogs/Заметки/ManagerModule.bsl index 51ca1f8af..4b6443cd6 100644 --- a/SSL/src/Catalogs/Заметки/ManagerModule.bsl +++ b/SSL/src/Catalogs/Заметки/ManagerModule.bsl @@ -18,7 +18,8 @@ // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: -// Массив Из Строка - +// Массив Из Строка +// Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт Результат = Новый Массив; diff --git a/SSL/src/Catalogs/ЗапланированноеВзаимодействиеПрисоединенныеФайлы/ManagerModule.bsl b/SSL/src/Catalogs/ЗапланированноеВзаимодействиеПрисоединенныеФайлы/ManagerModule.bsl index c0b9772bf..ec189d0e3 100644 --- a/SSL/src/Catalogs/ЗапланированноеВзаимодействиеПрисоединенныеФайлы/ManagerModule.bsl +++ b/SSL/src/Catalogs/ЗапланированноеВзаимодействиеПрисоединенныеФайлы/ManagerModule.bsl @@ -18,7 +18,8 @@ // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: -// Массив Из Строка - +// Массив Из Строка +// Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт Возврат РаботаСФайлами.РеквизитыРедактируемыеВГрупповойОбработке(); diff --git a/SSL/src/Catalogs/ЗначенияСвойствОбъектов/ManagerModule.bsl b/SSL/src/Catalogs/ЗначенияСвойствОбъектов/ManagerModule.bsl index 4b068c1c2..9369a691d 100644 --- a/SSL/src/Catalogs/ЗначенияСвойствОбъектов/ManagerModule.bsl +++ b/SSL/src/Catalogs/ЗначенияСвойствОбъектов/ManagerModule.bsl @@ -18,7 +18,8 @@ // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: -// Массив Из Строка - +// Массив Из Строка +// Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт РедактируемыеРеквизиты = Новый Массив; diff --git a/SSL/src/Catalogs/ЗначенияСвойствОбъектовИерархия/ManagerModule.bsl b/SSL/src/Catalogs/ЗначенияСвойствОбъектовИерархия/ManagerModule.bsl index b4da963aa..012483383 100644 --- a/SSL/src/Catalogs/ЗначенияСвойствОбъектовИерархия/ManagerModule.bsl +++ b/SSL/src/Catalogs/ЗначенияСвойствОбъектовИерархия/ManagerModule.bsl @@ -18,7 +18,8 @@ // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: -// Массив Из Строка - +// Массив Из Строка +// Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт РедактируемыеРеквизиты = Новый Массив; diff --git a/SSL/src/Catalogs/ИдентификаторыОбъектовМетаданных/ManagerModule.bsl b/SSL/src/Catalogs/ИдентификаторыОбъектовМетаданных/ManagerModule.bsl index 406123aed..2d4fb6834 100644 --- a/SSL/src/Catalogs/ИдентификаторыОбъектовМетаданных/ManagerModule.bsl +++ b/SSL/src/Catalogs/ИдентификаторыОбъектовМетаданных/ManagerModule.bsl @@ -18,7 +18,8 @@ // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: -// Массив Из Строка - +// Массив Из Строка +// Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт РедактируемыеРеквизиты = Новый Массив; @@ -166,7 +167,7 @@ // Только для внутреннего использования. // // Параметры: -// Объекты - Массив из СправочникОбъект.ИдентификаторыОбъектовМетаданных - +// Объекты - Массив из СправочникОбъект.ИдентификаторыОбъектовМетаданных // Процедура ЗагрузитьДанныеВПодчиненныйУзел(Объекты) Экспорт @@ -378,8 +379,8 @@ // // Возвращаемое значение: // Массив - со значениями: -// * Значение - СправочникСсылка.ИдентификаторыОбъектовМетаданных, -// СправочникСсылка.ИдентификаторыОбъектовРасширений - найденная ссылка. +// * Значение - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// - СправочникСсылка.ИдентификаторыОбъектовРасширений - найденная ссылка. // Функция ИдентификаторУдаленногоОбъектаМетаданных(ПолноеИмяУдаленного) Экспорт @@ -582,9 +583,8 @@ Массив = Новый Массив; Массив.Добавить(ПолноеИмяОбъектаМетаданных); - Идентификатор = ИдентификаторыОбъектовМетаданных(Массив, - ВызыватьИсключение, Истина).Получить(ПолноеИмяОбъектаМетаданных); - + Идентификаторы = ИдентификаторыОбъектовМетаданных(Массив, ВызыватьИсключение, Истина); + Идентификатор = Идентификаторы.Получить(ПолноеИмяОбъектаМетаданных); Если Идентификатор = Неопределено Тогда Возврат Null; КонецЕсли; @@ -891,15 +891,15 @@ // Только для внутреннего использования. // // Возвращаемое значение: -// ТаблицаЗначений - -// * ПорядокБиблиотеки - Число - -// * ВерсияЧасть1 - Число - -// * ВерсияЧасть2 - Число - -// * ВерсияЧасть3 - Число - -// * ВерсияЧасть4 - Число - -// * ПорядокДобавления - Число - -// * СтароеПолноеИмя - Строка - -// * НовоеПолноеИмя - Строка - +// ТаблицаЗначений: +// * ПорядокБиблиотеки - Число +// * ВерсияЧасть1 - Число +// * ВерсияЧасть2 - Число +// * ВерсияЧасть3 - Число +// * ВерсияЧасть4 - Число +// * ПорядокДобавления - Число +// * СтароеПолноеИмя - Строка +// * НовоеПолноеИмя - Строка // Функция ТаблицаПереименованияДляТекущейВерсии() Экспорт @@ -1189,8 +1189,8 @@ // Только для внутреннего использования. // // Параметры: -// Форма - ФормаКлиентскогоПриложения - : -// * Список - ДинамическийСписок - +// Форма - ФормаКлиентскогоПриложения: +// * Список - ДинамическийСписок // Процедура ФормаСпискаПриСозданииНаСервере(Форма) Экспорт @@ -1213,9 +1213,10 @@ // Только для внутреннего использования. // // Параметры: -// Форма - ФормаКлиентскогоПриложения - : -// * Объект - ДанныеФормыСтруктура - : -// ** Ссылка - СправочникСсылка.ИдентификаторыОбъектовМетаданных, СправочникСсылка.ИдентификаторыОбъектовРасширений - +// Форма - ФормаКлиентскогоПриложения: +// * Объект - ДанныеФормыСтруктура: +// ** Ссылка - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// - СправочникСсылка.ИдентификаторыОбъектовРасширений // Процедура ФормаЭлементаПриСозданииНаСервере(Форма) Экспорт @@ -1381,29 +1382,31 @@ КонецПроцедуры // Возвращаемое значение: -// ТаблицаЗначений - : -// * Ссылка - СправочникСсылка.ИдентификаторыОбъектовМетаданных, СправочникСсылка.ИдентификаторыОбъектовРасширений - -// * ИмяПредопределенныхДанных - Строка - -// * Родитель - СправочникСсылка.ИдентификаторыОбъектовМетаданных, СправочникСсылка.ИдентификаторыОбъектовРасширений - -// * ПометкаУдаления - Булево - -// * Наименование - Строка - -// * ПорядокКоллекции - Число - -// * Имя - Строка - -// * Синоним - Строка - -// * ПолноеИмя - Строка - -// * ПолныйСиноним - Строка - -// * БезДанных - Булево - -// * ЗначениеПустойСсылки - СправочникСсылка.ИдентификаторыОбъектовМетаданных - -// - СправочникСсылка.ИдентификаторыОбъектовРасширений - -// * ХранилищеКлюча - ХранилищеЗначения - -// * НоваяСсылка - СправочникСсылка.ИдентификаторыОбъектовМетаданных, -// СправочникСсылка.ИдентификаторыОбъектовРасширений - -// * ИмяРасширения - Строка - -// * ХешСуммаРасширения - Строка - -// * КлючОбъектаМетаданных - ХранилищеЗначения - -// * БезКлючаОбъектаМетаданных - Булево - -// * ЭтоКоллекция - Булево - -// * ЭтоНовый - Булево - +// ТаблицаЗначений: +// * Ссылка - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// - СправочникСсылка.ИдентификаторыОбъектовРасширений +// * ИмяПредопределенныхДанных - Строка +// * Родитель - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// - СправочникСсылка.ИдентификаторыОбъектовРасширений +// * ПометкаУдаления - Булево +// * Наименование - Строка +// * ПорядокКоллекции - Число +// * Имя - Строка +// * Синоним - Строка +// * ПолноеИмя - Строка +// * ПолныйСиноним - Строка +// * БезДанных - Булево +// * ЗначениеПустойСсылки - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// - СправочникСсылка.ИдентификаторыОбъектовРасширений +// * ХранилищеКлюча - ХранилищеЗначения +// * НоваяСсылка - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// - СправочникСсылка.ИдентификаторыОбъектовРасширений +// * ИмяРасширения - Строка +// * ХешСуммаРасширения - Строка +// * КлючОбъектаМетаданных - ХранилищеЗначения +// * БезКлючаОбъектаМетаданных - Булево +// * ЭтоКоллекция - Булево +// * ЭтоНовый - Булево // Функция ВыгрузкаВсехИдентификаторов(ОбъектыРасширений = Ложь) @@ -2660,7 +2663,7 @@ Попытка Идентификаторы = ИдентификаторыОбъектовМетаданныхБезПопыткиПовтора( - ПолныеИменаОбъектовМетаданных, Истина, ОдинЭлемент); + ПолныеИменаОбъектовМетаданных, Истина, ОдинЭлемент, Истина); Исключение Идентификаторы = Неопределено; КонецПопытки; @@ -2678,7 +2681,7 @@ КонецЕсли; Идентификаторы = ИдентификаторыОбъектовМетаданныхБезПопыткиПовтора( - ПолныеИменаОбъектовМетаданных, ВызыватьИсключение, ОдинЭлемент); + ПолныеИменаОбъектовМетаданных, ВызыватьИсключение, ОдинЭлемент, Не ВызыватьИсключение); КонецЕсли; Возврат Идентификаторы; @@ -2686,7 +2689,8 @@ КонецФункции // Для функций ИдентификаторыОбъектовМетаданных. -Функция ИдентификаторыОбъектовМетаданныхБезПопыткиПовтора(ПолныеИменаОбъектовМетаданных, ВызыватьИсключение, ОдинЭлемент) +Функция ИдентификаторыОбъектовМетаданныхБезПопыткиПовтора(ПолныеИменаОбъектовМетаданных, + ВызыватьИсключение, ОдинЭлемент, ПропускатьНеподдерживаемыеОбъекты) УстановитьПривилегированныйРежим(Истина); @@ -2752,8 +2756,7 @@ Продолжить; КонецЕсли; ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Объект метаданных не найден по полному имени: - |""%1"".'"), + НСтр("ru = 'Объект метаданных с именем ""%1"" не существует.'"), ПолноеИмяОбъектаМетаданных); Ошибки.Добавить(ОписаниеОшибки); Продолжить; @@ -2778,6 +2781,9 @@ И Не Метаданные.Задачи.Содержит(ОбъектМетаданных) И Не ЭтоПодсистема(ОбъектМетаданных) Тогда + Если ПропускатьНеподдерживаемыеОбъекты Тогда + Продолжить; + КонецЕсли; ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Объект метаданных не поддерживается: |""%1"". @@ -2815,9 +2821,9 @@ ШаблонОшибки = ?(Расширение <> Неопределено, НСтр("ru = 'Для объекта метаданных ""%1"" - |не найден идентификатор в регистре сведений ""Идентификаторы объектов версий расширений"".'"), + |не существует идентификатор в регистре сведений ""Идентификаторы объектов версий расширений"".'"), НСтр("ru = 'Для объекта метаданных ""%1"" - |не найден идентификатор в справочнике ""Идентификаторы объектов метаданных"".'")); + |не существует идентификатор в справочнике ""Идентификаторы объектов метаданных"".'")); ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонОшибки, ПолноеИмяОбъектаМетаданных); ДобавитьУточнениеОшибкиПараметровРаботыПрограммыДляРазработчика = Истина; Ошибки.Добавить(ОписаниеОшибки); @@ -2870,12 +2876,12 @@ Если КоличествоОшибок > 0 Тогда Если ОдинЭлемент Тогда - ЗаголовокОшибки = НСтр("ru = 'Ошибка при выполнении функции ОбщегоНазначения.ИдентификаторОбъектаМетаданных().'"); + ЗаголовокОшибки = НСтр("ru = 'Ошибка при выполнении функции ОбщегоНазначения.ИдентификаторОбъектаМетаданных.'"); ИначеЕсли КоличествоОшибок = 1 Тогда - ЗаголовокОшибки = НСтр("ru = 'Ошибка при выполнении функции ОбщегоНазначения.ИдентификаторыОбъектовМетаданных().'"); + ЗаголовокОшибки = НСтр("ru = 'Ошибка при выполнении функции ОбщегоНазначения.ИдентификаторыОбъектовМетаданных.'"); Иначе - ЗаголовокОшибки = НСтр("ru = 'Ошибки при выполнении функции ОбщегоНазначения.ИдентификаторыОбъектовМетаданных().'"); + ЗаголовокОшибки = НСтр("ru = 'Ошибки при выполнении функции ОбщегоНазначения.ИдентификаторыОбъектовМетаданных.'"); КонецЕсли; Разделитель = Символы.ПС + Символы.ПС; @@ -3089,7 +3095,7 @@ Если ВызыватьИсключение Тогда ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Идентификатор ""%1"" - |не найден в справочнике ""%2"".'"), + |не существует в справочнике ""%2"".'"), Строка(Идентификатор), НазваниеСправочника(ИдентификаторыРасширений.Найти(Идентификатор) <> Неопределено)); @@ -3260,7 +3266,7 @@ КонецЕсли; Если ПолноеИмя = Неопределено Тогда - Возврат НСтр("ru = 'Объект не найден.'") + Возврат НСтр("ru = 'Объект не существует.'") КонецЕсли; ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ПолноеИмя); @@ -3393,15 +3399,13 @@ // АПК:1327-выкл - №783.1.4.1 Во-первых, нетранзакционная операция, так как может быть длительной. // Во-вторых, выполняется после загрузки данных из главного узла в режиме обновление информационной базы. // В третьих, выполняется только тогда, когда найдены дубли идентификаторов объектов метаданных (редкий случай). - Параметры = Новый Структура; + Параметры = ПараметрыЗаменыЭлементов(); Для Каждого РегистрБухгалтерии Из Метаданные.РегистрыБухгалтерии Цикл Параметры.Вставить(РегистрБухгалтерии.Имя + "Субконто", РегистрБухгалтерии.ПланСчетов.МаксКоличествоСубконто); Параметры.Вставить(РегистрБухгалтерии.Имя + "Корреспонденция", РегистрБухгалтерии.Корреспонденция); КонецЦикла; - Параметры.Вставить("Объект", Неопределено); - ОбрабатываемаяСсылка = Неопределено; БылиИсключения = Ложь; @@ -3614,7 +3618,7 @@ Для Каждого Последовательность Из Метаданные.Последовательности Цикл Если Последовательность.Документы.Содержит(СтрокаТаблицы.Метаданные) Тогда НадоЗаписывать = Ложь; - НаборЗаписи = Последовательности[Последовательность.Имя].СоздатьНаборЗаписей(); + НаборЗаписи = Последовательности[Последовательность.Имя].СоздатьНаборЗаписей(); // ПоследовательностьНаборЗаписей НаборЗаписи.Отбор.Регистратор.Установить(СтрокаТаблицы.Данные); НаборЗаписи.Прочитать(); @@ -3721,7 +3725,7 @@ СтруктураИзмерений = Новый Структура; МенеджерРегистра = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(СтрокаТаблицы.Метаданные.ПолноеИмя()); - НаборЗаписей = МенеджерРегистра.СоздатьНаборЗаписей(); + НаборЗаписей = МенеджерРегистра.СоздатьНаборЗаписей(); // РегистрСведенийНаборЗаписей Для Каждого Измерение Из СтрокаТаблицы.Метаданные.Измерения Цикл НаборЗаписей.Отбор[Измерение.Имя].Установить(СтрокаТаблицы.Данные[Измерение.Имя]); СтруктураИзмерений.Вставить(Измерение.Имя, СтрокаТаблицы.Данные[Измерение.Имя]); @@ -3841,6 +3845,20 @@ КонецФункции +// Возвращаемое значение: +// Структура: +// * Объект - СправочникОбъект +// - Неопределено +// +Функция ПараметрыЗаменыЭлементов() + + Параметры = Новый Структура; + Параметры.Вставить("Объект", Неопределено); + Возврат Параметры; + +КонецФункции + + // Процедура из универсальной обработки ПоискИЗаменаЗначений. // Изменения: // - заменен метод Сообщить(...) на ЗаписьЖурналаРегистрации(...). diff --git a/SSL/src/Catalogs/ИдентификаторыОбъектовМетаданных/ИдентификаторыОбъектовМетаданных.mdo b/SSL/src/Catalogs/ИдентификаторыОбъектовМетаданных/ИдентификаторыОбъектовМетаданных.mdo index 58fe1b791..2aed0b62c 100644 --- a/SSL/src/Catalogs/ИдентификаторыОбъектовМетаданных/ИдентификаторыОбъектовМетаданных.mdo +++ b/SSL/src/Catalogs/ИдентификаторыОбъектовМетаданных/ИдентификаторыОбъектовМетаданных.mdo @@ -1163,66 +1163,102 @@ - + РегистрСведенийЗапущенныеОбработчикиОчередиЗаданий - + РегистрСведенийКэшДанныхКлассификаторов - + + РегистрСведенийНеудаленныеОбъекты + + + + + РегистрСведенийОбновлениеКлючейДоступаТекущиеЗадания - + РегистрСведенийОбщиеПоставляемыеМакетыПечати - + РегистрСведенийОчередьОбновляемыхПоставляемыхРасширенийВОбластяхДанных - + РегистрСведенийОчередьРасширенийДляОповещений - + РегистрСведенийПоставляемыеДанныеТребующиеОбработкиВОбластях - + РегистрСведенийСвязиАдресныхОбъектов - + РегистрСведенийСостоянияПроверокВеденияУчета - + + РегистрСведенийУдаляемыеОбъекты + + + + + РегистрСведенийПериодыНерабочихДнейКалендаря + + РегистрСведенийОбработчикиОбновления + + + + + + РегистрСведенийОбработчикиОбновленияОбщихДанных + + + + + + РегистрСведенийПотокиОбновления + + + + + + РегистрСведенийСостоянияОригиналовПервичныхДокументов + + + + DontAutoUpdate InDialog diff --git a/SSL/src/Catalogs/ИдентификаторыОбъектовРасширений/ManagerModule.bsl b/SSL/src/Catalogs/ИдентификаторыОбъектовРасширений/ManagerModule.bsl index ad6f2c0b3..3ae5bb329 100644 --- a/SSL/src/Catalogs/ИдентификаторыОбъектовРасширений/ManagerModule.bsl +++ b/SSL/src/Catalogs/ИдентификаторыОбъектовРасширений/ManagerModule.bsl @@ -18,7 +18,8 @@ // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: -// Массив Из Строка - +// Массив Из Строка +// Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт Возврат Справочники.ИдентификаторыОбъектовМетаданных.РеквизитыРедактируемыеВГрупповойОбработке(); diff --git a/SSL/src/Catalogs/Календари/Forms/ФормаЭлемента/Form.form b/SSL/src/Catalogs/Календари/Forms/ФормаЭлемента/Form.form index 04373b664..dabe49400 100644 --- a/SSL/src/Catalogs/Календари/Forms/ФормаЭлемента/Form.form +++ b/SSL/src/Catalogs/Календари/Forms/ФормаЭлемента/Form.form @@ -2882,6 +2882,7 @@ TextPicture + true DontUse Auto diff --git a/SSL/src/Catalogs/Календари/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/Календари/Forms/ФормаЭлемента/Module.bsl index 15071ec64..63e8950b9 100644 --- a/SSL/src/Catalogs/Календари/Forms/ФормаЭлемента/Module.bsl +++ b/SSL/src/Catalogs/Календари/Forms/ФормаЭлемента/Module.bsl @@ -15,7 +15,7 @@ Если Не Объект.Ссылка.Пустая() Тогда Возврат; - КонецЕсли; + КонецЕсли; ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан("Справочник.Календари", ЭтотОбъект); @@ -363,6 +363,8 @@ УстановитьДоступностьУчитыватьПраздники(ЭтотОбъект); УстановитьДоступностьРасписанияПредпраздничногоДня(ЭтотОбъект); + УстановитьДоступностьРучныхИзменений(); + КонецПроцедуры &НаСервере @@ -1052,4 +1054,13 @@ КонецПроцедуры +&НаСервере +Процедура УстановитьДоступностьРучныхИзменений() + + Если Не ПравоДоступа("Изменение", Метаданные.Справочники.Календари) Тогда + Элементы.ГрафикРаботы.ТолькоПросмотр = Истина; + КонецЕсли; + +КонецПроцедуры + #КонецОбласти diff --git a/SSL/src/Catalogs/КлассификаторБанков/ManagerModule.bsl b/SSL/src/Catalogs/КлассификаторБанков/ManagerModule.bsl index 035d59eee..b2d9209ea 100644 --- a/SSL/src/Catalogs/КлассификаторБанков/ManagerModule.bsl +++ b/SSL/src/Catalogs/КлассификаторБанков/ManagerModule.bsl @@ -18,7 +18,8 @@ // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: -// Массив Из Строка - +// Массив Из Строка +// Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт Результат = Новый Массив; diff --git a/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/Forms/ФормаСписка/Module.bsl b/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/Forms/ФормаСписка/Module.bsl index 1bed9ef61..2a8b91a62 100644 --- a/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/Forms/ФормаСписка/Module.bsl +++ b/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/Forms/ФормаСписка/Module.bsl @@ -879,7 +879,7 @@ | ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.Представления КАК СвойстваПредставления | ПО Свойства.Ссылка = СвойстваПредставления.Ссылка | И СвойстваПредставления.КодЯзыка = &КодЯзыка - | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.НаборыДополнительныхРеквизитовИСведений.[ИмяТаблицы] КАК СоставНабора + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеРеквизиты КАК СоставНабора | ПО Свойства.Ссылка = СоставНабора.Свойство | |ГДЕ @@ -892,8 +892,6 @@ |ВЫБРАТЬ | ""ВерсияДанных"" КАК ВерсияДанных"; - Запрос.Текст = СтрЗаменить(Запрос.Текст, "[ИмяТаблицы]", - ?(ЭтоНаборыДополнительныхСведений, "ДополнительныеСведения", "ДополнительныеРеквизиты")); Запрос.УстановитьПараметр("ЭтоДополнительноеСведение", (ЭтоНаборыДополнительныхСведений = 1)); КонецЕсли; diff --git a/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/ManagerModule.bsl b/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/ManagerModule.bsl index 2fbb5d949..1b5f0d2af 100644 --- a/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/ManagerModule.bsl +++ b/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/ManagerModule.bsl @@ -18,7 +18,8 @@ // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: -// Массив Из Строка - +// Массив Из Строка +// Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт РедактируемыеРеквизиты = Новый Массив; @@ -293,16 +294,16 @@ // Только для внутреннего использования. // // Возвращаемое значение: -// Структура - со свойствами: -// * Имя - Строка - -// * ЭтоГруппа - Булево - -// * Используется - Булево - -// * Ссылка - СправочникСсылка.НаборыДополнительныхРеквизитовИСведений - -// * Родитель - СправочникСсылка.НаборыДополнительныхРеквизитовИСведений - -// * ДочерниеНаборы - Соответствие - со свойствами: -// ** Ключ - Строка - +// Структура: +// * Имя - Строка +// * ЭтоГруппа - Булево +// * Используется - Булево +// * Ссылка - СправочникСсылка.НаборыДополнительныхРеквизитовИСведений +// * Родитель - СправочникСсылка.НаборыДополнительныхРеквизитовИСведений +// * ДочерниеНаборы - Соответствие: +// ** Ключ - Строка // ** Значение - см. СвойстваНабора -// * Наименование - Строка - +// * Наименование - Строка // Функция СвойстваНабора(НаборыСвойств, Набор, Родитель = Неопределено, Наименования = Неопределено) Экспорт diff --git a/SSL/src/Catalogs/ОбщиеВнешниеКомпоненты/ManagerModule.bsl b/SSL/src/Catalogs/ОбщиеВнешниеКомпоненты/ManagerModule.bsl index 4bea79a82..7fb0b0a9c 100644 --- a/SSL/src/Catalogs/ОбщиеВнешниеКомпоненты/ManagerModule.bsl +++ b/SSL/src/Catalogs/ОбщиеВнешниеКомпоненты/ManagerModule.bsl @@ -18,7 +18,8 @@ // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: -// Массив Из Строка - +// Массив Из Строка +// Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт Результат = Новый Массив; diff --git a/SSL/src/Catalogs/ПапкиФайлов/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/ПапкиФайлов/Forms/ФормаЭлемента/Module.bsl index 1b67f5ff0..9ff1a843b 100644 --- a/SSL/src/Catalogs/ПапкиФайлов/Forms/ФормаЭлемента/Module.bsl +++ b/SSL/src/Catalogs/ПапкиФайлов/Forms/ФормаЭлемента/Module.bsl @@ -167,8 +167,6 @@ РаботаСФайламиСлужебныйВызовСервера.СохранитьРабочийКаталогПапки(Объект.Ссылка, РабочийКаталог); КонецЕсли; - ОбновитьОтображениеДанных(); - КонецПроцедуры #КонецОбласти @@ -240,7 +238,7 @@ Фильтр = НСтр("ru = 'Все файлы (*.*)|*.*'"); ДиалогОткрытияФайла.Фильтр = Фильтр; ДиалогОткрытияФайла.МножественныйВыбор = Ложь; - ДиалогОткрытияФайла.Заголовок = НСтр("ru = 'Выберите каталог'"); + ДиалогОткрытияФайла.Заголовок = НСтр("ru = 'Выберите папку'"); Если ДиалогОткрытияФайла.Выбрать() Тогда ИмяКаталога = ДиалогОткрытияФайла.Каталог; @@ -256,7 +254,7 @@ // Нет прав на создание каталога, или такой путь отсутствует. ТекстОшибки = - СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Неверный путь или отсутствуют права на запись в каталог ""%1""'"), ИмяКаталога); + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Неверный путь или отсутствуют права на запись в папку ""%1""'"), ИмяКаталога); ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибки, , "РабочийКаталог"); Возврат; @@ -267,8 +265,6 @@ КонецЕсли; - ОбновитьОтображениеДанных(); - КонецПроцедуры &НаСервере diff --git a/SSL/src/Catalogs/ПапкиФайлов/ManagerModule.bsl b/SSL/src/Catalogs/ПапкиФайлов/ManagerModule.bsl index 7a46c63ee..1cd9b7f0c 100644 --- a/SSL/src/Catalogs/ПапкиФайлов/ManagerModule.bsl +++ b/SSL/src/Catalogs/ПапкиФайлов/ManagerModule.bsl @@ -18,7 +18,8 @@ // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: -// Массив Из Строка - +// Массив Из Строка +// Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт РедактируемыеРеквизиты = Новый Массив; diff --git a/SSL/src/Catalogs/ПапкиЭлектронныхПисем/Forms/ФормаВыбора/Form.form b/SSL/src/Catalogs/ПапкиЭлектронныхПисем/Forms/ФормаВыбора/Form.form index bf26be6a9..27d5dddd9 100644 --- a/SSL/src/Catalogs/ПапкиЭлектронныхПисем/Forms/ФормаВыбора/Form.form +++ b/SSL/src/Catalogs/ПапкиЭлектронныхПисем/Forms/ФормаВыбора/Form.form @@ -1,5 +1,54 @@ + + Владелец + 22 + true + true + + true + + + Владелец + + + OnChange + ВладелецПриИзменении + + + ВладелецРасширеннаяПодсказка + 24 + Label + true + true + + Left + + + + ВладелецКонтекстноеМеню + 23 + true + + InputField + Enter + true + Left + true + + + Clearing + ВладелецОчистка + + 27 + true + true + true + true + true + Normal + + ГруппаПользовательскихНастроек 11 @@ -291,6 +340,23 @@ true + + Владелец + + <key>ru</key> + <value>Учетная запись</value> + + 2 + + CatalogRef.УчетныеЗаписиЭлектроннойПочты + + + true + + + true + + diff --git a/SSL/src/Catalogs/ПапкиЭлектронныхПисем/Forms/ФормаВыбора/Module.bsl b/SSL/src/Catalogs/ПапкиЭлектронныхПисем/Forms/ФормаВыбора/Module.bsl index e0a4c5db8..fb8bffac9 100644 --- a/SSL/src/Catalogs/ПапкиЭлектронныхПисем/Forms/ФормаВыбора/Module.bsl +++ b/SSL/src/Catalogs/ПапкиЭлектронныхПисем/Forms/ФормаВыбора/Module.bsl @@ -11,6 +11,58 @@ &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + ОбработатьПереданныеПараметры(); + + УстановитьПредопределенныеОтборы(); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ВладелецПриИзменении(Элемент) + + ПриИзмененииВладельцаНаСервере(); + +КонецПроцедуры + +&НаКлиенте +Процедура ВладелецОчистка(Элемент, СтандартнаяОбработка) + + ПриИзмененииВладельцаНаСервере(); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура ОбработатьПереданныеПараметры() + + УчетнаяЗаписьУказана = Ложь; + + Если Параметры.Отбор.Свойство("Владелец") + И ЗначениеЗаполнено(Параметры.Отбор.Владелец) Тогда + + УчетнаяЗаписьУказана = Истина; + Владелец = Параметры.Отбор.Владелец; + Элементы.Владелец.Видимость = Ложь; + + КонецЕсли; + + Если Не ЗначениеЗаполнено(Владелец) Тогда + Владелец = РаботаСПочтовымиСообщениями.СистемнаяУчетнаяЗапись(); + ПриИзмененииВладельцаНаСервере(); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура УстановитьПредопределенныеОтборы() + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список, "ПометкаУдаления", Ложь, @@ -21,4 +73,17 @@ КонецПроцедуры -#КонецОбласти +&НаСервере +Процедура ПриИзмененииВладельцаНаСервере() + + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список, + "Владелец", + Владелец, + ВидСравненияКомпоновкиДанных.Равно, + НСтр("ru = 'Отбор по владельцу папок'"), + ЗначениеЗаполнено(Владелец), + РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный); + +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git a/SSL/src/Catalogs/ПапкиЭлектронныхПисем/ManagerModule.bsl b/SSL/src/Catalogs/ПапкиЭлектронныхПисем/ManagerModule.bsl index ae3b87cbc..326ce048a 100644 --- a/SSL/src/Catalogs/ПапкиЭлектронныхПисем/ManagerModule.bsl +++ b/SSL/src/Catalogs/ПапкиЭлектронныхПисем/ManagerModule.bsl @@ -18,7 +18,8 @@ // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: -// Массив Из Строка - +// Массив Из Строка +// Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт Результат = Новый Массив; diff --git a/SSL/src/Catalogs/Пользователи/Forms/ФормаСписка/Form.form b/SSL/src/Catalogs/Пользователи/Forms/ФормаСписка/Form.form index bed45d784..ca7b8008b 100644 --- a/SSL/src/Catalogs/Пользователи/Forms/ФормаСписка/Form.form +++ b/SSL/src/Catalogs/Пользователи/Forms/ФормаСписка/Form.form @@ -38,6 +38,10 @@ ЗавершитьИЗакрыть 95 + + <key>ru</key> + <value>Подобрать и закрыть</value> + true true @@ -494,210 +498,173 @@ - ГруппаСодержимое - 24 + ГруппаКоманднаяПанельВыбора + 218 + + ЗавершитьИЗакрытьВыбор + 220 + + <key>ru</key> + <value>Подобрать и закрыть</value> + + true + true + + true + + + ЗавершитьИЗакрытьВыборРасширеннаяПодсказка + 221 + Label + true + true + + Left + + + UsualButton + Form.Command.ЗавершитьИЗакрыть + Normal + Auto + true + true + UserCmds + Auto + + + Выбрать + 284 + true + + true + + + ВыбратьРасширеннаяПодсказка + 285 + Label + true + true + + Left + + + UsualButton + Form.Command.Выбрать + Normal + Auto + 3 + true + true + UserCmds + Auto + + + СтрокаПоиска + 222 + true + true + + true + + + СтрокаПоиска + + true + None + Shift+F + + СтрокаПоискаРасширеннаяПодсказка + 224 + Label + true + true + + Left + + + + СтрокаПоискаКонтекстноеМеню + 223 + true + + InputField + Right + Right + Enter + true + Left + true + + + EditTextChange + СтрокаПоискаИзменениеТекстаРедактирования + + + Clearing + СтрокаПоискаОчистка + + 24 + true + true + false + true + true + true + true + true + DontUse + Normal + + ru + Поиск (Shift + F) + + + + + ВставитьИзБуфераОбмена + 282 + true + true + + true + + + ВставитьИзБуфераОбменаРасширеннаяПодсказка + 283 + Label + true + true + + Left + + + UsualButton + Form.Command.ВставитьИзБуфераОбмена + Normal + Auto + 3 + true + true + UserCmds + Auto + - ГруппыИПользователи - 74 + ГруппаРасширенныйВыборПраво + 225 - ГруппаГруппы - 75 - VeryLow - - ГруппыПользователей - 25 - VeryHigh - - <key>ru</key> - <value>Группы пользователей</value> - + ГруппаРасширенныйВыборЕще + 229 + + ИзменитьФорму + 231 true true true - - ГруппыПользователей - - false - None - Delete - - НаименованиеГруппы - 30 - true - true - - true - - - ГруппыПользователей.Description - - - НаименованиеГруппыExtendedTooltip - 112 - Label - true - true - - Left - - - - НаименованиеГруппыКонтекстноеМеню - 31 - true - - LabelField - Enter - true - Left - true - - 10 - true - true - - - - СсылкаГруппы - 153 - true - true - - - ГруппыПользователей.Ref - - - СсылкаГруппыРасширеннаяПодсказка - 155 - Label - true - true - - Left - - - - СсылкаГруппыКонтекстноеМеню - 154 - true - - LabelField - Enter - true - Left - true - - true - true - - - None - - ГруппыПользователейКоманднаяПанель - 27 - Left - true - - - DragCheck - ГруппыПользователейПроверкаПеретаскивания - - - ValueChoice - ГруппыПользователейВыборЗначения - - - BeforeAddRow - ГруппыПользователейПередНачаломДобавления - - - OnActivateRow - ГруппыПользователейПриАктивизацииСтроки - - - Drag - ГруппыПользователейПеретаскивание - - - OnChange - ГруппыПользователейПриИзменении - - - ГруппыПользователейСтрокаПоиска - 165 - - ГруппыПользователейСтрокаПоискаРасширеннаяПодсказка - 167 - Label - true - true - - Left - - - - ГруппыПользователейСтрокаПоискаКонтекстноеМеню - 166 - true - - ГруппыПользователей - - true - - - - ГруппыПользователейСостояниеПросмотра - 168 - - ГруппыПользователейСостояниеПросмотраРасширеннаяПодсказка - 170 - Label - true - true - - Left - - - - ГруппыПользователейСостояниеПросмотраКонтекстноеМеню - 169 - true - - ViewStatusAddition - ГруппыПользователей - - true - - - - ГруппыПользователейУправлениеПоиском - 171 - - ГруппыПользователейУправлениеПоискомРасширеннаяПодсказка - 173 - Label - true - true - - Left - - - - ГруппыПользователейУправлениеПоискомКонтекстноеМеню - 172 - true - - SearchControlAddition - ГруппыПользователей - - true - - - ГруппыПользователейExtendedTooltip - 111 + ИзменитьФормуРасширеннаяПодсказка + 232 Label true true @@ -705,20 +672,361 @@ Left - - ГруппыПользователейКонтекстноеМеню - 26 - - ВывестиСписок - 156 + Form.StandardCommand.CustomizeForm + Normal + Auto + true + true + UserCmds + Auto + + + Справка + 227 + true + true + + true + + + СправкаРасширеннаяПодсказка + 228 + Label + true + true + + Left + + + Form.StandardCommand.Help + Normal + Picture + true + true + UserCmds + Auto + + + РасширенныйВыборВывестиСписок + 233 + true + true + + true + + + РасширенныйВыборВывестиСписокРасширеннаяПодсказка + 234 + Label + true + true + + Left + + + Form.StandardCommand.OutputList + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Расширенный выбор еще</value> + + + ГруппаРасширенныйВыборЕщеРасширеннаяПодсказка + 230 + Label + true + true + + Left + + + CommandBar + + Left + + + true + true + + true + + + <key>ru</key> + <value>Расширенный выбор право</value> + + Right + + ГруппаРасширенныйВыборПравоРасширеннаяПодсказка + 226 + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Right + Auto + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Командная панель выбора</value> + + + ГруппаКоманднаяПанельВыбораРасширеннаяПодсказка + 219 + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Auto + true + true + Auto + Auto + + + + ГруппаСодержимое + 24 + + СтраницыВыбораПользователей + 235 + + СтраницаВыборПользователейИГрупп + 237 + + ГруппыИПользователи + 74 + + ГруппаГруппы + 75 + VeryLow + + ГруппыПользователей + 25 + VeryHigh + + <key>ru</key> + <value>Группы пользователей</value> + true true true + + ГруппыПользователей + + false + None + Delete + + НаименованиеГруппы + 30 + true + true + + true + + + ГруппыПользователей.Description + + + НаименованиеГруппыExtendedTooltip + 112 + Label + true + true + + Left + + + + НаименованиеГруппыКонтекстноеМеню + 31 + true + + LabelField + Enter + true + Left + true + + 10 + true + true + + + + СсылкаГруппы + 153 + true + true + + + ГруппыПользователей.Ref + + + СсылкаГруппыРасширеннаяПодсказка + 155 + Label + true + true + + Left + + + + СсылкаГруппыКонтекстноеМеню + 154 + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + ГруппыПользователейКоманднаяПанель + 27 + Left + true + + + DragCheck + ГруппыПользователейПроверкаПеретаскивания + + + ValueChoice + ГруппыПользователейВыборЗначения + + + BeforeAddRow + ГруппыПользователейПередНачаломДобавления + + + OnActivateRow + ГруппыПользователейПриАктивизацииСтроки + + + Drag + ГруппыПользователейПеретаскивание + + + OnChange + ГруппыПользователейПриИзменении + + + ГруппыПользователейСтрокаПоиска + 165 + + ГруппыПользователейСтрокаПоискаРасширеннаяПодсказка + 167 + Label + true + true + + Left + + + + ГруппыПользователейСтрокаПоискаКонтекстноеМеню + 166 + true + + ГруппыПользователей + + true + + + + ГруппыПользователейСостояниеПросмотра + 168 + + ГруппыПользователейСостояниеПросмотраРасширеннаяПодсказка + 170 + Label + true + true + + Left + + + + ГруппыПользователейСостояниеПросмотраКонтекстноеМеню + 169 + true + + ViewStatusAddition + ГруппыПользователей + + true + + + + ГруппыПользователейУправлениеПоиском + 171 + + ГруппыПользователейУправлениеПоискомРасширеннаяПодсказка + 173 + Label + true + true + + Left + + + + ГруппыПользователейУправлениеПоискомКонтекстноеМеню + 172 + true + + SearchControlAddition + ГруппыПользователей + + true + + - ВывестиСписокРасширеннаяПодсказка - 157 + ГруппыПользователейExtendedTooltip + 111 Label true true @@ -726,72 +1034,209 @@ Left - Form.Item.ГруппыПользователей.StandardCommand.OutputList - Normal - Auto + + ГруппыПользователейКонтекстноеМеню + 26 + + ВывестиСписок + 156 + true + true + + true + + + ВывестиСписокРасширеннаяПодсказка + 157 + Label + true + true + + Left + + + Form.Item.ГруппыПользователей.StandardCommand.OutputList + Normal + Auto + true + true + UserCmds + Auto + + true + + Tree + true + true true + 10 true - UserCmds - Auto + true + true + MultiRow + Row + 1 + 1 + AutoUse + AutoUse + true + true + false + false + false + Auto + Auto + ExpandTopLevel + true + true + true + + ГруппыПользователей.НомерКартинки + + + CommonPicture.СостоянияПользователей + + SelectionPresentationAndChoice + true + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + + + + ГруппаВыбратьГруппу + 85 + + ВыбратьГруппу + 89 + true + true + + true + + + ВыбратьГруппуExtendedTooltip + 115 + Label + true + true + + Left + + + UsualButton + Form.Command.ВыбратьГруппу + Normal + Auto + 5 + true + true + UserCmds + Auto + + + ОтменитьВыборПользователяИлиГруппы + 90 + true + true + + true + + + ОтменитьВыборПользователяИлиГруппыExtendedTooltip + 116 + Label + true + true + + Left + + + UsualButton + Form.Command.ОтменитьВыборПользователяИлиГруппы + Normal + Auto + 5 + true + true + UserCmds + Auto + + + ОчиститьСписокВыбранныхПользователейИГрупп + 91 + true + true + + true + + + ОчиститьСписокВыбранныхПользователейИГруппExtendedTooltip + 117 + Label + true + true + + Left + + + UsualButton + Form.Command.ОчиститьСписокВыбранныхПользователейИГрупп + Normal + Auto + 5 + true + true + UserCmds + Auto + + true + + true + + + <key>ru</key> + <value>Выбрать группу</value> + + true + + ГруппаВыбратьГруппуExtendedTooltip + 113 + Label + true + true + + Left + + + UsualGroup + + Vertical + Center + Auto + true + true + Auto + Auto + - true - - Tree - true - true - true - 10 - true - true - true - MultiRow - Row - 1 - 1 - AutoUse - AutoUse - true - true - false - false - false - Auto - Auto - true - true - true - - ГруппыПользователей.НомерКартинки - - - CommonPicture.СостоянияПользователей - - SelectionPresentationAndChoice - true - - 60 - - 0001-01-01T00:00:00 - 0001-01-01T00:00:00 - - - true - - - - ГруппаВыбратьГруппу - 85 - - ВыбратьГруппу - 89 true true true + + <key>ru</key> + <value>Группы пользователей</value> + - ВыбратьГруппуExtendedTooltip - 115 + ГруппаГруппыExtendedTooltip + 110 Label true true @@ -799,27 +1244,576 @@ Left - UsualButton - Form.Command.ВыбратьГруппу - Normal - Auto - 5 - true - true - UserCmds - Auto + UsualGroup + + HorizontalIfPossible + Auto + true + true + Auto + Auto + - - ОтменитьВыборПользователяИлиГруппы - 90 + + ГруппаПользователи + 76 + VeryHigh + + ПользователиСписок + 48 + + <key>ru</key> + <value>Пользователи список</value> + + true + true + + true + + + ПользователиСписок + + false + None + Delete + + Наименование + 51 + true + true + + true + + + ПользователиСписок.Description + + + НаименованиеExtendedTooltip + 121 + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 52 + true + + LabelField + Enter + true + Left + true + + true + true + + + + Ссылка + 134 + true + true + + + ПользователиСписок.Ref + + + СсылкаРасширеннаяПодсказка + 136 + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 135 + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + ПользователиСписокКоманднаяПанель + 50 + Left + true + + + DragCheck + ПользователиСписокПроверкаПеретаскивания + + + ValueChoice + ПользователиСписокВыборЗначения + + + BeforeAddRow + ПользователиСписокПередНачаломДобавления + + + OnActivateRow + ПользователиСписокПриАктивизацииСтроки + + + BeforeRowChange + ПользователиСписокПередНачаломИзменения + + + OnChange + ПользователиСписокПриИзменении + + + ПользователиСписокСтрокаПоиска + 174 + + ПользователиСписокСтрокаПоискаРасширеннаяПодсказка + 176 + Label + true + true + + Left + + + + ПользователиСписокСтрокаПоискаКонтекстноеМеню + 175 + true + + ПользователиСписок + + true + + + + ПользователиСписокСостояниеПросмотра + 177 + + ПользователиСписокСостояниеПросмотраРасширеннаяПодсказка + 179 + Label + true + true + + Left + + + + ПользователиСписокСостояниеПросмотраКонтекстноеМеню + 178 + true + + ViewStatusAddition + ПользователиСписок + + true + + + + ПользователиСписокУправлениеПоиском + 180 + + ПользователиСписокУправлениеПоискомРасширеннаяПодсказка + 182 + Label + true + true + + Left + + + + ПользователиСписокУправлениеПоискомКонтекстноеМеню + 181 + true + + SearchControlAddition + ПользователиСписок + + true + + + + ПользователиСписокExtendedTooltip + 120 + Label + true + true + + Left + + + + ПользователиСписокКонтекстноеМеню + 49 + + ПользователиСписокКонтекстноеМенюСоздать + 204 + true + true + + true + + + ПользователиСписокКонтекстноеМенюСоздатьРасширеннаяПодсказка + 205 + Label + true + true + + Left + + + Form.Item.ПользователиСписок.StandardCommand.Create + Normal + Auto + true + true + UserCmds + Auto + + + ПользователиСписокКонтекстноеМенюСкопировать + 206 + true + true + + true + + + ПользователиСписокКонтекстноеМенюСкопироватьРасширеннаяПодсказка + 207 + Label + true + true + + Left + + + Form.Item.ПользователиСписок.StandardCommand.Copy + Normal + Auto + true + true + UserCmds + Auto + + + ПользователиСписокКонтекстноеМенюИзменить + 208 + true + true + + true + + + ПользователиСписокКонтекстноеМенюИзменитьРасширеннаяПодсказка + 209 + Label + true + true + + Left + + + Form.Item.ПользователиСписок.StandardCommand.Change + Normal + Auto + true + true + UserCmds + Auto + + + ПользователиСписокКонтекстноеМенюУстановитьПароль + 200 + true + true + + true + + + ПользователиСписокКонтекстноеМенюУстановитьПарольРасширеннаяПодсказка + 201 + Label + true + true + + Left + + + Form.Command.УстановитьПароль + Normal + Auto + true + true + UserCmds + Auto + + + ПользователиСписокКонтекстноеМенюСтандартныеКоманды + 202 + true + true + + true + + + <key>ru</key> + <value>Пользователи список контекстное меню стандартные команды</value> + + + ПользователиСписокКонтекстноеМенюСтандартныеКомандыРасширеннаяПодсказка + 203 + Label + true + true + + Left + + + + Item.ПользователиСписок + + + + ПользователиСписокКонтекстноеМенюНазначитьГруппы + 73 + true + true + + true + + + ПользователиСписокКонтекстноеМенюНазначитьГруппыExtendedTooltip + 119 + Label + true + true + + Left + + + Form.Command.НазначитьГруппы + Normal + Auto + true + true + UserCmds + Auto + + + ПользователиСписокКонтекстноеМенюИзменитьВыделенные + 194 + true + true + + true + + + ПользователиСписокКонтекстноеМенюИзменитьВыделенныеРасширеннаяПодсказка + 195 + Label + true + true + + Left + + + Form.Command.ИзменитьВыделенные + Normal + Auto + true + true + UserCmds + Auto + + + true + true + true + 10 + true + true + true + MultiRow + 1 + 1 + AutoUse + AutoUse + true + true + false + false + false + DontUse + Auto + true + true + true + + ПользователиСписок.НомерКартинки + + + CommonPicture.СостоянияПользователей + + None + None + true + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + true + ГруппаПользовательскихНастроек + + + + ГруппаВыбратьПользователя + 86 + + ВыбратьПользователяКоманда + 94 + true + true + + true + + + ВыбратьПользователяКомандаExtendedTooltip + 124 + Label + true + true + + Left + + + UsualButton + Form.Command.ВыбратьПользователяКоманда + Normal + Auto + 5 + true + true + UserCmds + Auto + + + ОтменитьВыборПользователя + 96 + true + + true + + + ОтменитьВыборПользователяExtendedTooltip + 125 + Label + true + true + + Left + + + UsualButton + Form.Command.ОтменитьВыборПользователяИлиГруппы + Normal + Auto + 5 + true + true + UserCmds + Auto + + + ОчиститьСписокВыбранных + 97 + true + + true + + + ОчиститьСписокВыбранныхExtendedTooltip + 126 + Label + true + true + + Left + + + UsualButton + Form.Command.ОчиститьСписокВыбранныхПользователейИГрупп + Normal + Auto + 5 + true + true + UserCmds + Auto + + true + + true + + + <key>ru</key> + <value>Выбрать пользователя</value> + + true + + ГруппаВыбратьПользователяExtendedTooltip + 122 + Label + true + true + + Left + + + UsualGroup + + Vertical + Center + Auto + true + true + Auto + Auto + + true true true + + <key>ru</key> + <value>Пользователи</value> + - ОтменитьВыборПользователяИлиГруппыExtendedTooltip - 116 + ГруппаПользователиExtendedTooltip + 118 Label true true @@ -827,56 +1821,28 @@ Left - UsualButton - Form.Command.ОтменитьВыборПользователяИлиГруппы - Normal - Auto - 5 - true - true - UserCmds - Auto - - - ОчиститьСписокВыбранныхПользователейИГрупп - 91 - true - true - - true - - - ОчиститьСписокВыбранныхПользователейИГруппExtendedTooltip - 117 - Label - true - true - - Left - - - UsualButton - Form.Command.ОчиститьСписокВыбранныхПользователейИГрупп - Normal - Auto - 5 - true - true - UserCmds - Auto + UsualGroup + + HorizontalIfPossible + Auto + true + true + Auto + Auto + + true true true <key>ru</key> - <value>Выбрать группу</value> + <value>Группы и пользователи</value> - true - ГруппаВыбратьГруппуExtendedTooltip - 113 + ГруппыИПользователиРасширеннаяПодсказка + 109 Label true true @@ -886,11 +1852,11 @@ UsualGroup - Vertical - Center + HorizontalIfPossible Auto true true + LeftNarrowest Auto Auto @@ -902,11 +1868,11 @@ <key>ru</key> - <value>Группы пользователей</value> + <value>Страница выбор пользователей и групп</value> - ГруппаГруппыExtendedTooltip - 110 + СтраницаВыборПользователейИГруппРасширеннаяПодсказка + 238 Label true true @@ -914,26 +1880,21 @@ Left - UsualGroup - - HorizontalIfPossible - Auto - true - true - Auto - Auto + Page + + Vertical + false - ГруппаПользователи - 76 - VeryHigh + СтраницаПоиск + 239 - ПользователиСписок - 48 + ПользователиСписокПоиск + 241 <key>ru</key> - <value>Пользователи список</value> + <value>Пользователи</value> true true @@ -944,11 +1905,11 @@ ПользователиСписок false - None + Top Delete - Наименование - 51 + ПользователиСписокПоискНаименование + 254 true true @@ -958,8 +1919,8 @@ ПользователиСписок.Description - НаименованиеExtendedTooltip - 121 + ПользователиСписокПоискНаименованиеРасширеннаяПодсказка + 256 Label true true @@ -968,8 +1929,8 @@ - НаименованиеКонтекстноеМеню - 52 + ПользователиСписокПоискНаименованиеКонтекстноеМеню + 255 true LabelField @@ -983,8 +1944,8 @@ - Ссылка - 134 + ПользователиСписокПоискСсылка + 257 true true @@ -992,8 +1953,8 @@ ПользователиСписок.Ref - СсылкаРасширеннаяПодсказка - 136 + ПользователиСписокПоискСсылкаРасширеннаяПодсказка + 259 Label true true @@ -1002,8 +1963,8 @@ - СсылкаКонтекстноеМеню - 135 + ПользователиСписокПоискСсылкаКонтекстноеМеню + 258 true LabelField @@ -1018,8 +1979,8 @@ None - ПользователиСписокКоманднаяПанель - 50 + ПользователиСписокПоискКоманднаяПанель + 243 Left true @@ -1037,7 +1998,7 @@ OnActivateRow - ПользователиСписокПриАктивизацииСтроки + ПользователиСписокПоискПриАктивизацииСтроки BeforeRowChange @@ -1048,11 +2009,11 @@ ПользователиСписокПриИзменении - ПользователиСписокСтрокаПоиска - 174 + ПользователиСписокПоискСтрокаПоиска + 245 - ПользователиСписокСтрокаПоискаРасширеннаяПодсказка - 176 + ПользователиСписокПоискСтрокаПоискаРасширеннаяПодсказка + 247 Label true true @@ -1061,21 +2022,21 @@ - ПользователиСписокСтрокаПоискаКонтекстноеМеню - 175 + ПользователиСписокПоискСтрокаПоискаКонтекстноеМеню + 246 true - ПользователиСписок + ПользователиСписокПоиск true - ПользователиСписокСостояниеПросмотра - 177 + ПользователиСписокПоискСостояниеПросмотра + 248 - ПользователиСписокСостояниеПросмотраРасширеннаяПодсказка - 179 + ПользователиСписокПоискСостояниеПросмотраРасширеннаяПодсказка + 250 Label true true @@ -1084,22 +2045,22 @@ - ПользователиСписокСостояниеПросмотраКонтекстноеМеню - 178 + ПользователиСписокПоискСостояниеПросмотраКонтекстноеМеню + 249 true ViewStatusAddition - ПользователиСписок + ПользователиСписокПоиск true - ПользователиСписокУправлениеПоиском - 180 + ПользователиСписокПоискУправлениеПоиском + 251 - ПользователиСписокУправлениеПоискомРасширеннаяПодсказка - 182 + ПользователиСписокПоискУправлениеПоискомРасширеннаяПодсказка + 253 Label true true @@ -1108,19 +2069,19 @@ - ПользователиСписокУправлениеПоискомКонтекстноеМеню - 181 + ПользователиСписокПоискУправлениеПоискомКонтекстноеМеню + 252 true SearchControlAddition - ПользователиСписок + ПользователиСписокПоиск true - ПользователиСписокExtendedTooltip - 120 + ПользователиСписокПоискРасширеннаяПодсказка + 244 Label true true @@ -1129,19 +2090,19 @@ - ПользователиСписокКонтекстноеМеню - 49 + ПользователиСписокПоискКонтекстноеМеню + 242 - ПользователиСписокКонтекстноеМенюСоздать - 204 + ПользователиСписокКонтекстноеМенюСоздать1 + 260 true true true - ПользователиСписокКонтекстноеМенюСоздатьРасширеннаяПодсказка - 205 + ПользователиСписокКонтекстноеМенюСоздать1РасширеннаяПодсказка + 261 Label true true @@ -1158,16 +2119,16 @@ Auto - ПользователиСписокКонтекстноеМенюСкопировать - 206 + ПользователиСписокКонтекстноеМенюСкопировать1 + 262 true true true - ПользователиСписокКонтекстноеМенюСкопироватьРасширеннаяПодсказка - 207 + ПользователиСписокКонтекстноеМенюСкопировать1РасширеннаяПодсказка + 263 Label true true @@ -1184,16 +2145,16 @@ Auto - ПользователиСписокКонтекстноеМенюИзменить - 208 + ПользователиСписокКонтекстноеМенюИзменить1 + 264 true true true - ПользователиСписокКонтекстноеМенюИзменитьРасширеннаяПодсказка - 209 + ПользователиСписокКонтекстноеМенюИзменить1РасширеннаяПодсказка + 265 Label true true @@ -1210,16 +2171,16 @@ Auto - ПользователиСписокКонтекстноеМенюУстановитьПароль - 200 + ПользователиСписокКонтекстноеМенюУстановитьПароль1 + 266 true true true - ПользователиСписокКонтекстноеМенюУстановитьПарольРасширеннаяПодсказка - 201 + ПользователиСписокКонтекстноеМенюУстановитьПароль1РасширеннаяПодсказка + 267 Label true true @@ -1236,8 +2197,8 @@ Auto - ПользователиСписокКонтекстноеМенюСтандартныеКоманды - 202 + ПользователиСписокКонтекстноеМенюСтандартныеКоманды1 + 268 true true @@ -1248,8 +2209,8 @@ Пользователи список контекстное меню стандартные команды - ПользователиСписокКонтекстноеМенюСтандартныеКомандыРасширеннаяПодсказка - 203 + ПользователиСписокКонтекстноеМенюСтандартныеКоманды1РасширеннаяПодсказка + 269 Label true true @@ -1258,20 +2219,20 @@ - Item.ПользователиСписок + Item.ПользователиСписокПоиск - ПользователиСписокКонтекстноеМенюНазначитьГруппы - 73 + ПользователиСписокКонтекстноеМенюНазначитьГруппы1 + 270 true true true - ПользователиСписокКонтекстноеМенюНазначитьГруппыExtendedTooltip - 119 + ПользователиСписокКонтекстноеМенюНазначитьГруппы1РасширеннаяПодсказка + 271 Label true true @@ -1288,16 +2249,16 @@ Auto - ПользователиСписокКонтекстноеМенюИзменитьВыделенные - 194 + ПользователиСписокКонтекстноеМенюИзменитьВыделенные1 + 272 true true true - ПользователиСписокКонтекстноеМенюИзменитьВыделенныеРасширеннаяПодсказка - 195 + ПользователиСписокКонтекстноеМенюИзменитьВыделенные1РасширеннаяПодсказка + 273 Label true true @@ -1321,6 +2282,7 @@ true true true + true MultiRow 1 1 @@ -1356,19 +2318,19 @@ - ГруппаВыбратьПользователя - 86 + ГруппаКнопкиВыбораПоиска + 286 - ВыбратьПользователяКоманда - 94 + ВыбратьПользователяКомандаПоиск + 295 true true true - ВыбратьПользователяКомандаExtendedTooltip - 124 + ВыбратьПользователяКомандаПоискРасширеннаяПодсказка + 296 Label true true @@ -1387,42 +2349,16 @@ Auto - ОтменитьВыборПользователя - 96 + ОчиститьСписокВыбранныхПоиск + 288 + true true true - ОтменитьВыборПользователяExtendedTooltip - 125 - Label - true - true - - Left - - - UsualButton - Form.Command.ОтменитьВыборПользователяИлиГруппы - Normal - Auto - 5 - true - true - UserCmds - Auto - - - ОчиститьСписокВыбранных - 97 - true - - true - - - ОчиститьСписокВыбранныхExtendedTooltip - 126 + ОчиститьСписокВыбранныхПоискРасширеннаяПодсказка + 289 Label true true @@ -1440,18 +2376,47 @@ UserCmds Auto + + ОтменитьВыборПользователяПоиск + 290 + true + true + + true + + + ОтменитьВыборПользователяПоискРасширеннаяПодсказка + 291 + Label + true + true + + Left + + + UsualButton + Form.Command.ОтменитьВыборПользователяИлиГруппы + Normal + Auto + 5 + true + true + UserCmds + Auto + + true true true <key>ru</key> - <value>Выбрать пользователя</value> + <value>Кнопки выбора поиска</value> - true + Center - ГруппаВыбратьПользователяExtendedTooltip - 122 + ГруппаКнопкиВыбораПоискаРасширеннаяПодсказка + 287 Label true true @@ -1462,7 +2427,6 @@ UsualGroup Vertical - Center Auto true true @@ -1477,11 +2441,11 @@ <key>ru</key> - <value>Пользователи</value> + <value>Страница поиск</value> - ГруппаПользователиExtendedTooltip - 118 + СтраницаПоискРасширеннаяПодсказка + 240 Label true true @@ -1489,14 +2453,11 @@ Left - UsualGroup - - HorizontalIfPossible - Auto - true - true - Auto - Auto + Page + + AlwaysHorizontal + auto + false true @@ -1506,11 +2467,11 @@ <key>ru</key> - <value>Группы и пользователи</value> + <value>Страницы выбора пользователей</value> - ГруппыИПользователиExtendedTooltip - 109 + СтраницыВыбораПользователейРасширеннаяПодсказка + 236 Label true true @@ -1518,14 +2479,8 @@ Left - UsualGroup - - HorizontalIfPossible - Auto - true - true - LeftNarrowest - Auto + Pages + Auto @@ -1895,6 +2850,134 @@ Auto + + ГруппаКонтактнаяИнформация + 274 + + Фотография + 276 + true + true + + true + + + Фотография + + None + + ФотографияРасширеннаяПодсказка + 278 + Label + true + true + + Left + + + + ФотографияКонтекстноеМеню + 277 + true + + PictureField + Enter + true + Left + true + + 7 + 4 + true + 6 + Proportionally + + ru + Нет фото + + + + 1 + + AsFileRef + + + + ПредставлениеКонтактнойИнформации + 292 + true + true + + true + + + ПредставлениеКонтактнойИнформации + + None + + ПредставлениеКонтактнойИнформацииРасширеннаяПодсказка + 294 + Label + true + true + + Left + + + + ПредставлениеКонтактнойИнформацииКонтекстноеМеню + 293 + true + + InputField + true + Center + Enter + true + Left + true + + true + 6 + true + true + true + true + true + Normal + + + true + true + + true + + + <key>ru</key> + <value>Контактная информация</value> + + + ГруппаКонтактнаяИнформацияРасширеннаяПодсказка + 275 + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + Collapsible + Button + true + true + auto + Auto + Auto + + Комментарии 137 @@ -2431,6 +3514,69 @@ true + + СтрокаПоиска + + <key>ru</key> + <value>Строка поиска</value> + + 6 + + String + + + + true + + + true + + + + Фотография + + <key>ru</key> + <value>Фотография</value> + + 9 + + String + + + + true + + + true + + + + ПредставлениеКонтактнойИнформации + 10 + + String + + + + true + + + true + + + + ВыборУчастниковОбсуждения + 12 + + Boolean + + + true + + + true + + СоздатьГруппуПользователей @@ -2658,6 +3804,58 @@ <currentRowUse>DontUse</currentRowUse> <selectedRowsUse>Auto</selectedRowsUse> </formCommands> + <formCommands> + <name>ВставитьИзБуфераОбмена</name> + <title> + <key>ru</key> + <value>Вставить из буфера обмена...</value> + + 11 + + ru + Вставить из буфера обмена + + + true + + + CommonPicture.ВставитьИзБуфераОбмена + + + + ВставитьИзБуфераОбмена + + + Picture + DontUse + Auto + + + Выбрать + + <key>ru</key> + <value>Выбрать</value> + + 12 + + ru + Выбрать + + + true + + + StdPicture.ChooseValue + + + + Выбрать + + + Picture + Auto + Auto + ВыборГруппПользователей @@ -2688,6 +3886,12 @@ СкрываемыеПользователи + + ВыборУчастниковОбсуждения + + Boolean + + diff --git a/SSL/src/Catalogs/Пользователи/Forms/ФормаСписка/Module.bsl b/SSL/src/Catalogs/Пользователи/Forms/ФормаСписка/Module.bsl index 34ea9c463..4410fa8bc 100644 --- a/SSL/src/Catalogs/Пользователи/Forms/ФормаСписка/Module.bsl +++ b/SSL/src/Catalogs/Пользователи/Forms/ФормаСписка/Module.bsl @@ -9,17 +9,7 @@ //////////////////////////////////////////////////////////////////////////////// // ИСПОЛЬЗОВАНИЕ ФОРМЫ // // -// Дополнительные параметры открытия формы подбора: -// -// РасширенныйПодбор - Булево - если Истина - открывается расширенная форма -// подбора пользователей. Используется вместе с параметром. -// ПараметрыРасширеннойФормыПодбора. -// ПараметрыРасширеннойФормыПодбора - Строка - ссылка на структуру, -// содержащую параметры расширенной формы подбора во -// временном хранилище. -// Параметры структуры: -// ЗаголовокФормыПодбора - Строка - заголовок формы подбора. -// ВыбранныеПользователи - Массив - массив уже выбранных пользователей. +// Описание параметров формы см. ПользователиПереопределяемый.ПриОпределенииФормыПодбораПользователей // #Область ОписаниеПеременных @@ -27,6 +17,12 @@ &НаКлиенте Перем ПоследнийЭлемент; +&НаКлиенте +Перем СтрокаПоискаТекст; + +&НаКлиенте +Перем ТекущийПользователь; + #КонецОбласти #Область ОбработчикиСобытийФормы @@ -34,8 +30,16 @@ &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + // СтандартныеПодсистемы.ПодключаемыеКоманды + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда + МодульПодключаемыеКоманды = ОбщегоНазначения.ОбщийМодуль("ПодключаемыеКоманды"); + МодульПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект); + КонецЕсли; + // Конец СтандартныеПодсистемы.ПодключаемыеКоманды + // Начальное значение настройки до загрузки данных из настроек. ВыбиратьИерархически = Истина; + Элементы.ГруппаКоманднаяПанельВыбора.Видимость = Ложь; ЗаполнитьХранимыеПараметры(); @@ -125,6 +129,11 @@ Если ХранимыеПараметры.РасширенныйПодбор Тогда СтандартныеПодсистемыСервер.УстановитьКлючНазначенияФормы(ЭтотОбъект, "РасширенныйПодбор"); ИзменитьПараметрыРасширеннойФормыПодбора(); + Элементы.КоманднаяПанель.Видимость = Ложь; + Элементы.ЗавершитьИЗакрытьВыбор.КнопкаПоУмолчанию = Истина; + Элементы.ГруппаКоманднаяПанельВыбора.Видимость = Истина; + Элементы.ПользователиСписок.ПоискПриВводе = ПоискВТаблицеПриВводе.НеИспользовать; + Элементы.ГруппыПользователей.ПоискПриВводе = ПоискВТаблицеПриВводе.НеИспользовать; КонецЕсли; Если ХранимыеПараметры.ВыборГруппПользователей Тогда @@ -175,6 +184,16 @@ Элементы.ЗавершитьИЗакрыть.Отображение = ОтображениеКнопки.Картинка; КонецЕсли; + ВыборУчастниковОбсуждения = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Параметры, "ВыборУчастниковОбсуждения", Ложь); + + Если Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЗагрузкаДанныхИзФайла") Тогда + Элементы.ВставитьИзБуфераОбмена.Видимость = Ложь; + КонецЕсли; + + Фотография = ПоместитьВоВременноеХранилище(Неопределено, УникальныйИдентификатор); + ЗаполнитьКонтактнуюИнформацию(ЭтотОбъект, Неопределено); + УстановитьЗаголовокВыбранныхПользователейИГрупп(); + КонецПроцедуры &НаКлиенте @@ -243,6 +262,50 @@ ПереключитьОтображениеНедействительныхПользователей(ПоказыватьНедействительныхПользователей); КонецПроцедуры +&НаКлиенте +Процедура СтрокаПоискаИзменениеТекстаРедактирования(Элемент, Текст, СтандартнаяОбработка) + СтрокаПоискаТекст = Текст; + ПодключитьОбработчикОжидания("СтрокаПоискаОчисткаЗавершение", 0.1, Истина); +КонецПроцедуры + +&НаКлиенте +Процедура СтрокаПоискаОчисткаЗавершение() + + Если НЕ ЗначениеЗаполнено(СтрокаПоискаТекст) Тогда + Элементы.СтраницыВыбораПользователей.ТекущаяСтраница = Элементы.СтраницаВыборПользователейИГрупп; + Иначе + Элементы.СтраницыВыбораПользователей.ТекущаяСтраница = Элементы.СтраницаПоиск; + КонецЕсли; + + + Если ХранимыеПараметры.ИспользоватьГруппы Тогда + ОбновитьЗначениеПараметраКомпоновкиДанных(ПользователиСписок, + "ВсеПользователи", Истина); + КонецЕсли; + + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(ПользователиСписок, + "Наименование", + СтрокаПоискаТекст, + ВидСравненияКомпоновкиДанных.Содержит,, + ЗначениеЗаполнено(СтрокаПоискаТекст), + РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный); + +КонецПроцедуры + +&НаКлиенте +Процедура СтрокаПоискаОчистка(Элемент, СтандартнаяОбработка) + СтрокаПоискаТекст = ""; + Элементы.СтраницыВыбораПользователей.ТекущаяСтраница = Элементы.СтраницаВыборПользователейИГрупп; + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(ПользователиСписок, + "Наименование", + СтрокаПоиска, + ВидСравненияКомпоновкиДанных.Содержит,, + Ложь, + РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный); + + ОбновитьСодержимоеФормыПриИзмененииГруппы(ЭтотОбъект); +КонецПроцедуры + #КонецОбласти #Область ОбработчикиСобытийЭлементовТаблицыФормыГруппыПользователей @@ -438,6 +501,20 @@ Элементы.ФормаУстановитьПароль.Доступность = ВозможноСменитьПароль; Элементы.ПользователиСписокКонтекстноеМенюУстановитьПароль.Доступность = ВозможноСменитьПароль; + // СтандартныеПодсистемы.ПодключаемыеКоманды + Если НЕ ХранимыеПараметры.РасширенныйПодбор Тогда + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда + МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент"); + МодульПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект); + КонецЕсли; + + КонецЕсли; + + // Конец СтандартныеПодсистемы.ПодключаемыеКоманды + + ОбновитьКонтактнуюИнформациюПользователя(Элемент); + КонецПроцедуры &НаКлиенте @@ -509,6 +586,24 @@ #КонецОбласти +#Область ОбработчикиСобытийЭлементовТаблицыФормыПользователиСписокПоиск + +&НаКлиенте +Процедура ПользователиСписокПоискПриАктивизацииСтроки(Элемент) + + // СтандартныеПодсистемы.ПодключаемыеКоманды + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда + МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент"); + МодульПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект); + КонецЕсли; + // Конец СтандартныеПодсистемы.ПодключаемыеКоманды + + ОбновитьКонтактнуюИнформациюПользователя(Элемент); + +КонецПроцедуры + +#КонецОбласти + #Область ОбработчикиКомандФормы &НаКлиенте @@ -555,7 +650,12 @@ &НаКлиенте Процедура ВыбратьПользователяКоманда(Команда) - МассивПользователей = Элементы.ПользователиСписок.ВыделенныеСтроки; + Если Элементы.СтраницыВыбораПользователей.ТекущаяСтраница = Элементы.СтраницаПоиск Тогда + МассивПользователей = Элементы.ПользователиСписокПоиск.ВыделенныеСтроки; + Иначе + МассивПользователей = Элементы.ПользователиСписок.ВыделенныеСтроки; + КонецЕсли; + ПолучитьКартинкиИЗаполнитьСписокВыбранных(МассивПользователей); КонецПроцедуры @@ -606,10 +706,128 @@ КонецПроцедуры +&НаКлиенте +Процедура ВставитьИзБуфераОбмена(Команда) + ПараметрыПоиска = Новый Структура; + ПараметрыПоиска.Вставить("ОписаниеТипов", Новый ОписаниеТипов("СправочникСсылка.Пользователи")); + ПараметрыПоиска.Вставить("ПараметрыВыбора", Новый СписокЗначений); + ПараметрыПоиска.Вставить("ПредставлениеПоля", НСтр("ru='Выбор пользователей'")); + ПараметрыПоиска.Вставить("Сценарий", "ПоискСсылок"); + + ПараметрыВыполнения = Новый Структура; + Обработчик = Новый ОписаниеОповещения("ВставитьИзБуфераОбменаЗавершение", ЭтотОбъект, ПараметрыВыполнения); + + МодульЗагрузкаДанныхИзФайлаКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ЗагрузкаДанныхИзФайлаКлиент"); + МодульЗагрузкаДанныхИзФайлаКлиент.ПоказатьФормуЗаполненияСсылок(ПараметрыПоиска, Обработчик); +КонецПроцедуры + +&НаКлиенте +Процедура ВставитьИзБуфераОбменаЗавершение(НайденныеОбъекты, ПараметрыВыполнения) Экспорт + + Если НайденныеОбъекты = Неопределено Тогда + Возврат; + КонецЕсли; + + ВставитьИзБуфераОбменаЗавершениеСервер(НайденныеОбъекты); + +КонецПроцедуры + +&НаСервере +Процедура ВставитьИзБуфераОбменаЗавершениеСервер(НайденныеОбъекты) + + Для Каждого Значение Из НайденныеОбъекты Цикл + ВыбранныеПользователиИГруппы.Добавить().Пользователь = Значение; + КонецЦикла; + Пользователи.ЗаполнитьНомераКартинокПользователей(ВыбранныеПользователиИГруппы, "Пользователь", "НомерКартинки"); + +КонецПроцедуры + +&НаКлиенте +Процедура Выбрать(Команда) + Если Элементы.СтраницыВыбораПользователей.ТекущаяСтраница = Элементы.СтраницаВыборПользователейИГрупп Тогда + ПользователиСписокВыборЗначения(Элементы.ПользователиСписок, + ВыбранныеЗначенияСписка(Элементы.ПользователиСписок), + Ложь); + Иначе + ПользователиСписокВыборЗначения(Элементы.ПользователиСписокПоиск, + ВыбранныеЗначенияСписка(Элементы.ПользователиСписокПоиск), + Ложь); + КонецЕсли; +КонецПроцедуры + #КонецОбласти #Область СлужебныеПроцедурыИФункции +&НаКлиенте +Функция ВыбранныеЗначенияСписка(Элемент) + Результат = Новый Массив; + + ВыбранныеСтроки = ОбщегоНазначенияКлиентСервер.ЗначениеСвойстваЭлементаФормы(Элементы, Элемент.Имя, "ВыделенныеСтроки"); + Если ВыбранныеСтроки <> Неопределено Тогда + + Для каждого ИдентификаторСтроки Из ВыбранныеСтроки Цикл + Результат.Добавить(Элемент.ДанныеСтроки(ИдентификаторСтроки).Ссылка); + КонецЦикла; + + КонецЕсли; + + Возврат Результат; +КонецФункции + +&НаКлиенте +Процедура ОбновитьКонтактнуюИнформациюПользователя(ЭлементСписок) + + ТекущиеДанные = ЭлементСписок.ТекущиеДанные; + Если ТекущиеДанные = Неопределено Тогда + ЗаполнитьКонтактнуюИнформацию(ЭтотОбъект, Неопределено); + Возврат; + КонецЕсли; + + ТекущийПользователь = ТекущиеДанные.Ссылка; + ПодключитьОбработчикОжидания("ОбновитьКонтактнуюИнформациюПользователяЗавершение", 0.1, Истина); + +КонецПроцедуры + +&НаКлиенте +Процедура ОбновитьКонтактнуюИнформациюПользователяЗавершение() + ЗаполнитьКонтактнуюИнформацию(ЭтотОбъект, ТекущийПользователь); +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Процедура ЗаполнитьКонтактнуюИнформацию(Форма, ТекущийПользователь) + Если НЕ ЗначениеЗаполнено(ТекущийПользователь) Тогда + Форма.ПредставлениеКонтактнойИнформации = ""; + Возврат; + КонецЕсли; + + КонтактнаяИнформацияПользователя = ?(ЗначениеЗаполнено(ТекущийПользователь), + КонтактнаяИнформацияПользователя(ТекущийПользователь, Форма.УникальныйИдентификатор), + Новый Структура); + Форма.Фотография = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(КонтактнаяИнформацияПользователя, "Фотография", ""); + + Шаблон = НСтр("ru='%1 + | + |Телефон: %2 + |Электронная почта: %3'"); + + Подразделение = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(КонтактнаяИнформацияПользователя, "Подразделение", ""); + ПредставлениеПользователя = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(КонтактнаяИнформацияПользователя, "Наименование", "") + + ?(ЗначениеЗаполнено(Подразделение), Символы.ПС + Подразделение, ""); + + Форма.ПредставлениеКонтактнойИнформации = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Шаблон, + ПредставлениеПользователя, + ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(КонтактнаяИнформацияПользователя, "Телефон", ""), + ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(КонтактнаяИнформацияПользователя, "АдресЭлектроннойПочты", "")); +КонецПроцедуры + +&НаСервереБезКонтекста +Функция КонтактнаяИнформацияПользователя(Пользователь, УникальныйИдентификатор) + КонтактнаяИнформация = ПользователиСлужебный.ОписаниеПользователя(Пользователь); + КонтактнаяИнформация.Фотография = ПоместитьВоВременноеХранилище(КонтактнаяИнформация.Фотография, УникальныйИдентификатор); + Возврат КонтактнаяИнформация; +КонецФункции + &НаСервере Процедура ЗаполнитьХранимыеПараметры() @@ -712,7 +930,6 @@ Если УдалитьВсех Тогда ВыбранныеПользователиИГруппы.Очистить(); - ОбновитьЗаголовокСпискаВыбранныхПользователейИГрупп(); Возврат; КонецЕсли; @@ -721,8 +938,6 @@ ВыбранныеПользователиИГруппы.Удалить(ВыбранныеПользователиИГруппы.НайтиПоИдентификатору(ЭлементСписка)); КонецЦикла; - ОбновитьЗаголовокСпискаВыбранныхПользователейИГрупп(); - КонецПроцедуры &НаКлиенте @@ -747,11 +962,24 @@ &НаСервере Функция РезультатВыбора() + МассивПользователей = Новый Массив; ВыбранныеПользователиТаблицаЗначений = ВыбранныеПользователиИГруппы.Выгрузить( , "Пользователь"); - МассивПользователей = ВыбранныеПользователиТаблицаЗначений.ВыгрузитьКолонку("Пользователь"); - Возврат МассивПользователей; + Если ВыборУчастниковОбсуждения И ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Обсуждения") Тогда + МодульОбсуждения = ОбщегоНазначения.ОбщийМодуль("Обсуждения"); + ИдентификаторыУчастников = МодульОбсуждения.ПользователиСистемыВзаимодействия(ВыбранныеПользователиТаблицаЗначений.ВыгрузитьКолонку("Пользователь")); + Для каждого ПользовательИдентификатор Из ИдентификаторыУчастников Цикл + + Если ПользовательИдентификатор.Значение <> Неопределено Тогда + МассивПользователей.Добавить(ПользовательИдентификатор.Значение.Идентификатор); + КонецЕсли; + + КонецЦикла; + Иначе + МассивПользователей = ВыбранныеПользователиТаблицаЗначений.ВыгрузитьКолонку("Пользователь"); + КонецЕсли; + Возврат МассивПользователей; КонецФункции &НаСервере @@ -808,30 +1036,15 @@ Элементы.ОчиститьСписокВыбранных.Видимость = Истина; КонецЕсли; - // Добавление количества выбранных пользователей в заголовке выбранных пользователей и групп. - ОбновитьЗаголовокСпискаВыбранныхПользователейИГрупп(); - КонецПроцедуры &НаСервере -Процедура ОбновитьЗаголовокСпискаВыбранныхПользователейИГрупп() +Процедура УстановитьЗаголовокВыбранныхПользователейИГрупп() Если ХранимыеПараметры.ИспользоватьГруппы Тогда - ЗаголовокВыбранныеПользователиИГруппы = НСтр("ru = 'Выбранные пользователи и группы (%1)'"); + Элементы.СписокВыбранныхПользователейИГрупп.Заголовок = НСтр("ru = 'Выбранные пользователи и группы'"); Иначе - ЗаголовокВыбранныеПользователиИГруппы = НСтр("ru = 'Выбранные пользователи (%1)'"); - КонецЕсли; - - КоличествоПользователей = ВыбранныеПользователиИГруппы.Количество(); - Если КоличествоПользователей <> 0 Тогда - Элементы.СписокВыбранныхПользователейИГрупп.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - ЗаголовокВыбранныеПользователиИГруппы, КоличествоПользователей); - Иначе - Если ХранимыеПараметры.ИспользоватьГруппы Тогда - Элементы.СписокВыбранныхПользователейИГрупп.Заголовок = НСтр("ru = 'Выбранные пользователи и группы'"); - Иначе - Элементы.СписокВыбранныхПользователейИГрупп.Заголовок = НСтр("ru = 'Выбранные пользователи'"); - КонецЕсли; + Элементы.СписокВыбранныхПользователейИГрупп.Заголовок = НСтр("ru = 'Выбранные пользователи'"); КонецЕсли; КонецПроцедуры @@ -839,6 +1052,9 @@ &НаСервере Процедура ЗаполнитьСписокВыбранныхПользователейИГрупп(ВыбранныеЭлементыИКартинки) + ПользователиСлужебный.ВыбратьПользователейГруппы( + ВыбранныеЭлементыИКартинки, ХранимыеПараметры, Элементы.ПользователиСписок); + Для Каждого СтрокаМассива Из ВыбранныеЭлементыИКартинки Цикл ВыбранныйПользовательИлиГруппа = СтрокаМассива.ВыбранныйЭлемент; @@ -858,7 +1074,6 @@ КонецЦикла; ВыбранныеПользователиИГруппы.Сортировать("Пользователь Возр"); - ОбновитьЗаголовокСпискаВыбранныхПользователейИГрупп(); КонецПроцедуры @@ -957,10 +1172,11 @@ Если ХранимыеПараметры.РасширенныйПодбор Тогда Заголовок = ХранимыеПараметры.ЗаголовокФормыПодбора; - Если ХранимыеПараметры.Свойство("ЗаголовокКнопкиЗавершенияПодбора") Тогда + Если ХранимыеПараметры.Свойство("ЗаголовокКнопкиЗавершенияПодбора") Тогда ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, - "ЗавершитьИЗакрыть", "Заголовок", ХранимыеПараметры.ЗаголовокКнопкиЗавершенияПодбора); + "ЗавершитьИЗакрытьВыбор", "Заголовок", ХранимыеПараметры.ЗаголовокКнопкиЗавершенияПодбора); КонецЕсли; + Иначе Заголовок = НСтр("ru = 'Подбор пользователей'"); КонецЕсли; @@ -1000,6 +1216,7 @@ ТекущийЭлемент = Элементы.ПользователиСписок; КонецЕсли; #КонецЕсли + КонецПроцедуры &НаСервере @@ -1023,11 +1240,11 @@ // Обработчик вопроса. // // Параметры: -// Ответ - КодВозвратаДиалога - -// ДополнительныеПараметры - Структура - где: -// * ПараметрыПеретаскивания - ПараметрыПеретаскивания - -// * Строка - Строка - -// * Перемещение - ДействиеПеретаскивания - +// Ответ - КодВозвратаДиалога +// ДополнительныеПараметры - Структура: +// * ПараметрыПеретаскивания - ПараметрыПеретаскивания +// * Строка - Строка +// * Перемещение - ДействиеПеретаскивания // &НаКлиенте Процедура ГруппыПользователейПеретаскиваниеЗавершение(Ответ, ДополнительныеПараметры) Экспорт @@ -1127,4 +1344,30 @@ КонецПроцедуры -#КонецОбласти +// СтандартныеПодсистемы.ПодключаемыеКоманды +&НаКлиенте +Процедура Подключаемый_ВыполнитьКоманду(Команда) + МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент"); + МодульПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Элементы.ПользователиСписок); +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт + ВыполнитьКомандуНаСервере(ПараметрыВыполнения); +КонецПроцедуры + +&НаСервере +Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения) + МодульПодключаемыеКоманды = ОбщегоНазначения.ОбщийМодуль("ПодключаемыеКоманды"); + МодульПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Элементы.ПользователиСписок); +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ОбновитьКоманды() + МодульПодключаемыеКомандыКлиентСервер = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиентСервер"); + МодульПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Элементы.ПользователиСписок); +КонецПроцедуры + +// Конец СтандартныеПодсистемы.ПодключаемыеКоманды + +#КонецОбласти \ No newline at end of file diff --git a/SSL/src/Catalogs/Пользователи/Forms/ФормаЭлемента/Form.form b/SSL/src/Catalogs/Пользователи/Forms/ФормаЭлемента/Form.form index 0d848606f..fc40c9204 100644 --- a/SSL/src/Catalogs/Пользователи/Forms/ФормаЭлемента/Form.form +++ b/SSL/src/Catalogs/Пользователи/Forms/ФормаЭлемента/Form.form @@ -450,27 +450,197 @@ ГруппаШапка 277 + + Фотография + 353 + true + true + + true + + + АдресФотографии + + None + + ФотографияРасширеннаяПодсказка + 355 + Label + true + true + + Left + + + + ФотографияКонтекстноеМеню + 354 + true + + PictureField + Center + Enter + true + Left + true + + + Click + ФотографияНажатие + + 7 + true + 4 + true + Proportionally + true + + ru + Добавить фото + + + + 1 + + AsFileRef + + - ГруппаНаименование - 329 + ГруппаДанныеШапки + 351 + + ГруппаНаименование + 329 + + Наименование + 49 + true + true + + true + + + Объект.Description + + + OnChange + НаименованиеПриИзменении + + + НаименованиеExtendedTooltip + 216 + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 50 + true + + InputField + Enter + true + Left + true + + 22 + true + true + true + true + true + + Style.BorderColor + + Normal + + + + Недействителен + 194 + true + true + + true + + + Объект.Недействителен + + Right + Button + + OnChange + НедействителенПриИзменении + + + НедействителенExtendedTooltip + 217 + Label + true + true + + Left + + + + НедействителенКонтекстноеМеню + 195 + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Наименование</value> + + + ГруппаНаименованиеРасширеннаяПодсказка + 330 + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Auto + true + true + Auto + Auto + + - Наименование - 49 + ФизическоеЛицо + 296 true true true - Объект.Description + Объект.ФизическоеЛицо - - OnChange - НаименованиеПриИзменении - - НаименованиеExtendedTooltip - 216 + ФизическоеЛицоРасширеннаяПодсказка + 298 Label true true @@ -479,8 +649,8 @@ - НаименованиеКонтекстноеМеню - 50 + ФизическоеЛицоКонтекстноеМеню + 297 true InputField @@ -489,38 +659,29 @@ Left true - 22 true true + true true true true - - Style.BorderColor - Normal - Недействителен - 194 + Подразделение + 299 true true true - Объект.Недействителен + Объект.Подразделение - Right - Button - - OnChange - НедействителенПриИзменении - - НедействителенExtendedTooltip - 217 + ПодразделениеРасширеннаяПодсказка + 301 Label true true @@ -529,16 +690,24 @@ - НедействителенКонтекстноеМеню - 195 + ПодразделениеКонтекстноеМеню + 300 true - CheckBoxField + InputField Enter true Left true - + + true + true + true + true + true + true + Normal + true true @@ -547,11 +716,11 @@ <key>ru</key> - <value>Наименование</value> + <value>Данные шапки</value> - ГруппаНаименованиеРасширеннаяПодсказка - 330 + ГруппаДанныеШапкиРасширеннаяПодсказка + 352 Label true true @@ -561,7 +730,7 @@ UsualGroup - HorizontalIfPossible + Vertical Auto true true @@ -569,88 +738,6 @@ Auto - - ФизическоеЛицо - 296 - true - true - - true - - - Объект.ФизическоеЛицо - - - ФизическоеЛицоРасширеннаяПодсказка - 298 - Label - true - true - - Left - - - - ФизическоеЛицоКонтекстноеМеню - 297 - true - - InputField - Enter - true - Left - true - - true - true - true - true - true - true - Normal - - - - Подразделение - 299 - true - true - - true - - - Объект.Подразделение - - - ПодразделениеРасширеннаяПодсказка - 301 - Label - true - true - - Left - - - - ПодразделениеКонтекстноеМеню - 300 - true - - InputField - Enter - true - Left - true - - true - true - true - true - true - true - Normal - - true true @@ -672,7 +759,7 @@ UsualGroup - Vertical + AlwaysHorizontal Auto true true @@ -2564,6 +2651,10 @@ OnOpen ПриОткрытии + + OnLoadDataFromSettingsAtServer + ПриЗагрузкеДанныхИзНастроекНаСервере + OnCreateAtServer ПриСозданииНаСервере @@ -3315,6 +3406,25 @@ true + + АдресФотографии + + <key>ru</key> + <value>Фотография</value> + + 4 + + String + + + + true + + + true + + true + ПоказатьТолькоВыбранныеРоли diff --git a/SSL/src/Catalogs/Пользователи/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/Пользователи/Forms/ФормаЭлемента/Module.bsl index cff70f9a5..4804e5697 100644 --- a/SSL/src/Catalogs/Пользователи/Forms/ФормаЭлемента/Module.bsl +++ b/SSL/src/Catalogs/Пользователи/Forms/ФормаЭлемента/Module.bsl @@ -20,6 +20,13 @@ УстановитьУсловноеОформление(); + // СтандартныеПодсистемы.ПодключаемыеКоманды + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда + МодульПодключаемыеКоманды = ОбщегоНазначения.ОбщийМодуль("ПодключаемыеКоманды"); + МодульПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект); + КонецЕсли; + // Конец СтандартныеПодсистемы.ПодключаемыеКоманды + Если ОбщегоНазначения.РазделениеВключено() Тогда ДоступноИзменениеПользователей = Истина; @@ -196,6 +203,13 @@ МодульУправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект); КонецЕсли; + // СтандартныеПодсистемы.ПодключаемыеКоманды + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда + МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент"); + МодульПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект); + КонецЕсли; + // Конец СтандартныеПодсистемы.ПодключаемыеКоманды + КонецПроцедуры &НаКлиенте @@ -239,6 +253,18 @@ КонецЕсли; // Конец СтандартныеПодсистемы.УправлениеДоступом + // СтандартныеПодсистемы.ПодключаемыеКоманды + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда + МодульПодключаемыеКомандыКлиентСервер = ОбщегоНазначения.ОбщийМодуль("ПодключаемыеКомандыКлиентСервер"); + МодульПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект); + КонецЕсли; + // Конец СтандартныеПодсистемы.ПодключаемыеКоманды + + Фотография = ТекущийОбъект.Фотография.Получить(); + Если Фотография <> Неопределено Тогда + АдресФотографии = ПоместитьВоВременноеХранилище(Фотография, УникальныйИдентификатор); + КонецЕсли; + КонецПроцедуры &НаКлиенте @@ -350,6 +376,10 @@ КонецЕсли; КонецЕсли; + Если ЭтоАдресВременногоХранилища(АдресФотографии) Тогда + ТекущийОбъект.Фотография = Новый ХранилищеЗначения(ПолучитьИзВременногоХранилища(АдресФотографии)); + КонецЕсли; + КонецПроцедуры &НаСервере @@ -392,6 +422,11 @@ МодульУправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи); КонецЕсли; + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Обсуждения") Тогда + МодульОбсуждения = ОбщегоНазначения.ОбщийМодуль("Обсуждения"); + МодульОбсуждения.ОбновитьПользователяВСистемеВзаимодействия(ТекущийОбъект); + КонецЕсли; + КонецПроцедуры &НаКлиенте @@ -460,10 +495,10 @@ Если Строка.ЭтоНесуществующаяРоль Тогда ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки, "Роли[%1].РолиСиноним", - СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Роль ""%1"" не найдена в метаданных.'"), Строка.Синоним), + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Несуществующая роль ""%1"".'"), Строка.Синоним), "Роли", ЭлементыДерева.Индекс(Строка), - СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Роль ""%1"" в строке %2 не найдена в метаданных.'"), Строка.Синоним, "%1")); + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Несуществующая роль ""%1"" в строке %2.'"), Строка.Синоним, "%1")); КонецЕсли; Если Строка.ЭтоНедоступнаяРоль Тогда ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки, @@ -719,6 +754,29 @@ ОткрытьФорму("ОбщаяФорма.НастройкиВходаПользователей", , ЭтотОбъект); КонецПроцедуры +&НаКлиенте +Процедура ФотографияНажатие(Элемент, СтандартнаяОбработка) + СтандартнаяОбработка = Ложь; + ОповещениеОЗавершение = Новый ОписаниеОповещения("ФотографияНажатиеЗавершение", ЭтотОбъект); + ПараметрыЗагрузки = ФайловаяСистемаКлиент.ПараметрыЗагрузкиФайла(); + ПараметрыЗагрузки.ИдентификаторФормы = УникальныйИдентификатор; + ФайловаяСистемаКлиент.ЗагрузитьФайл(ОповещениеОЗавершение,ПараметрыЗагрузки); +КонецПроцедуры + +&НаКлиенте +Процедура ФотографияНажатиеЗавершение(Результат, ДополнительныеПараметры) Экспорт + Если Результат = Неопределено Тогда + Возврат; + КонецЕсли; + + Если ЭтоАдресВременногоХранилища(АдресФотографии) Тогда + УдалитьИзВременногоХранилища(АдресФотографии); + КонецЕсли; + + АдресФотографии = Результат.Хранение; + Модифицированность = Истина; +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // Поддержка контактной информации. @@ -728,7 +786,7 @@ МодульУправлениеКонтактнойИнформациейКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеКонтактнойИнформациейКлиент"); - МодульУправлениеКонтактнойИнформациейКлиент.ПриИзменении(ЭтотОбъект, Элемент); + МодульУправлениеКонтактнойИнформациейКлиент.НачатьИзменение(ЭтотОбъект, Элемент); УстановитьНеобходимостьСинхронизацииССервисом(ЭтотОбъект); @@ -753,8 +811,8 @@ // Подключаемый обработчик очистки. // // Параметры: -// Элемент - ПолеФормы - -// СтандартнаяОбработка - Булево - +// Элемент - ПолеФормы +// СтандартнаяОбработка - Булево // &НаКлиенте Процедура Подключаемый_EMailОчистка(Элемент, СтандартнаяОбработка) @@ -767,7 +825,7 @@ МодульУправлениеКонтактнойИнформациейКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеКонтактнойИнформациейКлиент"); - МодульУправлениеКонтактнойИнформациейКлиент.Очистка(ЭтотОбъект, Элемент.Имя); + МодульУправлениеКонтактнойИнформациейКлиент.НачатьОчистку(ЭтотОбъект, Элемент.Имя); КонецПроцедуры @@ -777,7 +835,7 @@ МодульУправлениеКонтактнойИнформациейКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеКонтактнойИнформациейКлиент"); - МодульУправлениеКонтактнойИнформациейКлиент.ПриИзменении(ЭтотОбъект, Элемент); + МодульУправлениеКонтактнойИнформациейКлиент.НачатьИзменение(ЭтотОбъект, Элемент); УстановитьНеобходимостьСинхронизацииССервисом(ЭтотОбъект); @@ -838,7 +896,7 @@ МодульУправлениеКонтактнойИнформациейКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеКонтактнойИнформациейКлиент"); - МодульУправлениеКонтактнойИнформациейКлиент.ПриИзменении(ЭтотОбъект, Элемент); + МодульУправлениеКонтактнойИнформациейКлиент.НачатьИзменение(ЭтотОбъект, Элемент); КонецПроцедуры @@ -847,49 +905,50 @@ МодульУправлениеКонтактнойИнформациейКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеКонтактнойИнформациейКлиент"); - МодульУправлениеКонтактнойИнформациейКлиент.НачалоВыбора(ЭтотОбъект, Элемент,, СтандартнаяОбработка); + МодульУправлениеКонтактнойИнформациейКлиент.НачатьВыбор(ЭтотОбъект, Элемент,, СтандартнаяОбработка); КонецПроцедуры // Подключаемый обработчик нажатия. // // Параметры: -// Элемент - ДекорацияФормы, РасширениеДекорацииФормыДляНадписи - -// СтандартнаяОбработка - Булево - +// Элемент - ДекорацияФормы +// - РасширениеДекорацииФормыДляНадписи +// СтандартнаяОбработка - Булево // &НаКлиенте Процедура Подключаемый_КонтактнаяИнформацияПриНажатии(Элемент, СтандартнаяОбработка) МодульУправлениеКонтактнойИнформациейКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеКонтактнойИнформациейКлиент"); - МодульУправлениеКонтактнойИнформациейКлиент.НачалоВыбора(ЭтотОбъект, Элемент,, СтандартнаяОбработка); + МодульУправлениеКонтактнойИнформациейКлиент.НачатьВыбор(ЭтотОбъект, Элемент,, СтандартнаяОбработка); КонецПроцедуры // Подключаемый обработчик очистки. // // Параметры: -// Элемент - ПолеФормы - -// СтандартнаяОбработка - Булево - +// Элемент - ПолеФормы +// СтандартнаяОбработка - Булево // &НаКлиенте Процедура Подключаемый_КонтактнаяИнформацияОчистка(Элемент, СтандартнаяОбработка) МодульУправлениеКонтактнойИнформациейКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеКонтактнойИнформациейКлиент"); - МодульУправлениеКонтактнойИнформациейКлиент.Очистка(ЭтотОбъект, Элемент.Имя); + МодульУправлениеКонтактнойИнформациейКлиент.НачатьОчистку(ЭтотОбъект, Элемент.Имя); КонецПроцедуры // Подключаемый обработчик команды. // // Параметры: -// Команда - КомандаФормы - +// Команда - КомандаФормы // &НаКлиенте Процедура Подключаемый_КонтактнаяИнформацияВыполнитьКоманду(Команда) МодульУправлениеКонтактнойИнформациейКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеКонтактнойИнформациейКлиент"); - МодульУправлениеКонтактнойИнформациейКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда.Имя); + МодульУправлениеКонтактнойИнформациейКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда.Имя); КонецПроцедуры @@ -905,9 +964,9 @@ // Подключаемый обработчик выбора. // // Параметры: -// Элемент - ПолеФормы - -// ВыбранноеЗначение - Строка - -// СтандартнаяОбработка - Булево - +// Элемент - ПолеФормы +// ВыбранноеЗначение - Строка +// СтандартнаяОбработка - Булево // &НаКлиенте Процедура Подключаемый_КонтактнаяИнформацияОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) @@ -918,6 +977,11 @@ КонецПроцедуры +&НаКлиенте +Процедура Подключаемый_ПродолжитьОбновлениеКонтактнойИнформации(Результат, ДополнительныеПараметры) Экспорт + ОбновитьКонтактнуюИнформацию(Результат); +КонецПроцедуры + #КонецОбласти #Область ОбработчикиСобытийЭлементовТаблицыФормыРоли @@ -1656,11 +1720,9 @@ // Поддержка контактной информации. &НаСервере -Процедура Подключаемый_ОбновитьКонтактнуюИнформацию(Результат) Экспорт - - МодульУправлениеКонтактнойИнформацией = - ОбщегоНазначения.ОбщийМодуль("УправлениеКонтактнойИнформацией"); +Процедура ОбновитьКонтактнуюИнформацию(Результат) + МодульУправлениеКонтактнойИнформацией = ОбщегоНазначения.ОбщийМодуль("УправлениеКонтактнойИнформацией"); МодульУправлениеКонтактнойИнформацией.ОбновитьКонтактнуюИнформацию(ЭтотОбъект, Объект, Результат); КонецПроцедуры @@ -2024,7 +2086,7 @@ КонецЕсли; Элементы.СопоставлениеПояснениеНесоответствия.Заголовок = - НСтр("ru = 'Пользователь информационной базы не найден.'") + Рекомендация; + НСтр("ru = 'Несуществующий пользователь информационной базы.'") + Рекомендация; КонецПроцедуры @@ -2219,4 +2281,30 @@ КонецПроцедуры +// СтандартныеПодсистемы.ПодключаемыеКоманды +&НаКлиенте +Процедура Подключаемый_ВыполнитьКоманду(Команда) + МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент"); + МодульПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект); +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт + ВыполнитьКомандуНаСервере(ПараметрыВыполнения); +КонецПроцедуры + +&НаСервере +Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения) + МодульПодключаемыеКоманды = ОбщегоНазначения.ОбщийМодуль("ПодключаемыеКоманды"); + МодульПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Объект); +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ОбновитьКоманды() + МодульПодключаемыеКомандыКлиентСервер = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиентСервер"); + МодульПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект); +КонецПроцедуры + +// Конец СтандартныеПодсистемы.ПодключаемыеКоманды + #КонецОбласти diff --git a/SSL/src/Catalogs/Пользователи/ManagerModule.bsl b/SSL/src/Catalogs/Пользователи/ManagerModule.bsl index 2a6d8447a..c1f8cdfa9 100644 --- a/SSL/src/Catalogs/Пользователи/ManagerModule.bsl +++ b/SSL/src/Catalogs/Пользователи/ManagerModule.bsl @@ -18,7 +18,8 @@ // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: -// Массив Из Строка - +// Массив Из Строка +// Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт НеРедактируемыеРеквизиты = Новый Массив; @@ -103,6 +104,18 @@ КонецПроцедуры +Процедура ОбработкаПолученияФормы(ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка) + Если ВидФормы = "ФормаВыбора" ИЛИ Параметры.Свойство("РежимВыбора") Тогда + + ВыбраннаяФормаПоУмолчанию = ВыбраннаяФорма; + ПользователиПереопределяемый.ПриОпределенииФормыВыбораПользователей(ВыбраннаяФорма, Параметры); + Если ВыбраннаяФормаПоУмолчанию <> ВыбраннаяФорма Тогда + СтандартнаяОбработка = Ложь; + КонецЕсли; + + КонецЕсли; +КонецПроцедуры + #КонецОбласти #КонецЕсли diff --git a/SSL/src/Catalogs/Пользователи/Пользователи.mdo b/SSL/src/Catalogs/Пользователи/Пользователи.mdo index 9fd60c83b..e975e3b28 100644 --- a/SSL/src/Catalogs/Пользователи/Пользователи.mdo +++ b/SSL/src/Catalogs/Пользователи/Пользователи.mdo @@ -372,6 +372,21 @@ <fullTextSearch>Use</fullTextSearch> <dataHistory>Use</dataHistory> </attributes> + <attributes uuid="622d6de2-7404-41cc-961b-131d078d7ab4"> + <name>Фотография</name> + <synonym> + <key>ru</key> + <value>Фотография</value> + </synonym> + <type> + <types>ValueStorage</types> + </type> + <minValue xsi:type="core:UndefinedValue"/> + <maxValue xsi:type="core:UndefinedValue"/> + <fillValue xsi:type="core:UndefinedValue"/> + <fullTextSearch>Use</fullTextSearch> + <dataHistory>Use</dataHistory> + </attributes> <tabularSections uuid="245f870e-a53a-4d86-aa0a-c0c7709b8acb"> <producedTypes> <objectType typeId="d775216b-7adc-4b4e-972d-b6ad881e79dd" valueTypeId="16c681bb-1a49-44e1-82a6-4af12b00b701"/> diff --git a/SSL/src/Catalogs/ПользовательскиеНастройкиОтчетов/ManagerModule.bsl b/SSL/src/Catalogs/ПользовательскиеНастройкиОтчетов/ManagerModule.bsl index 82b3f6074..79c06de94 100644 --- a/SSL/src/Catalogs/ПользовательскиеНастройкиОтчетов/ManagerModule.bsl +++ b/SSL/src/Catalogs/ПользовательскиеНастройкиОтчетов/ManagerModule.bsl @@ -18,7 +18,8 @@ // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: -// Массив Из Строка - +// Массив Из Строка +// Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт Результат = Новый Массив; diff --git a/SSL/src/Catalogs/ПоставляемыеДополнительныеОтчетыИОбработки/ПоставляемыеДополнительныеОтчетыИОбработки.mdo b/SSL/src/Catalogs/ПоставляемыеДополнительныеОтчетыИОбработки/ПоставляемыеДополнительныеОтчетыИОбработки.mdo index fd5fad905..f7e2b8971 100644 --- a/SSL/src/Catalogs/ПоставляемыеДополнительныеОтчетыИОбработки/ПоставляемыеДополнительныеОтчетыИОбработки.mdo +++ b/SSL/src/Catalogs/ПоставляемыеДополнительныеОтчетыИОбработки/ПоставляемыеДополнительныеОтчетыИОбработки.mdo @@ -196,7 +196,10 @@ <value>Причина отключения</value> </synonym> <type> - <types>EnumRef.ПричиныОтключенияДополнительныхОтчетовИОбработокВМоделиСервиса</types> + <types>String</types> + <stringQualifiers> + <length>10</length> + </stringQualifiers> </type> <toolTip> <key>ru</key> diff --git a/SSL/src/Catalogs/ПравилаОбработкиЭлектроннойПочты/ManagerModule.bsl b/SSL/src/Catalogs/ПравилаОбработкиЭлектроннойПочты/ManagerModule.bsl index 65b99a006..d218ebdfe 100644 --- a/SSL/src/Catalogs/ПравилаОбработкиЭлектроннойПочты/ManagerModule.bsl +++ b/SSL/src/Catalogs/ПравилаОбработкиЭлектроннойПочты/ManagerModule.bsl @@ -18,7 +18,8 @@ // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: -// Массив Из Строка - +// Массив Из Строка +// Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт Результат = Новый Массив; @@ -58,7 +59,7 @@ // Применяет правила обработки писем. // // Параметры: -// ПараметрыВыгрузки - Структура - содержит следующие поля. +// ПараметрыВыгрузки - Структура: // - ДляПисемВПапке - Справочник.ПапкиЭлектронныхПисем - письма, которые находятся в этой папке // будут обработаны. // - ВключаяПодчиненные - Булево - признак, того что должны обрабатываться письма в подчиненных папках. diff --git a/SSL/src/Catalogs/ПравилаПроверкиУчета/Forms/ФормаСписка/Module.bsl b/SSL/src/Catalogs/ПравилаПроверкиУчета/Forms/ФормаСписка/Module.bsl index 90de09885..3f0d069bd 100644 --- a/SSL/src/Catalogs/ПравилаПроверкиУчета/Forms/ФормаСписка/Module.bsl +++ b/SSL/src/Catalogs/ПравилаПроверкиУчета/Forms/ФормаСписка/Module.bsl @@ -44,7 +44,7 @@ КонецЕсли; Иначе Если (ОбщегоНазначения.РазделениеВключено() И ЭтоАдминистраторСистемы) Или Не ОбщегоНазначения.РазделениеВключено() Тогда - ОбщееРасписаниеПредставление = НСтр("ru = 'Не найдено общее регламентное задание'"); + ОбщееРасписаниеПредставление = НСтр("ru = 'Регламентное задание не доступно'"); Иначе ОбщееРасписаниеПредставление = ""; Элементы.ПредставлениеОбщегоРасписания.Видимость = Ложь; @@ -212,20 +212,6 @@ Список.УсловноеОформление.Элементы.Очистить(); - // Отключенные проверки. - - Элемент = Список.УсловноеОформление.Элементы.Добавить(); - - ЭлементОтбораДанных = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); - ЭлементОтбораДанных.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Использование"); - ЭлементОтбораДанных.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; - ЭлементОтбораДанных.ПравоеЗначение = Ложь; - ЭлементОтбораДанных.Использование = Истина; - - ЭлементЦветаОформления = Элемент.Оформление.Элементы.Найти("ЦветТекста"); - ЭлементЦветаОформления.Значение = Метаданные.ЭлементыСтиля.ТекстЗапрещеннойЯчейкиЦвет.Значение; - ЭлементЦветаОформления.Использование = Истина; - // Не выводить, если не описаны причины возникновения проблемы. Элемент = Список.УсловноеОформление.Элементы.Добавить(); @@ -365,7 +351,7 @@ КонецЕсли; Иначе ОбщееРасписание = Неопределено; - ОбщееРасписаниеПредставление = НСтр("ru = 'Не найдено общее регламентное задание'"); + ОбщееРасписаниеПредставление = НСтр("ru = 'Регламентное задание недоступно'"); КонецЕсли; Если Не ОбщегоНазначения.РазделениеВключено() Тогда diff --git a/SSL/src/Catalogs/ПравилаПроверкиУчета/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/ПравилаПроверкиУчета/Forms/ФормаЭлемента/Module.bsl index 1dc98a2f5..34864db79 100644 --- a/SSL/src/Catalogs/ПравилаПроверкиУчета/Forms/ФормаЭлемента/Module.bsl +++ b/SSL/src/Catalogs/ПравилаПроверкиУчета/Forms/ФормаЭлемента/Module.bsl @@ -264,7 +264,7 @@ КонецЕсли; КонецЕсли; Иначе - ОбщееРасписаниеПредставление = НСтр("ru = 'Не найдено общее регламентное задание'"); + ОбщееРасписаниеПредставление = НСтр("ru = 'Регламентное задание не доступно'"); КонецЕсли; Элементы.ПредставлениеОбщегоРасписания.Заголовок = @@ -392,7 +392,7 @@ МетаданныеТекущейПроверки = МетаданныеПроверки(Объект.Идентификатор); Если МетаданныеТекущейПроверки = Неопределено Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Рассинхронизация проверок учета. Проверка с идентификатором ""%1"" не найдена в метаданных.'"), Объект.Идентификатор); + НСтр("ru = 'Проверка ведения учета с идентификатором ""%1"" не существует.'"), Объект.Идентификатор); КонецЕсли; ЗаполнитьЗначенияСвойств(Объект, МетаданныеТекущейПроверки, , "Идентификатор"); diff --git a/SSL/src/Catalogs/ПредопределенныеВариантыОтчетов/ManagerModule.bsl b/SSL/src/Catalogs/ПредопределенныеВариантыОтчетов/ManagerModule.bsl index a7e64b1e3..0ac162e5a 100644 --- a/SSL/src/Catalogs/ПредопределенныеВариантыОтчетов/ManagerModule.bsl +++ b/SSL/src/Catalogs/ПредопределенныеВариантыОтчетов/ManagerModule.bsl @@ -17,7 +17,7 @@ // Имена реквизитов справочника, значения которых разрешено изменять массово. // // Возвращаемое значение: -// Массив Из Строка - Имена реквизитов справочника. +// Массив Из Строка - имена реквизитов справочника. // Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт @@ -34,7 +34,7 @@ // Имена реквизитов справочника, в разрезе которых контролируется уникальность элементов. // // Возвращаемое значение: -// Массив Из Строка - Имена реквизитов справочника. +// Массив Из Строка - имена реквизитов справочника. // Функция ПоляЕстественногоКлюча() Экспорт diff --git a/SSL/src/Catalogs/ПредопределенныеВариантыОтчетовРасширений/ManagerModule.bsl b/SSL/src/Catalogs/ПредопределенныеВариантыОтчетовРасширений/ManagerModule.bsl index a7e64b1e3..0ac162e5a 100644 --- a/SSL/src/Catalogs/ПредопределенныеВариантыОтчетовРасширений/ManagerModule.bsl +++ b/SSL/src/Catalogs/ПредопределенныеВариантыОтчетовРасширений/ManagerModule.bsl @@ -17,7 +17,7 @@ // Имена реквизитов справочника, значения которых разрешено изменять массово. // // Возвращаемое значение: -// Массив Из Строка - Имена реквизитов справочника. +// Массив Из Строка - имена реквизитов справочника. // Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт @@ -34,7 +34,7 @@ // Имена реквизитов справочника, в разрезе которых контролируется уникальность элементов. // // Возвращаемое значение: -// Массив Из Строка - Имена реквизитов справочника. +// Массив Из Строка - имена реквизитов справочника. // Функция ПоляЕстественногоКлюча() Экспорт diff --git a/SSL/src/Catalogs/ПрограммыЭлектроннойПодписиИШифрования/Forms/ОшибкаОбращенияКПрограмме/Module.bsl b/SSL/src/Catalogs/ПрограммыЭлектроннойПодписиИШифрования/Forms/ОшибкаОбращенияКПрограмме/Module.bsl index fe2987776..b82ec17d9 100644 --- a/SSL/src/Catalogs/ПрограммыЭлектроннойПодписиИШифрования/Forms/ОшибкаОбращенияКПрограмме/Module.bsl +++ b/SSL/src/Catalogs/ПрограммыЭлектроннойПодписиИШифрования/Forms/ОшибкаОбращенияКПрограмме/Module.bsl @@ -206,6 +206,11 @@ КонецПроцедуры +// Параметры: +// ОписаниеОшибки - ДанныеФормыКоллекция: +// * Ошибки - Массив из Структура +// ОшибкаНаСервере - Булево +// &НаСервере Процедура ДобавитьОшибки(ОписаниеОшибок, ОшибкаНаСервере = Ложь) diff --git a/SSL/src/Catalogs/ПрограммыЭлектроннойПодписиИШифрования/Forms/ФормаЭлемента/Form.form b/SSL/src/Catalogs/ПрограммыЭлектроннойПодписиИШифрования/Forms/ФормаЭлемента/Form.form index 1b9d51313..e1c2bd44a 100644 --- a/SSL/src/Catalogs/ПрограммыЭлектроннойПодписиИШифрования/Forms/ФормаЭлемента/Form.form +++ b/SSL/src/Catalogs/ПрограммыЭлектроннойПодписиИШифрования/Forms/ФормаЭлемента/Form.form @@ -1,5 +1,42 @@ <?xml version="1.0" encoding="UTF-8"?> <form:Form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:form="http://g5.1c.ru/v8/dt/form"> + <items xsi:type="form:Decoration"> + <name>НадписьНастройкаВЦентральномУзле</name> + <id>55</id> + <title> + <key>ru</key> + <value>Настройка программы электронной подписи и шифрования выполнена в главном узле</value> + + true + true + + true + + + НадписьНастройкаВЦентральномУзлеРасширеннаяПодсказка + 57 + Label + true + true + + Left + + + + НадписьНастройкаВЦентральномУзлеКонтекстноеМеню + 56 + true + + Label + true + true + + Left + + Style.ToolTipBackColor + + + Наименование 50 diff --git a/SSL/src/Catalogs/ПрограммыЭлектроннойПодписиИШифрования/Forms/ФормаЭлемента/Help/ru.html b/SSL/src/Catalogs/ПрограммыЭлектроннойПодписиИШифрования/Forms/ФормаЭлемента/Help/ru.html index c735d5be5..235e39e76 100644 --- a/SSL/src/Catalogs/ПрограммыЭлектроннойПодписиИШифрования/Forms/ФормаЭлемента/Help/ru.html +++ b/SSL/src/Catalogs/ПрограммыЭлектроннойПодписиИШифрования/Forms/ФормаЭлемента/Help/ru.html @@ -1,14 +1,21 @@

      Сведения о программе электронной подписи и шифрования.

      Открывается по кнопке Добавить в списке Настройки электронной подписи и шифрования на вкладке Программы.

      +

      В случае использования распределенной информационной базы настройки можно изменить только в главном узле.

      Заполнение сведений о программе

      • В поле Представление выберите нужную программу из списка. В списке представлены часто используемые программы.
          • Остальные поля заполняются автоматически.
        • Если в списке нужной программы нет, выберите значение <Другая программа>. -
          • В этом случае остальные поля заполняются вручную.
      • Все поля являются обязательными для заполнения. -
      • Имя программы - полное имя программы; -
      • Тип программы - число, указывающее тип провайдера электронной подписи. -
      • Алгоритм подписи - алгоритм подписи выбирается из списка выбора, предоставляемого провайдером электронной подписи; -
      • Алгоритм хеширования - выбирается из списка выбора, предоставляемого провайдером электронной подписи; -
      • Алгоритм шифрования - выбирается из списка выбора, предоставляемого провайдером электронной подписи.

      См. также:

      +
      • В этом случае остальные поля заполняются вручную.
    +
  • Все поля являются обязательными для заполнения. +
  • +
  • Имя программы - полное имя программы; +
  • +
  • Тип программы - число, указывающее тип провайдера электронной подписи. +
  • +
  • Алгоритм подписи - алгоритм подписи выбирается из списка выбора, предоставляемого провайдером электронной подписи; +
  • +
  • Алгоритм хеширования - выбирается из списка выбора, предоставляемого провайдером электронной подписи; +
  • +
  • Алгоритм шифрования - выбирается из списка выбора, предоставляемого провайдером электронной подписи.
  • См. также:

    \ No newline at end of file diff --git a/SSL/src/Catalogs/ПрограммыЭлектроннойПодписиИШифрования/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/ПрограммыЭлектроннойПодписиИШифрования/Forms/ФормаЭлемента/Module.bsl index d8e42e816..56592cabb 100644 --- a/SSL/src/Catalogs/ПрограммыЭлектроннойПодписиИШифрования/Forms/ФормаЭлемента/Module.bsl +++ b/SSL/src/Catalogs/ПрограммыЭлектроннойПодписиИШифрования/Forms/ФормаЭлемента/Module.bsl @@ -20,6 +20,8 @@ Если ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ() Тогда ТолькоПросмотр = Истина; + Иначе + Элементы.НадписьНастройкаВЦентральномУзле.Видимость = Ложь; КонецЕсли; ПоставляемыеНастройки = Справочники.ПрограммыЭлектроннойПодписиИШифрования.ПоставляемыеНастройкиПрограмм(); diff --git a/SSL/src/Catalogs/ПрограммыЭлектроннойПодписиИШифрования/ManagerModule.bsl b/SSL/src/Catalogs/ПрограммыЭлектроннойПодписиИШифрования/ManagerModule.bsl index 0c9006158..92467c78c 100644 --- a/SSL/src/Catalogs/ПрограммыЭлектроннойПодписиИШифрования/ManagerModule.bsl +++ b/SSL/src/Catalogs/ПрограммыЭлектроннойПодписиИШифрования/ManagerModule.bsl @@ -18,7 +18,8 @@ // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: -// Массив Из Строка - +// Массив Из Строка +// Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт РедактируемыеРеквизиты = Новый Массив; @@ -205,6 +206,9 @@ КонецПроцедуры +// Параметры: +// Программа - СправочникСсылка.ПрограммыЭлектроннойПодписиИШифрования +// Процедура ОбновитьПредставлениеПрограммыОтложенно(Программа, ОбъектовОбработано, ПроблемныхОбъектов, ПоставляемыеНастройки) Блокировка = Новый БлокировкаДанных; diff --git a/SSL/src/Catalogs/ПроизводственныеКалендари/ManagerModule.bsl b/SSL/src/Catalogs/ПроизводственныеКалендари/ManagerModule.bsl index 247c153d2..43e792168 100644 --- a/SSL/src/Catalogs/ПроизводственныеКалендари/ManagerModule.bsl +++ b/SSL/src/Catalogs/ПроизводственныеКалендари/ManagerModule.bsl @@ -109,8 +109,8 @@ // Функция читает данные производственного календаря из регистра. // // Параметры: -// ПроизводственныйКалендарь - Ссылка на текущий элемент справочника. -// НомерГода - Номер года, за который необходимо прочитать производственный календарь. +// ПроизводственныйКалендарь - ссылка на текущий элемент справочника. +// НомерГода - номер года, за который необходимо прочитать производственный календарь. // // Возвращаемое значение // ДанныеПроизводственногоКалендаря - таблица значений, в которой хранятся сведения о виде дня на каждую дату календаря. @@ -498,13 +498,13 @@ // Преобразовывает данные производственных календарей, представленные в виде XML. // // Параметры: -// ДанныеXML - структура, извлеченная из файла XML методом ОбщегоНазначения.ПрочитатьXMLВТаблицу. +// ДанныеXML - структура - извлеченная из файла XML методом ОбщегоНазначения.ПрочитатьXMLВТаблицу. // ТаблицаКалендарей - таблица значений, список производственных календарей, поддерживаемых в конфигурации. // КодыКалендарей - необязательный, массив, если не задан, то отбор не будет установлен. // ФормироватьПолныйНабор - необязательный, булево, если ложь, то будут сформированы только данные по отклонениям от календаря по умолчанию. // // Возвращаемое значение: -// ТаблицаЗначений - таблица с колонками: +// ТаблицаЗначений: // * КодПроизводственногоКалендаря // * ВидДня // * Год @@ -616,7 +616,7 @@ // Получает таблицу поставляемых в составе программы производственных календарей. // // Возвращаемое значение: -// ТаблицаЗначений - . +// ТаблицаЗначений // Функция ПроизводственныеКалендариИзМакета() Экспорт @@ -697,35 +697,38 @@ | ИзмененияКалендарей.ПроизводственныйКалендарь, | Год"; - РезультатЗапроса = Запрос.Выполнить(); - Если РезультатЗапроса.Пустой() Тогда - Возврат; - КонецЕсли; - - НаборЗаписей = РегистрыСведений.ДанныеПроизводственногоКалендаря.СоздатьНаборЗаписей(); - - КлючиРегистра = Новый Массив; - КлючиРегистра.Добавить("ПроизводственныйКалендарь"); - КлючиРегистра.Добавить("Год"); - - Выборка = РезультатЗапроса.Выбрать(); - Пока Выборка.СледующийПоЗначениюПоля("ПроизводственныйКалендарь") Цикл - Пока Выборка.СледующийПоЗначениюПоля("Год") Цикл - НаборЗаписей.Очистить(); - Пока Выборка.Следующий() Цикл - ЗаполнитьЗначенияСвойств(НаборЗаписей.Добавить(), Выборка); + Блокировка = Новый БлокировкаДанных(); + Блокировка.Добавить("РегистрСведений.ДанныеПроизводственногоКалендаря"); + НачатьТранзакцию(); + Попытка + Блокировка.Заблокировать(); + РезультатЗапроса = Запрос.Выполнить(); + Если РезультатЗапроса.Пустой() Тогда + ОтменитьТранзакцию(); + Возврат; + КонецЕсли; + Выборка = РезультатЗапроса.Выбрать(); + Пока Выборка.СледующийПоЗначениюПоля("ПроизводственныйКалендарь") Цикл + Пока Выборка.СледующийПоЗначениюПоля("Год") Цикл + НаборЗаписей = РегистрыСведений.ДанныеПроизводственногоКалендаря.СоздатьНаборЗаписей(); + Пока Выборка.Следующий() Цикл + ЗаполнитьЗначенияСвойств(НаборЗаписей.Добавить(), Выборка); + КонецЦикла; + ЗаполнитьЗначенияСвойств(ИзмененияКалендарей.Добавить(), Выборка); + НаборЗаписей.Отбор.ПроизводственныйКалендарь.Установить(Выборка.ПроизводственныйКалендарь); + НаборЗаписей.Отбор.Год.Установить(Выборка.Год); + Если ОбновлениеИнформационнойБазы.ЭтоВызовИзОбработчикаОбновления() Тогда + ОбновлениеИнформационнойБазы.ЗаписатьНаборЗаписей(НаборЗаписей); + Продолжить; + КонецЕсли; + НаборЗаписей.Записать(); КонецЦикла; - ЗаполнитьЗначенияСвойств(ИзмененияКалендарей.Добавить(), Выборка); - Для Каждого Ключ Из КлючиРегистра Цикл - НаборЗаписей.Отбор[Ключ].Установить(Выборка[Ключ]); - КонецЦикла; - Если ОбновлениеИнформационнойБазы.ЭтоВызовИзОбработчикаОбновления() Тогда - ОбновлениеИнформационнойБазы.ЗаписатьНаборЗаписей(НаборЗаписей); - Продолжить; - КонецЕсли; - НаборЗаписей.Записать(); КонецЦикла; - КонецЦикла; + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; ИзмененияКалендарей.Свернуть("КодПроизводственногоКалендаря, Год"); @@ -810,7 +813,7 @@ // Определяет источник актуального перечня поддерживаемых производственных календарей (макет или поставка классификатора). // // Возвращаемое значение: -// ТаблицаЗначений - . +// ТаблицаЗначений // Функция ПроизводственныеКалендариПоУмолчанию() Экспорт @@ -909,8 +912,8 @@ // Процедура записывает данные одного производственного календаря за 1 год. // // Параметры: -// ПроизводственныйКалендарь - Ссылка на текущий элемент справочника. -// НомерГода - Номер года, за который необходимо записать производственный календарь. +// ПроизводственныйКалендарь - ссылка на текущий элемент справочника. +// НомерГода - номер года, за который необходимо записать производственный календарь. // ДанныеПроизводственногоКалендаря - таблица значений, в которой хранятся сведения о виде дня на каждую дату календаря. // // Возвращаемое значение diff --git a/SSL/src/Catalogs/ПроизводственныеКалендари/Templates/ПФ_MXL_ПроизводственныйКалендарь/Template.mxlx b/SSL/src/Catalogs/ПроизводственныеКалендари/Templates/ПФ_MXL_ПроизводственныйКалендарь/Template.mxlx index dbd8fb0c5..888811dfd 100644 --- a/SSL/src/Catalogs/ПроизводственныеКалендари/Templates/ПФ_MXL_ПроизводственныйКалендарь/Template.mxlx +++ b/SSL/src/Catalogs/ПроизводственныеКалендари/Templates/ПФ_MXL_ПроизводственныйКалендарь/Template.mxlx @@ -453,7 +453,7 @@ Picture - 2 + 1 31 20 6 @@ -562,7 +562,7 @@ - + 19 @@ -701,7 +701,7 @@ 41 - 96 + 132 3 diff --git a/SSL/src/Catalogs/ПрофилиГруппДоступа/ManagerModule.bsl b/SSL/src/Catalogs/ПрофилиГруппДоступа/ManagerModule.bsl index 36415c23f..2ec713dc6 100644 --- a/SSL/src/Catalogs/ПрофилиГруппДоступа/ManagerModule.bsl +++ b/SSL/src/Catalogs/ПрофилиГруппДоступа/ManagerModule.bsl @@ -18,7 +18,8 @@ // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: -// Массив Из Строка - +// Массив Из Строка +// Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт НеРедактируемыеРеквизиты = Новый Массив; @@ -84,7 +85,7 @@ УстановитьПривилегированныйРежим(Истина); ПоставляемыеПрофили = ПоставляемыеПрофили(); - + НачатьТранзакцию(); Попытка ЕстьТекущиеИзменения = Ложь; @@ -201,27 +202,13 @@ // Процедура ОбновитьПоставляемыеПрофили(ЕстьИзменения = Неопределено) Экспорт - ПоставляемыеПрофили = УправлениеДоступомСлужебныйПовтИсп.ОписаниеПоставляемыхПрофилей(); + ПоставляемыеПрофили = УправлениеДоступомСлужебныйПовтИсп.ОписаниеПоставляемыхПрофилей(); // См. ОписаниеПоставляемыхПрофилей ОписанияПрофилей = ПоставляемыеПрофили.ОписанияПрофилейМассив; ПараметрыОбновления = ПоставляемыеПрофили.ПараметрыОбновления; ОбновленныеПрофили = Новый Массив; - Запрос = Новый Запрос; - Запрос.УстановитьПараметр("ПустойУникальныйИдентификатор", - ОбщегоНазначенияКлиентСервер.ПустойУникальныйИдентификатор()); - Запрос.Текст = - "ВЫБРАТЬ - | ПрофилиГруппДоступа.ПоставляемыйПрофильИзменен КАК ПоставляемыйПрофильИзменен, - | ПрофилиГруппДоступа.ИдентификаторПоставляемыхДанных КАК ИдентификаторПоставляемыхДанных, - | ПрофилиГруппДоступа.Ссылка КАК Ссылка, - | ЛОЖЬ КАК Найден - |ИЗ - | Справочник.ПрофилиГруппДоступа КАК ПрофилиГруппДоступа - |ГДЕ - | НЕ ПрофилиГруппДоступа.ЭтоГруппа - | И ПрофилиГруппДоступа.ИдентификаторПоставляемыхДанных <> &ПустойУникальныйИдентификатор"; - ТекущиеПрофили = Запрос.Выполнить().Выгрузить(); + ТекущиеПрофили = ТекущиеПрофили(); Для Каждого СвойстваПрофиля Из ОписанияПрофилей Цикл @@ -354,15 +341,12 @@ // Возвращает строку уникального идентификатора // поставляемого и предопределенного профиля Администратор. // -Функция ИдентификаторПрофиляАдминистратор(Строка = Истина) Экспорт +// Возвращаемое значение: +// Строка - строка уникального идентификатора. +// +Функция ИдентификаторПрофиляАдминистратор() Экспорт - Идентификатор = "6c4b0307-43a4-4141-9c35-3dd7e9586d41"; - - Если Строка Тогда - Возврат Идентификатор; - КонецЕсли; - - Возврат Новый УникальныйИдентификатор(Идентификатор); + Возврат "6c4b0307-43a4-4141-9c35-3dd7e9586d41"; КонецФункции @@ -370,13 +354,18 @@ // // Параметры: // Идентификатор - Строка - имя или уникальный идентификатор поставляемого профиля. +// ВызыватьИсключениеЕслиНетВБазеДанных - Булево +// +// Возвращаемое значение: +// СправочникСсылка.ПрофилиГруппДоступа +// Неопределено // Функция ПоставляемыйПрофильПоИдентификатору(Идентификатор, ВызыватьИсключениеЕслиНетВБазеДанных = Ложь) Экспорт УстановитьПривилегированныйРежим(Истина); ПоставляемыеПрофили = УправлениеДоступомСлужебныйПовтИсп.ОписаниеПоставляемыхПрофилей(); - СвойстваПрофиля = ПоставляемыеПрофили.ОписанияПрофилей.Получить(Строка(Идентификатор)); + СвойстваПрофиля = ПоставляемыеПрофили.ОписанияПрофилей.Получить(Строка(Идентификатор)); // См. СвойстваПоставляемогоПрофиля Если СвойстваПрофиля = Неопределено Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( @@ -406,7 +395,7 @@ Если ВызыватьИсключениеЕслиНетВБазеДанных Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Поставляемый профиль с идентификатором ""%1"" - |не найден в информационной базе.'"), + |не существует в программе.'"), Строка(Идентификатор)); КонецЕсли; @@ -417,6 +406,10 @@ // Возвращает строку уникального идентификатора // данных поставляемого профиля. // +// Возвращаемое значение: +// Строка +// Неопределено +// Функция ИдентификаторПоставляемогоПрофиля(Профиль) Экспорт УстановитьПривилегированныйРежим(Истина); @@ -456,7 +449,7 @@ // с описанием в переопределяемом общем модуле). // // Возвращаемое значение: -// Булево - +// Булево // Функция ПоставляемыйПрофильИзменен(Профиль) Экспорт @@ -465,7 +458,7 @@ КонецЕсли; ОписанияПрофилей = УправлениеДоступомСлужебныйПовтИсп.ОписаниеПоставляемыхПрофилей().ОписанияПрофилей; - СвойстваПрофиля = ОписанияПрофилей.Получить(Строка(Профиль.ИдентификаторПоставляемыхДанных)); + СвойстваПрофиля = ОписанияПрофилей.Получить(Строка(Профиль.ИдентификаторПоставляемыхДанных)); // См. СвойстваПоставляемогоПрофиля Если СвойстваПрофиля = Неопределено Тогда Возврат Ложь; @@ -488,8 +481,8 @@ МетаданныеРоли = Метаданные.Роли.Найти(Роль); Если МетаданныеРоли = Неопределено Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'При проверке поставляемого профиля ""%1"" - |роль ""%2"" не найдена в метаданных.'"), + НСтр("ru = 'В поставляемом профиле ""%1"" + |указана несуществующая роль ""%2"".'"), СвойстваПрофиля.Наименование, Роль); КонецЕсли; @@ -537,7 +530,7 @@ // Профиль - СправочникСсылка.ПрофилиГруппДоступа. // // Возвращаемое значение: -// Булево - +// Булево // Функция ЕстьНачальноеЗаполнениеПрофиля(Знач Профиль) Экспорт @@ -559,7 +552,7 @@ // ДанныеФормыСтруктура созданные по объекту. // // Возвращаемое значение: -// Булево - +// Булево // Функция ЗапретИзмененияПрофиля(Знач Профиль) Экспорт @@ -608,7 +601,7 @@ // Если для указанного профиля описание начального заполнения найдено, // содержимое профиля полностью замещается. // -// ОбновитьГруппыДоступа - Булево, если Истина, виды доступа групп доступа профиля будут обновлены. +// ОбновитьГруппыДоступа - Булево - если Истина, виды доступа групп доступа профиля будут обновлены. // Процедура ЗаполнитьПоставляемыйПрофиль(Знач Профиль, Знач ОбновитьГруппыДоступа) Экспорт @@ -636,20 +629,7 @@ // Функция НесовместимыеПрофилиГруппДоступа() Экспорт - Запрос = Новый Запрос; - Запрос.Текст = - "ВЫБРАТЬ - | Профили.Ссылка КАК Ссылка, - | Профили.Назначение.( - | ТипПользователей КАК ТипПользователей - | ) КАК Назначение, - | Профили.Роли.( - | Роль КАК Роль - | ) КАК Роли - |ИЗ - | Справочник.ПрофилиГруппДоступа КАК Профили"; - - Выгрузка = Запрос.Выполнить().Выгрузить(); + Выгрузка = НазначениеИРолиПрофилейГруппаДоступа(); НесовместимыеПрофили = Новый Массив; НедоступныеРолиПоНазначению = Новый Соответствие; @@ -671,14 +651,15 @@ ОписаниеПрофиля.Роли.ВыгрузитьКолонку("Роль"), Ложь); Для Каждого ОписаниеРоли Из ОписаниеРолей Цикл - Если ОписаниеРоли.Значение = Неопределено Тогда + ОбъектМетаданных = ОписаниеРоли.Значение; // ОбъектМетаданных + Если ОбъектМетаданных = Неопределено Тогда // Роль, недоступная до перезапуска, не является проблемой. Продолжить; КонецЕсли; - Если ОписаниеРоли.Значение = Null - Или НедоступныеРоли.Получить(ОписаниеРоли.Значение.Имя) <> Неопределено - Или ВРег(Лев(ОписаниеРоли.Значение.Имя, СтрДлина("Удалить"))) = ВРег("Удалить") Тогда + Если ОбъектМетаданных = Null + Или НедоступныеРоли.Получить(ОбъектМетаданных.Имя) <> Неопределено + Или ВРег(Лев(ОбъектМетаданных.Имя, СтрДлина("Удалить"))) = ВРег("Удалить") Тогда НесовместимыеПрофили.Добавить(ОписаниеПрофиля.Ссылка); Прервать; @@ -690,7 +671,20 @@ КонецФункции -// См. Справочники.ПрофилиГруппДоступа.ПоставляемыеПрофили. +// См. ПоставляемыеПрофили. +// +// Возвращаемое значение: +// ФиксированнаяСтруктура: +// * ОписанияПрофилей - Соответствие: +// ** Ключ - Строка +// ** Значение - см. СвойстваПоставляемогоПрофиля +// * ОписанияПрофилейМассив - Массив из см. СвойстваПоставляемогоПрофиля +// * ПараметрыОбновления - ФиксированнаяСтруктура: +// ** ОбновлятьИзмененныеПрофили - Булево +// ** ЗапретитьИзменениеПрофилей - Булево +// ** ОбновлятьГруппыДоступа - Булево +// ** ОбновлятьГруппыДоступаСУстаревшимиНастройками - Булево +// Функция ОписаниеПоставляемыхПрофилей() Экспорт ПоставляемыеПрофили = СтандартныеПодсистемыСервер.ПараметрРаботыПрограммы( @@ -756,6 +750,10 @@ // Процедуры и функции для поддержки обмена данными в РИБ. // Только для внутреннего использования. +// +// Параметры: +// ЭлементДанных - СправочникОбъект.ПрофилиГруппДоступа +// Процедура ВосстановитьСоставРолейРасширений(ЭлементДанных) Экспорт УдалитьРолиРасширений(ЭлементДанных); @@ -823,6 +821,10 @@ КонецПроцедуры // Только для внутреннего использования. +// +// Параметры: +// ЭлементДанных - СправочникОбъект.ПрофилиГруппДоступа +// Процедура ЗарегистрироватьПрофильИзмененныйПриЗагрузке(ЭлементДанных) Экспорт // Регистрация профилей, для групп доступа которых нужно обновить регистры сведений @@ -963,6 +965,9 @@ КонецПроцедуры +// Возвращаемое значение: +// см. ОписаниеПоставляемыхПрофилей +// Функция ПоставляемыеПрофили() ЗаполненныеПоставляемыеПрофили = ЗаполненныеПоставляемыеПрофили(); @@ -1008,6 +1013,13 @@ ОписаниеПрофиля.Идентификатор); КонецЕсли; + СвойстваПрофиля = Новый Структура; + СвойстваПрофиля.Вставить("Имя", ""); + СвойстваПрофиля.Вставить("Идентификатор", ""); + СвойстваПрофиля.Вставить("Наименование", ""); + СвойстваПрофиля.Вставить("Роли", Новый Массив); + ЗаполнитьЗначенияСвойств(СвойстваПрофиля, ОписаниеПрофиля); + // Назначение профиля. Если ОписаниеПрофиля.Назначение.Количество() = 0 Тогда ОписаниеПрофиля.Назначение.Добавить(Тип("СправочникСсылка.Пользователи")); @@ -1042,10 +1054,10 @@ МассивНазначений.Добавить(Значение); КонецЦикла; КонецЦикла; - ОписаниеПрофиля.Назначение = МассивНазначений; + СвойстваПрофиля.Вставить("Назначение", МассивНазначений); // Проверка ролей. - НазначениеПрофиля = УправлениеДоступомСлужебныйКлиентСервер.НазначениеПрофиля(ОписаниеПрофиля); + НазначениеПрофиля = УправлениеДоступомСлужебныйКлиентСервер.НазначениеПрофиля(СвойстваПрофиля); НедоступныеРоли = ПользователиСлужебныйПовтИсп.НедоступныеРоли(НазначениеПрофиля, Ложь); ПроверенныеРоли = Новый Соответствие; ИндексРоли = ОписаниеПрофиля.Роли.Количество(); @@ -1056,7 +1068,7 @@ Если ВсеРоли.Получить(Роль) = Неопределено Тогда ВызватьИсключение ЗаголовокОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'В описании профиля ""%1 (%2)"" - |роль ""%3"" не найдена в метаданных.'"), + |указана несуществующая роль ""%3"".'"), ОписаниеПрофиля.Имя, ОписаниеПрофиля.Идентификатор, Роль); @@ -1083,24 +1095,24 @@ Если ОбщегоНазначения.РазделениеВключено() Тогда // Заполнение списка недоступных ролей в модели сервиса // для определения необходимости обновления поставляемых профилей. - ОписаниеПрофиля.Вставить("РолиНедоступныеВСервисе", + СвойстваПрофиля.Вставить("РолиНедоступныеВСервисе", РолиПрофиляНедоступныеВСервисе(ОписаниеПрофиля, НазначениеПрофиля)); КонецЕсли; - Если СвойстваПрофилей.Получить(ОписаниеПрофиля.Идентификатор) <> Неопределено Тогда + Если СвойстваПрофилей.Получить(СвойстваПрофиля.Идентификатор) <> Неопределено Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Профиль с идентификатором ""%1"" уже существует.'"), - ОписаниеПрофиля.Идентификатор); + СвойстваПрофиля.Идентификатор); КонецЕсли; - СвойстваПрофилей.Вставить(ОписаниеПрофиля.Идентификатор, ОписаниеПрофиля); - ОписанияПрофилейМассив.Добавить(ОписаниеПрофиля); - Если ЗначениеЗаполнено(ОписаниеПрофиля.Имя) Тогда - Если СвойстваПрофилей.Получить(ОписаниеПрофиля.Имя) <> Неопределено Тогда + СвойстваПрофилей.Вставить(СвойстваПрофиля.Идентификатор, СвойстваПрофиля); + ОписанияПрофилейМассив.Добавить(СвойстваПрофиля); + Если ЗначениеЗаполнено(СвойстваПрофиля.Имя) Тогда + Если СвойстваПрофилей.Получить(СвойстваПрофиля.Имя) <> Неопределено Тогда ВызватьИсключение ЗаголовокОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Профиль с именем ""%1"" уже существует.'"), - ОписаниеПрофиля.Имя); + СвойстваПрофиля.Имя); КонецЕсли; - СвойстваПрофилей.Вставить(ОписаниеПрофиля.Имя, ОписаниеПрофиля); + СвойстваПрофилей.Вставить(СвойстваПрофиля.Имя, СвойстваПрофиля); КонецЕсли; // Преобразование СпискаЗначений к Соответствию для фиксации. ВидыДоступа = Новый Соответствие; @@ -1154,7 +1166,7 @@ КонецЕсли; ВидыДоступа.Вставить(ИмяВидаДоступа, УточнениеВидаДоступа); КонецЦикла; - ОписаниеПрофиля.ВидыДоступа = ВидыДоступа; + СвойстваПрофиля.Вставить("ВидыДоступа", ВидыДоступа); // Удаление повторяющихся значений. ЗначенияДоступа = Новый Массив; @@ -1230,7 +1242,7 @@ КонецЕсли; ТипЗначенияДоступа = ТипЗнч(ПустаяСсылкаЗначенияДоступа); - СвойстваВидаДоступаПоТипу = СвойстваВидовДоступа.ПоТипамЗначений.Получить(ТипЗначенияДоступа); + СвойстваВидаДоступаПоТипу = СвойстваВидовДоступа.ПоТипамЗначений.Получить(ТипЗначенияДоступа); // См. УправлениеДоступомСлужебный.СвойстваВидаДоступа Если СвойстваВидаДоступаПоТипу = Неопределено ИЛИ СвойстваВидаДоступаПоТипу.Имя <> ВидДоступа Тогда @@ -1259,7 +1271,7 @@ КонецЕсли; ЗначенияДоступа.Добавить(Отбор); КонецЦикла; - ОписаниеПрофиля.ЗначенияДоступа = ЗначенияДоступа; + СвойстваПрофиля.Вставить("ЗначенияДоступа", ЗначенияДоступа); КонецЦикла; ПоставляемыеПрофили = Новый Структура; @@ -1271,6 +1283,42 @@ КонецФункции +// Возвращает свойства профиля, указанные в переопределяемом модуле, +// преобразованные в фиксированный формат сохранения в базе данных. +// Подробное описание свойств см. УправлениеДоступом.НовоеОписаниеПрофиляГруппДоступа. +// +// Параметры: +// Идентификатор - Строка - имя или идентификатор поставляемого профиля. +// +// Возвращаемое значение: +// ФиксированнаяСтруктура: +// * Имя - Строка +// * Идентификатор - Строка +// * Наименование - Строка +// * Роли - ФиксированныйМассив из Строка +// * Назначение - ФиксированныйМассив из ОпределяемыйТип.Пользователь +// * ВидыДоступа - ФиксированноеСоответствие: +// * Ключ - Строка +// * Значение - Строка +// * ЗначенияДоступа - ФиксированныйМассив из Структура: +// * ВидДоступа - Строка +// * ЗначениеДоступа - Строка +// +// Неопределено - профиль не существует. +// +Функция СвойстваПоставляемогоПрофиля(Идентификатор) Экспорт + + ПоставляемыеПрофили = УправлениеДоступомСлужебныйПовтИсп.ОписаниеПоставляемыхПрофилей(); + + Возврат ПоставляемыеПрофили.ОписанияПрофилей.Получить(Идентификатор); + +КонецФункции + +// Возвращаемое значение: +// ФиксированноеСоответствие: +// * Ключ - Строка - строковый идентификатор поставляемого профиля +// * Значение - Строка - описание поставляемого профиля +// Функция ПояснениеПоставляемыхПрофилей() Экспорт ОписанияПрофилей = ЗаполненныеПоставляемыеПрофили().ОписанияПрофилей; @@ -1324,8 +1372,7 @@ // Замещает имеющийся или создает новый поставляемый профиль групп доступа по его описанию. // // Параметры: -// СвойстваПрофиля - ФиксированнаяСтруктура - свойства профиля, как в структуре возвращаемой -// функцией НовоеОписаниеПрофиляГруппДоступа общего модуля УправлениеДоступом. +// СвойстваПрофиля - см. СвойстваПоставляемогоПрофиля // // Возвращаемое значение: // Булево - Истина - профиль изменен. @@ -1359,7 +1406,7 @@ КонецЕсли; Если ПрофильСсылка = Неопределено Тогда - // Поставляемый профиль не найден, нужно создать новый. + // Поставляемый профиль не существует, нужно создать новый. ПрофильОбъект = СоздатьЭлемент(); Иначе // Поставляемый профиль связан с предопределенным элементом. @@ -1391,7 +1438,7 @@ Если МетаданныеРоли = Неопределено Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'При обновлении поставляемого профиля ""%1"" - |роль ""%2"" не найдена в метаданных.'"), + |обнаружена несуществующая роль ""%2"".'"), СвойстваПрофиля.Наименование, Роль); КонецЕсли; @@ -1477,6 +1524,62 @@ КонецФункции +// Возвращаемое значение: +// ТаблицаЗначений: +// * ПоставляемыйПрофильИзменен - Булево +// * ИдентификаторПоставляемыхДанных - УникальныйИдентификатор +// * Ссылка - СправочникСсылка.ПрофилиГруппДоступа +// +Функция ТекущиеПрофили() + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("ПустойУникальныйИдентификатор", + ОбщегоНазначенияКлиентСервер.ПустойУникальныйИдентификатор()); + Запрос.Текст = + "ВЫБРАТЬ + | ПрофилиГруппДоступа.ПоставляемыйПрофильИзменен КАК ПоставляемыйПрофильИзменен, + | ПрофилиГруппДоступа.ИдентификаторПоставляемыхДанных КАК ИдентификаторПоставляемыхДанных, + | ПрофилиГруппДоступа.Ссылка КАК Ссылка, + | ЛОЖЬ КАК Найден + |ИЗ + | Справочник.ПрофилиГруппДоступа КАК ПрофилиГруппДоступа + |ГДЕ + | НЕ ПрофилиГруппДоступа.ЭтоГруппа + | И ПрофилиГруппДоступа.ИдентификаторПоставляемыхДанных <> &ПустойУникальныйИдентификатор"; + ТекущиеПрофили = Запрос.Выполнить().Выгрузить(); + + Возврат ТекущиеПрофили; + +КонецФункции + +// Возвращаемое значение: +// ТаблицаЗначений: +// * Ссылка - СправочникСсылка.ПрофилиГруппДоступа +// * Назначение - ТаблицаЗначений: +// ** ТипПользователей - ОпределяемыйТип.Пользователь +// * Роли - ТаблицаЗначений: +// ** Роль - СправочникСсылка.ИдентификаторыОбъектовРасширений +// - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// +Функция НазначениеИРолиПрофилейГруппаДоступа() + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | Профили.Ссылка КАК Ссылка, + | Профили.Назначение.( + | ТипПользователей КАК ТипПользователей + | ) КАК Назначение, + | Профили.Роли.( + | Роль КАК Роль + | ) КАК Роли + |ИЗ + | Справочник.ПрофилиГруппДоступа КАК Профили"; + + Возврат Запрос.Выполнить().Выгрузить(); + +КонецФункции + #КонецОбласти #КонецЕсли diff --git a/SSL/src/Catalogs/ПрофилиГруппДоступа/ObjectModule.bsl b/SSL/src/Catalogs/ПрофилиГруппДоступа/ObjectModule.bsl index 4131a5ca1..177e6945c 100644 --- a/SSL/src/Catalogs/ПрофилиГруппДоступа/ObjectModule.bsl +++ b/SSL/src/Catalogs/ПрофилиГруппДоступа/ObjectModule.bsl @@ -10,8 +10,7 @@ #Область ОписаниеПеременных -Перем СтарыеЗначения; // Значения некоторых реквизитов и табличных частей профиля - // до его изменения для использования в обработчике события ПриЗаписи. +Перем СтарыеЗначения; // см. СтарыеЗначения #КонецОбласти @@ -29,9 +28,8 @@ СтандартныеПодсистемыСервер.ПроверитьДинамическоеОбновлениеВерсииПрограммы(); РегистрыСведений.ПраваРолей.ПроверитьДанныеРегистра(); - - СтарыеЗначения = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Ссылка, - "Ссылка, ПометкаУдаления, Роли, Назначение, ВидыДоступа, ЗначенияДоступа"); + + СтарыеЗначения = СтарыеЗначения(); // Проверка ролей. РолиАдминистратора = Новый Массив; @@ -84,7 +82,7 @@ НачатьТранзакцию(); Попытка - ИзмененныеГруппыДоступа = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"); + ИзмененныеГруппыДоступа = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"); // Массив из СправочникСсылка.ПрофилиГруппДоступа Если ИзмененныеГруппыДоступа.Количество() > 0 Тогда Блокировка = Новый БлокировкаДанных; @@ -412,6 +410,25 @@ КонецПроцедуры +// Значения некоторых реквизитов и табличных частей профиля +// до его изменения для использования в обработчике события ПриЗаписи. +// +// Возвращаемое значение: +// Структура: +// * Ссылка - СправочникСсылка.ПрофилиГруппДоступа +// * ПометкаУдаления - Булево +// * Роли - РезультатЗапроса +// * Назначение - РезультатЗапроса +// * ВидыДоступа - РезультатЗапроса +// * ЗначенияДоступа - РезультатЗапроса +// +Функция СтарыеЗначения() + + Возврат ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Ссылка, + "Ссылка, ПометкаУдаления, Роли, Назначение, ВидыДоступа, ЗначенияДоступа"); + +КонецФункции + #КонецОбласти #Иначе diff --git a/SSL/src/Catalogs/РассылкиОтчетов/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/РассылкиОтчетов/Forms/ФормаЭлемента/Module.bsl index ebadbf44b..7c9813a17 100644 --- a/SSL/src/Catalogs/РассылкиОтчетов/Forms/ФормаЭлемента/Module.bsl +++ b/SSL/src/Catalogs/РассылкиОтчетов/Forms/ФормаЭлемента/Module.bsl @@ -1351,13 +1351,13 @@ НайденныеИдентификаторыОбъектовМетаданных = ТаблицаТиповПолучателей.НайтиСтроки(Новый Структура("ТипПолучателей", ТипПолучателейРассылки)); Если НайденныеИдентификаторыОбъектовМетаданных.Количество() <> 1 Тогда - ПоказатьПредупреждение(, НСтр("ru = 'Тип получателей не найден'")); + ПоказатьПредупреждение(, НСтр("ru = 'Некорректный тип получателей.'")); Возврат; КонецЕсли; МассивТипов = НайденныеИдентификаторыОбъектовМетаданных[0].ОсновнойТип.Типы(); Если МассивТипов.Количество() <> 1 Тогда - ПоказатьПредупреждение(, НСтр("ru = 'Тип получателей не найден'")); + ПоказатьПредупреждение(, НСтр("ru = 'Некорректный тип получателей.'")); Возврат; КонецЕсли; @@ -1492,7 +1492,7 @@ ПолеКД = ОпределитьПолеИзКомпоновщика(ИдентификаторНастройки, ПользовательскиеНастройки.Элементы); КонецЕсли; Если ПолеКД = Неопределено Тогда - ПоказатьПредупреждение(, НСтр("ru = 'Для настройки отчета не найдено описание доступного поля'")); + ПоказатьПредупреждение(, НСтр("ru = 'Для настройки отчета не существует описания доступного поля.'")); Возврат Неопределено; КонецЕсли; @@ -1861,17 +1861,18 @@ // Обработчик закрытия формы ПолучателиРассылки. // // Параметры: -// Результат - Структура - где: -// * Получатели - ТаблицаЗначений - где: +// Результат - Структура: +// * Получатели - ТаблицаЗначений: // * Получатель - СправочникСсылка.ГруппыПользователей, // - СправочникСсылка._ДемоКонтрагенты, // - СправочникСсылка._ДемоПартнеры, -// - СправочникСсылка.Пользователи - -// * Исключен - Булево - -// * Адрес - Строка - -// * ИндексКартинки - Число - -// * ВидПочтовогоАдресаПолучателей - СправочникСсылка.ВидыКонтактнойИнформации - -// Параметр - Структура, Неопределено - +// - СправочникСсылка.Пользователи +// * Исключен - Булево +// * Адрес - Строка +// * ИндексКартинки - Число +// * ВидПочтовогоАдресаПолучателей - СправочникСсылка.ВидыКонтактнойИнформации +// Параметр - Структура +// - Неопределено // &НаКлиенте Процедура ПолучателиРассылкиНажатиеЗавершение(Результат, Параметр) Экспорт @@ -2025,8 +2026,8 @@ // Обработчик закрытия диалога форматной строки. // // Параметры: -// СтрокаРезультат - Строка - -// Переменные - Структура - +// СтрокаРезультат - Строка +// Переменные - Структура // &НаКлиенте Процедура ДобавитьИзменитьШаблонДатыРассылкиЗавершение(СтрокаРезультат, Переменные) Экспорт @@ -2653,10 +2654,10 @@ // Формирует представление расписания регламентного задания. // // Параметры: -// Расписание - РасписаниеРегламентногоЗадания - Расписание. +// Расписание - РасписаниеРегламентногоЗадания - расписание. // // Возвращаемое значение: -// Строка - Представление расписания. +// Строка - представление расписания. // &НаКлиентеНаСервереБезКонтекста Функция ПредставлениеРасписания(Расписание) @@ -3010,14 +3011,14 @@ // Выполняет проверку выбранного отчета. // // Параметры: -// СтруктураВыбора - Структура - где: -// * Выбрано - Структура - Строки, выбранные пользователем. -// * Успешно - Структура - Строки, инициализированные и добавленные в список. -// * СОшибками - Структура - Строки, не добавленные в список из-за ошибок, где: -// ** МассивСтрок - Массив - Массив идентификаторов строк. -// ** Количество - Число - Количество строк. -// ** ПредставлениеОтчетов - Строка - Представление всех отчетов указанных строк. -// ** Текст - Строка - Текст возникших ошибок. +// СтруктураВыбора - Структура: +// * Выбрано - Структура - строки, выбранные пользователем. +// * Успешно - Структура - строки, инициализированные и добавленные в список. +// * СОшибками - Структура - строки, не добавленные в список из-за ошибок, где: +// ** МассивСтрок - Массив - массив идентификаторов строк. +// ** Количество - Число - количество строк. +// ** ПредставлениеОтчетов - Строка - представление всех отчетов указанных строк. +// ** Текст - Строка - текст возникших ошибок. // &НаСервере Процедура ПроверитьДобавленныеСтрокиОтчетов(СтруктураВыбора) diff --git a/SSL/src/Catalogs/РассылкиОтчетов/ManagerModule.bsl b/SSL/src/Catalogs/РассылкиОтчетов/ManagerModule.bsl index aa202ab1d..15ff5deee 100644 --- a/SSL/src/Catalogs/РассылкиОтчетов/ManagerModule.bsl +++ b/SSL/src/Catalogs/РассылкиОтчетов/ManagerModule.bsl @@ -18,7 +18,8 @@ // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: -// Массив Из Строка - +// Массив Из Строка +// Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт Результат = Новый Массив; @@ -87,7 +88,7 @@ // Параметры: // Объект - СправочникОбъект.РолиИсполнителей - заполняемый объект. // Данные - СтрокаТаблицыЗначений - данные заполнения. -// ДополнительныеПараметры - Структура - Дополнительные параметры. +// ДополнительныеПараметры - Структура // Процедура ПриНачальномЗаполненииЭлемента(Объект, Данные, ДополнительныеПараметры) Экспорт diff --git a/SSL/src/Catalogs/РассылкиОтчетов/РассылкиОтчетов.mdo b/SSL/src/Catalogs/РассылкиОтчетов/РассылкиОтчетов.mdo index 7a6bd541f..451d2a564 100644 --- a/SSL/src/Catalogs/РассылкиОтчетов/РассылкиОтчетов.mdo +++ b/SSL/src/Catalogs/РассылкиОтчетов/РассылкиОтчетов.mdo @@ -344,25 +344,6 @@ Use Use - - ВключатьДатуВИмяФайла - - ru - Включать дату в имя файла - - - Boolean - - - ru - Признак добавления к имени файла отчета даты рассылки - - - - - Use - Use - ВыполнятьПоРасписанию @@ -840,6 +821,25 @@ Use + + ВключатьДатуВИмяФайла + + ru + Включать дату в имя файла + + + Boolean + + + ru + Признак добавления к имени файла отчета даты рассылки + + + + + Use + Use + diff --git a/SSL/src/Catalogs/РолиИсполнителей/ManagerModule.bsl b/SSL/src/Catalogs/РолиИсполнителей/ManagerModule.bsl index cd08e2d75..3aa5e5630 100644 --- a/SSL/src/Catalogs/РолиИсполнителей/ManagerModule.bsl +++ b/SSL/src/Catalogs/РолиИсполнителей/ManagerModule.bsl @@ -18,7 +18,8 @@ // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: -// Массив Из Строка - +// Массив Из Строка +// Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт Результат = Новый Массив; @@ -145,7 +146,7 @@ Элемент.ИспользуетсяСОбъектамиАдресации = Истина; Элемент.ВнешняяРоль = Ложь; Элемент.Код = "000000001"; - Элемент.КраткоеПредставление = НСтр("ru = '000000001'"); + Элемент.КраткоеПредставление = НСтр("ru = '000000001'", ОбщегоНазначения.КодОсновногоЯзыка()); Элемент.ТипыОсновногоОбъектаАдресации = ПланыВидовХарактеристик.ОбъектыАдресацииЗадач.ВсеОбъектыАдресации; Элемент.Назначение = ТабличныеЧасти.Назначение.Скопировать(); @@ -161,7 +162,7 @@ // Параметры: // Объект - СправочникОбъект.РолиИсполнителей - заполняемый объект. // Данные - СтрокаТаблицыЗначений - данные заполнения. -// ДополнительныеПараметры - Структура - Дополнительные параметры. +// ДополнительныеПараметры - Структура // Процедура ПриНачальномЗаполненииЭлемента(Объект, Данные, ДополнительныеПараметры) Экспорт diff --git a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ВыборСертификатаДляПодписанияИлиРасшифровки/Form.form b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ВыборСертификатаДляПодписанияИлиРасшифровки/Form.form index 0631132fc..5ce594ad5 100644 --- a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ВыборСертификатаДляПодписанияИлиРасшифровки/Form.form +++ b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ВыборСертификатаДляПодписанияИлиРасшифровки/Form.form @@ -1449,21 +1449,34 @@ Normal - - ПарольПояснение - 741 + + ЗапомнитьПароль + 820 <key>ru</key> - <value>(для проверки)</value> + <value>Запомнить на время сеанса</value> true true true + + ЗапомнитьПароль + + Right + + ru + Запомнить пароль сертификата до закрытия программы. При снятии флажка пароль стирается из памяти, если запоминался ранее. + + Button + + OnChange + ЗапомнитьПарольПриИзменении + - ПарольПояснениеРасширеннаяПодсказка - 743 + ЗапомнитьПарольРасширеннаяПодсказка + 822 Label true true @@ -1472,18 +1485,16 @@ - ПарольПояснениеКонтекстноеМеню - 742 + ЗапомнитьПарольКонтекстноеМеню + 821 true - Label - true - - Style.ПоясняющийТекст - - - Left - + CheckBoxField + Enter + true + Left + true + true true @@ -1523,78 +1534,6 @@ Страницы 816 - - СтраницаЗапоминаниеПароля - 818 - - ЗапомнитьПароль - 820 - true - true - - true - - - ЗапомнитьПароль - - Right - - ru - Запомнить пароль сертификата до закрытия программы. При снятии флажка пароль стирается из памяти, если запоминался ранее. - - Button - - OnChange - ЗапомнитьПарольПриИзменении - - - ЗапомнитьПарольРасширеннаяПодсказка - 822 - Label - true - true - - Left - - - - ЗапомнитьПарольКонтекстноеМеню - 821 - true - - CheckBoxField - Enter - true - Left - true - - - true - true - - true - - - <key>ru</key> - <value>Страница запоминание пароля</value> - - - СтраницаЗапоминаниеПароляРасширеннаяПодсказка - 819 - Label - true - true - - Left - - - Page - - Vertical - auto - false - - СтраницаПояснениеУсиленногоПароля 823 diff --git a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ВыборСертификатаДляПодписанияИлиРасшифровки/Module.bsl b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ВыборСертификатаДляПодписанияИлиРасшифровки/Module.bsl index db9140137..ff63c5338 100644 --- a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ВыборСертификатаДляПодписанияИлиРасшифровки/Module.bsl +++ b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ВыборСертификатаДляПодписанияИлиРасшифровки/Module.bsl @@ -22,7 +22,7 @@ Элементы.СертификатУсиленнаяЗащитаЗакрытогоКлюча.Имя, Элементы.ПояснениеУсиленногоПароля.Имя); - СертификатПараметрыРеквизитов = Новый Структура; + СертификатПараметрыРеквизитов = СертификатПараметрыРеквизитов(); Если Параметры.Свойство("Организация") Тогда СертификатПараметрыРеквизитов.Вставить("Организация", Параметры.Организация); КонецЕсли; @@ -93,6 +93,16 @@ КонецПроцедуры + +// Возвращаемое значение: +// Структура: +// * Наименование - Строка +// +&НаКлиентеНаСервереБезКонтекста +Функция СертификатПараметрыРеквизитов() + Возврат Новый Структура; +КонецФункции + &НаКлиенте Процедура ПриОткрытии(Отказ) @@ -637,6 +647,11 @@ КонецПроцедуры // Продолжение процедуры ПерейтиКВыборуТекущегоСертификата. +// +// Параметры: +// РезультатПоиска - СертификатКриптографии +// Контекст +// &НаКлиенте Процедура ПерейтиКВыборуТекущегоСертификатаПослеПоискаСертификата(РезультатПоиска, Контекст) Экспорт @@ -653,12 +668,20 @@ Контекст.Вставить("СертификатКриптографии", РезультатПоиска); - Контекст.СертификатКриптографии.НачатьВыгрузку(Новый ОписаниеОповещения( + РезультатПоиска.НачатьВыгрузку(Новый ОписаниеОповещения( "ПерейтиКВыборуТекущегоСертификатаПослеВыгрузкиСертификата", ЭтотОбъект, Контекст)); КонецПроцедуры // Продолжение процедуры ПерейтиКВыборуТекущегоСертификата. +// +// Параметры: +// РезультатПоиска - Структура: +// * Выполнено - Булево +// * ОписаниеОшибки - Структура: +// ** Описание - Строка +// Контекст - Структура +// &НаКлиенте Процедура ПерейтиКВыборуТекущегоСертификатаПослеПоискаСертификатаВОблачномСервисе(РезультатПоиска, Контекст) Экспорт @@ -708,7 +731,8 @@ Процедура ПерейтиКВыборуТекущегоСертификатаПослеЗаполненияСвойствСертификата(Контекст) Если СертификатПараметрыРеквизитов.Свойство("Наименование") Тогда - Если СертификатПараметрыРеквизитов.Наименование.ТолькоПросмотр Тогда + ПараметрыРеквизитов = СертификатПараметрыРеквизитов; // см. СертификатПараметрыРеквизитов + Если ПараметрыРеквизитов.Наименование.ТолькоПросмотр Тогда Элементы.СертификатНаименование.ТолькоПросмотр = Истина; КонецЕсли; КонецЕсли; diff --git a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ДобавлениеСертификатаДляШифрования/Module.bsl b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ДобавлениеСертификатаДляШифрования/Module.bsl index 3aef240a6..b01b2f53a 100644 --- a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ДобавлениеСертификатаДляШифрования/Module.bsl +++ b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ДобавлениеСертификатаДляШифрования/Module.bsl @@ -11,7 +11,7 @@ &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) - СертификатПараметрыРеквизитов = Новый Структура; + СертификатПараметрыРеквизитов = СертификатПараметрыРеквизитов(); Если Параметры.Свойство("Организация") Тогда СертификатПараметрыРеквизитов.Вставить("Организация", Параметры.Организация); КонецЕсли; @@ -55,6 +55,17 @@ КонецПроцедуры + +// Возвращаемое значение: +// Структура: +// * Организация +// +&НаКлиентеНаСервереБезКонтекста +Функция СертификатПараметрыРеквизитов() + ПараметрыРеквизитов = Новый Структура; + Возврат ПараметрыРеквизитов; +КонецФункции + &НаКлиенте Процедура ПриОткрытии(Отказ) @@ -280,6 +291,13 @@ КонецПроцедуры // Продолжение процедуры Далее. +// +// Параметры: +// Результат - Структура: +// * ОписаниеОшибки - Структура: +// ** Описание - Строка +// Контекст - Структура +// &НаКлиенте Процедура ДалееПослеПоискаСертификатаВОблачномСервисе(Результат, Контекст) Экспорт @@ -362,22 +380,24 @@ ЭлектроннаяПодписьСлужебныйКлиентСервер.ЗаполнитьОписаниеДанныхСертификата( Форма.СертификатОписаниеДанных, СвойстваСертификата); + СертификатПараметрыРеквизитов = Форма.СертификатПараметрыРеквизитов; // см. ЭлектроннаяПодписьСлужебныйКлиентСервер.СертификатПараметрыРеквизитов СохраненныеСвойства = СохраненныеСвойстваСертификата( Форма.СертификатОтпечаток, Форма.СертификатАдрес, - Форма.СертификатПараметрыРеквизитов); + СертификатПараметрыРеквизитов); - Если Форма.СертификатПараметрыРеквизитов.Свойство("Наименование") Тогда - Если Форма.СертификатПараметрыРеквизитов.Наименование.ТолькоПросмотр Тогда + Если СертификатПараметрыРеквизитов.Свойство("Наименование") Тогда + НаименованиеСертификата = СертификатПараметрыРеквизитов.Наименование; + Если НаименованиеСертификата.ТолькоПросмотр Тогда Элементы.СертификатНаименование.ТолькоПросмотр = Истина; КонецЕсли; КонецЕсли; Если Форма.ОпределяемыйТипОрганизацияНастроен Тогда - Если Форма.СертификатПараметрыРеквизитов.Свойство("Организация") Тогда - Если Не Форма.СертификатПараметрыРеквизитов.Организация.Видимость Тогда + Если СертификатПараметрыРеквизитов.Свойство("Организация") Тогда + Если Не СертификатПараметрыРеквизитов.Организация.Видимость Тогда Элементы.СертификатОрганизация.Видимость = Ложь; - ИначеЕсли Форма.СертификатПараметрыРеквизитов.Организация.ТолькоПросмотр Тогда + ИначеЕсли СертификатПараметрыРеквизитов.Организация.ТолькоПросмотр Тогда Элементы.СертификатОрганизация.ТолькоПросмотр = Истина; КонецЕсли; КонецЕсли; diff --git a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ПодписаниеДанных/Form.form b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ПодписаниеДанных/Form.form index 0ae56a503..34b740d37 100644 --- a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ПодписаниеДанных/Form.form +++ b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ПодписаниеДанных/Form.form @@ -162,113 +162,27 @@ DontUse - - Пароль - 316 - true - true - - true - - - Пароль - - - OnChange - ПарольПриИзменении - - - ПарольРасширеннаяПодсказка - 318 - Label - true - true - - Left - - - - ПарольКонтекстноеМеню - 317 - true - - InputField - Enter - true - Left - true - - true - true - false - true - true - true - true - Normal - - - Страницы - 416 - - СтраницаЗапоминаниеПароля - 418 - - ЗапомнитьПароль - 324 - true - true - - true - - - ЗапомнитьПароль - - Right - - ru - Запомнить пароль сертификата до закрытия программы. При снятии флажка пароль стирается из памяти, если запоминался ранее. - - Button - - OnChange - ЗапомнитьПарольПриИзменении - - - ЗапомнитьПарольРасширеннаяПодсказка - 326 - Label - true - true - - Left - - - - ЗапомнитьПарольКонтекстноеМеню - 325 - true - - CheckBoxField - Enter - true - Left - true - - + ГруппаПароль + 454 + + Пароль + 316 true true true - - <key>ru</key> - <value>Страница запоминание пароля</value> - + + Пароль + + + OnChange + ПарольПриИзменении + - СтраницаЗапоминаниеПароляРасширеннаяПодсказка - 419 + ПарольРасширеннаяПодсказка + 318 Label true true @@ -276,13 +190,106 @@ Left - Page - - Vertical - auto - false + + ПарольКонтекстноеМеню + 317 + true + + InputField + Enter + true + Left + true + + true + true + false + true + true + true + true + Normal + + ЗапомнитьПароль + 324 + + <key>ru</key> + <value>Запомнить на время сеанса</value> + + true + true + + true + + + ЗапомнитьПароль + + Right + + ru + Запомнить пароль сертификата до закрытия программы. При снятии флажка пароль стирается из памяти, если запоминался ранее. + + Button + + OnChange + ЗапомнитьПарольПриИзменении + + + ЗапомнитьПарольРасширеннаяПодсказка + 326 + Label + true + true + + Left + + + + ЗапомнитьПарольКонтекстноеМеню + 325 + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Пароль</value> + + + ГруппаПарольРасширеннаяПодсказка + 455 + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + Auto + true + true + Auto + Auto + + + + Страницы + 416 СтраницаПояснениеУсиленногоПароля 438 diff --git a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ПроверкаСертификата/Form.form b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ПроверкаСертификата/Form.form index dac516670..e7b831a97 100644 --- a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ПроверкаСертификата/Form.form +++ b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ПроверкаСертификата/Form.form @@ -535,9 +535,7 @@ 48 <key>ru</key> - <value>Показывает установлен ли сертификат в личный список (личное хранилище) -на компьютере. Для подписания и расшифровки требуется, чтобы сертификат -был установлен в личный список на компьютере и был связан с закрытым ключом.</value> + <value>Показывает установлен ли сертификат в личный список (личное хранилище) на компьютере. Для подписания и расшифровки требуется, чтобы сертификат был установлен в личный список на компьютере и был связан с закрытым ключом.</value> Label true @@ -612,7 +610,7 @@ 179 <key>ru</key> - <value>Наличие сертификата (клиент)</value> + <value>Наличие сертификата (клиент)</value> true true @@ -970,8 +968,7 @@ 59 <key>ru</key> - <value>Показывает результат проверки данных сертификата -с помощью программы электронной подписи и шифрования. + <value>Показывает результат проверки данных сертификата с помощью программы электронной подписи и шифрования. Данные сертификата, загруженные из файла сертификата или другим путем, могут быть некорректны по разным причинам, но самые частые следующие: @@ -1410,9 +1407,7 @@ <id>23</id> <title> <key>ru</key> - <value>Показывает имеется ли на компьютере программа, -указанная в сертификате для закрытого ключа, -которая позволяет подписывать и расшифровывать данные.</value> + <value>Показывает имеется ли на компьютере программа, указанная в сертификате для закрытого ключа, которая позволяет подписывать и расшифровывать данные.</value> Label true @@ -1877,9 +1872,7 @@ 95 <key>ru</key> - <value>Показывает возможность подписания данных закрытым ключом сертификата -с помощью программы электронной подписи и шифрования. -Требуется пароль.</value> + <value>Показывает возможность подписания данных закрытым ключом сертификата с помощью программы электронной подписи и шифрования. Требуется пароль.</value> Label true @@ -2312,8 +2305,7 @@ 106 <key>ru</key> - <value>Показывает возможность проверки имеющейся подписи открытым ключом сертификата -с помощью программы электронной подписи и шифрования. + <value>Показывает возможность проверки имеющейся подписи открытым ключом сертификата с помощью программы электронной подписи и шифрования. </value> Label @@ -2389,7 +2381,7 @@ 267 <key>ru</key> - <value>Проверка подписи (клиент)</value> + <value>Проверка подписи (клиент)</value> true true @@ -2747,8 +2739,7 @@ 70 <key>ru</key> - <value>Показывает возможность шифрования данных открытым ключом сертификата -с помощью программы электронной подписи и шифрования. + <value>Показывает возможность шифрования данных открытым ключом сертификата с помощью программы электронной подписи и шифрования. </value> Label @@ -3182,9 +3173,7 @@ 81 <key>ru</key> - <value>Показывает возможность расшифровки данных закрытым ключом сертификата -с помощью программы электронной подписи и шифрования. -Требуется пароль.</value> + <value>Показывает возможность расшифровки данных закрытым ключом сертификата с помощью программы электронной подписи и шифрования. Требуется пароль.</value> Label true @@ -4559,6 +4548,19 @@ true + + ПроверкаВыполнена + 20 + + Boolean + + + true + + + true + + Проверить diff --git a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ПроверкаСертификата/Module.bsl b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ПроверкаСертификата/Module.bsl index 525e01ecc..55e3d8989 100644 --- a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ПроверкаСертификата/Module.bsl +++ b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ПроверкаСертификата/Module.bsl @@ -41,6 +41,7 @@ Параметры.ОбъединятьРезультаты, "НеОбъединять"); Если Параметры.РезультатПроверки <> Неопределено Тогда + ПроверкаВыполнена = Истина; ПроверкиНаКлиенте = Параметры.РезультатПроверки.ПроверкиНаКлиенте; ПроверкиНаСервере = Параметры.РезультатПроверки.ПроверкиНаСервере; КонецЕсли; @@ -111,8 +112,10 @@ Элементы[Проверка + "РешениеКлиент"].Видимость = Ложь; Элементы[Проверка + "РешениеСервер"].Видимость = Ложь; - Элементы[Проверка + "Надпись"].Заголовок = - СтандартныйЗаголовокЭлемента(Проверка + "Надпись"); + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, + Проверка + "Надпись", + "Заголовок", + СтандартныйЗаголовокЭлемента(Проверка + "Надпись")); Если ПроверкиНаКлиенте <> Неопределено Тогда ВывестиРезультатПроверки(Проверка); @@ -188,15 +191,15 @@ &НаКлиенте Процедура Подключаемый_НадписьНажатие(Элемент) + ИмяОшибки = Лев(Элемент.Имя, СтрДлина(Элемент.Имя) - СтрДлина("Надпись")) + "Ошибка"; + ПараметрыПредупреждения = Новый Структура; ПараметрыПредупреждения.Вставить("ЗаголовокПредупреждения", СтандартныйЗаголовокЭлемента(Элемент.Имя)); ПараметрыПредупреждения.Вставить("ТекстОшибкиКлиент", - ПроверкиНаКлиенте[Лев(Элемент.Имя, СтрДлина(Элемент.Имя) - 7) + "Ошибка"]); - - ТекстОшибкиСервер = ?(Не ОперацииНаСервере, "", - ПроверкиНаСервере[Лев(Элемент.Имя, СтрДлина(Элемент.Имя) - 7) + "Ошибка"]); - ПараметрыПредупреждения.Вставить("ТекстОшибкиСервер", ТекстОшибкиСервер); + ПроверкиНаКлиенте[ИмяОшибки]); + ПараметрыПредупреждения.Вставить("ТекстОшибкиСервер", + ?(Не ОперацииНаСервере, "", ПроверкиНаСервере[ИмяОшибки])); ОткрытьФорму("ОбщаяФорма.РасширенноеПредставлениеОшибки", ПараметрыПредупреждения, ЭтотОбъект); @@ -246,6 +249,13 @@ Процедура ИнформацияДляПоддержкиОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылка, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; + Если Не ПроверкаВыполнена Тогда + + ПоказатьПредупреждение(, + НСтр("ru = 'Для сбора технической информации о возникшей проблеме необходимо выполнить проверку сертификата.'")); + Возврат; + + КонецЕсли; СоставПроверок = СтандартныеПроверки(); Для Каждого Проверка Из ДополнительныеПроверки Цикл @@ -469,8 +479,9 @@ &НаКлиенте Процедура ПроверитьНаСторонеКлиента(Оповещение) - Контекст = Новый Структура("Оповещение", Оповещение); + ПроверкаВыполнена = Истина; + Контекст = Новый Структура("Оповещение", Оповещение); Если СтандартныеПроверки Тогда ЭлектроннаяПодписьКлиент.УстановитьРасширение(Ложь, Новый ОписаниеОповещения( "ПроверитьНаСторонеКлиентаПослеПодключенияРасширенияРаботыСКриптографией", ЭтотОбъект, Контекст), @@ -542,8 +553,6 @@ Процедура ПроверитьНаСторонеКлиентаПослеИнициализацииСертификата(СертификатКриптографии, Контекст) Экспорт Контекст.Вставить("СертификатКриптографии", СертификатКриптографии); - - // Законный сертификат ПроверитьЗаконныйСертификатНаКлиенте(Контекст); // Наличие сертификата в личном списке. @@ -565,7 +574,7 @@ Процедура ПроверитьЗаконныйСертификатНаКлиенте(Контекст) Если Не Элементы.ГруппаЗаконныйСертификат.Видимость - Или Контекст.СертификатКриптографии.Субъект.Свойство("SN") Тогда + Или Контекст.СертификатКриптографии.Субъект.Свойство("SN") Тогда ОписаниеОшибки = ""; Иначе @@ -600,6 +609,12 @@ КонецПроцедуры // Продолжение процедуры ПроверитьНаСторонеКлиента. +// +// Параметры: +// Результат - Структура: +// * ОписаниеОшибки - Структура: +// ** Описание - Строка +// &НаКлиенте Процедура ПроверитьНаСторонеКлиентаПослеПоискаСертификатаВМоделиСервиса(Результат, Контекст) Экспорт @@ -673,6 +688,13 @@ КонецПроцедуры // Продолжение процедуры ПроверитьНаСторонеКлиента. +// +// Параметры: +// Результат - Структура: +// * ИнформацияОбОшибке - Структура: +// ** Описание - Строка +// Контекст - Структура +// &НаКлиенте Процедура ПроверитьНаСторонеКлиентаПослеПроверкиСертификатаВМоделиСервиса(Результат, Контекст) Экспорт @@ -803,6 +825,13 @@ КонецПроцедуры // Продолжение процедуры ПроверитьНаСторонеКлиента. +// +// Параметры: +// ДанныеПодписи - Структура: +// * ИнформацияОбОшибке - Структура: +// ** Описание - Строка +// Контекст - Структура +// &НаКлиенте Процедура ПроверитьНаСторонеКлиентаПослеПодписанияВМоделиСервиса(ДанныеПодписи, Контекст) Экспорт @@ -864,6 +893,13 @@ КонецПроцедуры // Продолжение процедуры ПроверитьНаСторонеКлиента. +// +// Параметры: +// Результат - Структура: +// * ИнформацияОбОшибке - Структура: +// ** Описание - Строка +// Контекст - Структура +// &НаКлиенте Процедура ПроверитьНаСторонеКлиентаПослеПроверкиПодписиВМоделиСервиса(Результат, Контекст) Экспорт @@ -918,6 +954,13 @@ КонецПроцедуры // Продолжение процедуры ПроверитьНаСторонеКлиента. +// +// Параметры: +// Результат - Структура: +// * ИнформацияОбОшибке - Структура: +// ** Описание - Строка +// Контекст - Структура +// &НаКлиенте Процедура ПроверитьНаСторонеКлиентаПослеШифрованияВМоделиСервиса(Результат, Контекст) Экспорт @@ -971,6 +1014,13 @@ КонецПроцедуры // Продолжение процедуры ПроверитьНаСторонеКлиента. +// +// Параметры: +// Результат - Структура: +// * ИнформацияОбОшибке - Структура: +// ** Описание - Строка +// Контекст - Структура +// &НаКлиенте Процедура ПроверитьНаСторонеКлиентаПослеРасшифровкиВМоделиСервиса(Результат, Контекст) Экспорт @@ -1064,18 +1114,17 @@ &НаСервере Процедура ПроверитьНаСторонеСервера(Знач ЗначениеПароля) + ПроверкаВыполнена = Истина; + ДанныеСертификата = ПолучитьИзВременногоХранилища(АдресСертификата); АлгоритмПодписи = ЭлектроннаяПодписьСлужебныйКлиентСервер.АлгоритмПодписиСертификата(ДанныеСертификата); Попытка СертификатКриптографии = Новый СертификатКриптографии(ДанныеСертификата); Исключение - УстановитьЭлемент(ЭтотОбъект, ИмяПервойПроверки, Истина, КраткоеПредставлениеОшибки(ИнформацияОбОшибке()), Истина, ОбъединятьРезультаты); - Возврат; - КонецПопытки; // Законный сертификат @@ -1230,6 +1279,7 @@ КонецПроцедуры + &НаСервере Процедура ПроверитьНаСторонеСервераДополнительныеПроверки(ЗначениеПароля, МенеджерКриптографии = Неопределено) @@ -1239,6 +1289,7 @@ ОписаниеОшибки = ""; ЭтоПредупреждение = Ложь; Попытка + ПараметрыВыполнения = Новый Структура; ПараметрыВыполнения.Вставить("Сертификат", Сертификат); ПараметрыВыполнения.Вставить("Проверка", ЭлементСписка.Имя); @@ -1285,12 +1336,12 @@ Суффикс = ?(НаСервере, "Сервер", "Клиент"); ГруппаРешение = ГруппаФормыБезОтображения( - ИмяПроверки + "Решение" + Суффикс, Родитель); + ИмяПроверки + ?(НаСервере, "РешениеСервер", "РешениеКлиент"), Родитель); - ДобавитьКартинку(ИмяПроверки + "Решение" + Суффикс + "Картинка", - ГруппаРешение, БиблиотекаКартинок["Компьютер" + Суффикс]); + ДобавитьКартинку(ИмяПроверки + ?(НаСервере, "РешениеСерверКартинка", "РешениеКлиентКартинка"), + ГруппаРешение, БиблиотекаКартинок[?(НаСервере, "КомпьютерСервер", "КомпьютерКлиент")]); - Надпись = Элементы.Добавить(ИмяПроверки + "Решение" + Суффикс + "Надпись", + Надпись = Элементы.Добавить(ИмяПроверки + ?(НаСервере, "РешениеСерверНадпись", "РешениеКлиентНадпись"), Тип("ДекорацияФормы"), ГруппаРешение); Надпись.ЦветТекста = ЦветаСтиля.ПоясняющийТекст; @@ -1356,18 +1407,18 @@ Процедура УстановитьЭлемент(Форма, НачалоЭлемента, НаСервере, ОписаниеОшибки = Неопределено, ЭтоОшибка = Ложь, ОбъединятьРезультаты = "НеОбъединять") - ЭлементНадпись = Форма.Элементы[НачалоЭлемента + "Надпись"]; + ЭлементНадпись = Форма.Элементы[НачалоЭлемента + "Надпись"]; // Label Если ОбъединятьРезультаты = "ОбъединятьПоИ" Или ОбъединятьРезультаты = "ОбъединятьПоИли" Тогда - ЭлементКартинка = Форма.Элементы[НачалоЭлемента + "НаКлиентеКартинка"]; + ЭлементКартинка = Форма.Элементы[НачалоЭлемента + "НаКлиентеКартинка"]; // ДекорацияФормы Иначе ЭлементКартинка = Форма.Элементы[НачалоЭлемента - + ?(НаСервере, "НаСервере", "НаКлиенте") + "Картинка"]; + + ?(НаСервере, "НаСервереКартинка", "НаКлиентеКартинка")]; // ДекорацияФормы КонецЕсли; - - Проверки = Форма["Проверки" + ?(НаСервере, "НаСервере", "НаКлиенте")]; - ПроверкиВторогоКонтекста = Форма["Проверки" + ?(НаСервере, "НаКлиенте", "НаСервере")]; + + Проверки = Форма[?(НаСервере, "ПроверкиНаСервере", "ПроверкиНаКлиенте")]; + ПроверкиВторогоКонтекста = Форма[?(НаСервере, "ПроверкиНаКлиенте", "ПроверкиНаСервере")]; ЗначениеПроверкиВторогоКонтекста = Неопределено; Если ТипЗнч(ПроверкиВторогоКонтекста) = Тип("Структура") @@ -1377,7 +1428,6 @@ КонецЕсли; Если ЗначениеЗаполнено(ОписаниеОшибки) Тогда - ЗначениеПроверки = Ложь; РезультатПроверки = ЗначениеПроверки; Если ОбъединятьРезультаты = "ОбъединятьПоИли" @@ -1387,7 +1437,6 @@ КонецЕсли; Если Не РезультатПроверки Тогда - ЭлементКартинка.Картинка = ?(ЭтоОшибка, БиблиотекаКартинок.ПроверкаСертификатаОшибка, БиблиотекаКартинок.ПроверкаСертификатаПредупреждение); @@ -1399,18 +1448,17 @@ ОписаниеИзвестнойОшибки = ОшибкаПоКлассификатору(ОписаниеОшибки); ЭтоИзвестнаяОшибка = ОписаниеИзвестнойОшибки <> Неопределено; - ИмяГруппыРешение = НачалоЭлемента + "Решение" + ?(НаСервере, "Сервер", "Клиент"); + ИмяГруппыРешение = НачалоЭлемента + ?(НаСервере, "РешениеСервер", "РешениеКлиент"); Форма.Элементы[ИмяГруппыРешение].Видимость = ЭтоИзвестнаяОшибка; Если ЭтоИзвестнаяОшибка Тогда - Форма.Элементы[ИмяГруппыРешение + "Надпись"].Заголовок = ОписаниеИзвестнойОшибки.Решение; + ИмяГруппыРешениеНадпись = НачалоЭлемента + ?(НаСервере, "РешениеСерверНадпись", "РешениеКлиентНадпись"); + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Форма.Элементы, + ИмяГруппыРешениеНадпись, "Заголовок", ОписаниеИзвестнойОшибки.Решение); КонецЕсли; - КонецЕсли; - Иначе - ЭлементРешение = Форма.Элементы[НачалоЭлемента - + "Решение" + ?(НаСервере, "Сервер", "Клиент")]; + + ?(НаСервере, "РешениеСервер", "РешениеКлиент")]; ЗначениеПроверки = ?(ОписаниеОшибки = Неопределено, Неопределено, Истина); Если (ОбъединятьРезультаты = "ОбъединятьПоИ" Или ОбъединятьРезультаты = "ОбъединятьПоИли") Тогда @@ -1423,7 +1471,8 @@ ЭлементКартинка.Подсказка = НСтр("ru = 'Проверка не выполнялась.'"); ЭлементНадпись.Гиперссылка = Ложь; ЭлементНадпись.Заголовок = ЗаголовокЭлемента( - Форма.ДополнительныеПроверки, ЭлементНадпись.Имя); + Форма.ДополнительныеПроверки, + ЭлементНадпись.Имя); ИначеЕсли ЗначениеПроверки = Неопределено И ЗначениеПроверкиВторогоКонтекста <> Неопределено Тогда @@ -1431,7 +1480,6 @@ Проверки.Вставить(НачалоЭлемента, ЗначениеПроверки); Проверки.Вставить(НачалоЭлемента + "Ошибка", ?(ОписаниеОшибки = Неопределено, "", ОписаниеОшибки)); - Возврат; ИначеЕсли ЗначениеПроверки <> Неопределено @@ -1443,28 +1491,21 @@ ЭлементНадпись.Гиперссылка = Ложь; ЭлементНадпись.Заголовок = ЗаголовокЭлемента( Форма.ДополнительныеПроверки, ЭлементНадпись.Имя); - Иначе - РезультатПроверки = ?(ОбъединятьРезультаты = "ОбъединятьПоИ", ЗначениеПроверки И ЗначениеПроверкиВторогоКонтекста, ЗначениеПроверки Или ЗначениеПроверкиВторогоКонтекста); Если РезультатПроверки Тогда - ЭлементРешение.Видимость = Ложь; ЭлементКартинка.Картинка = БиблиотекаКартинок.ПроверкаСертификатаУспех; ЭлементКартинка.Подсказка = НСтр("ru = 'Проверка выполнена успешно.'"); ЭлементНадпись.Гиперссылка = Ложь; ЭлементНадпись.Заголовок = ЗаголовокЭлемента( Форма.ДополнительныеПроверки, ЭлементНадпись.Имя); - КонецЕсли; - КонецЕсли; - Иначе - ЭлементКартинка.Картинка = ?(ОписаниеОшибки = Неопределено, БиблиотекаКартинок.ПроверкаСертификатаНеВыполнялась, БиблиотекаКартинок.ПроверкаСертификатаУспех); @@ -1480,17 +1521,14 @@ ЭлементНадпись.Гиперссылка = Ложь; ЭлементНадпись.Заголовок = ЗаголовокЭлемента( Форма.ДополнительныеПроверки, ЭлементНадпись.Имя); - КонецЕсли; - КонецЕсли; - КонецЕсли; Проверки.Вставить(НачалоЭлемента, ЗначениеПроверки); Проверки.Вставить(НачалоЭлемента + "Ошибка", ?(ОписаниеОшибки = Неопределено, "", ОписаниеОшибки)); - + КонецПроцедуры &НаКлиентеНаСервереБезКонтекста @@ -1518,18 +1556,25 @@ Если ИмяЭлемента = "ЗаконныйСертификатНадпись" Тогда Возврат НСтр("ru = 'Соответствие законодательству Российской Федерации'"); + ИначеЕсли ИмяЭлемента = "НаличиеСертификатаНадпись" Тогда Возврат НСтр("ru = 'Наличие сертификата в личном списке'"); + ИначеЕсли ИмяЭлемента = "ДанныеСертификатаНадпись" Тогда Возврат НСтр("ru = 'Корректность данных сертификата'"); + ИначеЕсли ИмяЭлемента = "НаличиеПрограммыНадпись" Тогда Возврат НСтр("ru = 'Наличие программы для подписания и расшифровки'"); + ИначеЕсли ИмяЭлемента = "ПодписаниеНадпись" Тогда Возврат НСтр("ru = 'Подписание данных'"); + ИначеЕсли ИмяЭлемента = "ПроверкаПодписиНадпись" Тогда Возврат НСтр("ru = 'Проверка созданной подписи'"); + ИначеЕсли ИмяЭлемента = "ШифрованиеНадпись" Тогда Возврат НСтр("ru = 'Шифрование данных'"); + ИначеЕсли ИмяЭлемента = "РасшифровкаНадпись" Тогда Возврат НСтр("ru = 'Расшифровка данных'"); Иначе @@ -1543,12 +1588,12 @@ &НаКлиенте Процедура ДополнитьТекстОшибками(ТекстОшибок, Проверки, НаСервере = Ложь) - СоставПроверок = ЭтотОбъект["Проверки" + ?(НаСервере, "НаСервере", "НаКлиенте")]; + СоставПроверок = ЭтотОбъект[?(НаСервере, "ПроверкиНаСервере", "ПроверкиНаКлиенте")]; Для Каждого Проверка Из Проверки Цикл Если СоставПроверок = Неопределено Тогда ТекстОшибок = ТекстОшибок + Проверка + ": " - + НСтр("ru = 'Не запускалась'") + Символы.ПС; + + НСтр("ru = 'Не выполнялась, так как не требуется (не настроено)'") + Символы.ПС; Иначе РезультатПроверки = ?(СоставПроверок.Свойство(Проверка), @@ -1558,7 +1603,7 @@ ПроверкиНаКлиенте[Проверка + "Ошибка"], ""); ТекстОшибок = ТекстОшибок + Проверка + ": " - + ?(РезультатПроверки = Неопределено, НСтр("ru = 'Не выполнялась'"), + + ?(РезультатПроверки = Неопределено, НСтр("ru = 'Не выполнялась из-за предыдущих ошибок'"), Формат(РезультатПроверки, НСтр("ru = 'БЛ=Ошибка; БИ=Успех'"))) + ?(ПустаяСтрока(ТекстОшибкиПроверки), "", ": ") + ТекстОшибкиПроверки + Символы.ПС; @@ -1571,7 +1616,7 @@ &НаСервереБезКонтекста Функция ОшибкаПоКлассификатору(ОписаниеОшибки) - Возврат ЭлектроннаяПодписьСлужебный.ОшибкаПоКлассификатору(ОписаниеОшибки); + Возврат ЭлектроннаяПодпись.ОшибкаПоКлассификатору(ОписаниеОшибки); КонецФункции diff --git a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/РасшифровкаДанных/Module.bsl b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/РасшифровкаДанных/Module.bsl index 510e61933..c57746029 100644 --- a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/РасшифровкаДанных/Module.bsl +++ b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/РасшифровкаДанных/Module.bsl @@ -591,8 +591,8 @@ КонецФункции // Возвращаемое значение: -// Структура - со свойствами: -// * Ссылка - СправочникСсылка.СертификатыКлючейЭлектроннойПодписиИШифрования - . +// Структура: +// * Ссылка - СправочникСсылка.СертификатыКлючейЭлектроннойПодписиИШифрования // &НаКлиенте Функция ОписаниеОбъекта(ЭлементДанных) @@ -620,7 +620,7 @@ КонецПроцедуры // Параметры: -// ОписаниеОбъектов - Массив из см. ОписаниеОбъекта - . +// ОписаниеОбъектов - Массив из см. ОписаниеОбъекта // &НаСервереБезКонтекста Процедура ЗаписатьСертификатыШифрованияНаСервере(ОписаниеОбъектов, ИдентификаторФормы, Ошибка) diff --git a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ФормаЭлемента/Module.bsl index ea4239bef..4eb84c9b9 100644 --- a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ФормаЭлемента/Module.bsl +++ b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ФормаЭлемента/Module.bsl @@ -109,8 +109,9 @@ Продолжить; КонецЕсли; + Элемент = Элементы[ИмяРеквизита]; // ПолеФормы ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Поле %1 не заполнено.'"), - Элементы[ИмяРеквизита].Заголовок); + Элемент.Заголовок); ОбщегоНазначения.СообщитьПользователю(ТекстСообщения,, ИмяРеквизита,, Отказ); КонецЦикла; diff --git a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ШифрованиеДанных/Module.bsl b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ШифрованиеДанных/Module.bsl index 6260721ca..563e66a65 100644 --- a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ШифрованиеДанных/Module.bsl +++ b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/Forms/ШифрованиеДанных/Module.bsl @@ -339,7 +339,7 @@ ДанныеСертификата = Выборка.ДанныеСертификата.Получить(); Если ТипЗнч(ДанныеСертификата) <> Тип("ДвоичныеДанные") Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Данные сертификата ""%1"" не найдены в справочнике'"), Выборка.Представление); + НСтр("ru = 'Данные сертификата ""%1"" не существуют в справочнике'"), Выборка.Представление); КонецЕсли; Попытка СертификатКриптографии = Новый СертификатКриптографии(ДанныеСертификата); @@ -534,8 +534,8 @@ // Продолжение процедуры ЗаполнитьПрограммуШифрования. // // Параметры: -// Контекст - Структура - со свойствами: -// * ОписаниеПрограммы - СправочникСсылка.СертификатыКлючейЭлектроннойПодписиИШифрования - . +// Контекст - Структура: +// * ОписаниеПрограммы - СправочникСсылка.СертификатыКлючейЭлектроннойПодписиИШифрования // &НаКлиенте Процедура ЗаполнитьПрограммуШифрованияЦиклНачало(Контекст) @@ -565,8 +565,8 @@ // Продолжение процедуры ЗаполнитьПрограммуШифрования. // // Параметры: -// Контекст - Структура - со свойствами: -// * ОписаниеПрограммы - СправочникСсылка.СертификатыКлючейЭлектроннойПодписиИШифрования - . +// Контекст - Структура: +// * ОписаниеПрограммы - СправочникСсылка.СертификатыКлючейЭлектроннойПодписиИШифрования // &НаКлиенте Процедура ЗаполнитьПрограммуШифрованияПослеСозданияМенеджераКриптографии(МенеджерКриптографии, Контекст) Экспорт @@ -599,8 +599,8 @@ // Продолжение процедуры ЗаполнитьПрограммуШифрования. // // Параметры: -// Контекст - Структура - со свойствами: -// * ОписаниеПрограммы - СправочникСсылка.СертификатыКлючейЭлектроннойПодписиИШифрования - . +// Контекст - Структура: +// * ОписаниеПрограммы - СправочникСсылка.СертификатыКлючейЭлектроннойПодписиИШифрования // &НаКлиенте Процедура ЗаполнитьПрограммуШифрованияПослеШифрования(ЗашифрованныеДанные, Контекст) Экспорт @@ -945,7 +945,7 @@ ДанныеСертификата = Выборка.ДанныеСертификата.Получить(); Если ТипЗнч(ДанныеСертификата) <> Тип("ДвоичныеДанные") Тогда - ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Данные сертификата ""%1"" не найдены в справочнике'"), + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Данные сертификата ""%1"" не существует в справочнике'"), Выборка.Наименование); КонецЕсли; @@ -996,8 +996,8 @@ КонецФункции // Возвращаемое значение: -// Структура - со свойствами: -// * Ссылка - СправочникСсылка.СертификатыКлючейЭлектроннойПодписиИШифрования - . +// Структура: +// * Ссылка - СправочникСсылка.СертификатыКлючейЭлектроннойПодписиИШифрования // &НаКлиенте Функция ОписаниеОбъекта(ЭлементДанных) @@ -1025,7 +1025,7 @@ КонецПроцедуры // Параметры: -// ОписаниеОбъектов - Массив из см. ОписаниеОбъекта - . +// ОписаниеОбъектов - Массив из см. ОписаниеОбъекта // &НаСервереБезКонтекста Процедура ЗаписатьСертификатыШифрованияНаСервере(ОписаниеОбъектов, АдресСертификатов, ИдентификаторФормы, Ошибка) diff --git a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/ManagerModule.bsl b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/ManagerModule.bsl index b460662e0..123730941 100644 --- a/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/ManagerModule.bsl +++ b/SSL/src/Catalogs/СертификатыКлючейЭлектроннойПодписиИШифрования/ManagerModule.bsl @@ -18,7 +18,8 @@ // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: -// Массив Из Строка - +// Массив Из Строка +// Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт НеРедактируемыеРеквизиты = Новый Массив; diff --git a/SSL/src/Catalogs/СообщениеSMSПрисоединенныеФайлы/ManagerModule.bsl b/SSL/src/Catalogs/СообщениеSMSПрисоединенныеФайлы/ManagerModule.bsl index 5e55090c0..eb31279f0 100644 --- a/SSL/src/Catalogs/СообщениеSMSПрисоединенныеФайлы/ManagerModule.bsl +++ b/SSL/src/Catalogs/СообщениеSMSПрисоединенныеФайлы/ManagerModule.bsl @@ -18,7 +18,8 @@ // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: -// Массив Из Строка - +// Массив Из Строка +// Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт Возврат РаботаСФайлами.РеквизитыРедактируемыеВГрупповойОбработке(); diff --git a/SSL/src/Catalogs/СостоянияОригиналовПервичныхДокументов/Forms/ФормаВыбора/Attributes/Список/ExtInfo/ListSettings.dcss b/SSL/src/Catalogs/СостоянияОригиналовПервичныхДокументов/Forms/ФормаВыбора/Attributes/Список/ExtInfo/ListSettings.dcss new file mode 100644 index 000000000..3c82ef846 --- /dev/null +++ b/SSL/src/Catalogs/СостоянияОригиналовПервичныхДокументов/Forms/ФормаВыбора/Attributes/Список/ExtInfo/ListSettings.dcss @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Settings xmlns="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:pal="http://v8.1c.ru/8.1/data/ui/colors/palette" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core"> + <filter> + <viewMode>Normal</viewMode> + <userSettingID>dfcece9d-5077-440b-b6b3-45a5cb4538eb</userSettingID> + </filter> + <order> + <item xsi:type="OrderItemField"> + <field>РеквизитДопУпорядочивания</field> + <orderType>Asc</orderType> + </item> + <viewMode>Normal</viewMode> + <userSettingID>88619765-ccb3-46c6-ac52-38e9c992ebd4</userSettingID> + </order> + <conditionalAppearance> + <viewMode>Normal</viewMode> + <userSettingID>b75fecce-942b-4aed-abc9-e6a02e460fb3</userSettingID> + </conditionalAppearance> + <itemsViewMode>Normal</itemsViewMode> + <itemsUserSettingID>911b6018-f537-43e8-a417-da56b22f9aec</itemsUserSettingID> +</Settings> diff --git a/SSL/src/Catalogs/СостоянияОригиналовПервичныхДокументов/Forms/ФормаВыбора/Form.form b/SSL/src/Catalogs/СостоянияОригиналовПервичныхДокументов/Forms/ФормаВыбора/Form.form new file mode 100644 index 000000000..fc09a23f2 --- /dev/null +++ b/SSL/src/Catalogs/СостоянияОригиналовПервичныхДокументов/Forms/ФормаВыбора/Form.form @@ -0,0 +1,338 @@ +<?xml version="1.0" encoding="UTF-8"?> +<form:Form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:form="http://g5.1c.ru/v8/dt/form"> + <items xsi:type="form:FormGroup"> + <name>СписокКомпоновщикНастроекПользовательскиеНастройки</name> + <id>1</id> + <visible>true</visible> + <enabled>true</enabled> + <userVisible> + <common>true</common> + </userVisible> + <title> + <key>ru</key> + <value>Группа пользовательских настроек</value> + + false + + СписокКомпоновщикНастроекПользовательскиеНастройкиРасширеннаяПодсказка + 2 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + WeakSeparation + true + true + Auto + Auto + + + + Список + 3 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + None + + Ссылка + 19 + + <key>ru</key> + <value>Ссылка</value> + + true + + + Список.Ссылка + + + СсылкаРасширеннаяПодсказка + 21 + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 20 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + + + Наименование + 16 + true + true + + true + + + Список.Наименование + + true + + НаименованиеРасширеннаяПодсказка + 18 + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 17 + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + СписокКоманднаяПанель + 5 + Left + + + СписокСтрокаПоиска + 7 + + СписокСтрокаПоискаРасширеннаяПодсказка + 9 + Label + true + true + + Left + + + + СписокСтрокаПоискаКонтекстноеМеню + 8 + true + + Список + + true + + + + СписокСостояниеПросмотра + 10 + + СписокСостояниеПросмотраРасширеннаяПодсказка + 12 + Label + true + true + + Left + + + + СписокСостояниеПросмотраКонтекстноеМеню + 11 + true + + ViewStatusAddition + Список + + true + + + + СписокУправлениеПоиском + 13 + + СписокУправлениеПоискомРасширеннаяПодсказка + 15 + Label + true + true + + Left + + + + СписокУправлениеПоискомКонтекстноеМеню + 14 + true + + SearchControlAddition + Список + + true + + + + СписокРасширеннаяПодсказка + 6 + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 4 + true + + true + true + true + true + true + true + MultiRow +
    true
    + 1 + 1 + AutoUse + AutoUse + true + true + Auto + Auto + ExpandTopLevel + true + true + true + AsFileRef + + Список.Картинка + + + CommonPicture.КоллекцияПиктограммНаличиеОригиналаПервичногоДокумента + + true + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + true + СписокКомпоновщикНастроекПользовательскиеНастройки + +
    + + ФормаКоманднаяПанель + -1 + Left + true + + LockOwner + true + true + true + Vertical + true + true + true + auto + true + + Список + + <key>ru</key> + <value>Список</value> + + 1 + + DynamicList + + + true + + + true + + + Список.Ссылка + +
    true
    + + ВЫБРАТЬ + СправочникСостоянияОригиналовПервичныхДокументов.Ссылка КАК Ссылка, + СправочникСостоянияОригиналовПервичныхДокументов.ПометкаУдаления КАК ПометкаУдаления, + СправочникСостоянияОригиналовПервичныхДокументов.Код КАК Код, + СправочникСостоянияОригиналовПервичныхДокументов.Наименование КАК Наименование, + СправочникСостоянияОригиналовПервичныхДокументов.Описание КАК Описание, + СправочникСостоянияОригиналовПервичныхДокументов.РеквизитДопУпорядочивания КАК РеквизитДопУпорядочивания, + СправочникСостоянияОригиналовПервичныхДокументов.Предопределенный КАК Предопределенный, + СправочникСостоянияОригиналовПервичныхДокументов.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных, + ВЫБОР + КОГДА СправочникСостоянияОригиналовПервичныхДокументов.Ссылка = ЗНАЧЕНИЕ(Справочник.СостоянияОригиналовПервичныхДокументов.ОригиналПолучен) + ТОГДА 1 + КОГДА СправочникСостоянияОригиналовПервичныхДокументов.Ссылка = ЗНАЧЕНИЕ(Справочник.СостоянияОригиналовПервичныхДокументов.ФормаНапечатана) + ТОГДА 0 + КОГДА СправочникСостоянияОригиналовПервичныхДокументов.ПометкаУдаления + ТОГДА 4 + ИНАЧЕ 3 + КОНЕЦ КАК Картинка +ИЗ + Справочник.СостоянияОригиналовПервичныхДокументов КАК СправочникСостоянияОригиналовПервичныхДокументов +ГДЕ + Не СправочникСостоянияОригиналовПервичныхДокументов.Ссылка = ЗНАЧЕНИЕ(Справочник.СостоянияОригиналовПервичныхДокументов.ОригиналыНеВсе) + И НЕ СправочникСостоянияОригиналовПервичныхДокументов.ПометкаУдаления + Catalog.СостоянияОригиналовПервичныхДокументов + true + true + true + true + true + +
    + + + + + + diff --git a/SSL/src/Catalogs/СостоянияОригиналовПервичныхДокументов/Forms/ФормаВыбораСостояния/Form.form b/SSL/src/Catalogs/СостоянияОригиналовПервичныхДокументов/Forms/ФормаВыбораСостояния/Form.form new file mode 100644 index 000000000..3c728329c --- /dev/null +++ b/SSL/src/Catalogs/СостоянияОригиналовПервичныхДокументов/Forms/ФормаВыбораСостояния/Form.form @@ -0,0 +1,431 @@ + + + + <key>ru</key> + <value>Состояния оригиналов первичных документов</value> + + + СписокСостоянийОригинала + 1 + + <key>ru</key> + <value>Список состояний оригинала</value> + + true + true + + true + + + СписокСостоянийОригинала + + None + + СписокСостоянийОригиналаПометка + 19 + true + true + + true + + + СписокСостоянийОригинала.Check + + + СписокСостоянийОригиналаПометкаРасширеннаяПодсказка + 21 + Label + true + true + + Left + + + + СписокСостоянийОригиналаПометкаКонтекстноеМеню + 20 + true + + CheckBoxField + Enter + true + Left + true + + + + СписокСостоянийОригиналаЗначение + 14 + true + true + + true + + + СписокСостоянийОригинала.Value + + + СписокСостоянийОригиналаЗначениеРасширеннаяПодсказка + 16 + Label + true + true + + Left + + + + СписокСостоянийОригиналаЗначениеКонтекстноеМеню + 15 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + СписокСостоянийОригиналаКоманднаяПанель + 3 + Left + + + СписокСостоянийОригиналаСтрокаПоиска + 5 + + СписокСостоянийОригиналаСтрокаПоискаРасширеннаяПодсказка + 7 + Label + true + true + + Left + + + + СписокСостоянийОригиналаСтрокаПоискаКонтекстноеМеню + 6 + true + + СписокСостоянийОригинала + + true + + + + СписокСостоянийОригиналаСостояниеПросмотра + 8 + + СписокСостоянийОригиналаСостояниеПросмотраРасширеннаяПодсказка + 10 + Label + true + true + + Left + + + + СписокСостоянийОригиналаСостояниеПросмотраКонтекстноеМеню + 9 + true + + ViewStatusAddition + СписокСостоянийОригинала + + true + + + + СписокСостоянийОригиналаУправлениеПоиском + 11 + + СписокСостоянийОригиналаУправлениеПоискомРасширеннаяПодсказка + 13 + Label + true + true + + Left + + + + СписокСостоянийОригиналаУправлениеПоискомКонтекстноеМеню + 12 + true + + SearchControlAddition + СписокСостоянийОригинала + + true + + + + СписокСостоянийОригиналаРасширеннаяПодсказка + 4 + Label + true + true + + Left + + + + СписокСостоянийОригиналаКонтекстноеМеню + 2 + true + + true + true + true + true + true + MultiRow + 1 + 1 + AutoUse + AutoUse + true + true + false + false + false + true + Auto + Auto + true + true + AsFileRef + + СписокСостоянийОригинала.Picture + + true + + + ФормаКоманднаяПанель + -1 + + СписокСостоянийОригиналаВыбрать + 17 + true + true + + true + + + СписокСостоянийОригиналаВыбратьРасширеннаяПодсказка + 18 + Label + true + true + + Left + + + Form.Command.Выбрать + Auto + true + true + true + UserCmds + Auto + + + ГруппаУстСнятьФлажкиВидДокумента + 26 + + УстановитьВсеФлажки + 22 + true + true + + true + + + УстановитьВсеФлажкиРасширеннаяПодсказка + 23 + Label + true + true + + Left + + + Form.Command.УстановитьВсеФлажки + Normal + Auto + true + true + UserCmds + Auto + + + СнятьВсеФлажки + 24 + true + true + + true + + + СнятьВсеФлажкиРасширеннаяПодсказка + 25 + Label + true + true + + Left + + + Form.Command.СнятьВсеФлажки + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Уст снять флажки вид документа</value> + + + ГруппаУстСнятьФлажкиВидДокументаРасширеннаяПодсказка + 27 + Label + true + true + + Left + + + + + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwner + true + true + Vertical + true + true + true + auto + true + + СписокСостоянийОригинала + + <key>ru</key> + <value>Список состояний оригинала</value> + + 1 + + ValueList + + + true + + + true + + + + + + + Выбрать + + <key>ru</key> + <value>Выбрать</value> + + 1 + + ru + Выбрать + + + true + + + + Выбрать + + + Auto + Auto + + + УстановитьВсеФлажки + + <key>ru</key> + <value>Установить все флажки</value> + + 2 + + ru + Установить все флажки + + + true + + + StdPicture.CheckAll + + + + УстановитьВсеФлажки + + + Auto + Auto + + + СнятьВсеФлажки + + <key>ru</key> + <value>Снять все флажки</value> + + 3 + + ru + Снять все флажки + + + true + + + StdPicture.UncheckAll + + + + СнятьВсеФлажки + + + Auto + Auto + + + + + + diff --git a/SSL/src/Catalogs/СостоянияОригиналовПервичныхДокументов/Forms/ФормаВыбораСостояния/Module.bsl b/SSL/src/Catalogs/СостоянияОригиналовПервичныхДокументов/Forms/ФормаВыбораСостояния/Module.bsl new file mode 100644 index 000000000..052c43a4a --- /dev/null +++ b/SSL/src/Catalogs/СостоянияОригиналовПервичныхДокументов/Forms/ФормаВыбораСостояния/Module.bsl @@ -0,0 +1,61 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2020, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + СостоянияОригинала = УчетОригиналовПервичныхДокументов.ВсеСостояния(); + Для Каждого Состояние Из СостоянияОригинала Цикл + СписокСостоянийОригинала.Добавить(Состояние,,Ложь); + КонецЦикла; + СписокСостоянийОригинала.Добавить(НСтр("ru='<Состояние неизвестно>'"),,Ложь); + + Если Параметры.Свойство("СписокСостояний") Тогда + Для Каждого Состояние Из Параметры.СписокСостояний Цикл + НайденноеСостояние = СписокСостоянийОригинала.НайтиПоЗначению(Состояние.Значение); + Если Не НайденноеСостояние = Неопределено Тогда + НайденноеСостояние.Пометка=Истина; + КонецЕсли; + КонецЦикла; + КонецЕсли; + + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура Выбрать(Команда) + + ОповеститьОВыборе(СписокСостоянийОригинала); + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьВсеФлажки(Команда) + + Для Каждого ТекущийОтбор Из СписокСостоянийОригинала Цикл + ТекущийОтбор.Пометка = Истина; + КонецЦикла; + +КонецПроцедуры + +&НаКлиенте +Процедура СнятьВсеФлажки(Команда) + + Для Каждого ТекущийОтбор Из СписокСостоянийОригинала Цикл + ТекущийОтбор.Пометка = Ложь; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git a/SSL/src/Catalogs/СостоянияОригиналовПервичныхДокументов/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss b/SSL/src/Catalogs/СостоянияОригиналовПервичныхДокументов/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss new file mode 100644 index 000000000..3c82ef846 --- /dev/null +++ b/SSL/src/Catalogs/СостоянияОригиналовПервичныхДокументов/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss @@ -0,0 +1,21 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + + РеквизитДопУпорядочивания + Asc + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + diff --git a/SSL/src/Catalogs/СостоянияОригиналовПервичныхДокументов/Forms/ФормаСписка/Form.form b/SSL/src/Catalogs/СостоянияОригиналовПервичныхДокументов/Forms/ФормаСписка/Form.form new file mode 100644 index 000000000..3ca006b81 --- /dev/null +++ b/SSL/src/Catalogs/СостоянияОригиналовПервичныхДокументов/Forms/ФормаСписка/Form.form @@ -0,0 +1,369 @@ + + + + СписокКомпоновщикНастроекПользовательскиеНастройки + 1 + true + true + + true + + + <key>ru</key> + <value>Группа пользовательских настроек</value> + + false + + СписокКомпоновщикНастроекПользовательскиеНастройкиРасширеннаяПодсказка + 2 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + WeakSeparation + true + true + Auto + Auto + + + + Список + 3 + + <key>ru</key> + <value>Список</value> + + true + true + + true + + + Список + + true + None + + Ссылка + 26 + + <key>ru</key> + <value>Ссылка</value> + + true + + + Список.Ссылка + + + СсылкаРасширеннаяПодсказка + 28 + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 27 + true + + LabelField + Enter + true + Left + true + + true + true + + + + Наименование + 23 + true + true + + true + + + Список.Наименование + + + НаименованиеРасширеннаяПодсказка + 25 + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 24 + true + + LabelField + Enter + true + Left + true + + true + true + + + None + + СписокКоманднаяПанель + 5 + Left + + + OnChange + СписокПриИзменении + + + СписокСтрокаПоиска + 7 + + СписокСтрокаПоискаРасширеннаяПодсказка + 9 + Label + true + true + + Left + + + + СписокСтрокаПоискаКонтекстноеМеню + 8 + true + + Список + + true + + + + СписокСостояниеПросмотра + 10 + + СписокСостояниеПросмотраРасширеннаяПодсказка + 12 + Label + true + true + + Left + + + + СписокСостояниеПросмотраКонтекстноеМеню + 11 + true + + ViewStatusAddition + Список + + true + + + + СписокУправлениеПоиском + 13 + + СписокУправлениеПоискомРасширеннаяПодсказка + 15 + Label + true + true + + Left + + + + СписокУправлениеПоискомКонтекстноеМеню + 14 + true + + SearchControlAddition + Список + + true + + + + СписокРасширеннаяПодсказка + 6 + Label + true + true + + Left + + + + СписокКонтекстноеМеню + 4 + true + + true + true + true + true + true + MultiRow +
    true
    + 1 + 1 + AutoUse + AutoUse + true + true + Auto + Auto + ExpandTopLevel + true + true + true + AsFileRef + + Список.Картинка + + + CommonPicture.ПиктограммыЭлементовСправочникаСостоянияОригиналовПервичныхДокументов + + true + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + true + СписокКомпоновщикНастроекПользовательскиеНастройки + +
    + + ФормаКоманднаяПанель + -1 + + НастройкаПорядкаЭлементов + 21 + true + true + + true + + + <key>ru</key> + <value>Настройка порядка элементов</value> + + + НастройкаПорядкаЭлементовРасширеннаяПодсказка + 22 + Label + true + true + + Left + + + + Compact + + + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + DontBlock + true + true + true + Vertical + true + true + true + auto + true + + Список + 1 + + DynamicList + + + true + + + true + + + Список.ИмяПредопределенныхДанных + + + Список.Предопределенный + + + Список.РеквизитДопУпорядочивания + + + Список.Ссылка + +
    true
    + + ВЫБРАТЬ + СправочникСостоянияОригиналовПервичныхДокументов.Ссылка КАК Ссылка, + СправочникСостоянияОригиналовПервичныхДокументов.ПометкаУдаления КАК ПометкаУдаления, + СправочникСостоянияОригиналовПервичныхДокументов.Код КАК Код, + СправочникСостоянияОригиналовПервичныхДокументов.Наименование КАК Наименование, + СправочникСостоянияОригиналовПервичныхДокументов.Описание КАК Описание, + СправочникСостоянияОригиналовПервичныхДокументов.РеквизитДопУпорядочивания КАК РеквизитДопУпорядочивания, + СправочникСостоянияОригиналовПервичныхДокументов.Предопределенный КАК Предопределенный, + СправочникСостоянияОригиналовПервичныхДокументов.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных, + ВЫБОР + КОГДА СправочникСостоянияОригиналовПервичныхДокументов.Ссылка = ЗНАЧЕНИЕ(Справочник.СостоянияОригиналовПервичныхДокументов.ОригиналПолучен) + ТОГДА 1 + КОГДА СправочникСостоянияОригиналовПервичныхДокументов.Ссылка = ЗНАЧЕНИЕ(Справочник.СостоянияОригиналовПервичныхДокументов.ФормаНапечатана) + ТОГДА 0 + КОГДА СправочникСостоянияОригиналовПервичныхДокументов.ПометкаУдаления + ТОГДА 4 + ИНАЧЕ 3 + КОНЕЦ КАК Картинка +ИЗ + Справочник.СостоянияОригиналовПервичныхДокументов КАК СправочникСостоянияОригиналовПервичныхДокументов +ГДЕ + НЕ СправочникСостоянияОригиналовПервичныхДокументов.Ссылка = ЗНАЧЕНИЕ(Справочник.СостоянияОригиналовПервичныхДокументов.ОригиналыНеВсе) + Catalog.СостоянияОригиналовПервичныхДокументов + true + true + true + true + true + +
    + + + + + +
    diff --git a/SSL/src/Catalogs/СостоянияОригиналовПервичныхДокументов/Forms/ФормаСписка/Module.bsl b/SSL/src/Catalogs/СостоянияОригиналовПервичныхДокументов/Forms/ФормаСписка/Module.bsl new file mode 100644 index 000000000..af2d83a07 --- /dev/null +++ b/SSL/src/Catalogs/СостоянияОригиналовПервичныхДокументов/Forms/ФормаСписка/Module.bsl @@ -0,0 +1,112 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2020, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + // СтандартныеПодсистемы.ПодключаемыеКоманды + ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект); + // Конец СтандартныеПодсистемы.ПодключаемыеКоманды + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормы + +&НаКлиенте +Процедура СписокПриИзменении(Элемент) + + Оповестить("ДобавлениеУдалениеСостоянияОригиналаПервичногоДокумента"); + +КонецПроцедуры + +#КонецОбласти + + +#Область ОбработчикиКомандФормы + +// СтандартныеПодсистемы.ПодключаемыеКоманды +&НаКлиенте +Процедура Подключаемый_ВыполнитьКоманду(Команда) + + ТекущиеДанные = Элементы.Список.ТекущиеДанные; + + Если Команда.Имя = "НастройкаПорядкаЭлементовОбычное_Вниз" Или Команда.Имя = "НастройкаПорядкаЭлементовОбычное_Вверх" Тогда + Если ТекущиеДанные.Ссылка = ПредопределенноеЗначение("Справочник.СостоянияОригиналовПервичныхДокументов.ФормаНапечатана") + Или ТекущиеДанные.Ссылка = ПредопределенноеЗначение("Справочник.СостоянияОригиналовПервичныхДокументов.ОригиналПолучен") Тогда + ПоказатьПредупреждение(,НСтр("ru='Начальное и конечное состояние перемещать нельзя.'")); + Иначе + + Если Команда.Имя = "НастройкаПорядкаЭлементовОбычное_Вниз" Тогда + Перемещать = ВозможностьПеремещения("Вниз",ТекущиеДанные.РеквизитДопУпорядочивания); + ИначеЕсли Команда.Имя = "НастройкаПорядкаЭлементовОбычное_Вверх" Тогда + Перемещать = ВозможностьПеремещения("Вверх",ТекущиеДанные.РеквизитДопУпорядочивания); + КонецЕсли; + + Если Перемещать Тогда + ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Элементы.Список); + Иначе + ПоказатьПредупреждение(,НСтр("ru = 'Начальное и конечное состояние перемещать нельзя.'")); + КонецЕсли; + + КонецЕсли; + Иначе + ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Элементы.Список); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат) + ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, Контекст, Элементы.Список, Результат); +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ОбновитьКоманды() + ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Элементы.Список); +КонецПроцедуры +//Конец СтандартныеПодсистемы.ПодключаемыеКоманды + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Функция ВозможностьПеремещения(Перемещение, НомерПорядка); + + Запрос = Новый Запрос; + Запрос.Текст ="ВЫБРАТЬ + | СостоянияОригиналовПервичныхДокументов.Ссылка КАК Ссылка + |ИЗ + | Справочник.СостоянияОригиналовПервичныхДокументов КАК СостоянияОригиналовПервичныхДокументов + |ГДЕ + | СостоянияОригиналовПервичныхДокументов.РеквизитДопУпорядочивания > &НомерПорядка + | И СостоянияОригиналовПервичныхДокументов.Ссылка <> ЗНАЧЕНИЕ(Справочник.СостоянияОригиналовПервичныхДокументов.ФормаНапечатана) + | И СостоянияОригиналовПервичныхДокументов.Ссылка <> ЗНАЧЕНИЕ(Справочник.СостоянияОригиналовПервичныхДокументов.ОригиналыНеВсе) + | И СостоянияОригиналовПервичныхДокументов.Ссылка <> ЗНАЧЕНИЕ(Справочник.СостоянияОригиналовПервичныхДокументов.ОригиналПолучен)"; + + Если Перемещение = "Вверх" Тогда + Запрос.Текст = СтрЗаменить(Запрос.Текст,"> &НомерПорядка","< &НомерПорядка"); + КонецЕсли; + + Запрос.УстановитьПараметр("НомерПорядка", НомерПорядка); + + Выборка = Запрос.Выполнить(); + + Если Не Выборка.Пустой() Тогда + Возврат Истина; + Иначе + Возврат Ложь; + КонецЕсли; + +КонецФункции + +#КонецОбласти diff --git a/SSL/src/Catalogs/СостоянияОригиналовПервичныхДокументов/Forms/ФормаЭлемента/Form.form b/SSL/src/Catalogs/СостоянияОригиналовПервичныхДокументов/Forms/ФормаЭлемента/Form.form new file mode 100644 index 000000000..4ed26a27a --- /dev/null +++ b/SSL/src/Catalogs/СостоянияОригиналовПервичныхДокументов/Forms/ФормаЭлемента/Form.form @@ -0,0 +1,128 @@ + + + + Наименование + 4 + true + true + + true + + + Объект.Description + + + НаименованиеРасширеннаяПодсказка + 6 + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 5 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + Описание + 7 + true + true + + true + + + Объект.Описание + + Left + + ОписаниеРасширеннаяПодсказка + 9 + Label + true + true + + Left + + + + ОписаниеКонтекстноеМеню + 8 + true + + InputField + Auto + true + Left + true + + true + true + false + true + true + true + true + Normal + + + + ФормаКоманднаяПанель + -1 + Left + true + + LockOwner + true + true + true + Vertical + true + true + true + auto + true + + Объект + 1 + + CatalogObject.СостоянияОригиналовПервичныхДокументов + + + true + + + true + +
    true
    + true +
    + + + + + + + BeforeWrite + ПередЗаписью + + +
    diff --git a/SSL/src/Catalogs/СостоянияОригиналовПервичныхДокументов/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/СостоянияОригиналовПервичныхДокументов/Forms/ФормаЭлемента/Module.bsl new file mode 100644 index 000000000..6877dc403 --- /dev/null +++ b/SSL/src/Catalogs/СостоянияОригиналовПервичныхДокументов/Forms/ФормаЭлемента/Module.bsl @@ -0,0 +1,44 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2020, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаКлиенте +Процедура ПередЗаписью(Отказ, ПараметрыЗаписи) + + Если Не Объект.Ссылка = ПредопределенноеЗначение("Справочник.СостоянияОригиналовПервичныхДокументов.ОригиналПолучен") + И Не Объект.Ссылка = ПредопределенноеЗначение("Справочник.СостоянияОригиналовПервичныхДокументов.ФормаНапечатана") Тогда + Объект.РеквизитДопУпорядочивания = РассчитатьПорядокЭлемента(); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Функция РассчитатьПорядокЭлемента() + + Запрос = Новый Запрос; + Запрос.Текст ="ВЫБРАТЬ + | КОЛИЧЕСТВО(*) КАК Количество + |ИЗ + | Справочник.СостоянияОригиналовПервичныхДокументов КАК СостоянияОригиналовПервичныхДокументов" ; + + Выборка = Запрос.Выполнить().Выбрать(); + Выборка.Следующий(); + + ПорядокПоУмолчанию = Выборка.Количество - 1; + + Возврат ПорядокПоУмолчанию; + +КонецФункции + +#КонецОбласти \ No newline at end of file diff --git a/SSL/src/Catalogs/СостоянияОригиналовПервичныхДокументов/ManagerModule.bsl b/SSL/src/Catalogs/СостоянияОригиналовПервичныхДокументов/ManagerModule.bsl new file mode 100644 index 000000000..4d0facc23 --- /dev/null +++ b/SSL/src/Catalogs/СостоянияОригиналовПервичныхДокументов/ManagerModule.bsl @@ -0,0 +1,54 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2020, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область СлужебныйПрограммныйИнтерфейс + +Процедура ПриНастройкеНачальногоЗаполненияЭлементов(Настройки) Экспорт + + Настройки.ПриНачальномЗаполненииЭлемента = Ложь; + +КонецПроцедуры + +// Вызывается при начальном заполнении справочника. +// +// Параметры: +// КодыЯзыков - Массив - список языков конфигурации. Актуально для мультиязычных конфигураций. +// Элементы - ТаблицаЗначений - данные заполнения. Состав колонок соответствует набору реквизитов +// справочника РолиИсполнителей. +// +Процедура ПриНачальномЗаполненииЭлементов(КодыЯзыков, Элементы, ТабличныеЧасти) Экспорт + + Элемент = Элементы.Добавить(); + Элемент.ИмяПредопределенныхДанных = "ФормаНапечатана"; + Элемент.Наименование = НСтр("ru='Форма напечатана'",ОбщегоНазначения.КодОсновногоЯзыка()); + Элемент.Описание = НСтр("ru='Состояние, означающее, что печатная форма только печаталась.'") ; + Элемент.Код = "000000001"; + Элемент.РеквизитДопУпорядочивания = "1"; + + Элемент = Элементы.Добавить(); + Элемент.ИмяПредопределенныхДанных = "ОригиналыНеВсе"; + Элемент.Наименование = НСтр("ru='Оригиналы не все'",ОбщегоНазначения.КодОсновногоЯзыка()); + Элемент.Описание = НСтр("ru='Общее состояние для документа, у которого оригиналы печатных форм находятся в разных состояниях.'"); + Элемент.Код = "000000002"; + Элемент.РеквизитДопУпорядочивания = "99998"; + + Элемент = Элементы.Добавить(); + Элемент.ИмяПредопределенныхДанных = "ОригиналПолучен"; + Элемент.Наименование = НСтр("ru='Оригинал получен'",ОбщегоНазначения.КодОсновногоЯзыка()); + Элемент.Описание = НСтр("ru='Состояние, означающее, что подписанный оригинал печатной формы есть в наличии.'"); + Элемент.Код = "000000003"; + Элемент.РеквизитДопУпорядочивания = "99999"; + +КонецПроцедуры + +#КонецОбласти + +#КонецЕсли + diff --git a/SSL/src/Catalogs/СостоянияОригиналовПервичныхДокументов/СостоянияОригиналовПервичныхДокументов.mdo b/SSL/src/Catalogs/СостоянияОригиналовПервичныхДокументов/СостоянияОригиналовПервичныхДокументов.mdo new file mode 100644 index 000000000..48f27c094 --- /dev/null +++ b/SSL/src/Catalogs/СостоянияОригиналовПервичныхДокументов/СостоянияОригиналовПервичныхДокументов.mdo @@ -0,0 +1,229 @@ + + + + + + + + + + СостоянияОригиналовПервичныхДокументов + + ru + Состояния оригиналов первичных документов + + true + Catalog.СостоянияОригиналовПервичныхДокументов.StandardAttribute.Description + Catalog.СостоянияОригиналовПервичныхДокументов.StandardAttribute.Code + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + true + + ShowError + Use + + + + + Use + Parent + true + + Use + + + + + Use + Description + + ShowError + Use + + + + + Use + Code + + Use + + + + Use + Managed + Use + + ru + Состояние оригинала + + + ru + Состояние оригинала первичного документа + + + ru + Состояния оригиналов + + + ru + Состояния оригиналов первичных документов + + 2 + true + 9 + 50 + String + Variable + true + true + AsDescription + + + ОригиналПолучен + Оригинал получен + + 000000003 + + + + ОригиналыНеВсе + Оригиналы не все + + 000000002 + + + + ФормаНапечатана + Форма напечатана + + 000000001 + + + + AutoUpdate + InDialog + BothWays + Catalog.СостоянияОригиналовПервичныхДокументов.Form.ФормаЭлемента + Catalog.СостоянияОригиналовПервичныхДокументов.Form.ФормаСписка + Catalog.СостоянияОригиналовПервичныхДокументов.Form.ФормаВыбора + + Описание + + ru + Описание + + + String + + + + ru + Полное описание назначения состояния оригинала + + true + + + + Use + Use + + + РеквизитДопУпорядочивания + + ru + Порядок + + + Number + + 5 + true + + + + + + IndexWithAdditionalOrder + Use + Use + + + ФормаЭлемента + + ru + Форма элемента + + PersonalComputer + MobileDevice + + + ФормаСписка + + ru + Форма списка + + PersonalComputer + MobileDevice + + + ФормаВыбора + + ru + Форма выбора + + PersonalComputer + MobileDevice + + + ФормаВыбораСостояния + + ru + Форма выбора состояния + + PersonalComputer + MobileDevice + + diff --git a/SSL/src/Catalogs/СтраныМира/Forms/Классификатор/Module.bsl b/SSL/src/Catalogs/СтраныМира/Forms/Классификатор/Module.bsl index 943f48e92..ef253fafd 100644 --- a/SSL/src/Catalogs/СтраныМира/Forms/Классификатор/Module.bsl +++ b/SSL/src/Catalogs/СтраныМира/Forms/Классификатор/Module.bsl @@ -117,6 +117,7 @@ &НаКлиенте Процедура ОткрытьФормуЭлементаКлассификатора(ДанныеЗаполнения, ЭтоНовый = Ложь) + Если ДанныеЗаполнения=Неопределено Тогда Возврат; КонецЕсли; @@ -129,11 +130,10 @@ Иначе ПараметрыФормы.Вставить("ТолькоПросмотр", Истина); КонецЕсли; - Форма = ОткрытьФорму("Справочник.СтраныМира.ФормаОбъекта", ПараметрыФормы, Элементы.Классификатор); - Если Не ЭтоНовый И Форма.АвтоЗаголовок Тогда - Форма.АвтоЗаголовок = Ложь; - Форма.Заголовок = ДанныеЗаполнения.Наименование + ПредставлениеОбъектаКлассификатора; - КонецЕсли; + ПараметрыФормы.Вставить("Заголовок", ДанныеЗаполнения.Наименование + ПредставлениеОбъектаКлассификатора); + + ОткрытьФорму("Справочник.СтраныМира.ФормаОбъекта", ПараметрыФормы, Элементы.Классификатор); + КонецПроцедуры &НаКлиенте @@ -163,6 +163,11 @@ КонецПроцедуры +// Параметры: +// Результат - КодВозвратаДиалога +// ДополнительныеПараметры - Структура: +// * Ссылка - СправочникСсылка.СтраныМира +// &НаКлиенте Процедура ПослеВопросаПроОбновление(Результат, ДополнительныеПараметры) Экспорт diff --git a/SSL/src/Catalogs/СтраныМира/Forms/ФормаЭлемента/Form.form b/SSL/src/Catalogs/СтраныМира/Forms/ФормаЭлемента/Form.form index f6b72fc3c..24a08ed21 100644 --- a/SSL/src/Catalogs/СтраныМира/Forms/ФормаЭлемента/Form.form +++ b/SSL/src/Catalogs/СтраныМира/Forms/ФормаЭлемента/Form.form @@ -385,6 +385,13 @@
    true
    true + + Заголовок + + String + + + diff --git a/SSL/src/Catalogs/СтраныМира/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/СтраныМира/Forms/ФормаЭлемента/Module.bsl index 1ab1632fa..033a9a37b 100644 --- a/SSL/src/Catalogs/СтраныМира/Forms/ФормаЭлемента/Module.bsl +++ b/SSL/src/Catalogs/СтраныМира/Forms/ФормаЭлемента/Module.bsl @@ -16,6 +16,11 @@ Элементы.ГруппаНаименование.ТолькоПросмотр = Истина; КонецЕсли; + Если ЗначениеЗаполнено(Параметры.Заголовок) Тогда + Заголовок = Параметры.Заголовок; + АвтоЗаголовок = Ложь; + КонецЕсли; + КонецПроцедуры &НаКлиенте diff --git a/SSL/src/Catalogs/СтраныМира/ManagerModule.bsl b/SSL/src/Catalogs/СтраныМира/ManagerModule.bsl index 116abe0ab..b6ae8fe58 100644 --- a/SSL/src/Catalogs/СтраныМира/ManagerModule.bsl +++ b/SSL/src/Catalogs/СтраныМира/ManagerModule.bsl @@ -18,7 +18,8 @@ // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: -// Массив Из Строка - +// Массив Из Строка +// Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт Результат = Новый Массив; @@ -62,18 +63,19 @@ // Рекомендуется использовать УправлениеКонтактнойИнформацией.ДанныеСтраныМира. // // Параметры: -// КодСтраны - Строка, Число - код страны по классификатору. Если не указано, то поиск по коду не производится. +// КодСтраны - Строка +// - Число - код страны по классификатору. Если не указано, то поиск по коду не производится. // Наименование - Строка - наименование страны. Если не указано, то поиск по наименованию не производится. // // Возвращаемое значение: -// Структура - поля: -// * Код - Строка - реквизит найденной страны. -// * Наименование - Строка - реквизит найденной страны. -// * НаименованиеПолное - Строка - реквизит найденной страны. -// * КодАльфа2 - Строка - реквизит найденной страны. -// * КодАльфа3 - Строка - реквизит найденной страны. -// * Ссылка - СправочникаСсылка.СтраныМира - реквизит найденной страны. -// Неопределено - страна не найдена. +// Структура: +// * Код - Строка +// * Наименование - Строка +// * НаименованиеПолное - Строка +// * КодАльфа2 - Строка +// * КодАльфа3 - Строка +// * Ссылка - СправочникаСсылка.СтраныМира +// Неопределено - страна не существует. // Функция ДанныеСтраныМира(Знач КодСтраны = Неопределено, Знач Наименование = Неопределено) Экспорт Возврат УправлениеКонтактнойИнформацией.ДанныеСтраныМира(КодСтраны, Наименование); @@ -83,17 +85,18 @@ // Рекомендуется использовать УправлениеКонтактнойИнформацией.ДанныеКлассификатораСтранМираПоКоду. // // Параметры: -// Код - Строка, Число - код страны по классификатору. +// Код - Строка +// - Число - код страны по классификатору. // ТипКода - Строка - Варианты: КодСтраны (по умолчанию), Альфа2, Альфа3. // // Возвращаемое значение: -// Структура - поля: -// * Код - Строка - реквизит найденной страны. -// * Наименование - Строка - реквизит найденной страны. -// * НаименованиеПолное - Строка - реквизит найденной страны. -// * КодАльфа2 - Строка - реквизит найденной страны. -// * КодАльфа3 - Строка - реквизит найденной страны. -// Неопределено - страна не найдена. +// Структура: +// * Код - Строка +// * Наименование - Строка +// * НаименованиеПолное - Строка +// * КодАльфа2 - Строка +// * КодАльфа3 - Строка +// Неопределено - страна не существует. // Функция ДанныеКлассификатораСтранМираПоКоду(Знач Код, ТипКода = "КодСтраны") Экспорт Возврат УправлениеКонтактнойИнформацией.ДанныеКлассификатораСтранМираПоКоду(Код, ТипКода); @@ -106,13 +109,13 @@ // Наименование - Строка - наименование страны. // // Возвращаемое значение: -// Структура - поля: -// * Код - Строка - реквизит найденной страны. -// * Наименование - Строка - реквизит найденной страны. -// * НаименованиеПолное - Строка - реквизит найденной страны. -// * КодАльфа2 - Строка - реквизит найденной страны. -// * КодАльфа3 - Строка - реквизит найденной страны. -// Неопределено - страна не найдена. +// Структура: +// * Код - Строка +// * Наименование - Строка +// * НаименованиеПолное - Строка +// * КодАльфа2 - Строка +// * КодАльфа3 - Строка +// Неопределено - страна не существует. // Функция ДанныеКлассификатораСтранМираПоНаименованию(Знач Наименование) Экспорт Возврат УправлениеКонтактнойИнформацией.ДанныеКлассификатораСтранМираПоНаименованию(Наименование); @@ -180,6 +183,13 @@ НоваяСтрока.КодАльфа3 = "GMB"; НоваяСтрока.НаименованиеПолное = НСтр("ru = 'Республика Гамбия'"); + НоваяСтрока = СписокСтран.Добавить(); + НоваяСтрока.Код = "807"; + НоваяСтрока.Наименование = НСтр("ru = 'РЕСПУБЛИКА МАКЕДОНИЯ'"); + НоваяСтрока.КодАльфа2 = "MK"; + НоваяСтрока.КодАльфа3 = "MKD"; + НоваяСтрока.НаименованиеПолное = НСтр("ru = 'Республика Македония'"); + Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | СписокСтран.Код КАК Код, @@ -229,6 +239,8 @@ СтранаМира = СтранаМираСсылка.Ссылка.ПолучитьОбъект(); ЗаполнитьЗначенияСвойств(СтранаМира, ДанныеКлассификатора); ОбновлениеИнформационнойБазы.ЗаписатьДанные(СтранаМира); + Иначе + ОбновлениеИнформационнойБазы.ОтметитьВыполнениеОбработки(СтранаМираСсылка.Ссылка); КонецЕсли; // Обновление наименований diff --git a/SSL/src/Catalogs/СтроковыеКонтактыВзаимодействий/ManagerModule.bsl b/SSL/src/Catalogs/СтроковыеКонтактыВзаимодействий/ManagerModule.bsl index aad6e356d..2548cb15d 100644 --- a/SSL/src/Catalogs/СтроковыеКонтактыВзаимодействий/ManagerModule.bsl +++ b/SSL/src/Catalogs/СтроковыеКонтактыВзаимодействий/ManagerModule.bsl @@ -18,7 +18,8 @@ // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: -// Массив Из Строка - +// Массив Из Строка +// Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт Результат = Новый Массив; diff --git a/SSL/src/Catalogs/СценарииОбменовДанными/ManagerModule.bsl b/SSL/src/Catalogs/СценарииОбменовДанными/ManagerModule.bsl index e7569993a..068732bfd 100644 --- a/SSL/src/Catalogs/СценарииОбменовДанными/ManagerModule.bsl +++ b/SSL/src/Catalogs/СценарииОбменовДанными/ManagerModule.bsl @@ -18,7 +18,8 @@ // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: -// Массив Из Строка - +// Массив Из Строка +// Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт Результат = Новый Массив; diff --git a/SSL/src/Catalogs/ТелефонныйЗвонокПрисоединенныеФайлы/ManagerModule.bsl b/SSL/src/Catalogs/ТелефонныйЗвонокПрисоединенныеФайлы/ManagerModule.bsl index c0b9772bf..ec189d0e3 100644 --- a/SSL/src/Catalogs/ТелефонныйЗвонокПрисоединенныеФайлы/ManagerModule.bsl +++ b/SSL/src/Catalogs/ТелефонныйЗвонокПрисоединенныеФайлы/ManagerModule.bsl @@ -18,7 +18,8 @@ // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: -// Массив Из Строка - +// Массив Из Строка +// Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт Возврат РаботаСФайлами.РеквизитыРедактируемыеВГрупповойОбработке(); diff --git a/SSL/src/Catalogs/ТомаХраненияФайлов/Forms/УдалениеЛишнихФайловИзТома/Module.bsl b/SSL/src/Catalogs/ТомаХраненияФайлов/Forms/УдалениеЛишнихФайловИзТома/Module.bsl index a535ef5ea..693e0ff56 100644 --- a/SSL/src/Catalogs/ТомаХраненияФайлов/Forms/УдалениеЛишнихФайловИзТома/Module.bsl +++ b/SSL/src/Catalogs/ТомаХраненияФайлов/Forms/УдалениеЛишнихФайловИзТома/Module.bsl @@ -141,7 +141,7 @@ Процедура ПроверкаСуществованияКаталогаЗавершение(Существует, ДополнительныеПараметры) Экспорт Если Не Существует Тогда - ПоказатьПредупреждение(, НСтр("ru = 'Путь к каталогу копирования некорректен.'")); + ПоказатьПредупреждение(, НСтр("ru = 'Указанная папка не существует.'")); Иначе ПравоЗаписиВКаталог(Новый ОписаниеОповещения("ПослеПроверкиЗаписиВКаталог", ЭтотОбъект)); КонецЕсли; @@ -189,13 +189,7 @@ КонецЕсли; ПолноеИмяТекущегоФайла = ТекущийФайл.ПолноеИмя; - КаталогДляКопирования = ПутьКПапкеДляКопирования + ПутьДня + ПолучитьРазделительПути(); - - ПараметрыТекущегоФайла = Новый Структура; - ПараметрыТекущегоФайла.Вставить("ИтоговоеОповещение", ДополнительныеПараметры.ИтоговоеОповещение); - ПараметрыТекущегоФайла.Вставить("ТекущийФайл", ТекущийФайл); - ПараметрыТекущегоФайла.Вставить("ПоследняяИтерация", ПоследняяИтерация); - ПараметрыТекущегоФайла.Вставить("КаталогДляКопирования", КаталогДляКопирования); + ПараметрыТекущегоФайла = ПараметрыТекущегоФайла(ДополнительныеПараметры, ПоследняяИтерация, ТекущийФайл); Если Не ПустаяСтрока(ПутьКПапкеДляКопирования) Тогда @@ -211,6 +205,28 @@ КонецПроцедуры + +// Возвращаемое значение: +// Структура: +// * КаталогДляКопирования - Строка +// * ПоследняяИтерация - Булево +// * ТекущийФайл - ОпределяемыйТип.ПрисоединенныйФайл: +// ** Имя - Строка +// * ИтоговоеОповещение - ОписаниеОповещения +// +&НаКлиенте +Функция ПараметрыТекущегоФайла(ДополнительныеПараметры, Знач ПоследняяИтерация, Знач ТекущийФайл) + КаталогДляКопирования = ПутьКПапкеДляКопирования + ПутьДня + ПолучитьРазделительПути(); + + ПараметрыТекущегоФайла = Новый Структура; + ПараметрыТекущегоФайла.Вставить("ИтоговоеОповещение", ДополнительныеПараметры.ИтоговоеОповещение); + ПараметрыТекущегоФайла.Вставить("ТекущийФайл", ТекущийФайл); + ПараметрыТекущегоФайла.Вставить("ПоследняяИтерация", ПоследняяИтерация); + ПараметрыТекущегоФайла.Вставить("КаталогДляКопирования", КаталогДляКопирования); + Возврат ПараметрыТекущегоФайла +КонецФункции + + &НаКлиенте Процедура ПроверкаСуществованияФайлаЗавершение(ФайлСуществует, ДополнительныеПараметры) Экспорт @@ -223,6 +239,10 @@ КонецПроцедуры +// Параметры: +// КаталогСуществует - Булево +// ДополнительныеПараметры - см. ПараметрыТекущегоФайла +// &НаКлиенте Процедура КаталогДняСуществуетЗавершение(КаталогСуществует, ДополнительныеПараметры) Экспорт @@ -236,9 +256,12 @@ КонецПроцедуры +// Параметры: +// ИмяКаталога - Строка +// ДополнительныеПараметры - см. ПараметрыТекущегоФайла +// &НаКлиенте Процедура СоздатьКаталогДняЗавершение(ИмяКаталога, ДополнительныеПараметры) Экспорт - КонечноеИмяФайла = ДополнительныеПараметры.КаталогДляКопирования + ДополнительныеПараметры.ТекущийФайл.Имя; Файл = Новый Файл(КонечноеИмяФайла); Файл.НачатьПроверкуСуществования(Новый ОписаниеОповещения("ПроверкаСуществованияКонечногоФайлаЗавершение", ЭтотОбъект, ДополнительныеПараметры)); @@ -307,9 +330,7 @@ ИтоговоеОповещение = ДополнительныеПараметры.ИтоговоеОповещение; // ОписаниеОповещения ПараметрыИтоговогоОповещения = ИтоговоеОповещение.ДополнительныеПараметры; - СтруктураОшибки = Новый Структура; - СтруктураОшибки.Вставить("Имя", ИмяТекущегоФайла); - СтруктураОшибки.Вставить("Ошибка", КраткоеПредставлениеОшибки(ИнформацияОбОшибке)); + СтруктураОшибки = СтруктураОшибки(ИмяТекущегоФайла, ИнформацияОбОшибке); МассивФайловСОшибками = ПараметрыИтоговогоОповещения.МассивФайловСОшибками; // Массив МассивФайловСОшибками.Добавить(СтруктураОшибки); @@ -326,11 +347,24 @@ КонецПроцедуры +// Возвращаемое значение: +// Структура: +// * Имя - Строка +// * Ошибка - Строка +// +&НаКлиенте +Функция СтруктураОшибки(ИмяТекущегоФайла, ИнформацияОбОшибке) + СтруктураОшибки = Новый Структура; + СтруктураОшибки.Вставить("Имя", ИмяТекущегоФайла); + СтруктураОшибки.Вставить("Ошибка", КраткоеПредставлениеОшибки(ИнформацияОбОшибке)); + Возврат СтруктураОшибки; +КонецФункции + &НаКлиенте Процедура ПослеОбработкиФайлов(Результат, ДополнительныеПараметры) Экспорт ЧислоУдаленныхФайлов = ДополнительныеПараметры.ЧислоУдаленныхФайлов; - МассивФайловСОшибками = ДополнительныеПараметры.МассивФайловСОшибками; + МассивФайловСОшибками = ДополнительныеПараметры.МассивФайловСОшибками;// Массив из см. СтруктураОшибки Если ЧислоУдаленныхФайлов <> 0 Тогда ТекстОповещения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( @@ -443,11 +477,11 @@ &НаКлиенте Процедура ОбработатьОшибкуПравДоступа(ИнформацияОбОшибке, ИсходноеОповещение) - ШаблонОшибки = НСтр("ru = 'Путь каталога для копирования некорректен. - |Возможно учетная запись, от лица которой работает - |сервер 1С:Предприятия, не имеет прав доступа к указанному каталогу. - | - |%1'"); + ШаблонОшибки = НСтр("ru = 'Некорректная папка для копирования. + |Возможно учетная запись, от лица которой работает + |сервер 1С:Предприятия, не имеет прав доступа к указанной папке. + | + |%1'"); ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонОшибки, КраткоеПредставлениеОшибки(ИнформацияОбОшибке)); ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибки, , , "ПутьКПапкеДляКопирования"); @@ -471,6 +505,10 @@ КонецПроцедуры +// Параметры: +// ОтчетОбОшибках - ТабличныйДокумент +// МассивФайловСОшибками - Массив из см. СтруктураОшибки +// &НаСервере Процедура СформироватьОтчетОбОшибках(ОтчетОбОшибках, МассивФайловСОшибками) diff --git a/SSL/src/Catalogs/ТомаХраненияФайлов/ManagerModule.bsl b/SSL/src/Catalogs/ТомаХраненияФайлов/ManagerModule.bsl index bee72b7d8..ab53e7119 100644 --- a/SSL/src/Catalogs/ТомаХраненияФайлов/ManagerModule.bsl +++ b/SSL/src/Catalogs/ТомаХраненияФайлов/ManagerModule.bsl @@ -18,7 +18,8 @@ // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: -// Массив Из Строка - +// Массив Из Строка +// Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт РедактируемыеРеквизиты = Новый Массив; @@ -37,6 +38,10 @@ #Область СлужебныеПроцедурыИФункции // Только для внутреннего использования. +// +// Параметры: +// Запросы - Массив +// Процедура ДобавитьЗапросыНаИспользованиеВнешнихРесурсовВсехТомов(Запросы) Экспорт Если ОбщегоНазначения.РазделениеВключено() И ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда @@ -65,6 +70,10 @@ КонецПроцедуры // Только для внутреннего использования. +// +// Параметры: +// Запросы - Массив +// Процедура ДобавитьЗапросыНаОтменуИспользованияВнешнихРесурсовВсехТомов(Запросы) Экспорт Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПрофилиБезопасности") Тогда diff --git a/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ПомощникНастройкиУчетнойЗаписи/Form.form b/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ПомощникНастройкиУчетнойЗаписи/Form.form index 38f37f1fa..64d5303d7 100644 --- a/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ПомощникНастройкиУчетнойЗаписи/Form.form +++ b/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ПомощникНастройкиУчетнойЗаписи/Form.form @@ -11,7 +11,7 @@ 207 <key>ru</key> - <value>Создание учетной записи электронной почты</value> + <value>Введите настройки почты</value> true true @@ -46,46 +46,6 @@ Left
    - - НадписьУчетнаяЗаписьНеНастроена - 5 - - <key>ru</key> - <value>Для отправки писем необходимо настроить -учетную запись электронной почты. </value> - - true - - true - - - НадписьУчетнаяЗаписьНеНастроенаРасширеннаяПодсказка - 7 - Label - true - true - - Left - - - - НадписьУчетнаяЗаписьНеНастроенаКонтекстноеМеню - 6 - true - - Label - true - - System.DefaultGUIFont - true - false - false - false - - - Left - - НеУдалосьПодключитьсяКартинкаИНадпись 158 @@ -424,6 +384,10 @@ ИспользоватьДляОтправки 191 + + <key>ru</key> + <value>Для отправки писем</value> + true true @@ -458,6 +422,10 @@ ИспользоватьДляПолучения 194 + + <key>ru</key> + <value>Для получения писем</value> + true true @@ -496,7 +464,7 @@ <key>ru</key> - <value>Использовать учетную запись</value> + <value>Почта будет использоваться</value> ИспользоватьУчетнуюЗаписьРасширеннаяПодсказка @@ -559,7 +527,7 @@ ru - Для всех + Всеми пользователями (общая почта) Общая @@ -568,7 +536,7 @@ ru - Только для меня + Только мной Персональная @@ -582,10 +550,6 @@ true - - <key>ru</key> - <value>Для кого учетная запись</value> - ДляКогоУчетнаяЗаписьРасширеннаяПодсказка 248 @@ -603,7 +567,6 @@ NormalSeparation true true - auto Auto Auto @@ -730,99 +693,6 @@ Auto - - СпособНастройкиУчетнойЗаписи - 154 - - СпособНастройки - 50 - - <key>ru</key> - <value>Настроить</value> - - true - true - - true - - - СпособНастройки - - None - - OnChange - СпособНастройкиПриИзменении - - - СпособНастройкиРасширеннаяПодсказка - 52 - Label - true - true - - Left - - - - СпособНастройкиКонтекстноеМеню - 51 - true - - RadioButtonField - Enter - true - Left - true - - RadioButtons - 1 - - - ru - Определить параметры подключения автоматически (рекомендуется) - - - Автоматически - - - - - ru - Настроить параметры подключения вручную - - - Вручную - - - Vertical - - - true - true - - true - - - СпособНастройкиУчетнойЗаписиРасширеннаяПодсказка - 155 - Label - true - true - - Left - - - UsualGroup - - Vertical - Auto - NormalSeparation - true - true - Auto - Auto - - true true @@ -852,21 +722,28 @@ НастройкаСервераИсходящейПочты 38 - - НастройкаСервераИсходящейПочтыЗаголовок - 210 + + Протокол + 116 <key>ru</key> - <value>Настройка сервера исходящей почты</value> + <value>Тип учетной записи</value> true true true + + Протокол + + + OnChange + ПротоколПриИзменении + - НастройкаСервераИсходящейПочтыЗаголовокРасширеннаяПодсказка - 212 + ПротоколРасширеннаяПодсказка + 118 Label true true @@ -875,32 +752,48 @@ - НастройкаСервераИсходящейПочтыЗаголовокКонтекстноеМеню - 211 + ПротоколКонтекстноеМеню + 117 true - Label - true - - System.DefaultGUIFont - true - false - false - false - - - Left + InputField + true + Enter + true + Left + true + + 8 + true + true + false + true + true + true + true + true + + + IMAP + + + + + POP + + + Normal - ЛогинИПарольПриОтправкеПисем - 78 + ПротоколИПортСервераВходящейПочты + 114 - ИмяПользователяДляОтправкиПисем - 80 + СерверВходящейПочты + 111 <key>ru</key> - <value>Имя пользователя</value> + <value>Сервер IMAP</value> true true @@ -908,11 +801,12 @@ true - ИмяПользователяДляОтправкиПисем + СерверВходящейПочты + Top - ИмяПользователяДляОтправкиПисемРасширеннаяПодсказка - 82 + СерверВходящейПочтыРасширеннаяПодсказка + 113 Label true true @@ -921,8 +815,8 @@ - ИмяПользователяДляОтправкиПисемКонтекстноеМеню - 81 + СерверВходящейПочтыКонтекстноеМеню + 112 true InputField @@ -932,7 +826,7 @@ Left true - 25 + 22 true true false @@ -945,11 +839,11 @@ - ПарольДляОтправкиПисем - 83 + ПортВходящейПочты + 119 <key>ru</key> - <value>Пароль</value> + <value>Порт</value> true true @@ -957,11 +851,12 @@ true - ПарольДляОтправкиПисем + ПортСервераВходящейПочты + Top - ПарольДляОтправкиПисемРасширеннаяПодсказка - 85 + ПортВходящейПочтыРасширеннаяПодсказка + 121 Label true true @@ -970,8 +865,8 @@ - ПарольДляОтправкиПисемКонтекстноеМеню - 84 + ПортВходящейПочтыКонтекстноеМеню + 120 true InputField @@ -981,12 +876,9 @@ Left true - 25 true true - false true - true true true true @@ -994,14 +886,72 @@ Normal + + ШифрованиеПриПолученииПочты + 265 + true + true + + true + + + ШифрованиеПриПолученииПочты + + Top + + OnChange + ШифрованиеПриПолученииПочтыПриИзменении + + + ШифрованиеПриПолученииПочтыРасширеннаяПодсказка + 267 + Label + true + true + + Left + + + + ШифрованиеПриПолученииПочтыКонтекстноеМеню + 266 + true + + RadioButtonField + Enter + true + Left + true + + + + ru + STARTTLS + + + Авто + + + + + ru + SSL + + + SSL + + + Vertical + + true true true - ЛогинИПарольПриОтправкеПисемРасширеннаяПодсказка - 79 + ПротоколИПортСервераВходящейПочтыРасширеннаяПодсказка + 115 Label true true @@ -1011,9 +961,8 @@ UsualGroup - Vertical + HorizontalIfPossible Auto - NormalSeparation true true Auto @@ -1028,7 +977,7 @@ 91 <key>ru</key> - <value>Сервер</value> + <value>Сервер SMTP</value> true true @@ -1038,6 +987,7 @@ СерверИсходящейПочты + Top СерверИсходящейПочтыРасширеннаяПодсказка 93 @@ -1087,6 +1037,7 @@ ПортСервераИсходящейПочты + Top ПортСервераИсходящейПочтыРасширеннаяПодсказка 96 @@ -1119,6 +1070,64 @@ Normal + + ШифрованиеПриОтправкеПочты + 262 + true + true + + true + + + ШифрованиеПриОтправкеПочты + + Top + + OnChange + ШифрованиеПриОтправкеПочтыПриИзменении + + + ШифрованиеПриОтправкеПочтыРасширеннаяПодсказка + 264 + Label + true + true + + Left + + + + ШифрованиеПриОтправкеПочтыКонтекстноеМеню + 263 + true + + RadioButtonField + Enter + true + Left + true + + + + ru + STARTTLS + + + Авто + + + + + ru + SSL + + + SSL + + + Vertical + + true true @@ -1144,674 +1153,6 @@ Auto
    - - ШифрованиеПриОтправкеПочты - 262 - true - true - - true - - - ШифрованиеПриОтправкеПочты - - - OnChange - ШифрованиеПриОтправкеПочтыПриИзменении - - - ШифрованиеПриОтправкеПочтыРасширеннаяПодсказка - 264 - Label - true - true - - Left - - - - ШифрованиеПриОтправкеПочтыКонтекстноеМеню - 263 - true - - RadioButtonField - Enter - true - Left - true - - - - ru - Авто - - - Авто - - - - - ru - Всегда (SSL) - - - SSL - - - Vertical - - - - ДлительностьОжиданияИсходящейПочты - 179 - - ДлительностьОжиданияСервераПриОтправкеПисем - 181 - - <key>ru</key> - <value>Длительность ожидания сервера</value> - - true - true - - true - - - ДлительностьОжиданияСервераПриОтправкеПисем - - - ДлительностьОжиданияСервераПриОтправкеПисемРасширеннаяПодсказка - 183 - Label - true - true - - Left - - - - ДлительностьОжиданияСервераПриОтправкеПисемКонтекстноеМеню - 182 - true - - InputField - true - Enter - true - Left - true - - true - true - true - true - true - true - true - true - - 5 - - Normal - - - - НадписьСекунд1 - 184 - - <key>ru</key> - <value>сек.</value> - - true - true - - true - - - НадписьСекунд1РасширеннаяПодсказка - 186 - Label - true - true - - Left - - - - НадписьСекунд1КонтекстноеМеню - 185 - true - - Label - true - - Left - - - true - - true - - - ДлительностьОжиданияИсходящейПочтыРасширеннаяПодсказка - 180 - Label - true - true - - Left - - - UsualGroup - - HorizontalIfPossible - Auto - true - true - Auto - Auto - - - - Группа1 - 187 - true - true - - true - - - Группа1РасширеннаяПодсказка - 188 - Label - true - true - - Left - - - UsualGroup - - Vertical - Auto - NormalSeparation - true - true - Auto - Auto - - - true - true - - true - - - <key>ru</key> - <value>Настройка сервера исходящей почты</value> - - - НастройкаСервераИсходящейПочтыРасширеннаяПодсказка - 39 - Label - true - true - - Left - - - Page - - Vertical - auto - false - -
    - - НастройкаСервераВходящейПочты - 40 - - НастройкаСервераВходящейПочтыЗаголовок - 213 - - <key>ru</key> - <value>Настройка сервера входящей почты</value> - - true - true - - true - - - НастройкаСервераВходящейПочтыЗаголовокРасширеннаяПодсказка - 215 - Label - true - true - - Left - - - - НастройкаСервераВходящейПочтыЗаголовокКонтекстноеМеню - 214 - true - - Label - true - - System.DefaultGUIFont - true - false - false - false - - - Left - - - - ИмяПользователяДляПолученияПисем - 100 - - <key>ru</key> - <value>Имя пользователя</value> - - true - true - - true - - - ИмяПользователяДляПолученияПисем - - - ИмяПользователяДляПолученияПисемРасширеннаяПодсказка - 102 - Label - true - true - - Left - - - - ИмяПользователяДляПолученияПисемКонтекстноеМеню - 101 - true - - InputField - true - Enter - true - Left - true - - 25 - true - true - false - true - true - true - true - true - Normal - - - - ПарольДляПолученияПисем - 103 - - <key>ru</key> - <value>Пароль</value> - - true - true - - true - - - ПарольДляПолученияПисем - - - ПарольДляПолученияПисемРасширеннаяПодсказка - 105 - Label - true - true - - Left - - - - ПарольДляПолученияПисемКонтекстноеМеню - 104 - true - - InputField - true - Enter - true - Left - true - - 25 - true - true - false - true - true - true - true - true - true - Normal - - - - НастройкиСервераВходящейПочты - 109 - - Протокол - 116 - - <key>ru</key> - <value>Протокол</value> - - true - true - - true - - - Протокол - - - OnChange - ПротоколПриИзменении - - - ПротоколРасширеннаяПодсказка - 118 - Label - true - true - - Left - - - - ПротоколКонтекстноеМеню - 117 - true - - InputField - true - Enter - true - Left - true - - 8 - true - true - false - true - true - true - true - true - - - IMAP - - - - - POP - - - Normal - - - - ПротоколИПортСервераВходящейПочты - 114 - - СерверВходящейПочты - 111 - - <key>ru</key> - <value>Сервер</value> - - true - true - - true - - - СерверВходящейПочты - - Left - - СерверВходящейПочтыРасширеннаяПодсказка - 113 - Label - true - true - - Left - - - - СерверВходящейПочтыКонтекстноеМеню - 112 - true - - InputField - true - Enter - true - Left - true - - 22 - true - true - false - true - true - true - true - true - Normal - - - - ПортВходящейПочты - 119 - - <key>ru</key> - <value>Порт</value> - - true - true - - true - - - ПортСервераВходящейПочты - - - ПортВходящейПочтыРасширеннаяПодсказка - 121 - Label - true - true - - Left - - - - ПортВходящейПочтыКонтекстноеМеню - 120 - true - - InputField - true - Enter - true - Left - true - - 8 - true - true - true - true - true - true - true - Normal - - - true - true - - true - - - ПротоколИПортСервераВходящейПочтыРасширеннаяПодсказка - 115 - Label - true - true - - Left - - - UsualGroup - - HorizontalIfPossible - Auto - true - true - Auto - Auto - - - - ТипСоединенияИДлительностьОжидания - 122 - true - true - - true - - - ТипСоединенияИДлительностьОжиданияРасширеннаяПодсказка - 123 - Label - true - true - - Left - - - UsualGroup - - Vertical - Auto - true - true - Auto - Auto - - - - ШифрованиеПриПолученииПочты - 265 - true - true - - true - - - ШифрованиеПриПолученииПочты - - - OnChange - ШифрованиеПриПолученииПочтыПриИзменении - - - ШифрованиеПриПолученииПочтыРасширеннаяПодсказка - 267 - Label - true - true - - Left - - - - ШифрованиеПриПолученииПочтыКонтекстноеМеню - 266 - true - - RadioButtonField - Enter - true - Left - true - - - - ru - Авто - - - Авто - - - - - ru - Всегда (SSL) - - - SSL - - - Vertical - - - true - true - - true - - - НастройкиСервераВходящейПочтыРасширеннаяПодсказка - 110 - Label - true - true - - Left - - - UsualGroup - - Vertical - Auto - NormalSeparation - true - true - Auto - Auto - - ОставлятьПисьмаНаСервере 135 @@ -2036,237 +1377,11 @@ <key>ru</key> - <value>Настройка сервера входящей почты</value> + <value>Настройка сервера исходящей почты</value> - НастройкаСервераВходящейПочтыРасширеннаяПодсказка - 41 - Label - true - true - - Left - - - Page - - Vertical - auto - false - - - - ДополнительныеНастройки - 42 - - ДополнительныеНастройкиЗаголовок - 229 - - <key>ru</key> - <value>Дополнительные настройки</value> - - true - true - - true - - - ДополнительныеНастройкиЗаголовокРасширеннаяПодсказка - 231 - Label - true - true - - Left - - - - ДополнительныеНастройкиЗаголовокКонтекстноеМеню - 230 - true - - Label - true - - System.DefaultGUIFont - true - false - false - false - - - Left - - - - НазваниеУчетнойЗаписи - 148 - true - true - - true - - - НазваниеУчетнойЗаписи - - - НазваниеУчетнойЗаписиРасширеннаяПодсказка - 150 - Label - true - true - - Left - - - - НазваниеУчетнойЗаписиКонтекстноеМеню - 149 - true - - InputField - true - Enter - true - Left - true - - 25 - true - true - true - true - true - true - true - Normal - - - - ДлительностьОжидания - 127 - - ДлительностьОжиданияСервераПриПолученииПисем - 129 - - <key>ru</key> - <value>Длительность ожидания сервера</value> - - true - true - - true - - - ДлительностьОжиданияСервера - - - ДлительностьОжиданияСервераПриПолученииПисемРасширеннаяПодсказка - 131 - Label - true - true - - Left - - - - ДлительностьОжиданияСервераПриПолученииПисемКонтекстноеМеню - 130 - true - - InputField - true - Enter - true - Left - true - - true - true - true - true - true - true - true - true - - 5 - - Normal - - - - НадписьСекунд - 132 - - <key>ru</key> - <value>сек.</value> - - true - true - - true - - - НадписьСекундРасширеннаяПодсказка - 134 - Label - true - true - - Left - - - - НадписьСекундКонтекстноеМеню - 133 - true - - Label - true - - Left - - - true - true - - true - - - ДлительностьОжиданияРасширеннаяПодсказка - 128 - Label - true - true - - Left - - - UsualGroup - - AlwaysHorizontal - Auto - NormalSeparation - true - true - Auto - Auto - - - true - true - - true - - - <key>ru</key> - <value>Дополнительные настройки</value> - - - ДополнительныеНастройкиРасширеннаяПодсказка - 43 + НастройкаСервераИсходящейПочтыРасширеннаяПодсказка + 39 Label true true @@ -2284,46 +1399,6 @@ ПроверкаНастроекУчетнойЗаписи 34 - - ПроверкаНастроекУчетнойЗаписиЗаголовок - 232 - - <key>ru</key> - <value>Проверка настроек учетной записи</value> - - true - true - - true - - - ПроверкаНастроекУчетнойЗаписиЗаголовокРасширеннаяПодсказка - 234 - Label - true - true - - Left - - - - ПроверкаНастроекУчетнойЗаписиЗаголовокКонтекстноеМеню - 233 - true - - Label - true - - System.DefaultGUIFont - true - false - false - false - - - Left - - ПроверкаНастроекУчетнойЗаписиКартинкаИНадпись 53 @@ -2363,7 +1438,7 @@ 58 <key>ru</key> - <value>Выполняется проверка настроек учетной записи. + <value>Выполняется проверка настроек почты. Это может занять несколько минут.</value> true @@ -2449,7 +1524,11 @@ 275 КартинкаПриПроверкеОбнаруженыОшибки - 277 + 279 + + <key>ru</key> + <value>Картинка вопрос</value> + true true @@ -2457,7 +1536,7 @@ КартинкаПредупреждениеРасширеннаяПодсказка1 - 279 + 281 Label true true @@ -2467,7 +1546,7 @@ КартинкаПредупреждениеКонтекстноеМеню1 - 278 + 280 true true @@ -2480,10 +1559,10 @@ ГруппаПриПроверкеОбнаруженыОшибки - 280 + 282 ТекстПриПроверкеОбнаруженыОшибки - 282 + 284 true true @@ -2495,7 +1574,7 @@ None СообщенияОбОшибкахРасширеннаяПодсказка1 - 284 + 286 Label true true @@ -2505,7 +1584,7 @@ СообщенияОбОшибкахКонтекстноеМеню1 - 283 + 285 true InputField @@ -2539,7 +1618,7 @@ НужнаПомощьПриПроверкеОбнаруженыОшибки - 285 + 287 <key>ru</key> <value>Нужна помощь?</value> @@ -2551,7 +1630,7 @@ </userVisible> <extendedTooltip> <name>НужнаПомощьРасширеннаяПодсказка1</name> - <id>287</id> + <id>289</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -2561,7 +1640,7 @@ </extendedTooltip> <contextMenu> <name>НужнаПомощьКонтекстноеМеню1</name> - <id>286</id> + <id>288</id> <autoFill>true</autoFill> </contextMenu> <type>Label</type> @@ -2584,7 +1663,7 @@ </userVisible> <extendedTooltip> <name>ГруппаСообщенияОбОшибкахРасширеннаяПодсказка1</name> - <id>281</id> + <id>283</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -2636,9 +1715,8 @@ <id>235</id> <title> <key>ru</key> - <value>Учетная запись успешно настроена</value> + <value>Почта успешно настроена</value> - true true true @@ -2714,7 +1792,7 @@ 69 <key>ru</key> - <value>Настройка параметров учетной записи + <value>Настройка параметров почты vasyapupkin@example.com завершена.</value> true @@ -3081,10 +2159,6 @@ vasyapupkin@example.com завершена. СпособНастройки - - <key>ru</key> - <value>Способ настройки</value> - 3 String @@ -3114,10 +2188,6 @@ vasyapupkin@example.com завершена. ИмяПользователяДляОтправкиПисем - - <key>ru</key> - <value>Имя пользователя для отправки писем</value> - 5 String @@ -3134,10 +2204,6 @@ vasyapupkin@example.com завершена. ПарольДляОтправкиПисем - - <key>ru</key> - <value>Пароль для отправки писем</value> - 6 String @@ -3208,10 +2274,6 @@ vasyapupkin@example.com завершена. ИмяПользователяДляПолученияПисем - - <key>ru</key> - <value>Имя пользователя для получения писем</value> - 11 String @@ -3322,10 +2384,6 @@ vasyapupkin@example.com завершена. ДлительностьОжиданияСервера - - <key>ru</key> - <value>Длительность ожидания сервера</value> - 18 Number @@ -3360,10 +2418,6 @@ vasyapupkin@example.com завершена. НазваниеУчетнойЗаписи - - <key>ru</key> - <value>Наименование учетной записи</value> - 21 String @@ -3439,10 +2493,6 @@ vasyapupkin@example.com завершена. ДлительностьОжиданияСервераПриОтправкеПисем - - <key>ru</key> - <value>Длительность ожидания сервера при отправке писем</value> - 26 Number diff --git a/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ПомощникНастройкиУчетнойЗаписи/Module.bsl b/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ПомощникНастройкиУчетнойЗаписи/Module.bsl index e4b5b993f..4a92387f6 100644 --- a/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ПомощникНастройкиУчетнойЗаписи/Module.bsl +++ b/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ПомощникНастройкиУчетнойЗаписи/Module.bsl @@ -20,7 +20,6 @@ ИспользуютсяПрофилиБезопасности = Ложь; КонецЕсли; - Элементы.СпособНастройки.Видимость = Не ИспользуютсяПрофилиБезопасности; Если ИспользуютсяПрофилиБезопасности Тогда СпособНастройки = "Вручную"; Иначе @@ -35,14 +34,11 @@ Элементы.ОставлятьПисьмаНаСервере.Видимость = ДоступноПолучениеПисем; Элементы.НастройкаУчетнойЗаписиЗаголовок.Заголовок = ?(КонтекстныйРежим, - НСтр("ru = 'Для отправки писем необходимо настроить учетную запись электронной почты'"), - НСтр("ru = 'Введите параметры учетной записи'")); + НСтр("ru = 'Для отправки писем необходимо настроить почту'"), + НСтр("ru = 'Введите настройки почты'")); - Если КонтекстныйРежим Или Перенастройка Тогда - Заголовок = НСтр("ru = 'Настройка учетной записи электронной почты'"); - Иначе - Заголовок = НСтр("ru = 'Создание учетной записи электронной почты'"); - КонецЕсли; + Элементы.НастройкаУчетнойЗаписиЗаголовок.Видимость = КонтекстныйРежим; + Заголовок = НСтр("ru = 'Настройка почты'"); ИспользоватьДляПолучения = Не КонтекстныйРежим И ДоступноПолучениеПисем; ИспользоватьДляОтправки = Истина; @@ -87,8 +83,9 @@ КонецЕсли; ЭтоПолноправныйПользователь = Пользователи.ЭтоПолноправныйПользователь(); - Элементы.ДляКогоУчетнаяЗапись.Видимость = ЭтоПолноправныйПользователь; + Элементы.ДляКогоУчетнаяЗапись.Видимость = ЭтоПолноправныйПользователь И Не КонтекстныйРежим; ВидУчетнойЗаписи = ?(ЭтоПолноправныйПользователь, "Общая", "Персональная"); + Элементы.ИмяОтправителя.Видимость = Не КонтекстныйРежим; ТребуетсяАвторизацияПриОтправкеПисем = Истина; @@ -145,14 +142,11 @@ ТребуетсяПодтверждениеЗакрытияФормы = Истина; КонецПроцедуры -&НаКлиенте -Процедура СпособНастройкиПриИзменении(Элемент) - НастроитьЭлементыТекущейСтраницы(); -КонецПроцедуры - &НаКлиенте Процедура ПротоколПриИзменении(Элемент) УстановитьВидимостьЭлементов(); + Элементы.СерверВходящейПочты.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Сервер %1'"), Протокол); КонецПроцедуры &НаКлиенте @@ -210,20 +204,6 @@ ПредыдущаяСтраница = Неопределено; Если ТекущаяСтраница = Элементы.НастройкаСервераИсходящейПочты Тогда ПредыдущаяСтраница = Элементы.НастройкаУчетнойЗаписи; - ИначеЕсли ТекущаяСтраница = Элементы.НастройкаСервераВходящейПочты Тогда - Если ИспользоватьДляОтправки Тогда - ПредыдущаяСтраница = Элементы.НастройкаСервераИсходящейПочты; - Иначе - ПредыдущаяСтраница = Элементы.НастройкаУчетнойЗаписи; - КонецЕсли; - ИначеЕсли ТекущаяСтраница = Элементы.ДополнительныеНастройки Тогда - Если ИспользоватьДляОтправки Или ИспользоватьДляПолучения Тогда - ПредыдущаяСтраница = Элементы.НастройкаСервераВходящейПочты; - ИначеЕсли ИспользоватьДляОтправки Тогда - ПредыдущаяСтраница = Элементы.НастройкаСервераИсходящейПочты; - Иначе - ПредыдущаяСтраница = Элементы.НастройкаУчетнойЗаписи; - КонецЕсли; ИначеЕсли ТекущаяСтраница = Элементы.ПроверкаНастроекУчетнойЗаписи Или ТекущаяСтраница = Элементы.ПриПроверкеОбнаруженыОшибки Тогда ПредыдущаяСтраница = Элементы.НастройкаУчетнойЗаписи; КонецЕсли; @@ -251,7 +231,7 @@ Кнопки = Новый СписокЗначений; Кнопки.Добавить("Закрыть", НСтр("ru = 'Закрыть'")); Кнопки.Добавить(КодВозвратаДиалога.Отмена, НСтр("ru = 'Не закрывать'")); - ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, Кнопки, , КодВозвратаДиалога.Отмена, НСтр("ru = 'Настройка учетной записи'")); + ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, Кнопки, , КодВозвратаДиалога.Отмена, НСтр("ru = 'Настройка почты'")); КонецПроцедуры &НаКлиенте @@ -281,19 +261,13 @@ Если СпособНастройки = "Автоматически" Или ПроверкаЗавершиласьСОшибками Тогда СледующаяСтраница = Элементы.ПроверкаНастроекУчетнойЗаписи; Иначе - Если ИспользоватьДляОтправки Тогда + Если ИспользоватьДляОтправки Или ИспользоватьДляПолучения Тогда СледующаяСтраница = Элементы.НастройкаСервераИсходящейПочты; - ИначеЕсли ИспользоватьДляПолучения Тогда - СледующаяСтраница = Элементы.НастройкаСервераВходящейПочты; Иначе - СледующаяСтраница = Элементы.ДополнительныеНастройки; + СледующаяСтраница = Элементы.ПроверкаНастроекУчетнойЗаписи; КонецЕсли; КонецЕсли; ИначеЕсли ТекущаяСтраница = Элементы.НастройкаСервераИсходящейПочты Тогда - СледующаяСтраница = Элементы.НастройкаСервераВходящейПочты; - ИначеЕсли ТекущаяСтраница = Элементы.НастройкаСервераВходящейПочты Тогда - СледующаяСтраница = Элементы.ДополнительныеНастройки; - ИначеЕсли ТекущаяСтраница = Элементы.ДополнительныеНастройки Тогда СледующаяСтраница = Элементы.ПроверкаНастроекУчетнойЗаписи; ИначеЕсли ТекущаяСтраница = Элементы.ПроверкаНастроекУчетнойЗаписи Тогда Если ПроверкаЗавершиласьСОшибками Тогда @@ -454,25 +428,24 @@ И ПроверкаЗавершиласьСОшибками Или Не КонтекстныйРежим И Не Перенастройка И ТекущаяСтраница = Элементы.УчетнаяЗаписьУспешноНастроена); Если Не КонтекстныйРежим И ТекущаяСтраница = Элементы.УчетнаяЗаписьУспешноНастроена Тогда - Элементы.КнопкаПерейтиКНастройкам.Заголовок = НСтр("ru = 'Перейти к учетной записи'"); + Элементы.КнопкаПерейтиКНастройкам.Заголовок = НСтр("ru = 'Перейти к настройкам'"); Иначе Элементы.КнопкаПерейтиКНастройкам.Заголовок = НСтр("ru = 'Настроить вручную'"); КонецЕсли; Если ТекущаяСтраница = Элементы.НастройкаУчетнойЗаписи Тогда Элементы.НеУдалосьПодключитьсяКартинкаИНадпись.Видимость = ПроверкаЗавершиласьСОшибками; - Элементы.СпособНастройки.Видимость = Не ПроверкаЗавершиласьСОшибками И Не ИспользуютсяПрофилиБезопасности; КонецЕсли; - Если ТекущаяСтраница = Элементы.НастройкаСервераВходящейПочты Тогда + Если ТекущаяСтраница = Элементы.НастройкаСервераИсходящейПочты Тогда ОбновитьДоступностьНастройкиДнейДоУдаления(); УстановитьВидимостьЭлементов(); КонецЕсли; Если ТекущаяСтраница = Элементы.УчетнаяЗаписьУспешноНастроена Тогда Элементы.НадписьУчетнаяЗаписьУспешноНастроена.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Настройка параметров учетной записи - |%1 завершена.'"), АдресЭлектроннойПочты); + НСтр("ru = 'Настройка почты + |%1 успешно завершена.'"), АдресЭлектроннойПочты); КонецЕсли; КонецПроцедуры @@ -621,6 +594,7 @@ УчетнаяЗапись.ПериодХраненияСообщенийНаСервере = ?(ОставлятьКопииПисемНаСервере И УдалятьПисьмаССервера И Протокол = "POP", ПериодХраненияСообщенийНаСервере, 0); УчетнаяЗапись.ПротоколВходящейПочты = Протокол; УчетнаяЗапись.Наименование = НазваниеУчетнойЗаписи; + УчетнаяЗапись.ПриОтправкеПисемТребуетсяАвторизация = ЗначениеЗаполнено(УчетнаяЗапись.ПользовательSMTP); Если ВидУчетнойЗаписи = "Персональная" Тогда УчетнаяЗапись.ВладелецУчетнойЗаписи = Пользователи.ТекущийПользователь(); Иначе diff --git a/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ПроверкаНастроекУчетнойЗаписи/Form.form b/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ПроверкаНастроекУчетнойЗаписи/Form.form index 8317d3d82..26c0d499b 100644 --- a/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ПроверкаНастроекУчетнойЗаписи/Form.form +++ b/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ПроверкаНастроекУчетнойЗаписи/Form.form @@ -42,7 +42,7 @@ 163 <key>ru</key> - <value>Выполняется проверка настроек учетной записи. + <value>Выполняется проверка настроек почты. Это может занять несколько минут.</value> true @@ -101,34 +101,6 @@ ПриПроверкеОбнаруженыОшибки 3 - - НеУдалосьПодключитьсяКартинкаИНадпись - 11 - true - true - - true - - - НеУдалосьПодключитьсяКартинкаИНадписьРасширеннаяПодсказка - 12 - Label - true - true - - Left - - - UsualGroup - - AlwaysHorizontal - Auto - true - true - Auto - Auto - - КартинкаПредупреждение 13 @@ -356,7 +328,7 @@ 176 <key>ru</key> - <value>Проверка настроек учетной записи завершилась успешно:</value> + <value>Проверка настроек почты завершилась успешно:</value> true true diff --git a/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаВыбора/Form.form b/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаВыбора/Form.form index a388b41ba..223650480 100644 --- a/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаВыбора/Form.form +++ b/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаВыбора/Form.form @@ -373,6 +373,10 @@ Left + + OnOpen + ПриОткрытии + OnCreateAtServer ПриСозданииНаСервере @@ -431,6 +435,19 @@ true + + ПредлагатьНастройкуПочты + 3 + + Boolean + + + true + + + true + + diff --git a/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаВыбора/Module.bsl b/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаВыбора/Module.bsl index 3043ca4f8..8d5379fce 100644 --- a/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаВыбора/Module.bsl +++ b/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаВыбора/Module.bsl @@ -20,6 +20,9 @@ Элементы.ВладелецУчетнойЗаписи.Видимость = ПоказыватьПерсональныеУчетныеЗаписиПользователей; + ПредлагатьНастройкуПочты = РаботаСПочтовымиСообщениями.ДоступнаОтправкаПисем() + И РаботаСПочтовымиСообщениями.ДоступныеУчетныеЗаписи(Истина, Ложь, Истина).Количество() = 0; + КонецПроцедуры #КонецОбласти @@ -50,5 +53,20 @@ Список, "ВладелецУчетнойЗаписи", СписокПользователей, ВидСравненияКомпоновкиДанных.ВСписке, , Не ПоказыватьПерсональныеУчетныеЗаписиПользователей); КонецПроцедуры - + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + Если ПредлагатьНастройкуПочты Тогда + ПодключитьОбработчикОжидания("НастроитьПочту", 0.1, Истина); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура НастроитьПочту() + + РаботаСПочтовымиСообщениямиКлиент.ПроверитьНаличиеУчетнойЗаписиДляОтправкиПочты(Неопределено); + +КонецПроцедуры + + #КонецОбласти \ No newline at end of file diff --git a/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаСписка/Form.form b/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаСписка/Form.form index d3253189f..fd82623a9 100644 --- a/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаСписка/Form.form +++ b/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаСписка/Form.form @@ -167,7 +167,7 @@ 8 <key>ru</key> - <value>Адрес электронной почты</value> + <value>Адрес почты</value> true true @@ -280,6 +280,10 @@ Left true + + OnActivateRow + СписокПриАктивизацииСтроки + СписокСтрокаПоиска 31 diff --git a/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаСписка/Module.bsl b/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаСписка/Module.bsl index 4011e0d33..7c771891d 100644 --- a/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаСписка/Module.bsl +++ b/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаСписка/Module.bsl @@ -23,6 +23,11 @@ Элементы.ВладелецУчетнойЗаписи.Видимость = ПоказыватьПерсональныеУчетныеЗаписиПользователей; Элементы.ПоказыватьНедействительные.Доступность = ПоказыватьПерсональныеУчетныеЗаписиПользователей; + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда + МодульПодключаемыеКоманды = ОбщегоНазначения.ОбщийМодуль("ПодключаемыеКоманды"); + МодульПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект); + КонецЕсли; + КонецПроцедуры #КонецОбласти @@ -51,6 +56,58 @@ #КонецОбласти +#Область ОбработчикиСобытийЭлементовТаблицыФормыСписок + +&НаКлиенте +Процедура СписокПриАктивизацииСтроки(Элемент) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда + МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент"); + МодульПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура Подключаемый_ОбновитьКоманды() + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда + МодульПодключаемыеКомандыКлиентСервер = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиентСервер"); + МодульПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Элементы.Список); + КонецЕсли; +КонецПроцедуры + + +&НаСервере +Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения) + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда + МодульПодключаемыеКоманды = ОбщегоНазначения.ОбщийМодуль("ПодключаемыеКоманды"); + МодульПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Элементы.Список); + КонецЕсли; +КонецПроцедуры + + +&НаКлиенте +Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт + ВыполнитьКомандуНаСервере(ПараметрыВыполнения); +КонецПроцедуры + + +&НаКлиенте +Процедура Подключаемый_ВыполнитьКоманду(Команда) + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда + МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент"); + МодульПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Элементы.Список); + КонецЕсли; +КонецПроцедуры + +#КонецОбласти + + + #Область СлужебныеПроцедурыИФункции &НаКлиентеНаСервереБезКонтекста diff --git a/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаЭлемента/Form.form b/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаЭлемента/Form.form index 2596517a3..bb4102227 100644 --- a/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаЭлемента/Form.form +++ b/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаЭлемента/Form.form @@ -57,6 +57,10 @@ АдресЭлектроннойПочты 80 + + <key>ru</key> + <value>Адрес почты</value> + true true @@ -271,7 +275,7 @@ <key>ru</key> - <value>Использование учетной записи</value> + <value>Почта используется</value> ИспользоватьУчетнуюЗаписьРасширеннаяПодсказка @@ -342,7 +346,7 @@ ru - Для всех + Всеми пользователями Общая @@ -351,7 +355,7 @@ ru - Только для: + Одним пользователем: Персональная @@ -419,7 +423,7 @@ ru Для кого учетная запись - 46 + 60 false ГруппаДляКогоУчетнаяЗаписьРасширеннаяПодсказка @@ -516,7 +520,7 @@ ЛогинПароль 263 - ИмяПользователяДляПолученияПисем + Логин 102 <key>ru</key> @@ -531,7 +535,7 @@ <segments>Объект.Пользователь</segments> </dataPath> <extendedTooltip> - <name>ИмяПользователяДляПолученияПисемРасширеннаяПодсказка</name> + <name>ЛогинРасширеннаяПодсказка</name> <id>104</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> @@ -541,7 +545,7 @@ </extInfo> </extendedTooltip> <contextMenu> - <name>ИмяПользователяДляПолученияПисемКонтекстноеМеню</name> + <name>ЛогинКонтекстноеМеню</name> <id>103</id> <autoFill>true</autoFill> </contextMenu> @@ -563,7 +567,7 @@ </extInfo> </items> <items xsi:type="form:FormField"> - <name>ПарольДляПолученияПисем</name> + <name>Пароль</name> <id>105</id> <visible>true</visible> <enabled>true</enabled> @@ -575,10 +579,10 @@ </dataPath> <handlers> <event>OnChange</event> - <name>ПарольДляПолученияПисемПриИзменении</name> + <name>ПарольПриИзменении</name> </handlers> <extendedTooltip> - <name>ПарольДляПолученияПисемРасширеннаяПодсказка</name> + <name>ПарольРасширеннаяПодсказка</name> <id>107</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> @@ -588,7 +592,7 @@ </extInfo> </extendedTooltip> <contextMenu> - <name>ПарольДляПолученияПисемКонтекстноеМеню</name> + <name>ПарольКонтекстноеМеню</name> <id>106</id> <autoFill>true</autoFill> </contextMenu> @@ -600,11 +604,11 @@ <extInfo xsi:type="form:InputFieldExtInfo"> <handlers> <event>EditTextChange</event> - <name>ПарольДляПолученияПисемИзменениеТекстаРедактирования</name> + <name>ПарольИзменениеТекстаРедактирования</name> </handlers> <handlers> <event>StartChoice</event> - <name>ПарольДляПолученияПисемНачалоВыбора</name> + <name>ПарольНачалоВыбора</name> </handlers> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -908,70 +912,6 @@ <items xsi:type="form:FormGroup"> <name>НастройкиСервераВходящейПочты</name> <id>125</id> - <items xsi:type="form:FormGroup"> - <name>ПротоколИПортСервераВходящейПочты</name> - <id>111</id> - <visible>true</visible> - <enabled>true</enabled> - <userVisible> - <common>true</common> - </userVisible> - <title> - <key>ru</key> - <value>Протокол и порт сервера входящей почты</value> - - - ПротоколИПортСервераВходящейПочтыРасширеннаяПодсказка - 112 - Label - true - true - - Left - - - UsualGroup - - HorizontalIfPossible - Auto - true - true - Auto - Auto - - - - ТипСоединенияИДлительностьОжидания - 187 - true - true - - true - - - <key>ru</key> - <value>Тип соединения и длительность ожидания</value> - - - ТипСоединенияИДлительностьОжиданияРасширеннаяПодсказка - 188 - Label - true - true - - Left - - - UsualGroup - - Vertical - Auto - true - true - Auto - Auto - - СерверВходящейПочты 113 @@ -1107,7 +1047,7 @@ ru - Авто + STARTTLS Авто @@ -1116,7 +1056,7 @@ ru - Всегда (SSL) + SSL SSL @@ -1293,7 +1233,7 @@ ru - Авто + STARTTLS Авто @@ -1302,7 +1242,7 @@ ru - Всегда (SSL) + SSL SSL @@ -1381,75 +1321,9 @@ true - - ПолучениеПисем - 98 - true - true - - true - - - <key>ru</key> - <value>Получение писем</value> - - - ПолучениеПисемРасширеннаяПодсказка - 99 - Label - true - true - - Left - - - UsualGroup - - Vertical - Auto - WeakSeparation - true - true - Auto - Auto - - ОтправкаПисем 100 - - НастройкиПодключенияПриОтправкеПисем - 202 - true - true - - true - - - <key>ru</key> - <value>Настройки подключения при отправке писем</value> - - - НастройкиПодключенияПриОтправкеПисемРасширеннаяПодсказка - 203 - Label - true - true - - Left - - - UsualGroup - - Vertical - Auto - NormalSeparation - true - true - Auto - Auto - - ГруппаТребуетсяАвторизация 258 @@ -1462,7 +1336,7 @@ true - ТребуетсяАвторизацияПриОтправкеПисем + Объект.ПриОтправкеПисемТребуетсяАвторизация Right @@ -1525,348 +1399,25 @@ false - - СпособАвторизацииСОтступом - 251 - - АвторизацияSMTP - 244 - - СпособАвторизацииПриОтправкеПочты - 238 - true - true - - true - - - СпособАвторизацииПриОтправкеПочты - - None - - OnChange - СпособАвторизацииПриОтправкеПочтыПриИзменении - - - СпособАвторизацииПриОтправкеПочтыРасширеннаяПодсказка - 240 - Label - true - true - - Left - - - - СпособАвторизацииПриОтправкеПочтыКонтекстноеМеню - 239 - true - - RadioButtonField - Enter - true - Left - true - - - - ru - На сервере исходящей почты (SMTP) - - - SMTP - - - Vertical - - - - ЛогинПарольПриОтправкеПисемСОтступом - 253 - - ОтступАвторизацияПриОтправкеПисем - 235 - - <key>ru</key> - <value>Отступ авторизация при отправке писем</value> - - true - true - - true - - - ОтступАвторизацияПриОтправкеПисемРасширеннаяПодсказка - 237 - Label - true - true - - Left - - - - ОтступАвторизацияПриОтправкеПисемКонтекстноеМеню - 236 - true - - 1 - true - 1 - true - false - false - - - - ЛогинИПарольПриОтправкеПисем - 233 - - ИмяПользователяДляОтправкиПисем - 149 - - <key>ru</key> - <value>Имя пользователя</value> - - true - true - - true - - - Объект.ПользовательSMTP - - - ИмяПользователяДляОтправкиПисемРасширеннаяПодсказка - 151 - Label - true - true - - Left - - - - ИмяПользователяДляОтправкиПисемКонтекстноеМеню - 150 - true - - InputField - Enter - true - Left - true - - 25 - true - true - false - true - true - true - true - Normal - - - - ПарольДляОтправкиПисем - 152 - - <key>ru</key> - <value>Пароль</value> - - true - true - - true - - - ПарольSMTP - - - OnChange - ПарольДляОтправкиПисемПриИзменении - - - ПарольДляОтправкиПисемРасширеннаяПодсказка - 154 - Label - true - true - - Left - - - - ПарольДляОтправкиПисемКонтекстноеМеню - 153 - true - - InputField - Enter - true - Left - true - - 25 - true - true - false - true - true - true - true - true - Normal - - - true - true - - true - - - <key>ru</key> - <value>Логин и пароль при отправке писем</value> - - - ЛогинИПарольПриОтправкеПисемРасширеннаяПодсказка - 234 - Label - true - true - - Left - - - UsualGroup - - Vertical - Auto - true - true - Auto - Auto - - - true - - true - - - <key>ru</key> - <value>Логин пароль при отправке писем с отступом</value> - - - ЛогинПарольПриОтправкеПисемСОтступомРасширеннаяПодсказка - 254 - Label - true - true - - Left - - - UsualGroup - - HorizontalIfPossible - Auto - true - true - Auto - Auto - - - true - true - - true - - - <key>ru</key> - <value>Авторизация SMTP</value> - - - АвторизацияSMTPРасширеннаяПодсказка - 245 - Label - true - true - - Left - - - UsualGroup - - Vertical - Auto - true - true - Auto - Auto - - - - СпособАвторизацииПриОтправкеПочты1 - 241 - true - true - - true - - - СпособАвторизацииПриОтправкеПочты - - None - - OnChange - СпособАвторизацииПриОтправкеПочтыПриИзменении - - - СпособАвторизацииПриОтправкеПочты1РасширеннаяПодсказка - 243 - Label - true - true - - Left - - - - СпособАвторизацииПриОтправкеПочты1КонтекстноеМеню - 242 - true - - RadioButtonField - Enter - true - Left - true - - - - ru - На сервере входящей почты (POP) - - - POP - - - Vertical - - + + СпособАвторизацииПриОтправкеПочты + 238 true true true - - <key>ru</key> - <value>Способ авторизации с отступом</value> - + + СпособАвторизацииПриОтправкеПочты + + None + + OnChange + СпособАвторизацииПриОтправкеПочтыПриИзменении + - СпособАвторизацииСОтступомРасширеннаяПодсказка - 252 + СпособАвторизацииПриОтправкеПочтыРасширеннаяПодсказка + 240 Label true true @@ -1874,14 +1425,37 @@ Left - UsualGroup - - Vertical - Auto - true - true - Auto - Auto + + СпособАвторизацииПриОтправкеПочтыКонтекстноеМеню + 239 + true + + RadioButtonField + Enter + true + Left + true + + 1 + + + ru + На сервере исходящей почты (SMTP) + + + SMTP + + + + + ru + На сервере входящей почты (POP) + + + POP + + + Vertical true @@ -1942,80 +1516,6 @@ Auto - - POPПередSMTP - 204 - - ТребуетсяВходНаСерверПередОтправкой - 189 - - <key>ru</key> - <value>Требуется авторизация на сервере входящей почты перед отправкой</value> - - true - - true - - - Объект.ТребуетсяВходНаСерверПередОтправкой - - Right - - OnChange - ТребуетсяВходНаСерверПередОтправкойПриИзменении - - - ТребуетсяВходНаСерверПередОтправкойРасширеннаяПодсказка - 191 - Label - true - true - - Left - - - - ТребуетсяВходНаСерверПередОтправкойКонтекстноеМеню - 190 - true - - CheckBoxField - Enter - true - Left - true - - - true - true - - true - - - <key>ru</key> - <value>POP перед SMTP</value> - - - POPПередSMTPРасширеннаяПодсказка - 205 - Label - true - true - - Left - - - UsualGroup - - Vertical - Auto - NormalSeparation - true - true - Auto - Auto - - true true @@ -2046,153 +1546,6 @@ Auto - - ПрочиеНастройки - 206 - - ДлительностьОжидания - 136 - - ДлительностьОжиданияСервера - 127 - - <key>ru</key> - <value>Длительность ожидания сервера</value> - - true - true - - true - - - Объект.ВремяОжидания - - - ДлительностьОжиданияСервераРасширеннаяПодсказка - 129 - Label - true - true - - Left - - - - ДлительностьОжиданияСервераКонтекстноеМеню - 128 - true - - InputField - Enter - true - Left - true - - true - true - true - true - true - true - true - - 10 - - Normal - - - - НадписьСекунд - 138 - - <key>ru</key> - <value>сек.</value> - - true - true - - true - - - НадписьСекундРасширеннаяПодсказка - 140 - Label - true - true - - Left - - - - НадписьСекундКонтекстноеМеню - 139 - true - - Label - true - - Left - - - true - true - - true - - - <key>ru</key> - <value>Длительность ожидания</value> - - - ДлительностьОжиданияРасширеннаяПодсказка - 137 - Label - true - true - - Left - - - UsualGroup - - HorizontalIfPossible - Auto - true - true - Auto - Auto - - - true - - true - - - <key>ru</key> - <value>Прочие настройки</value> - - - ПрочиеНастройкиРасширеннаяПодсказка - 207 - Label - true - true - - Left - - - UsualGroup - - Vertical - Auto - WeakSeparation - true - true - auto - Auto - Auto - - НужнаПомощь 269 @@ -2504,38 +1857,6 @@ true - - ПарольSMTP - - <key>ru</key> - <value>Пароль SMTP</value> - - 4 - - String - - - - true - - - true - - true - - - ПарольSMTPИзменен - 5 - - Boolean - - - true - - - true - - ПарольИзменен 6 @@ -2568,19 +1889,6 @@ true - - ВладелецУчетнойЗаписи - 8 - - CatalogRef.Пользователи - - - true - - - true - - ПроверкаПароля 9 @@ -2608,24 +1916,6 @@ true - - ТребуетсяАвторизацияПриОтправкеПисем - - <key>ru</key> - <value>При отправке писем требуется авторизация</value> - - 11 - - Boolean - - - true - - - true - - true - СпособАвторизацииПриОтправкеПочты @@ -2697,19 +1987,6 @@ <common>true</common> </edit> </attributes> - <attributes> - <name>ИспользуетсяПочтовыйКлиент</name> - <id>16</id> - <valueType> - <types>Boolean</types> - </valueType> - <view> - <common>true</common> - </view> - <edit> - <common>true</common> - </edit> - </attributes> <formCommands> <name>ЗаписатьИЗакрыть</name> <title> diff --git a/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаЭлемента/Module.bsl index b793f76bc..118d048c3 100644 --- a/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаЭлемента/Module.bsl +++ b/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаЭлемента/Module.bsl @@ -6,13 +6,6 @@ // https://creativecommons.org/licenses/by/4.0/legalcode /////////////////////////////////////////////////////////////////////////////////////////////////////// -#Область ОписаниеПеременных - -&НаКлиенте -Перем ПараметрыПередЗаписью; - -#КонецОбласти - #Область ОбработчикиСобытийФормы &НаСервере @@ -22,6 +15,12 @@ РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца; КонецЕсли; + Если Объект.Ссылка.Пустая() Тогда + Объект.ИспользоватьДляОтправки = Истина; + Объект.ИспользоватьДляПолучения = ДоступноПолучениеПисем; + ЗаполнитьНастройки(); + КонецЕсли; + Элементы.ИспользоватьУчетнуюЗапись.ОтображатьЗаголовок = ДоступноПолучениеПисем; Элементы.ДляПолучения.Видимость = ДоступноПолучениеПисем; @@ -29,16 +28,15 @@ Элементы.ДляОтправки.Заголовок = НСтр("ru = 'Использовать для отправки писем'"); КонецЕсли; - Если Объект.Ссылка.Пустая() Тогда - Объект.ИспользоватьДляОтправки = Истина; - Объект.ИспользоватьДляПолучения = ДоступноПолучениеПисем; - ЗаполнитьНастройки(); - КонецЕсли; - Элементы.ГруппаДляКогоУчетнаяЗапись.Доступность = Пользователи.ЭтоПолноправныйПользователь(); РеквизитыТребующиеВводаПароляДляИзменения = Справочники.УчетныеЗаписиЭлектроннойПочты.РеквизитыТребующиеВводаПароляДляИзменения(); + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда + МодульПодключаемыеКоманды = ОбщегоНазначения.ОбщийМодуль("ПодключаемыеКоманды"); + МодульПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект); + КонецЕсли; + КонецПроцедуры &НаСервере @@ -64,8 +62,8 @@ &НаСервере Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) - ТекущийОбъект.ПользовательSMTP = ?(ТребуетсяАвторизацияПриОтправкеПисем И Не Объект.ТребуетсяВходНаСерверПередОтправкой, ТекущийОбъект.Пользователь, ""); - ТекущийОбъект.ТребуетсяВходНаСерверПередОтправкой = ТекущийОбъект.ТребуетсяВходНаСерверПередОтправкой И ТребуетсяАвторизацияПриОтправкеПисем; + ТекущийОбъект.ПользовательSMTP = ?(ТекущийОбъект.ПриОтправкеПисемТребуетсяАвторизация И Не Объект.ТребуетсяВходНаСерверПередОтправкой, ТекущийОбъект.Пользователь, ""); + ТекущийОбъект.ТребуетсяВходНаСерверПередОтправкой = ТекущийОбъект.ТребуетсяВходНаСерверПередОтправкой И ТекущийОбъект.ПриОтправкеПисемТребуетсяАвторизация; ТекущийОбъект.ДополнительныеСвойства.Вставить("Пароль", ПроверкаПароля); КонецПроцедуры @@ -80,10 +78,12 @@ ЗаполнитьРеквизитыОбъекта(); - Если Не ПроверкиПередЗаписьюВыполнены(ПараметрыЗаписи) Тогда - Отказ = Истина; - Возврат; - КонецЕсли; + ОбработчикиПередЗаписью = Новый Массив; + ОбработчикиПередЗаписью.Добавить(Новый ОписаниеОповещения("ПроверитьЗаполнениеПередЗаписью", ЭтотОбъект, ПараметрыЗаписи)); + ОбработчикиПередЗаписью.Добавить(Новый ОписаниеОповещения("ПроверитьРазрешенияПередЗаписью", ЭтотОбъект, ПараметрыЗаписи)); + ОбработчикиПередЗаписью.Добавить(Новый ОписаниеОповещения("ПроверитьПарольПередЗаписью", ЭтотОбъект, ПараметрыЗаписи)); + + ПодключитьОбработчикиПередЗаписью(ОбработчикиПередЗаписью, ЭтотОбъект, Отказ, ПараметрыЗаписи); КонецПроцедуры @@ -96,17 +96,25 @@ Закрыть(); КонецЕсли; - ВладелецУчетнойЗаписи = Объект.ВладелецУчетнойЗаписи; - Если ПараметрыЗаписи.Свойство("ПроверитьНастройки") Тогда ПодключитьОбработчикОжидания("ВыполнитьПроверкуНастроек", 0.1, Истина); КонецЕсли; + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда + МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент"); + МодульПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи); + КонецЕсли; + КонецПроцедуры &НаКлиенте Процедура ПриОткрытии(Отказ) УстановитьВидНастройкиХраненияПисемНаСервере(); + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда + МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент"); + МодульПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект); + КонецЕсли; + КонецПроцедуры &НаСервере @@ -121,6 +129,11 @@ ЗаполнитьНастройки(); + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда + МодульПодключаемыеКомандыКлиентСервер = ОбщегоНазначения.ОбщийМодуль("ПодключаемыеКомандыКлиентСервер"); + МодульПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект); + КонецЕсли; + КонецПроцедуры &НаСервере @@ -208,25 +221,20 @@ КонецПроцедуры &НаКлиенте -Процедура ПарольДляПолученияПисемПриИзменении(Элемент) +Процедура ПарольПриИзменении(Элемент) ПарольИзменен = Истина; КонецПроцедуры &НаКлиенте -Процедура ПарольДляПолученияПисемИзменениеТекстаРедактирования(Элемент, Текст, СтандартнаяОбработка) - Элементы.ПарольДляПолученияПисем.КнопкаВыбора = Истина; +Процедура ПарольИзменениеТекстаРедактирования(Элемент, Текст, СтандартнаяОбработка) + Элементы.Пароль.КнопкаВыбора = Истина; КонецПроцедуры &НаКлиенте -Процедура ПарольДляПолученияПисемНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) +Процедура ПарольНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) РаботаСПочтовымиСообщениямиКлиент.ПолеПароляНачалоВыбора(Элемент, Пароль, СтандартнаяОбработка); КонецПроцедуры -&НаКлиенте -Процедура ПарольДляОтправкиПисемПриИзменении(Элемент) - ПарольSMTPИзменен = Истина; -КонецПроцедуры - &НаКлиенте Процедура ДляКогоУчетнаяЗаписьПриИзменении(Элемент) Элементы.ПользовательУчетнойЗаписи.Доступность = ВидУчетнойЗаписи = "Персональная"; @@ -238,14 +246,9 @@ ОповеститьОбИзмененииВладельцаУчетнойЗаписи(); КонецПроцедуры -&НаКлиенте -Процедура ТребуетсяВходНаСерверПередОтправкойПриИзменении(Элемент) - Элементы.ПолучениеПисем.Доступность = ДоступноПолучениеПисем Или Объект.ТребуетсяВходНаСерверПередОтправкой; -КонецПроцедуры - &НаКлиенте Процедура ТребуетсяАвторизацияПриОтправкеПисемПриИзменении(Элемент) - Элементы.АвторизацияПриОтправкеПисем.Доступность = ТребуетсяАвторизацияПриОтправкеПисем; + Элементы.АвторизацияПриОтправкеПисем.Доступность = Объект.ПриОтправкеПисемТребуетсяАвторизация; Элементы.АвторизацияПриОтправкеПисем.Видимость = Объект.ПротоколВходящейПочты = "POP"; КонецПроцедуры @@ -283,6 +286,35 @@ #Область ОбработчикиКомандФормы +&НаКлиенте +Процедура Подключаемый_ОбновитьКоманды() + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда + МодульПодключаемыеКомандыКлиентСервер = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиентСервер"); + МодульПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект); + КонецЕсли; +КонецПроцедуры + +&НаСервере +Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения) + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда + МодульПодключаемыеКоманды = ОбщегоНазначения.ОбщийМодуль("ПодключаемыеКоманды"); + МодульПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Объект); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт + ВыполнитьКомандуНаСервере(ПараметрыВыполнения); +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ВыполнитьКоманду(Команда) + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда + МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент"); + МодульПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект); + КонецЕсли; +КонецПроцедуры + &НаКлиенте Процедура ЗаписатьИЗакрыть(Команда) @@ -376,43 +408,19 @@ КонецПроцедуры &НаКлиенте -Функция ПроверкиПередЗаписьюВыполнены(ПараметрыЗаписи) +Процедура ПроверитьЗаполнениеПередЗаписью(Отказ, ПараметрыЗаписи) Экспорт - ПараметрыПередЗаписью = ПараметрыЗаписи; - - Если Не ПараметрыПередЗаписью.Свойство("ПроверкаЗаполненияВыполнена") Тогда - ПодключитьОбработчикОжидания("ПроверитьЗаполнениеИЗаписать", 0.1, Истина); - Возврат Ложь; - КонецЕсли; - - Если Не ПараметрыПередЗаписью.Свойство("РазрешенияПолучены") Тогда - ПодключитьОбработчикОжидания("ПроверитьРазрешенияИЗаписать", 0.1, Истина); - Возврат Ложь; - КонецЕсли; - - Если Не ПроверкаПароляВыполнена(ПараметрыПередЗаписью) Тогда - ПодключитьОбработчикОжидания("ВвестиПарольУчетнойЗаписиИЗаписать", 0.1, Истина); - Возврат Ложь; - КонецЕсли; - - Возврат Истина; - -КонецФункции - -&НаКлиенте -Процедура ПроверитьЗаполнениеИЗаписать() - - Если ПроверитьЗаполнение() Тогда - ПараметрыПередЗаписью.Вставить("ПроверкаЗаполненияВыполнена"); - Записать(ПараметрыПередЗаписью); + Если Не ПроверитьЗаполнение() Тогда + Отказ = Истина; КонецЕсли; КонецПроцедуры &НаКлиенте -Процедура ПроверитьРазрешенияИЗаписать() +Процедура ПроверитьРазрешенияПередЗаписью(Отказ, ПараметрыЗаписи) Экспорт - ОписаниеОповещения = Новый ОписаниеОповещения("ПослеПроверкиРазрешений", ЭтотОбъект, ПараметрыПередЗаписью); + Отказ = Истина; + ОписаниеОповещения = Новый ОписаниеОповещения("ПослеПроверкиРазрешений", ЭтотОбъект, ПараметрыЗаписи); Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПрофилиБезопасности") Тогда МодульРаботаВБезопасномРежимеКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("РаботаВБезопасномРежимеКлиент"); @@ -424,6 +432,18 @@ КонецПроцедуры +&НаКлиенте +Процедура ПроверитьПарольПередЗаписью(Отказ, ПараметрыЗаписи) Экспорт + + Если Не ПроверкаПароляВыполнена(ПараметрыЗаписи) Тогда + Отказ = Истина; + ПроверкаПароля = ""; + ОписаниеОповещения = Новый ОписаниеОповещения("ПослеВводаПароля", ЭтотОбъект, ПараметрыЗаписи); + ОткрытьФорму("Справочник.УчетныеЗаписиЭлектроннойПочты.Форма.ПроверкаДоступаКУчетнойЗаписи", , ЭтотОбъект, , , , ОписаниеОповещения); + КонецЕсли; + +КонецПроцедуры + &НаСервере Функция ЗапросыНаИспользованиеВнешнихРесурсов() @@ -472,7 +492,7 @@ Если Результат = КодВозвратаДиалога.ОК Тогда ПараметрыЗаписи.Вставить("РазрешенияПолучены"); - Записать(ПараметрыПередЗаписью); + Записать(ПараметрыЗаписи); КонецЕсли; КонецПроцедуры @@ -495,15 +515,6 @@ Возврат Справочники.УчетныеЗаписиЭлектроннойПочты.ТребуетсяПроверкаПароля(Ссылка, ЗначенияРеквизитов); КонецФункции -&НаКлиенте -Процедура ВвестиПарольУчетнойЗаписиИЗаписать() - - ПроверкаПароля = ""; - ОписаниеОповещения = Новый ОписаниеОповещения("ПослеВводаПароля", ЭтотОбъект, ПараметрыПередЗаписью); - ОткрытьФорму("Справочник.УчетныеЗаписиЭлектроннойПочты.Форма.ПроверкаДоступаКУчетнойЗаписи", , ЭтотОбъект, , , , ОписаниеОповещения); - -КонецПроцедуры - &НаКлиенте Процедура ПослеВводаПароля(Пароль, ПараметрыЗаписи) Экспорт @@ -534,8 +545,6 @@ &НаСервере Процедура ЗаполнитьНастройки() - Перем ИспользуетсяПротоколPOP, Пароли, ЭтоПерсональнаяУчетнаяЗапись; - ДоступноПолучениеПисем = РаботаСПочтовымиСообщениямиСлужебный.НастройкиПодсистемы().ДоступноПолучениеПисем; Элементы.ОставлятьПисьмаНаСервере.Видимость = Объект.ПротоколВходящейПочты = "POP" И ДоступноПолучениеПисем; @@ -549,10 +558,9 @@ Если НЕ Объект.Ссылка.Пустая() Тогда УстановитьПривилегированныйРежим(Истина); - Пароли = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(Объект.Ссылка, "Пароль, ПарольSMTP"); + ПарольУстановлен = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(Объект.Ссылка) <> ""; УстановитьПривилегированныйРежим(Ложь); - Пароль = ?(ЗначениеЗаполнено(Пароли.Пароль), ЭтотОбъект.УникальныйИдентификатор, ""); - ПарольSMTP = ?(ЗначениеЗаполнено(Пароли.ПарольSMTP), ЭтотОбъект.УникальныйИдентификатор, ""); + Пароль = ?(ПарольУстановлен, ЭтотОбъект.УникальныйИдентификатор, ""); Если Не Справочники.УчетныеЗаписиЭлектроннойПочты.ИзменениеРазрешено(Объект.Ссылка) Тогда ТолькоПросмотр = Истина; @@ -564,11 +572,9 @@ ЭтоПерсональнаяУчетнаяЗапись = ЗначениеЗаполнено(Объект.ВладелецУчетнойЗаписи); Элементы.ПользовательУчетнойЗаписи.Доступность = ЭтоПерсональнаяУчетнаяЗапись; ВидУчетнойЗаписи = ?(ЭтоПерсональнаяУчетнаяЗапись, "Персональная", "Общая"); - ВладелецУчетнойЗаписи = Объект.ВладелецУчетнойЗаписи; ИспользуетсяПротоколPOP = Объект.ПротоколВходящейПочты = "POP"; - ТребуетсяАвторизацияПриОтправкеПисем = ЗначениеЗаполнено(Объект.ПользовательSMTP) Или Объект.ТребуетсяВходНаСерверПередОтправкой; - Элементы.АвторизацияПриОтправкеПисем.Доступность = ТребуетсяАвторизацияПриОтправкеПисем; + Элементы.АвторизацияПриОтправкеПисем.Доступность = Объект.ПриОтправкеПисемТребуетсяАвторизация; УстановитьВидГруппыТребуетсяАвторизация(ЭтотОбъект, ИспользуетсяПротоколPOP); ШифрованиеПриОтправкеПочты = ?(Объект.ИспользоватьЗащищенноеСоединениеДляИсходящейПочты, "SSL", "Авто"); @@ -578,7 +584,64 @@ Элементы.ФормаПроверитьНастройки.Доступность = Объект.ИспользоватьДляОтправки Или Объект.ИспользоватьДляПолучения; Элементы.ФормаОткрытьПомощникНастройки.Доступность = Не Объект.Ссылка.Пустая() И Не ТолькоПросмотр; - Элементы.ПарольДляПолученияПисем.КнопкаВыбора = Ложь; + Элементы.Пароль.КнопкаВыбора = Ложь; + +КонецПроцедуры + +// Последовательно вызывает указанные обработчики в событии ПередЗаписью через обработчик ожидания. +&НаКлиенте +Процедура ПодключитьОбработчикиПередЗаписью(Обработчики, Форма, Отказ, ПараметрыЗаписи) + + Если Не ПараметрыЗаписи.Свойство("ОбработчикиПередЗаписью") Тогда + ПараметрыЗаписи.Вставить("ОбработчикиПередЗаписью", Новый Структура) + КонецЕсли; + + Для Каждого Обработчик Из Обработчики Цикл + Если Не ПараметрыЗаписи.ОбработчикиПередЗаписью.Свойство(Обработчик.ИмяПроцедуры) Тогда + ПараметрыЗаписи.ОбработчикиПередЗаписью.Вставить(Обработчик.ИмяПроцедуры, Ложь); + КонецЕсли; + КонецЦикла; + + Для Каждого Проверка Из ПараметрыЗаписи.ОбработчикиПередЗаписью Цикл + Если Проверка.Значение = Ложь Тогда + Отказ = Истина; + ОписаниеОповещения = Новый ОписаниеОповещения(Проверка.Ключ, Форма, ПараметрыЗаписи); + + ИмяПараметра = "СтандартныеПодсистемы.ОбработчикОжиданияПередЗаписьюВФорме"; + Если ПараметрыПриложения[ИмяПараметра] = Неопределено Тогда + ПараметрыПриложения.Вставить(ИмяПараметра, Новый Массив); + КонецЕсли; + ПараметрыПриложения[ИмяПараметра].Добавить(ОписаниеОповещения); + + ПодключитьОбработчикОжидания("ВыполнитьПроверкуПередЗаписьюВФорме", 0.1, Истина); + Возврат; + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +&НаКлиенте +Процедура ВыполнитьПроверкуПередЗаписьюВФорме() + + ИмяПараметра = "СтандартныеПодсистемы.ОбработчикОжиданияПередЗаписьюВФорме"; + Если ПараметрыПриложения[ИмяПараметра] = Неопределено Тогда + ПараметрыПриложения.Вставить(ИмяПараметра, Новый Массив); + КонецЕсли; + ОбработчикиОжидания = ПараметрыПриложения[ИмяПараметра]; + + Если ОбработчикиОжидания.Количество() > 0 Тогда + ОписаниеОповещения = ОбработчикиОжидания[0]; + ИмяПроцедуры = ОбработчикиОжидания[0].ИмяПроцедуры; + Форма = ОбработчикиОжидания[0].Модуль; + ПараметрыЗаписи = ОбработчикиОжидания[0].ДополнительныеПараметры; + ОбработчикиОжидания.Удалить(0); + ПараметрыЗаписи.ОбработчикиПередЗаписью[ИмяПроцедуры] = Истина; + Отказ = Ложь; + ВыполнитьОбработкуОповещения(ОписаниеОповещения, Отказ); + Если Не Отказ Тогда + Форма.Записать(ПараметрыЗаписи); + КонецЕсли; + КонецЕсли; КонецПроцедуры diff --git a/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/ManagerModule.bsl b/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/ManagerModule.bsl index 5fa4704b7..8ce6c8152 100644 --- a/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/ManagerModule.bsl +++ b/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/ManagerModule.bsl @@ -18,7 +18,8 @@ // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: -// Массив Из Строка - +// Массив Из Строка +// Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт Результат = Новый Массив; @@ -53,6 +54,32 @@ #КонецОбласти +#КонецЕсли + +#Область ОбработчикиСобытий + +Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + Поля.Добавить("АдресЭлектроннойПочты"); + Поля.Добавить("Наименование"); + +КонецПроцедуры + +Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка) + + Если ЗначениеЗаполнено(Данные.АдресЭлектроннойПочты) И СтрНайти(Данные.Наименование, Данные.АдресЭлектроннойПочты) = 0 Тогда + Представление = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1 (%2)'"), + Данные.Наименование, Данные.АдресЭлектроннойПочты); + СтандартнаяОбработка = Ложь; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + #Область СлужебныйПрограммныйИнтерфейс // Регистрирует на плане обмена ОбновлениеИнформационнойБазы объекты, @@ -65,6 +92,23 @@ МодульВзаимодействия.ЗарегистрироватьУчетныеЗаписиЭлектроннойПочтыКОбработкеДляПереходаНаНовуюВерсию(Параметры); КонецЕсли; + ТекстЗапроса = + "ВЫБРАТЬ + | УчетныеЗаписиЭлектроннойПочты.Ссылка + |ИЗ + | Справочник.УчетныеЗаписиЭлектроннойПочты КАК УчетныеЗаписиЭлектроннойПочты + |ГДЕ + | НЕ УчетныеЗаписиЭлектроннойПочты.ПриОтправкеПисемТребуетсяАвторизация + | И (УчетныеЗаписиЭлектроннойПочты.ПользовательSMTP <> """" + | ИЛИ УчетныеЗаписиЭлектроннойПочты.ТребуетсяВходНаСерверПередОтправкой)"; + + Запрос = Новый Запрос(ТекстЗапроса); + + Результат = Запрос.Выполнить().Выгрузить(); + МассивСсылок = Результат.ВыгрузитьКолонку("Ссылка"); + + ОбновлениеИнформационнойБазы.ОтметитьКОбработке(Параметры, МассивСсылок); + КонецПроцедуры Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию(Параметры) Экспорт @@ -110,13 +154,30 @@ Если ВладельцыУчетныхЗаписей[Выборка.Ссылка] <> Неопределено Тогда УчетнаяЗапись.ВладелецУчетнойЗаписи = ВладельцыУчетныхЗаписей[Выборка.Ссылка]; КонецЕсли; + Если Не УчетнаяЗапись.ПриОтправкеПисемТребуетсяАвторизация + И (УчетнаяЗапись.ПользовательSMTP <> "" + Или УчетнаяЗапись.ТребуетсяВходНаСерверПередОтправкой) Тогда + УчетнаяЗапись.ПриОтправкеПисемТребуетсяАвторизация = Истина; + Если УчетнаяЗапись.ИспользоватьДляОтправки И УчетнаяЗапись.Пользователь <> УчетнаяЗапись.ПользовательSMTP Тогда + УчетнаяЗапись.Пользователь = УчетнаяЗапись.ПользовательSMTP; + УстановитьПривилегированныйРежим(Истина); + Пароли = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(УчетнаяЗапись.Ссылка, "Пароль,ПарольSMTP"); + Если Пароли.Пароль <> Пароли.ПарольSMTP Тогда + ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище(УчетнаяЗапись.Ссылка, Пароли.ПарольSMTP); + КонецЕсли; + УстановитьПривилегированныйРежим(Ложь); + КонецЕсли; + КонецЕсли; + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Взаимодействия") Тогда + МодульВзаимодействия.ОчиститьПризнакПерсональнаяУчетнаяЗапись(УчетнаяЗапись.Ссылка); + КонецЕсли; ОбновлениеИнформационнойБазы.ЗаписатьДанные(УчетнаяЗапись); КонецЦикла; ЗафиксироватьТранзакцию(); Исключение ОтменитьТранзакцию(); - ЗаписьЖурналаРегистрации(НСтр("ru = 'Обновление персональных учетных записей'", ОбщегоНазначения.КодОсновногоЯзыка()), + ЗаписьЖурналаРегистрации(НСтр("ru = 'Обновление учетных записей'", ОбщегоНазначения.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ВызватьИсключение; КонецПопытки; @@ -153,7 +214,7 @@ Элемент.ИмяПредопределенныхДанных = "СистемнаяУчетнаяЗаписьЭлектроннойПочты"; Элемент.Наименование = НСтр("ru = 'Системная учетная запись'", ОбщегоНазначения.КодОсновногоЯзыка()); - Элемент.ИмяПользователя = НСтр("ru = '1С:Предприятие'"); + Элемент.ИмяПользователя = НСтр("ru = '1С:Предприятие'", ОбщегоНазначения.КодОсновногоЯзыка()); Элемент.ИспользоватьДляПолучения = Ложь; Элемент.ИспользоватьДляОтправки = Ложь; Элемент.ОставлятьКопииСообщенийНаСервере = Ложь; @@ -662,7 +723,7 @@ ?(ПустаяСтрока(ТекстОшибки), НСтр("ru = 'OK'"), ТекстОшибки)); КонецЕсли; - ЗаписьЖурналаРегистрации(НСтр("ru = 'Проверка подключения к почтовому серверу'", ОбщегоНазначения.КодОсновногоЯзыка()), + ЗаписьЖурналаРегистрации(СобытиеПроверкаПодключенияКПочтовомуСерверу(), УровеньЖурналаРегистрации.Информация, , , ТекстДляЖурнала); Возврат ТекстОшибки; @@ -707,7 +768,7 @@ Профиль.ПользовательSMTP, ?(ПустаяСтрока(ТекстОшибки), НСтр("ru = 'OK'"), ТекстОшибки)); - ЗаписьЖурналаРегистрации(НСтр("ru = 'Проверка подключения к почтовому серверу'", ОбщегоНазначения.КодОсновногоЯзыка()), + ЗаписьЖурналаРегистрации(СобытиеПроверкаПодключенияКПочтовомуСерверу(), УровеньЖурналаРегистрации.Информация, , , ТекстДляЖурнала); Возврат ТекстОшибки; @@ -1241,6 +1302,10 @@ КонецФункции +Функция СобытиеПроверкаПодключенияКПочтовомуСерверу() + Возврат НСтр("ru = 'Проверка подключения к почтовому серверу'", ОбщегоНазначения.КодОсновногоЯзыка()); +КонецФункции + #КонецОбласти #КонецЕсли \ No newline at end of file diff --git a/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/УчетныеЗаписиЭлектроннойПочты.mdo b/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/УчетныеЗаписиЭлектроннойПочты.mdo index a25dec2f0..c949d739c 100644 --- a/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/УчетныеЗаписиЭлектроннойПочты.mdo +++ b/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/УчетныеЗаписиЭлектроннойПочты.mdo @@ -10,8 +10,9 @@ <name>УчетныеЗаписиЭлектроннойПочты</name> <synonym> <key>ru</key> - <value>Учетные записи электронной почты</value> + <value>Настройки почты</value> </synonym> + <comment>АПК:58</comment> <useStandardCommands>true</useStandardCommands> <inputByString>Catalog.УчетныеЗаписиЭлектроннойПочты.StandardAttribute.Description</inputByString> <fullTextSearchOnInputByString>DontUse</fullTextSearchOnInputByString> @@ -106,7 +107,7 @@ <fullTextSearch>Use</fullTextSearch> <objectPresentation> <key>ru</key> - <value>Учетная запись электронной почты</value> + <value>Настройка почты</value> </objectPresentation> <levelCount>2</levelCount> <foldersOnTop>true</foldersOnTop> @@ -526,8 +527,9 @@ <name>ВладелецУчетнойЗаписи</name> <synonym> <key>ru</key> - <value>Владелец учетной записи</value> + <value>Владелец почты</value> </synonym> + <comment>АПК:58</comment> <type> <types>CatalogRef.Пользователи</types> </type> @@ -541,6 +543,21 @@ <fullTextSearch>Use</fullTextSearch> <dataHistory>Use</dataHistory> </attributes> + <attributes uuid="b5b56a64-5550-4da9-8872-d42ab871d21c"> + <name>ПриОтправкеПисемТребуетсяАвторизация</name> + <synonym> + <key>ru</key> + <value>При отправке писем требуется авторизация</value> + </synonym> + <type> + <types>Boolean</types> + </type> + <minValue xsi:type="core:UndefinedValue"/> + <maxValue xsi:type="core:UndefinedValue"/> + <fillValue xsi:type="core:UndefinedValue"/> + <fullTextSearch>Use</fullTextSearch> + <dataHistory>Use</dataHistory> + </attributes> <forms uuid="ecaa0af8-549c-4c07-82ff-1c4e02ff15b8"> <name>ФормаВыбора</name> <synonym> @@ -600,7 +617,7 @@ <name>ПроверкаНастроекУчетнойЗаписи</name> <synonym> <key>ru</key> - <value>Проверка настроек учетной записи</value> + <value>Проверка настроек почты</value> </synonym> <usePurposes>PersonalComputer</usePurposes> <usePurposes>MobileDevice</usePurposes> diff --git a/SSL/src/Catalogs/Файлы/Forms/Файлы/Module.bsl b/SSL/src/Catalogs/Файлы/Forms/Файлы/Module.bsl index 5d22c649d..a6845b8dc 100644 --- a/SSL/src/Catalogs/Файлы/Forms/Файлы/Module.bsl +++ b/SSL/src/Catalogs/Файлы/Forms/Файлы/Module.bsl @@ -1475,7 +1475,7 @@ КонецПроцедуры // Параметры: -// ПараметрыВыполнения - Структура - со свойствами: +// ПараметрыВыполнения - Структура: // * ДанныеФайла - см. РаботаСФайлами.ДанныеФайла // &НаКлиенте diff --git a/SSL/src/Catalogs/Файлы/Forms/ФормаЭлемента/Form.form b/SSL/src/Catalogs/Файлы/Forms/ФормаЭлемента/Form.form index 30d3e46d3..3823c71df 100644 --- a/SSL/src/Catalogs/Файлы/Forms/ФормаЭлемента/Form.form +++ b/SSL/src/Catalogs/Файлы/Forms/ФормаЭлемента/Form.form @@ -4054,6 +4054,19 @@ <common>true</common> </edit> </attributes> + <attributes> + <name>ИзменениеФайлов</name> + <id>5</id> + <valueType> + <types>Boolean</types> + </valueType> + <view> + <common>true</common> + </view> + <edit> + <common>true</common> + </edit> + </attributes> <formCommands> <name>СтандартнаяЗаписатьИЗакрыть</name> <title> diff --git a/SSL/src/Catalogs/Файлы/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/Файлы/Forms/ФормаЭлемента/Module.bsl index 540a076ec..0d43207c1 100644 --- a/SSL/src/Catalogs/Файлы/Forms/ФормаЭлемента/Module.bsl +++ b/SSL/src/Catalogs/Файлы/Forms/ФормаЭлемента/Module.bsl @@ -146,16 +146,19 @@ КонецЕсли; // Конец СтандартныеПодсистемы.Свойства + ИзменениеФайлов = Пользователи.ЭтоПолноправныйПользователь(); УстановитьДоступностьКнопок(ЭтотОбъект, Элементы); ОбновитьЗаголовок(); // СтандартныеПодсистемы.УправлениеДоступом Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); + КонецЕсли; // Конец СтандартныеПодсистемы.УправлениеДоступом - + КонецПроцедуры &НаСервере @@ -1110,8 +1113,12 @@ СделатьКомандуНедоступной(ИменаКоманд, "ОбновитьИзФайлаНаДиске"); Иначе СделатьКомандуНедоступной(ИменаКоманд, "ЗакончитьРедактирование"); - СделатьКомандуНедоступной(ИменаКоманд, "Освободить"); СделатьКомандуНедоступной(ИменаКоманд, "Редактировать"); + + Если Не Форма.ИзменениеФайлов Тогда + СделатьКомандуНедоступной(ИменаКоманд, "Освободить"); + КонецЕсли; + КонецЕсли; СделатьКомандуНедоступной(ИменаКоманд, "Занять"); @@ -1121,8 +1128,11 @@ СделатьКомандуНедоступной(ИменаКоманд, "Расшифровать"); Иначе СделатьКомандуНедоступной(ИменаКоманд, "ЗакончитьРедактирование"); - СделатьКомандуНедоступной(ИменаКоманд, "Освободить"); СделатьКомандуНедоступной(ИменаКоманд, "СохранитьИзменения"); + + Если Не Форма.ИзменениеФайлов Тогда + СделатьКомандуНедоступной(ИменаКоманд, "Освободить"); + КонецЕсли; КонецЕсли; Если ФайлПодписан Тогда @@ -1409,7 +1419,8 @@ // Продолжение процедуры ПрочитатьСертификатыПодписей. // // Параметры: -// Контекст - Структура - . +// Контекст - Структура +// &НаКлиенте Процедура ПрочитатьСертификатыПодписейЦиклНачало(Контекст) @@ -1457,8 +1468,9 @@ Возврат; КонецЕсли; - Контекст.Вставить("Сертификат", Сертификаты[0]); - Контекст.Сертификат.НачатьВыгрузку(Новый ОписаниеОповещения( + Сертификат = Сертификаты[0];// СертификатКриптографии + Контекст.Вставить("Сертификат", Сертификат); + Сертификат.НачатьВыгрузку(Новый ОписаниеОповещения( "ПрочитатьСертификатыПодписейЦиклПослеВыгрузкиСертификата", ЭтотОбъект, Контекст, "ПрочитатьСертификатыПодписейЦиклПослеОшибкиВыгрузкиСертификата", ЭтотОбъект)); @@ -1477,11 +1489,12 @@ &НаКлиенте Процедура ПрочитатьСертификатыПодписейЦиклПослеВыгрузкиСертификата(ДанныеСертификата, Контекст) Экспорт + МодульЭлектроннаяПодписьКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ЭлектроннаяПодписьКлиент"); СтрокаТаблицы = Контекст.СтрокаТаблицы; СтрокаТаблицы.Отпечаток = Base64Строка(Контекст.Сертификат.Отпечаток); СтрокаТаблицы.АдресСертификата = ПоместитьВоВременноеХранилище(ДанныеСертификата, УникальныйИдентификатор); - СтрокаТаблицы.КомуВыданСертификат = Контекст.МодульЭлектроннаяПодпись.ПредставлениеСубъекта(Контекст.Сертификат); + СтрокаТаблицы.КомуВыданСертификат = МодульЭлектроннаяПодписьКлиент.ПредставлениеСубъекта(Контекст.Сертификат); ПрочитатьСертификатыПодписейЦиклНачало(Контекст); diff --git a/SSL/src/Catalogs/Файлы/ManagerModule.bsl b/SSL/src/Catalogs/Файлы/ManagerModule.bsl index 566eb13fe..54752f682 100644 --- a/SSL/src/Catalogs/Файлы/ManagerModule.bsl +++ b/SSL/src/Catalogs/Файлы/ManagerModule.bsl @@ -18,7 +18,8 @@ // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: -// Массив Из Строка - +// Массив Из Строка +// Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт Возврат РаботаСФайлами.РеквизитыРедактируемыеВГрупповойОбработке(); @@ -132,6 +133,7 @@ // Регистрирует на плане обмена ОбновлениеИнформационнойБазы объекты, // которые необходимо обновить на новую версию. +// Процедура ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию(Параметры) Экспорт ОтработаныВсеФайлы = Ложь; diff --git a/SSL/src/Catalogs/ШаблоныАнкет/Forms/ФормаМастераТабличныхВопросов/Module.bsl b/SSL/src/Catalogs/ШаблоныАнкет/Forms/ФормаМастераТабличныхВопросов/Module.bsl index c55dac263..4e50117a5 100644 --- a/SSL/src/Catalogs/ШаблоныАнкет/Forms/ФормаМастераТабличныхВопросов/Module.bsl +++ b/SSL/src/Catalogs/ШаблоныАнкет/Forms/ФормаМастераТабличныхВопросов/Module.bsl @@ -484,6 +484,7 @@ // Процедура очищает таблицу ответов, от ответов, родительский вопрос которых // не входит в МассивВопросов, выступающий в качестве параметра. +// &НаКлиенте Процедура ОчиститьСписокОтветовЕслиНеобходимо(МассивВопросов) @@ -505,6 +506,7 @@ // Устанавливает нужную страницу формирования структуры табличного вопроса в зависимости от // выбранного типа табличного вопроса. +// &НаКлиенте Процедура УстановитьСтраницуОтветы() @@ -631,6 +633,7 @@ // Устанавливает отборы в элементы форм, предназначенные для // составления списка предопределенных ответов. +// &НаКлиенте Процедура УстановитьОтборы() @@ -701,6 +704,7 @@ // Вызывается при изменении элементов форма, связанных с таблицей ответов. // Параметры: // Элемент - ТаблицаФормы - ЭлементКоторыйВызвал изменение. +// &НаКлиенте Процедура ПриИзмененииОтветов(Элемент) diff --git a/SSL/src/Catalogs/ШаблоныАнкет/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/ШаблоныАнкет/Forms/ФормаЭлемента/Module.bsl index 18ea699b6..f2e6d1daf 100644 --- a/SSL/src/Catalogs/ШаблоныАнкет/Forms/ФормаЭлемента/Module.bsl +++ b/SSL/src/Catalogs/ШаблоныАнкет/Forms/ФормаЭлемента/Module.bsl @@ -412,6 +412,7 @@ // Устанавливает флаг окончания редактирования шаблона анкеты // и записывает анкету. +// &НаКлиенте Процедура ЗакончитьРедактирование(Команда) diff --git a/SSL/src/Catalogs/ШаблоныАнкет/ManagerModule.bsl b/SSL/src/Catalogs/ШаблоныАнкет/ManagerModule.bsl index 897c42e60..8d2cbc3dc 100644 --- a/SSL/src/Catalogs/ШаблоныАнкет/ManagerModule.bsl +++ b/SSL/src/Catalogs/ШаблоныАнкет/ManagerModule.bsl @@ -18,7 +18,8 @@ // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: -// Массив Из Строка - +// Массив Из Строка +// Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт Результат = Новый Массив; diff --git a/SSL/src/Catalogs/ШаблоныСообщений/Forms/СформироватьСообщение/Module.bsl b/SSL/src/Catalogs/ШаблоныСообщений/Forms/СформироватьСообщение/Module.bsl index f0337af74..a952080f5 100644 --- a/SSL/src/Catalogs/ШаблоныСообщений/Forms/СформироватьСообщение/Module.bsl +++ b/SSL/src/Catalogs/ШаблоныСообщений/Forms/СформироватьСообщение/Module.bsl @@ -241,7 +241,7 @@ АдресРезультата = СформироватьСообщениеНаСервере(АдресВременногоХранилища, ПараметрыОтправки, ВидСообщения); - Результат = ПолучитьИзВременногоХранилища(АдресРезультата); + Результат = ПолучитьИзВременногоХранилища(АдресРезультата); // см. ШаблоныСообщенийСлужебный.СформироватьСообщение Результат.Вставить("Предмет", Предмет); Результат.Вставить("Шаблон", ПараметрыОтправки.Шаблон); @@ -280,6 +280,10 @@ КонецФункции +// Параметры: +// Результат - КодВозвратаДиалога +// ПараметрыОтправки - см. ШаблоныСообщенийКлиентСервер.КонструкторПараметровОтправки +// &НаКлиенте Процедура ПослеВводаПараметров(Результат, ПараметрыОтправки) Экспорт @@ -335,7 +339,6 @@ МодульОтправкаSMSКлиент= ОбщегоНазначенияКлиент.ОбщийМодуль("ОтправкаSMSКлиент"); ДополнительныеПараметры = Новый Структура("ПеревестиВТранслит"); - Если Сообщение.ДополнительныеПараметры <> Неопределено Тогда ЗаполнитьЗначенияСвойств(ДополнительныеПараметры, Сообщение.ДополнительныеПараметры); КонецЕсли; @@ -406,6 +409,10 @@ КонецФункции +// Параметры: +// Результат - КодВозвратаДиалога +// ПараметрыОтправки -см. ШаблоныСообщенийКлиентСервер.КонструкторПараметровОтправки +// &НаКлиенте Процедура ПослеВопросаОбОткрытиеФормыСообщения(Результат, ПараметрыОтправки) Экспорт Если Результат = КодВозвратаДиалога.Да Тогда @@ -501,10 +508,11 @@ &НаСервере Процедура УстановитьHTMLВФорматированныйДокумент(ТекстШаблонаПисьмаHTML, СсылкаНаТекущийОбъект); + Сообщение = ШаблоныСообщенийСлужебный.КонструкторСообщения(); + ПараметрШаблона = Новый Структура("Шаблон, УникальныйИдентификатор"); ПараметрШаблона.Шаблон = СсылкаНаТекущийОбъект; ПараметрШаблона.УникальныйИдентификатор = УникальныйИдентификатор; - Сообщение = ШаблоныСообщенийСлужебный.КонструкторСообщения(); Сообщение.Текст = ТекстШаблонаПисьмаHTML; ШаблоныСообщенийСлужебный.ОбработатьHTMLДляФорматированногоДокумента(ПараметрШаблона, Сообщение, Истина); СтруктураВложений = Новый Структура(); @@ -512,6 +520,12 @@ Изображение = Новый Картинка(ПолучитьИзВременногоХранилища(ВложениеВHTML.АдресВоВременномХранилище)); СтруктураВложений.Вставить(ВложениеВHTML.Представление, Изображение); КонецЦикла; + + ПараметрыШаблона = ШаблоныСообщенийСлужебный.ПараметрыШаблона(СсылкаНаТекущийОбъект); + СведенияОШаблоне = ШаблоныСообщенийСлужебный.СведенияОШаблоне(ПараметрыШаблона); + + Сообщение.Текст = ШаблоныСообщенийСлужебный.ПреобразоватьТекстШаблона(ТекстШаблонаПисьмаHTML, СведенияОШаблоне.Реквизиты, "ПараметрыВПредставление"); + Сообщение.Текст = ШаблоныСообщенийСлужебный.ПреобразоватьТекстШаблона(Сообщение.Текст , СведенияОШаблоне.ОбщиеРеквизиты, "ПараметрыВПредставление"); ПредпросмотрФорматированныйДокумент.УстановитьHTML(Сообщение.Текст, СтруктураВложений); КонецПроцедуры diff --git a/SSL/src/Catalogs/ШаблоныСообщений/Forms/ФормаЭлемента/Form.form b/SSL/src/Catalogs/ШаблоныСообщений/Forms/ФормаЭлемента/Form.form index 390919f88..fd649ed0f 100644 --- a/SSL/src/Catalogs/ШаблоныСообщений/Forms/ФормаЭлемента/Form.form +++ b/SSL/src/Catalogs/ШаблоныСообщений/Forms/ФормаЭлемента/Form.form @@ -3470,6 +3470,22 @@ <common>true</common> </edit> </columns> + <columns> + <name>ПолноеПредставление</name> + <id>8</id> + <valueType> + <types>String</types> + <stringQualifiers> + <length>300</length> + </stringQualifiers> + </valueType> + <view> + <common>true</common> + </view> + <edit> + <common>true</common> + </edit> + </columns> </attributes> <attributes> <name>Вложения</name> diff --git a/SSL/src/Catalogs/ШаблоныСообщений/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/ШаблоныСообщений/Forms/ФормаЭлемента/Module.bsl index eaf7cb99e..12331dbc8 100644 --- a/SSL/src/Catalogs/ШаблоныСообщений/Forms/ФормаЭлемента/Module.bsl +++ b/SSL/src/Catalogs/ШаблоныСообщений/Forms/ФормаЭлемента/Module.bsl @@ -74,6 +74,8 @@ Элементы.ПодписьИПечать.Видимость = МодульУправлениеПечатью.НастройкиПечати().ИспользоватьПодписиИПечати; КонецЕсли; + УстановитьТекстШаблона(Объект); + КонецПроцедуры &НаСервере @@ -133,31 +135,23 @@ &НаСервере Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) - РезультатПроверкиШаблоны = РезультатПроверкиШаблоны(); - Если ЗначениеЗаполнено(РезультатПроверкиШаблоны) Тогда + ИнформацияОПроверке = ОбработатьТекстШаблона(); + + Если Не ИнформацияОПроверке.Успех Тогда ОбщегоНазначения.СообщитьПользователю(НСтр("ru = 'Шаблон сообщения не может быть записан.'") - + Символы.ПС + РезультатПроверкиШаблоны); + + Символы.ПС + ИнформацияОПроверке.ТекстОшибки); Отказ = Истина; Возврат; КонецЕсли; Если ТекущийОбъект.ПредназначенДляSMS Тогда - ТекущийОбъект.ТекстШаблонаSMS = ТелоСообщенияОбычныйТекст.ПолучитьТекст(); + ТекущийОбъект.ТекстШаблонаSMS = ИнформацияОПроверке.ОбычныйТекст; ТекущийОбъект.ФорматВложений = Неопределено; Иначе - Если ТекущийОбъект.ТипТекстаПисьма = Перечисления.СпособыРедактированияЭлектронныхПисем.HTML Тогда - ТекстВHTML = ""; - ВложенияВHTML = Новый Структура(); - ТелоПисьмаВHTML.ПолучитьHTML(ТекстВHTML, ВложенияВHTML); - ТекущийОбъект.ТекстШаблонаПисьмаHTML = ТекстВHTML; - ТекущийОбъект.ТекстШаблонаПисьма = ТелоПисьмаВHTML.ПолучитьТекст(); - Иначе - ТекущийОбъект.ТекстШаблонаПисьма = ТелоСообщенияОбычныйТекст.ПолучитьТекст(); - Если ПустаяСтрока(ТекущийОбъект.ТекстШаблонаПисьма) Тогда - ТекущийОбъект.ТекстШаблонаПисьма = ТелоПисьмаВHTML.ПолучитьТекст(); - КонецЕсли; - ТекущийОбъект.ТекстШаблонаПисьмаHTML = ТекущийОбъект.ТекстШаблонаПисьма; - КонецЕсли; + + ТекущийОбъект.ТекстШаблонаПисьмаHTML = ИнформацияОПроверке.HTMLТекст; + ТекущийОбъект.ТекстШаблонаПисьма = ИнформацияОПроверке.ОбычныйТекст; + ТекущийОбъект.ТемаПисьма = ИнформацияОПроверке.ТемаПисьма; СписокФорматов = Новый СписокЗначений; Для каждого ЭлементСписка Из ВыбранныеФорматыСохранения Цикл @@ -167,33 +161,34 @@ КонецЦикла; ТекущийОбъект.ФорматВложений = Новый ХранилищеЗначения(СписокФорматов); - КонецЕсли; - - ТаблицаСоответствийИменВложенийИдентификаторам = Новый СписокЗначений; - СтруктураВложений = Новый Структура; - ТелоПисьмаВHTML.ПолучитьHTML(ТекущийОбъект.ТекстШаблонаПисьмаHTML, СтруктураВложений); - Для каждого Вложение Из СтруктураВложений Цикл - ТаблицаСоответствийИменВложенийИдентификаторам.Добавить(Вложение.Ключ, Новый УникальныйИдентификатор,, Вложение.Значение); - КонецЦикла; - - ПараметрыЗаписи.Вставить("ВложенияHTML", ТаблицаСоответствийИменВложенийИдентификаторам); - - Если ТаблицаСоответствийИменВложенийИдентификаторам.Количество() > 0 Тогда + ТаблицаСоответствийИменВложенийИдентификаторам = Новый СписокЗначений; + СтруктураВложений = Новый Структура; + + ТекстШаблонаHTML = ""; // Извлекаем вложения + ТелоПисьмаВHTML.ПолучитьHTML(ТекстШаблонаHTML, СтруктураВложений); + Для каждого Вложение Из СтруктураВложений Цикл + ТаблицаСоответствийИменВложенийИдентификаторам.Добавить(Вложение.Ключ, Новый УникальныйИдентификатор,, Вложение.Значение); + КонецЦикла; + + ПараметрыЗаписи.Вставить("ВложенияHTML", ТаблицаСоответствийИменВложенийИдентификаторам); + + Если ТаблицаСоответствийИменВложенийИдентификаторам.Количество() > 0 Тогда ДокументHTML = ШаблоныСообщенийСлужебный.ПолучитьОбъектДокументHTMLИзТекстаHTML(ТекущийОбъект.ТекстШаблонаПисьмаHTML); - ЗаменитьИменаКартинокНаИдентификаторыПочтовыхВложенийВHTML( ДокументHTML, ТаблицаСоответствийИменВложенийИдентификаторам); + ЗаменитьИменаКартинокНаИдентификаторыПочтовыхВложенийВHTML(ДокументHTML, ТаблицаСоответствийИменВложенийИдентификаторам); ТекущийОбъект.ТекстШаблонаПисьмаHTML = ШаблоныСообщенийСлужебный.ПолучитьТекстHTMLИзОбъектаДокументHTML(ДокументHTML); - КонецЕсли; - - ТекущийОбъект.ПечатныеФормыИВложения.Очистить(); - Для каждого Вложение Из Вложения Цикл - Если Вложение.Выбрано = 1 Тогда - НоваяСтрока = ТекущийОбъект.ПечатныеФормыИВложения.Добавить(); - НоваяСтрока.Идентификатор = Вложение.Идентификатор; - НоваяСтрока.Имя = Вложение.ИмяПараметра; КонецЕсли; - КонецЦикла; + + ТекущийОбъект.ПечатныеФормыИВложения.Очистить(); + Для каждого Вложение Из Вложения Цикл + Если Вложение.Выбрано = 1 Тогда + НоваяСтрока = ТекущийОбъект.ПечатныеФормыИВложения.Добавить(); + НоваяСтрока.Идентификатор = Вложение.Идентификатор; + НоваяСтрока.Имя = Вложение.ИмяПараметра; + КонецЕсли; + КонецЦикла; + КонецЕсли; ТекущийОбъект.Параметры.Очистить(); Для каждого ПараметрШаблона Из Объект.Параметры Цикл @@ -204,14 +199,95 @@ КонецПроцедуры +&НаСервере +Функция ОбработатьТекстШаблона() + + ДеревоПараметровШаблона = РеквизитФормыВЗначение("Реквизиты"); + + Результат = Новый Структура; + Результат.Вставить("ОбычныйТекст", ТелоСообщенияОбычныйТекст.ПолучитьТекст()); + Результат.Вставить("HTMLТекст", ""); + Результат.Вставить("ТекстОшибки", ""); + Результат.Вставить("Успех", Истина); + Результат.Вставить("ТемаПисьма", Объект.ТемаПисьма); + Результат.Вставить("ТипТекстаПисьма", Объект.ТипТекстаПисьма); + + ПроверяемыйТекст = ""; + ВариантПреобразования = "ПредставлениеВПараметры"; + + Если Объект.ПредназначенДляSMS Тогда + Результат.ОбычныйТекст = + ШаблоныСообщенийСлужебный.ПреобразоватьТекстШаблона(Результат.ОбычныйТекст, ДеревоПараметровШаблона, ВариантПреобразования); + ПроверяемыйТекст = Результат.ОбычныйТекст; + Иначе + Если Результат.ТипТекстаПисьма = Перечисления.СпособыРедактированияЭлектронныхПисем.HTML Тогда + + ВложенияВHTML = Новый Структура(); + ТелоПисьмаВHTML.ПолучитьHTML(Результат.HTMLТекст, ВложенияВHTML); + + Результат.HTMLТекст = ШаблоныСообщенийСлужебный.ПреобразоватьТекстШаблона(СтрЗаменить(Результат.HTMLТекст, """, """"), ДеревоПараметровШаблона, ВариантПреобразования); + Результат.ОбычныйТекст = ШаблоныСообщенийСлужебный.ПреобразоватьТекстШаблона(ТелоПисьмаВHTML.ПолучитьТекст(), ДеревоПараметровШаблона, ВариантПреобразования); + ПроверяемыйТекст = Результат.HTMLТекст; + + Иначе + + Если ПустаяСтрока(Результат.ОбычныйТекст) Тогда + Результат.ОбычныйТекст = ТелоПисьмаВHTML.ПолучитьТекст(); + КонецЕсли; + Результат.ОбычныйТекст = ШаблоныСообщенийСлужебный.ПреобразоватьТекстШаблона(Результат.ОбычныйТекст, + ДеревоПараметровШаблона, ВариантПреобразования); + Результат.HTMLТекст = Результат.ОбычныйТекст; + + ПроверяемыйТекст = Результат.ОбычныйТекст; + + КонецЕсли; + + Результат.ТемаПисьма = ШаблоныСообщенийСлужебный.ПреобразоватьТекстШаблона(Результат.ТемаПисьма, ДеревоПараметровШаблона, ВариантПреобразования); + ПроверяемыйТекст = ПроверяемыйТекст + Результат.ТемаПисьма; + + КонецЕсли; + + // проверка + + ОшибочныеПараметры = Новый Массив; + ПараметрыШаблонаИзТекста = ШаблоныСообщенийСлужебный.ПараметрыТекстаСообщения(ПроверяемыйТекст); + + Для каждого ПараметрШаблонаИзТекста Из ПараметрыШаблонаИзТекста Цикл + + ОписаниеПараметра = ШаблоныСообщенийСлужебный.ИмяПараметраБезСтрокиФормата(ПараметрШаблонаИзТекста.Ключ); + + НайденныеСтроки = ДеревоПараметровШаблона.Строки.НайтиСтроки(Новый Структура("Имя", ОписаниеПараметра.Имя), Истина); + Если НайденныеСтроки.Количество() > 0 Тогда + Продолжить; + КонецЕсли; + + ОшибочныеПараметры.Добавить( ОписаниеПараметра.Имя); + + КонецЦикла; + + Если ОшибочныеПараметры.Количество() > 0 Тогда + ТекстОшибки = ?(ОшибочныеПараметры.Количество() = 1, + НСтр("ru = 'Некорректный реквизит в шаблоне сообщения:'"), + НСтр("ru = 'Некорректные реквизиты в шаблоне сообщения:'")); + Результат.ТекстОшибки = ТекстОшибки + " " + СтрСоединить(ОшибочныеПараметры, ", "); + Результат.Успех = Ложь; + КонецЕсли; + + Возврат Результат; + +КонецФункции + &НаСервере Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) + Если ТекущийОбъект.ПредназначенДляSMS Тогда + Возврат; + КонецЕсли; // Добавим в список удаленных вложений ранее сохраненные картинки, отображаемые в теле форматированного документа. Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда МодульРаботаСФайлами = ОбщегоНазначения.ОбщийМодуль("РаботаСФайлами"); - СписокФайлов = Новый Массив; + СписокФайлов = Новый Массив; // Массив из ОпределяемыйТип.ПрисоединенныйФайл МодульРаботаСФайлами.ЗаполнитьПрисоединенныеФайлыКОбъекту(ТекущийОбъект.Ссылка, СписокФайлов); Для каждого Вложение Из СписокФайлов Цикл Если ЗначениеЗаполнено(Вложение.ИДФайлаЭлектронногоПисьма) Тогда @@ -220,12 +296,12 @@ КонецЦикла; КонецЕсли; - СохранитьКартинкиФорматированногоДокументаКакПрисоединенныеФайлы(ТекущийОбъект.Ссылка, + СохранитьКартинкиФорматированногоДокументаКакПрисоединенныеФайлы(ТекущийОбъект.Ссылка, ТекущийОбъект.ТипТекстаПисьма, ПараметрыЗаписи.ВложенияHTML, УникальныйИдентификатор); Индекс = Вложения.Количество() - 1; Пока Индекс >= 0 Цикл - СтрокаТаблицыВложений = Вложения.Получить(Индекс); + СтрокаТаблицыВложений = ШаблоныСообщений.СтрокаВложений(Вложения.Получить(Индекс)); Если СтрокаТаблицыВложений.Статус = "ВнешнийУдаляемый" Тогда Если Не СтрокаТаблицыВложений.Ссылка.Пустая() Тогда УдалитьПрисоединенныйФайл(СтрокаТаблицыВложений.Ссылка); @@ -421,13 +497,26 @@ Процедура РеквизитыПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр) Отказ = Истина; Если ИспользоватьПроизвольныеПараметры Тогда - ДополнительныеПараметры = Новый Структура("Добавление", Истина); + ДополнительныеПараметры = ДополнительныеПараметрыДобавленияРеквизитов(); ОповещениеОЗакрытие = Новый ОписаниеОповещения("ПослеЗакрытияФормыПараметра", ЭтотОбъект, ДополнительныеПараметры); ПараметрыФормы = Новый Структура("СписокПараметров, ПолноеИмяТипаПараметраВводаНаОсновании", Объект.Параметры, Объект.ПолноеИмяТипаПараметраВводаНаОсновании); ОткрытьФорму("Справочник.ШаблоныСообщений.Форма.ПроизвольныйПараметр", ПараметрыФормы,,,,, ОповещениеОЗакрытие); КонецЕсли; КонецПроцедуры +// Возвращаемое значение: +// Структура: +// * Добавление - Булево +// +&НаКлиенте +Функция ДополнительныеПараметрыДобавленияРеквизитов() + + ДополнительныеПараметры = Новый Структура; + ДополнительныеПараметры.Вставить("Добавление", Истина); + Возврат ДополнительныеПараметры; + +КонецФункции + &НаКлиенте Процедура РеквизитыПриАктивизацииСтроки(Элемент) ТекущиеДанные = Элементы.Реквизиты.ТекущиеДанные; @@ -473,6 +562,7 @@ &НаКлиенте Процедура РеквизитыНачалоПеретаскивания(Элемент, ПараметрыПеретаскивания, Выполнение) + ПеретаскиваемыеОбъекты = ПараметрыПеретаскивания.Значение; ТекстДляВставки = ""; Разделитель = ""; @@ -480,13 +570,12 @@ ЭлементДерева = Реквизиты.НайтиПоИдентификатору(ПеретаскиваемыйОбъект); Если ЭлементДерева.ПолучитьЭлементы().Количество() = 0 Тогда ФорматВывода = ?(ПустаяСтрока(ЭлементДерева.Формат), "", "{" + ЭлементДерева.Формат +"}"); - ТекстДляВставки = ТекстДляВставки + Разделитель + "[" + ЭлементДерева.Имя + ФорматВывода + "]"; + ТекстДляВставки = ТекстДляВставки + Разделитель + "[" + ЭлементДерева.ПолноеПредставление + ФорматВывода + "]"; Разделитель = " "; КонецЕсли; КонецЦикла; ПараметрыПеретаскивания.Значение = ТекстДляВставки; - КонецПроцедуры &НаКлиенте @@ -533,15 +622,17 @@ Процедура ПроверитьШаблон(Команда) ОчиститьСообщения(); - РезультатПроверкиШаблоны = РезультатПроверкиШаблоны(); - Если ЗначениеЗаполнено(РезультатПроверкиШаблоны) Тогда - ОбщегоНазначенияКлиент.СообщитьПользователю(РезультатПроверкиШаблоны); - Иначе + ИнформацияОПроверке = ОбработатьТекстШаблона(); + + Если ИнформацияОПроверке.Успех Тогда ПоказатьПредупреждение(, НСтр("ru = 'Шаблон заполнен корректно'")); + Иначе + ОбщегоНазначенияКлиент.СообщитьПользователю(ИнформацияОПроверке.ТекстОшибки); КонецЕсли; КонецПроцедуры + &НаКлиенте Процедура ВнешнейОбработкой(Команда) @@ -633,7 +724,7 @@ Если ТекущиеДанные <> Неопределено Тогда ФорматВывода = ?(ПустаяСтрока(ТекущиеДанные.Формат), "", "{" + ТекущиеДанные.Формат +"}"); НачалоПараметра = ?(Прав(Объект.ТемаПисьма, 1) = " ", "[", " ["); - Объект.ТемаПисьма = Объект.ТемаПисьма + НачалоПараметра + ТекущиеДанные.Имя + ФорматВывода + "]"; + Объект.ТемаПисьма = Объект.ТемаПисьма + НачалоПараметра + ТекущиеДанные.ПолноеПредставление + ФорматВывода + "]"; КонецЕсли; КонецПроцедуры @@ -682,6 +773,10 @@ #Область СлужебныеПроцедурыИФункции +// Параметры: +// ОписаниеПараметра - Структура +// ДополнительныеПараметры - см. ДополнительныеПараметрыДобавленияРеквизитов +// &НаКлиенте Процедура ПослеЗакрытияФормыПараметра(ОписаниеПараметра, ДополнительныеПараметры) Экспорт Если ТипЗнч(ОписаниеПараметра) = Тип("Структура") Тогда @@ -984,18 +1079,31 @@ &НаСервере Процедура УстановитьТекстШаблона(ТекущийОбъект, СписокФайлов = Неопределено) + СписокВсехПараметров = РеквизитФормыВЗначение("Реквизиты"); + Если СписокВсехПараметров.Строки.Количество() = 0 Тогда + Возврат; + КонецЕсли; + Если ТекущийОбъект.ПредназначенДляSMS Тогда - ТелоСообщенияОбычныйТекст.УстановитьТекст(ТекущийОбъект.ТекстШаблонаSMS); + ТелоСообщенияОбычныйТекст.УстановитьТекст( + ШаблоныСообщенийСлужебный.ПреобразоватьТекстШаблона(ТекущийОбъект.ТекстШаблонаSMS, СписокВсехПараметров, "ПараметрыВПредставление")); + Иначе Если ТекущийОбъект.ТипТекстаПисьма = Перечисления.СпособыРедактированияЭлектронныхПисем.HTML Тогда - УстановитьHTMLДляФорматированногоДокумента(ТекущийОбъект.ТекстШаблонаПисьмаHTML, ТекущийОбъект.Ссылка, СписокФайлов); + УстановитьHTMLДляФорматированногоДокумента( + ШаблоныСообщенийСлужебный.ПреобразоватьТекстШаблона(ТекущийОбъект.ТекстШаблонаПисьмаHTML, СписокВсехПараметров, "ПараметрыВПредставление"), ТекущийОбъект.Ссылка, СписокФайлов); Иначе - ТелоСообщенияОбычныйТекст.УстановитьТекст(ТекущийОбъект.ТекстШаблонаПисьма); + ТелоСообщенияОбычныйТекст.УстановитьТекст( + ШаблоныСообщенийСлужебный.ПреобразоватьТекстШаблона(ТекущийОбъект.ТекстШаблонаПисьма, СписокВсехПараметров, "ПараметрыВПредставление")); КонецЕсли; + + Объект.ТемаПисьма = ШаблоныСообщенийСлужебный.ПреобразоватьТекстШаблона(ТекущийОбъект.ТемаПисьма, СписокВсехПараметров, "ПараметрыВПредставление"); + КонецЕсли; - + КонецПроцедуры + &НаСервере Процедура ОтображениеЭлементовФормы(ФорматаПисьма = "") @@ -1248,33 +1356,6 @@ КонецПроцедуры -// проверить шаблон -&НаСервере -Функция РезультатПроверкиШаблоны() - - ПараметрыШаблона = ШаблоныСообщенийСлужебный.ПараметрыШаблона(Объект); - СведенияОШаблоне = ШаблоныСообщенийСлужебный.СведенияОШаблоне(ПараметрыШаблона); - - ОшибочныеРеквизиты = Новый Массив; - ПараметрыТекстаСообщения = ШаблоныСообщенийСлужебный.ПараметрыИзТекстаСообщения(ПараметрыШаблона); - ШаблоныСообщенийСлужебный.ОпределитьОшибочныеРеквизиты(ПараметрыТекстаСообщения, ОшибочныеРеквизиты, СведенияОШаблоне); - - ТекстОшибки = ""; - Если ОшибочныеРеквизиты.Количество() > 0 Тогда - ТекстОшибки = ?(ОшибочныеРеквизиты.Количество() = 1, - НСтр("ru = 'Некорректный реквизит в шаблоне сообщения:'"), - НСтр("ru = 'Некорректные реквизиты в шаблоне сообщения:'")) + " "; - Разделитель = ""; - Для каждого ОшибочныйРеквизит Из ОшибочныеРеквизиты Цикл - ТекстОшибки = ТекстОшибки + Разделитель + СокрЛП(ОшибочныйРеквизит); - Разделитель = ", "; - КонецЦикла; - КонецЕсли; - - Возврат ТекстОшибки; - -КонецФункции - // Вынужденная установка свойств на сервере &НаСервере @@ -1309,7 +1390,9 @@ Элементы.ФормаЭлектронноеПисьмоHTML.Пометка = Ложь; Объект.ТипТекстаПисьма = ПредопределенноеЗначение("Перечисление.СпособыРедактированияЭлектронныхПисем.ОбычныйТекст"); Если ТребуетсяПереносТекста Тогда - ТелоСообщенияОбычныйТекст.УстановитьТекст(ТелоПисьмаВHTML.ПолучитьТекст()); + ШаблонОбычнымТекстом = ТелоПисьмаВHTML.ПолучитьТекст(); + ТелоСообщенияОбычныйТекст.УстановитьТекст(ШаблонОбычнымТекстом); + Объект.ТекстШаблонаПисьма = ШаблонОбычнымТекстом; КонецЕсли; Элементы.СкрытыйЗаголовокПараметры.Видимость = Ложь; @@ -1488,7 +1571,7 @@ &НаСервере Функция СкопироватьВложенияИзИсточника() - СписокФайлов = Новый Массив; + СписокФайлов = Новый Массив; // Массив из ОпределяемыйТип.ПрисоединенныйФайл СписокОшибок = Неопределено; ОписаниеОшибки = НСтр("ru = 'Не удалось скопировать вложение по причине: %1'"); @@ -1720,8 +1803,6 @@ &НаСервере Процедура ЗаполнитьПроизвольныеПараметрыИзОбъекта(Знач ТекущийОбъект) - Перем НайденныеСтроки, Отбор, ПараметрШаблонаТекущийОбъект; - Для каждого ПараметрШаблонаТекущийОбъект Из ТекущийОбъект.Параметры Цикл Отбор = Новый Структура("ИмяПараметра", ПараметрШаблонаТекущийОбъект.ИмяПараметра); НайденныеСтроки = Объект.Параметры.НайтиСтроки(Отбор); @@ -1832,13 +1913,13 @@ НайденнаяСтрока = Реквизиты.НайтиПоИдентификатору(НомерСтроки); Если НайденнаяСтрока <> Неопределено Тогда ФорматВывода = ?(ПустаяСтрока(НайденнаяСтрока.Формат), "", "{" + НайденнаяСтрока.Формат +"}"); - Текст = Текст + "[" + НайденнаяСтрока.Имя + ФорматВывода + "] "; + Текст = Текст + "[" + НайденнаяСтрока.ПолноеПредставление + ФорматВывода + "] "; КонецЕсли; КонецЦикла; Если Объект.ТипТекстаПисьма = ПредопределенноеЗначение("Перечисление.СпособыРедактированияЭлектронныхПисем.HTML") Тогда Если ПустаяСтрока(Элементы.ТелоПисьмаВHTML.ВыделенныйТекст) Тогда ЗакладкаДляВставкиНачало = Неопределено; - ЗакладкаДляВставкиКонец = Неопределено; + ЗакладкаДляВставкиКонец = Неопределено; Элементы.ТелоПисьмаВHTML.ПолучитьГраницыВыделения(ЗакладкаДляВставкиНачало, ЗакладкаДляВставкиКонец); ТелоПисьмаВHTML.Вставить(ЗакладкаДляВставкиКонец, Текст); Иначе @@ -1855,5 +1936,4 @@ КонецПроцедуры - #КонецОбласти \ No newline at end of file diff --git a/SSL/src/Catalogs/ШаблоныСообщений/ManagerModule.bsl b/SSL/src/Catalogs/ШаблоныСообщений/ManagerModule.bsl index eeb53ef5d..19fd12038 100644 --- a/SSL/src/Catalogs/ШаблоныСообщений/ManagerModule.bsl +++ b/SSL/src/Catalogs/ШаблоныСообщений/ManagerModule.bsl @@ -88,4 +88,193 @@ #КонецОбласти +#Область СлужебныеПроцедурыИФункции + +#Область ОбновлениеИнформационнойБазы + +// Регистрирует к обработке шаблоны сообщений. +// +Процедура ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию(Параметры) Экспорт + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | ШаблоныСообщений.Ссылка КАК Ссылка + |ИЗ + | Справочник.ШаблоныСообщений КАК ШаблоныСообщений"; + + РезультатЗапроса = Запрос.Выполнить(); + + Если РезультатЗапроса.Пустой() Тогда + Возврат; + КонецЕсли; + + ШаблоныКОбработке = РезультатЗапроса.Выгрузить().ВыгрузитьКолонку("Ссылка"); + ОбновлениеИнформационнойБазы.ОтметитьКОбработке(Параметры, ШаблоныКОбработке); + +КонецПроцедуры + +Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию(Параметры) Экспорт + + Шаблон = ОбновлениеИнформационнойБазы.ВыбратьСсылкиДляОбработки(Параметры.Очередь, "Справочник.ШаблоныСообщений"); + + ПроблемныхОбъектов = 0; + ОбъектовОбработано = 0; + + Пока Шаблон.Следующий() Цикл + + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить("Справочник.ШаблоныСообщений"); + ЭлементБлокировки.УстановитьЗначение("Ссылка", Шаблон.Ссылка); + + НачатьТранзакцию(); + Попытка + + Блокировка.Заблокировать(); + + ШаблонОбъект = Шаблон.Ссылка.ПолучитьОбъект(); + Если ШаблонОбъект = Неопределено Тогда // объект может быть уже удален в других сеансах + ОбновлениеИнформационнойБазы.ОтметитьВыполнениеОбработки(Шаблон.Ссылка); + ОбъектовОбработано = ОбъектовОбработано + 1; + ЗафиксироватьТранзакцию(); + Продолжить; + КонецЕсли; + + ПараметрыШаблона = ШаблоныСообщенийСлужебный.ПараметрыШаблона(Шаблон.Ссылка); + СведенияОШаблоне = ШаблоныСообщенийСлужебный.СведенияОШаблоне(ПараметрыШаблона); + + МетаданныеОбъект = Метаданные.НайтиПоПолномуИмени(ПараметрыШаблона.ПолноеИмяТипаНазначения); + + Если МетаданныеОбъект = Неопределено Тогда + ОбновлениеИнформационнойБазы.ОтметитьВыполнениеОбработки(Шаблон.Ссылка); + ОбъектовОбработано = ОбъектовОбработано + 1; + ЗафиксироватьТранзакцию(); + Продолжить; + КонецЕсли; + + ПараметрыДляЗамены = Новый Соответствие; + Префикс = МетаданныеОбъект.Имя + "."; + + Для каждого РеквизитОбъектаНазначения Из МетаданныеОбъект.Реквизиты Цикл + Если РеквизитОбъектаНазначения.Тип.Типы().Количество() = 1 Тогда + ТипОбъекта = Метаданные.НайтиПоТипу(РеквизитОбъектаНазначения.Тип.Типы()[0]); + Если ТипОбъекта <> Неопределено И СтрНачинаетсяС(ТипОбъекта.ПолноеИмя(), "Справочник") Тогда + МетаданныеВложенногоОбъект = Метаданные.НайтиПоПолномуИмени(ТипОбъекта.ПолноеИмя()); + ВложенныйПредмет = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ТипОбъекта.ПолноеИмя()).ПустаяСсылка(); + ПодготовитьПараметрыСвойствоИКИ(МетаданныеВложенногоОбъект, ВложенныйПредмет, ПараметрыДляЗамены, Префикс + РеквизитОбъектаНазначения.Имя + "."); + КонецЕсли; + КонецЕсли; + КонецЦикла; + + Предмет = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ПараметрыШаблона.ПолноеИмяТипаНазначения).ПустаяСсылка(); + ПодготовитьПараметрыСвойствоИКИ(МетаданныеОбъект, Предмет, ПараметрыДляЗамены, Префикс); + + СформироватьПараметрыДляЗамены(СведенияОШаблоне.ОбщиеРеквизиты.Строки, ПараметрыДляЗамены, ""); + + Если ПараметрыШаблона.ТипШаблона = "Письмо" Тогда + + Для каждого РеквизитДляЗамены Из ПараметрыДляЗамены Цикл + ШаблонОбъект.ТемаПисьма = СтрЗаменить(ШаблонОбъект.ТемаПисьма, РеквизитДляЗамены.Ключ, РеквизитДляЗамены.Значение); + ШаблонОбъект.ТекстШаблонаПисьмаHTML = СтрЗаменить(ШаблонОбъект.ТекстШаблонаПисьмаHTML, РеквизитДляЗамены.Ключ, РеквизитДляЗамены.Значение); + ШаблонОбъект.ТекстШаблонаПисьма = СтрЗаменить(ШаблонОбъект.ТекстШаблонаПисьма, РеквизитДляЗамены.Ключ, РеквизитДляЗамены.Значение); + КонецЦикла; + + Иначе + + Для каждого РеквизитДляЗамены Из ПараметрыДляЗамены Цикл + ШаблонОбъект.ТекстШаблонаSMS = СтрЗаменить(ШаблонОбъект.ТекстШаблонаSMS, РеквизитДляЗамены.Ключ, РеквизитДляЗамены.Значение); + КонецЦикла; + + КонецЕсли; + + ОбновлениеИнформационнойБазы.ЗаписатьОбъект(ШаблонОбъект); + + ОбъектовОбработано = ОбъектовОбработано + 1; + ЗафиксироватьТранзакцию(); + Исключение + // Если не удалось обработать шаблон сообщения, повторяем попытку снова. + ОтменитьТранзакцию(); + ПроблемныхОбъектов = ПроблемныхОбъектов + 1; + + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Не удалось обработать шаблон сообщения: %1 по причине: %2'"), + Шаблон.Ссылка, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Предупреждение, + Метаданные.Справочники.ШаблоныСообщений, Шаблон.Ссылка, ТекстСообщения); + КонецПопытки; + КонецЦикла; + + Параметры.ОбработкаЗавершена = ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, "Справочник.ШаблоныСообщений"); + + Если ОбъектовОбработано = 0 И ПроблемныхОбъектов <> 0 Тогда + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Процедуре ОбработатьДанныеДляПереходаНаНовуюВерсию не удалось обработать некоторые шаблоны сообщений (пропущены): %1'"), + ПроблемныхОбъектов); + ВызватьИсключение ТекстСообщения; + Иначе + ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация, + Метаданные.Справочники.ШаблоныСообщений,, + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Процедура обновления обработала очередную порцию шаблонов сообщений: %1'"), + ОбъектовОбработано)); + КонецЕсли; + +КонецПроцедуры + +Процедура СформироватьПараметрыДляЗамены(Строки, РеквизитыДляЗамены, Префикс) + + Для каждого РеквизитОбъектаНазначения Из Строки Цикл + + Если РеквизитОбъектаНазначения.Тип.Типы().Количество() = 1 Тогда + ТипОбъекта = Метаданные.НайтиПоТипу(РеквизитОбъектаНазначения.Тип.Типы()[0]); + Если ТипОбъекта <> Неопределено И СтрНачинаетсяС(ТипОбъекта.ПолноеИмя(), "Справочник") Тогда + МетаданныеВложенногоОбъект = Метаданные.НайтиПоПолномуИмени(ТипОбъекта.ПолноеИмя()); + ВложенныйПредмет = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ТипОбъекта.ПолноеИмя()).ПустаяСсылка(); + ПодготовитьПараметрыСвойствоИКИ(МетаданныеВложенногоОбъект, ВложенныйПредмет, РеквизитыДляЗамены, Префикс + РеквизитОбъектаНазначения.Имя + "."); + Продолжить; + КонецЕсли; + КонецЕсли; + + Если РеквизитОбъектаНазначения.Строки.Количество() > 0 Тогда + СформироватьПараметрыДляЗамены(РеквизитОбъектаНазначения.Строки, РеквизитыДляЗамены, Префикс); + + КонецЕсли; + + + КонецЦикла; + +КонецПроцедуры + +Процедура ПодготовитьПараметрыСвойствоИКИ(Знач МетаданныеОбъект, Знач Предмет, Знач РеквизитыДляЗамены, Префикс) + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонтактнаяИнформация") Тогда + МодульУправлениеКонтактнойИнформацией = ОбщегоНазначения.ОбщийМодуль("УправлениеКонтактнойИнформацией"); + ВидыКонтактнойИнформацией = МодульУправлениеКонтактнойИнформацией.ВидыКонтактнойИнформацииОбъекта(Предмет); + Если ВидыКонтактнойИнформацией.Количество() > 0 Тогда + Для каждого ВидКонтактнойИнформацией Из ВидыКонтактнойИнформацией Цикл + РеквизитыДляЗамены.Вставить("[" + Префикс + ВидКонтактнойИнформацией.Наименование + "]", "[" + Префикс + "~КИ." + ВидКонтактнойИнформацией.ИдентификаторДляФормул + "]"); + КонецЦикла; + КонецЕсли; + КонецЕсли; + + Свойства = Новый Массив; + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда + МодульУправлениеСвойствами = ОбщегоНазначения.ОбщийМодуль("УправлениеСвойствами"); + ПолучатьДопСведения = МодульУправлениеСвойствами.ИспользоватьДопСведения(Предмет); + ПолучатьДопРеквизиты = МодульУправлениеСвойствами.ИспользоватьДопРеквизиты(Предмет); + + Если ПолучатьДопРеквизиты Или ПолучатьДопСведения Тогда + Свойства = МодульУправлениеСвойствами.СвойстваОбъекта(Предмет, ПолучатьДопРеквизиты, ПолучатьДопСведения); + Для каждого Свойство Из Свойства Цикл + РеквизитыДляЗамены.Вставить("[" + Префикс + Свойство.Наименование + "]", "[" + Префикс + "~Свойство." + Свойство.ИдентификаторДляФормул + "]"); + КонецЦикла; + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#КонецОбласти + + #КонецЕсли diff --git a/SSL/src/Catalogs/ШаблоныСообщенийПрисоединенныеФайлы/ManagerModule.bsl b/SSL/src/Catalogs/ШаблоныСообщенийПрисоединенныеФайлы/ManagerModule.bsl index c0b9772bf..ec189d0e3 100644 --- a/SSL/src/Catalogs/ШаблоныСообщенийПрисоединенныеФайлы/ManagerModule.bsl +++ b/SSL/src/Catalogs/ШаблоныСообщенийПрисоединенныеФайлы/ManagerModule.bsl @@ -18,7 +18,8 @@ // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: -// Массив Из Строка - +// Массив Из Строка +// Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт Возврат РаботаСФайлами.РеквизитыРедактируемыеВГрупповойОбработке(); diff --git a/SSL/src/Catalogs/ЭлектронноеПисьмоВходящееПрисоединенныеФайлы/ManagerModule.bsl b/SSL/src/Catalogs/ЭлектронноеПисьмоВходящееПрисоединенныеФайлы/ManagerModule.bsl index c0b9772bf..ec189d0e3 100644 --- a/SSL/src/Catalogs/ЭлектронноеПисьмоВходящееПрисоединенныеФайлы/ManagerModule.bsl +++ b/SSL/src/Catalogs/ЭлектронноеПисьмоВходящееПрисоединенныеФайлы/ManagerModule.bsl @@ -18,7 +18,8 @@ // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: -// Массив Из Строка - +// Массив Из Строка +// Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт Возврат РаботаСФайлами.РеквизитыРедактируемыеВГрупповойОбработке(); diff --git a/SSL/src/Catalogs/ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы/ManagerModule.bsl b/SSL/src/Catalogs/ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы/ManagerModule.bsl index c0b9772bf..ec189d0e3 100644 --- a/SSL/src/Catalogs/ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы/ManagerModule.bsl +++ b/SSL/src/Catalogs/ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы/ManagerModule.bsl @@ -18,7 +18,8 @@ // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: -// Массив Из Строка - +// Массив Из Строка +// Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт Возврат РаботаСФайлами.РеквизитыРедактируемыеВГрупповойОбработке(); diff --git a/SSL/src/ChartsOfCharacteristicTypes/ВопросыДляАнкетирования/Forms/ФормаЭлемента/Module.bsl b/SSL/src/ChartsOfCharacteristicTypes/ВопросыДляАнкетирования/Forms/ФормаЭлемента/Module.bsl index 1dd11c626..d69b58c23 100644 --- a/SSL/src/ChartsOfCharacteristicTypes/ВопросыДляАнкетирования/Forms/ФормаЭлемента/Module.bsl +++ b/SSL/src/ChartsOfCharacteristicTypes/ВопросыДляАнкетирования/Forms/ФормаЭлемента/Module.bsl @@ -181,6 +181,10 @@ #Область ОбработчикиКомандФормы // СтандартныеПодсистемы.ПодключаемыеКоманды +// +// Параметры: +// Команда - КомандаФормы +// &НаКлиенте Процедура Подключаемый_ВыполнитьКоманду(Команда) Если СтрНачинаетсяС(Команда.Имя, "ВариантыОтветовАнкет") Тогда diff --git a/SSL/src/ChartsOfCharacteristicTypes/ВопросыДляАнкетирования/ManagerModule.bsl b/SSL/src/ChartsOfCharacteristicTypes/ВопросыДляАнкетирования/ManagerModule.bsl index 479599a77..ca3268fe4 100644 --- a/SSL/src/ChartsOfCharacteristicTypes/ВопросыДляАнкетирования/ManagerModule.bsl +++ b/SSL/src/ChartsOfCharacteristicTypes/ВопросыДляАнкетирования/ManagerModule.bsl @@ -18,7 +18,8 @@ // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: -// Массив Из Строка - +// Массив Из Строка +// Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт Результат = Новый Массив; diff --git a/SSL/src/ChartsOfCharacteristicTypes/ВопросыДляАнкетирования/ObjectModule.bsl b/SSL/src/ChartsOfCharacteristicTypes/ВопросыДляАнкетирования/ObjectModule.bsl index 3cdfb1f6f..7c6ecbde9 100644 --- a/SSL/src/ChartsOfCharacteristicTypes/ВопросыДляАнкетирования/ObjectModule.bsl +++ b/SSL/src/ChartsOfCharacteristicTypes/ВопросыДляАнкетирования/ObjectModule.bsl @@ -55,6 +55,7 @@ // Процедура очищает значения ненужных реквизитов, // Такая ситуация возникает, когда пользователь изменяет тип ответа при редактировании. +// Процедура ОчиститьНенужныеРеквизиты() Если ((ТипОтвета <> Перечисления.ТипыОтветовНаВопрос.Число) И (ТипОтвета <> Перечисления.ТипыОтветовНаВопрос.Строка) И (ТипОтвета <> Перечисления.ТипыОтветовНаВопрос.Текст)) diff --git a/SSL/src/ChartsOfCharacteristicTypes/ДополнительныеРеквизитыИСведения/Forms/ЗависимостьРеквизитов/Module.bsl b/SSL/src/ChartsOfCharacteristicTypes/ДополнительныеРеквизитыИСведения/Forms/ЗависимостьРеквизитов/Module.bsl index 26bd66b65..c3af1b220 100644 --- a/SSL/src/ChartsOfCharacteristicTypes/ДополнительныеРеквизитыИСведения/Forms/ЗависимостьРеквизитов/Module.bsl +++ b/SSL/src/ChartsOfCharacteristicTypes/ДополнительныеРеквизитыИСведения/Forms/ЗависимостьРеквизитов/Module.bsl @@ -169,12 +169,23 @@ ТаблицаФормы = Элементы.ЗависимостиРеквизитов; ТекущаяСтрока = ЗависимостиРеквизитов.НайтиПоИдентификатору(ТаблицаФормы.ТекущаяСтрока); - ТекущаяСтрока.Значение = Неопределено; Если ТаблицаФормы.ТекущиеДанные.Условие = "ВСписке" Или ТаблицаФормы.ТекущиеДанные.Условие = "НеВСписке" Тогда - ТекущаяСтрока.Значение = Новый СписокЗначений; - ТекущаяСтрока.Значение.ТипЗначения = ТаблицаФормы.ТекущиеДанные.ТипЗначения; + Если ТипЗнч(ТекущаяСтрока.Значение) <> Тип("СписокЗначений") Тогда + СтароеЗначение = ТекущаяСтрока.Значение; + ТекущаяСтрока.Значение = Новый СписокЗначений; + ТекущаяСтрока.Значение.ТипЗначения = ТаблицаФормы.ТекущиеДанные.ТипЗначения; + Если ЗначениеЗаполнено(СтароеЗначение) Тогда + ТекущаяСтрока.Значение.Добавить(СтароеЗначение); + КонецЕсли; + КонецЕсли; + ИначеЕсли ТаблицаФормы.ТекущиеДанные.Условие = "Равно" + Или ТаблицаФормы.ТекущиеДанные.Условие = "НеРавно" Тогда + Если ТипЗнч(ТекущаяСтрока.Значение) = Тип("СписокЗначений") + И ТекущаяСтрока.Значение.Количество() > 0 Тогда + ТекущаяСтрока.Значение = ТекущаяСтрока.Значение[0].Значение; + КонецЕсли; Иначе ТекущаяСтрока.Значение = Неопределено; КонецЕсли; diff --git a/SSL/src/ChartsOfCharacteristicTypes/ДополнительныеРеквизитыИСведения/Forms/РазблокированиеРеквизитов/Module.bsl b/SSL/src/ChartsOfCharacteristicTypes/ДополнительныеРеквизитыИСведения/Forms/РазблокированиеРеквизитов/Module.bsl index 61ce51cbc..3971caa28 100644 --- a/SSL/src/ChartsOfCharacteristicTypes/ДополнительныеРеквизитыИСведения/Forms/РазблокированиеРеквизитов/Module.bsl +++ b/SSL/src/ChartsOfCharacteristicTypes/ДополнительныеРеквизитыИСведения/Forms/РазблокированиеРеквизитов/Module.bsl @@ -57,6 +57,7 @@ РазблокируемыеРеквизиты = Новый Массив; РазблокируемыеРеквизиты.Добавить("ТипЗначения"); РазблокируемыеРеквизиты.Добавить("Имя"); + РазблокируемыеРеквизиты.Добавить("ИдентификаторДляФормул"); Закрыть(РазблокируемыеРеквизиты); diff --git a/SSL/src/ChartsOfCharacteristicTypes/ДополнительныеРеквизитыИСведения/Forms/ФормаЭлемента/Form.form b/SSL/src/ChartsOfCharacteristicTypes/ДополнительныеРеквизитыИСведения/Forms/ФормаЭлемента/Form.form index d0ae2d63d..63c0cfe84 100644 --- a/SSL/src/ChartsOfCharacteristicTypes/ДополнительныеРеквизитыИСведения/Forms/ФормаЭлемента/Form.form +++ b/SSL/src/ChartsOfCharacteristicTypes/ДополнительныеРеквизитыИСведения/Forms/ФормаЭлемента/Form.form @@ -1332,6 +1332,10 @@ <value>Краткое представление свойства, которое выводится в формах редактирования его значения.</value> </toolTip> + <handlers> + <event>OnChange</event> + <name>ЗаголовокПриИзменении</name> + </handlers> <extendedTooltip> <name>ЗаголовокExtendedTooltip</name> <id>118</id> @@ -2339,6 +2343,106 @@ <items xsi:type="form:FormGroup"> <name>ОстальныеРеквизиты</name> <id>107</id> + <items xsi:type="form:FormGroup"> + <name>ГруппаИдентификаторДляФормул</name> + <id>481</id> + <items xsi:type="form:FormField"> + <name>ИдентификаторДляФормул</name> + <id>483</id> + <visible>true</visible> + <enabled>true</enabled> + <userVisible> + <common>true</common> + </userVisible> + <dataPath xsi:type="form:DataPath"> + <segments>Объект.ИдентификаторДляФормул</segments> + </dataPath> + <extendedTooltip> + <name>ИдентификаторДляФормулРасширеннаяПодсказка</name> + <id>485</id> + <type>Label</type> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <extInfo xsi:type="form:LabelDecorationExtInfo"> + <horizontalAlign>Left</horizontalAlign> + </extInfo> + </extendedTooltip> + <contextMenu> + <name>ИдентификаторДляФормулКонтекстноеМеню</name> + <id>484</id> + <autoFill>true</autoFill> + </contextMenu> + <type>InputField</type> + <editMode>Enter</editMode> + <showInHeader>true</showInHeader> + <headerHorizontalAlign>Left</headerHorizontalAlign> + <showInFooter>true</showInFooter> + <extInfo xsi:type="form:InputFieldExtInfo"> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <wrap>true</wrap> + <chooseType>true</chooseType> + <typeDomainEnabled>true</typeDomainEnabled> + <textEdit>true</textEdit> + <textSize>Normal</textSize> + </extInfo> + </items> + <items xsi:type="form:Button"> + <name>ЗаполнитьИдентификаторДляФормул</name> + <id>486</id> + <visible>true</visible> + <enabled>true</enabled> + <userVisible> + <common>true</common> + </userVisible> + <extendedTooltip> + <name>ЗаполнитьИдентификаторДляФормулРасширеннаяПодсказка</name> + <id>487</id> + <type>Label</type> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <extInfo xsi:type="form:LabelDecorationExtInfo"> + <horizontalAlign>Left</horizontalAlign> + </extInfo> + </extendedTooltip> + <type>UsualButton</type> + <commandName>Form.Command.ЗаполнитьИдентификаторДляФормул</commandName> + <buttonImportance>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> + + + ГруппаИдентификаторДляФормулРасширеннаяПодсказка + 482 + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Auto + true + true + Auto + Auto + + Подсказка 30 @@ -5289,6 +5393,32 @@ DontUse Auto + + ЗаполнитьИдентификаторДляФормул + + <key>ru</key> + <value>Заполнить идентификатор для формул</value> + + 11 + + ru + Заполнить идентификатор для формул + + + true + + + CommonPicture.ЗаполнитьФорму + + + + ЗаполнитьИдентификаторДляФормул + + + Picture + Auto + Auto + ЭтоДополнительноеСведение diff --git a/SSL/src/ChartsOfCharacteristicTypes/ДополнительныеРеквизитыИСведения/Forms/ФормаЭлемента/Help/ru.html b/SSL/src/ChartsOfCharacteristicTypes/ДополнительныеРеквизитыИСведения/Forms/ФормаЭлемента/Help/ru.html index 0bf60f159..c0be6e473 100644 --- a/SSL/src/ChartsOfCharacteristicTypes/ДополнительныеРеквизитыИСведения/Forms/ФормаЭлемента/Help/ru.html +++ b/SSL/src/ChartsOfCharacteristicTypes/ДополнительныеРеквизитыИСведения/Forms/ФормаЭлемента/Help/ru.html @@ -54,7 +54,7 @@
  • Сделать копию реквизита по образцу - создается дополнительный реквизит (сведение) с общим списком значений. Должен быть включен флажок Реквизиты и сведения с общим списком значений в разделе Администрирование - Общие настройки.
  • -
  • Добавить общий реквизит в набор - сделать дополнительный реквизит (сведение) общим. В этом случае общим становится не список значений, а сам реквизит. Должен быть включен флажок Общие реквизиты и сведения в разделе Администрирование - Общие настройки.
  • Копирование дополнительных реквизитов (сведений)

    +
  • Добавить общий реквизит в набор - сделать дополнительный реквизит (сведение) общим. В этом случае общим становится не список значений, а сам реквизит. Должен быть включен флажок Общие реквизиты и сведения в разделе Администрирование - Общие настройки.
  • Копирование дополнительных реквизитов (сведений)

    • В программе предусмотрена возможность копирования дополнительных реквизитов (сведений).
    • В этом случае для набора дополнительных реквизитов (сведений) будет создана копия - самостоятельный дополнительный реквизит (сведение) со своим списком значений, никак не связанный с оригиналом, по которому был создан. @@ -77,7 +77,7 @@
    • С помощью кнопок Копировать и Вставить.
      • Выделите дополнительный реквизит (сведение), нажмите кнопку Копировать. Выделите набор, в который нужно добавить дополнительный реквизит (сведение). Нажмите кнопку Вставить. Если были произведены соответствующие настройки, то открывается вторая страница помощника добавления дополнительных реквизитов (сведений). Если выбранный дополнительный реквизит (сведение) уже входит в какой-либо набор, то предлагается сделать его общим.
      • -
      • Команды Копировать и Вставить также доступны в контекстном меню по правой кнопке мыши или в меню Еще.

    Добавление по образцу

    +
  • Команды Копировать и Вставить также доступны в контекстном меню по правой кнопке мыши или в меню Еще.
  • Добавление по образцу

    • Для того чтобы использовать эту возможность, необходимо включить флажок Реквизиты и сведения с общим списком значений в разделе Администрирование - Общие настройки.
    • Можно использовать ранее введенные дополнительные реквизиты и сведения из других наборов, добавлять реквизиты с общим списком значений сразу для нескольких однотипных реквизитов (например, Цвет двери по образцу реквизита Цвет). Список значений в этом случае используется из реквизита-образца. Удобно выполнять централизованную настройку списка значений сразу для нескольких однотипных реквизитов. @@ -107,7 +107,7 @@
    • Реквизит, созданный по образцу, который имеет общий список значений с другим реквизитом, можно сделать отдельным реквизитом.
      • Для этого нужно нажать кнопку Изменить, в открывшемся окне Изменить настройку дополнительного реквизита (сведения) выбрать переключатель Реквизит со своим списком значений и записать изменения. Список значений будет скопирован с заменой ссылок в документах. После этого станет доступным ввод списка значений.
      • -
      • Внимание: данную перенастройку для уже действующих реквизитов (использованных для ввода в документы) следует применять с осторожностью. Перенастройка реквизита является необратимой, может выполняться автоматически, но занимает много времени и может закончиться некорректно. Можно заменить значения в уже существующих документах вручную, очистив старые значения и добавив новые (рекомендуется).

    Добавление общих дополнительных реквизитов (сведений)

    +
  • Внимание: данную перенастройку для уже действующих реквизитов (использованных для ввода в документы) следует применять с осторожностью. Перенастройка реквизита является необратимой, может выполняться автоматически, но занимает много времени и может закончиться некорректно. Можно заменить значения в уже существующих документах вручную, очистив старые значения и добавив новые (рекомендуется).
  • Добавление общих дополнительных реквизитов (сведений)

    • Общий реквизит входит в несколько наборов. Этот вариант подходит для тех случаев, когда общим должен быть не только список значений, но и сам реквизит. В списках и отчетах по элементам различных справочников и документов общие реквизиты группируются и выводятся как один реквизит в одной колонке или поле. Например, с помощью общего реквизита Цвет можно отобрать всю желтую одежду и обувь.
    • Для того чтобы использовать эту возможность, необходимо включить флажок Общие реквизиты и сведения в разделе Администрирование - Общие настройки. @@ -131,7 +131,7 @@
    •  С помощью кнопки Изменить (находится рядом со ссылкой) можно общий реквизит сделать отдельным реквизитом с собственным списком значений.
      • В открывшемся окне Изменить настройку дополнительного реквизита (сведения), нажмите переключатель Реквизит со своим списком значений и записать изменения. Список значений будет скопирован с заменой ссылок в документах.
      • -
      • Внимание! Перенастройка дополнительного реквизита (сведения) необратима и может занять длительное время, в зависимости от числа документов, в которых заполнен этот реквизит. Вместо этого можно добавить новый реквизит со своим списком значений и выполнить вручную постепенный переход от использования этого реквизита к новому (очистить значения этого реквизита и заполнить значения нового).

    Типы значений дополнительных реквизитов и сведений

    +
  • Внимание! Перенастройка дополнительного реквизита (сведения) необратима и может занять длительное время, в зависимости от числа документов, в которых заполнен этот реквизит. Вместо этого можно добавить новый реквизит со своим списком значений и выполнить вручную постепенный переход от использования этого реквизита к новому (очистить значения этого реквизита и заполнить значения нового).
  • Типы значений дополнительных реквизитов и сведений

    Тип значения дополнительных реквизитов и сведений меняется исходя из логики использования. Возможны следующие типы дополнительного реквизита или сведения:

    См. также:

    +
  • Настройки электронной подписи и шифрования - переход к настройке параметров подключения средств криптографии: электронной подписи и шифрования. 
  • + + +

    Удаление помеченных объектов

    + +

    +

    См. также:

    \ No newline at end of file diff --git a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ОбщиеНастройки/Module.bsl b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ОбщиеНастройки/Module.bsl index 8bf7e94d5..cd8ac3b30 100644 --- a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ОбщиеНастройки/Module.bsl +++ b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ОбщиеНастройки/Module.bsl @@ -67,6 +67,17 @@ Элементы.ГруппаУправлениеПолнотекстовымПоиском.Видимость = Ложь; КонецЕсли; + Если (ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УдалениеПомеченныхОбъектов") ) + И Пользователи.ЭтоПолноправныйПользователь(,Истина) Тогда + + МодульУдалениеПомеченныхОбъектов = ОбщегоНазначения.ОбщийМодуль("УдалениеПомеченныхОбъектов"); + РежимРегламентногоЗадания = МодульУдалениеПомеченныхОбъектов.РежимУдалятьПоРасписанию(); + УдалениеПомеченныхИспользование = РежимРегламентногоЗадания.Использование; + Элементы.НастроитьРасписание.Доступность = УдалениеПомеченныхИспользование; + Иначе + Элементы.ГруппаУдалениеПомеченных.Видимость = Ложь; + КонецЕсли; + УстановитьДоступность(); НастройкиПрограммыПереопределяемый.ОбщиеНастройкиПриСозданииНаСервере(ЭтотОбъект); @@ -162,6 +173,25 @@ КонецПроцедуры +&НаКлиенте +Процедура УдалениеПомеченныхИспользованиеПриИзменении(Элемент) + ОповещениеОбИзменении = Новый ОписаниеОповещения("УдалениеПомеченныхИспользованиеПриИзмененииЗавершение", ЭтотОбъект); + + Если (ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.УдалениеПомеченныхОбъектов")) Тогда + МодульУдалениеПомеченныхОбъектовКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УдалениеПомеченныхОбъектовКлиент"); + МодульУдалениеПомеченныхОбъектовКлиент.ПриИзмененииФлажкаУдалятьПоРасписанию(УдалениеПомеченныхИспользование, ОповещениеОбИзменении); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура УдалениеПомеченныхИспользованиеПриИзмененииЗавершение(Изменение, ДополнительныеПараметры) Экспорт + Если (Изменение = Неопределено) Тогда + Возврат; + КонецЕсли; + + УдалениеПомеченныхИспользование = Изменение.Использование; + Элементы.НастроитьРасписание.Доступность = УдалениеПомеченныхИспользование; +КонецПроцедуры #КонецОбласти #Область ОбработчикиКомандФормы @@ -222,6 +252,22 @@ ОткрытьФорму("ОбщаяФорма.РегиональныеНастройки", ПараметрыФормы); КонецПроцедуры +&НаКлиенте +Процедура ПосмотретьПомеченныеНаУдаление(Команда) + Если (ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.УдалениеПомеченныхОбъектов")) Тогда + МодульУдалениеПомеченныхОбъектовКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УдалениеПомеченныхОбъектовКлиент"); + МодульУдалениеПомеченныхОбъектовКлиент.ПерейтиКПомеченнымНаУдаление(ЭтотОбъект); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура НастроитьРасписание(Команда) + Если (ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.УдалениеПомеченныхОбъектов")) Тогда + МодульУдалениеПомеченныхОбъектовКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УдалениеПомеченныхОбъектовКлиент"); + МодульУдалениеПомеченныхОбъектовКлиент.НачатьИзменениеРасписанияРегламентногоЗадания(); + КонецЕсли; +КонецПроцедуры + #КонецОбласти #Область СлужебныеПроцедурыИФункции @@ -306,6 +352,9 @@ КонецФункции + + + //////////////////////////////////////////////////////////////////////////////// // Сервер diff --git a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/Органайзер/Module.bsl b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/Органайзер/Module.bsl index 88eb59861..b55ac8505 100644 --- a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/Органайзер/Module.bsl +++ b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/Органайзер/Module.bsl @@ -227,8 +227,27 @@ &НаКлиенте Процедура МониторингЗадачИспользованиеПриИзменении(Элемент) - ЗаписатьРегламентноеЗадание("МониторингЗадач", МониторингЗадачИспользование, - МониторингЗадачРасписание, "МониторингЗадачРасписание"); + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСПочтовымиСообщениями") И МониторингЗадачИспользование Тогда + ОписаниеОповещения = Новый ОписаниеОповещения("МониторингЗадачИспользованиеПроверкаДоступностиПочтыВыполнена", ЭтотОбъект); + МодульРаботаСПочтовымиСообщениямиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("РаботаСПочтовымиСообщениямиКлиент"); + МодульРаботаСПочтовымиСообщениямиКлиент.ПроверитьНаличиеУчетнойЗаписиДляОтправкиПочты(ОписаниеОповещения); + Иначе + МониторингЗадачИспользованиеПроверкаДоступностиПочтыВыполнена(Истина); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура МониторингЗадачИспользованиеПроверкаДоступностиПочтыВыполнена(ПроверкаВыполнена, ДополнительныеПараметры = Неопределено) Экспорт + + Если ПроверкаВыполнена = Истина Тогда + ЗаписатьРегламентноеЗадание("МониторингЗадач", МониторингЗадачИспользование, + МониторингЗадачРасписание, "МониторингЗадачРасписание"); + Иначе + МониторингЗадачИспользование = Ложь; + КонецЕсли; + КонецПроцедуры &НаКлиенте @@ -245,8 +264,28 @@ &НаКлиенте Процедура УведомлениеИсполнителейОНовыхЗадачахИспользованиеПриИзменении(Элемент) - ЗаписатьРегламентноеЗадание("УведомлениеИсполнителейОНовыхЗадачах", УведомлениеИсполнителейОНовыхЗадачахИспользование, - УведомлениеИсполнителейОНовыхЗадачахРасписание, "УведомлениеИсполнителейОНовыхЗадачахРасписание"); + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСПочтовымиСообщениями") И УведомлениеИсполнителейОНовыхЗадачахИспользование Тогда + ОписаниеОповещения = Новый ОписаниеОповещения( + "УведомлениеИсполнителейОНовыхЗадачахИспользованиеПроверкаДоступностиПочтыВыполнена", ЭтотОбъект); + МодульРаботаСПочтовымиСообщениямиКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("РаботаСПочтовымиСообщениямиКлиент"); + МодульРаботаСПочтовымиСообщениямиКлиент.ПроверитьНаличиеУчетнойЗаписиДляОтправкиПочты(ОписаниеОповещения); + Иначе + УведомлениеИсполнителейОНовыхЗадачахИспользованиеПроверкаДоступностиПочтыВыполнена(Истина); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура УведомлениеИсполнителейОНовыхЗадачахИспользованиеПроверкаДоступностиПочтыВыполнена(ПроверкаВыполнена, ДополнительныеПараметры = Неопределено) Экспорт + + Если ПроверкаВыполнена = Истина Тогда + ЗаписатьРегламентноеЗадание("УведомлениеИсполнителейОНовыхЗадачах", УведомлениеИсполнителейОНовыхЗадачахИспользование, + УведомлениеИсполнителейОНовыхЗадачахРасписание, "УведомлениеИсполнителейОНовыхЗадачахРасписание"); + Иначе + УведомлениеИсполнителейОНовыхЗадачахИспользование = Ложь; + КонецЕсли; + КонецПроцедуры //////////////////////////////////////////////////////////////////////////////// diff --git a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ПечатныеФормыОтчетыИОбработки/Form.form b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ПечатныеФормыОтчетыИОбработки/Form.form index 69230a930..ce674768a 100644 --- a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ПечатныеФормыОтчетыИОбработки/Form.form +++ b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ПечатныеФормыОтчетыИОбработки/Form.form @@ -999,6 +999,188 @@ Auto
    + + ГруппаСостояниеОригиналовПервичныхДокументов + 1696 + + ГруппаСостояниеОригиналовПервичныхДокументовИспользование + 1698 + + ОтслеживаниеСостоянийНапечатанныхДокументов + 1700 + + <key>ru</key> + <value>Отслеживание состояний напечатанных документов</value> + + true + true + + true + + + НаборКонстант.ИспользоватьУчетОригиналовПервичныхДокументов + + Right + ShowBottom + + OnChange + ИспользоватьУчетОригиналовПервичныхДокументовПриИзменении + + + ОтслеживаниеСостоянийНапечатанныхДокументовРасширеннаяПодсказка + 1702 + + <key>ru</key> + <value>Фиксирование наличия подписанных оригиналов первичных документов.</value> + + Label + true + true + + Left + + + + ОтслеживаниеСостоянийНапечатанныхДокументовКонтекстноеМеню + 1701 + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Состояние оригиналов первичных документов использование</value> + + 43 + + ГруппаСостояниеОригиналовПервичныхДокументовИспользованиеРасширеннаяПодсказка + 1699 + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Auto + true + true + Auto + Auto + + + + ГруппаСостояниеОригиналовПервичныхДокументовНастройка + 1703 + + ОткрытьСостоянияОригиналовПервичныхДокументов + 1705 + + <key>ru</key> + <value>Состояния оригиналов первичных документов</value> + + true + true + + true + + + ОткрытьСостоянияОригиналовПервичныхДокументовРасширеннаяПодсказка + 1706 + + <key>ru</key> + <value>Настройка состояний, которые будут использоваться при отслеживании оригиналов первичных документов.</value> + + Label + true + true + + Left + + + Hyperlink + Form.Command.ОткрытьСостоянияОригиналовПервичныхДокументов + Normal + Auto + true + true + UserCmds + ShowBottom + Auto + + true + true + + true + + + <key>ru</key> + <value>Состояние оригиналов первичных документов настройка</value> + + 43 + + ГруппаСостояниеОригиналовПервичныхДокументовНастройкаРасширеннаяПодсказка + 1704 + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Auto + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Группа состояние оригиналов первичных документов.</value> + + false + + ГруппаСостояниеОригиналовПервичныхДокументовРасширеннаяПодсказка + 1697 + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Auto + true + true + Auto + Auto + + ФормаКоманднаяПанель -1 @@ -1078,6 +1260,28 @@ Auto Auto + + ОткрытьСостоянияОригиналовПервичныхДокументов + + <key>ru</key> + <value>Открыть состояния оригиналов первичных документов</value> + + 2 + + ru + Открыть состояния оригиналов первичных документов + + + true + + + + ОткрытьСостоянияОригиналовПервичныхДокументов + + + Auto + Auto + diff --git a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ПечатныеФормыОтчетыИОбработки/Module.bsl b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ПечатныеФормыОтчетыИОбработки/Module.bsl index e0b6e3b46..4c956f9d1 100644 --- a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ПечатныеФормыОтчетыИОбработки/Module.bsl +++ b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ПечатныеФормыОтчетыИОбработки/Module.bsl @@ -62,6 +62,13 @@ Подключаемый_ПриИзмененииРеквизита(Элемент); КонецПроцедуры +&НаКлиенте +Процедура ИспользоватьУчетОригиналовПервичныхДокументовПриИзменении(Элемент) + + Подключаемый_ПриИзмененииРеквизита(Элемент) + +КонецПроцедуры + #КонецОбласти #Область ОбработчикиКомандФормы @@ -76,6 +83,17 @@ КонецПроцедуры +&НаКлиенте +Процедура ОткрытьСостоянияОригиналовПервичныхДокументов(Команда) + + Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.УчетОригиналовПервичныхДокументов") Тогда + МодульУчетОригиналовПервичныхДокументовКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УчетОригиналовПервичныхДокументовКлиент"); + МодульУчетОригиналовПервичныхДокументовКлиент.ОткрытьФормуНастройкиСостояний(); + КонецЕсли; + +КонецПроцедуры + + #КонецОбласти @@ -156,6 +174,11 @@ Элементы.ОткрытьДополнительныеОтчетыИОбработки.Доступность = НаборКонстант.ИспользоватьДополнительныеОтчетыИОбработки; КонецЕсли; + Если РеквизитПутьКДанным = "НаборКонстант.ИспользоватьУчетОригиналовПервичныхДокументов" ИЛИ РеквизитПутьКДанным = "" + И ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УчетОригиналовПервичныхДокументов") Тогда + Элементы.ОткрытьСостоянияОригиналовПервичныхДокументов.Доступность = НаборКонстант.ИспользоватьУчетОригиналовПервичныхДокументов; + КонецЕсли; + КонецПроцедуры #КонецОбласти diff --git a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/ManagerModule.bsl b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/ManagerModule.bsl index 3ed59efae..b8819c14e 100644 --- a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/ManagerModule.bsl +++ b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/ManagerModule.bsl @@ -31,7 +31,7 @@ // общего модуля ВариантыОтчетов. // // Параметры: -// Разделы - СписокЗначений - +// Разделы - СписокЗначений // Процедура ПриОпределенииРазделовСВариантамиОтчетов(Разделы) Экспорт diff --git a/SSL/src/DataProcessors/ПереносФайлов/Forms/Форма/Module.bsl b/SSL/src/DataProcessors/ПереносФайлов/Forms/Форма/Module.bsl index f9a9e4417..dd9434896 100644 --- a/SSL/src/DataProcessors/ПереносФайлов/Forms/Форма/Module.bsl +++ b/SSL/src/DataProcessors/ПереносФайлов/Forms/Форма/Module.bsl @@ -263,10 +263,11 @@ КонецПроцедуры // Параметры: -// Файл - СправочникОбъект - . -// СвойстваТома - Структура - . -// ОшибкиПереноса - Массив -. -// ПеренесеноФайлов - Число - . +// Файл - СправочникОбъект +// СвойстваТома - Структура +// ОшибкиПереноса - Массив +// ПеренесеноФайлов - Число +// &НаСервере Процедура ПеренестиФайл(Файл, СвойстваТома, ОшибкиПереноса, ПеренесеноФайлов) @@ -281,7 +282,7 @@ Блокировка.Заблокировать(); ФайлОбъект = ФайлСсылка.ПолучитьОбъект(); - ИмяДляЖурнала = ФайлОбъект.Наименование + "." + ФайлОбъект.Расширение; + ИмяДляЖурнала = ОбщегоНазначенияКлиентСервер.ПолучитьИмяСРасширением(ФайлОбъект.Наименование, ФайлОбъект.Расширение); Если ПереноситьВТом И СвойстваТома.МаксимальныйОбъемТома > 0 И СвойстваТома.ТекущийОбъемТома + ФайлОбъект.Размер > СвойстваТома.МаксимальныйОбъемТома Тогда diff --git a/SSL/src/DataProcessors/ПодключениеОбсуждений/Commands/НастройкиСообщенийИзДругихПрограмм/CommandModule.bsl b/SSL/src/DataProcessors/ПодключениеОбсуждений/Commands/НастройкиСообщенийИзДругихПрограмм/CommandModule.bsl new file mode 100644 index 000000000..979ed127c --- /dev/null +++ b/SSL/src/DataProcessors/ПодключениеОбсуждений/Commands/НастройкиСообщенийИзДругихПрограмм/CommandModule.bsl @@ -0,0 +1,16 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2020, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + ОбсужденияСлужебныйКлиент.ПоказатьНастройкуИнтеграцииСВнешнимиСистемами(); +КонецПроцедуры + +#КонецОбласти diff --git a/SSL/src/DataProcessors/ПодключениеОбсуждений/Forms/НастройкиСообщенийИзДругихПрограмм/Form.form b/SSL/src/DataProcessors/ПодключениеОбсуждений/Forms/НастройкиСообщенийИзДругихПрограмм/Form.form new file mode 100644 index 000000000..96c42696f --- /dev/null +++ b/SSL/src/DataProcessors/ПодключениеОбсуждений/Forms/НастройкиСообщенийИзДругихПрограмм/Form.form @@ -0,0 +1,516 @@ + + + + <key>ru</key> + <value>Настройка сообщений из других программ</value> + + + СписокПодключений + 1 + + <key>ru</key> + <value>Список подключений</value> + + true + true + + true + + + СписокПодключений + + None + + СписокПодключенийАктивно + 20 + true + true + + true + + + СписокПодключений.Активно + + None + + ru + Бот активирован + + + СписокПодключенийАктивноРасширеннаяПодсказка + 22 + Label + true + true + + Left + + + + СписокПодключенийАктивноКонтекстноеМеню + 21 + true + + PictureField + Enter + true + + CommonPicture.СостоянияРасширенийПодключено + + true + + 1 + true + true + true + true + Proportionally + + CommonPicture.СостоянияРасширенийКонфигурации + + + + 1 + + AsFileRef + + + + СписокПодключенийНаименование + 14 + true + true + + true + + + СписокПодключений.Наименование + + + СписокПодключенийНаименованиеРасширеннаяПодсказка + 16 + Label + true + true + + Left + + + + СписокПодключенийНаименованиеКонтекстноеМеню + 15 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + + + СписокПодключенийКоманднаяПанель + 2 + Left + + + Selection + СписокПодключенийВыбор + + + СписокПодключенийСтрокаПоиска + 5 + + СписокПодключенийСтрокаПоискаРасширеннаяПодсказка + 7 + Label + true + true + + Left + + + + СписокПодключенийСтрокаПоискаКонтекстноеМеню + 6 + true + + СписокПодключений + + true + + + + СписокПодключенийСостояниеПросмотра + 11 + + СписокПодключенийСостояниеПросмотраРасширеннаяПодсказка + 13 + Label + true + true + + Left + + + + СписокПодключенийСостояниеПросмотраКонтекстноеМеню + 12 + true + + ViewStatusAddition + СписокПодключений + + true + + + + СписокПодключенийУправлениеПоиском + 8 + + СписокПодключенийУправлениеПоискомРасширеннаяПодсказка + 10 + Label + true + true + + Left + + + + СписокПодключенийУправлениеПоискомКонтекстноеМеню + 9 + true + + SearchControlAddition + СписокПодключений + + true + + + + СписокПодключенийРасширеннаяПодсказка + 4 + Label + true + true + + Left + + + + СписокПодключенийКонтекстноеМеню + 3 + true + + Tree + true + true + true + true + MultiRow +
    true
    + 1 + 1 + AutoUse + AutoUse + true + true + false + Auto + Auto + ExpandAllLevels + true + true + AsFileRef + true +
    + + ФормаКоманднаяПанель + -1 + + ПодменюСоздать + 29 + + ФормаСоздатьБотаТелеграмм + 31 + true + true + + true + + + ФормаСоздатьБотаТелеграммРасширеннаяПодсказка + 32 + Label + true + true + + Left + + + Form.Command.СоздатьБотаТелеграмм + Normal + Auto + true + true + UserCmds + + CommonPicture.Телеграм16х16 + + Auto + + + ФормаСоздатьБотаВКонтакте + 33 + true + true + + true + + + ФормаСоздатьБотаВКонтактеРасширеннаяПодсказка + 34 + Label + true + true + + Left + + + Form.Command.СоздатьБотаВКонтакте + Normal + Auto + true + true + UserCmds + + CommonPicture.ВКонтакте16х16 + + Auto + + true + true + + true + + + <key>ru</key> + <value>Создать</value> + + + ПодменюСоздатьРасширеннаяПодсказка + 30 + Label + true + true + + Left + + + Popup + + + StdPicture.CreateListItem + + Auto + Normal + + + + ФормаОбновить + 41 + true + true + + true + + + ФормаОбновитьРасширеннаяПодсказка + 42 + Label + true + true + + Left + + + Form.Command.Обновить + Normal + Auto + true + true + UserCmds + Auto + + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + DontBlock + true + true + Vertical + true + true + auto + true + + СписокПодключений + + <key>ru</key> + <value>Список подключений</value> + + 1 + + ValueTree + + + true + + + true + + + Наименование + + <key>ru</key> + <value>Наименование</value> + + 2 + + String + + + + true + + + true + + + + Тип + 3 + + String + + + + true + + + true + + + + Активно + + <key>ru</key> + <value>Активно</value> + + 4 + + Number + + 1 + + + + true + + + true + + + + Идентификатор + 1 + + + true + + + true + + + + + СоздатьБотаТелеграмм + + <key>ru</key> + <value>Чат Telegram</value> + + 1 + + true + + + + СоздатьБотаТелеграмм + + + Auto + Auto + + + СоздатьБотаВКонтакте + + <key>ru</key> + <value>Чат ВКонтакте</value> + + 2 + + true + + + + СоздатьБотаВКонтакте + + + Auto + Auto + + + Обновить + + <key>ru</key> + <value>Обновить</value> + + 3 + + ru + Обновить + + + true + + F5 + + StdPicture.Refresh + + + + Обновить + + + Picture + Auto + Auto + + + + + +
    diff --git a/SSL/src/DataProcessors/ПодключениеОбсуждений/Forms/НастройкиСообщенийИзДругихПрограмм/Module.bsl b/SSL/src/DataProcessors/ПодключениеОбсуждений/Forms/НастройкиСообщенийИзДругихПрограмм/Module.bsl new file mode 100644 index 000000000..a8e215720 --- /dev/null +++ b/SSL/src/DataProcessors/ПодключениеОбсуждений/Forms/НастройкиСообщенийИзДругихПрограмм/Module.bsl @@ -0,0 +1,129 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2020, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ОписаниеСистемы = Новый СистемнаяИнформация; + Если ОбщегоНазначенияКлиентСервер.СравнитьВерсии("8.3.17.0", ОписаниеСистемы.ВерсияПриложения) > 0 Тогда + ВызватьИсключение НСтр("ru='Форма не предназначена для использования с платформой версии ниже 8.3.17'"); + КонецЕсли; + + ТипыВнешнихСистем = ОбсужденияСлужебныйКлиентСервер.ТипыВнешнихСистем(); + + Телеграмм = СписокПодключений.ПолучитьЭлементы().Добавить(); + Телеграмм.Наименование = "Чаты Telegram"; + Телеграмм.Активно = -1; + Телеграмм.Тип = ТипыВнешнихСистем.Телеграм; + + ВКонтакте = СписокПодключений.ПолучитьЭлементы().Добавить(); + ВКонтакте.Наименование = "Чаты ВКонтакте"; + ВКонтакте.Активно = -1; + ВКонтакте.Тип = ТипыВнешнихСистем.ВКонтакте; + + ОбновитьСписокИнтеграций(); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура СоздатьБотаТелеграмм(Команда) + Оповещение = Новый ОписаниеОповещения("ПослеИзмененияИнтеграции", ЭтотОбъект); + ОбсужденияСлужебныйКлиент.ПоказатьИнформациюОбИнтеграции(ЭтотОбъект, + Новый Структура("Тип", ОбсужденияСлужебныйКлиентСервер.ТипыВнешнихСистем().Телеграм), + Оповещение); +КонецПроцедуры + +&НаКлиенте +Процедура СоздатьБотаВКонтакте(Команда) + Оповещение = Новый ОписаниеОповещения("ПослеИзмененияИнтеграции", ЭтотОбъект); + ОбсужденияСлужебныйКлиент.ПоказатьИнформациюОбИнтеграции(ЭтотОбъект, + Новый Структура("Тип", ОбсужденияСлужебныйКлиентСервер.ТипыВнешнихСистем().ВКонтакте), + Оповещение); +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Процедура ПослеИзмененияИнтеграции(Результат, ДополнительныеПараметры) Экспорт + ОбновитьСписокИнтеграций(); +КонецПроцедуры + +&НаСервере +Процедура ОбновитьСписокИнтеграций() + + ТипыИнтеграции = Новый Соответствие; + + Для каждого ТипИнтеграции Из СписокПодключений.ПолучитьЭлементы() Цикл + ТипИнтеграции.ПолучитьЭлементы().Очистить(); + ТипыИнтеграции.Вставить(ТипИнтеграции.Тип, ТипИнтеграции); + КонецЦикла; + + Для каждого Интеграция Из СистемаВзаимодействия.ПолучитьИнтеграции() Цикл + + Категория = ТипыИнтеграции[Интеграция.ТипВнешнейСистемы]; + Если Категория <> Неопределено Тогда + НоваяИнтеграция = Категория.ПолучитьЭлементы().Добавить(); + ИнтеграцияВДанныеФормы(Интеграция, НоваяИнтеграция); + Иначе + ЗаписьЖурналаРегистрации(ОбсужденияСлужебный.СобытиеЖурналаРегистрации(), + УровеньЖурналаРегистрации.Ошибка,,, + НСтр("ru='Не поддерживаемый тип внешней интеграции'")); + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +&НаСервере +Процедура ИнтеграцияВДанныеФормы(Знач Интеграция, Знач ДанныеФормы) + + ДанныеФормы.Активно = ?(Интеграция.Использование, 0, 2); + ДанныеФормы.Наименование = Интеграция.Представление; + ДанныеФормы.Идентификатор = Интеграция.Идентификатор; + ДанныеФормы.Тип = Интеграция.ТипВнешнейСистемы; + +КонецПроцедуры + +&НаКлиенте +Процедура СписокПодключенийВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + СтандартнаяОбработка = Ложь; + + Интеграция = СписокПодключений.НайтиПоИдентификатору(ВыбраннаяСтрока); + Если Интеграция.Идентификатор = Неопределено Тогда + Возврат; + КонецЕсли; + + Оповещение = Новый ОписаниеОповещения("ПослеИзмененияИнтеграции", ЭтотОбъект); + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("Тип", Интеграция.Тип); + ПараметрыФормы.Вставить("Идентификатор", Интеграция.Идентификатор); + ОбсужденияСлужебныйКлиент.ПоказатьИнформациюОбИнтеграции( + ЭтотОбъект, + ПараметрыФормы, + Оповещение); +КонецПроцедуры + +&НаКлиенте +Процедура Обновить(Команда) + ОбновитьНаСервере(); +КонецПроцедуры + +&НаСервере +Процедура ОбновитьНаСервере() + ОбновитьСписокИнтеграций(); +КонецПроцедуры + +#КонецОбласти diff --git a/SSL/src/DataProcessors/ПодключениеОбсуждений/Forms/СозданиеБотаВКонтакте/Form.form b/SSL/src/DataProcessors/ПодключениеОбсуждений/Forms/СозданиеБотаВКонтакте/Form.form new file mode 100644 index 000000000..4c02f9dc4 --- /dev/null +++ b/SSL/src/DataProcessors/ПодключениеОбсуждений/Forms/СозданиеБотаВКонтакте/Form.form @@ -0,0 +1,719 @@ + + + + <key>ru</key> + <value>Подключение бота ВКонтакте</value> + + + ГруппаОписание + 68 + + Логотип + 70 + + <key>ru</key> + <value>Логотип</value> + + true + true + + true + + + ЛоготипРасширеннаяПодсказка + 72 + Label + true + true + + Left + + + + ЛоготипКонтекстноеМеню + 71 + true + + true + true + + + CommonPicture.BotFatherВконтакте + + AsFileRef + + + + Инструкция + 42 + + <key>ru</key> + <value>1. Перейдите в настройки сообщества +2. На вкладке Работа с API создайте ключ и введите его в поле Ключ +3. На вкладке Callback API найдите строчку похожую на +{"type":"Confirmation", "group_id": 346875149} +4. Введите цифры group_id в поле ключ группы +5. Добавьте пользователей, которые будут получать сообщения от бота</value> + + true + true + + true + + + ИнструкцияРасширеннаяПодсказка + 44 + Label + true + true + + Left + + + + ИнструкцияКонтекстноеМеню + 43 + true + + true + Label + true + true + true + Center + + Left + + + true + true + + true + + + <key>ru</key> + <value>Описание</value> + + + ГруппаОписаниеРасширеннаяПодсказка + 69 + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Auto + true + true + Auto + Auto + + + + ГруппаПараметры + 97 + + Наименование + 30 + true + true + + true + + + Наименование + + + НаименованиеРасширеннаяПодсказка + 32 + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 31 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + ru + Наименование бота в 1С + + + + + Токен + 33 + true + true + + true + + + Токен + + + ТокенРасширеннаяПодсказка + 35 + Label + true + true + + Left + + + + ТокенКонтекстноеМеню + 34 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + ru + Ключ, созданный на вкладке Работа с API + + + + + ИдГруппы + 36 + + <key>ru</key> + <value>Ключ группы</value> + + true + true + + true + + + ИдГруппы + + + ИдГруппыРасширеннаяПодсказка + 38 + Label + true + true + + Left + + + + ИдГруппыКонтекстноеМеню + 37 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + ru + Ключ, отображаемый на вкладке Callback API + + + + true + true + + true + + + <key>ru</key> + <value>Параметры</value> + + + ГруппаПараметрыРасширеннаяПодсказка + 98 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + Auto + Auto + + + + Участники + 50 + + <key>ru</key> + <value>Участники обсуждения</value> + + true + true + + true + + + Участники + + + УчастникиПользователь + 63 + true + true + + true + + + Участники.Пользователь + + + УчастникиПользовательРасширеннаяПодсказка + 65 + Label + true + true + + Left + + + + УчастникиПользовательКонтекстноеМеню + 64 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + + + УчастникиКоманднаяПанель + 51 + + ПользователиПодобрать + 66 + true + true + + true + + + ПользователиПодобратьРасширеннаяПодсказка + 67 + Label + true + true + + Left + + + Form.Command.Подобрать + Normal + Auto + true + true + UserCmds + Auto + + Left + + + ChoiceProcessing + УчастникиОбработкаВыбора + + + УчастникиСтрокаПоиска + 54 + + УчастникиСтрокаПоискаРасширеннаяПодсказка + 56 + Label + true + true + + Left + + + + УчастникиСтрокаПоискаКонтекстноеМеню + 55 + true + + Участники + + true + + + + УчастникиСостояниеПросмотра + 60 + + УчастникиСостояниеПросмотраРасширеннаяПодсказка + 62 + Label + true + true + + Left + + + + УчастникиСостояниеПросмотраКонтекстноеМеню + 61 + true + + ViewStatusAddition + Участники + + true + + + + УчастникиУправлениеПоиском + 57 + + УчастникиУправлениеПоискомРасширеннаяПодсказка + 59 + Label + true + true + + Left + + + + УчастникиУправлениеПоискомКонтекстноеМеню + 58 + true + + SearchControlAddition + Участники + + true + + + + УчастникиРасширеннаяПодсказка + 53 + Label + true + true + + Left + + + + УчастникиКонтекстноеМеню + 52 + true + + true + true + true + true + true + MultiRow + 1 + 1 + AutoUse + AutoUse + true + true + Auto + Auto + true + true + AsFileRef + true + + + Bottom + true + + ФормаКоманднаяПанель + -1 + + Отключить + 99 + true + true + + true + + + ОтключитьРасширеннаяПодсказка + 100 + Label + true + true + + Left + + + Form.Command.Отключить + Normal + Auto + true + true + UserCmds + Auto + + + Закрыть + 28 + true + true + + true + + + ЗакрытьРасширеннаяПодсказка + 29 + Label + true + true + + Left + + + Form.Command.Активизировать + Auto + true + true + true + UserCmds + Auto + + Right + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwner + true + true + Vertical + true + true + true + auto + true + + Наименование + + <key>ru</key> + <value>Наименование</value> + + 1 + + String + + + + true + + + true + + ShowError + + + Токен + + <key>ru</key> + <value>Ключ</value> + + 2 + + String + + + + true + + + true + + ShowError + + + ИдГруппы + + <key>ru</key> + <value>Ид группы</value> + + 3 + + String + + + + true + + + true + + ShowError + + + Участники + + <key>ru</key> + <value>Участники</value> + + 4 + + ValueTable + + + true + + + true + + ShowError + + Пользователь + + <key>ru</key> + <value>Участники обсуждения</value> + + 5 + + CatalogRef.Пользователи + + + true + + + true + + + + + Активизировать + + <key>ru</key> + <value>Активизировать</value> + + 1 + + ru + Активизировать + + + true + + + + Активировать + + + Auto + Auto + + + Подобрать + + <key>ru</key> + <value>Подобрать</value> + + 2 + + true + + + + Подобрать + + + Auto + Auto + + + Отключить + + <key>ru</key> + <value>Отключить</value> + + 3 + + ru + Отключить + + + true + + + + Отключить + + + Auto + Auto + + + Идентификатор + + true + + + + + + diff --git a/SSL/src/DataProcessors/ПодключениеОбсуждений/Forms/СозданиеБотаВКонтакте/Module.bsl b/SSL/src/DataProcessors/ПодключениеОбсуждений/Forms/СозданиеБотаВКонтакте/Module.bsl new file mode 100644 index 000000000..e514c79fd --- /dev/null +++ b/SSL/src/DataProcessors/ПодключениеОбсуждений/Forms/СозданиеБотаВКонтакте/Module.bsl @@ -0,0 +1,113 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2020, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Параметры.Идентификатор <> Неопределено Тогда + ОписаниеИнтеграции = СистемаВзаимодействия.ПолучитьИнтеграцию(Параметры.Идентификатор); + Если ОписаниеИнтеграции <> Неопределено Тогда + Наименование = ОписаниеИнтеграции.Представление; + Токен = ОписаниеИнтеграции.ПараметрыВнешнейСистемы.Получить("token"); + ИдГруппы = ОписаниеИнтеграции.ПараметрыВнешнейСистемы.Получить("groupId"); + + Участники.Очистить(); + Для каждого ПользовательИБ Из Обсуждения.ПользователиИнформационнойБазы(ОписаниеИнтеграции.Участники) Цикл + Участники.Добавить().Пользователь = ПользовательИБ.Значение; + КонецЦикла; + КонецЕсли; + + Если ОписаниеИнтеграции.Использование Тогда + Элементы.Закрыть.Заголовок = "Изменить"; + Элементы.Отключить.Видимость = Истина; + КонецЕсли; + + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура Подобрать(Команда) + ОбсужденияСлужебныйКлиент.НачатьПодборУчастниковОбсуждения(Элементы.Участники); +КонецПроцедуры + +&НаКлиенте +Процедура Активировать(Команда) + Если НЕ ПроверитьЗаполнение() Тогда + Возврат; + КонецЕсли; + + Попытка + АктивироватьСервер(); + Закрыть(Истина); + Исключение + ПоказатьПредупреждение(, НСтр("ru='Во время активизации чат-бота произошла ошибка'") + + Символы.ПС + КраткоеПредставлениеОшибки(ИнформацияОбОшибке())); + КонецПопытки; +КонецПроцедуры + +&НаСервере +Процедура АктивироватьСервер() + + ПараметрыИнтеграции = Новый Структура; + ПараметрыИнтеграции.Вставить("Идентификатор", Параметры.Идентификатор); + ПараметрыИнтеграции.Вставить("Ключ", Наименование); + ПараметрыИнтеграции.Вставить("Тип", ОбсужденияСлужебныйКлиентСервер.ТипыВнешнихСистем().ВКонтакте); + ПараметрыИнтеграции.Вставить("Участники", Участники.Выгрузить(,"Пользователь").ВыгрузитьКолонку("Пользователь")); + ПараметрыИнтеграции.Вставить("token", Токен); + ПараметрыИнтеграции.Вставить("groupId", ИдГруппы); + + Попытка + ОбсужденияСлужебный.СоздатьИзменитьИнтеграцию(ПараметрыИнтеграции); + Исключение + ЗаписьЖурналаРегистрации(ОбсужденияСлужебный.СобытиеЖурналаРегистрации(), + УровеньЖурналаРегистрации.Ошибка,,, + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + ВызватьИсключение; + КонецПопытки; + +КонецПроцедуры + +&НаКлиенте +Процедура УчастникиОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) + СтандартнаяОбработка = Ложь; + Если ВыбранноеЗначение = Неопределено Тогда + Возврат; + КонецЕсли; + + Для каждого ПодобранныйПользователь Из ВыбранноеЗначение Цикл + Если Участники.НайтиСтроки(Новый Структура("Пользователь", ПодобранныйПользователь)).Количество() = 0 Тогда + Участники.Добавить().Пользователь = ПодобранныйПользователь; + КонецЕсли; + КонецЦикла; +КонецПроцедуры + +&НаКлиенте +Процедура Отключить(Команда) + Попытка + ОтключитьСервер(); + Закрыть(Истина); + Исключение + ПоказатьПредупреждение(, НСтр("ru='Во время отключение чат-бота произошла ошибка'") + + Символы.ПС + КраткоеПредставлениеОшибки(ИнформацияОбОшибке())); + КонецПопытки; +КонецПроцедуры + +&НаСервере +Процедура ОтключитьСервер() + ОбсужденияСлужебный.ОтключитьИнтеграцию(Параметры.Идентификатор); +КонецПроцедуры + +#КонецОбласти + diff --git a/SSL/src/DataProcessors/ПодключениеОбсуждений/Forms/СозданиеБотаТелеграм/Form.form b/SSL/src/DataProcessors/ПодключениеОбсуждений/Forms/СозданиеБотаТелеграм/Form.form new file mode 100644 index 000000000..9328d68f2 --- /dev/null +++ b/SSL/src/DataProcessors/ПодключениеОбсуждений/Forms/СозданиеБотаТелеграм/Form.form @@ -0,0 +1,654 @@ + + + + <key>ru</key> + <value>Подключение бота Telegram</value> + + + ГруппаОписание + 1 + + Логотип + 5 + + <key>ru</key> + <value>Логотип</value> + + true + true + + true + + + ЛоготипРасширеннаяПодсказка + 7 + Label + true + true + + Left + + + + ЛоготипКонтекстноеМеню + 6 + true + + 13 + true + 5 + true + false + Center + Center + + + CommonPicture.BotFather + + Proportionally + AsFileRef + + + + Инструкция + 8 + + <key>ru</key> + <value>Бот в Telegram создается при помощи другого бота под названием <link https://telegram.me/BotFather>BotFather</>. +1. Откройте Telegram в телефоне или на компьютере, найдите поиском BotFather. +2. Отправьте ему команду /newbot, выберите имя, которое будет отображаться в списке контактов. +3. Если адрес не занят, а имя введено правильно, BotFather пришлет в ответ сообщение с токеном — «ключом» для доступа к созданному боту, который понадобится далее при настройке. + +Не забудьте задать описание бота и картинку, как описано <link https://tlgrm.ru/docs/bots#edit-settings>здесь</>.</value> + + true + true + + true + + + ИнструкцияРасширеннаяПодсказка + 10 + Label + true + true + + Left + + + + ИнструкцияКонтекстноеМеню + 9 + true + + true + Label + true + true + + Left + + + true + true + + true + + + <key>ru</key> + <value>Описание</value> + + Center + + ГруппаОписаниеРасширеннаяПодсказка + 2 + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Center + Auto + true + true + Auto + Auto + + + + ГруппаПараметры + 3 + + ИмяБота + 11 + true + true + + true + + + Наименование + + + ИмяБотаРасширеннаяПодсказка + 13 + Label + true + true + + Left + + + + ИмяБотаКонтекстноеМеню + 12 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + ru + Наименование бота в Telegram + + + + + Токен + 14 + true + true + + true + + + Токен + + Button + + ТокенРасширеннаяПодсказка + 16 + Label + true + true + + Left + + + + ТокенКонтекстноеМеню + 15 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + ru + Токен, выданный BotFather при регистрации + + + + + Участники + 17 + + <key>ru</key> + <value>Участники обсуждения</value> + + true + true + + true + + + Участники + + + УчастникиПользователь + 30 + true + true + + true + + + Участники.Пользователь + + + УчастникиПользовательРасширеннаяПодсказка + 32 + Label + true + true + + Left + + + + УчастникиПользовательКонтекстноеМеню + 31 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + + + УчастникиКоманднаяПанель + 18 + + ОтветственныеПодобрать + 33 + true + true + + true + + + ОтветственныеПодобратьРасширеннаяПодсказка + 34 + Label + true + true + + Left + + + Form.Command.Подобрать + Normal + Auto + true + true + UserCmds + Auto + + Left + + + ChoiceProcessing + УчастникиОбработкаВыбора + + + УчастникиСтрокаПоиска + 21 + + УчастникиСтрокаПоискаРасширеннаяПодсказка + 23 + Label + true + true + + Left + + + + УчастникиСтрокаПоискаКонтекстноеМеню + 22 + true + + Участники + + true + + + + УчастникиСостояниеПросмотра + 27 + + УчастникиСостояниеПросмотраРасширеннаяПодсказка + 29 + Label + true + true + + Left + + + + УчастникиСостояниеПросмотраКонтекстноеМеню + 28 + true + + ViewStatusAddition + Участники + + true + + + + УчастникиУправлениеПоиском + 24 + + УчастникиУправлениеПоискомРасширеннаяПодсказка + 26 + Label + true + true + + Left + + + + УчастникиУправлениеПоискомКонтекстноеМеню + 25 + true + + SearchControlAddition + Участники + + true + + + + УчастникиРасширеннаяПодсказка + 20 + Label + true + true + + Left + + + + УчастникиКонтекстноеМеню + 19 + true + + true + true + true + true + true + MultiRow + 1 + 1 + AutoUse + AutoUse + true + true + Auto + Auto + true + true + AsFileRef + true + + + true + true + + true + + + <key>ru</key> + <value>Параметры</value> + + + ГруппаПараметрыРасширеннаяПодсказка + 4 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + Auto + Auto + + + Bottom + true + + ФормаКоманднаяПанель + -1 + + Отключить + 37 + true + + true + + + ОтключитьРасширеннаяПодсказка + 38 + Label + true + true + + Left + + + Form.Command.Отключить + Normal + Auto + true + true + UserCmds + Auto + + + Закрыть + 35 + true + true + + true + + + ЗакрытьРасширеннаяПодсказка + 36 + Label + true + true + + Left + + + Form.Command.Активировать + Auto + true + true + true + UserCmds + Auto + + Right + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwner + true + true + Vertical + true + true + true + auto + true + + Наименование + + <key>ru</key> + <value>Наименование</value> + + 1 + + String + + + + true + + + true + + ShowError + + + Токен + + <key>ru</key> + <value>Токен</value> + + 2 + + String + + + + true + + + true + + ShowError + + + Участники + + <key>ru</key> + <value>Участники</value> + + 3 + + ValueTable + + + true + + + true + + ShowError + + Пользователь + + <key>ru</key> + <value>Участники обсуждения</value> + + 4 + + CatalogRef.Пользователи + + + true + + + true + + + + + Подобрать + + <key>ru</key> + <value>Подобрать</value> + + 1 + + true + + + + Подобрать + + + Auto + Auto + + + Активировать + + <key>ru</key> + <value>Активировать</value> + + 2 + + true + + + + Активировать + + + Auto + Auto + + + Отключить + + <key>ru</key> + <value>Отключить</value> + + 3 + + ru + Отключить + + + true + + + + Отключить + + + Auto + Auto + + + Идентификатор + + true + + + + + + diff --git a/SSL/src/DataProcessors/ПодключениеОбсуждений/Forms/СозданиеБотаТелеграм/Module.bsl b/SSL/src/DataProcessors/ПодключениеОбсуждений/Forms/СозданиеБотаТелеграм/Module.bsl new file mode 100644 index 000000000..144ab8ee6 --- /dev/null +++ b/SSL/src/DataProcessors/ПодключениеОбсуждений/Forms/СозданиеБотаТелеграм/Module.bsl @@ -0,0 +1,113 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2020, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Параметры.Идентификатор <> Неопределено Тогда + ОписаниеИнтеграции = СистемаВзаимодействия.ПолучитьИнтеграцию(Параметры.Идентификатор); + + Если ОписаниеИнтеграции <> Неопределено Тогда + Наименование = ОписаниеИнтеграции.Представление; + Токен = ОписаниеИнтеграции.ПараметрыВнешнейСистемы.Получить("token"); + + Участники.Очистить(); + Для каждого ПользовательИБ Из Обсуждения.ПользователиИнформационнойБазы(ОписаниеИнтеграции.Участники) Цикл + Участники.Добавить().Пользователь = ПользовательИБ.Значение; + КонецЦикла; + КонецЕсли; + + Если ОписаниеИнтеграции.Использование Тогда + Элементы.Закрыть.Заголовок = "Изменить"; + Элементы.Отключить.Видимость = Истина; + + КонецЕсли; + + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура Подобрать(Команда) + ОбсужденияСлужебныйКлиент.НачатьПодборУчастниковОбсуждения(Элементы.Участники); +КонецПроцедуры + +&НаКлиенте +Процедура Активировать(Команда) + Если НЕ ПроверитьЗаполнение() Тогда + Возврат; + КонецЕсли; + + Попытка + АктивироватьСервер(); + Закрыть(Истина); + Исключение + ПоказатьПредупреждение(, НСтр("ru='Во время активизации чат-бота произошла ошибка'") + + Символы.ПС + КраткоеПредставлениеОшибки(ИнформацияОбОшибке())); + КонецПопытки; +КонецПроцедуры + +&НаСервере +Процедура АктивироватьСервер() + + ПараметрыИнтеграции = Новый Структура; + ПараметрыИнтеграции.Вставить("Идентификатор", Параметры.Идентификатор); + ПараметрыИнтеграции.Вставить("Ключ", Наименование); + ПараметрыИнтеграции.Вставить("Тип", ОбсужденияСлужебныйКлиентСервер.ТипыВнешнихСистем().Телеграм); + ПараметрыИнтеграции.Вставить("Участники", Участники.Выгрузить(,"Пользователь").ВыгрузитьКолонку("Пользователь")); + ПараметрыИнтеграции.Вставить("token", Токен); + + Попытка + ОбсужденияСлужебный.СоздатьИзменитьИнтеграцию(ПараметрыИнтеграции); + Исключение + ЗаписьЖурналаРегистрации(ОбсужденияСлужебный.СобытиеЖурналаРегистрации(), + УровеньЖурналаРегистрации.Ошибка,,, + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + ВызватьИсключение; + КонецПопытки; + +КонецПроцедуры + +&НаКлиенте +Процедура УчастникиОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) + СтандартнаяОбработка = Ложь; + Если ВыбранноеЗначение = Неопределено Тогда + Возврат; + КонецЕсли; + + Для каждого ПодобранныйПользователь Из ВыбранноеЗначение Цикл + Если Участники.НайтиСтроки(Новый Структура("Пользователь", ПодобранныйПользователь)).Количество() = 0 Тогда + Участники.Добавить().Пользователь = ПодобранныйПользователь; + КонецЕсли; + КонецЦикла; +КонецПроцедуры + +&НаКлиенте +Процедура Отключить(Команда) + Попытка + ОтключитьСервер(); + Закрыть(Истина); + Исключение + ПоказатьПредупреждение(, НСтр("ru='Во время отключение чат-бота произошла ошибка'") + + Символы.ПС + КраткоеПредставлениеОшибки(ИнформацияОбОшибке())); + КонецПопытки; +КонецПроцедуры + +&НаСервере +Процедура ОтключитьСервер() + ОбсужденияСлужебный.ОтключитьИнтеграцию(Параметры.Идентификатор); +КонецПроцедуры + +#КонецОбласти + diff --git a/SSL/src/DataProcessors/ПодключениеОбсуждений/Forms/Форма/Form.form b/SSL/src/DataProcessors/ПодключениеОбсуждений/Forms/Форма/Form.form index b5a6f90d1..44aa4bd88 100644 --- a/SSL/src/DataProcessors/ПодключениеОбсуждений/Forms/Форма/Form.form +++ b/SSL/src/DataProcessors/ПодключениеОбсуждений/Forms/Форма/Form.form @@ -250,8 +250,7 @@ <key>ru</key> <value>Подключите обсуждения, и пользователи этой программы смогут общаться друг с другом в режиме реального времени, создавать тематические обсуждения и вести переписку по конкретным документам, например: заказам, реализациям или контрагентам. - -Подробнее см. <link https://its.1c.ru/db/v83doc#bookmark:utx:TI000000335>документацию</>.</value> +</value> true true @@ -295,12 +294,18 @@ None ru - Информационная база будет связана с этим адресом. + На этот адрес электронной почты будут приходить коды активации. ShowBottom АдресЭлектроннойПочтыРасширеннаяПодсказка 9 + + <key>ru</key> + <value>На этот адрес электронной почты будут приходить коды активации. +</value> + + true Label true true @@ -331,6 +336,253 @@
    + + ГруппаВыборСервераВзаимодействия + 125 + + ВыборСервераВзаимодействияДиалог + 111 + true + true + + true + + + ВыборСервераВзаимодействия + + None + + OnChange + ВыборСервераВзаимодействияДиалогПриИзменении + + + ВыборСервераВзаимодействияДиалогРасширеннаяПодсказка + 113 + Label + true + true + + Left + + + + ВыборСервераВзаимодействияДиалогКонтекстноеМеню + 112 + true + + RadioButtonField + Enter + true + Left + true + + RadioButtons + + + ru + 1С:Диалог (рекомендуемый вариант) + + + 0 + + + Vertical + + + + ВыборСервераВзаимодействияЛокально + 114 + true + true + + true + + + ВыборСервераВзаимодействия + + None + + OnChange + ВыборСервераВзаимодействияЛокальноПриИзменении + + + ВыборСервераВзаимодействияЛокальноРасширеннаяПодсказка + 116 + Label + true + true + + Left + + + + ВыборСервераВзаимодействияЛокальноКонтекстноеМеню + 115 + true + + RadioButtonField + Enter + true + Left + true + + + + ru + Локальный сервер системы Взаимодействия + + + 1 + + + Vertical + + + + ГруппаЛокальныйСерверВзаимодействия + 120 + + ДекорацияПропуск + 122 + true + true + + true + + + ДекорацияПропускРасширеннаяПодсказка + 124 + Label + true + true + + Left + + + + ДекорацияПропускКонтекстноеМеню + 123 + true + + Label + 1 + true + true + + Left + + + + АдресЛокальногоСервераВзаимодействия + 117 + true + true + + true + + + АдресСервераВзаимодействия + + None + + OnChange + АдресСервераВзаимодействияПриИзменении + + + АдресЛокальногоСервераВзаимодействияРасширеннаяПодсказка + 119 + Label + true + true + + Left + + + + АдресЛокальногоСервераВзаимодействияКонтекстноеМеню + 118 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + ru + ws://localhost + + + + true + true + + true + + + <key>ru</key> + <value>Локальный сервер взаимодействия</value> + + + ГруппаЛокальныйСерверВзаимодействияРасширеннаяПодсказка + 121 + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + Auto + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Подключаться к 1С:Диалог</value> + + + ГруппаВыборСервераВзаимодействияРасширеннаяПодсказка + 126 + Label + true + true + + Left + + + UsualGroup + + Vertical + Collapsible + true + Button + true + true + auto + Auto + Auto + + true true @@ -1039,6 +1291,56 @@ true + + ВыборСервераВзаимодействия + + <key>ru</key> + <value>Выбор сервера взаимодействия</value> + + 9 + + Number + + + + true + + + true + + + + АдресСервераВзаимодействия + + <key>ru</key> + <value>Адрес сервера взаимодействия</value> + + 10 + + String + + + + true + + + true + + + + ИмяБазы + 11 + + String + + + + true + + + true + + Зарегистрироваться diff --git a/SSL/src/DataProcessors/ПодключениеОбсуждений/Forms/Форма/Module.bsl b/SSL/src/DataProcessors/ПодключениеОбсуждений/Forms/Форма/Module.bsl index 60ba9897e..0567821c3 100644 --- a/SSL/src/DataProcessors/ПодключениеОбсуждений/Forms/Форма/Module.bsl +++ b/SSL/src/DataProcessors/ПодключениеОбсуждений/Forms/Форма/Module.bsl @@ -16,8 +16,9 @@ Возврат; КонецЕсли; - СерверВзаимодействия = "wss://1cdialog.com:443"; - ИмяИнформационнойБазы = Метаданные.КраткаяИнформация; + УстановитьСерверВзаимодействияПоУмолчанию(ЭтотОбъект); + + ИмяИнформационнойБазы = Константы.ЗаголовокСистемы.Получить(); СостояниеРегистрации = ТекущееСостояниеРегистрации(); ПриИзмененииСостоянияФормы(ЭтотОбъект); @@ -36,6 +37,23 @@ КонецПроцедуры +&НаКлиенте +Процедура ВыборСервераВзаимодействияДиалогПриИзменении(Элемент) + УстановитьСерверВзаимодействияПоУмолчанию(ЭтотОбъект); + ОбновитьЭлементыВыбораСервера(ЭтотОбъект); +КонецПроцедуры + +&НаКлиенте +Процедура ВыборСервераВзаимодействияЛокальноПриИзменении(Элемент) + ОбновитьЭлементыВыбораСервера(ЭтотОбъект); +КонецПроцедуры + +&НаКлиенте +Процедура АдресСервераВзаимодействияПриИзменении(Элемент) + СерверВзаимодействия = АдресСервераВзаимодействия; + ОбновитьЭлементыВыбораСервера(ЭтотОбъект); +КонецПроцедуры + #КонецОбласти #Область ОбработчикиКомандФормы @@ -93,6 +111,11 @@ Возврат; КонецЕсли; + Если ВыборСервераВзаимодействия = 1 И ПустаяСтрока(АдресСервераВзаимодействия) Тогда + ПоказатьПредупреждение(, НСтр("ru='Не указан адрес локального сервера взаимодействия'")); + Возврат; + КонецЕсли; + ПараметрыРегистрации = Новый ПараметрыРегистрацииИнформационнойБазыСистемыВзаимодействия; ПараметрыРегистрации.АдресСервера = СерверВзаимодействия; ПараметрыРегистрации.АдресЭлектроннойПочты = АдресЭлектроннойПочты; @@ -209,6 +232,7 @@ УстановитьСтраницу(Форма); ОбновитьВидимостьКнопокКоманднойПанели(Форма); + ОбновитьЭлементыВыбораСервера(Форма); КонецПроцедуры @@ -241,6 +265,11 @@ КонецФункции +&НаКлиентеНаСервереБезКонтекста +Процедура УстановитьСерверВзаимодействияПоУмолчанию(Форма) + Форма.СерверВзаимодействия = "wss://1cdialog.com:443"; +КонецПроцедуры + #КонецОбласти #Область Представления @@ -297,6 +326,27 @@ КонецПроцедуры +&НаКлиентеНаСервереБезКонтекста +Процедура ОбновитьЭлементыВыбораСервера(Форма) + ПредставлениеСервераВзаимодействия = ?(Форма.ВыборСервераВзаимодействия = 0, + НСтр("ru='1С:Диалог'"), + Форма.СерверВзаимодействия); + ПредставлениеЗаголовка = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru='Подключаться к %1'"), + ПредставлениеСервераВзаимодействия); + + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + Форма.Элементы, + "ГруппаЛокальныйСерверВзаимодействия", + "Заголовок", + ПредставлениеЗаголовка); + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы( + Форма.Элементы, + "ГруппаЛокальныйСерверВзаимодействия", + "Доступность", + Форма.ВыборСервераВзаимодействия <> 0); +КонецПроцедуры + #КонецОбласти #КонецОбласти \ No newline at end of file diff --git a/SSL/src/DataProcessors/ПодключениеОбсуждений/ПодключениеОбсуждений.mdo b/SSL/src/DataProcessors/ПодключениеОбсуждений/ПодключениеОбсуждений.mdo index 8e85e2e81..bcdc92b86 100644 --- a/SSL/src/DataProcessors/ПодключениеОбсуждений/ПодключениеОбсуждений.mdo +++ b/SSL/src/DataProcessors/ПодключениеОбсуждений/ПодключениеОбсуждений.mdo @@ -25,6 +25,33 @@ <usePurposes>PersonalComputer</usePurposes> <usePurposes>MobileDevice</usePurposes> </forms> + <forms uuid="8640eacd-e6f9-4b0b-8511-c6ad2336ec6c"> + <name>НастройкиСообщенийИзДругихПрограмм</name> + <synonym> + <key>ru</key> + <value>Настройки сообщений из других программ</value> + </synonym> + <usePurposes>PersonalComputer</usePurposes> + <usePurposes>MobileDevice</usePurposes> + </forms> + <forms uuid="b374e22f-17f3-4186-af1f-fa35d1a7e559"> + <name>СозданиеБотаТелеграм</name> + <synonym> + <key>ru</key> + <value>Создание бота телеграм</value> + </synonym> + <usePurposes>PersonalComputer</usePurposes> + <usePurposes>MobileDevice</usePurposes> + </forms> + <forms uuid="53555ee4-f99d-4935-a884-89313aa3ca6a"> + <name>СозданиеБотаВКонтакте</name> + <synonym> + <key>ru</key> + <value>Создание бота в контакте</value> + </synonym> + <usePurposes>PersonalComputer</usePurposes> + <usePurposes>MobileDevice</usePurposes> + </forms> <commands uuid="f38bb317-8a59-4786-be76-e1d4e534628d"> <name>ОтключениеОбсуждений</name> <synonym> @@ -34,4 +61,13 @@ <group>ActionsPanelTools</group> <representation>Auto</representation> </commands> + <commands uuid="25741b39-1c6b-4851-8584-9711d25ef05a"> + <name>НастройкиСообщенийИзДругихПрограмм</name> + <synonym> + <key>ru</key> + <value>Настройки сообщений из других программ</value> + </synonym> + <group>ActionsPanelTools</group> + <representation>Auto</representation> + </commands> </mdclass:DataProcessor> diff --git a/SSL/src/DataProcessors/ПоискИУдалениеДублей/Forms/ПоискДублей/Form.form b/SSL/src/DataProcessors/ПоискИУдалениеДублей/Forms/ПоискДублей/Form.form index 741ae33f6..8711ccfd7 100644 --- a/SSL/src/DataProcessors/ПоискИУдалениеДублей/Forms/ПоискДублей/Form.form +++ b/SSL/src/DataProcessors/ПоискИУдалениеДублей/Forms/ПоискДублей/Form.form @@ -637,7 +637,7 @@ <excludedCommands>Change</excludedCommands> <items xsi:type="form:FormField"> <name>НайденныеДублиПометкаУдаления</name> - <id>471</id> + <id>516</id> <visible>true</visible> <enabled>true</enabled> <userVisible> @@ -653,7 +653,7 @@ </toolTip> <extendedTooltip> <name>НайденныеДублиПометкаУдаленияРасширеннаяПодсказка</name> - <id>473</id> + <id>518</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -663,7 +663,7 @@ </extendedTooltip> <contextMenu> <name>НайденныеДублиПометкаУдаленияКонтекстноеМеню</name> - <id>472</id> + <id>517</id> <autoFill>true</autoFill> </contextMenu> <type>PictureField</type> @@ -689,6 +689,46 @@ <items xsi:type="form:FormGroup"> <name>ИспользоватьНаименование</name> <id>109</id> + <items xsi:type="form:FormField"> + <name>НайденныеДублиПометка</name> + <id>103</id> + <visible>true</visible> + <enabled>true</enabled> + <userVisible> + <common>true</common> + </userVisible> + <dataPath xsi:type="form:DataPath"> + <segments>НайденныеДубли.Пометка</segments> + </dataPath> + <titleLocation>None</titleLocation> + <handlers> + <event>OnChange</event> + <name>НайденныеДублиПометкаПриИзменении</name> + </handlers> + <extendedTooltip> + <name>НайденныеДублиПометкаРасширеннаяПодсказка</name> + <id>105</id> + <type>Label</type> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <extInfo xsi:type="form:LabelDecorationExtInfo"> + <horizontalAlign>Left</horizontalAlign> + </extInfo> + </extendedTooltip> + <contextMenu> + <name>НайденныеДублиПометкаКонтекстноеМеню</name> + <id>104</id> + <autoFill>true</autoFill> + </contextMenu> + <type>CheckBoxField</type> + <editMode>Auto</editMode> + <showInHeader>true</showInHeader> + <headerHorizontalAlign>Left</headerHorizontalAlign> + <showInFooter>true</showInFooter> + <extInfo xsi:type="form:CheckBoxFieldExtInfo"> + <threeState>true</threeState> + </extInfo> + </items> <items xsi:type="form:FormField"> <name>НайденныеДублиОсновной</name> <id>114</id> @@ -740,46 +780,6 @@ </border> </extInfo> </items> - <items xsi:type="form:FormField"> - <name>НайденныеДублиПометка</name> - <id>103</id> - <visible>true</visible> - <enabled>true</enabled> - <userVisible> - <common>true</common> - </userVisible> - <dataPath xsi:type="form:DataPath"> - <segments>НайденныеДубли.Пометка</segments> - </dataPath> - <titleLocation>None</titleLocation> - <handlers> - <event>OnChange</event> - <name>НайденныеДублиПометкаПриИзменении</name> - </handlers> - <extendedTooltip> - <name>НайденныеДублиПометкаРасширеннаяПодсказка</name> - <id>105</id> - <type>Label</type> - <autoMaxWidth>true</autoMaxWidth> - <autoMaxHeight>true</autoMaxHeight> - <extInfo xsi:type="form:LabelDecorationExtInfo"> - <horizontalAlign>Left</horizontalAlign> - </extInfo> - </extendedTooltip> - <contextMenu> - <name>НайденныеДублиПометкаКонтекстноеМеню</name> - <id>104</id> - <autoFill>true</autoFill> - </contextMenu> - <type>CheckBoxField</type> - <editMode>Auto</editMode> - <showInHeader>true</showInHeader> - <headerHorizontalAlign>Left</headerHorizontalAlign> - <showInFooter>true</showInFooter> - <extInfo xsi:type="form:CheckBoxFieldExtInfo"> - <threeState>true</threeState> - </extInfo> - </items> <items xsi:type="form:FormField"> <name>НайденныеДублиНаименование</name> <id>100</id> @@ -1207,6 +1207,32 @@ </extendedTooltip> <extInfo xsi:type="form:ButtonGroupExtInfo"/> </items> + <items xsi:type="form:Button"> + <name>НайденныеДублиКонтекстноеМенюСортироватьСписокПоУбыванию</name> + <id>519</id> + <visible>true</visible> + <enabled>true</enabled> + <userVisible> + <common>true</common> + </userVisible> + <extendedTooltip> + <name>НайденныеДублиКонтекстноеМенюСортироватьСписокПоУбываниюРасширеннаяПодсказка</name> + <id>520</id> + <type>Label</type> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <extInfo xsi:type="form:LabelDecorationExtInfo"> + <horizontalAlign>Left</horizontalAlign> + </extInfo> + </extendedTooltip> + <commandName>Form.Item.НайденныеДубли.StandardCommand.SortListDesc</commandName> + <buttonImportance>Normal</buttonImportance> + <representation>Auto</representation> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <placementArea>UserCmds</placementArea> + <representationInContextMenu>Auto</representationInContextMenu> + </items> <autoFill>true</autoFill> </contextMenu> <representation>Tree</representation> @@ -1832,17 +1858,90 @@ <items xsi:type="form:FormGroup"> <name>ШагУспешноеУдаление</name> <id>212</id> - <items xsi:type="form:Decoration"> - <name>Декорация5</name> - <id>352</id> + <items xsi:type="form:FormGroup"> + <name>ГруппаИнформацияОбУспешномУдалении</name> + <id>471</id> + <items xsi:type="form:Decoration"> + <name>Декорация5</name> + <id>352</id> + <visible>true</visible> + <enabled>true</enabled> + <userVisible> + <common>true</common> + </userVisible> + <extendedTooltip> + <name>Декорация5РасширеннаяПодсказка</name> + <id>354</id> + <type>Label</type> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <extInfo xsi:type="form:LabelDecorationExtInfo"> + <horizontalAlign>Left</horizontalAlign> + </extInfo> + </extendedTooltip> + <contextMenu> + <name>Декорация5КонтекстноеМеню</name> + <id>353</id> + <autoFill>true</autoFill> + </contextMenu> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <groupVerticalAlign>Center</groupVerticalAlign> + <extInfo xsi:type="form:PictureDecorationExtInfo"> + <picture xsi:type="core:PictureRef"> + <picture>CommonPicture.Успешно32</picture> + </picture> + </extInfo> + </items> + <items xsi:type="form:FormField"> + <name>ОписаниеСостоянияНайденныхДублей1</name> + <id>344</id> + <visible>true</visible> + <enabled>true</enabled> + <userVisible> + <common>true</common> + </userVisible> + <dataPath xsi:type="form:DataPath"> + <segments>ОписаниеСостоянияНайденныхДублей</segments> + </dataPath> + <titleLocation>None</titleLocation> + <extendedTooltip> + <name>ОписаниеСостоянияНайденныхДублей1РасширеннаяПодсказка</name> + <id>346</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>345</id> + <autoFill>true</autoFill> + </contextMenu> + <type>LabelField</type> + <horizontalAlign>Left</horizontalAlign> + <verticalAlign>Center</verticalAlign> + <groupVerticalAlign>Center</groupVerticalAlign> + <editMode>Enter</editMode> + <showInHeader>true</showInHeader> + <headerHorizontalAlign>Left</headerHorizontalAlign> + <showInFooter>true</showInFooter> + <extInfo xsi:type="form:LabelFieldExtInfo"> + <height>5</height> + <autoMaxHeight>true</autoMaxHeight> + <verticalStretch>false</verticalStretch> + </extInfo> + </items> <visible>true</visible> <enabled>true</enabled> <userVisible> <common>true</common> </userVisible> <extendedTooltip> - <name>Декорация5РасширеннаяПодсказка</name> - <id>354</id> + <name>ГруппаИнформацияОбУспешномУдаленииРасширеннаяПодсказка</name> + <id>472</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1850,35 +1949,440 @@ <horizontalAlign>Left</horizontalAlign> </extInfo> </extendedTooltip> - <contextMenu> - <name>Декорация5КонтекстноеМеню</name> - <id>353</id> - <autoFill>true</autoFill> - </contextMenu> - <autoMaxWidth>true</autoMaxWidth> - <autoMaxHeight>true</autoMaxHeight> - <groupVerticalAlign>Center</groupVerticalAlign> - <extInfo xsi:type="form:PictureDecorationExtInfo"> - <picture xsi:type="core:PictureRef"> - <picture>CommonPicture.Успешно32</picture> - </picture> + <type>UsualGroup</type> + <extInfo xsi:type="form:UsualGroupExtInfo"> + <group>HorizontalIfPossible</group> + <behavior>Auto</behavior> + <showLeftMargin>true</showLeftMargin> + <united>true</united> + <throughAlign>Auto</throughAlign> + <currentRowUse>Auto</currentRowUse> </extInfo> </items> - <items xsi:type="form:FormField"> - <name>ОписаниеСостоянияНайденныхДублей1</name> - <id>344</id> + <items xsi:type="form:FormGroup"> + <name>ГруппаВозможныеДубли</name> + <id>495</id> + <displayImportance>Low</displayImportance> + <items xsi:type="form:FormGroup"> + <name>ГруппаДействияВозможныеДубли</name> + <id>502</id> + <items xsi:type="form:Decoration"> + <name>ДекорацияПодсказкаВозможныеДубли</name> + <id>504</id> + <title> + <key>ru</key> + <value>Для продолжения поиска выберете список и нажмите кнопку "Новый поиск"</value> + + true + true + + true + + + ДекорацияПодсказкаВозможныеДублиРасширеннаяПодсказка + 506 + Label + true + true + + Left + + + + ДекорацияПодсказкаВозможныеДублиКонтекстноеМеню + 505 + true + + Label + true + true + + Style.ПоясняющийТекст + + + Left + +
    + + ОтображаемаяСтепеньРодства + 507 + + <key>ru</key> + <value>Показать</value> + + true + true + + true + + + ОтображаемаяСтепеньРодства + + + ru + Важные - места использования замененных элементов с наиболее вероятным возникновением дублей + + + OnChange + ОтображаемаяСтепеньРодстваПриИзменении + + + ОтображаемаяСтепеньРодстваРасширеннаяПодсказка + 509 + Label + true + true + + Left + + + + ОтображаемаяСтепеньРодстваКонтекстноеМеню + 508 + true + + RadioButtonField + Right + Enter + true + Left + true + + Tumbler + + + ru + Важные + + + 2 + + + + + ru + Все + + + 1 + + + Vertical + + + true + true + + true + + + ГруппаДействияВозможныеДублиРасширеннаяПодсказка + 503 + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Auto + true + true + Auto + Auto + +
    + + ВозможныеДубли + 473 + true + true + + true + + + ВозможныеДубли + + None + ShowTop + + ВозможныеДублиГруппа + 510 + + ВозможныеДублиВыбран + 497 + true + true + + true + + + ВозможныеДубли.Выбран + + None + + OnChange + ВозможныеДублиВыбранПриИзменении + + + ВозможныеДублиВыбранРасширеннаяПодсказка + 499 + Label + true + true + + Left + + + + ВозможныеДублиВыбранКонтекстноеМеню + 498 + true + + CheckBoxField + Auto + true + Left + true + + + + ВозможныеДублиИмяОбъектаМетаданных + 486 + true + true + + true + + + ВозможныеДубли.ИмяОбъектаМетаданных + + + ВозможныеДублиИмяОбъектаМетаданныхРасширеннаяПодсказка + 488 + Label + true + true + + Left + + + + ВозможныеДублиИмяОбъектаМетаданныхКонтекстноеМеню + 487 + true + + InputField + true + true + Left + true + + true + true + true + true + true + Normal + + + true + true + + true + + + ВозможныеДублиГруппаРасширеннаяПодсказка + 511 + Label + true + true + + Left + + + ColumnGroup + + InCell + auto + true + + + + ВозможныеДублиИсточники + 492 + true + true + + true + + + ВозможныеДубли.ИсточникиПредставление + + + ВозможныеДублиИсточникиРасширеннаяПодсказка + 494 + Label + true + true + + Left + + + + ВозможныеДублиИсточникиКонтекстноеМеню + 493 + true + + InputField + true + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ВозможныеДублиКоманднаяПанель + 475 + Left + + + ВозможныеДублиСтрокаПоиска + 477 + + ВозможныеДублиСтрокаПоискаРасширеннаяПодсказка + 479 + Label + true + true + + Left + + + + ВозможныеДублиСтрокаПоискаКонтекстноеМеню + 478 + true + + ВозможныеДубли + + true + + + + ВозможныеДублиСостояниеПросмотра + 480 + + ВозможныеДублиСостояниеПросмотраРасширеннаяПодсказка + 482 + Label + true + true + + Left + + + + ВозможныеДублиСостояниеПросмотраКонтекстноеМеню + 481 + true + + ViewStatusAddition + ВозможныеДубли + + true + + + + ВозможныеДублиУправлениеПоиском + 483 + + ВозможныеДублиУправлениеПоискомРасширеннаяПодсказка + 485 + Label + true + true + + Left + + + + ВозможныеДублиУправлениеПоискомКонтекстноеМеню + 484 + true + + SearchControlAddition + ВозможныеДубли + + true + + + + ВозможныеДублиРасширеннаяПодсказка + 476 + Label + true + true + + Left + + + + ВозможныеДублиКонтекстноеМеню + 474 + true + + true + true + true +
    true
    + 1 + 1 + AutoUse + AutoUse + true + true + false + false + false + true + Auto + Auto + true + true + AsFileRef + true + +
    true true true - - ОписаниеСостоянияНайденныхДублей - - None + + <key>ru</key> + <value>В процессе работы могли возникнуть дубли в других списках</value> + + + ru + Например, при замене дублей контрагентов могут возникнуть дубли договоров или банковский счетов. + + Balloon - ОписаниеСостоянияНайденныхДублей1РасширеннаяПодсказка - 346 + ГруппаВозможныеДублиРасширеннаяПодсказка + 496 Label true true @@ -1886,23 +2390,18 @@ Left - - ОписаниеСостоянияНайденныхДублей1КонтекстноеМеню - 345 - true - - LabelField - Left - Center - Center - Enter - true - Left - true - - 5 - true - false + UsualGroup + + Vertical + ItemsLeftTitlesLeft + Collapsible + true + Button + true + true + auto + Auto + Auto
    true @@ -1926,7 +2425,7 @@
    Page - HorizontalIfPossible + Vertical auto false @@ -3333,8 +3832,8 @@ ПанельДействийМастера 167 - ГруппаНазад - 169 + ПанельДействияМастераЛево + 512 ШагМастераНазад 171 @@ -3359,7 +3858,7 @@ true true UserCmds - Auto + AdditionalInContextMenu true true @@ -3367,8 +3866,8 @@ true - ГруппаНазадРасширеннаяПодсказка - 170 + ПанельДействияМастераЛевоРасширеннаяПодсказка + 513 Label true true @@ -3382,8 +3881,8 @@ - ГруппаВперед - 173 + ПанельДействияМастераПраво + 514 ШагМастераДалее 175 @@ -3439,44 +3938,19 @@ true UserCmds Auto + InCommandBarAndInAdditionalSubmenu - - ГруппаСправкаФормы - 184 - - Справка - 179 - true - true - - true - - - СправкаРасширеннаяПодсказка - 180 - Label - true - true - - Left - - - Form.StandardCommand.Help - Normal - Auto - true - true - UserCmds - Auto - + + Справка + 179 true true true - ГруппаСправкаФормыРасширеннаяПодсказка - 185 + СправкаРасширеннаяПодсказка + 180 Label true true @@ -3484,7 +3958,13 @@ Left - + Form.StandardCommand.Help + Normal + Auto + true + true + UserCmds + Auto true true @@ -3492,8 +3972,8 @@ true - ГруппаВпередРасширеннаяПодсказка - 174 + ПанельДействияМастераПравоРасширеннаяПодсказка + 515 Label true true @@ -3757,6 +4237,16 @@ UseIfNecessary auto true + + + ПанельДействияМастераПраво + + + + + КоманднаяПанель + + Объект 1 @@ -4591,6 +5081,271 @@ true + + ВозможныеДубли + + <key>ru</key> + <value>Возможные дубли</value> + + 4 + + ValueTable + + + true + + + true + + + ИмяОбъектаМетаданных + + <key>ru</key> + <value>Возможно, возникли дубли в</value> + + 1 + + String + + + + true + + + true + + + + ТипОбъектаМетаданных + 2 + + String + + + + true + + + true + + + + ИсточникиПредставление + + <key>ru</key> + <value>при замене в</value> + + 3 + + String + + + + true + + + true + + + + Порядок + 4 + + Number + + 10 + + + + true + + + true + + + + Обработано + 5 + + Boolean + + + true + + + true + + + + Источники + 6 + + + true + + + true + + + + Выбран + + <key>ru</key> + <value>Выбран</value> + + 7 + + Boolean + + + true + + + true + + + + СтепеньРодства + 8 + + Boolean + + + true + + + true + + + + АдресОтбора + 9 + + String + + + + true + + + true + + + + + ВозможныйДубльВыбран + 26 + + Boolean + + + true + + + true + + + + ВозможныйДубльВыбранныйТип + 31 + + String + + + + true + + + true + + + + СкрыватьНезначимыеДубли + 36 + + Boolean + + + true + + + true + + + + ОтображаемаяСтепеньРодства + + <key>ru</key> + <value>Отображаемая степень родства</value> + + 37 + + Number + + 10 + + + + true + + + true + + + + АдресВыбранныхМестИспользования + 38 + + String + + + + true + + + true + + + + АдресНайденныхДублей + 39 + + String + + + + true + + + true + + + + ТипыОбработанныхОбъектов + 40 + + TypeDescription + + + true + + + true + + + + ИдентификаторОбластиПоискаДублей + 41 + + CatalogRef.ИдентификаторыОбъектовМетаданных + + + true + + + true + + ВыбратьОсновнойЭлемент @@ -4881,6 +5636,23 @@ <currentRowUse>Auto</currentRowUse> <selectedRowsUse>Auto</selectedRowsUse> </formCommands> + <formCommands> + <name>пап</name> + <title> + <key>ru</key> + <value>Пап</value> + + 9 + + ru + Пап + + + true + + Auto + Auto + diff --git a/SSL/src/DataProcessors/ПоискИУдалениеДублей/Forms/ПоискДублей/Module.bsl b/SSL/src/DataProcessors/ПоискИУдалениеДублей/Forms/ПоискДублей/Module.bsl index 499919e5c..70a92f3e7 100644 --- a/SSL/src/DataProcessors/ПоискИУдалениеДублей/Forms/ПоискДублей/Module.bsl +++ b/SSL/src/DataProcessors/ПоискИУдалениеДублей/Forms/ПоискДублей/Module.bsl @@ -32,8 +32,7 @@ ОтображениеСостояния = Элементы.ПоискНеВыполнялся.ОтображениеСостояния; ОтображениеСостояния.Видимость = Истина; ОтображениеСостояния.Текст = НСтр("ru = 'Поиск дублей не выполнялся. - |Задайте условия отбора и сравнения и нажмите ""Найти дубли"".'"); - ОтображениеСостояния.Картинка = Элементы.Предупреждение32.Картинка; + |Задайте условия отбора и сравнения и нажмите ""Найти дубли"".'"); ОтображениеСостояния = Элементы.ВыполнениеПоиска.ОтображениеСостояния; ОтображениеСостояния.Видимость = Истина; @@ -47,7 +46,6 @@ ОтображениеСостояния.Видимость = Истина; ОтображениеСостояния.Текст = НСтр("ru = 'Не обнаружено дублей по указанным параметрам. |Измените условия отбора и сравнения, нажмите ""Найти дубли""'"); - ОтображениеСостояния.Картинка = Элементы.Предупреждение32.Картинка; // Автосохранение настроек СохраняемыеВНастройкахДанныеМодифицированы = Истина; @@ -87,7 +85,7 @@ // 5. Успешное удаление. Шаг = ДобавитьШагМастера(Элементы.ШагУспешноеУдаление); - Шаг.КнопкаНазад.Заголовок = НСтр("ru = '< Новый поиск'"); + Шаг.КнопкаНазад.Заголовок = НСтр("ru = 'Повторить поиск'"); Шаг.КнопкаНазад.Подсказка = НСтр("ru = 'Начать новый поиск с другими параметрами'"); Шаг.КнопкаДалее.Видимость = Ложь; Шаг.КнопкаОтмена.КнопкаПоУмолчанию = Истина; @@ -118,6 +116,13 @@ УстановитьВидимостьДоступность(ЭтотОбъект); Элементы.ГруппаПодробно.Видимость = Ложь; + ОтображаемаяСтепеньРодства = 2; + УстановитьОтборВозможныхДублей(ЭтотОбъект); + + Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда + Элементы.Шапка.ВыравниваниеЭлементовИЗаголовков = ВариантВыравниванияЭлементовИЗаголовков.ЭлементыПравоЗаголовкиЛево; + Элементы.КоманднаяПанель.Видимость = Ложь; + КонецЕсли; КонецПроцедуры @@ -193,7 +198,7 @@ &НаКлиенте Процедура ОбластьПоискаДублейПриИзменении(Элемент) - ИнициализироватьКомпоновщикОтбораИПравила(Неопределено); + ИнициализироватьКомпоновщикОтбораИПравила(Неопределено); ПерейтиНаШагМастера(Элементы.ШагПоискНеВыполнялся); КонецПроцедуры @@ -520,6 +525,61 @@ #КонецОбласти +#Область ОбработчикиСобытийЭлементовТаблицыФормыВозможныеДубли + +&НаКлиенте +Процедура ОтображаемаяСтепеньРодстваПриИзменении(Элемент) + + УстановитьОтборВозможныхДублей(ЭтотОбъект); + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Процедура УстановитьОтборВозможныхДублей(Форма) + + Если Форма.ОтображаемаяСтепеньРодства = 1 Тогда + Форма.Элементы.ВозможныеДубли.ОтборСтрок = Неопределено; + Иначе + Форма.Элементы.ВозможныеДубли.ОтборСтрок = Новый ФиксированнаяСтруктура("СтепеньРодства", 2); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ВозможныеДублиВыбранПриИзменении(Элемент) + + ТекущиеДанные = Элементы.ВозможныеДубли.ТекущиеДанные; + + ВыбранныеСтроки = ВозможныеДубли.НайтиСтроки(Новый Структура("Выбран", Истина)); + Для каждого СтрокаДубля Из ВыбранныеСтроки Цикл + + Если СтрокаДубля.ПолучитьИдентификатор() = ТекущиеДанные.ПолучитьИдентификатор() Тогда + Продолжить; + КонецЕсли; + + СтрокаДубля.Выбран = Ложь; + + КонецЦикла; + + ВозможныйДубльВыбран = ТекущиеДанные.Выбран; + ВозможныйДубльВыбранныйТип = ТекущиеДанные.ТипОбъектаМетаданных; + + ПриАктивацииШагаМастера(); + +КонецПроцедуры + +&НаКлиенте +Процедура ОбновитьСостояниеВозможныхДублей() + + ЗаголовокГруппы = НСтр("ru='В процессе работы могли возникнуть дубли в других списках (%1)'"); + КоличествоНеобработанных = ВозможныеДубли.НайтиСтроки(Новый Структура("Обработано", Ложь)).Количество(); + Элементы.ГруппаВозможныеДубли.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ЗаголовокГруппы, КоличествоНеобработанных); + Элементы.ГруппаВозможныеДубли.Видимость = КоличествоНеобработанных > 0; + +КонецПроцедуры + +#КонецОбласти + #Область ОбработчикиКомандФормы &НаКлиенте @@ -655,19 +715,24 @@ КонецПроцедуры // Параметры: -// Страница - ГруппаФормы - +// Страница - ГруппаФормы // // Возвращаемое значение: -// Структура - где: -// * Индекс - Число - -// * ИмяСтраницы - Строка - +// Структура: +// * Индекс - Число +// * ИмяСтраницы - Строка // * КнопкаНазад - см. КнопкаМастера // * КнопкаДалее - см. КнопкаМастера // * КнопкаОтмена - см. КнопкаМастера // &НаСервере Функция ДобавитьШагМастера(Знач Страница) - ОписаниеШага = Новый Структура("Индекс, ИмяСтраницы, КнопкаНазад, КнопкаДалее, КнопкаОтмена"); + ОписаниеШага = Новый Структура; + ОписаниеШага.Вставить("Индекс", 0); + ОписаниеШага.Вставить("ИмяСтраницы", ""); + ОписаниеШага.Вставить("КнопкаНазад", КнопкаМастера()); + ОписаниеШага.Вставить("КнопкаДалее", КнопкаМастера()); + ОписаниеШага.Вставить("КнопкаОтмена", КнопкаМастера()); ОписаниеШага.ИмяСтраницы = Страница.Имя; ОписаниеШага.КнопкаНазад = КнопкаМастера(); @@ -785,6 +850,12 @@ Если ПустаяСтрока(ТекстПравил) Тогда ТекстПравил = НСтр("ru = 'Правила не заданы'"); КонецЕсли; + + Если СкрыватьНезначимыеДубли Тогда + СтрокаПравил = НСтр("ru = 'не показывать помеченные на удаление без мест использования'"); + ТекстПравил = ?(ТекстПравил = "", "", ТекстПравил + Союз) + СтрокаПравил; + КонецЕсли; + ПредставлениеПравилПоиска = ТекстПравил; // Доступность. @@ -816,6 +887,14 @@ Элементы.Шапка.Доступность = Ложь; + Если ВозможныйДубльВыбран Тогда + Элементы.ШагМастераНазад.Заголовок = НСтр("ru='Новый поиск'"); + Элементы.ШагМастераНазад.КнопкаПоУмолчанию = Истина; + Иначе + Элементы.ШагМастераНазад.Заголовок = НСтр("ru='Повторить поиск'"); + Элементы.ШагМастераНазад.КнопкаПоУмолчанию = Ложь; + КонецЕсли; + ИначеЕсли ТекущаяСтраница = Элементы.ШагНеудачныеЗамены Тогда Элементы.Шапка.Доступность = Ложь; @@ -846,6 +925,7 @@ ОчиститьСообщения(); ТекущаяСтраница = Элементы.ШагиМастера.ТекущаяСтраница; + Шаг = НастройкиМастера.ТекущийШаг;// см. ДобавитьШагМастера Если ТекущаяСтраница = Элементы.ШагПоискНеВыполнялся Тогда Если ПустаяСтрока(ОбластьПоискаДублей) Тогда @@ -853,12 +933,12 @@ Возврат; КонецЕсли; - ПерейтиНаШагМастера(НастройкиМастера.ТекущийШаг.Индекс + 1); + ПерейтиНаШагМастера(Шаг.Индекс + 1); ИначеЕсли ТекущаяСтраница = Элементы.ШагВыборОсновногоЭлемента Тогда Элементы.ПовторитьПоиск.Видимость = Ложь; - ПерейтиНаШагМастера(НастройкиМастера.ТекущийШаг.Индекс + 1); + ПерейтиНаШагМастера(Шаг.Индекс + 1); ИначеЕсли ТекущаяСтраница = Элементы.ШагНеудачныеЗамены Тогда @@ -870,7 +950,7 @@ Иначе - ПерейтиНаШагМастера(НастройкиМастера.ТекущийШаг.Индекс + 1); + ПерейтиНаШагМастера(Шаг.Индекс + 1); КонецЕсли; @@ -883,11 +963,17 @@ Если ТекущаяСтраница = Элементы.ШагУспешноеУдаление Тогда - ПерейтиНаШагМастера(Элементы.ШагПоискНеВыполнялся); + Если ВозможныйДубльВыбран Тогда + ОтобратьВыбранныеМестаИспользования(ВозможныйДубльВыбранныйТип); + ОбластьПоискаДублейЗавершениеВыбора(ВозможныйДубльВыбранныйТип, Неопределено); + Иначе + ПерейтиНаШагМастера(Элементы.ШагПоискНеВыполнялся); + КонецЕсли; Иначе - ПерейтиНаШагМастера(НастройкиМастера.ТекущийШаг.Индекс - 1); + Шаг = НастройкиМастера.ТекущийШаг;// см. ДобавитьШагМастера + ПерейтиНаШагМастера(Шаг.Индекс - 1); КонецЕсли; @@ -920,7 +1006,8 @@ Результат.Вставить("ОбластьПоискаДублей", ""); Результат.Вставить("НастройкиКД", Неопределено); Результат.Вставить("ПравилаПоиска", Неопределено); - Результат.Вставить("СпособУдаления", "Пометка"); + Результат.Вставить("СпособУдаления", "Пометка"); + Результат.Вставить("СкрыватьНезначимыеДубли", Истина); Возврат Результат; КонецФункции @@ -1075,6 +1162,9 @@ &НаКлиенте Процедура ОбновитьОписаниеСостоянияНайденныхДублей() + ЕстьПодсистемаУдаленияПомеченных = ОбщегоНазначенияКлиент.ПодсистемаСуществует( + "СтандартныеПодсистемы.УдалениеПомеченныхОбъектов"); + Если ПустаяСтрока(ОписаниеОшибкиПоискаДублей) Тогда Описание = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Выбрано дублей: %1 из %2.'"), @@ -1083,10 +1173,18 @@ Описание = ОписаниеОшибкиПоискаДублей; КонецЕсли; - Если СпособУдаления = "Пометка" Тогда - ТекстПодсказки = НСтр("ru = 'Выбранные элементы будут помечены на удаление и заменены на оригиналы (отмечены стрелкой).'"); + Если ЕстьПодсистемаУдаленияПомеченных Тогда + + Если СпособУдаления = "Пометка" Тогда + ТекстПодсказки = НСтр("ru = 'Выбранные элементы будут помечены на удаление и заменены на оригиналы (отмечены стрелкой).'"); + Иначе + ТекстПодсказки = НСтр("ru = 'Выбранные элементы будут безвозвратно удалены и заменены на оригиналы (отмечены стрелкой).'"); + КонецЕсли; + Иначе - ТекстПодсказки = НСтр("ru = 'Выбранные элементы будут безвозвратно удалены и заменены на оригиналы (отмечены стрелкой).'"); + + ТекстПодсказки = НСтр("ru = 'Выбранные элементы будут помечены на удаление и заменены на оригиналы (отмечены стрелкой).'"); + КонецЕсли; ОписаниеСостоянияНайденныхДублей = СтроковыеФункцииКлиент.ФорматированнаяСтрока(Описание + Символы.ПС + ТекстПодсказки); @@ -1103,6 +1201,8 @@ Настройки.Вставить("УчитыватьПрикладныеПравила", УчитыватьПрикладныеПравила); Настройки.Вставить("ВсеВариантыСравнения", ВсеВариантыСравнения); Настройки.Вставить("ПравилаПоиска", РеквизитФормыВЗначение("ПравилаПоиска")); + Настройки.Вставить("СкрыватьНезначимыеДубли", СкрыватьНезначимыеДубли); + Возврат ПоместитьВоВременноеХранилище(Настройки); КонецФункции @@ -1120,6 +1220,7 @@ Результат = ПолучитьИзВременногоХранилища(АдресРезультата); УдалитьИзВременногоХранилища(АдресРезультата); УчитыватьПрикладныеПравила = Результат.УчитыватьПрикладныеПравила; + СкрыватьНезначимыеДубли = Результат.СкрыватьНезначимыеДубли; ЗначениеВРеквизитФормы(Результат.ПравилаПоиска, "ПравилаПоиска"); СохранитьПользовательскиеНастройки(); КонецПроцедуры @@ -1164,6 +1265,18 @@ ОтборыЗагружены = Ложь; НастройкиКД = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(НастройкиФормы, "НастройкиКД"); Если ТипЗнч(НастройкиКД) = Тип("НастройкиКомпоновкиДанных") Тогда + + Для Сч = -(НастройкиКД.Отбор.Элементы.Количество()-1) По 0 Цикл + + Отбор = НастройкиКД.Отбор.Элементы[-Сч]; + Если СтрНайти(Отбор.Представление, НСтр("ru='среди которых возможны дубли'")) > 0 Тогда + + ОбщегоНазначенияКлиентСервер.УдалитьЭлементыГруппыОтбора(НастройкиКД.Отбор,,Отбор.Представление); + + КонецЕсли; + + КонецЦикла; + КомпоновщикПредварительногоОтбора.ЗагрузитьНастройки(НастройкиКД); ОтборыЗагружены = Истина; КонецЕсли; @@ -1192,6 +1305,39 @@ , Ложь); КонецЕсли; + + // Отбор по обработанным местам использования (переход по механизму "Возможные дубли") + Если ЭтоАдресВременногоХранилища(АдресВыбранныхМестИспользования) Тогда + + ВыбранныеМестаИспользования = ПолучитьИзВременногоХранилища(АдресВыбранныхМестИспользования); + ГруппаОтбора = Неопределено; + Если ВыбранныеМестаИспользования.ЗначениеОтбора.Количество() > 0 Тогда + + ГруппаОтбора = ОбщегоНазначенияКлиентСервер.СоздатьГруппуЭлементовОтбора( + КомпоновщикПредварительногоОтбора.Настройки.Отбор.Элементы + ,ВыбранныеМестаИспользования.ПредставлениеОтбора + ,ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли); + + КонецЕсли; + + Для каждого РеквизитЗначениеОтбора Из ВыбранныеМестаИспользования.ЗначениеОтбора Цикл + + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора( + ГруппаОтбора, + РеквизитЗначениеОтбора.Ключ, + РеквизитЗначениеОтбора.Значение, + ВидСравненияКомпоновкиДанных.ВСписке, + "", + Истина); + + КонецЦикла; + + + УдалитьИзВременногоХранилища(АдресВыбранныхМестИспользования); + АдресВыбранныхМестИспользования = ""; + + КонецЕсли; + // Сравнение по наименованию. Если Не ПравилаЗагружены Тогда Правило = ТаблицаПравил.Найти("Наименование", "Реквизит"); @@ -1223,6 +1369,12 @@ ТаблицаПравил.Сортировать("ПредставлениеРеквизита"); ЗначениеВРеквизитФормы(ТаблицаПравил, "ПравилаПоиска"); + ИдентификаторОбластиПоискаДублей = Справочники.ИдентификаторыОбъектовМетаданных + .НайтиПоРеквизиту("ПолноеИмя", ОбластьПоискаДублей); + ТипОбластиПоискаДублей = ТипЗнч(ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ИдентификаторОбластиПоискаДублей, "ЗначениеПустойСсылки")); + ТипыОбработанныхОбъектов = Новый ОписаниеТипов( + ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ТипОбластиПоискаДублей)); + Если НастройкиФормы = Неопределено Тогда СохранитьПользовательскиеНастройки(); КонецЕсли; @@ -1233,6 +1385,7 @@ УчитыватьПрикладныеПравила = НастройкиФормы.УчитыватьПрикладныеПравила; ОбластьПоискаДублей = НастройкиФормы.ОбластьПоискаДублей; СпособУдаления = НастройкиФормы.СпособУдаления; + СкрыватьНезначимыеДубли = НастройкиФормы.СкрыватьНезначимыеДубли; ТаблицаНастроек = ПоискИУдалениеДублей.НастройкиОбъектовМетаданных(); АдресНастроек = ПоместитьВоВременноеХранилище(ТаблицаНастроек, УникальныйИдентификатор); @@ -1253,6 +1406,7 @@ НастройкиФормы.Вставить("ОбластьПоискаДублей", ОбластьПоискаДублей); НастройкиФормы.Вставить("НастройкиКД", КомпоновщикПредварительногоОтбора.Настройки); НастройкиФормы.Вставить("ПравилаПоиска", ПравилаПоиска.Выгрузить()); + НастройкиФормы.Вставить("СкрыватьНезначимыеДубли", СкрыватьНезначимыеДубли); ОбщегоНазначения.ХранилищеОбщихНастроекСохранить(ИмяФормы, "", НастройкиФормы); КонецПроцедуры @@ -1325,6 +1479,22 @@ ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить(); ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("НайденныеДубли"); + // Возможные дубли + ЭлементОформления = ЭлементыУсловногоОформления.Добавить(); + + ОтборОформления = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборОформления.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ВозможныеДубли.Обработано"); + ОтборОформления.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборОформления.ПравоеЗначение = Истина; + + ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет); + + ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить(); + ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("ВозможныеДублиИмяОбъектаМетаданных"); + + ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить(); + ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("ВозможныеДублиИсточники"); + КонецПроцедуры &НаСервере @@ -1456,6 +1626,7 @@ ПараметрыПроцедуры.Вставить("ПравилаПоиска", МассивПравилПоиска); ПараметрыПроцедуры.Вставить("СхемаКомпоновки", ПолучитьИзВременногоХранилища(АдресСхемыКомпоновки)); ПараметрыПроцедуры.Вставить("НастройкиКомпоновщикаПредварительногоОтбора", КомпоновщикПредварительногоОтбора.Настройки); + ПараметрыПроцедуры.Вставить("СкрыватьНезначимыеДубли", СкрыватьНезначимыеДубли); ИначеЕсли ТекущаяСтраница = Элементы.ШагВыполнениеУдаления Тогда @@ -1465,7 +1636,7 @@ Возврат Неопределено; КонецЕсли; - Элементы.ВыполнениеУдаления.ОтображениеСостояния.Текст = НСтр("ru = 'Удаление дублей...'"); + Элементы.ВыполнениеУдаления.ОтображениеСостояния.Текст = НСтр("ru = 'Обработка дублей...'"); ИмяПроцедуры = РеквизитФормыВЗначение("Объект").Метаданные().ПолноеИмя() + ".МодульОбъекта.ФоновоеУдалениеДублей"; НаименованиеМетода = НСтр("ru = 'Поиск и удаление дублей: Удаление дублей'"); @@ -1504,12 +1675,12 @@ ИначеЕсли ТекущаяСтраница = Элементы.ШагВыполнениеУдаления Тогда - Сообщение = НСтр("ru = 'Удаление дублей...'"); - Если Прогресс.Прогресс.Процент > 0 Тогда - Сообщение = Сообщение + " " - + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = '(удалено %1 из %2)'"), Прогресс.Прогресс.Процент, ВсегоНайденоДублей); + Если НЕ ПустаяСтрока(Прогресс.Прогресс.Текст) Тогда + Сообщение = Прогресс.Прогресс.Текст; + Иначе + Сообщение = НСтр("ru = 'Обработка дублей...'"); КонецЕсли; + Элементы.ВыполнениеУдаления.ОтображениеСостояния.Текст = Сообщение; КонецЕсли; @@ -1542,20 +1713,23 @@ Возврат; КонецЕсли; + Шаг = НастройкиМастера.ТекущийШаг;// см. ДобавитьШагМастера Если ТекущаяСтраница = Элементы.ШагВыполнениеПоиска Тогда ВсегоНайденоДублей = ЗаполнитьРезультатыПоискаДублей(Задание.АдресРезультата); ВсегоЭлементов = ВсегоНайденоДублей; Если ВсегоНайденоДублей > 0 Тогда ОбновитьОписаниеСостоянияНайденныхДублей(); - ПерейтиНаШагМастера(НастройкиМастера.ТекущийШаг.Индекс + 1); + ПерейтиНаШагМастера(Шаг.Индекс + 1); Иначе ПерейтиНаШагМастера(Элементы.ШагДублейНеНайдено); КонецЕсли; ИначеЕсли ТекущаяСтраница = Элементы.ШагВыполнениеУдаления Тогда Успех = ЗаполнитьРезультатыУдаленияДублей(Задание.АдресРезультата); + ОбщегоНазначенияКлиент.ОповеститьОбИзмененииОбъектов(ТипыОбработанныхОбъектов); Если Успех = Истина Тогда // Заменены все группы дублей. - ПерейтиНаШагМастера(НастройкиМастера.ТекущийШаг.Индекс + 1); + ОбновитьСостояниеВозможныхДублей(); + ПерейтиНаШагМастера(Шаг.Индекс + 1); Иначе // Не все места использования удалось заменить. ПерейтиНаШагМастера(Элементы.ШагНеудачныеЗамены); @@ -1631,6 +1805,7 @@ ГруппаДерева.Пометка = ПометкаГруппы; ГруппаДерева.Наименование = ОригинальныйЭлемент.Наименование + " (" + ГруппаДерева.Количество + ")"; + ГруппаДерева.Строки.Сортировать("Наименование"); КонецЦикла; ЗначениеВРеквизитФормы(ДеревоНайденныхДублей, "НайденныеДубли"); @@ -1706,7 +1881,11 @@ МестаИспользованияКандидата.Очистить(); Если ЗавершеноБезОшибок Тогда + ЗаполнитьВозможныеДубли(); НайденныеДубли.ПолучитьЭлементы().Очистить(); + ЕстьВажныеВозможныеДубли = ВозможныеДубли.НайтиСтроки(Новый Структура("СтепеньРодства",2)).Количество() > 0; + ОтображаемаяСтепеньРодства = ?(ЕстьВажныеВозможныеДубли, 2, 1); + УстановитьОтборВозможныхДублей(ЭтотОбъект); Возврат Истина; КонецЕсли; @@ -1762,6 +1941,197 @@ Возврат Ложь; КонецФункции +&НаСервере +Процедура ЗаполнитьВозможныеДубли() + + ИдентификаторОбрабатываемогоОбъекта = ИдентификаторОбластиПоискаДублей; + ОбрабатываемыйОбъектМетаданных = ОбщегоНазначения.ОбъектМетаданныхПоИдентификатору(ИдентификаторОбрабатываемогоОбъекта); + + ОбработанныйВозможныйДубль = ВозможныеДубли.НайтиСтроки( + Новый Структура("ТипОбъектаМетаданных", ОбрабатываемыйОбъектМетаданных.ПолноеИмя())); + Если ОбработанныйВозможныйДубль.Количество() > 0 Тогда + ОбработанныйВозможныйДубль[0].Обработано = Истина; + КонецЕсли; + + МестаИспользования = ПолучитьИзВременногоХранилища(АдресМестИспользования); + ПредполагаемыеВозможныеДубли = СформироватьВозможныеДубли(МестаИспользования); + + ОтборПоискаВозможныхДублей = СформироватьОтборВозможныхДублей(РеквизитФормыВЗначение("НайденныеДубли")); + + Для каждого МестоИспользования Из ПредполагаемыеВозможныеДубли Цикл + + Если ОбрабатываемыйОбъектМетаданных = МестоИспользования + ИЛИ МестоИспользования = Неопределено Тогда + + Продолжить; + КонецЕсли; + + КлючиСвязи = КлючиСвязиМетаданных(ИдентификаторОбрабатываемогоОбъекта, МестоИспользования); + Если КлючиСвязи.Количество() > 0 Тогда + ДобавитьВозможныйДубль(ОбрабатываемыйОбъектМетаданных, МестоИспользования, КлючиСвязи, ОтборПоискаВозможныхДублей); + КонецЕсли; + + КонецЦикла; + + ВыбранныеОбработанныеСтроки = ВозможныеДубли.НайтиСтроки(Новый Структура("Обработано, Выбран", Истина, Истина)); + Для каждого СтрокаВозможныеДубли Из ВыбранныеОбработанныеСтроки Цикл + СтрокаВозможныеДубли.Выбран = Ложь; + КонецЦикла; + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция СформироватьОтборВозможныхДублей(ДеревоДублей) + + Отбор = Новый Массив; + Для каждого ГруппаДублей Из ДеревоДублей.Строки Цикл + + Для каждого СтрокаДубля Из ГруппаДублей.Строки Цикл + + Если СтрокаДубля.Основной Тогда + Отбор.Добавить(СтрокаДубля.Ссылка); + КонецЕсли; + + КонецЦикла; + + КонецЦикла; + Возврат Отбор; + +КонецФункции + + +&НаСервереБезКонтекста +Функция СформироватьВозможныеДубли(МестаИспользования) + + ИсключаемыеТипы = ПоискИУдалениеДублей.ТипыИсключаемыеИзВозможныхДублей(); + + ПредполагаемыеМестаИспользования = Новый Массив; + Для каждого МестоИспользования Из МестаИспользования Цикл + + ТипМестаИспользования = ТипЗнч(МестоИспользования.Данные); + Если МестоИспользования.ВспомогательныеДанные + ИЛИ МестоИспользования.ЭтоСлужебныеДанные + ИЛИ НЕ ОбщегоНазначения.ЭтоСсылка(ТипМестаИспользования) + ИЛИ ИсключаемыеТипы.Найти(ТипМестаИспользования) <> Неопределено Тогда + + Продолжить; + КонецЕсли; + + ОписаниеМетаданных = ?(МестоИспользования.Метаданные <> Неопределено, МестоИспользования.Метаданные, МестоИспользования.Данные.Метаданные()); + + МетаданныеПодходят = ОбщегоНазначения.ЭтоСправочник(ОписаниеМетаданных) + ИЛИ ОбщегоНазначения.ЭтоПланВидовХарактеристик(ОписаниеМетаданных); + + Если НЕ МетаданныеПодходят Тогда + Продолжить; + КонецЕсли; + + Если ПредполагаемыеМестаИспользования.Найти(ОписаниеМетаданных) = Неопределено Тогда + ПредполагаемыеМестаИспользования.Добавить(ОписаниеМетаданных); + КонецЕсли; + + КонецЦикла; + + Возврат ПредполагаемыеМестаИспользования; + +КонецФункции + +&НаСервере +Процедура ДобавитьВозможныйДубль(ОбрабатываемыйОбъектМетаданных, МестоИспользования, КлючиСвязи, Отбор = Неопределено) + + ПредставлениеМестаИспользования = МестоИспользования.Представление(); + ПолноеИмяМестаИспользования = МестоИспользования.ПолноеИмя(); + + ТекущийПорядковыйНомер = ?(ВозможныеДубли.Количество(),ВозможныеДубли[ВозможныеДубли.Количество() - 1].Порядок + 1, 0); + ОтборДублей = Новый Структура("ТипОбъектаМетаданных", ПолноеИмяМестаИспользования); + ДобавленныеДубли = ВозможныеДубли.НайтиСтроки(ОтборДублей); + + Если ДобавленныеДубли.Количество() > 0 Тогда + + ВозможныйДубль = ДобавленныеДубли[0]; + Если ВозможныйДубль.Источники.НайтиПоЗначению(ПолноеИмяМестаИспользования) <> Неопределено Тогда + ВозможныйДубль.Источники.Добавить(ОбрабатываемыйОбъектМетаданных.Представление()); + КонецЕсли; + + ИнформацияОбОтбореВозможныхДублей = ПолучитьИзВременногоХранилища(ВозможныйДубль.АдресОтбора); + + Иначе + + ВозможныйДубль = ВозможныеДубли.Добавить(); + ВозможныйДубль.ИмяОбъектаМетаданных = ПредставлениеМестаИспользования; + ВозможныйДубль.ТипОбъектаМетаданных = ПолноеИмяМестаИспользования; + ВозможныйДубль.Порядок = ТекущийПорядковыйНомер; + ВозможныйДубль.Обработано = Ложь; + + Источники = Новый СписокЗначений; + Источники.Добавить(ОбрабатываемыйОбъектМетаданных.Представление()); + ВозможныйДубль.Источники = Источники; + + ИнформацияОбОтбореВозможныхДублей = Новый Соответствие; + + КонецЕсли; + + ВозможныйДубль.СтепеньРодства = ?(КлючиСвязи.Найти(2, "СтепеньРодства") <> Неопределено, 2, 1); + ВозможныйДубль.ИсточникиПредставление = СтрСоединить(ВозможныйДубль.Источники.ВыгрузитьЗначения(), ", "); + + // Будем сохранять информацию о выполненных заменах для отбора возможных дублей + // Соответствие: Ключ - левое значение отбора, Значение - правое значение + Для каждого КлючиСвязи Из КлючиСвязи Цикл + + ОтборВозможныхДублей = ИнформацияОбОтбореВозможныхДублей[КлючиСвязи.Имя]; + Если ОтборВозможныхДублей = Неопределено Тогда + ИнформацияОбОтбореВозможныхДублей.Вставить(КлючиСвязи.Имя, Отбор); + Иначе + ОбщегоНазначенияКлиентСервер.ДополнитьМассив(ОтборВозможныхДублей, Отбор); + ИнформацияОбОтбореВозможныхДублей.Вставить(КлючиСвязи.Имя, ОтборВозможныхДублей); + КонецЕсли; + + КонецЦикла; + + ВозможныйДубль.АдресОтбора = ПоместитьВоВременноеХранилище(ИнформацияОбОтбореВозможныхДублей, УникальныйИдентификатор); + +КонецПроцедуры + +// Функция - Степень родства метаданных +// +// +// Возвращаемое значение: +// - Число - как связаны объекты метаданных между собой +// 0 - не связаны +// 1 - связь по реквизиту +// 2 - связь по Родителю/Владельцу +// +&НаСервереБезКонтекста +Функция КлючиСвязиМетаданных(Знач ИдентификаторОбрабатываемогоОбъекта, Знач МестоИспользования) + + Результат = Новый ТаблицаЗначений; + Результат.Колонки.Добавить("Имя"); + Результат.Колонки.Добавить("СтепеньРодства"); + + Для каждого РеквизитМестаИспользования Из МестоИспользования.Реквизиты Цикл + + Если РеквизитМестаИспользования.Тип.Типы().Найти(ТипЗнч(ИдентификаторОбрабатываемогоОбъекта.ЗначениеПустойСсылки)) <> Неопределено Тогда + СвязьМетаданных = Результат.Добавить(); + СвязьМетаданных.Имя = РеквизитМестаИспользования.Имя; + СвязьМетаданных.СтепеньРодства = 1; + КонецЕсли; + + КонецЦикла; + + Для каждого РеквизитМестаИспользования Из МестоИспользования.СтандартныеРеквизиты Цикл + + Если РеквизитМестаИспользования.Тип.Типы().Найти(ТипЗнч(ИдентификаторОбрабатываемогоОбъекта.ЗначениеПустойСсылки)) <> Неопределено Тогда + СвязьМетаданных = Результат.Добавить(); + СвязьМетаданных.Имя = РеквизитМестаИспользования.Имя; + СвязьМетаданных.СтепеньРодства = 2; + КонецЕсли; + + КонецЦикла; + + Возврат Результат; + +КонецФункции + &НаКлиенте Процедура ПослеПодтвержденияОтменыЗадания(Ответ, ПараметрыВыполнения) Экспорт Если Ответ = КодВозвратаДиалога.Прервать Тогда @@ -1776,12 +2146,14 @@ // Описание настроек кнопки мастера. // // Возвращаемое значение: -// Структура - Настройки кнопки формы, где: -// * Заголовок - Строка - Заголовок кнопки. -// * Подсказка - Строка - Подсказка для кнопки. -// * Видимость - Булево - Когда Истина то кнопка видна. Значение по умолчанию - Истина. -// * Доступность - Булево - Когда Истина то кнопку можно нажимать. Значение по умолчанию - Истина. -// * КнопкаПоУмолчанию - Булево - Когда Истина то кнопка будет основной кнопкой формы. Значение по умолчанию - Ложь. +// Структура - настройки кнопки формы, где: +// * Заголовок - Строка - заголовок кнопки. +// * Подсказка - Строка - подсказка для кнопки. +// * Видимость - Булево - когда Истина то кнопка видна. Значение по умолчанию - Истина. +// * Доступность - Булево - когда Истина то кнопку можно нажимать. Значение по умолчанию - Истина. +// * КнопкаПоУмолчанию - Булево - когда Истина то кнопка будет основной кнопкой формы. Значение по умолчанию - Ложь. +// * РасширеннаяПодсказка - Структура: +// ** Заголовок - Строка // &НаКлиентеНаСервереБезКонтекста Функция КнопкаМастера() @@ -1798,7 +2170,7 @@ // Параметры: // КнопкаМастера - см. КнопкаМастера -// Описание - Строка - +// Описание - Строка // &НаКлиентеНаСервереБезКонтекста Процедура ОбновитьСвойстваКнопкиМастера(КнопкаМастера, Описание) @@ -1808,4 +2180,41 @@ КонецПроцедуры +&НаСервере +Процедура ОтобратьВыбранныеМестаИспользования(ВыбранныйТип) + + Перем АдресОтбора; + ВыбранныеМестаИспользования = Новый Структура("ПредставлениеОтбора, ЗначениеОтбора","", Новый Структура); + ВыбранныйДубль = ВозможныеДубли.НайтиСтроки(Новый Структура("ТипОбъектаМетаданных", ВыбранныйТип)); + + ИдентификаторМетаданных = ОбщегоНазначения.ИдентификаторОбъектаМетаданных(ВыбранныйТип); + ВыбранныеМетаданные = ОбщегоНазначения.ОбъектМетаданныхПоИдентификатору(ИдентификаторМетаданных); + ВыбранныеМестаИспользования.ПредставлениеОтбора = НСтр("ru='Элементы, среди которых возможны дубли'"); + + ЗначенияОтбора = Новый СписокЗначений; + + Если ВыбранныйДубль.Количество() > 0 Тогда + + ВыбранныйДубль = ВыбранныйДубль[0]; + АдресОтбора = ВыбранныйДубль.АдресОтбора; + + КонецЕсли; + + Если ЭтоАдресВременногоХранилища(АдресОтбора) Тогда + + Отбор = ПолучитьИзВременногоХранилища(АдресОтбора); + Для каждого РеквизитЗначениеОтбора Из Отбор Цикл + + ЗначениеОтбора = Новый СписокЗначений; + ЗначениеОтбора.ЗагрузитьЗначения(РеквизитЗначениеОтбора.Значение); + ВыбранныеМестаИспользования.ЗначениеОтбора.Вставить(РеквизитЗначениеОтбора.Ключ, ЗначениеОтбора); + + КонецЦикла; + + КонецЕсли; + + АдресВыбранныхМестИспользования = ПоместитьВоВременноеХранилище(ВыбранныеМестаИспользования, УникальныйИдентификатор); + +КонецПроцедуры + #КонецОбласти \ No newline at end of file diff --git a/SSL/src/DataProcessors/ПоискИУдалениеДублей/Forms/ПравилаОтбора/Form.form b/SSL/src/DataProcessors/ПоискИУдалениеДублей/Forms/ПравилаОтбора/Form.form index e7c4e4111..b4a1624fa 100644 --- a/SSL/src/DataProcessors/ПоискИУдалениеДублей/Forms/ПравилаОтбора/Form.form +++ b/SSL/src/DataProcessors/ПоискИУдалениеДублей/Forms/ПравилаОтбора/Form.form @@ -1,5 +1,5 @@ - + <key>ru</key> <value>Правила отбора</value> @@ -144,17 +144,73 @@ <autoCommandBar> <name>ФормаКоманднаяПанель</name> <id>-1</id> - <items xsi:type="form:Button"> - <name>ФормаВыбрать</name> - <id>5</id> + <items xsi:type="form:FormGroup"> + <name>ГруппаСкрытоНаМобильномКлиенте</name> + <id>22</id> + <items xsi:type="form:Button"> + <name>ФормаВыбрать</name> + <id>5</id> + <visible>true</visible> + <enabled>true</enabled> + <userVisible> + <common>true</common> + </userVisible> + <extendedTooltip> + <name>ФормаВыбратьРасширеннаяПодсказка</name> + <id>6</id> + <type>Label</type> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <extInfo xsi:type="form:LabelDecorationExtInfo"> + <horizontalAlign>Left</horizontalAlign> + </extInfo> + </extendedTooltip> + <commandName>Form.Command.Выбрать</commandName> + <representation>Auto</representation> + <defaultButton>true</defaultButton> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <placementArea>UserCmds</placementArea> + <representationInContextMenu>Auto</representationInContextMenu> + </items> + <items xsi:type="form:Button"> + <name>ФормаОтмена</name> + <id>9</id> + <visible>true</visible> + <enabled>true</enabled> + <userVisible> + <common>true</common> + </userVisible> + <extendedTooltip> + <name>ФормаОтменаРасширеннаяПодсказка</name> + <id>10</id> + <type>Label</type> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <extInfo xsi:type="form:LabelDecorationExtInfo"> + <horizontalAlign>Left</horizontalAlign> + </extInfo> + </extendedTooltip> + <commandName>Form.StandardCommand.Cancel</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> + - ФормаВыбратьРасширеннаяПодсказка - 6 + ГруппаСкрытоНаМобильномКлиентеРасширеннаяПодсказка + 23 Label true true @@ -162,39 +218,7 @@ Left - Form.Command.Выбрать - Auto - true - true - true - UserCmds - Auto - - - ФормаОтмена - 9 - true - true - - true - - - ФормаОтменаРасширеннаяПодсказка - 10 - Label - true - true - - Left - - - Form.StandardCommand.Cancel - Normal - Auto - true - true - UserCmds - Auto + ФормаГруппаСправки @@ -248,6 +272,10 @@ Right + + BeforeClose + ПередЗакрытием + OnCreateAtServer ПриСозданииНаСервере @@ -261,6 +289,11 @@ true auto true + + + КомпоновщикПредварительногоОтбораНастройкиОтборКоманднаяПанель + + Объект 1 @@ -302,6 +335,19 @@ true + + ЭтоМобильныйКлиент + 4 + + Boolean + + + true + + + true + + Выбрать diff --git a/SSL/src/DataProcessors/ПоискИУдалениеДублей/Forms/ПравилаОтбора/Module.bsl b/SSL/src/DataProcessors/ПоискИУдалениеДублей/Forms/ПравилаОтбора/Module.bsl index 3036b5a68..a1d0533e4 100644 --- a/SSL/src/DataProcessors/ПоискИУдалениеДублей/Forms/ПравилаОтбора/Module.bsl +++ b/SSL/src/DataProcessors/ПоискИУдалениеДублей/Forms/ПравилаОтбора/Module.bsl @@ -37,6 +37,22 @@ УдалитьИзВременногоХранилища(АдресНастроекКомпоновщикаОтбора); Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Правила отбора ""%1""'"), Параметры.ПредставлениеОбластиОтбора); + + ЭтоМобильныйКлиент = ОбщегоНазначения.ЭтоМобильныйКлиент(); + Если ЭтоМобильныйКлиент Тогда + ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиФормы.Авто; + Элементы.ГруппаСкрытоНаМобильномКлиенте.Видимость = Ложь; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка) + + Если Модифицированность И ЭтоМобильныйКлиент Тогда + ОповеститьОВыборе(АдресНастроекКомпоновщикаОтбора()); + КонецЕсли; + КонецПроцедуры #КонецОбласти @@ -63,5 +79,6 @@ Возврат ПоместитьВоВременноеХранилище(КомпоновщикПредварительногоОтбора.Настройки, ИдентификаторОсновнойФормы) КонецФункции + #КонецОбласти diff --git a/SSL/src/DataProcessors/ПоискИУдалениеДублей/Forms/ПравилаПоиска/Form.form b/SSL/src/DataProcessors/ПоискИУдалениеДублей/Forms/ПравилаПоиска/Form.form index d377cb936..3749a104c 100644 --- a/SSL/src/DataProcessors/ПоискИУдалениеДублей/Forms/ПравилаПоиска/Form.form +++ b/SSL/src/DataProcessors/ПоискИУдалениеДублей/Forms/ПравилаПоиска/Form.form @@ -301,6 +301,40 @@ <autoMaxCardHeight>true</autoMaxCardHeight> <rowFilter xsi:type="core:UndefinedValue"/> </items> + <items xsi:type="form:FormField"> + <name>СкрыватьНезначимыеДубли</name> + <id>48</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>50</id> + <type>Label</type> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <extInfo xsi:type="form:LabelDecorationExtInfo"> + <horizontalAlign>Left</horizontalAlign> + </extInfo> + </extendedTooltip> + <contextMenu> + <name>СкрыватьНезначимыеДублиКонтекстноеМеню</name> + <id>49</id> + <autoFill>true</autoFill> + </contextMenu> + <type>CheckBoxField</type> + <editMode>Enter</editMode> + <showInHeader>true</showInHeader> + <headerHorizontalAlign>Left</headerHorizontalAlign> + <showInFooter>true</showInFooter> + <extInfo xsi:type="form:CheckBoxFieldExtInfo"/> + </items> <items xsi:type="form:FormGroup"> <name>ГруппаПрикладныхОграничений</name> <id>35</id> @@ -423,17 +457,73 @@ <autoCommandBar> <name>ФормаКоманднаяПанель</name> <id>-1</id> - <items xsi:type="form:Button"> - <name>ЗавершитьРедактирование</name> - <id>12</id> + <items xsi:type="form:FormGroup"> + <name>ГруппаСкрытоНаМобильномКлиенте</name> + <id>51</id> + <items xsi:type="form:Button"> + <name>ЗавершитьРедактирование</name> + <id>12</id> + <visible>true</visible> + <enabled>true</enabled> + <userVisible> + <common>true</common> + </userVisible> + <extendedTooltip> + <name>ЗавершитьРедактированиеРасширеннаяПодсказка</name> + <id>13</id> + <type>Label</type> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <extInfo xsi:type="form:LabelDecorationExtInfo"> + <horizontalAlign>Left</horizontalAlign> + </extInfo> + </extendedTooltip> + <commandName>Form.Command.ЗавершитьРедактирование</commandName> + <representation>Auto</representation> + <defaultButton>true</defaultButton> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <placementArea>UserCmds</placementArea> + <representationInContextMenu>Auto</representationInContextMenu> + </items> + <items xsi:type="form:Button"> + <name>ФормаОтмена</name> + <id>16</id> + <visible>true</visible> + <enabled>true</enabled> + <userVisible> + <common>true</common> + </userVisible> + <extendedTooltip> + <name>ФормаОтменаРасширеннаяПодсказка</name> + <id>17</id> + <type>Label</type> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <extInfo xsi:type="form:LabelDecorationExtInfo"> + <horizontalAlign>Left</horizontalAlign> + </extInfo> + </extendedTooltip> + <commandName>Form.StandardCommand.Cancel</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> + - ЗавершитьРедактированиеРасширеннаяПодсказка - 13 + ГруппаСкрытоНаМобильномКлиентеРасширеннаяПодсказка + 52 Label true true @@ -441,39 +531,9 @@ Left - Form.Command.ЗавершитьРедактирование - Auto - true - true - true - UserCmds - Auto - - - ФормаОтмена - 16 - true - true - - true - - - ФормаОтменаРасширеннаяПодсказка - 17 - Label - true - true - - Left - - - Form.StandardCommand.Cancel - Normal - Auto - true - true - UserCmds - Auto + + Usual + ФормаГруппаСправка @@ -528,8 +588,8 @@ Right - OnOpen - ПриОткрытии + BeforeClose + ПередЗакрытием OnCreateAtServer @@ -730,6 +790,36 @@ + + СкрыватьНезначимыеДубли + + <key>ru</key> + <value>Скрывать дубли, помеченные на удаление и без мест использования</value> + + 8 + + Boolean + + + true + + + true + + + + ЭтоМобильныйКлиент + 9 + + Boolean + + + true + + + true + + ЗавершитьРедактирование diff --git a/SSL/src/DataProcessors/ПоискИУдалениеДублей/Forms/ПравилаПоиска/Help/ru.html b/SSL/src/DataProcessors/ПоискИУдалениеДублей/Forms/ПравилаПоиска/Help/ru.html new file mode 100644 index 000000000..45ec1ca2f --- /dev/null +++ b/SSL/src/DataProcessors/ПоискИУдалениеДублей/Forms/ПравилаПоиска/Help/ru.html @@ -0,0 +1,15 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta http-equiv="content-type" content="text/html;charset=utf-8"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link></head><body> +<p> +</p> +<div>Предназначена для изменения правил поиска дублей в выбранном списке. </div> +<div>С помощью этих правил программа определяет, что элементы являются дублями. Можно ужесточить правила, т.е. ввести сравнение еще по нескольким <b>Реквизитам</b> в дополнение к установленным по умолчанию, тогда дублей будет меньше, например, дублями будут признаны только те товары, у которых совпадает не только <b>Наименование</b>, но и <b>Страна происхождения</b> и т.д.</div> +<div>Открывается из окна <b>Поиск и удаление дублей</b> в поле <strong>Сравнивать</strong> с помощью ссылки, которая отражает выбранные правила поиска дублей в указанном списке.</div> +<p> +</p> +<ul><li>Для добавления элементов в правила поиска дублей флажками укажите реквизиты - элементы правила, нажмите <strong>Выбрать</strong>.</li> +<li>Для некоторых списков при поиске и замене дублей существуют ограничения. Необходимо их учитывать, т.к. отмена ограничений может нарушить целостность информационной базы.</li> +<li>В нижней части таблицы предусмотрен флажок <b>Скрывать дубли, помеченные на удаление без мест использования</b>. Если он включен, то при поиске дублей не будут выводиться элементы списков, которые помечены на удаление и нигде не используются.</li> +<ul><li>Например, менеджер <b>Анастасия</b> вводит партнера <b>Магазин "Природа"</b>, и менеджер <b>Дарья</b> тоже вводит этого же партнера. Они находят ошибку и договариваются использовать только одного партнера, а второго помечают на удаление. При поиске дублей с включенным флажком <b>Скрывать дубли, помеченные на удаление без мест использования</b> программа не найдет дублей партнера Магазин "Природа". Если флажок снят, то дубли будут найдены.</li></ul><li>Для подтверждения выбранных правил поиска нажмите кнопку <b>ОК</b>. После выбора ссылка в окне <a href="DataProcessor.ПоискИУдалениеДублей/Help">Поиск и удаление дублей</a> поменяет значение.</li></ul><div><br></div> + + +</body></html> \ No newline at end of file diff --git a/SSL/src/DataProcessors/ПоискИУдалениеДублей/Forms/ПравилаПоиска/Module.bsl b/SSL/src/DataProcessors/ПоискИУдалениеДублей/Forms/ПравилаПоиска/Module.bsl index 67a040d0a..6360deffb 100644 --- a/SSL/src/DataProcessors/ПоискИУдалениеДублей/Forms/ПравилаПоиска/Module.bsl +++ b/SSL/src/DataProcessors/ПоискИУдалениеДублей/Forms/ПравилаПоиска/Module.bsl @@ -62,13 +62,36 @@ КонецЕсли; КонецЦикла; + СкрыватьНезначимыеДубли = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(ИсходныеНастройки, "СкрыватьНезначимыеДубли", Истина); + УстановитьЦветаИУсловноеОформление(); + + ЭтоМобильныйКлиент = ОбщегоНазначения.ЭтоМобильныйКлиент(); + Если ЭтоМобильныйКлиент Тогда + ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиФормы.Авто; + Элементы.ГруппаСкрытоНаМобильномКлиенте.Видимость = Ложь; + КонецЕсли; + КонецПроцедуры &НаКлиенте -Процедура ПриОткрытии(Отказ) +Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка) - ЭтотОбъект.ОбновитьОтображениеДанных(); + Если ЗавершениеРаботы Тогда + Возврат; + КонецЕсли; + + Если ЭтоМобильныйКлиент Тогда + + ТекстОшибокВыбора = ОшибкиВыбора(); + Если ТекстОшибокВыбора <> Неопределено Тогда + Отказ = Истина; + ПоказатьПредупреждение(, ТекстОшибокВыбора); + Иначе + ОповеститьОВыборе(РезультатВыбора()); + КонецЕсли; + + КонецЕсли; КонецПроцедуры @@ -129,13 +152,14 @@ &НаКлиенте Процедура ЗавершитьРедактирование(Команда) + ТекстОшибокВыбора = ОшибкиВыбора(); Если ТекстОшибокВыбора <> Неопределено Тогда ПоказатьПредупреждение(, ТекстОшибокВыбора); - Возврат; + Иначе + ОповеститьОВыборе(РезультатВыбора()); КонецЕсли; - ОповеститьОВыборе(РезультатВыбора()); КонецПроцедуры #КонецОбласти @@ -230,6 +254,7 @@ ВыбранныеПравила.Колонки.Удалить("Использовать"); Результат.Вставить("ПравилаПоиска", ВыбранныеПравила ); + Результат.Вставить("СкрыватьНезначимыеДубли", СкрыватьНезначимыеДубли); Возврат ПоместитьВоВременноеХранилище(Результат); КонецФункции diff --git a/SSL/src/DataProcessors/ПоискИУдалениеДублей/ObjectModule.bsl b/SSL/src/DataProcessors/ПоискИУдалениеДублей/ObjectModule.bsl index a5b2f31be..79854fd13 100644 --- a/SSL/src/DataProcessors/ПоискИУдалениеДублей/ObjectModule.bsl +++ b/SSL/src/DataProcessors/ПоискИУдалениеДублей/ObjectModule.bsl @@ -13,11 +13,11 @@ // Определение менеджера объекта для вызова прикладных правил. // // Параметры: -// ИмяОбластиПоискаДанных - Строка - Имя области (полное имя метаданных). +// ИмяОбластиПоискаДанных - Строка - имя области (полное имя метаданных). // // Возвращаемое значение: // СправочникиМенеджер - , ПланыВидовХарактеристикМенеджер, -// ПланыСчетовМенеджер, ПланыВидовРасчетаМенеджер - Менеджер объекта. +// ПланыСчетовМенеджер, ПланыВидовРасчетаМенеджер - менеджер объекта. // Функция МенеджерОбластиПоискаДублей(Знач ИмяОбластиПоискаДанных) Экспорт ОбластьПоискаДанных = Метаданные.НайтиПоПолномуИмени(ИмяОбластиПоискаДанных); @@ -43,26 +43,29 @@ // Поиск дублей во всех данных информационной базы. // // Параметры: -// ПараметрыПоиска - Структура - описывает параметры поиска. +// ПараметрыПоиска - см. ПоискИУдалениеДублей.ПараметрыПоискаДублей // ЭталонныйОбъект - Произвольный - объект, для которого производится поиск дублей. // // Возвращаемое значение: // Структура - результаты поиска дублей: // * ТаблицаДублей - ТаблицаЗначений - найденные дубли (в интерфейс выводятся в 2 уровня: Родители и Элементы), где: // ** Ссылка - ЛюбаяСсылка - ссылка элемента. -// ** Код - Строка, Число - код элемента. +// ** Код - Строка +// - Число - код элемента. // ** Наименование - Строка - наименование элемента. // ** Родитель - Произвольный - родитель группы дублей. Если Родитель пустой, то элемент является // родителем группы дублей. -// ** <Другие поля> - Произвольный - значение соответствующего полей отборов и критериев сравнения дублей. +// ** ДругиеПоля - Произвольный - значение соответствующего полей отборов и критериев сравнения дублей. // * ОписаниеОшибки - Неопределено - ошибки не возникло. // - Строка - описание ошибки, возникшей в процессе поиска дублей. -// * МестаИспользования - Неопределено, ТаблицаЗначений - заполняется, если +// * МестаИспользования - Неопределено +// - ТаблицаЗначений - заполняется, если // ПараметрыПоиска.РассчитыватьМестаИспользования = Истина. // Описание колонок таблицы см. в ОбщегоНазначения.МестаИспользования. // Функция ГруппыДублей(Знач ПараметрыПоиска, Знач ЭталонныйОбъект = Неопределено) Экспорт + Перем МестаИспользования; ПолноеИмяОбъектаМетаданных = ПараметрыПоиска.ОбластьПоискаДублей; ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ПолноеИмяОбъектаМетаданных); @@ -77,6 +80,11 @@ РассчитыватьМестаИспользования = Ложь; КонецЕсли; + СкрыватьНезначимыеДубли = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(ПараметрыПоиска, "РассчитыватьМестаИспользования"); + Если Не ЗначениеЗаполнено(СкрыватьНезначимыеДубли) Тогда + СкрыватьНезначимыеДубли = Истина; + КонецЕсли; + // Вызываем обработчик ПараметрыПоискаДублей. ЕстьПравилаПоиска = Ложь; ИменаПолейДляСравненияНаРавенство = ""; // Имена реквизитов, по которым сравниваем по равенству. @@ -145,14 +153,7 @@ ЕстьНомер = Характеристики.ДлинаНомера > 0; // Задаем псевдонимы дополнительных полей, чтобы не пересекались с остальными полями. - ТаблицаКандидатов = Новый ТаблицаЗначений; - КолонкиКандидатов = ТаблицаКандидатов.Колонки; - КолонкиКандидатов.Добавить("Ссылка1"); - КолонкиКандидатов.Добавить("Поля1"); - КолонкиКандидатов.Добавить("Ссылка2"); - КолонкиКандидатов.Добавить("Поля2"); - КолонкиКандидатов.Добавить("ЭтоДубли", Новый ОписаниеТипов("Булево")); - ТаблицаКандидатов.Индексы.Добавить("ЭтоДубли"); + ТаблицаКандидатов = ТаблицаКандидатов(); ИменаПолейВЗапросе = ДоступныеРеквизитыОтбора(ОбъектМетаданных); Если Не ЕстьКод Тогда @@ -279,29 +280,10 @@ ОтборыКандидатов.Вставить("Ссылка", ЭлементОтбораКД); // Результат и цикл поиска - ТаблицаДублей = Новый ТаблицаЗначений; - ТаблицаДублей.Колонки.Добавить("Ссылка"); - Для Каждого ПолеТаблицы Из ПоляДляСравненияНаРавенство Цикл - Если ТаблицаДублей.Колонки.Найти(ПолеТаблицы.Ключ) = Неопределено Тогда - ТаблицаДублей.Колонки.Добавить(ПолеТаблицы.Ключ); - КонецЕсли; - КонецЦикла; - Для Каждого ПолеТаблицы Из ПоляДляСравненияНаПодобие Цикл - Если ТаблицаДублей.Колонки.Найти(ПолеТаблицы.Ключ) = Неопределено Тогда - ТаблицаДублей.Колонки.Добавить(ПолеТаблицы.Ключ); - КонецЕсли; - КонецЦикла; - Для Каждого ИмяПоляТаблицы Из СтрРазделить("Код,Наименование,Родитель,ПометкаУдаления", ",") Цикл - Если ТаблицаДублей.Колонки.Найти(ИмяПоляТаблицы) = Неопределено Тогда - ТаблицаДублей.Колонки.Добавить(ИмяПоляТаблицы); - КонецЕсли; - КонецЦикла; + КоллекцияДублей = КоллекцияДублей(ПараметрыПоиска, ПоляДляСравненияНаПодобие, ПоляДляСравненияНаРавенство); - ТаблицаДублей.Индексы.Добавить("Ссылка"); - ТаблицаДублей.Индексы.Добавить("Родитель"); - ТаблицаДублей.Индексы.Добавить("Ссылка, Родитель"); - - Результат = Новый Структура("ТаблицаДублей, ОписаниеОшибки, МестаИспользования", ТаблицаДублей); + ТаблицаДублей = КоллекцияДублей.ТаблицаДублей; + Результат = Результат(ТаблицаДублей); СтруктураПолей = Новый Структура; СтруктураПолей.Вставить("РасшифровкаДополнительныхПолей", РасшифровкаДополнительныхПолей); @@ -325,42 +307,50 @@ Если ПоляДляСравненияНаПодобие.Количество() > 0 Тогда СравнениеСтрокНаПодобие = ПрикладныеПараметрыПоиска.СравнениеСтрокНаПодобие; - СловаИсключения = СтрСоединить(СравнениеСтрокНаПодобие.СловаИсключения, "~"); + СловаИсключения = НРег(СтрСоединить(СравнениеСтрокНаПодобие.СловаИсключения, "~")); НечеткийПоиск = ОбщегоНазначения.ПодключитьКомпонентуИзМакета("FuzzyStringMatchExtension", "ОбщийМакет.КомпонентаПоискаСтрок"); + Если НечеткийПоиск = Неопределено Тогда Результат.ОписаниеОшибки = НСтр("ru = 'Не удалось подключить компоненту нечеткого поиска. Подробнее см. в журнале регистрации.'"); Возврат Результат; КонецЕсли; + Для Каждого ПолеТаблицы Из ПоляДляСравненияНаПодобие Цикл + ИмяПоля = ПолеТаблицы.Ключ; ИскомыеСтроки = СтрСоединить(КандидатыДублей.ВыгрузитьКолонку(ИмяПоля), "~"); СтрокаДляПоиска = ЭталонныйЭлемент[ИмяПоля]; ИндексыСтрок = НечеткийПоиск.StringSearch(НРег(СтрокаДляПоиска), НРег(ИскомыеСтроки), "~", СравнениеСтрокНаПодобие.ДлинаНебольшихСтрок, СравнениеСтрокНаПодобие.ПроцентСовпаденияНебольшихСтрок, - СравнениеСтрокНаПодобие.ПроцентСовпаденияСтрок); + СравнениеСтрокНаПодобие.ПроцентСовпаденияСтрок, СловаИсключения); Если ПустаяСтрока(ИндексыСтрок) Тогда Продолжить; КонецЕсли; + Для Каждого ИндексСтроки Из СтрРазделить(ИндексыСтрок, ",") Цикл Если ПустаяСтрока(ИндексСтроки) Тогда Продолжить; КонецЕсли; ЭлементДубль = КандидатыДублей.Получить(ИндексСтроки); + Если ЕстьПравилаПоиска Тогда ДобавитьСтрокуКандидатов(ТаблицаКандидатов, ЭталонныйЭлемент, ЭлементДубль, СтруктураПолей); Если ТаблицаКандидатов.Количество() = КоличествоЭлементовДляСравнения Тогда - ЗарегистрироватьДублиПоПрикладнымПравилам(ТаблицаДублей, ПолноеИмяОбъектаМетаданных, МенеджерОбластиПоиска, + ЗарегистрироватьДублиПоПрикладнымПравилам(КоллекцияДублей, ПолноеИмяОбъектаМетаданных, МенеджерОбластиПоиска, ЭталонныйЭлемент, ТаблицаКандидатов, СтруктураПолей, ДополнительныеПараметры); ТаблицаКандидатов.Очистить(); КонецЕсли; Иначе - ЗарегистрироватьДубль(ТаблицаДублей, ЭталонныйЭлемент, ЭлементДубль, СтруктураПолей); + ЗарегистрироватьДубль(КоллекцияДублей, ЭталонныйЭлемент, ЭлементДубль, СтруктураПолей); КонецЕсли; + КонецЦикла; + КонецЦикла; Иначе Для Каждого ЭлементДубль Из КандидатыДублей Цикл + Если ЕстьПравилаПоиска Тогда ДобавитьСтрокуКандидатов(ТаблицаКандидатов, ЭталонныйЭлемент, ЭлементДубль, СтруктураПолей); Если ТаблицаКандидатов.Количество() = КоличествоЭлементовДляСравнения Тогда @@ -369,26 +359,31 @@ ТаблицаКандидатов.Очистить(); КонецЕсли; Иначе - ЗарегистрироватьДубль(ТаблицаДублей, ЭталонныйЭлемент, ЭлементДубль, СтруктураПолей); + ЗарегистрироватьДубль(КоллекцияДублей, ЭталонныйЭлемент, ЭлементДубль, СтруктураПолей); КонецЕсли; + КонецЦикла; КонецЕсли; // Обрабатываем остаток таблицы для прикладных правил. Если ЕстьПравилаПоиска Тогда - ЗарегистрироватьДублиПоПрикладнымПравилам(ТаблицаДублей, ПолноеИмяОбъектаМетаданных, МенеджерОбластиПоиска, + ЗарегистрироватьДублиПоПрикладнымПравилам(КоллекцияДублей, ПолноеИмяОбъектаМетаданных, МенеджерОбластиПоиска, ЭталонныйЭлемент, ТаблицаКандидатов, СтруктураПолей, ДополнительныеПараметры); ТаблицаКандидатов.Очистить(); КонецЕсли; + // Обрабатываем непроверенные дубли + УдалитьНезначимыеДубли(КоллекцияДублей); + УдалитьНезначимыеГруппы(КоллекцияДублей); + // Учитываем ограничение. Если РазмерВозвращаемойПорции > 0 И (ТаблицаДублей.Количество() > РазмерВозвращаемойПорции) Тогда Найдено = ТаблицаДублей.Количество(); // Откатываем последнюю группу. - Для Каждого Строка Из ТаблицаДублей.НайтиСтроки( Новый Структура("Родитель", ЭталонныйЭлемент.Ссылка) ) Цикл + Для Каждого Строка Из КоллекцияДублей.ТаблицаДублей.НайтиСтроки(Новый Структура("Родитель", ЭталонныйЭлемент.Ссылка)) Цикл ТаблицаДублей.Удалить(Строка); КонецЦикла; - Для Каждого Строка Из ТаблицаДублей.НайтиСтроки( Новый Структура("Ссылка", ЭталонныйЭлемент.Ссылка) ) Цикл + Для Каждого Строка Из КоллекцияДублей.ТаблицаДублей.НайтиСтроки(Новый Структура("Ссылка", ЭталонныйЭлемент.Ссылка)) Цикл ТаблицаДублей.Удалить(Строка); КонецЦикла; Если Найдено > 0 И ТаблицаДублей.Количество() = 0 Тогда @@ -399,6 +394,7 @@ КонецЕсли; Прервать; КонецЕсли; + КонецЦикла; // Расчет мест использования @@ -419,6 +415,7 @@ МестаИспользования.Индексы.Добавить("Ссылка"); Результат.Вставить("МестаИспользования", МестаИспользования); + КонецЕсли; Возврат Результат; @@ -427,7 +424,7 @@ // Определение наличия прикладных правил у объекта. // // Параметры: -// МенеджерОбласти - СправочникМенеджер - Менеджер проверяемого объекта. +// МенеджерОбласти - СправочникМенеджер - менеджер проверяемого объекта. // // Возвращаемое значение: // Булево - Истина, если прикладные правила определены. @@ -442,8 +439,8 @@ // Обработчик фонового поиска дублей. // // Параметры: -// Параметры - Структура - Данные для анализа. -// АдресРезультата - Строка - Адрес во временном хранилище для сохранения результата. +// Параметры - Структура - данные для анализа. +// АдресРезультата - Строка - адрес во временном хранилище для сохранения результата. // Процедура ФоновыйПоискДублей(Знач Параметры, Знач АдресРезультата) Экспорт @@ -474,8 +471,8 @@ // Обработчик фонового удаления дублей. // // Параметры: -// Параметры - Структура - Данные для анализа. -// АдресРезультата - Строка - Адрес во временном хранилище для сохранения результата. +// Параметры - Структура - данные для анализа. +// АдресРезультата - Строка - адрес во временном хранилище для сохранения результата. // Процедура ФоновоеУдалениеДублей(Знач Параметры, Знач АдресРезультата) Экспорт @@ -539,7 +536,8 @@ Для Каждого ПараКандидатов Из Найденные Цикл Данные1.Вставить("Ссылка", ПараКандидатов.Ссылка1); Данные1.Вставить("Код", ПараКандидатов.Поля1.Код); - Данные1.Вставить("Наименование", ПараКандидатов.Поля1.Наименование); + Наименование1 = ПараКандидатов.Поля1.Наименование;// Строка + Данные1.Вставить("Наименование", Наименование1); Данные1.Вставить("ПометкаУдаления", ПараКандидатов.Поля1.ПометкаУдаления); Данные2.Вставить("Ссылка", ПараКандидатов.Ссылка2); @@ -564,7 +562,27 @@ // Добавить строку в таблицу кандидатов для прикладного метода. // -Функция ДобавитьСтрокуКандидатов(ТаблицаКандидатов, Знач ДанныеОсновногоЭлемента, Знач ДанныеКандидата, Знач СтруктураПолей) + + +// Описание +// +// Параметры: +// ТаблицаКандидатов - см. ТаблицаКандидатов +// ДанныеОсновногоЭлемента - Структура: +// * Ссылка - ЛюбаяСсылка +// * Наименование - Строка +// * Код - Строка +// * ПометкаУдаления - Булево +// ДанныеКандидата - Структура: +// * Ссылка - ЛюбаяСсылка +// * Наименование - Строка +// * Код - Строка +// * ПометкаУдаления - Булево +// СтруктураПолей - Структура +// Возвращаемое значение: +// СтрокаТаблицыЗначений +// +Функция ДобавитьСтрокуКандидатов(ТаблицаКандидатов, Знач ДанныеОсновногоЭлемента, Знач ДанныеКандидата, Знач СтруктураПолей) Строка = ТаблицаКандидатов.Добавить(); Строка.ЭтоДубли = Ложь; @@ -601,15 +619,26 @@ // Добавить в дерево результатов найденный дубль. // -Процедура ЗарегистрироватьДубль(ТаблицаДублей, Знач Элемент1, Знач Элемент2, Знач СтруктураПолей) +Процедура ЗарегистрироватьДубль(КоллекцияДублей, Знач Элемент1, Знач Элемент2, Знач СтруктураПолей) + + ТаблицаДублей = КоллекцияДублей.ТаблицаДублей; + НезначимыеДубли = КоллекцияДублей.НезначимыеДубли; // Определить какой элемент уже добавлен в дубли. СтрокаДублей1 = ТаблицаДублей.Найти(Элемент1.Ссылка, "Ссылка"); СтрокаДублей2 = ТаблицаДублей.Найти(Элемент2.Ссылка, "Ссылка"); - Дубль1Зарегистрирован = (СтрокаДублей1 <> Неопределено); - Дубль2Зарегистрирован = (СтрокаДублей2 <> Неопределено); + + СтрокаНезначимыхДублей1 = НезначимыеДубли.Найти(Элемент1.Ссылка); + СтрокаНезначимыхДублей2 = НезначимыеДубли.Найти(Элемент2.Ссылка); + + Дубль1Зарегистрирован = (СтрокаДублей1 <> Неопределено) ИЛИ (СтрокаНезначимыхДублей1 <> Неопределено); + Дубль2Зарегистрирован = (СтрокаДублей2 <> Неопределено) ИЛИ (СтрокаНезначимыхДублей2 <> Неопределено); // Если оба элемента добавлены в дубли, то ничего делать не надо. - Если Дубль1Зарегистрирован И Дубль2Зарегистрирован Тогда + // Или если хотя бы один из элементов незначимый, то пара не является дублем + Если Дубль1Зарегистрирован И Дубль2Зарегистрирован + ИЛИ СтрокаНезначимыхДублей1 <> Неопределено + ИЛИ СтрокаНезначимыхДублей2 <> Неопределено Тогда + Возврат; КонецЕсли; @@ -627,18 +656,32 @@ СписокСвойств = "Ссылка,Код,Наименование,ПометкаУдаления," + СтруктураПолей.СписокПолейИдентичности + "," + СтруктураПолей.СписокПолейПодобия; Если Не Дубль1Зарегистрирован Тогда + СведенияОДубле = ТаблицаДублей.Добавить(); ЗаполнитьЗначенияСвойств(СведенияОДубле, Элемент1, СписокСвойств); СведенияОДубле.Родитель = СсылкаГруппыДублей; + + Если СведенияОДубле.ПометкаУдаления Тогда + КоллекцияДублей.ДублиКПроверке.Добавить(СведенияОДубле.Ссылка); + КонецЕсли; + КонецЕсли; Если Не Дубль2Зарегистрирован Тогда + СведенияОДубле = ТаблицаДублей.Добавить(); ЗаполнитьЗначенияСвойств(СведенияОДубле, Элемент2, СписокСвойств); СведенияОДубле.Родитель = СсылкаГруппыДублей; + + Если СведенияОДубле.ПометкаУдаления Тогда + КоллекцияДублей.ДублиКПроверке.Добавить(СведенияОДубле.Ссылка); + КонецЕсли; + КонецЕсли; - ДлительныеОперации.СообщитьПрогресс(ТаблицаДублей.Количество(), "ЗарегистрироватьДубль"); + Если КоллекцияДублей.ДублиКПроверке.Количество() >= КоллекцияДублей.КоличествоЭлементовДляСравнения Тогда + УдалитьНезначимыеДубли(КоллекцияДублей); + КонецЕсли; КонецПроцедуры @@ -684,20 +727,20 @@ КонецФункции // Параметры: -// СхемаКД - СхемаКомпоновкиДанных - -// НастройкиКД - НастройкиКомпоновкиДанных - +// СхемаКД - СхемаКомпоновкиДанных +// НастройкиКД - НастройкиКомпоновкиДанных // // Возвращаемое значение: -// Структура - где: -// * Таблица - ТаблицаЗначений - где: -// ** Индекс - Число - -// ** ВГраница - Число - -// * ТекущийЭлемент - СтрокаТаблицыЗначений - где: -// ** Ссылка - ЛюбаяСсылка - -// * Индекс - Число - -// * ВГраница - Число - -// * ПроцессорКД - ПроцессорКомпоновкиДанных - -// * ПроцессорВыводаКД - ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений - +// Структура: +// * Таблица - ТаблицаЗначений: +// ** Индекс - Число +// ** ВГраница - Число +// * ТекущийЭлемент - СтрокаТаблицыЗначений: +// ** Ссылка - ЛюбаяСсылка +// * Индекс - Число +// * ВГраница - Число +// * ПроцессорКД - ПроцессорКомпоновкиДанных +// * ПроцессорВыводаКД - ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений // Функция ИнициализироватьВыборкуКД(СхемаКД, НастройкиКД) Выборка = Новый Структура("Таблица, ТекущийЭлемент, Индекс, ВГраница, ПроцессорКД, ПроцессорВыводаКД"); @@ -751,6 +794,187 @@ Возврат Истина; КонецФункции +// Удаляет дубли из коллекции, если дубль помечен на удаление +// и не имеет мест использования +// +Процедура УдалитьНезначимыеДубли(КоллекцияДублей) + + // Не удаляем незначимые дубли, т.к. нет ограничения + Если НЕ КоллекцияДублей.СкрыватьНезначимыеДубли Тогда + Возврат; + КонецЕсли; + + ТаблицаДублей = КоллекцияДублей.ТаблицаДублей; + ДублиКПроверке = КоллекцияДублей.ДублиКПроверке; + + // Не будем проверять дубли, т.к. набрали нужное количество для вывода результата + Если ТаблицаДублей.Количество() - ДублиКПроверке.Количество() <= КоллекцияДублей.КоличествоЭлементовДляСравнения Тогда + + МестаИспользования = МестаИспользованияСсылок(ДублиКПроверке); + МестаИспользования.Индексы.Добавить("Ссылка, ВспомогательныеДанные"); + + Для Сч = 0 По ДублиКПроверке.ВГраница() Цикл + + ПроверяемыеДубли = ТаблицаДублей.НайтиСтроки(Новый Структура("Ссылка", ДублиКПроверке[Сч])); + Для каждого Дубль Из ПроверяемыеДубли Цикл + + Если Дубль.Родитель = Неопределено Тогда + Продолжить; + КонецЕсли; + + МестаИспользованияВнутренний = МестаИспользования.НайтиСтроки(Новый Структура("Ссылка, ВспомогательныеДанные", Дубль.Ссылка, Ложь)); + Если МестаИспользованияВнутренний.Количество() = 0 И Дубль.ПометкаУдаления Тогда + + ЗаполнитьЗначенияСвойств(КоллекцияДублей.НезначимыеДубли.Добавить(), Дубль); + КоллекцияДублей.ОбработанныеГруппы.Вставить(Дубль.Родитель); + ТаблицаДублей.Удалить(Дубль); + + КонецЕсли; + + КонецЦикла; + КонецЦикла; + + КонецЕсли; + + ДублиКПроверке.Очистить(); + ДлительныеОперации.СообщитьПрогресс(ТаблицаДублей.Количество(), "ЗарегистрироватьДубль"); + +КонецПроцедуры + +// Удаляет группы и ее элементы, если в группе только один элемент +Процедура УдалитьНезначимыеГруппы(КоллекцияДублей) + + ТаблицаДублей = КоллекцияДублей.ТаблицаДублей; + Для каждого ГруппаДублей Из КоллекцияДублей.ОбработанныеГруппы Цикл + + Дубли = ТаблицаДублей.НайтиСтроки(Новый Структура("Родитель", ГруппаДублей.Ключ)); + Если Дубли.Количество() = 1 Тогда + ТаблицаДублей.Удалить(Дубли[0]); + КонецЕсли; + + Группа = ТаблицаДублей.Найти(ГруппаДублей.Ключ, "Ссылка"); + Если Группа <> Неопределено Тогда + ТаблицаДублей.Удалить(Группа); + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +// Возвращаемое значение: +// ТаблицаЗначений: +// * Ссылка - ЛюбаяСсылка +// +Функция ТаблицаДублей(ПоляДляСравненияНаПодобие, ПоляДляСравненияНаРавенство) + + ТаблицаДублей = Новый ТаблицаЗначений; + ТаблицаДублей.Колонки.Добавить("Ссылка"); + Для Каждого ПолеТаблицы Из ПоляДляСравненияНаРавенство Цикл + Если ТаблицаДублей.Колонки.Найти(ПолеТаблицы.Ключ) = Неопределено Тогда + ТаблицаДублей.Колонки.Добавить(ПолеТаблицы.Ключ); + КонецЕсли; + КонецЦикла; + + Для Каждого ПолеТаблицы Из ПоляДляСравненияНаПодобие Цикл + Если ТаблицаДублей.Колонки.Найти(ПолеТаблицы.Ключ) = Неопределено Тогда + ТаблицаДублей.Колонки.Добавить(ПолеТаблицы.Ключ); + КонецЕсли; + КонецЦикла; + + ОбязательныеКолонки = СтрРазделить("Код,Наименование,Родитель,ПометкаУдаления", ","); + Для Каждого ИмяПоляТаблицы Из ОбязательныеКолонки Цикл + Если ТаблицаДублей.Колонки.Найти(ИмяПоляТаблицы) = Неопределено Тогда + ТаблицаДублей.Колонки.Добавить(ИмяПоляТаблицы); + КонецЕсли; + КонецЦикла; + + ТаблицаДублей.Индексы.Добавить("Ссылка"); + ТаблицаДублей.Индексы.Добавить("Родитель"); + ТаблицаДублей.Индексы.Добавить("Ссылка, Родитель"); + + Возврат ТаблицаДублей; +КонецФункции + +// Возвращаемое значение: +// Структура: +// * НезначимыеДубли - ТаблицаЗначений: +// ** Ссылка - ЛюбаяСсылка +// ** Родитель - ЛюбаяСсылка +// ** Ссылка - ЛюбаяСсылка +// ** Родитель - ЛюбаяСсылка +// * ОбработанныеГруппы - Соответствие +// * СкрыватьНезначимыеДубли - Булево +// * ДублиКПроверке - Массив +// * КоличествоЭлементовДляСравнения - Произвольный +// - Неопределено +// * ТаблицаДублей - см. ТаблицаДублей +// +Функция КоллекцияДублей(Знач ПараметрыПоиска, ПоляДляСравненияНаПодобие, ПоляДляСравненияНаРавенство) + + КоллекцияДублей = Новый Структура; + КоллекцияДублей.Вставить("ТаблицаДублей", ТаблицаДублей(ПоляДляСравненияНаПодобие, ПоляДляСравненияНаРавенство)); + КоллекцияДублей.Вставить("КоличествоЭлементовДляСравнения", + ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(ПараметрыПоиска, "МаксимальноеЧислоДублей", 0)); + КоллекцияДублей.Вставить("ДублиКПроверке", Новый Массив); + + КоллекцияДублей.Вставить("СкрыватьНезначимыеДубли", Ложь); + Если ПараметрыПоиска.Свойство("СкрыватьНезначимыеДубли") + И ПараметрыПоиска.СкрыватьНезначимыеДубли = Истина + ИЛИ КоллекцияДублей.КоличествоЭлементовДляСравнения = 0 Тогда + + КоллекцияДублей.СкрыватьНезначимыеДубли = Истина; + КонецЕсли; + + КоллекцияДублей.Вставить("ОбработанныеГруппы", Новый Соответствие); + + НезначимыеДубли = Неопределено; + + НезначимыеДубли = Новый ТаблицаЗначений; + НезначимыеДубли.Колонки.Добавить("Ссылка"); + НезначимыеДубли.Колонки.Добавить("Родитель"); + + НезначимыеДубли.Индексы.Добавить("Ссылка"); + + КоллекцияДублей.Вставить("НезначимыеДубли", НезначимыеДубли); + Возврат КоллекцияДублей; + +КонецФункции + +Функция Результат(ТаблицаДублей) + Перем Результат; + + Результат = Новый Структура; + Результат.Вставить("ТаблицаДублей", ТаблицаДублей); + Результат.Вставить("ОписаниеОшибки"); + Результат.Вставить("МестаИспользования"); + + Возврат Результат; +КонецФункции + +// Возвращаемое значение: +// ТаблицаЗначений: +// * Ссылка1 - ЛюбаяСсылка +// * Поля1 - Структура: +// ** Наименование - Строка +// ** Код - Строка +// * Ссылка2 - ЛюбаяСсылка +// * Поля2 - Структура: +// ** Наименование - Строка +// ** Код - Строка +// * ЭтоДубли - Булево +// +Функция ТаблицаКандидатов() + ТаблицаКандидатов = Новый ТаблицаЗначений; + КолонкиКандидатов = ТаблицаКандидатов.Колонки; + КолонкиКандидатов.Добавить("Ссылка1"); + КолонкиКандидатов.Добавить("Поля1"); + КолонкиКандидатов.Добавить("Ссылка2"); + КолонкиКандидатов.Добавить("Поля2"); + КолонкиКандидатов.Добавить("ЭтоДубли", Новый ОписаниеТипов("Булево")); + ТаблицаКандидатов.Индексы.Добавить("ЭтоДубли"); + Возврат ТаблицаКандидатов; +КонецФункции + #КонецОбласти #Иначе diff --git a/SSL/src/DataProcessors/ПоискИУдалениеДублей/ПоискИУдалениеДублей.mdo b/SSL/src/DataProcessors/ПоискИУдалениеДублей/ПоискИУдалениеДублей.mdo index b847f075e..19f8f9f57 100644 --- a/SSL/src/DataProcessors/ПоискИУдалениеДублей/ПоискИУдалениеДублей.mdo +++ b/SSL/src/DataProcessors/ПоискИУдалениеДублей/ПоискИУдалениеДублей.mdo @@ -58,6 +58,11 @@ <key>ru</key> <value>Правила поиска</value> </synonym> + <help> + <pages> + <lang>ru</lang> + </pages> + </help> <usePurposes>PersonalComputer</usePurposes> <usePurposes>MobileDevice</usePurposes> </forms> diff --git a/SSL/src/DataProcessors/ПолнотекстовыйПоискВДанных/Forms/ВыборОбластиПоиска/Form.form b/SSL/src/DataProcessors/ПолнотекстовыйПоискВДанных/Forms/ВыборОбластиПоиска/Form.form index e84e4b0ab..7f4311736 100644 --- a/SSL/src/DataProcessors/ПолнотекстовыйПоискВДанных/Forms/ВыборОбластиПоиска/Form.form +++ b/SSL/src/DataProcessors/ПолнотекстовыйПоискВДанных/Forms/ВыборОбластиПоиска/Form.form @@ -44,6 +44,7 @@ <headerHorizontalAlign>Left</headerHorizontalAlign> <showInFooter>true</showInFooter> <extInfo xsi:type="form:RadioButtonsFieldExtInfo"> + <columnsCount>1</columnsCount> <choiceList> <presentation> <key>ru</key> @@ -56,7 +57,7 @@ <choiceList> <presentation> <key>ru</key> - <value>В разделах</value> + <value>В разделах:</value> </presentation> <value xsi:type="core:NumberValue"> <value>1</value> @@ -235,6 +236,7 @@ <type>UsualGroup</type> <extInfo xsi:type="form:UsualGroupExtInfo"> <group>HorizontalIfPossible</group> + <verticalAlign>Bottom</verticalAlign> <behavior>Auto</behavior> <showLeftMargin>true</showLeftMargin> <united>true</united> @@ -514,7 +516,6 @@ <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> <autoMaxRowsCount>true</autoMaxRowsCount> - <header>true</header> <headerHeight>1</headerHeight> <footerHeight>1</footerHeight> <horizontalScrollBar>AutoUse</horizontalScrollBar> diff --git a/SSL/src/DataProcessors/ПолнотекстовыйПоискВДанных/Forms/ВыборОбластиПоиска/Module.bsl b/SSL/src/DataProcessors/ПолнотекстовыйПоискВДанных/Forms/ВыборОбластиПоиска/Module.bsl index a9f869a21..9ae21ea70 100644 --- a/SSL/src/DataProcessors/ПолнотекстовыйПоискВДанных/Forms/ВыборОбластиПоиска/Module.bsl +++ b/SSL/src/DataProcessors/ПолнотекстовыйПоискВДанных/Forms/ВыборОбластиПоиска/Module.bsl @@ -176,9 +176,9 @@ КонецПроцедуры // Параметры: -// ЭлементДерева - ДанныеФормыЭлементДерева. -// * Пометка - Число - Обязательный реквизит дерева. -// * ЭтоОбъектМетаданных - Булево - Обязательный реквизит дерева. +// ЭлементДерева - ДанныеФормыЭлементДерева: +// * Пометка - Число - обязательный реквизит дерева. +// * ЭтоОбъектМетаданных - Булево - обязательный реквизит дерева. // &НаКлиентеНаСервереБезКонтекста Процедура ПриПометкеЭлементаДерева(ЭлементДерева) @@ -458,9 +458,9 @@ КонецПроцедуры // Параметры: -// ЭлементДерева - ДанныеФормыЭлементДерева. -// * Пометка - Число - Обязательный реквизит дерева. -// * ЭтоОбъектМетаданных - Булево - Обязательный реквизит дерева. +// ЭлементДерева - ДанныеФормыЭлементДерева: +// * Пометка - Число - обязательный реквизит дерева. +// * ЭтоОбъектМетаданных - Булево - обязательный реквизит дерева. // &НаКлиентеНаСервереБезКонтекста Функция СледующееЗначениеПометкиЭлемента(ЭлементДерева) @@ -526,9 +526,9 @@ КонецФункции // Параметры: -// ЭлементДерева - ДанныеФормыЭлементДерева. -// * Пометка - Число - Обязательный реквизит дерева. -// * ЭтоОбъектМетаданных - Булево - Обязательный реквизит дерева. +// ЭлементДерева - ДанныеФормыЭлементДерева: +// * Пометка - Число - обязательный реквизит дерева. +// * ЭтоОбъектМетаданных - Булево - обязательный реквизит дерева. // &НаКлиентеНаСервереБезКонтекста Процедура ПометитьЭлементыРодителейРекурсивно(ЭлементДерева) @@ -553,9 +553,9 @@ КонецПроцедуры // Параметры: -// ЭлементДерева - ДанныеФормыЭлементДерева. -// * Пометка - Число - Обязательный реквизит дерева. -// * ЭтоОбъектМетаданных - Булево - Обязательный реквизит дерева. +// ЭлементДерева - ДанныеФормыЭлементДерева: +// * Пометка - Число - обязательный реквизит дерева. +// * ЭтоОбъектМетаданных - Булево - обязательный реквизит дерева. // &НаКлиентеНаСервереБезКонтекста Функция ЗначениеПометкиОтносительноВложенныхЭлементов(ЭлементДерева) @@ -608,9 +608,9 @@ КонецФункции // Параметры: -// ЭлементДерева - ДанныеФормыЭлементДерева. -// * Пометка - Число - Обязательный реквизит дерева. -// * ЭтоОбъектМетаданных - Булево - Обязательный реквизит дерева. +// ЭлементДерева - ДанныеФормыЭлементДерева: +// * Пометка - Число - обязательный реквизит дерева. +// * ЭтоОбъектМетаданных - Булево - обязательный реквизит дерева. // &НаКлиентеНаСервереБезКонтекста Функция СостояниеВложенныхЭлементов(ЭлементДерева) @@ -661,9 +661,9 @@ КонецФункции // Параметры: -// ЭлементДерева - ДанныеФормыЭлементДерева. -// * Пометка - Число - Обязательный реквизит дерева. -// * ЭтоОбъектМетаданных - Булево - Обязательный реквизит дерева. +// ЭлементДерева - ДанныеФормыЭлементДерева: +// * Пометка - Число - обязательный реквизит дерева. +// * ЭтоОбъектМетаданных - Булево - обязательный реквизит дерева. // &НаКлиентеНаСервереБезКонтекста Функция ТребуетсяПометитьВложенныеЭлементы(ЭлементДерева) @@ -688,9 +688,9 @@ КонецФункции // Параметры: -// ЭлементДерева - ДанныеФормыЭлементДерева. -// * Пометка - Число - Обязательный реквизит дерева. -// * ЭтоОбъектМетаданных - Булево - Обязательный реквизит дерева. +// ЭлементДерева - ДанныеФормыЭлементДерева: +// * Пометка - Число - обязательный реквизит дерева. +// * ЭтоОбъектМетаданных - Булево - обязательный реквизит дерева. // &НаКлиентеНаСервереБезКонтекста Процедура ПометитьВложенныеЭлементыРекурсивно(ЭлементДерева) @@ -707,10 +707,11 @@ КонецПроцедуры // Параметры: -// КоллекцияЭлементовДерева - ДанныеФормыДерева, ДанныеФормыЭлементДерева. -// * Пометка - Число - Обязательный реквизит дерева. -// * ЭтоОбъектМетаданных - Булево - Обязательный реквизит дерева. -// ЗначениеПометки - Число - Устанавливаемое значение. +// КоллекцияЭлементовДерева - ДанныеФормыДерева +// - ДанныеФормыЭлементДерева: +// * Пометка - Число - обязательный реквизит дерева. +// * ЭтоОбъектМетаданных - Булево - обязательный реквизит дерева. +// ЗначениеПометки - Число - устанавливаемое значение. // &НаКлиентеНаСервереБезКонтекста Процедура ПометитьВсеЭлементыДереваРекурсивно(ЭлементДеревоРазделовПоиска, ЗначениеПометки) diff --git a/SSL/src/DataProcessors/ПолнотекстовыйПоискВДанных/ПолнотекстовыйПоискВДанных.mdo b/SSL/src/DataProcessors/ПолнотекстовыйПоискВДанных/ПолнотекстовыйПоискВДанных.mdo index a00d7fe11..fe4e50ff5 100644 --- a/SSL/src/DataProcessors/ПолнотекстовыйПоискВДанных/ПолнотекстовыйПоискВДанных.mdo +++ b/SSL/src/DataProcessors/ПолнотекстовыйПоискВДанных/ПолнотекстовыйПоискВДанных.mdo @@ -61,6 +61,6 @@ </synonym> <group>ActionsPanelTools</group> <representation>Auto</representation> - <shortcut>Ctrl+Shift+F</shortcut> + <shortcut>Ctrl+Alt+F</shortcut> </commands> </mdclass:DataProcessor> diff --git a/SSL/src/DataProcessors/ПомощникИнтерактивногоОбменаДанными/Forms/Форма/Form.form b/SSL/src/DataProcessors/ПомощникИнтерактивногоОбменаДанными/Forms/Форма/Form.form index 5de174863..6c7bafdc5 100644 --- a/SSL/src/DataProcessors/ПомощникИнтерактивногоОбменаДанными/Forms/Форма/Form.form +++ b/SSL/src/DataProcessors/ПомощникИнтерактивногоОбменаДанными/Forms/Форма/Form.form @@ -5690,7 +5690,7 @@ </userVisible> <title> <key>ru</key> - <value>Группа ошибка загрузки сообщения для сопоставления</value> + <value>Ошибка загрузки сообщения для сопоставления</value> ГруппаОшибкаЗагрузкиСообщенияДляСопоставленияРасширеннаяПодсказка diff --git a/SSL/src/DataProcessors/ПомощникИнтерактивногоОбменаДанными/Forms/Форма/Module.bsl b/SSL/src/DataProcessors/ПомощникИнтерактивногоОбменаДанными/Forms/Форма/Module.bsl index 9927c4c12..f7989d3eb 100644 --- a/SSL/src/DataProcessors/ПомощникИнтерактивногоОбменаДанными/Forms/Форма/Module.bsl +++ b/SSL/src/DataProcessors/ПомощникИнтерактивногоОбменаДанными/Forms/Форма/Module.bsl @@ -996,7 +996,7 @@ ИмяКаталога = ПолучитьИмяКаталогаНаСервере(Объект.ВидТранспортаСообщенийОбмена, Объект.УзелИнформационнойБазы); Если ПустаяСтрока(ИмяКаталога) Тогда - ПоказатьПредупреждение(, НСтр("ru = 'Не задан каталог обмена информацией.'")); + ПоказатьПредупреждение(, НСтр("ru = 'Не задан каталог синхронизации данных.'")); Возврат; КонецЕсли; diff --git a/SSL/src/DataProcessors/ПомощникИнтерактивногоОбменаДанными/ManagerModule.bsl b/SSL/src/DataProcessors/ПомощникИнтерактивногоОбменаДанными/ManagerModule.bsl index 1baf0cdeb..696f9a5ef 100644 --- a/SSL/src/DataProcessors/ПомощникИнтерактивногоОбменаДанными/ManagerModule.bsl +++ b/SSL/src/DataProcessors/ПомощникИнтерактивногоОбменаДанными/ManagerModule.bsl @@ -155,6 +155,7 @@ // Для внутреннего использования. // Выполняет выгрузку данных, вызывается фоновым заданием. // Параметры - структура с параметрами для передачи. +// Процедура ВыполнитьВыгрузкуДанных(Параметры, АдресВременногоХранилища) Экспорт Отказ = Ложь; @@ -696,9 +697,9 @@ КонецПроцедуры // Параметры: -// Таблица - ТаблицаЗначений - -// ЗначениеИтератора - Число - -// ИмяПоляИтератора - Строка - +// Таблица - ТаблицаЗначений +// ЗначениеИтератора - Число +// ИмяПоляИтератора - Строка // Процедура ДобавитьКолонкуСоЗначениемВТаблицу(Таблица, ЗначениеИтератора, ИмяПоляИтератора) diff --git a/SSL/src/DataProcessors/ПомощникИнтерактивногоОбменаДанными/ObjectModule.bsl b/SSL/src/DataProcessors/ПомощникИнтерактивногоОбменаДанными/ObjectModule.bsl index d9701d3b4..6f13bd856 100644 --- a/SSL/src/DataProcessors/ПомощникИнтерактивногоОбменаДанными/ObjectModule.bsl +++ b/SSL/src/DataProcessors/ПомощникИнтерактивногоОбменаДанными/ObjectModule.bsl @@ -301,7 +301,7 @@ // Данные табличной части ИнформацияСтатистики. // // Возвращаемое значение: -// ТаблицаЗначений - Данные табличной части ИнформацияСтатистики. +// ТаблицаЗначений - данные табличной части ИнформацияСтатистики. // Функция ТаблицаИнформацииСтатистики() Экспорт diff --git a/SSL/src/DataProcessors/ПомощникИнтерактивногоОбменаДаннымиВМоделиСервиса/ManagerModule.bsl b/SSL/src/DataProcessors/ПомощникИнтерактивногоОбменаДаннымиВМоделиСервиса/ManagerModule.bsl index 673345a1f..17dcc3b01 100644 --- a/SSL/src/DataProcessors/ПомощникИнтерактивногоОбменаДаннымиВМоделиСервиса/ManagerModule.bsl +++ b/SSL/src/DataProcessors/ПомощникИнтерактивногоОбменаДаннымиВМоделиСервиса/ManagerModule.bsl @@ -620,7 +620,8 @@ // Регистрирует дополнительные данные по настройкам // // Параметры: -// ОбработкаВыгрузки - Структура, ОбработкаОбъект.ИнтерактивноеИзменениеВыгрузки - инициализированный объект. +// ОбработкаВыгрузки - Структура +// - ОбработкаОбъект.ИнтерактивноеИзменениеВыгрузки - инициализированный объект. // Процедура ЗарегистрироватьДанныеДополненияВыгрузки(Знач ОбработкаВыгрузки) diff --git a/SSL/src/DataProcessors/ПомощникСозданияАвтономногоРабочегоМеста/Forms/НастройкаНаСторонеСервиса/Module.bsl b/SSL/src/DataProcessors/ПомощникСозданияАвтономногоРабочегоМеста/Forms/НастройкаНаСторонеСервиса/Module.bsl index 0ed15c1fc..38dac7c9d 100644 --- a/SSL/src/DataProcessors/ПомощникСозданияАвтономногоРабочегоМеста/Forms/НастройкаНаСторонеСервиса/Module.bsl +++ b/SSL/src/DataProcessors/ПомощникСозданияАвтономногоРабочегоМеста/Forms/НастройкаНаСторонеСервиса/Module.bsl @@ -23,9 +23,7 @@ ИмяПланаОбмена = АвтономнаяРаботаСлужебный.ПланОбменаАвтономнойРаботы(); - // получаем значения по умолчанию для плана обмена - МенеджерПланаОбмена = ПланыОбмена[ИмяПланаОбмена]; - + // получаем значения по умолчанию для плана обмена НастройкаОтборовНаУзле = ОбменДаннымиСервер.НастройкаОтборовНаУзле(ИмяПланаОбмена, ""); Элементы.ОписаниеОграниченийПередачиДанных.Заголовок = ОписаниеОграниченийПередачиДанных(ИмяПланаОбмена, НастройкаОтборовНаУзле); @@ -819,6 +817,8 @@ , "Объект.НаименованиеАвтономногоРабочегоМеста", , Отказ); КонецЕсли; + Возврат Неопределено; + КонецФункции &НаКлиенте @@ -840,6 +840,8 @@ КонецЕсли; + Возврат Неопределено; + КонецФункции &НаКлиенте @@ -853,6 +855,8 @@ КонецЕсли; + Возврат Неопределено; + КонецФункции &НаКлиенте @@ -868,6 +872,8 @@ КонецЕсли; + Возврат Неопределено; + КонецФункции &НаКлиенте @@ -879,6 +885,8 @@ Формат(Окр(РазмерФайлаПакетаУстановки / (1024 * 1024), 1), "ЧДЦ=1; ЧГ=3,0")); Элементы.ЗагрузитьНачальныйОбразНаКомпьютерПользователя.Заголовок = ЗаголовокЭлемента; + Возврат Неопределено; + КонецФункции //////////////////////////////////////////////////////////////////////////////// diff --git a/SSL/src/DataProcessors/ПомощникСозданияАвтономногоРабочегоМеста/ObjectModule.bsl b/SSL/src/DataProcessors/ПомощникСозданияАвтономногоРабочегоМеста/ObjectModule.bsl index 258327d37..a203603ea 100644 --- a/SSL/src/DataProcessors/ПомощникСозданияАвтономногоРабочегоМеста/ObjectModule.bsl +++ b/SSL/src/DataProcessors/ПомощникСозданияАвтономногоРабочегоМеста/ObjectModule.bsl @@ -14,7 +14,8 @@ // с переданными настройками и помещает во временное хранилище. // // Параметры: -// Настройки - Структура - Настройки отборов на узле +// Настройки - Структура - настройки отборов на узле. +// ВыбранныеПользователиСинхронизации - Массив из СправочникСсылка.Пользователи // АдресВременногоХранилищаНачальногоОбраза - Строка // АдресВременногоХранилищаИнформацииОПакетеУстановки - Строка // @@ -96,7 +97,7 @@ #Область СлужебныеПроцедурыИФункции -Функция ЗаписатьПакетУстановкиВоВременноеХранилище( +Процедура ЗаписатьПакетУстановкиВоВременноеХранилище( АдресВременногоХранилищаНачальногоОбраза, АдресВременногоХранилищаИнформацииОПакетеУстановки) @@ -235,7 +236,7 @@ ПоместитьВоВременноеХранилище(ДанныеФайла, АдресВременногоХранилищаНачальногоОбраза); ПоместитьВоВременноеХранилище(ИнформацияОПакетеУстановки, АдресВременногоХранилищаИнформацииОПакетеУстановки); -КонецФункции +КонецПроцедуры Процедура ВыгрузитьПараметрыВНачальныйОбраз(ПрефиксАвтономногоРабочегоМеста, ДатаСозданияНачальногоОбраза, АвтономноеРабочееМесто) diff --git a/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/ManagerModule.bsl b/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/ManagerModule.bsl index 50c239297..6f2d9e28c 100644 --- a/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/ManagerModule.bsl +++ b/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/ManagerModule.bsl @@ -2214,7 +2214,7 @@ ЗаголовокСообщенияXDTO = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML, ФабрикаXDTO.Тип("http://www.1c.ru/SSL/Exchange/Message", ЧтениеXML.ЛокальноеИмя)); - СтруктураНастроек = Новый Структура; + СтруктураНастроек = ОбменДаннымиXDTOСервер.СтруктураНастроекXDTO(); ОбменДаннымиXDTOСервер.ЗаполнитьСтруктуруНастроекXDTOКорреспондента(СтруктураНастроек, ЗаголовокСообщенияXDTO, , УзелОбмена); // Проверка UID отправителя на соответствие формату. diff --git a/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/ObjectModule.bsl b/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/ObjectModule.bsl index 836e86beb..3ff63a009 100644 --- a/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/ObjectModule.bsl +++ b/SSL/src/DataProcessors/ПомощникСозданияОбменаДанными/ObjectModule.bsl @@ -418,7 +418,7 @@ // Сообщение об ошибке при обмене данными. // // Возвращаемое значение: -// Строка - Сообщение об ошибке при обмене данными. +// Строка - сообщение об ошибке при обмене данными. // Функция СтрокаСообщенияОбОшибке() Экспорт diff --git a/SSL/src/DataProcessors/РаботаСФайлами/Forms/ВерсияПрисоединенногоФайла/Module.bsl b/SSL/src/DataProcessors/РаботаСФайлами/Forms/ВерсияПрисоединенногоФайла/Module.bsl index 24552c800..d62164ba0 100644 --- a/SSL/src/DataProcessors/РаботаСФайлами/Forms/ВерсияПрисоединенногоФайла/Module.bsl +++ b/SSL/src/DataProcessors/РаботаСФайлами/Forms/ВерсияПрисоединенногоФайла/Module.bsl @@ -40,7 +40,7 @@ Если РасширениеФайлаВСписке Тогда Если ЗначениеЗаполнено(ЭтотОбъект.Объект.Ссылка) Тогда - КодировкаЗначение = РаботаСФайламиСлужебный.ПолучитьКодировкуВерсииФайла(ЭтотОбъект.Объект.Ссылка); + КодировкаЗначение = РегистрыСведений.КодировкиФайлов.КодировкаВерсииФайла(ЭтотОбъект.Объект.Ссылка); СписокКодировок = РаботаСФайламиСлужебный.Кодировки(); ЭлементСписка = СписокКодировок.НайтиПоЗначению(КодировкаЗначение); @@ -305,7 +305,7 @@ КонецФункции // Возвращаемое значение: -// СправочникОбъект - . +// СправочникОбъект // &НаКлиенте Функция ТекущийОбъектФормы() @@ -315,7 +315,7 @@ КонецФункции // Возвращаемое значение: -// СправочникОбъект - . +// СправочникОбъект // &НаСервере Функция ТекущийОбъектФормыСервер() diff --git a/SSL/src/DataProcessors/РаботаСФайлами/Forms/ВыборКодировки/Module.bsl b/SSL/src/DataProcessors/РаботаСФайлами/Forms/ВыборКодировки/Module.bsl index 8944a57d1..6c424c27a 100644 --- a/SSL/src/DataProcessors/РаботаСФайлами/Forms/ВыборКодировки/Module.bsl +++ b/SSL/src/DataProcessors/РаботаСФайлами/Forms/ВыборКодировки/Module.bsl @@ -107,7 +107,7 @@ // Возвращает таблицу имен кодировок. // // Возвращаемое значение: -// ТаблицаЗначений - +// ТаблицаЗначений // &НаСервереБезКонтекста Функция ПолучитьПолныйСписокКодировок() diff --git a/SSL/src/DataProcessors/РаботаСФайлами/Forms/ГруппаФайлов/Module.bsl b/SSL/src/DataProcessors/РаботаСФайлами/Forms/ГруппаФайлов/Module.bsl index 32d59eff4..39515078b 100644 --- a/SSL/src/DataProcessors/РаботаСФайлами/Forms/ГруппаФайлов/Module.bsl +++ b/SSL/src/DataProcessors/РаботаСФайлами/Forms/ГруппаФайлов/Module.bsl @@ -195,15 +195,8 @@ КонецЕсли; КонецЦикла; - ЧастиСтроки = Новый Массив; - ЧастиСтроки.Добавить(Новый ФорматированнаяСтрока( - Строка(ЭтотОбъект["Объект"].Автор), - , - , - , - ПолучитьНавигационнуюСсылку(ЭтотОбъект["Объект"].Автор))); - - СтатусСоздана = Новый ФорматированнаяСтрока(ЧастиСтроки); + СтатусСоздана = СтроковыеФункции.ФорматированнаяСтрока(НСтр("ru = '%2'"), + ПолучитьНавигационнуюСсылку(ЭтотОбъект["Объект"].Автор), Строка(ЭтотОбъект["Объект"].Автор)); ОбновитьИнформациюОбИзменении(); @@ -331,15 +324,8 @@ &НаСервере Процедура ОбновитьИнформациюОбИзменении() - ЧастиСтроки = Новый Массив; - ЧастиСтроки.Добавить(Новый ФорматированнаяСтрока( - Строка(ЭтотОбъект["Объект"].Изменил), - , - , - , - ПолучитьНавигационнуюСсылку(ЭтотОбъект["Объект"].Изменил))); - - СтатусИзменена = Новый ФорматированнаяСтрока(ЧастиСтроки); + СтатусИзменена = СтроковыеФункции.ФорматированнаяСтрока(НСтр("ru = '%2'"), + ПолучитьНавигационнуюСсылку(ЭтотОбъект["Объект"].Изменил), Строка(ЭтотОбъект["Объект"].Изменил)); КонецПроцедуры diff --git a/SSL/src/DataProcessors/РаботаСФайлами/Forms/ПрисоединенныеФайлы/Module.bsl b/SSL/src/DataProcessors/РаботаСФайлами/Forms/ПрисоединенныеФайлы/Module.bsl index a22af51d4..774c9d20c 100644 --- a/SSL/src/DataProcessors/РаботаСФайлами/Forms/ПрисоединенныеФайлы/Module.bsl +++ b/SSL/src/DataProcessors/РаботаСФайлами/Forms/ПрисоединенныеФайлы/Module.bsl @@ -1320,7 +1320,7 @@ КонецПроцедуры // Параметры: -// ПараметрыВыполнения - Структура - со свойствами: +// ПараметрыВыполнения - Структура: // * ДанныеФайла - см. РаботаСФайлами.ДанныеФайла // &НаКлиенте @@ -1940,8 +1940,8 @@ КонецПроцедуры // Возвращаемое значение: -// ДанныеФормыСтруктура, ДанныеФормыЭлементКоллекции - где: -// * Ссылка - СправочникСсылка -. +// ДанныеФормыСтруктура, ДанныеФормыЭлементКоллекции: +// * Ссылка - СправочникСсылка // &НаКлиенте Функция ДанныеСтрокиСписка(ЭлементСписка) diff --git a/SSL/src/DataProcessors/РаботаСФайлами/Forms/ПрисоединенныйФайл/Form.form b/SSL/src/DataProcessors/РаботаСФайлами/Forms/ПрисоединенныйФайл/Form.form index 33ea54336..71514241e 100644 --- a/SSL/src/DataProcessors/РаботаСФайлами/Forms/ПрисоединенныйФайл/Form.form +++ b/SSL/src/DataProcessors/РаботаСФайлами/Forms/ПрисоединенныйФайл/Form.form @@ -4348,6 +4348,19 @@ true + + ИзменениеФайлов + 5 + + Boolean + + + true + + + true + + СтандартнаяЗаписатьИЗакрыть diff --git a/SSL/src/DataProcessors/РаботаСФайлами/Forms/ПрисоединенныйФайл/Module.bsl b/SSL/src/DataProcessors/РаботаСФайлами/Forms/ПрисоединенныйФайл/Module.bsl index fa76a2df7..2c9e8a471 100644 --- a/SSL/src/DataProcessors/РаботаСФайлами/Forms/ПрисоединенныйФайл/Module.bsl +++ b/SSL/src/DataProcessors/РаботаСФайлами/Forms/ПрисоединенныйФайл/Module.bsl @@ -21,6 +21,7 @@ ДоступнаЭлектроннаяПодпись = РаботаСФайламиСлужебный.ДоступнаЭлектроннаяПодпись(ТипЗнч(ПрисоединенныйФайл)); ТекущийПользователь = Пользователи.АвторизованныйПользователь(); + ИзменениеФайлов = Пользователи.ЭтоПолноправныйПользователь(); ПараметрыОтправки = ?(ЗначениеЗаполнено(Параметры.ПараметрыОтправки), Параметры.ПараметрыОтправки, РаботаСФайламиСлужебный.ПодготовитьСтруктуруПараметровОтправки()); @@ -720,7 +721,7 @@ Если ЭтоНовый() Или Не ЗначениеЗаполнено(ЭтотОбъект.Объект.Редактирует) - Или ЭтотОбъект.Объект.Редактирует <> ТекущийПользователь Тогда + Или ЭтотОбъект.Объект.Редактирует <> ТекущийПользователь И НЕ ИзменениеФайлов Тогда Возврат; КонецЕсли; @@ -1063,8 +1064,10 @@ СделатьКомандуНедоступной(ИменаКоманд, "ОбновитьИзФайлаНаДиске"); Иначе СделатьКомандуНедоступной(ИменаКоманд, "ЗакончитьРедактирование"); - СделатьКомандуНедоступной(ИменаКоманд, "Освободить"); СделатьКомандуНедоступной(ИменаКоманд, "Редактировать"); + Если Не Форма.ИзменениеФайлов Тогда + СделатьКомандуНедоступной(ИменаКоманд, "Освободить"); + КонецЕсли; КонецЕсли; СделатьКомандуНедоступной(ИменаКоманд, "Занять"); @@ -1077,13 +1080,17 @@ СделатьКомандуНедоступной(ИменаКоманд, "Расшифровать"); Иначе СделатьКомандуНедоступной(ИменаКоманд, "ЗакончитьРедактирование"); - СделатьКомандуНедоступной(ИменаКоманд, "Освободить"); СделатьКомандуНедоступной(ИменаКоманд, "СохранитьИзменения"); + Если Не Форма.ИзменениеФайлов Тогда + СделатьКомандуНедоступной(ИменаКоманд, "Освободить"); + КонецЕсли; КонецЕсли; Если ФайлПодписан Тогда СделатьКомандуНедоступной(ИменаКоманд, "ЗакончитьРедактирование"); - СделатьКомандуНедоступной(ИменаКоманд, "Освободить"); + Если Не Форма.ИзменениеФайлов Тогда + СделатьКомандуНедоступной(ИменаКоманд, "Освободить"); + КонецЕсли; СделатьКомандуНедоступной(ИменаКоманд, "Редактировать"); СделатьКомандуНедоступной(ИменаКоманд, "ОбновитьИзФайлаНаДиске"); Иначе @@ -1099,7 +1106,9 @@ Если ФайлЗашифрован Тогда СделатьКомандыЭПНедоступными(ИменаКоманд); СделатьКомандуНедоступной(ИменаКоманд, "ЗакончитьРедактирование"); - СделатьКомандуНедоступной(ИменаКоманд, "Освободить"); + Если Не Форма.ИзменениеФайлов Тогда + СделатьКомандуНедоступной(ИменаКоманд, "Освободить"); + КонецЕсли; СделатьКомандуНедоступной(ИменаКоманд, "Редактировать"); СделатьКомандуНедоступной(ИменаКоманд, "ОбновитьИзФайлаНаДиске"); @@ -1513,8 +1522,8 @@ // Продолжение процедуры ПрочитатьСертификатыПодписей. // // Параметры: -// Контекст - Структура - контекст операции: -// * Сертификат - СертификатКриптографии -. +// Контекст - Структура: +// * Сертификат - СертификатКриптографии // &НаКлиенте Процедура ПрочитатьСертификатыПодписейЦиклПослеПолученияСертификатовИзПодписи(Сертификаты, Контекст) Экспорт diff --git a/SSL/src/DataProcessors/РаботаСФайлами/Forms/ФайлыВОсновномРабочемКаталоге/Form.form b/SSL/src/DataProcessors/РаботаСФайлами/Forms/ФайлыВОсновномРабочемКаталоге/Form.form deleted file mode 100644 index 215cb73ca..000000000 --- a/SSL/src/DataProcessors/РаботаСФайлами/Forms/ФайлыВОсновномРабочемКаталоге/Form.form +++ /dev/null @@ -1,1277 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<form:Form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:form="http://g5.1c.ru/v8/dt/form"> - <items xsi:type="form:FormGroup"> - <name>КоманднаяПанель</name> - <id>1</id> - <items xsi:type="form:Button"> - <name>ФормаОткрытьКарточку</name> - <id>26</id> - <visible>true</visible> - <enabled>true</enabled> - <userVisible> - <common>true</common> - </userVisible> - <extendedTooltip> - <name>ФормаОткрытьКарточкуExtendedTooltip</name> - <id>34</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>Picture</representation> - <autoMaxWidth>true</autoMaxWidth> - <autoMaxHeight>true</autoMaxHeight> - <placementArea>UserCmds</placementArea> - <representationInContextMenu>Auto</representationInContextMenu> - <locationInCommandBar>InAdditionalSubmenu</locationInCommandBar> - </items> - <items xsi:type="form:Button"> - <name>ФормаУдалитьИзЛокальногоКэшаФайлов</name> - <id>12</id> - <visible>true</visible> - <enabled>true</enabled> - <userVisible> - <common>true</common> - </userVisible> - <skipOnInput>false</skipOnInput> - <extendedTooltip> - <name>ФормаУдалитьИзЛокальногоКэшаФайловРасширеннаяПодсказка</name> - <id>30</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> - <autoMaxWidth>true</autoMaxWidth> - <autoMaxHeight>true</autoMaxHeight> - <placementArea>UserCmds</placementArea> - <textColor xsi:type="core:ColorRef"> - <color>Style.ButtonTextColor</color> - </textColor> - <backColor xsi:type="core:ColorRef"> - <color>Style.ButtonBackColor</color> - </backColor> - <borderColor xsi:type="core:ColorRef"> - <color>Style.BorderColor</color> - </borderColor> - <representationInContextMenu>Auto</representationInContextMenu> - </items> - <items xsi:type="form:Button"> - <name>ФормаЗакончитьРедактирование</name> - <id>25</id> - <visible>true</visible> - <enabled>true</enabled> - <userVisible> - <common>true</common> - </userVisible> - <skipOnInput>false</skipOnInput> - <extendedTooltip> - <name>ФормаЗакончитьРедактированиеРасширеннаяПодсказка</name> - <id>31</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> - <autoMaxWidth>true</autoMaxWidth> - <autoMaxHeight>true</autoMaxHeight> - <placementArea>UserCmds</placementArea> - <representationInContextMenu>Auto</representationInContextMenu> - </items> - <items xsi:type="form:Button"> - <name>ФормаОтменитьПоиск</name> - <id>56</id> - <visible>true</visible> - <enabled>true</enabled> - <userVisible> - <common>true</common> - </userVisible> - <extendedTooltip> - <name>ФормаОтменитьПоискРасширеннаяПодсказка</name> - <id>57</id> - <type>Label</type> - <autoMaxWidth>true</autoMaxWidth> - <autoMaxHeight>true</autoMaxHeight> - <extInfo xsi:type="form:LabelDecorationExtInfo"> - <horizontalAlign>Left</horizontalAlign> - </extInfo> - </extendedTooltip> - <commandName>Form.Item.Список.StandardCommand.CancelSearch</commandName> - <buttonImportance>Normal</buttonImportance> - <representation>Auto</representation> - <autoMaxWidth>true</autoMaxWidth> - <autoMaxHeight>true</autoMaxHeight> - <placementArea>UserCmds</placementArea> - <representationInContextMenu>Auto</representationInContextMenu> - </items> - <items xsi:type="form:Button"> - <name>ФормаНайти</name> - <id>54</id> - <visible>true</visible> - <enabled>true</enabled> - <userVisible> - <common>true</common> - </userVisible> - <extendedTooltip> - <name>ФормаНайтиРасширеннаяПодсказка</name> - <id>55</id> - <type>Label</type> - <autoMaxWidth>true</autoMaxWidth> - <autoMaxHeight>true</autoMaxHeight> - <extInfo xsi:type="form:LabelDecorationExtInfo"> - <horizontalAlign>Left</horizontalAlign> - </extInfo> - </extendedTooltip> - <commandName>Form.Item.Список.StandardCommand.Find</commandName> - <buttonImportance>Normal</buttonImportance> - <representation>Auto</representation> - <autoMaxWidth>true</autoMaxWidth> - <autoMaxHeight>true</autoMaxHeight> - <placementArea>UserCmds</placementArea> - <representationInContextMenu>Auto</representationInContextMenu> - </items> - <items xsi:type="form:Button"> - <name>ФормаОсвободить</name> - <id>13</id> - <visible>true</visible> - <enabled>true</enabled> - <userVisible> - <common>true</common> - </userVisible> - <skipOnInput>false</skipOnInput> - <extendedTooltip> - <name>ФормаОсвободитьРасширеннаяПодсказка</name> - <id>32</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> - <autoMaxWidth>true</autoMaxWidth> - <autoMaxHeight>true</autoMaxHeight> - <placementArea>UserCmds</placementArea> - <textColor xsi:type="core:ColorRef"> - <color>Style.ButtonTextColor</color> - </textColor> - <backColor xsi:type="core:ColorRef"> - <color>Style.ButtonBackColor</color> - </backColor> - <borderColor xsi:type="core:ColorRef"> - <color>Style.BorderColor</color> - </borderColor> - <representationInContextMenu>Auto</representationInContextMenu> - </items> - <items xsi:type="form:Button"> - <name>ФормаОткрытьКаталогФайла</name> - <id>20</id> - <visible>true</visible> - <enabled>true</enabled> - <userVisible> - <common>true</common> - </userVisible> - <skipOnInput>false</skipOnInput> - <extendedTooltip> - <name>ФормаОткрытьКаталогФайлаРасширеннаяПодсказка</name> - <id>33</id> - <type>Label</type> - <autoMaxWidth>true</autoMaxWidth> - <autoMaxHeight>true</autoMaxHeight> - <extInfo xsi:type="form:LabelDecorationExtInfo"> - <horizontalAlign>Left</horizontalAlign> - </extInfo> - </extendedTooltip> - <commandName>Form.Command.ОткрытьКаталогФайла</commandName> - <buttonImportance>Normal</buttonImportance> - <representation>Auto</representation> - <autoMaxWidth>true</autoMaxWidth> - <autoMaxHeight>true</autoMaxHeight> - <placementArea>UserCmds</placementArea> - <representationInContextMenu>Auto</representationInContextMenu> - </items> - <items xsi:type="form:Button"> - <name>ФормаВывестиСписок</name> - <id>58</id> - <visible>true</visible> - <enabled>true</enabled> - <userVisible> - <common>true</common> - </userVisible> - <extendedTooltip> - <name>ФормаВывестиСписокРасширеннаяПодсказка</name> - <id>59</id> - <type>Label</type> - <autoMaxWidth>true</autoMaxWidth> - <autoMaxHeight>true</autoMaxHeight> - <extInfo xsi:type="form:LabelDecorationExtInfo"> - <horizontalAlign>Left</horizontalAlign> - </extInfo> - </extendedTooltip> - <commandName>Form.Item.Список.StandardCommand.OutputList</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> - - - КоманднаяПанельРасширеннаяПодсказка - 29 - Label - true - true - - Left - - - CommandBar - - Left - Form - - - - Список - 2 - - <key>ru</key> - <value>Список</value> - - true - true - - true - - - Список - - false - None - Add - Copy - EndEdit - MoveDown - MoveUp - SortListAsc - SortListDesc - - СписокНаРедактирование - 17 - VeryLow - true - true - - true - - - Список.НаРедактирование - - None - - ru - Файл занят для редактирования - - - СписокНаРедактированиеРасширеннаяПодсказка - 47 - Label - true - true - - Left - - - - СписокНаРедактированиеКонтекстноеМеню - 18 - true - - CheckBoxField - true - Enter - true - - CommonPicture.РедактироватьФайл - - Left - true - - - - СписокИмяФайла - 6 - VeryHigh - - <key>ru</key> - <value>Файл</value> - - true - true - - true - - - Список.ИмяФайла - - - СписокИмяФайлаРасширеннаяПодсказка - 44 - Label - true - true - - Left - - - - СписокИмяФайлаКонтекстноеМеню - 7 - true - - InputField - Enter - true - true - Left - true - Left - - 40 - true - true - true - true - true - - Style.BorderColor - - Normal - - - - СписокРазмер - 8 - Usual - - <key>ru</key> - <value>Размер (КБ)</value> - - true - true - - true - - - Список.Размер - - - СписокРазмерРасширеннаяПодсказка - 45 - Label - true - true - - Left - - - - СписокРазмерКонтекстноеМеню - 9 - true - - InputField - Right - Enter - true - Left - true - Left - - 12 - true - true - true - true - true - - Style.BorderColor - - Normal - - - - СписокДатаИзменения - 10 - Usual - - <key>ru</key> - <value>Дата изменения</value> - - true - true - - true - - - Список.ДатаИзменения - - - ru - Дата изменения данных файла (местное время) - - - СписокДатаИзмененияРасширеннаяПодсказка - 46 - Label - true - true - - Left - - - - СписокДатаИзмененияКонтекстноеМеню - 11 - true - - InputField - Enter - true - Left - true - Left - - 15 - true - true - false - true - true - true - - Style.BorderColor - - Normal - - - - СписокФайл - 48 - Usual - - <key>ru</key> - <value>Ссылка (Файл)</value> - - true - true - - - Список.Файл - - - СписокФайлРасширеннаяПодсказка - 50 - Label - true - true - - Left - - - - СписокФайлКонтекстноеМеню - 49 - true - - InputField - Auto - true - Left - true - - 1 - true - true - true - true - true - true - Normal - - - - СписокВерсия - 51 - Usual - - <key>ru</key> - <value>Ссылка (Версия)</value> - - true - true - - - Список.Версия - - - СписокВерсияРасширеннаяПодсказка - 53 - Label - true - true - - Left - - - - СписокВерсияКонтекстноеМеню - 52 - true - - InputField - Auto - true - Left - true - - 1 - true - true - true - true - true - true - Normal - - - None - - СписокКоманднаяПанель - 16 - Left - true - - - BeforeDeleteRow - СписокПередУдалением - - - OnActivateRow - СписокПриАктивизацииСтроки - - - BeforeRowChange - СписокПередНачаломИзменения - - - СписокСтрокаПоиска - 62 - - СписокСтрокаПоискаРасширеннаяПодсказка - 64 - Label - true - true - - Left - - - - СписокСтрокаПоискаКонтекстноеМеню - 63 - true - - Список - - true - - - - СписокСостояниеПросмотра - 65 - - СписокСостояниеПросмотраРасширеннаяПодсказка - 67 - Label - true - true - - Left - - - - СписокСостояниеПросмотраКонтекстноеМеню - 66 - true - - ViewStatusAddition - Список - - true - - - - СписокУправлениеПоиском - 68 - - СписокУправлениеПоискомРасширеннаяПодсказка - 70 - Label - true - true - - Left - - - - СписокУправлениеПоискомКонтекстноеМеню - 69 - true - - SearchControlAddition - Список - - true - - - - СписокРасширеннаяПодсказка - 41 - Label - true - true - - Left - - - - СписокКонтекстноеМеню - 3 - - СписокКонтекстноеМенюОткрытьКарточку - 27 - true - true - - true - - - СписокКонтекстноеМенюОткрытьКарточкуРасширеннаяПодсказка - 39 - Label - true - true - - Left - - - Form.Command.ОткрытьКарточку - Normal - Auto - true - true - UserCmds - Auto - - - СписокКонтекстноеМенюУдалитьИзЛокальногоКэшаФайлов - 21 - true - true - - true - - false - - СписокКонтекстноеМенюУдалитьИзЛокальногоКэшаФайловРасширеннаяПодсказка - 35 - Label - true - true - - Left - - - Form.Command.УдалитьИзЛокальногоКэшаФайлов - Normal - Auto - true - true - UserCmds - Auto - - - СписокКонтекстноеМенюЗакончитьРедактирование - 24 - true - true - - true - - false - - СписокКонтекстноеМенюЗакончитьРедактированиеРасширеннаяПодсказка - 36 - Label - true - true - - Left - - - Form.Command.ЗакончитьРедактирование - Normal - Auto - true - true - UserCmds - Auto - - - СписокКонтекстноеМенюНайти - 71 - true - true - - true - - - СписокКонтекстноеМенюНайтиРасширеннаяПодсказка - 72 - Label - true - true - - Left - - - Form.Item.Список.StandardCommand.Find - Normal - Auto - true - true - UserCmds - Auto - - - СписокКонтекстноеМенюОтменитьПоиск - 73 - true - true - - true - - - СписокКонтекстноеМенюОтменитьПоискРасширеннаяПодсказка - 74 - Label - true - true - - Left - - - Form.Item.Список.StandardCommand.CancelSearch - Normal - Auto - true - true - UserCmds - Auto - - - СписокКонтекстноеМенюОсвободить - 22 - true - true - - true - - false - - СписокКонтекстноеМенюОсвободитьРасширеннаяПодсказка - 37 - Label - true - true - - Left - - - Form.Command.Освободить - Normal - Auto - true - true - UserCmds - Auto - - - СписокКонтекстноеМенюОткрытьКаталогФайла - 23 - true - true - - true - - false - - СписокКонтекстноеМенюОткрытьКаталогФайлаРасширеннаяПодсказка - 38 - Label - true - true - - Left - - - Form.Command.ОткрытьКаталогФайла - Normal - Auto - true - true - UserCmds - Auto - - - СписокКонтекстноеМенюВыделитьВсе - 28 - true - true - - true - - - СписокКонтекстноеМенюВыделитьВсеРасширеннаяПодсказка - 40 - Label - true - true - - Left - - - Form.Item.Список.StandardCommand.SelectAll - Normal - Auto - true - true - UserCmds - Auto - - - СписокКонтекстноеМенюКопироватьВБуферОбмена - 60 - true - true - - true - - - СписокКонтекстноеМенюКопироватьВБуферОбменаРасширеннаяПодсказка - 61 - Label - true - true - - Left - - - Form.Item.Список.StandardCommand.CopyToClipboard - Normal - Auto - true - true - UserCmds - Auto - - - true - true - true - true - true - MultiRow - Row -
    true
    - 1 - 1 - AutoUse - AutoUse - true - true - false - Auto - Auto - true - true - - Список.ИндексКартинки - - - CommonPicture.КоллекцияПиктограммФайлов - - - Style.BorderColor - - None - None - None - SelectionPresentationAndChoice - true - -
    - None - false - - ФормаКоманднаяПанель - -1 - Left - true - - - OnOpen - ПриОткрытии - - - OnCreateAtServer - ПриСозданииНаСервере - - LockOwner - true - true - true - Vertical - true - true - true - auto - true - - - КоманднаяПанель - - - - Список - - <key>ru</key> - <value>Список</value> - - 1 - - ValueTable - - - true - - - true - - - ИмяФайла - - <key>ru</key> - <value>Имя файла</value> - - 1 - - String - - - - true - - - true - - - - Размер - - <key>ru</key> - <value>Размер файла</value> - - 2 - - Number - - - - true - - - true - - - - ДатаИзменения - - <key>ru</key> - <value>Дата изменения</value> - - 3 - - Date - - - - true - - - true - - - - ИндексКартинки - 4 - - Number - - 10 - - - - true - - - true - - - - Версия - - <key>ru</key> - <value>Версия</value> - - 5 - - DefinedType.ПрисоединенныйФайл - - - true - - - true - - - - Редактирует - 6 - - CatalogRef.Пользователи - - - true - - - true - - - - НаРедактирование - - <key>ru</key> - <value>На редактирование</value> - - 7 - - Boolean - - - true - - - true - - - - Файл - - <key>ru</key> - <value>Файл</value> - - 8 - - DefinedType.ПрисоединенныйФайл - - - true - - - true - - - - - СписокЗначенийФайловВРегистре - 2 - - ValueList - - - true - - - true - - - - - - - УдалитьИзЛокальногоКэшаФайлов - - <key>ru</key> - <value>Удалить</value> - - 1 - - ru - Удалить из основного рабочего каталога - - - true - - - StdPicture.Delete - - - - УдалитьИзЛокальногоКэшаФайлов - - - TextPicture - DontUse - Auto - - - Освободить - - <key>ru</key> - <value>Отменить редактирование</value> - - 2 - - ru - Освободить - - - true - - - CommonPicture.ОсвободитьФайл - - - - ОсвободитьВыполнить - - - TextPicture - DontUse - Auto - - - ОткрытьКаталогФайла - - <key>ru</key> - <value>Открыть каталог файла</value> - - 3 - - ru - Открыть каталог файла - - - true - - - - ОткрытьКаталогФайлаВыполнить - - - DontUse - Auto - - - ЗакончитьРедактирование - - <key>ru</key> - <value>Закончить редактирование</value> - - 4 - - ru - Закончить редактирование - - - true - - - CommonPicture.ЗакончитьРедактированиеФайла - - - - ЗакончитьРедактирование - - - TextPicture - DontUse - Auto - - - ОткрытьКарточку - - <key>ru</key> - <value>Открыть карточку</value> - - 5 - - ru - Открыть карточку файла - - - true - - - StdPicture.Change - - - - ОткрытьКарточку - - - DontUse - Auto - - - - - - diff --git a/SSL/src/DataProcessors/РаботаСФайлами/Forms/ФайлыВОсновномРабочемКаталоге/Help/ru.html b/SSL/src/DataProcessors/РаботаСФайлами/Forms/ФайлыВОсновномРабочемКаталоге/Help/ru.html deleted file mode 100644 index 8a11d613a..000000000 --- a/SSL/src/DataProcessors/РаботаСФайлами/Forms/ФайлыВОсновномРабочемКаталоге/Help/ru.html +++ /dev/null @@ -1,16 +0,0 @@ - -

    Основной рабочий каталог - специальный каталог на Вашем компьютере, в котором программа размещает просматриваемые и редактируемые Вами файлы. Список предназначен для управления файлами в рабочем каталоге.

    -

    Вызывается из персональных настроек программы (закладка Работа с файлами) по команде Настройка основного рабочего каталога - Открыть список файлов.

    -

    В списке выводится:

    -
    •  Файл занят для редактирования - флажок включен, если файл редактируется. -
    • Файл - формат (выводится в виде значка) и наименование файла; -
    • Размер (Кб); -
    • Дата изменения.

    С помощью команды Еще - Изменить форму можно добавить в список дополнительные поля.

    -

    Доступные действия

    -
    • Для удаления ненужных файлов из рабочего каталога нажмите Удалить. При этом будут удалены только те файлы, в которые Вами не вносились какие-либо изменения. -
    • Для того чтобы сохранить изменения в файле и освободить его для других пользователей, нажмите Закончить редактирование. -
    • Для того чтобы освободить занятые Вами файлы, используйте команду Отменить редактирование. -
    • Нажмите Открыть каталог файла, для того чтобы просмотреть папку, в которой хранится редактируемый файл. -
    • Выполните соответствующую команду контекстного меню по правой кнопке мыши или меню Еще, для того чтобы Открыть карточку файла.

    См. также:

    - \ No newline at end of file diff --git a/SSL/src/DataProcessors/РаботаСФайлами/Forms/ФайлыВОсновномРабочемКаталоге/Module.bsl b/SSL/src/DataProcessors/РаботаСФайлами/Forms/ФайлыВОсновномРабочемКаталоге/Module.bsl deleted file mode 100644 index 7031344b6..000000000 --- a/SSL/src/DataProcessors/РаботаСФайлами/Forms/ФайлыВОсновномРабочемКаталоге/Module.bsl +++ /dev/null @@ -1,455 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020, ООО 1С-Софт -// Все права защищены. Эта программа и сопроводительные материалы предоставляются -// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) -// Текст лицензии доступен по ссылке: -// https://creativecommons.org/licenses/by/4.0/legalcode -/////////////////////////////////////////////////////////////////////////////////////////////////////// - -#Область ОбработчикиСобытийФормы - -&НаСервере -Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) - - ЗаполнитьСписок(); - - Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда - Элементы.СписокНаРедактирование.Видимость = Ложь; - КонецЕсли; - -КонецПроцедуры - -&НаКлиенте -Процедура ПриОткрытии(Отказ) - ЗаполнитьСписокВФорме(); -КонецПроцедуры - -#КонецОбласти - -#Область ОбработчикиСобытийЭлементовТаблицыФормыСписок - -&НаКлиенте -Процедура СписокПриАктивизацииСтроки(Элемент) - - Если Элементы.Список.ТекущиеДанные = Неопределено Тогда - ДоступностьКоманд = Ложь; - Иначе - ДоступностьКоманд = Истина; - КонецЕсли; - - Элементы.ФормаУдалитьИзЛокальногоКэшаФайлов.Доступность = ДоступностьКоманд; - Элементы.СписокКонтекстноеМенюУдалитьИзЛокальногоКэшаФайлов.Доступность = ДоступностьКоманд; - - Элементы.ФормаЗакончитьРедактирование.Доступность = ДоступностьКоманд; - Элементы.СписокКонтекстноеМенюЗакончитьРедактирование.Доступность = ДоступностьКоманд; - - Элементы.ФормаОсвободить.Доступность = ДоступностьКоманд; - Элементы.СписокКонтекстноеМенюОсвободить.Доступность = ДоступностьКоманд; - - Элементы.ФормаОткрытьКаталогФайла.Доступность = ДоступностьКоманд; - Элементы.СписокКонтекстноеМенюОткрытьКаталогФайла.Доступность = ДоступностьКоманд; - - Элементы.ФормаОткрытьКарточку.Доступность = ДоступностьКоманд; - Элементы.СписокКонтекстноеМенюОткрытьКарточку.Доступность = ДоступностьКоманд; - -КонецПроцедуры - -&НаКлиенте -Процедура СписокПередНачаломИзменения(Элемент, Отказ) - Отказ = Истина; - ОткрытьКарточкуВыполнить(); -КонецПроцедуры - -&НаКлиенте -Процедура СписокПередУдалением(Элемент, Отказ) - Отказ = Истина; - УдалитьИзЛокальногоКэшаФайловВыполнить(); -КонецПроцедуры - -#КонецОбласти - -#Область ОбработчикиКомандФормы - -&НаКлиенте -Процедура УдалитьИзЛокальногоКэшаФайлов(Команда) - УдалитьИзЛокальногоКэшаФайловВыполнить(); -КонецПроцедуры - -&НаКлиенте -Процедура ЗакончитьРедактирование(Команда) - - СтрокаТаблицы = Элементы.Список.ТекущиеДанные; - Если СтрокаТаблицы = Неопределено Тогда - Возврат; - КонецЕсли; - - ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ДанныеФайла(СтрокаТаблицы.Файл); - Обработчик = Новый ОписаниеОповещения("ЗакончитьРедактированиеЗавершение", ЭтотОбъект); - ПараметрыОбновленияФайла = РаботаСФайламиСлужебныйКлиент.ПараметрыОбновленияФайла(Обработчик, ДанныеФайла.Ссылка, УникальныйИдентификатор); - РаботаСФайламиСлужебныйКлиент.ЗакончитьРедактированиеСОповещением(ПараметрыОбновленияФайла); - -КонецПроцедуры - -&НаКлиенте -Процедура ОткрытьКарточку(Команда) - ОткрытьКарточкуВыполнить(); -КонецПроцедуры - -&НаКлиенте -Процедура ОсвободитьВыполнить() - - Обработчик = Новый ОписаниеОповещения("ОсвободитьПослеУстановкиРасширения", ЭтотОбъект); - РаботаСФайламиСлужебныйКлиент.ПоказатьВопросОбУстановкеРасширенияРаботыСФайлами(Обработчик); - -КонецПроцедуры - -&НаКлиенте -Процедура ОткрытьКаталогФайлаВыполнить() - - СтрокаТаблицы = Элементы.Список.ТекущиеДанные; - Если СтрокаТаблицы = Неопределено Тогда - Возврат; - КонецЕсли; - - ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ДанныеФайла(СтрокаТаблицы.Файл); - РаботаСФайламиСлужебныйКлиент.КаталогФайла(Неопределено, ДанныеФайла); - -КонецПроцедуры - -#КонецОбласти - -#Область СлужебныеПроцедурыИФункции - -&НаКлиенте -Процедура ЗакончитьРедактированиеЗавершение(Результат, ПараметрыВыполнения) Экспорт - - ЗаполнитьСписок(); - ЗаполнитьСписокВФорме(); - -КонецПроцедуры - -&НаКлиенте -Процедура ОсвободитьПослеУстановкиРасширения(Результат, ПараметрыВыполнения) Экспорт - - ПараметрыВыполнения = Новый Структура; - ПараметрыВыполнения.Вставить("МассивСсылок", Новый Массив); - - Для Каждого Элемент Из Элементы.Список.ВыделенныеСтроки Цикл - ДанныеСтроки = Элементы.Список.ДанныеСтроки(Элемент); - Ссылка = ДанныеСтроки.Файл; - ПараметрыВыполнения.МассивСсылок.Добавить(Ссылка); - КонецЦикла; - - ПараметрыВыполнения.Вставить("Индекс", 0); - ПараметрыВыполнения.Вставить("ВГраница", ПараметрыВыполнения.МассивСсылок.ВГраница()); - - ОсвободитьВЦикле(ПараметрыВыполнения); - -КонецПроцедуры - -&НаКлиенте -Процедура ОсвободитьВЦикле(ПараметрыВыполнения) - - ОбработчикЗавершения = Новый ОписаниеОповещения("ОсвободитьВЦиклеПродолжить", ЭтотОбъект); - РаботаСФайламиСлужебныйКлиент.ЗарегистрироватьОбработчикЗавершения(ПараметрыВыполнения, ОбработчикЗавершения); - - ПараметрыВызова = Новый Структура; - ПараметрыВызова.Вставить("ОбработчикРезультата", ПараметрыВыполнения); - ПараметрыВызова.Вставить("ОбъектСсылка", Неопределено); - ПараметрыВызова.Вставить("Версия", Неопределено); - ПараметрыВызова.Вставить("ХранитьВерсии", Неопределено); - ПараметрыВызова.Вставить("ФайлРедактируетТекущийПользователь", Неопределено); - ПараметрыВызова.Вставить("Редактирует", Неопределено); - ПараметрыВызова.Вставить("УникальныйИдентификатор", Неопределено); - ПараметрыВызова.Вставить("НеЗадаватьВопрос", Ложь); - - Для Индекс = ПараметрыВыполнения.Индекс По ПараметрыВыполнения.ВГраница Цикл - ПараметрыВыполнения.Индекс = Индекс; - ПараметрыВызова.Версия = ПараметрыВыполнения.МассивСсылок[Индекс]; - - РаботаСФайламиСлужебныйКлиент.ОсвободитьФайлПослеУстановкиРасширения( - Неопределено, ПараметрыВызова); - - Если ПараметрыВыполнения.АсинхронныйДиалог.Открыт = Истина Тогда - Возврат; - КонецЕсли; - КонецЦикла; - - ЗаполнитьСписок(); - ЗаполнитьСписокВФорме(); - -КонецПроцедуры - -// Параметры: -// ПараметрыВыполнения - Структура - . -&НаКлиенте -Процедура ОсвободитьВЦиклеПродолжить(Результат, ПараметрыВыполнения) Экспорт - - ПараметрыВыполнения.АсинхронныйДиалог.Открыт = Ложь; - ПараметрыВыполнения.Индекс = ПараметрыВыполнения.Индекс + 1; - ОсвободитьВЦикле(ПараметрыВыполнения); - -КонецПроцедуры - -&НаКлиенте -Процедура ЗаполнитьСписокВФорме() - - РабочийКаталогПользователя = РаботаСФайламиСлужебныйКлиент.РабочийКаталогПользователя(); - - Список.Очистить(); - - Для Каждого Строка Из СписокЗначенийФайловВРегистре Цикл - - ПолныйПуть = РабочийКаталогПользователя + Строка.Значение.ЧастичныйПуть; - Файл = Новый Файл(ПолныйПуть); - Если Файл.Существует() Тогда - НоваяСтрока = Список.Добавить(); - НоваяСтрока.ДатаИзменения = МестноеВремя(Строка.Значение.ДатаМодификацииУниверсальная); - НоваяСтрока.ИмяФайла = Строка.Значение.ПолноеНаименование; - НоваяСтрока.ИндексКартинки = Строка.Значение.ИндексКартинки; - НоваяСтрока.Размер = Формат(Строка.Значение.Размер / 1024, "ЧЦ=10; ЧН=0"); // в КБ - НоваяСтрока.Версия = Строка.Значение.Ссылка; - НоваяСтрока.Редактирует = Строка.Значение.Редактирует; - НоваяСтрока.НаРедактирование = ЗначениеЗаполнено(Строка.Значение.Редактирует); - НоваяСтрока.Файл = Строка.Значение.Файл; - КонецЕсли; - КонецЦикла; - -КонецПроцедуры - -&НаКлиенте -Процедура УдалитьПоСсылке(СсылкаДляУдаления) - - КоличествоЭлементов = Список.Количество(); - - Для Номер = 0 По КоличествоЭлементов - 1 Цикл - Строка = Список[Номер]; - Ссылка = Строка.Версия; - Если Ссылка = СсылкаДляУдаления Тогда - Список.Удалить(Номер); - Возврат; - КонецЕсли; - КонецЦикла; - -КонецПроцедуры - -&НаСервере -Процедура ЗаполнитьСписок() - - СписокВРегистре = СписокВРегистре(); - СписокЗначенийФайловВРегистре.Очистить(); - - Для Каждого Строка Из СписокВРегистре Цикл - СписокЗначенийФайловВРегистре.Добавить(Строка); - КонецЦикла; - -КонецПроцедуры - -&НаКлиенте -Процедура УдалитьИзЛокальногоКэшаФайловВыполнить() - - ТекстВопроса = НСтр("ru = 'Удалить выбранные файлы из рабочего каталога?'"); - Обработчик = Новый ОписаниеОповещения("УдалитьИзЛокальногоКэшаПослеОтветаНаВопрос", ЭтотОбъект); - ПоказатьВопрос(Обработчик, ТекстВопроса, РежимДиалогаВопрос.ДаНет); - -КонецПроцедуры - -&НаКлиенте -Процедура УдалитьИзЛокальногоКэшаПослеОтветаНаВопрос(Ответ, ПараметрыВыполнения) Экспорт - - Если Ответ = КодВозвратаДиалога.Нет Тогда - Возврат; - КонецЕсли; - - ПараметрыВыполнения = Новый Структура; - ПараметрыВыполнения.Вставить("МассивСсылок", Новый Массив); - Для Каждого НомерЦикла Из Элементы.Список.ВыделенныеСтроки Цикл - ДанныеСтроки = Элементы.Список.ДанныеСтроки(НомерЦикла); - ПараметрыВыполнения.МассивСсылок.Добавить(ДанныеСтроки.Версия); - КонецЦикла; - - ПараметрыВыполнения.Вставить("Индекс", 0); - ПараметрыВыполнения.Вставить("ВГраница", ПараметрыВыполнения.МассивСсылок.ВГраница()); - ПараметрыВыполнения.Вставить("Ссылка", Неопределено); - ПараметрыВыполнения.Вставить("ЕстьЗанятыеФайлы", Ложь); - ПараметрыВыполнения.Вставить("ИмяКаталога", РаботаСФайламиСлужебныйКлиент.РабочийКаталогПользователя()); - - УдалитьИзЛокальногоКэшаФайловВЦикле(ПараметрыВыполнения); - -КонецПроцедуры - -&НаКлиенте -Процедура УдалитьИзЛокальногоКэшаФайловВЦикле(ПараметрыВыполнения) - - ОбработчикЗавершения = Новый ОписаниеОповещения("УдалитьИзЛокальногоКэшаФайловВЦиклеПродолжить", ЭтотОбъект); - РаботаСФайламиСлужебныйКлиент.ЗарегистрироватьОбработчикЗавершения(ПараметрыВыполнения, ОбработчикЗавершения); - - Для Индекс = ПараметрыВыполнения.Индекс По ПараметрыВыполнения.ВГраница Цикл - ПараметрыВыполнения.Индекс = Индекс; - ПараметрыВыполнения.Ссылка = ПараметрыВыполнения.МассивСсылок[Индекс]; - - Если ФайлЗанят(ПараметрыВыполнения.Ссылка) Тогда - Строки = Список.НайтиСтроки(Новый Структура("Версия", ПараметрыВыполнения.Ссылка)); - Строки[0].НаРедактирование = Истина; - ПараметрыВыполнения.ЕстьЗанятыеФайлы = Истина; - ПараметрыВыполнения.АсинхронныйДиалог.Открыт = Ложь; - ПараметрыВыполнения.Индекс = ПараметрыВыполнения.Индекс + 1; - Продолжить; - КонецЕсли; - - ПараметрыВыполнения.Вставить("ИмяФайлаСПутем", - РаботаСФайламиСлужебныйВызовСервера.ПолучитьПолноеИмяФайлаИзРегистра( - ПараметрыВыполнения.Ссылка, ПараметрыВыполнения.ИмяКаталога, Ложь, Ложь)); - - РаботаСФайламиСлужебныйКлиент.УдалитьФайлИзРабочегоКаталога( - ПараметрыВыполнения, ПараметрыВыполнения.Ссылка); - - Если ПараметрыВыполнения.АсинхронныйДиалог.Открыт = Истина Тогда - Возврат; - КонецЕсли; - - Если ПараметрыВыполнения.ИмяФайлаСПутем <> "" Тогда - ФайлНаДиске = Новый Файл(ПараметрыВыполнения.ИмяФайлаСПутем); - Если НЕ ФайлНаДиске.Существует() Тогда - УдалитьПоСсылке(ПараметрыВыполнения.Ссылка); - КонецЕсли; - Иначе - УдалитьПоСсылке(ПараметрыВыполнения.Ссылка); - КонецЕсли; - КонецЦикла; - - Если ПараметрыВыполнения.ЕстьЗанятыеФайлы Тогда - ПоказатьПредупреждение(, - НСтр("ru = 'Нельзя удалять из рабочего каталога файлы, - |занятые для редактирования.'")); - КонецЕсли; - - Элементы.Список.Обновить(); - -КонецПроцедуры - -// Параметры: -// ПараметрыВыполнения - Структура - . -// -&НаКлиенте -Процедура УдалитьИзЛокальногоКэшаФайловВЦиклеПродолжить(Результат, ПараметрыВыполнения) Экспорт - - // Завершение операций с файлом. - Если ПараметрыВыполнения.ИмяФайлаСПутем <> "" Тогда - ФайлНаДиске = Новый Файл(ПараметрыВыполнения.ИмяФайлаСПутем); - Если НЕ ФайлНаДиске.Существует() Тогда - УдалитьПоСсылке(ПараметрыВыполнения.Ссылка); - КонецЕсли; - Иначе - УдалитьПоСсылке(ПараметрыВыполнения.Ссылка); - КонецЕсли; - - // Продолжение цикла. - ПараметрыВыполнения.АсинхронныйДиалог.Открыт = Ложь; - ПараметрыВыполнения.Индекс = ПараметрыВыполнения.Индекс + 1; - УдалитьИзЛокальногоКэшаФайловВЦикле(ПараметрыВыполнения); - -КонецПроцедуры - -&НаКлиенте -Процедура ОткрытьКарточкуВыполнить() - - СтрокаТаблицы = Элементы.Список.ТекущиеДанные; - Если СтрокаТаблицы = Неопределено Тогда - Возврат; - КонецЕсли; - - ПоказатьЗначение(, СтрокаТаблицы.Файл); - -КонецПроцедуры - -&НаСервере -Функция СписокВРегистре() - - УстановитьПривилегированныйРежим(Истина); - - СписокЗначений = Новый Массив; - ТекущийПользователь = Пользователи.АвторизованныйПользователь(); - - // Для каждой нашей записи находим запись в регистре сведений - оттуда берем поле Версия и Редактирует. - ЗапросВРегистр = Новый Запрос; - ЗапросВРегистр.УстановитьПараметр("Пользователь", ТекущийПользователь); - ЗапросВРегистр.Текст = - "ВЫБРАТЬ - | ФайлыВРабочемКаталоге.Файл КАК Ссылка, - | ФайлыВРабочемКаталоге.НаЧтение КАК НаЧтение, - | ФайлыВРабочемКаталоге.Размер КАК Размер, - | ФайлыВРабочемКаталоге.Путь КАК Путь, - | ФайлыВРабочемКаталоге.Файл.ДатаМодификацииУниверсальная КАК ДатаМодификацииУниверсальная, - | ФайлыВРабочемКаталоге.Файл.Наименование КАК ПолноеНаименование, - | ФайлыВРабочемКаталоге.Файл.ИндексКартинки КАК ИндексКартинки, - | ФайлыВРабочемКаталоге.Файл.Редактирует КАК Редактирует, - | ФайлыВРабочемКаталоге.Файл КАК Файл - |ИЗ - | РегистрСведений.ФайлыВРабочемКаталоге КАК ФайлыВРабочемКаталоге - |ГДЕ - | ФайлыВРабочемКаталоге.Пользователь = &Пользователь - | И ФайлыВРабочемКаталоге.ВРабочемКаталогеВладельца = ЛОЖЬ"; - - РезультатЗапроса = ЗапросВРегистр.Выполнить(); - - Если НЕ РезультатЗапроса.Пустой() Тогда - Выборка = РезультатЗапроса.Выбрать(); - - Пока Выборка.Следующий() Цикл - Запись = Новый Структура; - Запись.Вставить("ДатаМодификацииУниверсальная", Выборка.ДатаМодификацииУниверсальная); - Запись.Вставить("ПолноеНаименование", Выборка.ПолноеНаименование); - Запись.Вставить("ИндексКартинки", Выборка.ИндексКартинки); - Запись.Вставить("Размер", Выборка.Размер); - Запись.Вставить("Ссылка", Выборка.Ссылка); - Запись.Вставить("Редактирует", Выборка.Редактирует); - Запись.Вставить("НаЧтение", Выборка.НаЧтение); - Запись.Вставить("ЧастичныйПуть", Выборка.Путь); - // Это справочник версий файлов. - Если ОбщегоНазначения.ЕстьРеквизитОбъекта("РодительскаяВерсия", Метаданные.НайтиПоТипу(ТипЗнч(Выборка.Ссылка))) Тогда - Запись.Вставить("Файл", Выборка.Ссылка.Владелец); - Иначе - Запись.Вставить("Файл", Выборка.Ссылка); - КонецЕсли; - СписокЗначений.Добавить(Запись); - КонецЦикла; - КонецЕсли; - - Возврат СписокЗначений; - -КонецФункции - -&НаСервереБезКонтекста -Функция ФайлЗанят(Ссылка) - - Запрос = Новый Запрос; - Запрос.УстановитьПараметр("Ссылка", Ссылка); - - ИмяСправочникаХранения = Метаданные.НайтиПоТипу(ТипЗнч(Ссылка)).Имя; - - Если ИмяСправочникаХранения = "ВерсииФайлов" Или СтрЗаканчиваетсяНа(ИмяСправочникаХранения, "ВерсииПрисоединенныхФайлов") Тогда - Запрос.Текст = - "ВЫБРАТЬ ПЕРВЫЕ 1 - | ИСТИНА КАК ЗначениеИстина - |ИЗ - | Справочник." + ИмяСправочникаХранения + " КАК ВерсииФайлов - |ГДЕ - | ВерсииФайлов.Ссылка = &Ссылка - | И ВерсииФайлов.Владелец.Редактирует <> ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка)"; - Иначе - Запрос.Текст = - "ВЫБРАТЬ ПЕРВЫЕ 1 - | ИСТИНА КАК ЗначениеИстина - |ИЗ - | Справочник." + ИмяСправочникаХранения + " КАК Файлы - |ГДЕ - | Файлы.Ссылка = &Ссылка - | И Файлы.Редактирует <> ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка)"; - КонецЕсли; - - Возврат НЕ Запрос.Выполнить().Пустой(); - -КонецФункции - -#КонецОбласти diff --git a/SSL/src/DataProcessors/РаботаСФайлами/Forms/ФормаВозвратаФайла/Help/ru.html b/SSL/src/DataProcessors/РаботаСФайлами/Forms/ФормаВозвратаФайла/Help/ru.html index 06b01529b..b60272aef 100644 --- a/SSL/src/DataProcessors/РаботаСФайлами/Forms/ФормаВозвратаФайла/Help/ru.html +++ b/SSL/src/DataProcessors/РаботаСФайлами/Forms/ФормаВозвратаФайла/Help/ru.html @@ -1,15 +1,19 @@

    Предназначена для сохранения версии файла.

    -

    Выводится после завершения редактирования файла при выполнении команд Сохранить изменения или Закончить редактирование и создании версии файла в списках: Файлы, Присоединенные файлы, Редактируемые файлы, список занятых файлов при завершении работы, Файлы в основном рабочем каталоге.

    +

    Выводится после завершения редактирования файла при выполнении команд Сохранить изменения или Закончить редактирование и создании версии файла в списках: Файлы, Присоединенные файлы, Редактируемые файлы, список занятых файлов при завершении работы.

    Сохранение версии

    • Программа выводит имя сохраняемого файла под заголовком окна.
      -
    • +
    • +
    • В поле Комментарий к версии можно написать краткий комментарий, характеризующий внесенные Вами изменения в файл. 
      -
    • +
    • +
    • Если флажок Создать новую версию не установлен, то при обновлении в хранилище новая версия запишется поверх предыдущей. Рекомендуется создавать версии, т.к. в случае порчи файла при редактировании можно вернуться к более ранней неиспорченной версии. По умолчанию флажок включен. Изменить настройку можно с помощью флажка Хранить версии в карточке файла или при загрузке файлов (папок).
      -
    • +
    • +
    • Для подтверждения нажмите Сохранить.

    Просмотреть список версий файла можно по соответствующей команде на панели навигации карточки файла.

    См. также:

    \ No newline at end of file + +
  • Работа с формами.
  • \ No newline at end of file diff --git a/SSL/src/DataProcessors/РаботаСФайлами/Forms/ФормаВыбораРежимаОткрытия/Form.form b/SSL/src/DataProcessors/РаботаСФайлами/Forms/ФормаВыбораРежимаОткрытия/Form.form index 24b76cdf3..1b63bc4d7 100644 --- a/SSL/src/DataProcessors/РаботаСФайлами/Forms/ФормаВыбораРежимаОткрытия/Form.form +++ b/SSL/src/DataProcessors/РаботаСФайлами/Forms/ФормаВыбораРежимаОткрытия/Form.form @@ -331,6 +331,22 @@ true + + КакОткрыватьСохраненныйВариант + 3 + + Number + + 10 + + + + true + + + true + + ОткрытьФайл diff --git a/SSL/src/DataProcessors/РаботаСФайлами/Forms/ФормаВыбораРежимаОткрытия/Module.bsl b/SSL/src/DataProcessors/РаботаСФайлами/Forms/ФормаВыбораРежимаОткрытия/Module.bsl index 3ab72300b..4f3efa8e4 100644 --- a/SSL/src/DataProcessors/РаботаСФайлами/Forms/ФормаВыбораРежимаОткрытия/Module.bsl +++ b/SSL/src/DataProcessors/РаботаСФайлами/Forms/ФормаВыбораРежимаОткрытия/Module.bsl @@ -16,6 +16,12 @@ ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиФормы.Верх; КонецЕсли; + ВариантОткрытияФайла = РаботаСФайлами.НастройкиРаботыСФайлами().ВариантОткрытияФайла; + Если ВариантОткрытияФайла = "Редактировать" Тогда + КакОткрывать = 1; + КонецЕсли; + КакОткрыватьСохраненныйВариант = КакОткрывать; + КонецПроцедуры #КонецОбласти @@ -25,9 +31,16 @@ &НаКлиенте Процедура ОткрытьФайл(Команда) + Если КакОткрыватьСохраненныйВариант <> КакОткрывать Тогда + РежимОткрытия = ?(КакОткрывать = 1, "Редактировать", "Открыть"); + ОбщегоНазначенияВызовСервера.ХранилищеОбщихНастроекСохранить( + "НастройкиОткрытияФайлов", "ВариантОткрытияФайла", РежимОткрытия,,, Истина); + КонецЕсли; + Если БольшеНеСпрашивать = Истина Тогда ОбщегоНазначенияВызовСервера.ХранилищеОбщихНастроекСохранить( "НастройкиОткрытияФайлов", "СпрашиватьРежимРедактированияПриОткрытииФайла", Ложь,,, Истина); + ОбновитьПовторноИспользуемыеЗначения(); КонецЕсли; diff --git a/SSL/src/DataProcessors/РаботаСФайлами/Forms/ФормаЗавершениеРедактирования/Form.form b/SSL/src/DataProcessors/РаботаСФайлами/Forms/ФормаЗавершениеРедактирования/Form.form index 5b32cecb3..631e93623 100644 --- a/SSL/src/DataProcessors/РаботаСФайлами/Forms/ФормаЗавершениеРедактирования/Form.form +++ b/SSL/src/DataProcessors/РаботаСФайлами/Forms/ФормаЗавершениеРедактирования/Form.form @@ -385,45 +385,6 @@ <footerHorizontalAlign>Left</footerHorizontalAlign> <extInfo xsi:type="form:CheckBoxFieldExtInfo"/> </items> - <items xsi:type="form:FormField"> - <name>УдалитьФайлыИзОсновногоКаталога</name> - <id>65</id> - <visible>true</visible> - <enabled>true</enabled> - <userVisible> - <common>true</common> - </userVisible> - <dataPath xsi:type="form:DataPath"> - <segments>УдалитьФайлыИзОсновногоКаталога</segments> - </dataPath> - <titleLocation>Right</titleLocation> - <toolTipRepresentation>Button</toolTipRepresentation> - <extendedTooltip> - <name>УдалитьФайлыИзОсновногоКаталогаРасширеннаяПодсказка</name> - <id>67</id> - <title> - <key>ru</key> - <value>Если установлен флажок, то после помещения файла в программу его копия удаляется на компьютере. Используйте эту настройку для экономии места на жестком диске или в целях повышения безопасности.</value> - - Label - true - true - - Left - -
    - - УдалитьФайлыИзОсновногоКаталогаКонтекстноеМеню - 66 - true - - CheckBoxField - Enter - true - Left - true - - ОсновнаяКоманднаяПанель 1 @@ -737,23 +698,6 @@ true - - УдалитьФайлыИзОсновногоКаталога - - <key>ru</key> - <value>Удалить копии файлов на компьютере</value> - - 15 - - Boolean - - - true - - - true - - ЗакончитьРедактирование diff --git a/SSL/src/DataProcessors/РаботаСФайлами/Forms/ФормаЗавершениеРедактирования/Module.bsl b/SSL/src/DataProcessors/РаботаСФайлами/Forms/ФормаЗавершениеРедактирования/Module.bsl index 072d714d2..6474af4ed 100644 --- a/SSL/src/DataProcessors/РаботаСФайлами/Forms/ФормаЗавершениеРедактирования/Module.bsl +++ b/SSL/src/DataProcessors/РаботаСФайлами/Forms/ФормаЗавершениеРедактирования/Module.bsl @@ -22,10 +22,6 @@ Элементы.ХранитьВерсии.Видимость = ВозможностьСоздаватьВерсииФайлов; - ПерсональныеНастройкиРаботыСФайлами = РаботаСФайлами.НастройкиРаботыСФайлами(); - Элементы.УдалитьФайлыИзОсновногоКаталога.Видимость = ПерсональныеНастройкиРаботыСФайлами.ПодтверждатьПриУдаленииИзЛокальногоКэшаФайлов; - УдалитьФайлыИзОсновногоКаталога = ПерсональныеНастройкиРаботыСФайлами.УдалятьФайлИзЛокальногоКэшаФайловПриЗавершенииРедактирования; - КонецПроцедуры &НаКлиенте @@ -67,8 +63,6 @@ ПараметрыОбновленияФайлов.Вставить("Редактирует", Редактирует); ПараметрыОбновленияФайлов.Вставить("КомментарийКВерсии", Комментарий); ПараметрыОбновленияФайлов.Вставить("ПоказыватьОповещение", Ложь); - ПараметрыОбновленияФайлов.Вставить("УдалятьФайлИзЛокальногоКэшаФайловПриЗавершенииРедактирования2", УдалитьФайлыИзОсновногоКаталога); - РаботаСФайламиСлужебныйКлиент.ЗакончитьРедактированиеПоСсылкамСОповещением(ПараметрыОбновленияФайлов); Закрыть(); КонецПроцедуры diff --git a/SSL/src/DataProcessors/РаботаСФайлами/Forms/ФормаИмпортаПапки/Form.form b/SSL/src/DataProcessors/РаботаСФайлами/Forms/ФормаИмпортаПапки/Form.form index 99da8d0a1..f78554589 100644 --- a/SSL/src/DataProcessors/РаботаСФайлами/Forms/ФормаИмпортаПапки/Form.form +++ b/SSL/src/DataProcessors/РаботаСФайлами/Forms/ФормаИмпортаПапки/Form.form @@ -9,7 +9,7 @@ <id>23</id> <title> <key>ru</key> - <value>Каталог на диске</value> + <value>Папка с файлами</value> true true @@ -672,7 +672,7 @@ 1 ru - Загрузить папку + Загрузить папку с файлами в программу true diff --git a/SSL/src/DataProcessors/РаботаСФайлами/Forms/ФормаИмпортаПапки/Module.bsl b/SSL/src/DataProcessors/РаботаСФайлами/Forms/ФормаИмпортаПапки/Module.bsl index 918dcf5f4..b598c23a9 100644 --- a/SSL/src/DataProcessors/РаботаСФайлами/Forms/ФормаИмпортаПапки/Module.bsl +++ b/SSL/src/DataProcessors/РаботаСФайлами/Forms/ФормаИмпортаПапки/Module.bsl @@ -77,7 +77,7 @@ Если ПустаяСтрока(Каталог) Тогда ОбщегоНазначенияКлиент.СообщитьПользователю( - НСтр("ru = 'Не выбран каталог для импорта.'"), , "Каталог"); + НСтр("ru = 'Не выбрана папка для импорта.'"), , "Каталог"); Возврат; КонецЕсли; diff --git a/SSL/src/DataProcessors/РаботаСФайлами/Forms/ФормаЭкспортаПапки/Form.form b/SSL/src/DataProcessors/РаботаСФайлами/Forms/ФормаЭкспортаПапки/Form.form index f586f244e..11b804a8e 100644 --- a/SSL/src/DataProcessors/РаботаСФайлами/Forms/ФормаЭкспортаПапки/Form.form +++ b/SSL/src/DataProcessors/РаботаСФайлами/Forms/ФормаЭкспортаПапки/Form.form @@ -466,7 +466,7 @@ 1 ru - Сохранить папку + Сохранить папку с файлами на компьютер true diff --git a/SSL/src/DataProcessors/РаботаСФайлами/Forms/ФормаЭкспортаПапки/Module.bsl b/SSL/src/DataProcessors/РаботаСФайлами/Forms/ФормаЭкспортаПапки/Module.bsl index 26fb1ab45..4a93766cf 100644 --- a/SSL/src/DataProcessors/РаботаСФайлами/Forms/ФормаЭкспортаПапки/Module.bsl +++ b/SSL/src/DataProcessors/РаботаСФайлами/Forms/ФормаЭкспортаПапки/Module.bsl @@ -163,9 +163,9 @@ | Файлы.Расширение КАК Расширение, | Файлы.Размер КАК Размер, | Файлы.ДатаМодификацииУниверсальная КАК ДатаМодификацииУниверсальная, - | Файлы.Ссылка, - | Файлы.ПометкаУдаления, - | Файлы.Зашифрован + | Файлы.Ссылка КАК Ссылка, + | Файлы.ПометкаУдаления КАК ПометкаУдаления, + | Файлы.Зашифрован КАК Зашифрован |ИЗ | Справочник.Файлы КАК Файлы |ГДЕ @@ -212,14 +212,17 @@ // Рекурсивная функция, которая собственно и выгружает файлы на локальный диск. // // Параметры: -// ОбработчикРезультата - ОписаниеОповещения, Структура, Неопределено - Описание процедуры, принимающей результат +// ОбработчикРезультата - ОписаниеОповещения +// - Структура +// - Неопределено - описание процедуры, принимающей результат // работы метода. -// ТаблицаФайлов - ДанныеФормыДерево, ДанныеФормыЭлементДерева - дерево значений с выгружаемыми файлами. +// ТаблицаФайлов - ДанныеФормыДерево +// - ДанныеФормыЭлементДерева - дерево значений с выгружаемыми файлами. // БазовыйКаталогСохранения - Строка - строка с именем папки, в которую сохраняются файлы. // В ней воссоздается структура папок (как в дереве файлов) // при необходимости. // РодительскаяПапка - СправочникСсылка.ПапкиФайлов - что сохраняем. -// ОбщиеПараметры - Структура - +// ОбщиеПараметры - Структура: // * ДляВсехФайлов - Булево - // Истина: пользователь выбрал действие при перезаписи файла и // установил флажок "Для всех". Больше вопросов не задаем. @@ -234,7 +237,7 @@ // .Прервать - прервать выгрузку. // // Возвращаемое значение: -// Структура - Результат. +// Структура: // * Успех - Булево - Истина - можно продолжать выгрузку / выгрузка завершена успешно. // Ложь - действие завершено с ошибками / выгрузка завершена с ошибками. // @@ -248,6 +251,26 @@ ОбщиеПараметры.Вставить("ЕщеНеВстретилиВыгружаемуюПапку", Истина); КонецЕсли; + ПараметрыВыполнения = ПараметрыВыполнения( + ОбработчикРезультата, + ТаблицаФайлов, + БазовыйКаталогСохранения, + РодительскаяПапка, + ОбщиеПараметры); + + ОбработчикЗавершения = Новый ОписаниеОповещения("ОбойтиДеревоФайлов2", ЭтотОбъект); + РаботаСФайламиСлужебныйКлиент.ЗарегистрироватьОбработчикЗавершения(ПараметрыВыполнения, ОбработчикЗавершения); + + // Переменные. + ПараметрыВыполнения.Вставить("ЗаписьФайла", Неопределено); + + // Запуск цикла. + ОбойтиДеревоФайловЗапускЦикла(ПараметрыВыполнения); +КонецПроцедуры + + +&НаКлиенте +Функция ПараметрыВыполнения(Знач ОбработчикРезультата, Знач ТаблицаФайлов, Знач БазовыйКаталогСохранения, Знач РодительскаяПапка, Знач ОбщиеПараметры) ПараметрыВыполнения = Новый Структура; ПараметрыВыполнения.Вставить("ОбработчикРезультата", ОбработчикРезультата); ПараметрыВыполнения.Вставить("ТаблицаФайлов", ТаблицаФайлов); @@ -263,16 +286,9 @@ ПараметрыВыполнения.Вставить("ВГраница", ПараметрыВыполнения.Элементы.Количество()-1); ПараметрыВыполнения.Вставить("Индекс", -1); ПараметрыВыполнения.Вставить("ТребуетсяЗапускЦикла", Истина); - - ОбработчикЗавершения = Новый ОписаниеОповещения("ОбойтиДеревоФайлов2", ЭтотОбъект); - РаботаСФайламиСлужебныйКлиент.ЗарегистрироватьОбработчикЗавершения(ПараметрыВыполнения, ОбработчикЗавершения); - - // Переменные. - ПараметрыВыполнения.Вставить("ЗаписьФайла", Неопределено); - - // Запуск цикла. - ОбойтиДеревоФайловЗапускЦикла(ПараметрыВыполнения); -КонецПроцедуры + Возврат ПараметрыВыполнения +КонецФункции + &НаКлиенте Процедура ОбойтиДеревоФайловЗапускЦикла(ПараметрыВыполнения) @@ -649,7 +665,7 @@ Попытка ПолучаемыеФайлы = Новый Массив; ПередаваемыйФайл = Новый ОписаниеПередаваемогоФайла(); - ПолученныеФайлы = Новый Массив; + ПолученныеФайлы = Новый Массив;// Массив Из Файл ПередаваемыйФайл.Хранение = АдресФайлаДляОткрытия; ПередаваемыйФайл.Имя = ПараметрыВыполнения.ПолноеИмяФайла; diff --git a/SSL/src/DataProcessors/РаботаСФайлами/РаботаСФайлами.mdo b/SSL/src/DataProcessors/РаботаСФайлами/РаботаСФайлами.mdo index 609117449..adb18d0e1 100644 --- a/SSL/src/DataProcessors/РаботаСФайлами/РаботаСФайлами.mdo +++ b/SSL/src/DataProcessors/РаботаСФайлами/РаботаСФайлами.mdo @@ -199,21 +199,6 @@ PersonalComputer MobileDevice - - ФайлыВОсновномРабочемКаталоге - - ru - Файлы в основном рабочем каталоге - - true - - - ru - - - PersonalComputer - MobileDevice - ФормаВыбораРежимаОткрытия diff --git a/SSL/src/DataProcessors/РасширенныйВводКонтактнойИнформации/Forms/ВводАдреса/Form.form b/SSL/src/DataProcessors/РасширенныйВводКонтактнойИнформации/Forms/ВводАдреса/Form.form index c5cbc7547..300e2ee99 100644 --- a/SSL/src/DataProcessors/РасширенныйВводКонтактнойИнформации/Forms/ВводАдреса/Form.form +++ b/SSL/src/DataProcessors/РасширенныйВводКонтактнойИнформации/Forms/ВводАдреса/Form.form @@ -4816,6 +4816,12 @@ + + ТолькоПросмотр + + Boolean + + diff --git a/SSL/src/DataProcessors/РасширенныйВводКонтактнойИнформации/Forms/ВводАдреса/Module.bsl b/SSL/src/DataProcessors/РасширенныйВводКонтактнойИнформации/Forms/ВводАдреса/Module.bsl index 3ea00398f..96c2dd814 100644 --- a/SSL/src/DataProcessors/РасширенныйВводКонтактнойИнформации/Forms/ВводАдреса/Module.bsl +++ b/SSL/src/DataProcessors/РасширенныйВводКонтактнойИнформации/Forms/ВводАдреса/Module.bsl @@ -127,7 +127,6 @@ КонецЕсли; Страна = ОсновнаяСтрана; - НаселенныйПунктДетально.Country = Строка(Страна); ИначеЕсли МеждународныйФорматАдреса Тогда @@ -142,6 +141,7 @@ Элементы.СтраницаТипАдреса.ТекущаяСтраница = Элементы.СтраницаДругойАдрес; КонецЕсли; + НаселенныйПунктДетально.Country = НаименованиеСтраны(Страна, МеждународныйФорматАдреса); Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда Элементы.ГруппаИнформационныеСообщения.Видимость = Ложь; @@ -152,7 +152,7 @@ элементы.ФормаОтмена.Видимость = Ложь; КонецЕсли; - ОпределитьОтображениеЭлементовНаФорме(); + ОпределитьОтображениеЭлементовНаФорме(Параметры.ТолькоПросмотр); Если Не ЕстьПравоЗагружатьКлассификатор Тогда Элементы.ИнформацияОЗагрузкеАдресныеСведений.Заголовок = НСтр("ru = 'Для автоподбора и проверки адресов обратитесь к администратору для загрузки адресных сведений.'"); @@ -317,9 +317,9 @@ КонецПроцедуры // Параметры: -// Результат - Структура - где: -// * Индекс - Строка - -// ДополнительныеПараметры - Произвольный - +// Результат - Структура: +// * Индекс - Строка +// ДополнительныеПараметры - Произвольный // &НаКлиенте Процедура ПослеВыбораАдресаПоИндексу(Результат, ДополнительныеПараметры) Экспорт @@ -1045,7 +1045,9 @@ НаселенныйПунктДетально.Value = ПредставлениеАдреса; НаселенныйПунктДетально.AddressType = УправлениеКонтактнойИнформациейКлиентСервер.АдресВСвободнойФорме(); НаселенныйПунктДетально.Comment = Комментарий; - НаселенныйПунктДетально.Country = Строка(Страна); + + НаселенныйПунктДетально.Country = НаименованиеСтраны(Страна, + ОписаниеВидаКонтактнойИнформации(ЭтотОбъект).МеждународныйФорматАдреса); Если Элементы.СтранаВСвободнойФорме.Доступность Тогда Элементы.СтранаВСвободнойФорме.Видимость = Не ВидКонтактнойИнформации.ТолькоНациональныйАдрес; @@ -1148,7 +1150,7 @@ КонецПроцедуры // Параметры: -// Команда - КомандаФормы - +// Команда - КомандаФормы // &НаКлиенте Процедура Подключаемый_ДобавитьСтроениеИлиПомещение(Команда) @@ -1173,11 +1175,11 @@ Если НайденныеСтроки[0].Тип = "Помещение" Тогда Значение = ?(НайденныеСтроки[0].Значение <> НСтр("ru = 'Другое'"), НайденныеСтроки[0].Значение, ""); - Apartments = НаселенныйПунктДетально.Apartments; // Массив - Apartments.Добавить(ЗначениеСтроенияИлиПомещения(Значение, ЭтотОбъект[ИмяТекущего])); + ПомещенияАдреса = НаселенныйПунктДетально.Apartments; // Массив + ПомещенияАдреса.Добавить(ЗначениеСтроенияИлиПомещения(Значение, ЭтотОбъект[ИмяТекущего])); Иначе - Buildings = НаселенныйПунктДетально.Buildings; // Массив - Buildings.Добавить(ЗначениеСтроенияИлиПомещения(НайденныеСтроки[0].Значение, ЭтотОбъект[ИмяТекущего])); + ЗданияАдреса = НаселенныйПунктДетально.Buildings; // Массив + ЗданияАдреса.Добавить(ЗначениеСтроенияИлиПомещения(НайденныеСтроки[0].Значение, ЭтотОбъект[ИмяТекущего])); КонецЕсли; ОбновитьМенюДобавленияСтроенийИПомещений(); @@ -1409,10 +1411,10 @@ КонецПроцедуры // Возвращаемое значение: -// Структура - Описание: -// * Наименование - Строка - -// * Сокращение - Строка - -// * Представление - Строка - +// Структура: +// * Наименование - Строка +// * Сокращение - Строка +// * Представление - Строка // &НаКлиенте Функция ОписаниеСведенийАдреса() @@ -1474,9 +1476,12 @@ &НаКлиенте Процедура УдалитьСтрануИзПредставления() + НаименованиеСтраны = ВРег(НаименованиеСтраны(Страна, + ОписаниеВидаКонтактнойИнформации(ЭтотОбъект).МеждународныйФорматАдреса)); + ПредставлениеАдреса = СокрЛП(ПредставлениеАдреса); - Если СтрНачинаетсяС(ВРег(ПредставлениеАдреса), ВРег(Страна)) Тогда - Позиция = СтрДлина(Страна) + 1; + Если СтрНачинаетсяС(ВРег(ПредставлениеАдреса), НаименованиеСтраны) Тогда + Позиция = СтрДлина(НаименованиеСтраны) + 1; Позиция = ?(Сред(ПредставлениеАдреса, Позиция, 1) = ",", Позиция + 1, Позиция); ПредставлениеАдреса = СокрЛП(Сред(ПредставлениеАдреса, Позиция)); КонецЕсли; @@ -1819,7 +1824,7 @@ Значение, ВидКИ); КонецЕсли; - Результат.ДанныеВыбора.Вставить("АдресВВидеГиперссылки", Контекст.ВидКонтактнойИнформации.ВидРедактирования = "Диалог"); + Результат.ДанныеВыбора.Вставить("ВВидеГиперссылки", Контекст.ВидКонтактнойИнформации.ВидРедактирования = "Диалог"); // Подавляем перенос строк в возвращаемом отдельно представлении. Результат.ДанныеВыбора.Представление = СокрЛП(СтрЗаменить(Результат.ДанныеВыбора.Представление, Символы.ПС, " ")); @@ -1932,9 +1937,9 @@ Если МеждународныйФорматАдреса Тогда НаселенныйПунктДетально.Country = ?(ЗначениеЗаполнено(СведенияОСтране.МеждународноеНаименование), - СведенияОСтране.МеждународноеНаименование, СведенияОСтране.Наименование); + СведенияОСтране.МеждународноеНаименование, ДанныеСтраныМира(СведенияОСтране).Наименование); Иначе - НаселенныйПунктДетально.Country = СведенияОСтране.Наименование; + НаселенныйПунктДетально.Country = ДанныеСтраныМира(СведенияОСтране).Наименование; КонецЕсли; Если ЭтоНациональныйАдрес Тогда @@ -2018,7 +2023,7 @@ КонецПроцедуры &НаСервере -Процедура ОпределитьОтображениеЭлементовНаФорме() +Процедура ОпределитьОтображениеЭлементовНаФорме(ТолькоПросмотр) // Разовые настройки отображения формы. Если Не ЕстьЗагруженныйКлассификатор Тогда @@ -2045,6 +2050,12 @@ КонецЕсли; + Если ТолькоПросмотр Тогда + Элементы.ГруппаКомандаДобавить.Видимость = Ложь; + Элементы.ДобавитьКомментарий.Доступность = Ложь; + Элементы.ФормаОчиститьАдрес.Доступность = Ложь; + КонецЕсли; + КонецПроцедуры &НаСервере @@ -2510,7 +2521,7 @@ КонецФункции // Параметры: -// Элемент - ПолеФормы - +// Элемент - ПолеФормы // &НаКлиенте Процедура Подключаемый_ТипСтроенияПриИзменении(Элемент) @@ -2549,7 +2560,7 @@ КонецПроцедуры // Параметры: -// Элемент - ПолеФормы - +// Элемент - ПолеФормы // &НаКлиенте Процедура Подключаемый_СтроениеПриИзменении(Элемент) @@ -2588,7 +2599,7 @@ КонецПроцедуры // Параметры: -// Элемент - ПолеФормы - +// Элемент - ПолеФормы // &НаКлиенте Процедура Подключаемый_ТипПомещенияПриИзменении(Элемент) @@ -2648,7 +2659,7 @@ КонецПроцедуры // Параметры: -// Элемент - ПолеФормы - +// Элемент - ПолеФормы // &НаКлиенте Процедура Подключаемый_ПомещениеПриИзменении(Элемент) @@ -2769,6 +2780,18 @@ Элементы.ГруппаОписаниеНедоступностиСервера.ТекущаяСтраница = Элементы.СообщениеОбОшибке; Элементы.ГруппаОписаниеНедоступностиСервера.Видимость = Истина; Элементы.СообщениеОбОшибке.Видимость = Истина; + + Для Каждого Элемент Из СписокОшибок Цикл + Если Элемент.ВариантАдреса.Количество() > 0 Тогда + ДополнительныеПараметры = Новый Структура("НовыйАдрес", Элемент.ВариантАдреса[0]); + Оповещение = Новый ОписаниеОповещения("ПослеВопросаПроЗаменуИсторическогоАдреса", ЭтотОбъект, ДополнительныеПараметры); + ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='%1 + |Обновить адрес?'"), Элемент.ТекстОшибки); + ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет); + Возврат; + КонецЕсли; + КонецЦикла; + // Сообщаем список с привязкой к полям. Для Каждого Элемент Из СписокОшибок Цикл ОбщегоНазначенияКлиент.СообщитьПользователю( @@ -2777,6 +2800,16 @@ КонецПроцедуры +&НаКлиенте +Процедура ПослеВопросаПроЗаменуИсторическогоАдреса(Результат, ДополнительныеПараметры) Экспорт + Если Результат = КодВозвратаДиалога.Да Тогда + ЗаполнитьЗначенияСвойств(НаселенныйПунктДетально, ДополнительныеПараметры.НовыйАдрес); + УстановитьЗначениеРеквизитовПоКонтактнойИнформации(НаселенныйПунктДетально); + ОбновитьПредставлениеАдреса(); + Модифицированность = Истина; + КонецЕсли; +КонецПроцедуры + &НаКлиенте Процедура ПослеВопросОбОбновление(Результат, ДополнительныеПараметры) Экспорт @@ -2792,19 +2825,7 @@ &НаКлиенте Процедура ОчиститьАдресКлиент() - Для каждого ЭлементАдреса Из НаселенныйПунктДетально Цикл - - Если СтрСравнить(ЭлементАдреса.Ключ, "type") = 0 Тогда - Продолжить; - ИначеЕсли СтрСравнить(ЭлементАдреса.Ключ, "buildings") = 0 ИЛИ СтрСравнить(ЭлементАдреса.Ключ, "apartments") = 0 Тогда - НаселенныйПунктДетально[ЭлементАдреса.Ключ] = Новый Массив; - Иначе - НаселенныйПунктДетально[ЭлементАдреса.Ключ] = ""; - КонецЕсли; - - КонецЦикла; - - НаселенныйПунктДетально.addressType = РаботаСАдресамиКлиентСервер.МуниципальныйАдрес(); + РаботаСАдресамиКлиент.ОчиститьАдрес(НаселенныйПунктДетально); ОтобразитьДополнительныеЗдания(); КонецПроцедуры @@ -3125,7 +3146,9 @@ // Возвращает первый элемент из списка. // // Параметры: -// СписокДанных - СписокЗначений, Массив, ПолеФормы. +// СписокДанных - СписокЗначений +// - Массив +// - ПолеФормы. // // Возвращаемое значение: // Произвольный - первый элемент. @@ -3268,8 +3291,9 @@ // Предлагает загрузить адресный классификатор. // // Параметры: -// Текст - Строка - Дополнительный текст предложения. -// Регион - Число, Строка - Код или название региона для загрузки. +// Текст - Строка - дополнительный текст предложения. +// Регион - Число +// - Строка - код или название региона для загрузки. // &НаКлиенте Процедура ПредложениеЗагрузкиКлассификатора(Знач Текст = "", Знач ДанныеОбАдресе = Неопределено) @@ -3429,7 +3453,7 @@ XDTOКонтактная = УправлениеКонтактнойИнформациейСлужебный.АдресXMLВXDTO(ЗначенияПолей, Параметры.Представление, ); Если Параметры.Свойство("Страна") И ЗначениеЗаполнено(Параметры.Страна) Тогда Если ТипЗнч(Параметры.Страна) = ТипЗнч(Справочники.СтраныМира.ПустаяСсылка()) Тогда - XDTOКонтактная.Состав.Страна = Параметры.Страна.Наименование; + XDTOКонтактная.Состав.Страна = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Параметры.Страна, "Наименование"); Иначе XDTOКонтактная.Состав.Страна = Строка(Параметры.Страна); КонецЕсли; @@ -3896,4 +3920,30 @@ Функция ОписаниеВидаКонтактнойИнформации(Форма) Возврат Форма.ВидКонтактнойИнформации; КонецФункции + +// Параметры: +// Страна - Структура +// Возвращаемое значение: +// см. УправлениеКонтактнойИнформацией.ДанныеСтраныМира +// +&НаКлиентеНаСервереБезКонтекста +Функция ДанныеСтраныМира(Страна) + Возврат Страна; +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция НаименованиеСтраны(Страна, МеждународныйФорматАдреса) + + СведенияОСтране = СведенияОСтране(Страна); + + НаименованиеСтраны = СведенияОСтране.Наименование; + Если МеждународныйФорматАдреса Тогда + Если ЗначениеЗаполнено(СведенияОСтране.МеждународноеНаименование) Тогда + НаименованиеСтраны = СведенияОСтране.МеждународноеНаименование; + КонецЕсли; + КонецЕсли; + Возврат НаименованиеСтраны; + +КонецФункции + #КонецОбласти \ No newline at end of file diff --git a/SSL/src/DataProcessors/РасширенныйВводКонтактнойИнформации/Forms/ВыборАдресаПоУровню/Module.bsl b/SSL/src/DataProcessors/РасширенныйВводКонтактнойИнформации/Forms/ВыборАдресаПоУровню/Module.bsl index 4b6efee91..22faaed3e 100644 --- a/SSL/src/DataProcessors/РасширенныйВводКонтактнойИнформации/Forms/ВыборАдресаПоУровню/Module.bsl +++ b/SSL/src/DataProcessors/РасширенныйВводКонтактнойИнформации/Forms/ВыборАдресаПоУровню/Module.bsl @@ -166,6 +166,7 @@ КонецЕсли; Результат.Муниципальный = РаботаСАдресамиКлиентСервер.ЭтоМуниципальныйАдрес(ТипАдреса); + Результат.ЗагруженныеДанные = Уровень = 1; ОповеститьОВыборе(Результат); @@ -184,6 +185,7 @@ Результат.Вставить("Муниципальный", Неопределено); Результат.Вставить("ПредлагатьЗагрузкуКлассификатора", Ложь); Результат.Вставить("Родитель", Родитель); + Результат.Вставить("ЗагруженныеДанные", Ложь); Возврат Результат; КонецФункции diff --git a/SSL/src/DataProcessors/РасширенныйВводКонтактнойИнформации/Forms/НаселенныйПунктАдреса/Module.bsl b/SSL/src/DataProcessors/РасширенныйВводКонтактнойИнформации/Forms/НаселенныйПунктАдреса/Module.bsl index b6ae1f269..978f2c60f 100644 --- a/SSL/src/DataProcessors/РасширенныйВводКонтактнойИнформации/Forms/НаселенныйПунктАдреса/Module.bsl +++ b/SSL/src/DataProcessors/РасширенныйВводКонтактнойИнформации/Forms/НаселенныйПунктАдреса/Module.bsl @@ -189,7 +189,9 @@ &НаКлиенте Процедура СубъектРФОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) + ОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка); + КонецПроцедуры &НаКлиенте @@ -489,18 +491,22 @@ КонецЕсли; СведенияОбАдресе = Новый Структура(); - СведенияОбАдресе.Вставить("Муниципальный", РаботаСАдресамиКлиентСервер.ЭтоМуниципальныйАдрес(ТипАдреса)); + СведенияОбАдресе.Вставить("ЗагруженныеДанные", Неопределено); + СведенияОбАдресе.Вставить("Идентификатор", Неопределено); + СведенияОбАдресе.Вставить("Муниципальный", РаботаСАдресамиКлиентСервер.ЭтоМуниципальныйАдрес(ТипАдреса)); + Если ТипЗнч(ВыбранноеЗначение) = Тип("Структура") Тогда + Если ВыбранноеЗначение.Отказ Или ПустаяСтрока(ВыбранноеЗначение.Идентификатор) Тогда Возврат; КонецЕсли; - Идентификатор = ВыбранноеЗначение.Идентификатор; - + Идентификатор = ВыбранноеЗначение.Идентификатор; + СведенияОбАдресе.ЗагруженныеДанные = ВыбранноеЗначение.ЗагруженныеДанные; Иначе Идентификатор = ВыбранноеЗначение; КонецЕсли; - СведенияОбАдресе.Вставить("Идентификатор", Идентификатор); + СведенияОбАдресе.Идентификатор = Идентификатор; СтандартнаяОбработка = Ложь; НаселенныйПунктДетально = НаселенныйПунктДетальноПоИдентификатору(СведенияОбАдресе); @@ -518,8 +524,9 @@ // Предлагает загрузить адресный классификатор. // // Параметры: -// Текст - Строка - Дополнительный текст предложения. -// Регион - Число, Строка - Код или название региона для загрузки. +// Текст - Строка - дополнительный текст предложения. +// Регион - Число +// - Строка - код или название региона для загрузки. // &НаКлиенте Процедура ПредложениеЗагрузкиКлассификатора(Знач Текст = "", Знач Регион = Неопределено) diff --git a/SSL/src/DataProcessors/РасширенныйВводКонтактнойИнформации/Forms/НастройкиАдреса/Form.form b/SSL/src/DataProcessors/РасширенныйВводКонтактнойИнформации/Forms/НастройкиАдреса/Form.form index a5e369e80..ffb13792b 100644 --- a/SSL/src/DataProcessors/РасширенныйВводКонтактнойИнформации/Forms/НастройкиАдреса/Form.form +++ b/SSL/src/DataProcessors/РасширенныйВводКонтактнойИнформации/Forms/НастройкиАдреса/Form.form @@ -268,6 +268,78 @@ Auto + + ГруппаИсправлениеАдресов + 41 + + АвтоматическиИсправлятьУстаревшиеАдреса + 38 + true + true + + true + + + ИсправлятьУстаревшиеАдреса + + Right + + ru + Выполняет по расписанию проверку и исправление устаревших адресов + + Button + + АвтоматическиИсправлятьУстаревшиеАдресаРасширеннаяПодсказка + 40 + Label + true + true + + Left + + + + АвтоматическиИсправлятьУстаревшиеАдресаКонтекстноеМеню + 39 + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Исправление адресов</value> + + + ГруппаИсправлениеАдресовРасширеннаяПодсказка + 42 + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Auto + NormalSeparation + true + true + Auto + Auto + + ГруппаКоманднаяПанель 30 @@ -479,6 +551,23 @@ true + + ИсправлятьУстаревшиеАдреса + + <key>ru</key> + <value>Автоматически исправлять устаревшие адреса</value> + + 4 + + Boolean + + + true + + + true + + ОК diff --git a/SSL/src/DataProcessors/РасширенныйВводКонтактнойИнформации/Forms/НастройкиАдреса/Module.bsl b/SSL/src/DataProcessors/РасширенныйВводКонтактнойИнформации/Forms/НастройкиАдреса/Module.bsl index 833273fe1..08c581a59 100644 --- a/SSL/src/DataProcessors/РасширенныйВводКонтактнойИнформации/Forms/НастройкиАдреса/Module.bsl +++ b/SSL/src/DataProcessors/РасширенныйВводКонтактнойИнформации/Forms/НастройкиАдреса/Module.bsl @@ -67,6 +67,7 @@ Результат.Вставить("ПроверятьКорректность"); Результат.Вставить("СкрыватьНеактуальныеАдреса"); Результат.Вставить("УказыватьОКТМО"); + Результат.Вставить("ИсправлятьУстаревшиеАдреса"); Возврат Результат; КонецФункции diff --git a/SSL/src/DataProcessors/РасширенныйВводКонтактнойИнформации/ManagerModule.bsl b/SSL/src/DataProcessors/РасширенныйВводКонтактнойИнформации/ManagerModule.bsl index a1de58810..4956f5b79 100644 --- a/SSL/src/DataProcessors/РасширенныйВводКонтактнойИнформации/ManagerModule.bsl +++ b/SSL/src/DataProcessors/РасширенныйВводКонтактнойИнформации/ManagerModule.bsl @@ -36,7 +36,8 @@ // Возвращает имя формы для редактирования типа контактной информации. // // Параметры: -// ВидИнформации - ПеречислениеСсылка.ТипыКонтактнойИнформации, СправочникСсылка.ВидыКонтактнойИнформации - +// ВидИнформации - ПеречислениеСсылка.ТипыКонтактнойИнформации +// - СправочникСсылка.ВидыКонтактнойИнформации - // запрашиваемый тип. // // Возвращаемое значение: @@ -83,13 +84,13 @@ // Проверка доступности поставщика - локальной базы или сервиса. Запрос версии. // // Возвращаемое значение: -// Структура - описание состояния. -// * Отказ - Булево - Поставщик не доступен. -// * ПодробноеПредставлениеОшибки - Строка - Описание ошибки, если поставщик недоступен. Неопределено, если Отказ +// Структура: +// * Отказ - Булево - поставщик не доступен. +// * ПодробноеПредставлениеОшибки - Строка - описание ошибки, если поставщик недоступен. Неопределено, если Отказ // = Ложь. -// * КраткоеПредставлениеОшибки - Строка - Описание ошибки, если поставщик недоступен. Неопределено, если Отказ +// * КраткоеПредставлениеОшибки - Строка - описание ошибки, если поставщик недоступен. Неопределено, если Отказ // = Ложь. -// * Данные - Строка - Описание версии поставщика. +// * Данные - Строка - описание версии поставщика. // Функция ВерсияПоставщикаДанныхКлассификатора() @@ -115,7 +116,8 @@ // Возвращает наименование региона по его коду. // // Параметры: -// Код - Строка, Число - код региона. +// Код - Строка +// - Число - код региона. // // Возвращаемое значение: // Строка - полное наименование региона с сокращением. @@ -137,9 +139,9 @@ // классификатора. // // Параметры: -// Идентификатор - УникальныйИдентификатор - Идентификатор объекта. Если указан, то структура +// Идентификатор - УникальныйИдентификатор - идентификатор объекта. Если указан, то структура // заполняется данными для этого объекта. -// ВариантКлассификатора - Строка - Требуемый вид классификатора. +// ВариантКлассификатора - Строка - требуемый вид классификатора. // // Возвращаемое значение: // Структура - описание населенного пункта. @@ -156,7 +158,6 @@ Возврат Неопределено; КонецЕсли; - // Заполняем данные по идентификатору. МодульАдресныйКлассификаторСлужебный = ОбщегоНазначения.ОбщийМодуль("АдресныйКлассификаторСлужебный"); АдресныеСведения = МодульАдресныйКлассификаторСлужебный.АктуальныеАдресныеСведения(СведенияОбАдресномОбъекте); Если НЕ ЗначениеЗаполнено(АдресныеСведения.Данные) ИЛИ АдресныеСведения.Отказ = Истина Тогда @@ -244,25 +245,26 @@ // Возвращает данные классификатора по почтовому индексу. // // Параметры: -// Индекс - Строка, Число - почтовый индекс, для которого необходимо получать данные. +// Индекс - Строка +// - Число - почтовый индекс, для которого необходимо получать данные. // -// ДополнительныеПараметры - Структура - Описывает настройки поиска. Состоит из необязательных полей: -// * СкрыватьНеактуальные - Булево - Флаг исключения из выборки неактуальных адресов. По умолчанию Ложь. +// ДополнительныеПараметры - Структура - описывает настройки поиска. Состоит из необязательных полей: +// * СкрыватьНеактуальные - Булево - флаг исключения из выборки неактуальных адресов. По умолчанию Ложь. // * ФорматАдреса - Строка - тип используемого классификатора. // // Возвращаемое значение: // Структура - найденные варианты. Содержит поля: -// * Отказ - Булево - Поставщик не доступен. -// * ПодробноеПредставлениеОшибки - Строка - Описание ошибки, если поставщик недоступен. Неопределено, если Отказ +// * Отказ - Булево - поставщик не доступен. +// * ПодробноеПредставлениеОшибки - Строка - описание ошибки, если поставщик недоступен. Неопределено, если Отказ // = Ложь. -// * КраткоеПредставлениеОшибки - Строка - Описание ошибки, если поставщик недоступен. Неопределено, если Отказ +// * КраткоеПредставлениеОшибки - Строка - описание ошибки, если поставщик недоступен. Неопределено, если Отказ // = Ложь. -// * ОбщаяЧастьПредставления - Строка - Общая часть представлений адреса. -// * Данные - ТаблицаЗначений - Содержит данные для выбора. Колонки: -// ** Неактуален - Булево - Флаг неактуальности строки данных. -// ** Идентификатор - УникальныйИдентификатор - Код классификатора для поиска +// * ОбщаяЧастьПредставления - Строка - общая часть представлений адреса. +// * Данные - ТаблицаЗначений - содержит данные для выбора. Колонки: +// ** Неактуален - Булево - флаг неактуальности строки данных. +// ** Идентификатор - УникальныйИдентификатор - код классификатора для поиска // вариантов по индексу. -// ** Представление - Строка - Представление варианта. +// ** Представление - Строка - представление варианта. // Функция АдресаКлассификатораПоПочтовомуИндексу(Знач Индекс, Знач ДополнительныеПараметры) Экспорт @@ -285,32 +287,32 @@ // Возвращает данные классификатора поля выбора по уровню. // // Параметры: -// Родитель - УникальныйИдентификатор - Родительский объект. -// Уровень - Число - Требуемый уровень данных. 1-7, 90, 91 - адресные объекты, -1 +// Родитель - УникальныйИдентификатор - родительский объект. +// Уровень - Число - требуемый уровень данных. 1-7, 90, 91 - адресные объекты, -1 // - ориентиры. -// ДополнительныеПараметры - Структура - Описание настройке поиска. Поля: -// * СкрыватьНеактуальные - Булево - Флаг исключения из выборки неактуальных адресов. По умолчанию +// ДополнительныеПараметры - Структура - описание настройке поиска. Поля: +// * СкрыватьНеактуальные - Булево - флаг исключения из выборки неактуальных адресов. По умолчанию // Ложь. // * ФорматАдреса - Строка - тип используемого классификатора. // -// * РазмерПорции - Число - Необязательный размер порции возвращаемых данных. Если не указано +// * РазмерПорции - Число - необязательный размер порции возвращаемых данных. Если не указано // или 0, то возвращает все элементы. -// * ПерваяЗапись - УникальныйИдентификатор - Элемент, с которого начинается порция данных. Сам элемент не +// * ПерваяЗапись - УникальныйИдентификатор - элемент, с которого начинается порция данных. Сам элемент не // входит в выборку. -// * Сортировка - Строка - Направление сортировки для порции. +// * Сортировка - Строка - направление сортировки для порции. // // Возвращаемое значение: // Структура - найденные варианты. Содержит поля: -// * Отказ - Булево - Поставщик не доступен. -// * ПодробноеПредставлениеОшибки - Строка - Описание ошибки, если поставщик недоступен. Неопределено, если Отказ +// * Отказ - Булево - поставщик не доступен. +// * ПодробноеПредставлениеОшибки - Строка - описание ошибки, если поставщик недоступен. Неопределено, если Отказ // = Ложь. -// * КраткоеПредставлениеОшибки - Строка - Описание ошибки, если поставщик недоступен. Неопределено, если Отказ +// * КраткоеПредставлениеОшибки - Строка - описание ошибки, если поставщик недоступен. Неопределено, если Отказ // = Ложь. -// * Заголовок - Строка - Строка с предложением выбора. -// * Данные - ТаблицаЗначений - Содержит данные для выбора. Колонки: -// ** Неактуален - Булево - Флаг неактуальности строки данных. -// ** Идентификатор - УникальныйИдентификатор - Код классификатора для поиска вариантов по индексу. -// ** Представление - Строка - Представление варианта. +// * Заголовок - Строка - строка с предложением выбора. +// * Данные - ТаблицаЗначений - содержит данные для выбора. Колонки: +// ** Неактуален - Булево - флаг неактуальности строки данных. +// ** Идентификатор - УникальныйИдентификатор - код классификатора для поиска вариантов по индексу. +// ** Представление - Строка - представление варианта. // Функция АдресаДляИнтерактивногоВыбора(Родитель, Уровень, ТипАдреса, ДополнительныеПараметры) Экспорт @@ -331,18 +333,18 @@ // // Параметры: // Текст - Строка - текст автоподбора. -// ДополнительныеПараметры - Структура - Описывает настройки поиска. Состоит из необязательных полей: -// * СкрыватьНеактуальные - Булево - Флаг исключения из выборки неактуальных адресов. По умолчанию +// ДополнительныеПараметры - Структура - описывает настройки поиска. Состоит из необязательных полей: +// * СкрыватьНеактуальные - Булево - флаг исключения из выборки неактуальных адресов. По умолчанию // Ложь. // * ФорматАдреса - Строка - тип используемого классификатора. // // Возвращаемое значение: -// * Отказ - Булево - Поставщик не доступен. -// * ПодробноеПредставлениеОшибки - Строка - Описание ошибки, если поставщик недоступен. Неопределено, если Отказ +// * Отказ - Булево - поставщик не доступен. +// * ПодробноеПредставлениеОшибки - Строка - описание ошибки, если поставщик недоступен. Неопределено, если Отказ // = Ложь. -// * КраткоеПредставлениеОшибки - Строка - Описание ошибки, если поставщик недоступен. Неопределено, если Отказ +// * КраткоеПредставлениеОшибки - Строка - описание ошибки, если поставщик недоступен. Неопределено, если Отказ // = Ложь. -// * ОбщаяЧастьПредставления - Строка - Общая часть представлений адреса. +// * ОбщаяЧастьПредставления - Строка - общая часть представлений адреса. // * Данные - СписокЗначений - результат для автоподбора. // Функция СписокАвтоподбораНаселенногоПункта(Текст, ДополнительныеПараметры) Экспорт @@ -364,16 +366,16 @@ // по иерархическому представлению младший-старший. // // Параметры: -// Текст - Строка - Текст автоподбора. -// ПараметрыАвтоподбора - Структура - Описывает настройки поиска. Состоит из необязательных полей: -// * Идентификатор - УникальныйИдентификатор - Родительский адресный объект. -// * ТипАдреса - Строка - Тип используемого адреса. +// Текст - Строка - текст автоподбора. +// ПараметрыАвтоподбора - Структура - описывает настройки поиска. Состоит из необязательных полей: +// * Идентификатор - УникальныйИдентификатор - родительский адресный объект. +// * ТипАдреса - Строка - тип используемого адреса. // // Возвращаемое значение: -// * Отказ - Булево - Поставщик не доступен. -// * ПодробноеПредставлениеОшибки - Строка - Описание ошибки, если поставщик недоступен. Неопределено, если Отказ +// * Отказ - Булево - поставщик не доступен. +// * ПодробноеПредставлениеОшибки - Строка - описание ошибки, если поставщик недоступен. Неопределено, если Отказ // = Ложь. -// * КраткоеПредставлениеОшибки - Строка - Описание ошибки, если поставщик недоступен. Неопределено, если Отказ +// * КраткоеПредставлениеОшибки - Строка - описание ошибки, если поставщик недоступен. Неопределено, если Отказ // = Ложь. // * Данные - СписокЗначений - результат для автоподбора. // @@ -396,8 +398,8 @@ // Возвращает список значение содержащий номера домов для автоподбора. // // Параметры: -// ИдентификаторАдресногоОбъекта - УникальныйИдентификатор - Населенный пункт или улица. -// СтрокаПоиска - Строка - Текст автоподбора. +// ИдентификаторАдресногоОбъекта - УникальныйИдентификатор - населенный пункт или улица. +// СтрокаПоиска - Строка - текст автоподбора. // Возвращаемое значение: // СписокЗначений - результат для автоподбора. // @@ -419,11 +421,11 @@ // Возвращает список домов по идентификатору адресного объекта, поиск по подобию. // // Параметры: -// ИдентификаторАдресногоОбъекта - УникальныйИдентификатор - Родительский объект. -// СтрокаПоиска - Строка - Текст, отбора в списке домов. +// ИдентификаторАдресногоОбъекта - УникальныйИдентификатор - родительский объект. +// СтрокаПоиска - Строка - текст, отбора в списке домов. // // Возвращаемое значение: -// ТаблицаЗначений - найденные варианты. +// см. АдресныйКлассификаторСлужебный.КонструкторСпискаДомов // Функция СписокДомов(ИдентификаторАдресногоОбъекта, СтрокаПоиска = "", ПорцияПриПоиске = 20) Экспорт @@ -593,8 +595,10 @@ // Представление с приоритетами. Если Не ПустаяСтрока(Представление) Тогда Результат.Представление = Представление; - Иначе + ИначеЕсли ЗначениеЗаполнено(ПолеПредставления) Тогда Результат.Представление = ПолеПредставления; + Иначе + Результат.Представление = РаботаСАдресамиКлиентСервер.ПредставлениеАдреса(Результат, Истина, ) КонецЕсли; Адрес.Состав = ?(АдресРоссийский, НациональныйАдрес, Результат.Представление); @@ -645,8 +649,8 @@ Функция СформироватьАдресПоПредставлению(Представление) Адрес = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияПоПредставлению(Представление, Перечисления.ТипыКонтактнойИнформации.Адрес); - XML = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияВXML(Адрес, Представление, Перечисления.ТипыКонтактнойИнформации.Адрес); - Возврат УправлениеКонтактнойИнформациейСлужебный.АдресXMLВXDTO(XML, Представление, Перечисления.ТипыКонтактнойИнформации.Адрес); + АдресВXML = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияВXML(Адрес, Представление, Перечисления.ТипыКонтактнойИнформации.Адрес); + Возврат УправлениеКонтактнойИнформациейСлужебный.АдресXMLВXDTO(АдресВXML, Представление, Перечисления.ТипыКонтактнойИнформации.Адрес); КонецФункции @@ -702,7 +706,7 @@ // Возвращает извлеченный XDTO российского адреса или Неопределено для адреса иностранного. // // Параметры: -// ОбъектИнформации - ОбъектXDTO - Контактная информация или XDTO адреса. +// ОбъектИнформации - ОбъектXDTO - контактная информация или XDTO адреса. // // Возвращаемое значение: // ОбъектXDTO - российский адрес. @@ -736,7 +740,7 @@ // Читает и устанавливает почтовый индекс адреса. // // Параметры: -// XDTOАдрес - ОбъектXDTO - Контактная информация или XDTO адреса. +// XDTOАдрес - ОбъектXDTO - контактная информация или XDTO адреса. // НовоеЗначение - Строка - устанавливаемое значение. // // Возвращаемое значение: @@ -763,7 +767,8 @@ ЗаписьИндекса = АдресРФ.Получить(РаботаСАдресами.XPathПочтовогоИндекса()); Если ЗаписьИндекса = Неопределено Тогда - ЗаписьИндекса = АдресРФ.ДопАдрЭл.Добавить(ФабрикаXDTO.Создать(XDTOАдрес.ДопАдрЭл.ВладеющееСвойство.Тип)); + ДопАдрЭл = АдресРФ.ДопАдрЭл; // СписокXDTO + ЗаписьИндекса = ДопАдрЭл.Добавить(ФабрикаXDTO.Создать(XDTOАдрес.ДопАдрЭл.ВладеющееСвойство.Тип)); ЗаписьИндекса.ТипАдрЭл = КодИндекса; КонецЕсли; @@ -774,7 +779,7 @@ // Читает и устанавливает район адреса. // // Параметры: -// XDTOАдрес - ОбъектXDTO - Контактная информация или XDTO адреса. +// XDTOАдрес - ОбъектXDTO - контактная информация или XDTO адреса. // НовоеЗначение - Строка - устанавливаемое значение. // // Возвращаемое значение: @@ -838,11 +843,12 @@ // Читает дополнительные элемент адреса по его пути. // // Параметры: -// XDTOАдрес - ОбъектXDTO - Контактная информация или XDTO адреса. -// XPathЭлемента - Строка - Путь к элементу. +// XDTOАдрес - ОбъектXDTO - контактная информация или XDTO адреса. +// XPathЭлемента - Строка - путь к элементу. // // Возвращаемое значение: // Строка - значение элемента. +// Функция ДополнительныйЭлементАдреса(XDTOАдрес, XPathЭлемента) АдресРФ = НациональныйАдрес(XDTOАдрес); @@ -864,17 +870,17 @@ ВариантыДополнительногоЭлементаАдреса = ВариантыДополнительногоЭлементаАдреса(); - XPath = ""; + ПутьXPath = ""; ДополнительныйЭлементАдреса = Неопределено; Для каждого ВариантДополнительныйЭлементАдреса Из ВариантыДополнительногоЭлементаАдреса Цикл - XPath = РаботаСАдресами.XPathДополнительногоОбъектаАдресации(90, ВариантДополнительныйЭлементАдреса); - ДополнительныйЭлементАдреса = ДополнительныйЭлементАдреса(АдресРФ, XPath); + ПутьXPath = РаботаСАдресами.XPathДополнительногоОбъектаАдресации(90, ВариантДополнительныйЭлементАдреса); + ДополнительныйЭлементАдреса = ДополнительныйЭлементАдреса(АдресРФ, ПутьXPath); Если ДополнительныйЭлементАдреса <> Неопределено Тогда Прервать; КонецЕсли; КонецЦикла; - Возврат Новый Структура("Значение, XPath", ДополнительныйЭлементАдреса, XPath); + Возврат Новый Структура("Значение, XPath", ДополнительныйЭлементАдреса, ПутьXPath); КонецФункции @@ -905,23 +911,23 @@ // Читает и устанавливает здания и помещения адреса. // // Параметры: -// XDTOАдрес - ОбъектXDTO - Контактная информация или XDTO адреса. +// XDTOАдрес - ОбъектXDTO - контактная информация или XDTO адреса. // НовоеЗначение - Структура - устанавливаемое значение. Ожидаются поля: -// * Здания - ТаблицаЗначений с колонками: +// * Здания - ТаблицаЗначений: // ** Тип - Строка - тип внутреннего классификатора дополнительных адресных // объектов. Например "Корпус". // ** Значение - Строка - значение номера дома, квартиры и т.п. -// * Помещения - ТаблицаЗначений с колонками, аналогично полю Здание. +// * Помещения - ТаблицаЗначений - с колонками, аналогично полю Здание. // // Возвращаемое значение: // Структура - текущие данные. Содержит поля: -// * Здания - ТаблицаЗначений с колонками: +// * Здания - ТаблицаЗначений: // ** Тип - Строка - тип внутреннего классификатора дополнительных адресных объектов. // Например "Корпус". // ** Сокращение - Строка - сокращение названия для использования в представлении. // ** Значение - Строка - значение номера дома, квартиры и т.п. // ** ПутьXPath - Строка - путь к значению объекта. -// * Помещения - ТаблицаЗначений с колонками, аналогично полю Здание. +// * Помещения - ТаблицаЗначений - с колонками, аналогично полю Здание. // Функция ЗданияИПомещенияАдреса(XDTOАдрес, НовоеЗначение = Неопределено) Экспорт @@ -1132,8 +1138,11 @@ // Возвращает перечень ошибок для адреса. // // Параметры: -// Адрес - ОбъектXDTO, СписокЗначений, Строка - описание адреса. -// ВидИнформации - СправочникСсылка.ВидыКонтактнойИнформации, Структура - ссылка на соответствующий вид +// Адрес - ОбъектXDTO +// - СписокЗначений +// - Строка - описание адреса. +// ВидИнформации - СправочникСсылка.ВидыКонтактнойИнформации +// - Структура - ссылка на соответствующий вид // контактной информации. // РезультатГруппами - Булево - если указана Истина, то будет возвращен массив групп ошибок, иначе - список // значений. @@ -1141,19 +1150,19 @@ // Возвращаемое значение: // СписокЗначений - если параметр РезультатГруппами равен Ложь. Внутри представление - текст ошибки, значение - // XPath ошибочного поля. -// Массив - если параметр РезультатГруппами равен Истина. Содержит структуры с полями: -// ** ТипОшибки - Строка - наименование группы (типа) ошибки. Возможные значения: +// Массив из Структура - если параметр РезультатГруппами равен Истина. Содержит структуры с полями: +// * ТипОшибки - Строка - наименование группы (типа) ошибки. Возможные значения. // "ПредставлениеНеСоответствуетНаборуПолей" // "НеЗаполненыОбязательныеПоля" // "НеУказаныСокращенияПолей" // "НедопустимыеСимволыПолей" // "НеСоответствуетДлинаПолей" // "ОшибкиПоКлассификатору". -// ** Сообщение - Строка - подробный текст ошибки. -// ** Поля - Массив - содержит структуры описания ошибочных полей. Каждая структура имеет +// * Сообщение - Строка - подробный текст ошибки. +// * Поля - Массив - содержит структуры описания ошибочных полей. Каждая структура имеет // реквизиты: -// *** ИмяПоля - Строка - внутренний идентификатор ошибочного элемента адреса. -// *** Сообщение - Строка - подробный текст ошибки для этого поля. +// ** ИмяПоля - Строка - внутренний идентификатор ошибочного элемента адреса. +// ** Сообщение - Строка - подробный текст ошибки для этого поля. // Функция ОшибкиЗаполненияАдресаXDTO(Знач Адрес, ВидИнформации) Экспорт @@ -1243,7 +1252,7 @@ ОшибкиКлассификатора = Новый СписокЗначений; ЗаполнитьОшибкиАдресаПоКлассификатору(Адрес, ФлагиПроверки, ОшибкиКлассификатора); Для Каждого ЭлементСписка Из ОшибкиКлассификатора Цикл - ДанныеОшибки = ЭлементСписка.Значение; + ДанныеОшибки = ЭлементСписка.Значение; // см. ОписаниеОшибкиПроверки СписокОшибок.Добавить(ПоляОшибки(ЭлементСписка.Представление, ДанныеОшибки.АдресПроверен, ДанныеОшибки.ПутьXPath, ДанныеОшибки.Варианты)); КонецЦикла; @@ -1254,6 +1263,10 @@ Функция ПоляОшибки(ТекстОшибки, АдресПроверен, ИмяПоля = "Представление", ВариантАдреса = Неопределено) + Если ВариантАдреса = Неопределено Тогда + ВариантАдреса = Новый Массив; + КонецЕсли; + Результат = Новый Структура; Результат.Вставить("ТекстОшибки", ТекстОшибки); Результат.Вставить("АдресПроверен", АдресПроверен); @@ -1276,7 +1289,8 @@ // Общие проверки на корректность адреса. // // Параметры: -// ДанныеАдреса - Строка, СписокЗначений - XML, XDTO с данными адреса РФ. +// ДанныеАдреса - Строка +// - СписокЗначений - XML, XDTO с данными адреса РФ. // ВидИнформации - СправочникСсылка.ВидыКонтактнойИнформации - ссылка на соответствующий вид контактной информации. // // Возвращаемое значение: @@ -1287,8 +1301,8 @@ // "НеУказаныСокращенияПолей" // "НедопустимыеСимволыПолей" // "НеСоответствуетДлинаПолей". -// * Сообщение - Строка - Подробный текст ошибки. -// * Поля - Массив структур с полями: +// * Сообщение - Строка - подробный текст ошибки. +// * Поля - массив структур с полями: // ** ИмяПоля - внутренний идентификатор ошибочного поля. // ** Сообщение - подробный текст ошибки для поля. // @@ -1465,7 +1479,9 @@ МодульАдресныйКлассификаторСлужебный = ОбщегоНазначения.ОбщийМодуль("АдресныйКлассификаторСлужебный"); РезультатыАнализа = МодульАдресныйКлассификаторСлужебный.РезультатПроверкиАдресовПоКлассификатору(Адрес); Если РезультатыАнализа.Отказ Тогда - Результат.Добавить(Новый Структура("ПутьXPath, СущностьПоля, АдресПроверен", "/",, Ложь), РезультатыАнализа.КраткоеПредставлениеОшибки); + ОписаниеОшибкиПроверки = ОписаниеОшибкиПроверки(); + ОписаниеОшибкиПроверки.ПутьXPath = "/"; + Результат.Добавить(ОписаниеОшибкиПроверки, РезультатыАнализа.КраткоеПредставлениеОшибки); Возврат; КонецЕсли; @@ -1476,13 +1492,13 @@ Ключ = ОшибкаАдреса.Ключ; Если Обработанные[Ключ] = Неопределено Тогда - ОписаниеОшибки = Новый Структура; - ОписаниеОшибки.Вставить("ПутьXPath", Ключ); - ОписаниеОшибки.Вставить("СущностьПоля", Неопределено); - ОписаниеОшибки.Вставить("АдресПроверен", РезультатПроверки.АдресПроверен); - ОписаниеОшибки.Вставить("Варианты", РезультатПроверки.Варианты); + ОписаниеОшибкиПроверки = ОписаниеОшибкиПроверки(); + ОписаниеОшибкиПроверки.ПутьXPath = Ключ; + ОписаниеОшибкиПроверки.СущностьПоля = Неопределено; + ОписаниеОшибкиПроверки.АдресПроверен = РезультатПроверки.АдресПроверен; + ОписаниеОшибкиПроверки.Варианты = РезультатПроверки.Варианты; - Результат.Добавить(ОписаниеОшибки, СокрЛП(ОшибкаАдреса.Текст + Символы.ПС + ОшибкаАдреса.Подсказка)); + Результат.Добавить(ОписаниеОшибкиПроверки, СокрЛП(ОшибкаАдреса.Текст + Символы.ПС + ОшибкаАдреса.Подсказка)); Обработанные[Ключ] = Истина; КонецЕсли; КонецЦикла; @@ -1490,6 +1506,24 @@ КонецПроцедуры +// Возвращаемое значение: +// Структура: +// * Варианты - Массив +// * АдресПроверен - Булево +// * СущностьПоля - Неопределено +// * ПутьXPath - Строка +// +Функция ОписаниеОшибкиПроверки() + + ОписаниеОшибки = Новый Структура; + ОписаниеОшибки.Вставить("ПутьXPath", ""); + ОписаниеОшибки.Вставить("СущностьПоля", Неопределено); + ОписаниеОшибки.Вставить("АдресПроверен", Ложь); + ОписаниеОшибки.Вставить("Варианты", Новый Массив); + Возврат ОписаниеОшибки; + +КонецФункции + Функция СтруктураОшибкиПоставщикаАдресногоКлассификатора(ИсходнаяСтруктура = Неопределено) Если ИсходнаяСтруктура = Неопределено Тогда @@ -1516,8 +1550,8 @@ // Возвращает список значение содержащий номера земельных участков для автоподбора. // // Параметры: -// ИдентификаторАдресногоОбъекта - УникальныйИдентификатор - Населенный пункт или улица. -// СтрокаПоиска - Строка - Текст автоподбора. +// ИдентификаторАдресногоОбъекта - УникальныйИдентификатор - населенный пункт или улица. +// СтрокаПоиска - Строка - текст автоподбора. // Возвращаемое значение: // СписокЗначений - результат для автоподбора. // @@ -1543,8 +1577,8 @@ // Возвращает список земельных участков по идентификатору адресного объекта, поиск по подобию. // // Параметры: -// ИдентификаторАдресногоОбъекта - УникальныйИдентификатор - Родительский объект. -// СтрокаПоиска - Строка - Текст, отбора в списке домов. +// ИдентификаторАдресногоОбъекта - УникальныйИдентификатор - родительский объект. +// СтрокаПоиска - Строка - текст, отбора в списке домов. // // Возвращаемое значение: // ТаблицаЗначений - найденные варианты. @@ -1568,12 +1602,13 @@ // Возвращает поля контактной информации. // // Параметры: -// XDTOКонтактнаяИнформация - ОбъектXDTO, Строка - контактная информация или строка XML. +// XDTOКонтактнаяИнформация - ОбъектXDTO +// - Строка - контактная информация или строка XML. // СтарыйСоставПолей - Булево - необязательный флаг того, что из состава полей будут исключены // поля, отсутствующие в версиях БСП младше 2.1.3. // // Возвращаемое значение: -// Структура - данные. Содержит поля: +// Структура: // * Представление - Строка - представление адреса. // * ЗначенияПолей - СписокЗначений - значения. Состав значений для адреса: // ** Страна - Строка - текстовое представление страны. @@ -1633,12 +1668,13 @@ // Преобразует адрес формата XDTO в старый список полей типа СписокЗначений. // // Параметры: -// XDTOАдрес - ОбъектXDTO, Строка - контактная информация или строка XML. +// XDTOАдрес - ОбъектXDTO +// - Строка - контактная информация или строка XML. // РасширенныйСоставПолей - Булево - необязательный флаг того, что состав полей будет сокращен для совместимости // с обменом БСП 2.1.2. // // Возвращаемое значение: -// СписокЗначений - +// СписокЗначений // Функция АдресВСтарыйСписокПолей(XDTOАдрес, РасширенныйСоставПолей = Истина) Список = Новый СписокЗначений; @@ -1802,7 +1838,7 @@ // Возвращает отдельно сокращение от значения. // // Параметры: -// Текст - Строка - Полное наименования. +// Текст - Строка - полное наименования. // // Возвращаемое значение: // Строка - выделенное сокращение. @@ -1840,4 +1876,4 @@ #КонецОбласти -#КонецЕсли +#КонецЕсли \ No newline at end of file diff --git a/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/Module.bsl b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/Module.bsl index cca540a87..449f0fb80 100644 --- a/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/Module.bsl +++ b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/Module.bsl @@ -38,14 +38,16 @@ // СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки +// АПК:78-выкл дополнительная обработка + // Экспортный обработчик команд для подсистемы дополнительных отчетов и обработок. // // Параметры: -// ИдентификаторКоманды - Строка - Идентификатор команды для выполнения. -// ОбъектыНазначения - Массив - Ссылки для обработки. Здесь не используется, ожидается, что аналогичный параметр -// был передан и обработан при создании формы. -// СозданныеОбъекты - Массив - Возвращаемый массив ссылок на созданные объекты. -// В данной обработке не используется. +// ИдентификаторКоманды - Строка - идентификатор команды для выполнения. +// ОбъектыНазначения - Массив из ЛюбаяСсылка - ссылки для обработки. Здесь не используется, +// ожидается, что аналогичный параметр был передан и обработан при создании формы. +// СозданныеОбъекты - Массив из ЛюбаяСсылка - возвращаемый массив ссылок на созданные объекты. +// В данной обработке не используется. // &НаКлиенте Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения, СозданныеОбъекты) Экспорт @@ -65,6 +67,7 @@ КонецЕсли; КонецПроцедуры +// АПК:78-вкл // Конец СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки @@ -370,7 +373,7 @@ &НаКлиенте Процедура СписокСсылокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; - ТекущаяСсылка = Элемент.ТекущиеДанные.Ссылка; + ТекущаяСсылка = ТекущиеДанныеСпискаСсылок().Ссылка; Если Не ЗначениеЗаполнено(ТекущаяСсылка) Или Не ЗначениеЗаполнено(СписокСсылокИмяТаблицы) Тогда Возврат; @@ -508,17 +511,17 @@ &НаКлиенте Процедура ПоказатьРезультатВыгрузки(Команда) - ТекСтраница = Элементы.ВариантыСпискаОбъектов.ТекущаяСтраница; - Сериализация = Новый Массив; + ТекущаяСтраница = Элементы.ВариантыСпискаОбъектов.ТекущаяСтраница; + Результат = Новый Массив; - Если ТекСтраница = Элементы.СтраницаКонстанты Тогда + Если ТекущаяСтраница = Элементы.СтраницаКонстанты Тогда ЭлементФормы = Элементы.СписокКонстант; Для Каждого Строка Из ЭлементФормы.ВыделенныеСтроки Цикл ТекДанные = ЭлементФормы.ДанныеСтроки(Строка); - Сериализация.Добавить(Новый Структура("ФлагТипа, Данные", 1, ТекДанные.МетаПолноеИмя)); + Результат.Добавить(Новый Структура("ФлагТипа, Данные", 1, ТекДанные.МетаПолноеИмя)); КонецЦикла; - ИначеЕсли ТекСтраница = Элементы.СтраницаНаборЗаписей Тогда + ИначеЕсли ТекущаяСтраница = Элементы.СтраницаНаборЗаписей Тогда СписокИзмерений = МассивИменКлючейНабораЗаписей(СписокНаборовЗаписейИмяТаблицы); ЭлементФормы = Элементы.СписокНаборовЗаписей; Префикс = "СписокНаборовЗаписей"; @@ -528,14 +531,14 @@ Для Каждого Имя Из СписокИзмерений Цикл ТекДанные.Вставить(Имя, Данные[Префикс + Имя]); КонецЦикла; - Сериализация.Добавить(Новый Структура("ФлагТипа, Данные", 2, ТекДанные)); + Результат.Добавить(Новый Структура("ФлагТипа, Данные", 2, ТекДанные)); КонецЦикла; - ИначеЕсли ТекСтраница = Элементы.СтраницаСписокСсылок Тогда + ИначеЕсли ТекущаяСтраница = Элементы.СтраницаСписокСсылок Тогда ЭлементФормы = Элементы.СписокСсылок; Для Каждого Элемент Из ЭлементФормы.ВыделенныеСтроки Цикл - ТекДанные = ЭлементФормы.ДанныеСтроки(Элемент); - Сериализация.Добавить(Новый Структура("ФлагТипа, Данные", 3, ТекДанные.Ссылка)); + ТекДанные = ЭлементФормы.ДанныеСтроки(Элемент); // см. ТекущиеДанныеСпискаСсылок + Результат.Добавить(Новый Структура("ФлагТипа, Данные", 3, ТекДанные.Ссылка)); КонецЦикла; Иначе @@ -543,8 +546,8 @@ КонецЕсли; - Если Сериализация.Количество() > 0 Тогда - Текст = ТекстСериализации(Сериализация); + Если Результат.Количество() > 0 Тогда + Текст = ТекстСериализации(Результат); ЗаголовокТекста = НСтр("ru = 'Результат стандартной выгрузки (РИБ)'"); Текст.Показать(ЗаголовокТекста); КонецЕсли; @@ -872,11 +875,11 @@ КонецПроцедуры // Параметры: -// Ссылка - ПланОбменаСсылка - +// Ссылка - ПланОбменаСсылка // // Возвращаемое значение: // Структура - дополнительные параметры: -// * Ссылка - ПланОбменаСсылка - +// * Ссылка - ПланОбменаСсылка // &НаКлиенте Функция ДополнительныеПараметрыРедактированияНомераСообщения(Ссылка) @@ -885,7 +888,7 @@ &НаКлиенте Процедура РедактироватьНомерСообщенияСсылки() - ТекДанные = Элементы.СписокСсылок.ТекущиеДанные; + ТекДанные = ТекущиеДанныеСпискаСсылок(); Если ТекДанные = Неопределено Тогда Возврат; КонецЕсли; @@ -904,7 +907,7 @@ // Обработчик оповещения продолжения диалога. // // Параметры: -// НомерСообщения - Число - +// НомерСообщения - Число // ДополнительныеПараметры - см. ДополнительныеПараметрыРедактированияНомераСообщения // &НаКлиенте @@ -1040,7 +1043,6 @@ Предупреждением = Результаты.Всего <> Результаты.Успешно; Если Предупреждением Тогда - ОбновитьОтображениеДанных(); ПоказатьПредупреждение(, ТекстПредупреждения, , ЗаголовокПредупреждения); Иначе ПоказатьОповещениеПользователя(ЗаголовокПредупреждения, @@ -1188,7 +1190,7 @@ СписокУдаления = Новый Массив; Для Каждого Строка Из Элемент.ВыделенныеСтроки Цикл - Данные = Элемент.ДанныеСтроки(Строка); + Данные = Элемент.ДанныеСтроки(Строка); // см. ТекущиеДанныеСпискаСсылок СписокУдаления.Добавить(Данные.Ссылка); КонецЦикла; @@ -1544,11 +1546,11 @@ // Возвращаемое значение: // Структура - дополнительные параметры: -// * Действие - Булево - -// * ТаблицаФормы - ТаблицаФормы - -// * Данные - Произвольный - -// * ИмяТаблицы - Строка - -// * Ссылка - ЛюбаяСсылка - +// * Действие - Булево +// * ТаблицаФормы - ТаблицаФормы +// * Данные - Произвольный +// * ИмяТаблицы - Строка +// * Ссылка - ЛюбаяСсылка // &НаКлиенте Функция ДополнительныеПараметрыОбработкиВыбораДанных() @@ -1634,7 +1636,7 @@ // Обработчик оповещения продолжения диалога. // // Параметры: -// РезультатВопроса -КодВозвратаДиалога - +// РезультатВопроса -КодВозвратаДиалога // ДополнительныеПараметры - см. ДополнительныеПараметрыОбработкиВыбораДанных // &НаКлиенте @@ -1687,7 +1689,7 @@ ТекСтр = Элементы.ВариантыСпискаОбъектов.ТекущаяСтраница; Если ТекСтр = Элементы.СтраницаСписокСсылок Тогда - Данные = Элементы.СписокСсылок.ТекущиеДанные; + Данные = ТекущиеДанныеСпискаСсылок(); Если Данные <> Неопределено Тогда Возврат Данные.Ссылка; КонецЕсли; @@ -1715,6 +1717,19 @@ КонецФункции +// Возвращаемое значение: +// ДанныеФормыСтруктура - поля: +// * Ссылка - ЛюбаяСсылка +// * НомерСообщения - Число +// * НеВыгружалось - Булево +// +&НаКлиенте +Функция ТекущиеДанныеСпискаСсылок() + + Возврат Элементы.СписокСсылок.ТекущиеДанные; + +КонецФункции + &НаКлиенте Процедура ОткрытьФормуНастроекОбработки() ТекИмяФормы = ИмяЭтойФормы + "Форма.Настройки"; diff --git a/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/ObjectModule.bsl b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/ObjectModule.bsl index a41bbe084..2ac28abfd 100644 --- a/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/ObjectModule.bsl +++ b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/ObjectModule.bsl @@ -20,28 +20,32 @@ // план обмена -> узлы обмена. Служебные узлы выброшены. // // Параметры: -// ОбъектДанных - ЛюбаяСсылка, Структура - Ссылка или структура со значениями измерений набор записей. Для этих +// ОбъектДанных - ЛюбаяСсылка +// - Структура - ссылка или структура со значениями измерений набор записей. Для этих // данных которых анализируются узлы обмена. Если не указано, то для всех. -// ИмяТаблицы - Строка - Если ОбъектДанных - структура, то имя таблицы для набора записей. +// ИмяТаблицы - Строка - если ОбъектДанных - структура, то имя таблицы для набора записей. // // Возвращаемое значение: -// ДеревоЗначений - данные с колонками: -// * Наименование - Строка - Представление плана обмена или узла обмена. +// ДеревоЗначений: +// * Наименование - Строка - представление плана обмена или узла обмена. // * ИндексКартинки - Число - 1 = план обмена, 2 = узел , 3 = помеченный для удаления узел. -// * ИндексКартинкиАвторегистрация - Число - Если не указан параметр ОбъектДанных, то Неопределено. +// * ИндексКартинкиАвторегистрация - Число - если не указан параметр ОбъектДанных, то Неопределено. // Иначе: 0 = нет, 1 = запрещена, 2 = разрешена, Неопределено для // плана обмена. -// * ПланОбменаИмя - Строка - Имя плана обмена узла. -// * Ссылка - ПланОбменаСсылка - Ссылка узла, Неопределено для плана обмена. -// * Код - Число, Строка - Код узла, Неопределено для плана обмена. -// * НомерОтправленного - Число - Данные узла. -// * НомерПринятого - Число - Данные узла. -// * НомерСообщения - Число, NULL - Если указан объект, то номер сообщения для него, иначе NULL. -// * НеВыгружалось - Булево, NULL - Если указан объект, то флаг выгрузки, иначе NULL. -// * Пометка - Булево - Если указан объект, то 0 = нет регистрации, 1 - есть, иначе +// * ПланОбменаИмя - Строка - имя плана обмена узла. +// * Ссылка - ПланОбменаСсылка - ссылка узла, Неопределено для плана обмена. +// * Код - Число +// - Строка - код узла, Неопределено для плана обмена. +// * НомерОтправленного - Число - данные узла. +// * НомерПринятого - Число - данные узла. +// * НомерСообщения - Число +// - NULL - если указан объект, то номер сообщения для него, иначе NULL. +// * НеВыгружалось - Булево +// - NULL - если указан объект, то флаг выгрузки, иначе NULL. +// * Пометка - Булево - если указан объект, то 0 = нет регистрации, 1 - есть, иначе // всегда 0. // * ИсходнаяПометка - Булево - аналогично колонке "Пометка". -// * ИдентификаторСтроки - Число - Индекс добавленной строки (обход дерева сверху вниз слева +// * ИдентификаторСтроки - Число - индекс добавленной строки (обход дерева сверху вниз слева // направо). // Функция СформироватьДеревоУзлов(ОбъектДанных = Неопределено, ИмяТаблицы = Неопределено) Экспорт @@ -301,13 +305,16 @@ // Вычисляет количества изменений для объектов метаданных для узлов обмена. // // Параметры: -// СписокТаблиц - Массив - имена. Может быть коллекцией"ключ/значение" где "значение" - массивы имен. -// СписокУзлов - ПланОбменаСсылка, Массив - узлы. +// СписокТаблиц - Структура +// - Массив из Структура - имена. Может быть коллекцией "ключ/значение", +// где "значение" - массивы имен. +// СписокУзлов - ПланОбменаСсылка +// - Массив из ПланОбменаСсылка - узлы. // // Возвращаемое значение: -// ТаблицаЗначений - колонки: -// * МетаПолноеИмя - Строка - Полное имя метаданных, для которых рассчитываем количество. -// * УзелОбмена - ПланОбменаСсылка - Ссылка на узел обмена, для которого рассчитываем количество. +// ТаблицаЗначений: +// * МетаПолноеИмя - Строка - полное имя метаданных, для которых рассчитываем количество. +// * УзелОбмена - ПланОбменаСсылка - ссылка на узел обмена, для которого рассчитываем количество. // * КоличествоИзменений - Число - содержит общее количество изменений. // * КоличествоВыгруженных - Число - содержит количество выгруженных изменений. // * КоличествоНеВыгруженных - Число - содержит количество не выгруженных изменений. @@ -398,7 +405,7 @@ // Возвращает объект метаданных по его полному имени. Пустая строка обозначает конфигурацию. // // Параметры: -// ИмяМетаданных - Строка - Имя объекта метаданных, например "Справочник.Валюты" или "Константы". +// ИмяМетаданных - Строка - имя объекта метаданных, например "Справочник.Валюты" или "Константы". // // Возвращаемое значение: // ОбъектМетаданных - результат поиска. @@ -421,10 +428,12 @@ // Возвращает флаг регистрации объекта на узле. // // Параметры: -// Узел - ПланОбменаСсылка - Узел плана обмена для которого получаем информацию, -// ОбъектРегистрации - Строка, ЛюбаяСсылка, Структура - объект, для которого получаем информацию. +// Узел - ПланОбменаСсылка - узел плана обмена для которого получаем информацию, +// ОбъектРегистрации - Строка +// - ЛюбаяСсылка +// - Структура - объект, для которого получаем информацию. // Структура хранит значения изменений набора записей. -// ИмяТаблицы - Строка - Если ОбъектРегистрации - структура, то содержит имя таблицы для набора измерений. +// ИмяТаблицы - Строка - если ОбъектРегистрации - структура, то содержит имя таблицы для набора измерений. // // Возвращаемое значение: // Булево - результат регистрации. @@ -516,19 +525,21 @@ // Запускает изменение регистрации в соответствии с переданными параметрами. // Параметры: -// ПараметрыЗадания - Структура - Параметры для изменения регистрации +// ПараметрыЗадания - Структура - параметры для изменения регистрации: // * Команда - Булево - Истина, если надо добавлять, Ложь, если удалять. // * БезУчетаАвторегистрации - Булево - Истина, если не надо анализировать флаг авторегистрации. -// * Узел - ПланОбменаСсылка - Ссылка на узел плана обмена. -// * Данные - ЛюбаяСсылка, Строка, Структура - данные или массив таких данных. -// * ИмяТаблицы - Строка - Если Данные является структурой, то содержит имя таблицы. -// АдресХранилища - Произвольный - Адрес временного хранилища для сохранения результата при запуске в фоновом задании. +// * Узел - ПланОбменаСсылка - ссылка на узел плана обмена. +// * Данные - ЛюбаяСсылка +// - Строка +// - Структура - данные или массив таких данных. +// * ИмяТаблицы - Строка - если Данные является структурой, то содержит имя таблицы. +// АдресХранилища - Произвольный - адрес временного хранилища для сохранения результата при запуске в фоновом задании. // // Возвращаемое значение: -// Структура - результат операции: +// Структура: // * Всего - Число - общее число объектов. // * Успешно - Число - числом успешно обработанных объектов. -// * Команда - Значение входящего параметра Команда для упрощения обработки результатов. +// * Команда - значение входящего параметра Команда для упрощения обработки результатов. // Функция ВыполнитьИзменениеРегистрации(ПараметрыЗадания, АдресХранилища = Неопределено) Экспорт ИмяТаблицы = Неопределено; @@ -552,7 +563,7 @@ // Возвращает начало полного имени формы для открытия по переданному объекту. // // Параметры: -// ТекущийОбъект - Строка или ДинамическийСписок, для которого необходимо получить имя формы. +// ТекущийОбъект - Строка или ДинамическийСписок - для которого необходимо получить имя формы. // Возвращаемое значение: // Строка - полное имя формы. // @@ -572,7 +583,7 @@ // Рекурсивное обслуживание иерархических пометок с тремя состояниями в дереве. // // Параметры: -// ДанныеСтроки - ДанныеФормыЭлементДерева - Пометка хранится в числовой колонке "Пометка". +// ДанныеСтроки - ДанныеФормыЭлементДерева - пометка хранится в числовой колонке "Пометка". // Процедура ИзменениеПометки(ДанныеСтроки) Экспорт ДанныеСтроки.Пометка = ДанныеСтроки.Пометка % 2; @@ -583,7 +594,7 @@ // Рекурсивное обслуживание иерархических пометок с тремя состояниями в дереве. // // Параметры: -// ДанныеСтроки - ДанныеФормыЭлементДерева - Пометка хранится в числовой колонке "Пометка". +// ДанныеСтроки - ДанныеФормыЭлементДерева - пометка хранится в числовой колонке "Пометка". // Процедура ПроставитьПометкиВниз(ДанныеСтроки) Экспорт Значение = ДанныеСтроки.Пометка; @@ -596,7 +607,7 @@ // Рекурсивное обслуживание иерархических пометок с тремя состояниями в дереве. // // Параметры: -// ДанныеСтроки - ДанныеФормыЭлементДерева - Пометка хранится в числовой колонке "Пометка". +// ДанныеСтроки - ДанныеФормыЭлементДерева - пометка хранится в числовой колонке "Пометка". // Процедура ПроставитьПометкиВверх(ДанныеСтроки) Экспорт РодительСтроки = ДанныеСтроки.ПолучитьРодителя(); @@ -621,8 +632,8 @@ // Чтение реквизитов узла обмена. // // Параметры: -// Ссылка - ПланОбменаСсылка - Ссылка на узел обмена. -// Данные - Строка - Список имен реквизитов для чтения через запятую. +// Ссылка - ПланОбменаСсылка - ссылка на узел обмена. +// Данные - Строка - список имен реквизитов для чтения через запятую. // // Возвращаемое значение: // Структура - считанные данные. @@ -701,7 +712,7 @@ // Возвращает описание данных по имени таблицы/полному имени метаданных или метаданным. // // Параметры: -// ИмяТаблицыМетаданных - Строка - Имя таблицы, например "Справочник.Валюты". +// ИмяТаблицыМетаданных - Строка - имя таблицы, например "Справочник.Валюты". // // Возвращаемое значение: // Структура - описание данных в виде набора значений. Содержит следующие данные: @@ -887,15 +898,15 @@ // Возвращает таблицу, описывающую измерения для регистрации изменений набора данных. // // Параметры: -// ИмяТаблицы - Строка - Имя таблицы, например "РегистрСведений.КурсыВалют". -// ВсеИзмерения - Булево - Флаг того, что для регистра сведений получаем все измерения, а не +// ИмяТаблицы - Строка - имя таблицы, например "РегистрСведений.КурсыВалют". +// ВсеИзмерения - Булево - флаг того, что для регистра сведений получаем все измерения, а не // только основные и ведущие. // // Возвращаемое значение: -// ТаблицаЗначений - колонки: +// ТаблицаЗначений: // * Имя - Строка - имя измерения. // * ТипЗначения - ОписаниеТипов - типы. -// * Заголовок - Строка - Представление для измерения. +// * Заголовок - Строка - представление для измерения. // Функция ИзмеренияНабораЗаписей(ИмяТаблицы, ВсеИзмерения = Ложь) Экспорт @@ -984,10 +995,10 @@ // Модифицирует таблицу формы, добавляя туда колонки. // // Параметры: -// ТаблицаФормы - ЭлементФормы - Элемент, связанный с данными, в который будут добавлены колонки данных. -// СохранятьИмена - Строка - Список имен колонок, которые будут сохранены, через запятую. -// Добавлять - Массив - Структуры с описанием добавляемых колонок с атрибутами Имя, ТипЗначения, Заголовок. -// ГруппаКолонок - ЭлементФормы - Группа колонок, в которую происходит добавление. +// ТаблицаФормы - ЭлементФормы - элемент, связанный с данными, в который будут добавлены колонки данных. +// СохранятьИмена - Строка - список имен колонок, которые будут сохранены, через запятую. +// Добавлять - Массив - структуры с описанием добавляемых колонок с атрибутами Имя, ТипЗначения, Заголовок. +// ГруппаКолонок - ЭлементФормы - группа колонок, в которую происходит добавление. // Процедура ДобавитьКолонкиВТаблицуФормы(ТаблицаФормы, СохранятьИмена, Добавлять, ГруппаКолонок = Неопределено) Экспорт @@ -1110,6 +1121,7 @@ // Возвращает флаг того, что работа происходит в файловой базе. // Возвращаемое значение: // Булево - флаг того, что работа происходит в файловой базе. +// Функция ЭтоФайловаяБаза() Экспорт Возврат СтрНайти(СтрокаСоединенияИнформационнойБазы(), "File=") > 0; КонецФункции @@ -1238,7 +1250,7 @@ // Проверяем настройки на корректность, сбрасываем в случае нарушения. // // Параметры: -// КлючНастройки - Строка - Ключ проверяемой настройки. +// КлючНастройки - Строка - ключ проверяемой настройки. // Возвращаемое значение: // Структура - ключ - имя настройки. // Значение - описание ошибки или Неопределено. @@ -1279,15 +1291,17 @@ // Параметры: // Команда - Булево - Истина, если надо добавлять, Ложь, если удалять. // БезУчетаАвторегистрации - Булево - Истина, если не надо анализировать флаг авторегистрации. -// Узел - ПланОбменаСсылка - Ссылка на узел плана обмена. -// Данные - ЛюбаяСсылка, Строка, Структура - данные или массив таких данных. -// ИмяТаблицы - Строка - Если Данные является структурой, то содержит имя таблицы. +// Узел - ПланОбменаСсылка - ссылка на узел плана обмена. +// Данные - ЛюбаяСсылка +// - Строка +// - Структура - данные или массив таких данных. +// ИмяТаблицы - Строка - если Данные является структурой, то содержит имя таблицы. // // Возвращаемое значение: -// Структура - результат операции: +// Структура: // * Всего - Число - общее число объектов. // * Успешно - Число - числом успешно обработанных объектов. -// * Команда - Значение входящего параметра Команда для упрощения обработки результатов. +// * Команда - значение входящего параметра Команда для упрощения обработки результатов. // Функция ИзменитьРегистрациюНаСервере(Команда, БезУчетаАвторегистрации, Узел, Данные, ИмяТаблицы = Неопределено) Экспорт @@ -1513,7 +1527,7 @@ ИначеЕсли Характеристики.ЭтоНабор Тогда Для Каждого ИзмерениеРегистра Из ОбъектРегистрации.Измерения Цикл - Если НРег(ИзмерениеРегистра.Имя) = "узел" Тогда + Если НедопустимоеИмяИзмеренияРегистра(ИзмерениеРегистра) Тогда Возврат; КонецЕсли; КонецЦикла; @@ -1552,6 +1566,20 @@ МодульОбменДаннымиСобытия.ЗарегистрироватьИзмененияДанных(Узел, ОбъектРегистрации, НастройкаКонтрольВыгрузкиОбъектов); КонецПроцедуры +// Параметры: +// Измерение - ОбъектМетаданных +// +// Возвращаемое значение: +// Булево - Истина, если имя измерения регистра является недопустимым +// с точки зрения механизмов регистрации. +// +Функция НедопустимоеИмяИзмеренияРегистра(Измерение) + + Возврат ВРег(Измерение.Имя) = "УЗЕЛ" + Или ВРег(Измерение.Имя) = "NODE"; + +КонецФункции + // Возвращает управляемую форму, которой принадлежит элемент. // Функция ФормаЭлементаФормы(ЭлементФормы) @@ -2268,13 +2296,13 @@ КонецПроцедуры // Возвращаемое значение: -// ДеревоЗначений - содержит колонки: -// * Наименование - Строка - Представление вида объекта метаданных. -// * МетаПолноеИмя - Строка - Полное имя объекта метаданных. -// * ИндексКартинки - Число - Зависит от метаданных. +// ДеревоЗначений: +// * Наименование - Строка - представление вида объекта метаданных. +// * МетаПолноеИмя - Строка - полное имя объекта метаданных. +// * ИндексКартинки - Число - зависит от метаданных. // * Пометка - Неопределено - далее используется для хранения пометок -// * ИдентификаторСтроки - Число - Индекс добавленной строки (обход дерева сверху вниз слева направо). -// * Авторегистрация - Булево - Если указан ИмяПланаОбмена, то для листьев: 1-разрешена, +// * ИдентификаторСтроки - Число - индекс добавленной строки (обход дерева сверху вниз слева направо). +// * Авторегистрация - Булево - если указан ИмяПланаОбмена, то для листьев: 1-разрешена, // 2-запрещена. Иначе Неопределено. // * КоличествоИзменений - Число - количество измененных записей. // * КоличествоВыгруженных - Число - количество выгруженных записей. diff --git a/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Forms/РегламентноеЗадание/Help/ru.html b/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Forms/РегламентноеЗадание/Help/ru.html index 9f669aa01..7afe75d97 100644 --- a/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Forms/РегламентноеЗадание/Help/ru.html +++ b/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Forms/РегламентноеЗадание/Help/ru.html @@ -4,13 +4,20 @@ <p>В некоторых случаях бывает необходимо задать два разных расписания для одного регламентного задания. Тогда в список можно добавить новое регламентное задание по одному из предопределенных шаблонов, предусмотренных в программе.</p> <h3>Свойства регламентного задания</h3> <ul><li><strong>Включено</strong> - флажок позволяет включить или отключить выполнение регламентного задания.<br>Полезно, когда нужно ненадолго отключить регламентное задание, не меняя расписание. -</li><li>С помощью ссылки <strong>Расписание</strong> можно настроить <a href="v8help://mngbase/jobschedule.lf">расписание регламентного задания</a>.</li></ul><ul><li><strong>Наименование</strong> - наименование регламентного задания. Обычно пустое, и в качестве него применяется синоним, указанный в шаблоне регламентного задания, заданного в конфигураторе. Если синоним шаблона не задан, используется его имя. -</li><li><strong>При ошибках повторять, раз</strong> - число попыток выполнения регламентного задания, при возникновении ошибки. +</li> +<li>С помощью ссылки <strong>Расписание</strong> можно настроить <a href="v8help://mngbase/jobschedule.lf">расписание регламентного задания</a>.</li></ul><ul><li><strong>Наименование</strong> - наименование регламентного задания. Обычно пустое, и в качестве него применяется синоним, указанный в шаблоне регламентного задания, заданного в конфигураторе. Если синоним шаблона не задан, используется его имя. +</li> +<li><strong>При ошибках повторять, раз</strong> - число попыток выполнения регламентного задания, при возникновении ошибки. <ul><li><strong>через, сек</strong> - пауза (в секундах) между попытками выполнения регламентного задания, при возникновении ошибки.</li></ul></li></ul><p></p> <ul><li><strong>Предопределенно</strong>е - принимает значения <strong>Да</strong> и <strong>Нет</strong>. Непредопределенные (введенные вручную) регламентные задания используются в редких случаях. -</li><li><strong>Идентификатор</strong> - нужен только для продвинутого администратора, знающего встроенный язык. Требуется для исследования нестандартных проблем в работе регламентных заданий, если таковые есть. -</li><li><strong>Ключ</strong> - нужен только для продвинутого администратора. Требуется для тонкой настройки выполнения регламентных заданий и для исследования нестандартных проблем в работе регламентных заданий, если таковые есть. Если ключ указан, то перед запуском <a href="DataProcessor.РегламентныеИФоновыеЗадания.Form.ФоновоеЗадание/Help">фонового задания</a> проверяется, что нет других активных фоновых заданий по тому же шаблону регламентного задания, который применен в экземпляре регламентного задания. -</li><li><strong>Имя пользователя</strong> - имя <a href="Catalog.Пользователи.Form.ФормаЭлемента/Help">пользователя</a> информационной базы, который будет использован для выполнения регламентного задания. Выбирается из списка <a href="Catalog.Пользователи/Help">Пользователи</a>.</li></ul><ul><li><strong>Имя</strong> - имя шаблона регламентного задания, определенного в конфигураторе. -</li><li><strong>Синоним</strong> - синоним шаблона регламентного задания, определенного в конфигураторе. -</li><li><strong>Имя метода</strong> - имя процедуры в конфигурации, которая будет выполняться в фоновом задании, созданным по расписанию регламентного задания.</li></ul><ul><li><strong>Сообщение</strong> - поле содержит текст сообщений и текст сведений об ошибке, если сообщения и/или ошибки произошли при выполнении последнего фонового задания созданного по этому регламентному заданию. То же содержание доступно, если открыть последнее фоновое задание этого регламентного задания.</li></ul><h3>См. также:</h3> +</li> +<li><strong>Идентификатор</strong> - нужен только для продвинутого администратора, знающего встроенный язык. Требуется для исследования нестандартных проблем в работе регламентных заданий, если таковые есть. +</li> +<li><strong>Ключ</strong> - нужен только для продвинутого администратора. Требуется для тонкой настройки выполнения регламентных заданий и для исследования нестандартных проблем в работе регламентных заданий, если таковые есть. Если ключ указан, то перед запуском <a href="DataProcessor.РегламентныеИФоновыеЗадания.Form.ФоновоеЗадание/Help">фонового задания</a> проверяется, что нет других активных фоновых заданий по тому же шаблону регламентного задания, который применен в экземпляре регламентного задания. +</li> +<li><strong>Имя пользователя</strong> - имя <a href="Catalog.Пользователи.Form.ФормаЭлемента/Help">пользователя</a> информационной базы, который будет использован для выполнения регламентного задания. Выбирается из списка <a href="Catalog.Пользователи/Help">Пользователи</a>.</li></ul><ul><li><strong>Имя</strong> - имя шаблона регламентного задания, определенного в конфигураторе. +</li> +<li><strong>Синоним</strong> - синоним шаблона регламентного задания, определенного в конфигураторе. +</li> +<li><strong>Имя метода</strong> - имя процедуры в конфигурации, которая будет выполняться по расписанию регламентного задания.</li></ul><ul><li><strong>Сообщение</strong> - поле содержит текст сообщений и текст сведений об ошибке, если сообщения и/или ошибки произошли при выполнении последнего фонового задания созданного по этому регламентному заданию. То же содержание доступно, если открыть последнее фоновое задание этого регламентного задания.</li></ul><h3>См. также:</h3> <ul><li><a href="DataProcessor.РегламентныеИФоновыеЗадания/Help">Регламентные и фоновые задания</a>.</li></ul></body></html> \ No newline at end of file diff --git a/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Forms/РегламентныеИФоновыеЗадания/Form.form b/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Forms/РегламентныеИФоновыеЗадания/Form.form index 6e2615875..45f5c63b5 100644 --- a/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Forms/РегламентныеИФоновыеЗадания/Form.form +++ b/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Forms/РегламентныеИФоновыеЗадания/Form.form @@ -1317,7 +1317,6 @@ <verticalScrollBar>AutoUse</verticalScrollBar> <horizontalLines>true</horizontalLines> <verticalLines>true</verticalLines> - <useAlternationRowColorBWA>false</useAlternationRowColorBWA> <autoInsertNewRow>true</autoInsertNewRow> <searchOnInput>Auto</searchOnInput> <initialListView>Auto</initialListView> diff --git a/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Forms/РегламентныеИФоновыеЗадания/Module.bsl b/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Forms/РегламентныеИФоновыеЗадания/Module.bsl index 93af6e5e3..1c4a28076 100644 --- a/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Forms/РегламентныеИФоновыеЗадания/Module.bsl +++ b/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Forms/РегламентныеИФоновыеЗадания/Module.bsl @@ -581,9 +581,9 @@ КонецПроцедуры // Параметры: -// НовоеРасписание - РасписаниеРегламентногоЗадания - -// ТекущиеДанные - ДанныеФормыЭлементКоллекции - со свойствами: -// * Идентификатор - Строка - +// НовоеРасписание - РасписаниеРегламентногоЗадания +// ТекущиеДанные - ДанныеФормыЭлементКоллекции: +// * Идентификатор - Строка // &НаКлиенте Процедура ОткрытьРасписаниеЗавершение(НовоеРасписание, ТекущиеДанные) Экспорт diff --git a/SSL/src/DataProcessors/РезервноеКопированиеИБ/Forms/ВосстановлениеДанныхИзРезервнойКопии/Module.bsl b/SSL/src/DataProcessors/РезервноеКопированиеИБ/Forms/ВосстановлениеДанныхИзРезервнойКопии/Module.bsl index d567b3ae3..c87141e87 100644 --- a/SSL/src/DataProcessors/РезервноеКопированиеИБ/Forms/ВосстановлениеДанныхИзРезервнойКопии/Module.bsl +++ b/SSL/src/DataProcessors/РезервноеКопированиеИБ/Forms/ВосстановлениеДанныхИзРезервнойКопии/Module.bsl @@ -335,6 +335,8 @@ #Если Не ВебКлиент И Не МобильныйКлиент Тогда + РезервноеКопированиеИБКлиент.НеОстанавливатьВыполнениеСценариев(); + ИмяГлавногоФайлаСкрипта = СформироватьФайлыСкрипта(); ЖурналРегистрацииКлиент.ДобавитьСообщениеДляЖурналаРегистрации( РезервноеКопированиеИБКлиент.СобытиеЖурналаРегистрации(), @@ -343,7 +345,7 @@ ПараметрыПриложения.Вставить("СтандартныеПодсистемы.ПропуститьПредупреждениеПередЗавершениемРаботыСистемы", Истина); - ПутьКПрограммеЗапуска = СтандартныеПодсистемыКлиент.ПапкаСистемныхПриложений() + "mshta.exe"; + ПутьКПрограммеЗапуска = СтандартныеПодсистемыКлиент.КаталогСистемныхПриложений() + "mshta.exe"; СтрокаЗапуска = """%1"" ""%2"" [p1]%3[/p1]"; СтрокаЗапуска = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( diff --git a/SSL/src/DataProcessors/РезервноеКопированиеИБ/Forms/РезервноеКопированиеДанных/Module.bsl b/SSL/src/DataProcessors/РезервноеКопированиеИБ/Forms/РезервноеКопированиеДанных/Module.bsl index 440a347d5..8ccc33f02 100644 --- a/SSL/src/DataProcessors/РезервноеКопированиеИБ/Forms/РезервноеКопированиеДанных/Module.bsl +++ b/SSL/src/DataProcessors/РезервноеКопированиеИБ/Forms/РезервноеКопированиеДанных/Module.bsl @@ -318,16 +318,18 @@ Элементы.Далее.Видимость = Ложь; Элементы.Отмена.Заголовок = НСтр("ru = 'Закрыть'"); Элементы.Отмена.КнопкаПоУмолчанию = Истина; + Настройки = НастройкиРезервногоКопирования(); РезервноеКопированиеИБКлиент.ЗаполнитьЗначенияГлобальныхПеременных(Настройки); - УстановитьРезультатРезервногоКопирования(); + + СброситьПризнакРезервногоКопирования(); КонецПроцедуры &НаСервереБезКонтекста -Процедура УстановитьРезультатРезервногоКопирования() +Процедура СброситьПризнакРезервногоКопирования() - РезервноеКопированиеИБСервер.УстановитьРезультатРезервногоКопирования(); + РезервноеКопированиеИБСервер.СброситьПризнакРезервногоКопирования(); КонецПроцедуры @@ -511,6 +513,8 @@ #Если Не ВебКлиент И Не МобильныйКлиент Тогда + РезервноеКопированиеИБКлиент.НеОстанавливатьВыполнениеСценариев(); + ИмяГлавногоФайлаСкрипта = СформироватьФайлыСкрипта(); ЖурналРегистрацииКлиент.ДобавитьСообщениеДляЖурналаРегистрации( @@ -527,7 +531,7 @@ ПараметрыПриложения.Вставить("СтандартныеПодсистемы.ПропуститьПредупреждениеПередЗавершениемРаботыСистемы", Истина); - ПутьКПрограммеЗапуска = СтандартныеПодсистемыКлиент.ПапкаСистемныхПриложений() + "mshta.exe"; + ПутьКПрограммеЗапуска = СтандартныеПодсистемыКлиент.КаталогСистемныхПриложений() + "mshta.exe"; СтрокаЗапуска = """%1"" ""%2"" [p1]%3[/p1]"; СтрокаЗапуска = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( diff --git a/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/ИндикацияХодаОбновленияИБ/Module.bsl b/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/ИндикацияХодаОбновленияИБ/Module.bsl index 9bcf5917f..872dc221e 100644 --- a/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/ИндикацияХодаОбновленияИБ/Module.bsl +++ b/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/ИндикацияХодаОбновленияИБ/Module.bsl @@ -294,9 +294,6 @@ Возврат; КонецЕсли; - ПрогрессВыполнения = ?(ТолькоОбновлениеПараметровРаботыПрограммы, 95, 10); - ОбновитьОтображениеДанных(Элементы.ПрогрессВыполнения); - ПараметрыПродолжения.ПолученныеПараметрыКлиента.Вставить("НеобходимоОбновлениеПараметровРаботыПрограммы"); ПараметрыПродолжения.Вставить("КоличествоПолученныхПараметровКлиента", ПараметрыПродолжения.ПолученныеПараметрыКлиента.Количество()); @@ -627,49 +624,47 @@ КонецЦикла; КонецЕсли; - СведенияОбОбновлении = ОбновлениеИнформационнойБазыСлужебный.СведенияОбОбновленииИнформационнойБазы(); - СведенияОбОбновлении.ОбрабатываемыеДанные = Новый Соответствие; - ОбрабатываемыеДанные = СведенияОбОбновлении.ОбрабатываемыеДанные; ОписанияБиблиотек = СтандартныеПодсистемыПовтИсп.ОписанияПодсистем().ПоИменам; + ОбработанныеБиблиотеки = Новый Массив; - Для Каждого ОписаниеБиблиотеки Из СведенияОбОбновлении.ДеревоОбработчиков.Строки Цикл - Если ОписанияБиблиотек[ОписаниеБиблиотеки.ИмяБиблиотеки].РежимВыполненияОтложенныхОбработчиков <> "Параллельно" Тогда - ОбновлениеИнформационнойБазыСлужебный.ОтметитьРегистрациюОтложенныхОбработчиковОбновления(ОписаниеБиблиотеки.ИмяБиблиотеки, Истина); + ВсегоПроцедур = 0; + Обработчики = ОбновлениеИнформационнойБазыСлужебный.ОбработчикиДляОтложеннойРегистрацииДанных(Истина); + Для Каждого Обработчик Из Обработчики Цикл + Если ОбработанныеБиблиотеки.Найти(Обработчик.ИмяБиблиотеки) <> Неопределено Тогда Продолжить; КонецЕсли; - ПараллельноСВерсии = ОписанияБиблиотек[ОписаниеБиблиотеки.ИмяБиблиотеки].ПараллельноеОтложенноеОбновлениеСВерсии; - Для Каждого ОписаниеВерсии Из ОписаниеБиблиотеки.Строки Цикл - Если ОписаниеВерсии.НомерВерсии = "*" Тогда - Продолжить; - КонецЕсли; - - Если ЗначениеЗаполнено(ПараллельноСВерсии) - И ОбщегоНазначенияКлиентСервер.СравнитьВерсии(ОписаниеВерсии.НомерВерсии, ПараллельноСВерсии) < 0 Тогда - Продолжить; - КонецЕсли; - - Для Каждого ОписаниеОбработчика Из ОписаниеВерсии.Строки Цикл - ОписаниеОбрабатываемыхДанных = ОбновлениеИнформационнойБазыСлужебный.НовоеОписаниеОбрабатываемыхДанных( - ОписаниеОбработчика.Многопоточный, - Истина); - - Если ОписаниеОбработчика.Многопоточный Тогда - ОписаниеОбрабатываемыхДанных.ПараметрыВыборки = - ОбновлениеИнформационнойБазы.ДополнительныеПараметрыВыборкиДанныхДляМногопоточнойОбработки(); - КонецЕсли; - - ОписаниеОбрабатываемыхДанных.ИмяОбработчика = ОписаниеОбработчика.ИмяОбработчика; - ОписаниеОбрабатываемыхДанных.Очередь = ОписаниеОбработчика.ОчередьОтложеннойОбработки; - ОписаниеОбрабатываемыхДанных.ПроцедураЗаполнения = ОписаниеОбработчика.ПроцедураЗаполненияДанныхОбновления; - ОбрабатываемыеДанные[ОписаниеОбработчика.ИмяОбработчика] = ОписаниеОбрабатываемыхДанных; - КонецЦикла; - КонецЦикла; + Если ОписанияБиблиотек[Обработчик.ИмяБиблиотеки].РежимВыполненияОтложенныхОбработчиков <> "Параллельно" Тогда + ОбновлениеИнформационнойБазыСлужебный.ОтметитьРегистрациюОтложенныхОбработчиковОбновления(Обработчик.ИмяБиблиотеки, Истина); + ОбработанныеБиблиотеки.Добавить(Обработчик.ИмяБиблиотеки); + Продолжить; + КонецЕсли; + ПараллельноСВерсии = ОписанияБиблиотек[Обработчик.ИмяБиблиотеки].ПараллельноеОтложенноеОбновлениеСВерсии; + + Если ЗначениеЗаполнено(ПараллельноСВерсии) + И ОбщегоНазначенияКлиентСервер.СравнитьВерсии(Обработчик.Версия, ПараллельноСВерсии) < 0 Тогда + Продолжить; + КонецЕсли; + + ОписаниеОбрабатываемыхДанных = ОбновлениеИнформационнойБазыСлужебный.НовоеОписаниеОбрабатываемыхДанных( + Обработчик.Многопоточный, + Истина); + Если Обработчик.Многопоточный Тогда + ОписаниеОбрабатываемыхДанных.ПараметрыВыборки = + ОбновлениеИнформационнойБазы.ДополнительныеПараметрыВыборкиДанныхДляМногопоточнойОбработки(); + КонецЕсли; + + ОписаниеОбрабатываемыхДанных.ИмяОбработчика = Обработчик.ИмяОбработчика; + ОписаниеОбрабатываемыхДанных.Очередь = Обработчик.ОчередьОтложеннойОбработки; + ОписаниеОбрабатываемыхДанных.ПроцедураЗаполнения = Обработчик.ПроцедураЗаполненияДанныхОбновления; + + ОписаниеОбрабатываемыхДанных = Новый ХранилищеЗначения(ОписаниеОбрабатываемыхДанных, Новый СжатиеДанных(9)); + ОбновлениеИнформационнойБазыСлужебный.УстановитьСвойствоОбработчика(Обработчик.ИмяОбработчика, "ОбрабатываемыеДанные", ОписаниеОбрабатываемыхДанных); + + ВсегоПроцедур = ВсегоПроцедур + 1; КонецЦикла; - ОбновлениеИнформационнойБазыСлужебный.ЗаписатьСведенияОбОбновленииИнформационнойБазы(СведенияОбОбновлении); - Если Не ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ() И ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ОбменДанными") Тогда МодульОбменДаннымиСервер = ОбщегоНазначения.ОбщийМодуль("ОбменДаннымиСервер"); @@ -678,7 +673,7 @@ ХодРегистрации = Новый Структура; ХодРегистрации.Вставить("НачальныйПрогресс", ПрогрессВыполнения); - ХодРегистрации.Вставить("ВсегоПроцедур", ОбрабатываемыеДанные.Количество()); + ХодРегистрации.Вставить("ВсегоПроцедур", ВсегоПроцедур); ХодРегистрации.Вставить("ВыполненоПроцедур", 0); // Снятие блокировки информационной базы и выполнение регистрации на плане обмена. @@ -721,24 +716,26 @@ РезультатВыполненияУправляющегоФЗ = ДлительныеОперации.ОперацияВыполнена(ИдентификаторЗадания); КонецЕсли; - СведенияОбОбновлении = ОбновлениеИнформационнойБазыСлужебный.СведенияОбОбновленииИнформационнойБазы(); Статус = РезультатВыполненияУправляющегоФЗ.Статус; Если Статус = "Выполнено" Тогда ОбновлениеИнформационнойБазыСлужебный.ОтметитьРегистрациюОтложенныхОбработчиковОбновления(); ИначеЕсли Статус = "Ошибка" Или Статус = "Отменено" Тогда - ОбновлениеИнформационнойБазыСлужебный.ОтменитьВыполнениеВсехПотоков(СведенияОбОбновлении.ОписаниеПотоков); - ОбновлениеИнформационнойБазыСлужебный.ЗаписатьСведенияОбОбновленииИнформационнойБазы(СведенияОбОбновлении); + Группы = ОбновлениеИнформационнойБазыСлужебный.НовоеОписаниеГруппПотоковРегистрацииДанныхОтложенногоОбновления(); + ОбновлениеИнформационнойБазыСлужебный.ОтменитьВыполнениеВсехПотоков(Группы); Возврат РезультатВыполненияУправляющегоФЗ; КонецЕсли; // Обновление прогресса. ВыполненоПроцедур = 0; - Для Каждого ОписаниеОбрабатываемыхДанных Из СведенияОбОбновлении.ОбрабатываемыеДанные Цикл - Если ОписаниеОбрабатываемыхДанных.Значение.Статус = "Выполнено" Тогда + Обработчики = ОбновлениеИнформационнойБазыСлужебный.ОбработчикиДляОтложеннойРегистрацииДанных(); + Для Каждого Обработчик Из Обработчики Цикл + ОписаниеОбрабатываемыхДанных = Обработчик.ОбрабатываемыеДанные.Получить(); + Если ОписаниеОбрабатываемыхДанных.Статус = "Выполнено" Тогда ВыполненоПроцедур = ВыполненоПроцедур + 1; КонецЕсли; КонецЦикла; + ХодРегистрации.ВыполненоПроцедур = ВыполненоПроцедур; Если ХодРегистрации.ВсегоПроцедур <> 0 Тогда ПрибавкаПрогресса = ХодРегистрации.ВыполненоПроцедур / ХодРегистрации.ВсегоПроцедур * (100 - ХодРегистрации.НачальныйПрогресс); diff --git a/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/ИндикацияХодаОтложенногоОбновленияИБ/Form.form b/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/ИндикацияХодаОтложенногоОбновленияИБ/Form.form index 74b06c7f2..d5d1afc8e 100644 --- a/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/ИндикацияХодаОтложенногоОбновленияИБ/Form.form +++ b/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/ИндикацияХодаОтложенногоОбновленияИБ/Form.form @@ -1796,37 +1796,8 @@ </extInfo> </items> <items xsi:type="form:FormGroup"> - <name>ГруппаИнформацияОбОбновлении1</name> + <name>ГруппаПереходКСпискуОтложенныхОбработчиков</name> <id>45</id> - <items xsi:type="form:FormGroup"> - <name>ГруппаПереходКСпискуОтложенныхОбработчиков</name> - <id>56</id> - <visible>true</visible> - <enabled>true</enabled> - <userVisible> - <common>true</common> - </userVisible> - <height>3</height> - <extendedTooltip> - <name>ГруппаПереходКСпискуОтложенныхОбработчиковExtendedTooltip</name> - <id>168</id> - <type>Label</type> - <autoMaxWidth>true</autoMaxWidth> - <autoMaxHeight>true</autoMaxHeight> - <extInfo xsi:type="form:LabelDecorationExtInfo"> - <horizontalAlign>Left</horizontalAlign> - </extInfo> - </extendedTooltip> - <type>UsualGroup</type> - <extInfo xsi:type="form:UsualGroupExtInfo"> - <group>Vertical</group> - <behavior>Auto</behavior> - <showLeftMargin>true</showLeftMargin> - <united>true</united> - <throughAlign>Auto</throughAlign> - <currentRowUse>Auto</currentRowUse> - </extInfo> - </items> <items xsi:type="form:Button"> <name>ОткрытьСписокОтложенныхОбработчиков</name> <id>57</id> @@ -1907,7 +1878,7 @@ <common>true</common> </userVisible> <extendedTooltip> - <name>ГруппаИнформацияОбОбновлении1ExtendedTooltip</name> + <name>ГруппаПереходКСпискуОтложенныхОбработчиковРасширеннаяПодсказка</name> <id>166</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> diff --git a/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/ИндикацияХодаОтложенногоОбновленияИБ/Module.bsl b/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/ИндикацияХодаОтложенногоОбновленияИБ/Module.bsl index 235bf044f..ab687b277 100644 --- a/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/ИндикацияХодаОтложенногоОбновленияИБ/Module.bsl +++ b/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/ИндикацияХодаОтложенногоОбновленияИБ/Module.bsl @@ -65,10 +65,9 @@ КонецЕсли; Иначе - ТекстСообщения = СообщениеОРезультатахОбновления(СведенияОбОбновлении); + ТекстСообщения = СообщениеОРезультатахОбновления(); Элементы.СтатусОбновления.ТекущаяСтраница = Элементы.ОбновлениеЗавершено; - СведенияОбОбновлении = ОбновлениеИнформационнойБазыСлужебный.СведенияОбОбновленииИнформационнойБазы(); ШаблонЗаголовка = НСтр("ru = 'Дополнительные процедуры обработки данных завершены %1 в %2'"); Элементы.ИнформацияОтложенноеОбновлениеЗавершено.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонЗаголовка, @@ -81,7 +80,7 @@ Если Не ИБФайловая Тогда ОбновлениеЗавершено = Ложь; - ОбновитьИнформациюОХодеОбновления(СведенияОбОбновлении, ОбновлениеЗавершено); + ОбновитьИнформациюОХодеОбновления(ОбновлениеЗавершено); УстановитьДоступностьКоличестваПотоковОбновленияИнформационнойБазы(ЭтотОбъект); Если ОбновлениеЗавершено Тогда @@ -374,7 +373,7 @@ Если СведенияОбОбновлении.ВремяОкончаниеОтложенногоОбновления <> Неопределено Тогда ОбновлениеЗавершено = Истина; Иначе - ОбновитьИнформациюОХодеОбновления(СведенияОбОбновлении, ОбновлениеЗавершено); + ОбновитьИнформациюОХодеОбновления(ОбновлениеЗавершено); КонецЕсли; Если ОбновлениеЗавершено = Истина Тогда @@ -390,33 +389,9 @@ СведенияОбОбновлении.ОтложенноеОбновлениеЗавершеноУспешно = Неопределено; СведенияОбОбновлении.ВремяОкончаниеОтложенногоОбновления = Неопределено; - Для Каждого СтрокаДереваБиблиотека Из СведенияОбОбновлении.ДеревоОбработчиков.Строки Цикл - Для Каждого СтрокаДереваВерсия Из СтрокаДереваБиблиотека.Строки Цикл - Для Каждого Обработчик Из СтрокаДереваВерсия.Строки Цикл - Обработчик.ЧислоПопыток = 0; - Если Обработчик.Статус = "Ошибка" Тогда - Обработчик.СтатистикаВыполнения.Очистить(); - Обработчик.Статус = "НеВыполнено"; - ИначеЕсли Обработчик.Статус = "Выполняется" Тогда - Обработчик.СтатистикаВыполнения.Вставить("КоличествоЗапусков", 0); - КонецЕсли; - КонецЦикла; - КонецЦикла; - КонецЦикла; - ПланОбновленияПуст = Истина; - Для Каждого ЦиклОбновления Из СведенияОбОбновлении.ПланОтложенногоОбновления Цикл - Если ЦиклОбновления.Свойство("ЗавершеноСОшибками") Тогда - ЦиклОбновления.Удалить("ЗавершеноСОшибками"); - КонецЕсли; - Если ЦиклОбновления.Обработчики.Количество() > 0 Тогда - ПланОбновленияПуст = Ложь; - КонецЕсли; - КонецЦикла; - - Если ПланОбновленияПуст Тогда - ОбновлениеИнформационнойБазыСлужебный.СоставитьПланОтложенногоОбновления(СведенияОбОбновлении, Истина); - КонецЕсли; + СброситьСтатусОбработчиков(Перечисления.СтатусыОбработчиковОбновления.Ошибка); + СброситьСтатусОбработчиков(Перечисления.СтатусыОбработчиковОбновления.Выполняется); ОбновлениеИнформационнойБазыСлужебный.ЗаписатьСведенияОбОбновленииИнформационнойБазы(СведенияОбОбновлении); @@ -432,11 +407,44 @@ КонецПроцедуры +&НаСервере +Процедура СброситьСтатусОбработчиков(Статус) + + // АПК:1327-выкл нет конкурентной работы с регистром + // АПК:1328-выкл нет конкурентной работы с регистром + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("Статус", Статус); + Запрос.Текст = + "ВЫБРАТЬ + | ОбработчикиОбновления.ИмяОбработчика КАК ИмяОбработчика + |ИЗ + | РегистрСведений.ОбработчикиОбновления КАК ОбработчикиОбновления + |ГДЕ + | ОбработчикиОбновления.Статус = &Статус"; + Обработчики = Запрос.Выполнить().Выгрузить(); + Для Каждого Обработчик Из Обработчики Цикл + НаборЗаписей = РегистрыСведений.ОбработчикиОбновления.СоздатьНаборЗаписей(); + НаборЗаписей.Отбор.ИмяОбработчика.Установить(Обработчик.ИмяОбработчика); + НаборЗаписей.Прочитать(); + + Запись = НаборЗаписей[0]; + Запись.Статус = Перечисления.СтатусыОбработчиковОбновления.НеВыполнялся; + СтатистикаВыполнения = Запись.СтатистикаВыполнения.Получить(); + СтатистикаВыполнения.Вставить("КоличествоЗапусков", 0); + Запись.СтатистикаВыполнения = Новый ХранилищеЗначения(СтатистикаВыполнения); + + НаборЗаписей.Записать(); + КонецЦикла; + // АПК:1327-вкл + // АПК:1328-вкл + +КонецПроцедуры + &НаСервере Процедура ОбновитьСтраницуОбновлениеЗавершено(СведенияОбОбновлении) ШаблонЗаголовка = НСтр("ru = 'Дополнительные процедуры обработки данных завершены %1 в %2'"); - ТекстСообщения = СообщениеОРезультатахОбновления(СведенияОбОбновлении); + ТекстСообщения = СообщениеОРезультатахОбновления(); Элементы.ИнформацияОтложенноеОбновлениеЗавершено.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонЗаголовка, @@ -450,36 +458,24 @@ КонецПроцедуры &НаСервере -Функция СообщениеОРезультатахОбновления(СведенияОбОбновлении) +Функция СообщениеОРезультатахОбновления() - УспешноВыполненоОбработчиков = 0; - ВсегоОбработчиков = 0; - Для Каждого СтрокаДереваБиблиотека Из СведенияОбОбновлении.ДеревоОбработчиков.Строки Цикл - Для Каждого СтрокаДереваВерсия Из СтрокаДереваБиблиотека.Строки Цикл - ВсегоОбработчиков = ВсегоОбработчиков + СтрокаДереваВерсия.Строки.Количество(); - Для Каждого Обработчик Из СтрокаДереваВерсия.Строки Цикл - - Если Обработчик.Статус = "Выполнено" Тогда - УспешноВыполненоОбработчиков = УспешноВыполненоОбработчиков + 1; - КонецЕсли; - - КонецЦикла; - КонецЦикла; - КонецЦикла; + Прогресс = ПрогрессВыполненияОбработчиков(); - Если ВсегоОбработчиков = УспешноВыполненоОбработчиков Тогда + Если Прогресс.ВсегоОбработчиков = Прогресс.ВыполненоОбработчиков Тогда - Если ВсегоОбработчиков = 0 Тогда + Если Прогресс.ВсегоОбработчиков = 0 Тогда Элементы.ИнформацияОтложенныеОбработчикиОтсутствуют.Видимость = Истина; + Элементы.ИнформацияОтложенноеОбновлениеЗавершено.Видимость = Ложь; Элементы.ГруппаПереходКСпискуОтложенныхОбработчиков.Видимость = Ложь; ТекстСообщения = ""; Иначе - ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Все процедуры обновления выполнены успешно (%1)'"), УспешноВыполненоОбработчиков); + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Все процедуры обновления выполнены успешно (%1)'"), Прогресс.ВыполненоОбработчиков); КонецЕсли; Элементы.КартинкаЗавершено.Картинка = БиблиотекаКартинок.Успешно32; Иначе ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Не все процедуры удалось выполнить (выполнено %1 из %2)'"), - УспешноВыполненоОбработчиков, ВсегоОбработчиков); + Прогресс.ВыполненоОбработчиков, Прогресс.ВсегоОбработчиков); Элементы.КартинкаЗавершено.Картинка = БиблиотекаКартинок.Ошибка32; КонецЕсли; Возврат ТекстСообщения; @@ -487,34 +483,56 @@ КонецФункции &НаСервере -Процедура ОбновитьИнформациюОХодеОбновления(СведенияОбОбновлении, ОбновлениеЗавершено = Ложь) +Процедура ОбновитьИнформациюОХодеОбновления(ОбновлениеЗавершено = Ложь) - ВыполненоОбработчиков = 0; - ВсегоОбработчиков = 0; - Для Каждого СтрокаДереваБиблиотека Из СведенияОбОбновлении.ДеревоОбработчиков.Строки Цикл - Для Каждого СтрокаДереваВерсия Из СтрокаДереваБиблиотека.Строки Цикл - ВсегоОбработчиков = ВсегоОбработчиков + СтрокаДереваВерсия.Строки.Количество(); - Для Каждого Обработчик Из СтрокаДереваВерсия.Строки Цикл - - Если Обработчик.Статус = "Выполнено" Тогда - ВыполненоОбработчиков = ВыполненоОбработчиков + 1; - КонецЕсли; - - КонецЦикла; - КонецЦикла; - КонецЦикла; + Прогресс = ПрогрессВыполненияОбработчиков(); - Если ВсегоОбработчиков = ВыполненоОбработчиков Тогда + Если Прогресс.ВсегоОбработчиков = Прогресс.ВыполненоОбработчиков Тогда ОбновлениеЗавершено = Истина; КонецЕсли; Элементы.ИнформацияСтатусОбновления.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Выполнено: %1 из %2'"), - ВыполненоОбработчиков, - ВсегоОбработчиков); + Прогресс.ВыполненоОбработчиков, + Прогресс.ВсегоОбработчиков); КонецПроцедуры +&НаСервере +Функция ПрогрессВыполненияОбработчиков() + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("РежимВыполнения", Перечисления.РежимыВыполненияОбработчиков.Отложенно); + Запрос.УстановитьПараметр("Статус", Перечисления.СтатусыОбработчиковОбновления.Выполнен); + Запрос.Текст = + "ВЫБРАТЬ + | КОЛИЧЕСТВО(ОбработчикиОбновления.ИмяОбработчика) КАК Количество + |ИЗ + | РегистрСведений.ОбработчикиОбновления КАК ОбработчикиОбновления + |ГДЕ + | ОбработчикиОбновления.РежимВыполнения = &РежимВыполнения + | И ОбработчикиОбновления.Статус = &Статус + | + |ОБЪЕДИНИТЬ ВСЕ + | + |ВЫБРАТЬ + | КОЛИЧЕСТВО(ОбработчикиОбновления.ИмяОбработчика) КАК Количество + |ИЗ + | РегистрСведений.ОбработчикиОбновления КАК ОбработчикиОбновления + |ГДЕ + | ОбработчикиОбновления.РежимВыполнения = &РежимВыполнения"; + Результат = Запрос.Выполнить().Выгрузить(); + ВыполненоОбработчиков = Результат[0].Количество; + ВсегоОбработчиков = Результат[1].Количество; + + Результат = Новый Структура; + Результат.Вставить("ВсегоОбработчиков", ВсегоОбработчиков); + Результат.Вставить("ВыполненоОбработчиков", ВыполненоОбработчиков); + + Возврат Результат; + +КонецФункции + &НаСервере Процедура УстановитьРасписаниеОтложенногоОбновления(НовоеРасписание) diff --git a/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/ОтложенныеОбработчики/Module.bsl b/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/ОтложенныеОбработчики/Module.bsl index 02af96ac7..f925c6c64 100644 --- a/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/ОтложенныеОбработчики/Module.bsl +++ b/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/Forms/ОтложенныеОбработчики/Module.bsl @@ -47,7 +47,6 @@ Статус = "ВсеПроцедуры"; - ЗаполнитьТаблицуОбрабатываемыхДанных(СведенияОбОбновлении); СформироватьТаблицуОтложенныхОбработчиков(, Истина); Элементы.ГиперссылкаПрогрессОбновления.Видимость = ПараллельныйРежимИспользуется; @@ -267,36 +266,22 @@ Процедура ЗапуститьВыделеннуюПроцедуруДляОтладки(ИмяОбработчика) СведенияОбОбновлении = ОбновлениеИнформационнойБазыСлужебный.СведенияОбОбновленииИнформационнойБазы(); - СведенияОбОбновлении.ОтложенноеОбновлениеЗавершеноУспешно = Неопределено; СведенияОбОбновлении.ВремяОкончаниеОтложенногоОбновления = Неопределено; - Для Каждого СтрокаДереваБиблиотека Из СведенияОбОбновлении.ДеревоОбработчиков.Строки Цикл - Для Каждого СтрокаДереваВерсия Из СтрокаДереваБиблиотека.Строки Цикл - Для Каждого Обработчик Из СтрокаДереваВерсия.Строки Цикл - Если Обработчик.ИмяОбработчика <> ИмяОбработчика Тогда - Продолжить; - КонецЕсли; - - Обработчик.ЧислоПопыток = 0; - Если Обработчик.Статус = "Ошибка" Тогда - Обработчик.СтатистикаВыполнения.Очистить(); - Обработчик.Статус = "НеВыполнено"; - КонецЕсли; - КонецЦикла; - КонецЦикла; - КонецЦикла; - - Для Каждого ЦиклОбновления Из СведенияОбОбновлении.ПланОтложенногоОбновления Цикл - Если ЦиклОбновления.Свойство("ЗавершеноСОшибками") Тогда - ЦиклОбновления.Удалить("ЗавершеноСОшибками"); - КонецЕсли; - КонецЦикла; - ОбновлениеИнформационнойБазыСлужебный.ЗаписатьСведенияОбОбновленииИнформационнойБазы(СведенияОбОбновлении); - ОбновлениеИнформационнойБазыСлужебный.ВыполнитьОтложенноеОбновлениеСейчас(Неопределено); + НаборЗаписей = РегистрыСведений.ОбработчикиОбновления.СоздатьНаборЗаписей(); + НаборЗаписей.Отбор.ИмяОбработчика.Установить(ИмяОбработчика); + НаборЗаписей.Прочитать(); - СведенияОбОбновлении = ОбновлениеИнформационнойБазыСлужебный.СведенияОбОбновленииИнформационнойБазы(); + Обработчик = НаборЗаписей[0]; + Обработчик.Статус = Перечисления.СтатусыОбработчиковОбновления.НеВыполнялся; + Обработчик.СтатистикаВыполнения = Новый ХранилищеЗначения(Новый Соответствие); + + // АПК:1327-выкл нет конкурентной работы с регистром + НаборЗаписей.Записать(); + // АПК:1327-вкл + ОбновлениеИнформационнойБазыСлужебный.ВыполнитьОтложенноеОбновлениеСейчас(Неопределено); КонецПроцедуры @@ -438,26 +423,80 @@ Или СведенияОбОбновлении.УправлениеОтложеннымОбновлением.Свойство("ПриоритетВПлановомПорядке"); ОбновлениеВыполняется = (СведенияОбОбновлении.ОтложенноеОбновлениеЗавершеноУспешно = Неопределено); - Для Каждого СтрокаДереваБиблиотека Из СведенияОбОбновлении.ДеревоОбработчиков.Строки Цикл - Для Каждого СтрокаДереваВерсия Из СтрокаДереваБиблиотека.Строки Цикл - Если Не ПараллельныйРежимИспользуется - И ОписанияПодсистем[СтрокаДереваБиблиотека.ИмяБиблиотеки].РежимВыполненияОтложенныхОбработчиков = "Параллельно" - И СтрокаДереваВерсия.Строки.Количество() > 0 Тогда - ПараллельныйРежимИспользуется = Истина; + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("РежимВыполнения", Перечисления.РежимыВыполненияОбработчиков.Отложенно); + Запрос.Текст = + "ВЫБРАТЬ + | ОбработчикиОбновления.ИмяОбработчика КАК ИмяОбработчика, + | ОбработчикиОбновления.Статус КАК Статус, + | ОбработчикиОбновления.Версия КАК Версия, + | ОбработчикиОбновления.ИмяБиблиотеки КАК ИмяБиблиотеки, + | ОбработчикиОбновления.ДлительностьОбработки КАК ДлительностьОбработки, + | ОбработчикиОбновления.РежимВыполнения КАК РежимВыполнения, + | ОбработчикиОбновления.ВерсияРегистрации КАК ВерсияРегистрации, + | ОбработчикиОбновления.ВерсияПорядок КАК ВерсияПорядок, + | ОбработчикиОбновления.Идентификатор КАК Идентификатор, + | ОбработчикиОбновления.ЧислоПопыток КАК ЧислоПопыток, + | ОбработчикиОбновления.ИнформацияОбОшибке КАК ИнформацияОбОшибке, + | ОбработчикиОбновления.Комментарий КАК Комментарий, + | ОбработчикиОбновления.Приоритет КАК Приоритет, + | ОбработчикиОбновления.ПроцедураПроверки КАК ПроцедураПроверки, + | ОбработчикиОбновления.ПроцедураЗаполненияДанныхОбновления КАК ПроцедураЗаполненияДанныхОбновления, + | ОбработчикиОбновления.ОчередьОтложеннойОбработки КАК ОчередьОтложеннойОбработки, + | ОбработчикиОбновления.ЗапускатьТолькоВГлавномУзле КАК ЗапускатьТолькоВГлавномУзле, + | ОбработчикиОбновления.ЗапускатьИВПодчиненномУзлеРИБСФильтрами КАК ЗапускатьИВПодчиненномУзлеРИБСФильтрами, + | ОбработчикиОбновления.Многопоточный КАК Многопоточный, + | ОбработчикиОбновления.ОбработкаПорцииЗавершена КАК ОбработкаПорцииЗавершена, + | ОбработчикиОбновления.ГруппаОбновления КАК ГруппаОбновления, + | ОбработчикиОбновления.ИтерацияЗапуска КАК ИтерацияЗапуска, + | ОбработчикиОбновления.РежимВыполненияОтложенногоОбработчика КАК РежимВыполненияОтложенногоОбработчика, + | ОбработчикиОбновления.ОбрабатываемыеДанные КАК ОбрабатываемыеДанные, + | ОбработчикиОбновления.СтатистикаВыполнения КАК СтатистикаВыполнения + |ИЗ + | РегистрСведений.ОбработчикиОбновления КАК ОбработчикиОбновления + |ГДЕ + | ОбработчикиОбновления.РежимВыполнения = &РежимВыполнения"; + Обработчики = Запрос.Выполнить().Выгрузить(); + Для Каждого Обработчик Из Обработчики Цикл + Если Не ПараллельныйРежимИспользуется Тогда + ПараллельныйРежимИспользуется = (Обработчик.РежимВыполненияОтложенногоОбработчика = Перечисления.РежимыВыполненияОтложенныхОбработчиков.Параллельно); + КонецЕсли; + + Если Не ПустаяСтрока(СтрокаПоиска) Тогда + Если СтрНайти(ВРег(Обработчик.Комментарий), ВРег(СтрокаПоиска)) = 0 + И СтрНайти(ВРег(Обработчик.ИмяОбработчика), ВРег(СтрокаПоиска)) = 0 Тогда + Продолжить; КонецЕсли; + КонецЕсли; + ДобавитьОтложенныйОбработчик(Обработчик, ОбработчикиНеВыполнялись, ВыполненыВсеОбработчики, НачальноеЗаполнение, ВыполняетсяИзменениеПриоритета); + + Если Обработчик.РежимВыполненияОтложенногоОбработчика <> Перечисления.РежимыВыполненияОтложенныхОбработчиков.Параллельно Тогда + Продолжить; + КонецЕсли; + + ИнформацияПоОбработчику = Обработчик.ОбрабатываемыеДанные.Получить(); + Если ИнформацияПоОбработчику = Неопределено Тогда + Продолжить; + КонецЕсли; + + ОбъектыОбработчика = Новый Соответствие; + ТаблицаОбрабатываемыеДанные = РеквизитФормыВЗначение("ОбрабатываемыеДанные"); + СписокОбъектов = Новый СписокЗначений; + ОбрабатываемыеОбъектыПООчередям = ИнформацияПоОбработчику.ДанныеОбработчика; + Для Каждого ОбрабатываемыйОбъект Из ОбрабатываемыеОбъектыПООчередям Цикл + ИмяОбъекта = ОбрабатываемыйОбъект.Ключ; + Очередь = ОбрабатываемыйОбъект.Значение.Очередь; + СтрокаТаблицы = ТаблицаОбрабатываемыеДанные.Добавить(); + СтрокаТаблицы.Обработчик = Обработчик.ИмяОбработчика; + СтрокаТаблицы.ИмяОбъекта = ИмяОбъекта; + СтрокаТаблицы.Очередь = Очередь; - Для Каждого СтрокаОбработчика Из СтрокаДереваВерсия.Строки Цикл - - Если Не ПустаяСтрока(СтрокаПоиска) Тогда - Если СтрНайти(ВРег(СтрокаОбработчика.Комментарий), ВРег(СтрокаПоиска)) = 0 - И СтрНайти(ВРег(СтрокаОбработчика.ИмяОбработчика), ВРег(СтрокаПоиска)) = 0 Тогда - Продолжить; - КонецЕсли; - КонецЕсли; - ДобавитьОтложенныйОбработчик(СтрокаОбработчика, ОбработчикиНеВыполнялись, ВыполненыВсеОбработчики, НачальноеЗаполнение, ВыполняетсяИзменениеПриоритета); - - КонецЦикла; + СписокОбъектов.Добавить(ИмяОбъекта); КонецЦикла; + ОбъектыОбработчика.Вставить(Обработчик.ИмяОбработчика, СписокОбъектов); + + ОбъектыОбработчикаАдрес = ПоместитьВоВременноеХранилище(ОбъектыОбработчика, УникальныйИдентификатор); + ЗначениеВРеквизитФормы(ТаблицаОбрабатываемыеДанные, "ОбрабатываемыеДанные"); КонецЦикла; Если Статус = "ЖелательноБыстрее" Тогда @@ -501,7 +540,7 @@ СтрокаСписка = ОтложенныеОбработчики.НайтиСтроки(ПараметрыОтбора)[0]; КонецЕсли; - СтатистикаВыполнения = СтрокаОбработчика.СтатистикаВыполнения; + СтатистикаВыполнения = СтрокаОбработчика.СтатистикаВыполнения.Получить(); НачалоОбработкиДанных = СтатистикаВыполнения["НачалоОбработкиДанных"]; ЗавершениеОбработкиДанных = СтатистикаВыполнения["ЗавершениеОбработкиДанных"]; @@ -530,14 +569,14 @@ ШаблонИнформацияОПроцедуреОбновления = НСтр("ru = 'Процедура ""%1"" обработки данных %2.'"); СтрокаСписка.Статус = ?(СтрокаОбработчика.Статус = "НеВыполнено", "НеЗапускалась", СтрокаОбработчика.Статус); - Если СтрокаОбработчика.Статус = "Выполнено" Тогда + Если СтрокаОбработчика.Статус = Перечисления.СтатусыОбработчиковОбновления.Выполнен Тогда ОбработчикиНеВыполнялись = Ложь; ПредставлениеСтатусаВыполнения = НСтр("ru = 'завершилась успешно'"); СтрокаСписка.СтатусПредставление = НСтр("ru = 'Выполнено'"); СтрокаСписка.СтатусКартинка = БиблиотекаКартинок.Успешно; СтрокаСписка.ДлительностьВыполнения = ДлительностьВыполненияПроцедурыОбновления(ДлительностьВыполнения); - ИначеЕсли СтрокаОбработчика.Статус = "Выполняется" Тогда + ИначеЕсли СтрокаОбработчика.Статус = Перечисления.СтатусыОбработчиковОбновления.Выполняется Тогда ОбработчикиНеВыполнялись = Ложь; ВыполненыВсеОбработчики = Ложь; @@ -549,7 +588,7 @@ Иначе СтрокаСписка.СтатусПредставление = НСтр("ru = 'Выполняется'"); КонецЕсли; - ИначеЕсли СтрокаОбработчика.Статус = "Ошибка" Тогда + ИначеЕсли СтрокаОбработчика.Статус = Перечисления.СтатусыОбработчиковОбновления.Ошибка Тогда ОбработчикиНеВыполнялись = Ложь; ВыполненыВсеОбработчики = Ложь; @@ -559,7 +598,7 @@ СтрокаСписка.СтатусПредставление = НСтр("ru = 'Ошибка'"); СтрокаСписка.СтатусКартинка = БиблиотекаКартинок.Остановить; СтрокаСписка.ДлительностьВыполнения = ДлительностьВыполненияПроцедурыОбновления(ДлительностьВыполнения); - ИначеЕсли СтрокаОбработчика.Статус = "Приостановлен" Тогда + ИначеЕсли СтрокаОбработчика.Статус = Перечисления.СтатусыОбработчиковОбновления.Приостановлен Тогда ОбработчикиНеВыполнялись = Ложь; ВыполненыВсеОбработчики = Ложь; @@ -589,7 +628,7 @@ СтрокаСписка.Приоритет = "ВПлановомПорядке"; КонецЕсли; - Если СтрокаОбработчика.Статус <> "Ошибка" Тогда + Если СтрокаОбработчика.Статус <> Перечисления.СтатусыОбработчиковОбновления.Ошибка Тогда СтрокаСписка.ИнформацияОПроцедуреОбновления = СтрокаОбработчика.Комментарий + Отступ + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( @@ -641,35 +680,6 @@ КонецФункции -&НаСервере -Процедура ЗаполнитьТаблицуОбрабатываемыхДанных(СведенияОбОбновлении) - - ОбъектыОбработчика = Новый Соответствие; - - ИсходныеДанные = СведенияОбОбновлении.ОбрабатываемыеДанные; - ТаблицаОбрабатываемыеДанные = РеквизитФормыВЗначение("ОбрабатываемыеДанные"); - Для Каждого ИнформацияПоОбработчику Из ИсходныеДанные Цикл - СписокОбъектов = Новый СписокЗначений; - Обработчик = ИнформацияПоОбработчику.Ключ; - ОбрабатываемыеОбъектыПООчередям = ИнформацияПоОбработчику.Значение.ДанныеОбработчика; - Для Каждого ОбрабатываемыйОбъект Из ОбрабатываемыеОбъектыПООчередям Цикл - ИмяОбъекта = ОбрабатываемыйОбъект.Ключ; - Очередь = ОбрабатываемыйОбъект.Значение.Очередь; - СтрокаТаблицы = ТаблицаОбрабатываемыеДанные.Добавить(); - СтрокаТаблицы.Обработчик = Обработчик; - СтрокаТаблицы.ИмяОбъекта = ИмяОбъекта; - СтрокаТаблицы.Очередь = Очередь; - - СписокОбъектов.Добавить(ИмяОбъекта); - КонецЦикла; - ОбъектыОбработчика.Вставить(Обработчик, СписокОбъектов); - КонецЦикла; - - ОбъектыОбработчикаАдрес = ПоместитьВоВременноеХранилище(ОбъектыОбработчика, УникальныйИдентификатор); - ЗначениеВРеквизитФормы(ТаблицаОбрабатываемыеДанные, "ОбрабатываемыеДанные"); - -КонецПроцедуры - &НаСервере Функция ИзменяемыеОбработчики(Обработчик, ОбрабатываемыеДанныеТаблица, Очередь, ПриоритетЖелательноБыстрее, СписокОбъектов = Неопределено) diff --git a/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/РезультатыОбновленияПрограммы.mdo b/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/РезультатыОбновленияПрограммы.mdo index 389ca8765..dd4788351 100644 --- a/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/РезультатыОбновленияПрограммы.mdo +++ b/SSL/src/DataProcessors/РезультатыОбновленияПрограммы/РезультатыОбновленияПрограммы.mdo @@ -9,6 +9,7 @@ <key>ru</key> <value>Результаты обновления программы</value> </synonym> + <comment>АПК:78-выкл для вызова различных этапов обновления</comment> <defaultForm>DataProcessor.РезультатыОбновленияПрограммы.Form.ИндикацияХодаОтложенногоОбновленияИБ</defaultForm> <includeHelpInContents>true</includeHelpInContents> <help> diff --git a/SSL/src/DataProcessors/Сканирование/Forms/РезультатСканирования/Module.bsl b/SSL/src/DataProcessors/Сканирование/Forms/РезультатСканирования/Module.bsl index 8b962ffdb..fd07ece11 100644 --- a/SSL/src/DataProcessors/Сканирование/Forms/РезультатСканирования/Module.bsl +++ b/SSL/src/DataProcessors/Сканирование/Forms/РезультатСканирования/Module.bsl @@ -225,6 +225,7 @@ // Кнопка "Пересканировать" замещает выделенную (или единственную, если она одна) картинку // (или добавляет в конец новые картинки, если ничего не выделено) новым изображением (изображениями). +// &НаКлиенте Процедура Пересканировать(Команда) diff --git a/SSL/src/DataProcessors/СкрытиеКонфиденциальнойИнформации/Forms/Форма/Module.bsl b/SSL/src/DataProcessors/СкрытиеКонфиденциальнойИнформации/Forms/Форма/Module.bsl index 157b285fc..95fd3d7a8 100644 --- a/SSL/src/DataProcessors/СкрытиеКонфиденциальнойИнформации/Forms/Форма/Module.bsl +++ b/SSL/src/DataProcessors/СкрытиеКонфиденциальнойИнформации/Forms/Форма/Module.bsl @@ -254,6 +254,8 @@ ОповещениеОЗакрытии = Новый ОписаниеОповещения("СкрытиеКонфиденциальнойИнформацииЗавершение", ЭтотОбъект); МодульДлительныеОперацииКлиент.ОжидатьЗавершение(РезультатДлительнойОперации, ОповещениеОЗакрытии); Иначе + ОповеститьСпискиОбИзменении(); + Оповестить("СкрытиеКонфиденциальнойИнформации"); СообщитьПользователю(НСтр("ru = 'Скрытие конфиденциальной информации завершено.'")); КонецЕсли; @@ -339,10 +341,44 @@ ВызватьИсключение Результат.ПодробноеПредставлениеОшибки; КонецЕсли; + ОповеститьСпискиОбИзменении(); + Оповестить("СкрытиеКонфиденциальнойИнформации"); + СообщитьПользователю(НСтр("ru = 'Скрытие конфиденциальной информации завершено.'")); КонецПроцедуры +&НаКлиенте +Процедура ОповеститьСпискиОбИзменении() + + Для Каждого ВидОбъектов Из ОбрабатываемыеОбъекты.ПолучитьЭлементы() Цикл + Если ВидОбъектов.Имя <> "Справочники" + И ВидОбъектов.Имя <> "Документы" + И ВидОбъектов.Имя <> "ПланыВидовХарактеристик" + И ВидОбъектов.Имя <> "ПланыСчетов" + И ВидОбъектов.Имя <> "ПланыВидовРасчета" + И ВидОбъектов.Имя <> "БизнесПроцессы" + И ВидОбъектов.Имя <> "Задачи" Тогда + Продолжить; + КонецЕсли; + + Если ВидОбъектов.Пометка = 0 Тогда + Продолжить; + КонецЕсли; + + Для Каждого ОбъектВида Из ВидОбъектов.ПолучитьЭлементы() Цикл + Если ОбъектВида.Пометка = 0 Тогда + Продолжить; + КонецЕсли; + + Для Каждого Тип Из ОбъектВида.ТипЗначения.Типы() Цикл + ОповеститьОбИзменении(Тип); + КонецЦикла; + КонецЦикла; + КонецЦикла; + +КонецПроцедуры + &НаСервере Функция ЗаданиеВыполнено(ИдентификаторФоновогоЗадания = Неопределено) МодульДлительныеОперации = ОбщийМодуль("ДлительныеОперации"); diff --git a/SSL/src/DataProcessors/СкрытиеКонфиденциальнойИнформации/ObjectModule.bsl b/SSL/src/DataProcessors/СкрытиеКонфиденциальнойИнформации/ObjectModule.bsl index 2854b587e..c36c6487a 100644 --- a/SSL/src/DataProcessors/СкрытиеКонфиденциальнойИнформации/ObjectModule.bsl +++ b/SSL/src/DataProcessors/СкрытиеКонфиденциальнойИнформации/ObjectModule.bsl @@ -76,6 +76,16 @@ КонецПроцедуры +// Параметры: +// ОбъектМетаданных - ОбъектМетаданныхРегистрБухгалтерии +// - ОбъектМетаданныхРегистрНакопления +// - ОбъектМетаданныхРегистрРасчета +// - ОбъектМетаданныхРегистрСведений +// ПараметрыОтбора - Неопределено +// - Структура: +// * ОсновноеПолеОтбора - Строка +// * Субъекты - Массив +// Процедура ОбработатьРегистры(ОбъектМетаданных, ПараметрыОтбора) Если ОбъектМетаданных.Тип = "РегистрыСведений" Тогда @@ -235,7 +245,8 @@ Для Каждого Регистратор Из Регистраторы Цикл - НаборЗаписейРегистра.Отбор.Регистратор.Установить(Регистратор); + ПолеОтбора = НаборЗаписейРегистра.Отбор.Регистратор; // ЭлементОтбора + ПолеОтбора.Установить(Регистратор); ОбработатьНаборЗаписей(НаборЗаписейРегистра, ОбъектМетаданных, ПараметрыОтбора, Истина); КонецЦикла; @@ -261,7 +272,8 @@ Пока Выборка.Следующий() Цикл - НаборЗаписейРегистра.Отбор[ИмяПоляОтбора].Установить(Выборка[ИмяПоляОтбора]); + ЭлементОтбора = НаборЗаписейРегистра.Отбор[ИмяПоляОтбора]; // ЭлементОтбора + ЭлементОтбора.Установить(Выборка[ИмяПоляОтбора]); Если ЗначениеЗаполнено(Субъекты) Тогда ОбработатьНаборЗаписейСОтборомСубъекта(НаборЗаписейРегистра, ОбъектМетаданных, ПараметрыОтбора); @@ -281,7 +293,8 @@ Для Каждого ИмяИзмерения Из ИменаИзмеренийСТипомСубъекта Цикл Для Каждого Субъект Из Субъекты Цикл - НаборЗаписейРегистра.Отбор[ИмяИзмерения].Установить(Субъект); + ЭлементОтбора = НаборЗаписейРегистра.Отбор[ИмяИзмерения]; // ЭлементОтбора + ЭлементОтбора.Установить(Субъект); ОбработатьНаборЗаписей(НаборЗаписейРегистра, ОбъектМетаданных, , Истина); КонецЦикла; @@ -289,6 +302,20 @@ КонецПроцедуры + +// Параметры: +// НаборЗаписейРегистра - РегистрРасчетаНаборЗаписейИмяРегистраРасчета +// - РегистрБухгалтерииНаборЗаписейИмяРегистраБухгалтерии +// - РегистрНакопленияНаборЗаписейИмяРегистраНакопления +// - РегистрСведенийНаборЗаписейИмяРегистраСведений +// ОбъектМетаданных - ДеревоЗначений: +// * Имя - Строка +// ПараметрыОтбора - Структура +// - Неопределено: +// * ОсновноеПолеОтбора - Строка +// * Субъекты - Массив +// РегистрироватьНаУзлах - Булево +// Процедура ОбработатьНаборЗаписей(НаборЗаписейРегистра, ОбъектМетаданных, ПараметрыОтбора = Неопределено, РегистрироватьНаУзлах = Ложь) НаборЗаписейРегистра.Прочитать(); @@ -374,6 +401,15 @@ КонецПроцедуры + +// Параметры: +// ОбъектМетаданных - ДеревоЗначений: +// * Имя - Строка +// ПараметрыОтбора - Структура +// - Неопределено: +// * ОсновноеПолеОтбора - Строка +// * Субъекты - Массив +// Процедура ОбработатьОбъектМетаданных(ОбъектМетаданных, ПараметрыОтбора) ОбработкаПорциями = Ложь; @@ -387,7 +423,8 @@ Результат = НайтиПоСсылкам(Субъекты, Новый Массив, МассивОбъектов, Новый Массив); Результат.Свернуть("Данные"); - Результат.Колонки.Данные.Имя = "Ссылка"; + Колонка = Результат.Колонки.Данные; // КолонкаТаблицыЗначений + Колонка.Имя = "Ссылка"; Если Результат.Количество() = 0 И Объект = Субъекты[0].Метаданные() Тогда @@ -573,7 +610,8 @@ ИмяРегистраВерсииОбъектов = "ВерсииОбъектов"; НаборЗаписей = РегистрыСведений[ИмяРегистраВерсииОбъектов].СоздатьНаборЗаписей(); - НаборЗаписей.Отбор.Объект.Установить(СтрокаРезультата.Ссылка); + ЭлементОтбора = НаборЗаписей.Отбор.Объект; // ЭлементОтбора + ЭлементОтбора.Установить(СтрокаРезультата.Ссылка); ЗаписатьДанные(НаборЗаписей, Истина); @@ -613,10 +651,16 @@ //////////////////////////////////////////////////////////////////////////////// // Процедуры и функции формирования дерева метаданных. +// Параметры: +// Параметры - Структура: +// * ДеревоОбрабатываемыхОбъектов - ДеревоЗначений: +// ** Имя - Строка +// АдресХранилища - Строка +// Процедура ЗаполнитьДеревоОбрабатываемыхОбъектов(Параметры, АдресХранилища) Экспорт - ОбрабатываемыеМетаданные = Параметры.ОбрабатываемыеМетаданные; - ДеревоОбрабатываемыхОбъектов = Параметры.ДеревоОбрабатываемыхОбъектов; + ОбрабатываемыеМетаданные = Параметры.ОбрабатываемыеМетаданные; // ДеревоЗначений + ДеревоОбрабатываемыхОбъектов = Параметры.ДеревоОбрабатываемыхОбъектов; // ДеревоЗначений СохраненныеНастройки = Параметры.СохраненныеНастройки; РазделениеВключено = ОбщегоНазначения.РазделениеВключено(); @@ -634,7 +678,8 @@ СтрокаДерева.ПолноеИмя = ЭлементИмениПоТипуМетаданных(СтрокаДерева.Имя); СкрываемыеОбъекты = СкрываемыеОбъектыПоТипам[ТипМетаданных.Ключ]; - Для Каждого ОбъектМетаданных Из Метаданные[ТипМетаданных.Ключ] Цикл + ОбъектыМетаданных = Метаданные[ТипМетаданных.Ключ]; // Массив из ОбъектМетаданных + Для Каждого ОбъектМетаданных Из ОбъектыМетаданных Цикл Если РазделениеВключено Тогда ПолноеИмя = СтрокаДерева.ПолноеИмя + "." + ОбъектМетаданных.Имя; @@ -690,6 +735,12 @@ Возврат СкрываемыеОбъектыПоТипам; КонецФункции +// Параметры: +// ОбъектМетаданных - ОбъектМетаданных +// СтрокаДерева - СтрокаДереваЗначений: +// * Имя - Строка +// ТипМетаданных - Строка +// Процедура ДобавитьОбъекты(ОбъектМетаданных, СтрокаДерева, ТипМетаданных) Если ТипМетаданных.Ключ = "Константы" Тогда @@ -715,6 +766,7 @@ СтрокаОбъект.Картинка = КартинкиОбъектов[ТипМетаданных.Ключ]; СтрокаОбъект.Тип = ТипМетаданных.Ключ; СтрокаОбъект.ПолноеИмя = СтрокаДерева.ПолноеИмя + "." + СтрокаОбъект.Имя; + СтрокаОбъект.ТипЗначения = ОписаниеТипаОбъекта(СтрокаДерева.ПолноеИмя, СтрокаОбъект.Имя); ЭтоРегистр = (СтрНайти(ТипМетаданных.Ключ, "Регистры") > 0); // Добавление стандартных реквизитов. @@ -742,6 +794,52 @@ КонецПроцедуры +Функция ОписаниеТипаОбъекта(КлассОМ, ИмяОбъекта) + + Если ВРег(КлассОМ) = "ПЛАНОБМЕНА" Тогда + Менеджер = ПланыОбмена; + + ИначеЕсли ВРег(КлассОМ) = "СПРАВОЧНИК" Тогда + Менеджер = Справочники; + + ИначеЕсли ВРег(КлассОМ) = "ДОКУМЕНТ" Тогда + Менеджер = Документы; + + ИначеЕсли ВРег(КлассОМ) = "ЖУРНАЛДОКУМЕНТОВ" Тогда + Менеджер = ЖурналыДокументов; + + ИначеЕсли ВРег(КлассОМ) = "ПЕРЕЧИСЛЕНИЕ" Тогда + Менеджер = Перечисления; + + ИначеЕсли ВРег(КлассОМ) = "ПЛАНВИДОВХАРАКТЕРИСТИК" Тогда + Менеджер = ПланыВидовХарактеристик; + + ИначеЕсли ВРег(КлассОМ) = "ПЛАНСЧЕТОВ" Тогда + Менеджер = ПланыСчетов; + + ИначеЕсли ВРег(КлассОМ) = "ПЛАНВИДОВРАСЧЕТА" Тогда + Менеджер = ПланыВидовРасчета; + + ИначеЕсли ВРег(КлассОМ) = "БИЗНЕСПРОЦЕСС" Тогда + Менеджер = БизнесПроцессы; + + ИначеЕсли ВРег(КлассОМ) = "ЗАДАЧА" Тогда + Менеджер = Задачи; + + Иначе + Менеджер = Неопределено; + КонецЕсли; + + Если Менеджер <> Неопределено Тогда + Массив = Новый Массив; + Массив.Добавить(ТипЗнч(Менеджер[ИмяОбъекта].ПустаяСсылка())); + Возврат Новый ОписаниеТипов(Массив); + КонецЕсли; + + Возврат Неопределено; + +КонецФункции + Процедура ДобавитьСвойства(ОбъектМетаданных, СтрокаДерева, Тип, ЕстьОбрабатываемыеСвойства) Если Тип = "СтандартныеРеквизиты" Тогда @@ -818,7 +916,6 @@ КонецЦикла; Представление = " (" + Представление + ")"; - Возврат Представление; КонецФункции @@ -1020,6 +1117,9 @@ //////////////////////////////////////////////////////////////////////////////// // Прочие процедуры и функции. +// Параметры: +// ОбъектМетаданных - ОбъектМетаданныхКонстанта +// Процедура ОбработатьКонстанты(ОбъектМетаданных) ЗначениеКонстанты = Константы[ОбъектМетаданных.Имя].Получить(); @@ -1058,9 +1158,7 @@ Процедура ОбработатьСтроку(Свойство, ПараметрыСвойства, Обработано) - Индекс = ГенераторСлучайныхЧисел.СлучайноеЧисло(100000, 999999); - Индекс = Строка(Индекс); - Индекс = СтрЗаменить(Индекс, Символы.НПП, ""); + Индекс = XMLСтрока(ГенераторСлучайныхЧисел.СлучайноеЧисло(100000, 999999)); ПравилоОбработки = ПравилоСтрока; Если ПараметрыСвойства.ПравилоОбработки.Количество() > 0 Тогда diff --git a/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/ObjectModule.bsl b/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/ObjectModule.bsl index 5fc4144c2..c9a412e78 100644 --- a/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/ObjectModule.bsl +++ b/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/ObjectModule.bsl @@ -278,7 +278,7 @@ // Таблица сопоставления объектов. // // Возвращаемое значение: -// ТаблицаЗначений - Таблица сопоставления объектов. +// ТаблицаЗначений - таблица сопоставления объектов. // Функция ТаблицаСопоставления() Экспорт @@ -309,7 +309,7 @@ // Количество объектов текущего типа данных в этой информационной базе. // // Возвращаемое значение: -// Число - Количество объектов текущего типа данных в этой информационной базе. +// Число - количество объектов текущего типа данных в этой информационной базе. // Функция КоличествоОбъектовВПриемнике() Экспорт @@ -320,7 +320,7 @@ // Количество объектов, которые сопоставлены для текущего типа данных. // // Возвращаемое значение: -// Число - Количество объектов, которые сопоставлены для текущего типа данных. +// Число - количество объектов, которые сопоставлены для текущего типа данных. // Функция КоличествоОбъектовСопоставленных() Экспорт @@ -331,7 +331,7 @@ // Количество объектов, которые не сопоставлены для текущего типа данных. // // Возвращаемое значение: -// Число - Количество объектов, которые не сопоставлены для текущего типа данных. +// Число - количество объектов, которые не сопоставлены для текущего типа данных. // Функция КоличествоОбъектовНесопоставленных() Экспорт diff --git a/SSL/src/DataProcessors/ТекущиеДела/Forms/Форма/Module.bsl b/SSL/src/DataProcessors/ТекущиеДела/Forms/Форма/Module.bsl index eff1cf546..d2e9d5817 100644 --- a/SSL/src/DataProcessors/ТекущиеДела/Forms/Форма/Module.bsl +++ b/SSL/src/DataProcessors/ТекущиеДела/Forms/Форма/Module.bsl @@ -71,7 +71,7 @@ #Область ОбработчикиСобытийЭлементовШапкиФормы // Параметры: -// Элемент - ПолеФормы - +// Элемент - ПолеФормы // &НаКлиенте Процедура Подключаемый_ОбработатьНажатиеНаГиперссылку(Элемент, СтандартнаяОбработка) @@ -104,7 +104,7 @@ КонецПроцедуры // Параметры: -// Элемент - ПолеФормы - +// Элемент - ПолеФормы // &НаКлиенте Процедура Подключаемый_ОбработатьНажатиеНаКартинку(Элемент) diff --git a/SSL/src/DataProcessors/ТранспортСообщенийОбменаFILE/ObjectModule.bsl b/SSL/src/DataProcessors/ТранспортСообщенийОбменаFILE/ObjectModule.bsl index 1bf0370bf..f0d1606bf 100644 --- a/SSL/src/DataProcessors/ТранспортСообщенийОбменаFILE/ObjectModule.bsl +++ b/SSL/src/DataProcessors/ТранспортСообщенийОбменаFILE/ObjectModule.bsl @@ -78,7 +78,7 @@ // Получает сообщение обмена с заданного ресурса во временный каталог сообщения обмена. // // Параметры: -// Нет. +// ПроверкаНаличия - Булево // // Возвращаемое значение: // Булево - Истина - удалось выполнить функцию, Ложь - произошла ошибка. diff --git a/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Commands/УдалениеПомеченныхОбъектов/CommandModule.bsl b/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Commands/УдалениеПомеченныхОбъектов/CommandModule.bsl index 98e99f74d..f47a189e9 100644 --- a/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Commands/УдалениеПомеченныхОбъектов/CommandModule.bsl +++ b/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Commands/УдалениеПомеченныхОбъектов/CommandModule.bsl @@ -10,7 +10,9 @@ &НаКлиенте Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) - ОткрытьФорму("Обработка.УдалениеПомеченныхОбъектов.Форма", , ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно, ПараметрыВыполненияКоманды.НавигационнаяСсылка); + ОткрытьФорму("Обработка.УдалениеПомеченныхОбъектов.Форма", , ПараметрыВыполненияКоманды.Источник, + ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно, + ПараметрыВыполненияКоманды.НавигационнаяСсылка, , РежимОткрытияОкнаФормы.Независимый); КонецПроцедуры #КонецОбласти diff --git a/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Forms/ВыборОбъектовМетаданныхПоПодсистемам/Form.form b/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Forms/ВыборОбъектовМетаданныхПоПодсистемам/Form.form new file mode 100644 index 000000000..9babfc9d7 --- /dev/null +++ b/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Forms/ВыборОбъектовМетаданныхПоПодсистемам/Form.form @@ -0,0 +1,928 @@ +<?xml version="1.0" encoding="UTF-8"?> +<form:Form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:form="http://g5.1c.ru/v8/dt/form"> + <title> + <key>ru</key> + <value>Область поиска</value> + + + ГруппаОбластьПоиска + 29 + + КомандаОК + 39 + true + true + + true + + + КомандаОКРасширеннаяПодсказка + 40 + Label + true + true + + Left + + + UsualButton + Form.Command.КомандаОК + Auto + true + true + true + UserCmds + Auto + + + ПереключательВездеВРазделах + 1 + true + true + + true + + + ПереключательВездеВРазделах + + None + + OnChange + ОбластьПоискаПриИзменении + + + ПереключательВездеВРазделахРасширеннаяПодсказка + 3 + Label + true + true + + Left + + + + ПереключательВездеВРазделахКонтекстноеМеню + 2 + true + + RadioButtonField + Enter + true + Left + true + + RadioButtons + + + ru + Везде + + + 0 + + + + + ru + В разделах + + + 1 + + + Vertical + + + + КоманднаяПанель + 31 + + Команды + 33 + + УстановитьФлажки + 37 + true + true + + true + + + УстановитьФлажкиРасширеннаяПодсказка + 38 + Label + true + true + + Left + + + Form.Command.УстановитьФлажки + Normal + Auto + true + true + UserCmds + Auto + + + СнятьФлажки + 35 + true + true + + true + + + СнятьФлажкиРасширеннаяПодсказка + 36 + Label + true + true + + Left + + + Form.Command.СнятьФлажки + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + КомандыРасширеннаяПодсказка + 34 + Label + true + true + + Left + + + + Compact + + + + РазвернутьВсе + 41 + true + true + + true + + + РазвернутьВсеРасширеннаяПодсказка + 42 + Label + true + true + + Left + + + Form.Command.РазвернутьВсе + Normal + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + СвернутьВсе + 43 + true + true + + true + + + СвернутьВсеРасширеннаяПодсказка + 44 + Label + true + true + + Left + + + Form.Command.СвернутьВсе + Normal + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + + КоманднаяПанельРасширеннаяПодсказка + 32 + Label + true + true + + Left + + + CommandBar + + Right + Form + + + true + true + + true + + + ГруппаОбластьПоискаРасширеннаяПодсказка + 30 + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Auto + true + true + Auto + Auto + + + + ДеревоРазделовПоиска + 4 + true + true + + true + + + ДеревоРазделовПоиска + + None + Add + Change + Copy + Delete + EndEdit + HierarchicalList + List + MoveDown + MoveUp + ShowRowRearrangement + SortListAsc + SortListDesc + Tree + + Группа + 23 + + Пометка + 20 + true + true + + true + + + ДеревоРазделовПоиска.Пометка + + None + + OnChange + ДеревоРазделовПоискаПометкаПриИзменении + + + ПометкаРасширеннаяПодсказка + 22 + Label + true + true + + Left + + + + ПометкаКонтекстноеМеню + 21 + true + + CheckBoxField + Auto + true + Left + true + + true + + + + Картинка + 45 + true + true + + true + + + ДеревоРазделовПоиска.Картинка + + None + + КартинкаРасширеннаяПодсказка + 47 + Label + true + true + + Left + + + + КартинкаКонтекстноеМеню + 46 + true + + PictureField + Auto + true + Left + true + + true + true + true + true + + + 1 + + + + + Раздел + 17 + true + true + + true + + + ДеревоРазделовПоиска.Раздел + + + РазделРасширеннаяПодсказка + 19 + Label + true + true + + Left + + + + РазделКонтекстноеМеню + 18 + true + + InputField + true + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + true + true + + true + + + ГруппаРасширеннаяПодсказка + 24 + Label + true + true + + Left + + + ColumnGroup + + InCell + auto + true + + + None + + ДеревоРазделовПоискаКоманднаяПанель + 6 + Left + true + + + ДеревоРазделовПоискаСтрокаПоиска + 8 + + ДеревоРазделовПоискаСтрокаПоискаРасширеннаяПодсказка + 10 + Label + true + true + + Left + + + + ДеревоРазделовПоискаСтрокаПоискаКонтекстноеМеню + 9 + true + + ДеревоРазделовПоиска + + true + + + + ДеревоРазделовПоискаСостояниеПросмотра + 11 + + ДеревоРазделовПоискаСостояниеПросмотраРасширеннаяПодсказка + 13 + Label + true + true + + Left + + + + ДеревоРазделовПоискаСостояниеПросмотраКонтекстноеМеню + 12 + true + + ViewStatusAddition + ДеревоРазделовПоиска + + true + + + + ДеревоРазделовПоискаУправлениеПоиском + 14 + + ДеревоРазделовПоискаУправлениеПоискомРасширеннаяПодсказка + 16 + Label + true + true + + Left + + + + ДеревоРазделовПоискаУправлениеПоискомКонтекстноеМеню + 15 + true + + SearchControlAddition + ДеревоРазделовПоиска + + true + + + + ДеревоРазделовПоискаРасширеннаяПодсказка + 7 + Label + true + true + + Left + + + + ДеревоРазделовПоискаКонтекстноеМеню + 5 + true + + Tree + true + true + true +
    true
    + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + true + true + true +
    + Top + true + + ФормаКоманднаяПанель + -1 + Right + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + Abort + Close + CustomizeForm + Ignore + No + RestoreValues + Retry + SaveValues + Yes + LockOwner + true + true + Vertical + true + true + true + auto + true + + Объект + 1 + + DataProcessorObject.ПолнотекстовыйПоискВДанных + + + true + + + true + +
    true
    +
    + + ПереключательВездеВРазделах + + <key>ru</key> + <value>Переключатель везде в разделах</value> + + 2 + + Number + + 1 + true + + + + true + + + true + + + + ДеревоРазделовПоиска + + <key>ru</key> + <value>Дерево разделов поиска</value> + + 3 + + ValueTree + + + true + + + true + + + Раздел + + <key>ru</key> + <value>Раздел</value> + + 1 + + String + + + + true + + + true + + + + Пометка + + <key>ru</key> + <value>Пометка</value> + + 2 + + Number + + 1 + true + + + + true + + + true + + + + ЭтоОбъектМетаданных + 3 + + Boolean + + + true + + + true + + + + ПутьКДанным + 4 + + String + + + + true + + + true + + + + ОбъектМД + 5 + + CatalogRef.ИдентификаторыОбъектовМетаданных + + + true + + + true + + + + Картинка + + <key>ru</key> + <value>Картинка</value> + + 6 + + Picture + + + true + + + true + + + + ЭтоПодраздел + 7 + + Boolean + + + true + + + true + + + + + ОбластиПоиска + 4 + + ValueList + + + true + + + true + + + + + + + ТекущийРаздел + 5 + + String + + + + true + + + true + + + + ИдентификаторСтроки + 6 + + Number + + 10 + + + + true + + + true + + + + УстановитьФлажки + + <key>ru</key> + <value>Установить флажки</value> + + 1 + + ru + Установить флажки + + + true + + + StdPicture.CheckAll + + + + УстановитьФлажки + + + DontUse + Auto + + + СнятьФлажки + + <key>ru</key> + <value>Снять флажки</value> + + 2 + + ru + Снять флажки + + + true + + + StdPicture.UncheckAll + + + + СнятьФлажки + + + DontUse + Auto + + + КомандаОК + + <key>ru</key> + <value>Выбрать</value> + + 3 + + ru + Команда ОК + + + true + + + + КомандаОК + + + DontUse + Auto + + + СвернутьВсе + + <key>ru</key> + <value>Свернуть</value> + + 4 + + ru + Свернуть все + + + true + + + + СвернутьВсе + + + DontUse + Auto + + + РазвернутьВсе + + <key>ru</key> + <value>Развернуть</value> + + 5 + + ru + Развернуть все + + + true + + + + РазвернутьВсе + + + DontUse + Auto + + + ОбластиПоиска + + ValueList + + + + + + + + diff --git a/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Forms/ВыборОбъектовМетаданныхПоПодсистемам/Help/ru.html b/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Forms/ВыборОбъектовМетаданныхПоПодсистемам/Help/ru.html new file mode 100644 index 000000000..5ad24c67a --- /dev/null +++ b/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Forms/ВыборОбъектовМетаданныхПоПодсистемам/Help/ru.html @@ -0,0 +1,8 @@ + +

    Предназначено для настройки области полнотекстового поиска.

    +

    Можно ограничить область полнотекстового поиска с помощью переключателя, тем самым увеличив точность результатов поиска.

    +

    По умолчанию поиск производится Везде.

    +

    Ограничение области поиска

    +
    • С помощью переключателя укажите В разделах. +
    • Выберите разделы и списки, в которых будет производиться поиск, с помощью флажков. +
    • Нажмите ОК.
    \ No newline at end of file diff --git a/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Forms/ВыборОбъектовМетаданныхПоПодсистемам/Module.bsl b/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Forms/ВыборОбъектовМетаданныхПоПодсистемам/Module.bsl new file mode 100644 index 000000000..b9e492983 --- /dev/null +++ b/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Forms/ВыборОбъектовМетаданныхПоПодсистемам/Module.bsl @@ -0,0 +1,814 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2020, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + УстановитьУсловноеОформление(); + + ОбластиПоиска = Параметры.ОбластиПоиска; + ПереключательВездеВРазделах = ОбластиПоиска.Количество(); + + ВыбранныеИдентификаторы = Новый Соответствие(); + ИмяИдентификаторы = ОбщегоНазначения.ИдентификаторыОбъектовМетаданных(Параметры.ОбластиПоиска.ВыгрузитьЗначения()); + Для Каждого Элемент Из ИмяИдентификаторы Цикл + ВыбранныеИдентификаторы.Вставить(Элемент.Значение, Истина); + КонецЦикла; + ПриЗаполненииДереваРазделовПоиска(ВыбранныеИдентификаторы); + + ИскатьВРазделах = ИскатьВРазделах(ПереключательВездеВРазделах); + ОбновитьДоступностьПриПереключенииВездеВРазделах(Элементы.ДеревоРазделовПоиска, ИскатьВРазделах); + ОбновитьДоступностьПриПереключенииВездеВРазделах(Элементы.Команды, ИскатьВРазделах); + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + РазвернутьТекущийРазделДереваРазделов(Элементы.ДеревоРазделовПоиска) + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ОбластьПоискаПриИзменении(Элемент) + + ИскатьВРазделах = ИскатьВРазделах(ПереключательВездеВРазделах); + ОбновитьДоступностьПриПереключенииВездеВРазделах(Элементы.ДеревоРазделовПоиска, ИскатьВРазделах); + ОбновитьДоступностьПриПереключенииВездеВРазделах(Элементы.Команды, ИскатьВРазделах); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыДеревоРазделовПоиска + +&НаКлиенте +Процедура ДеревоРазделовПоискаПометкаПриИзменении(Элемент) + + ЭлементДерева = ТекущийЭлемент.ТекущиеДанные; + + ПриПометкеЭлементаДерева(ЭлементДерева); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура КомандаОК(Команда) + + ТекущиеДанные = Элементы.ДеревоРазделовПоиска.ТекущиеДанные; + + ТекущийРаздел = ""; + Если ТекущиеДанные <> Неопределено Тогда + ТекущийРаздел = ТекущиеДанные.Раздел; + КонецЕсли; + ИдентификаторСтроки = Элементы.ДеревоРазделовПоиска.ТекущаяСтрока; + + НастройкиПоиска = Новый СписокЗначений(); + Если ИскатьВРазделах(ПереключательВездеВРазделах) Тогда + НастройкиПоиска = СписокОбластейДереваРазделов(); + КонецЕсли; + + Закрыть(НастройкиПоиска); + +КонецПроцедуры + +&НаКлиенте +Процедура СнятьФлажки(Команда) + + ПометитьВсеЭлементыДереваРекурсивно(ДеревоРазделовПоиска, ПометкаФлажокНеУстановлен()); + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьФлажки(Команда) + + ПометитьВсеЭлементыДереваРекурсивно(ДеревоРазделовПоиска, ПометкаФлажокУстановлен()); + +КонецПроцедуры + +&НаКлиенте +Процедура СвернутьВсе(Команда) + + КоллекцияЭлементовДерева = ДеревоРазделовПоиска.ПолучитьЭлементы(); + ЭлементДеревоРазделов = Элементы.ДеревоРазделовПоиска; + + Для каждого ЭлементДерева Из КоллекцияЭлементовДерева Цикл + ЭлементДеревоРазделов.Свернуть(ЭлементДерева.ПолучитьИдентификатор()); + КонецЦикла; + +КонецПроцедуры + +&НаКлиенте +Процедура РазвернутьВсе(Команда) + + КоллекцияЭлементовДерева = ДеревоРазделовПоиска.ПолучитьЭлементы(); + ЭлементДеревоРазделов = Элементы.ДеревоРазделовПоиска; + + Для каждого ЭлементДерева Из КоллекцияЭлементовДерева Цикл + ЭлементДеревоРазделов.Развернуть(ЭлементДерева.ПолучитьИдентификатор(), Истина); + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +#Область СлужебныеОбработчикиСобытий + +&НаСервере +Процедура ПриЗаполненииДереваРазделовПоиска(ВыбранныеИдентификаторы) + + Дерево = РеквизитФормыВЗначение("ДеревоРазделовПоиска"); + ЗаполнитьДеревоРазделовПоиска(Дерево, ВыбранныеИдентификаторы); + ЗначениеВРеквизитФормы(Дерево, "ДеревоРазделовПоиска"); + + ПриУстановкеОбластиПоиска(ДеревоРазделовПоиска); + +КонецПроцедуры + +&НаСервере +Процедура ПриУстановкеОбластиПоиска(ДеревоРазделовПоиска) + + Для каждого ОбластьПоиска Из ОбластиПоиска Цикл + + ЭлементДерева = Неопределено; + ТекущийРаздел = Неопределено; + ВложенныеЭлементы = ДеревоРазделовПоиска.ПолучитьЭлементы(); + + // Поиск элемента дерева по пути к данным. + + ПутьКДанным = ОбластьПоиска.Представление; + Разделы = СтрРазделить(ПутьКДанным, ",", Ложь); + Для каждого ТекущийРаздел Из Разделы Цикл + Для каждого ЭлементДерева Из ВложенныеЭлементы Цикл + + Если ЭлементДерева.Раздел = ТекущийРаздел Тогда + ВложенныеЭлементы = ЭлементДерева.ПолучитьЭлементы(); + Прервать; + КонецЕсли; + + КонецЦикла; + КонецЦикла; + + // Если элемент дерева найден, установка пометки. + + Если ЭлементДерева <> Неопределено + И ЭлементДерева.Раздел = ТекущийРаздел Тогда + + ЭлементДерева.Пометка = ПометкаФлажокУстановлен(); + ПометитьЭлементыРодителейРекурсивно(ЭлементДерева); + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +// Параметры: +// ЭлементДерева - ДанныеФормыЭлементДерева: +// * Пометка - Число - обязательный реквизит дерева. +// * ЭтоОбъектМетаданных - Булево - обязательный реквизит дерева. +// +&НаКлиентеНаСервереБезКонтекста +Процедура ПриПометкеЭлементаДерева(ЭлементДерева) + + ЭлементДерева.Пометка = СледующееЗначениеПометкиЭлемента(ЭлементДерева); + + Если ТребуетсяПометитьВложенныеЭлементы(ЭлементДерева) Тогда + ПометитьВложенныеЭлементыРекурсивно(ЭлементДерева); + КонецЕсли; + + Если ЭлементДерева.Пометка = ПометкаФлажокНеУстановлен() Тогда + ЭлементДерева.Пометка = ЗначениеПометкиОтносительноВложенныхЭлементов(ЭлементДерева); + КонецЕсли; + + ПометитьЭлементыРодителейРекурсивно(ЭлементДерева); + +КонецПроцедуры + +#КонецОбласти + +#Область МодельПредставления + +&НаКлиентеНаСервереБезКонтекста +Функция ПометкаФлажокНеУстановлен() + + Возврат 0; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ПометкаФлажокУстановлен() + + Возврат 1; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ПометкаКвадрат() + + Возврат 2; + +КонецФункции + +&НаСервереБезКонтекста +Процедура ЗаполнитьДеревоРазделовПоиска(ДеревоРазделовПоиска, ВыбранныеИдентификаторы) + + ДобавитьСтрокиДереваРазделовПоискаПоПодсистемамРекурсивно(ДеревоРазделовПоиска, Метаданные.Подсистемы, ВыбранныеИдентификаторы); + ЗаполнениеСлужебныхСвойствПослеПолученияРазделовРекурсивно(ДеревоРазделовПоиска); + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура ДобавитьСтрокиДереваРазделовПоискаПоПодсистемамРекурсивно(ТекущаяСтрокаДерева, Подсистемы, ВыбранныеИдентификаторы) + + Для каждого Подсистема Из Подсистемы Цикл + + Если ОбъектМетаданныхДоступен(Подсистема) Тогда + + НоваяСтрокаПодсистема = НовыйЭлементДереваРаздел(ТекущаяСтрокаДерева, Подсистема); + + ДобавитьСтрокиДереваРазделовПоискаПоСоставуРекурсивно(НоваяСтрокаПодсистема, Подсистема.Состав, ВыбранныеИдентификаторы); + + Если Подсистема.Подсистемы.Количество() > 0 Тогда + ДобавитьСтрокиДереваРазделовПоискаПоПодсистемамРекурсивно(НоваяСтрокаПодсистема, Подсистема.Подсистемы, ВыбранныеИдентификаторы); + КонецЕсли; + + Если НоваяСтрокаПодсистема.Строки.Количество() = 0 Тогда + ТекущаяСтрокаДерева.Строки.Удалить(НоваяСтрокаПодсистема); + КонецЕсли; + + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура ДобавитьСтрокиДереваРазделовПоискаПоСоставуРекурсивно(ТекущаяСтрокаДерева, СоставПодсистемы, ВыбранныеИдентификаторы) + + Для каждого ОбъектПодсистемы Из СоставПодсистемы Цикл + + Если ОбщегоНазначения.ЭтоСправочник(ОбъектПодсистемы) + Или ОбщегоНазначения.ЭтоДокумент(ОбъектПодсистемы) + Или ОбщегоНазначения.ЭтоПланВидовРасчета(ОбъектПодсистемы) + Или ОбщегоНазначения.ЭтоПланВидовХарактеристик(ОбъектПодсистемы) + Или ОбщегоНазначения.ЭтоПланОбмена(ОбъектПодсистемы) + Или ОбщегоНазначения.ЭтоПланСчетов(ОбъектПодсистемы) + Или ОбщегоНазначения.ЭтоБизнесПроцесс(ОбъектПодсистемы) + Или ОбщегоНазначения.ЭтоЗадача(ОбъектПодсистемы) Тогда + + Если ОбъектМетаданныхДоступен(ОбъектПодсистемы) Тогда + + НоваяСтрокаОбъект = НовыйЭлементДереваОбъектМетаданных(ТекущаяСтрокаДерева, ОбъектПодсистемы); + НоваяСтрокаОбъект.Пометка = ВыбранныеИдентификаторы[НоваяСтрокаОбъект.ОбъектМД]; + Если ОбщегоНазначения.ЭтоСправочник(ОбъектПодсистемы) Тогда + ПодчиненныеСправочники = ПодчиненныеСправочники(ОбъектПодсистемы); + ДобавитьСтрокиДереваРазделовПоискаПоСоставуРекурсивно(НоваяСтрокаОбъект, ПодчиненныеСправочники, ВыбранныеИдентификаторы); + КонецЕсли; + + КонецЕсли; + + ИначеЕсли ОбщегоНазначения.ЭтоЖурналДокументов(ОбъектПодсистемы) Тогда + + Если ОбъектМетаданныхДоступен(ОбъектПодсистемы) Тогда + + НоваяСтрокаЖурнал = НовыйЭлементДереваРаздел(ТекущаяСтрокаДерева, ОбъектПодсистемы); + + ДобавитьСтрокиДереваРазделовПоискаПоСоставуРекурсивно(НоваяСтрокаЖурнал, ОбъектПодсистемы.РегистрируемыеДокументы, ВыбранныеИдентификаторы); + + Если НоваяСтрокаЖурнал.Строки.Количество() = 0 Тогда + ТекущаяСтрокаДерева.Строки.Удалить(НоваяСтрокаЖурнал); + КонецЕсли; + + КонецЕсли; + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция НовыйЭлементДереваРаздел(ТекущаяСтрокаДерева, Раздел) + + ПредставлениеРаздела = Раздел; + Если ОбщегоНазначения.ЭтоЖурналДокументов(Раздел) Тогда + ПредставлениеРаздела = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = '%1 (Журнал)'"), ПредставлениеРаздела); + КонецЕсли; + + НоваяСтрока = ТекущаяСтрокаДерева.Строки.Добавить(); + НоваяСтрока.Раздел = ПредставлениеРаздела; + + Если ЭтоКорневаяПодсистема(Раздел) Тогда + НоваяСтрока.Картинка = Раздел.Картинка; + КонецЕсли; + + Возврат НоваяСтрока; + +КонецФункции + +&НаСервереБезКонтекста +Функция НовыйЭлементДереваОбъектМетаданных(ТекущаяСтрокаДерева, ОбъектМетаданных) + + ПредставлениеОбъекта = ОбщегоНазначения.ПредставлениеСписка(ОбъектМетаданных); + + НоваяСтрока = ТекущаяСтрокаДерева.Строки.Добавить(); + НоваяСтрока.Раздел = ПредставлениеОбъекта; + НоваяСтрока.ОбъектМД = ОбщегоНазначения.ИдентификаторОбъектаМетаданных(ОбъектМетаданных); + + Возврат НоваяСтрока; + +КонецФункции + +&НаСервереБезКонтекста +Процедура ЗаполнениеСлужебныхСвойствПослеПолученияРазделовРекурсивно(ТекущаяСтрокаДерева) + + Если ТипЗнч(ТекущаяСтрокаДерева) = Тип("СтрокаДереваЗначений") Тогда + + // Заполнение ПутьКДанным и ЭтоПодраздел и ЭтоОбъектМетаданных выполняется после формирования дерева + // для того, чтобы корректно расставить эти признаки для добавленных в событии + // ПолнотекстовыйПоискСерверПереопределяемый.ПриПолученииРазделовПолнотекстовогоПоиска + // разделов и освободить разработчиков конфигурации от необходимости думать над этими полями. + + ЭтоОбъектМетаданных = ЗначениеЗаполнено(ТекущаяСтрокаДерева.ОбъектМД); + + ТекущаяСтрокаДерева.ЭтоОбъектМетаданных = ЭтоОбъектМетаданных; + + Если ТекущаяСтрокаДерева.Уровень() = 0 Тогда + ТекущаяСтрокаДерева.ПутьКДанным = ТекущаяСтрокаДерева.Раздел; + Иначе + ТекущаяСтрокаДерева.ЭтоПодраздел = Не ЭтоОбъектМетаданных; + ТекущаяСтрокаДерева.ПутьКДанным = ТекущаяСтрокаДерева.Родитель.ПутьКДанным + "," + ТекущаяСтрокаДерева.Раздел; + КонецЕсли; + + КонецЕсли; + + Для каждого ПодчиненнаяСтрока Из ТекущаяСтрокаДерева.Строки Цикл + ЗаполнениеСлужебныхСвойствПослеПолученияРазделовРекурсивно(ПодчиненнаяСтрока); + ПодчиненнаяСтрока.Строки.Сортировать("ЭтоПодраздел, Раздел"); + КонецЦикла; + +КонецПроцедуры + +&НаСервере +Функция СписокОбластейДереваРазделов() + + Дерево = РеквизитФормыВЗначение("ДеревоРазделовПоиска"); + + СписокОбластейИдентификаторы = Новый СписокЗначений; + ЗаполнитьСписокОбластейРекурсивно(СписокОбластейИдентификаторы, Дерево.Строки); + СписокОбластей = ИдентификаторыВСписокОбластей(СписокОбластейИдентификаторы); + + Возврат СписокОбластей; + +КонецФункции + +&НаСервере +Функция ИдентификаторыВСписокОбластей(СписокОбластейИдентификаторы) + Результат = Новый СписокЗначений(); + + Запрос = Новый Запрос("ВЫБРАТЬ + | ИдентификаторыОбъектовМетаданных.ПолноеИмя КАК ПолноеИмя, + | ИдентификаторыОбъектовМетаданных.Представление КАК Представление + |ИЗ + | Справочник.ИдентификаторыОбъектовМетаданных КАК ИдентификаторыОбъектовМетаданных + |ГДЕ + | ИдентификаторыОбъектовМетаданных.Ссылка В (&Идентификаторы) + | + |ОБЪЕДИНИТЬ ВСЕ + | + |ВЫБРАТЬ + | ИдентификаторыОбъектовРасширений.ПолноеИмя, + | ИдентификаторыОбъектовРасширений.Представление + |ИЗ + | Справочник.ИдентификаторыОбъектовРасширений КАК ИдентификаторыОбъектовРасширений + |ГДЕ + | ИдентификаторыОбъектовРасширений.Ссылка В (&Идентификаторы)"); + Запрос.УстановитьПараметр("Идентификаторы", СписокОбластейИдентификаторы); + Выборка = Запрос.Выполнить().Выбрать(); + + Пока (Выборка.Следующий()) Цикл + Результат.Добавить(Выборка.ПолноеИмя, Выборка.Представление); + КонецЦикла; + + Возврат Результат; +КонецФункции + +&НаСервереБезКонтекста +Процедура ЗаполнитьСписокОбластейРекурсивно(СписокОбластей, СтрокиДереваРазделов) + + Для каждого СтрокаРаздел Из СтрокиДереваРазделов Цикл + + Если СтрокаРаздел.Пометка = ПометкаФлажокУстановлен() Тогда + + Если СтрокаРаздел.ЭтоОбъектМетаданных Тогда + СписокОбластей.Добавить(СтрокаРаздел.ОбъектМД, СтрокаРаздел.ПутьКДанным); + КонецЕсли; + + КонецЕсли; + + ЗаполнитьСписокОбластейРекурсивно(СписокОбластей, СтрокаРаздел.Строки); + + КонецЦикла; + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Функция ИскатьВРазделах(ПереключательВездеВРазделах) + + Возврат (ПереключательВездеВРазделах = 1); + +КонецФункции + +#КонецОбласти + +#Область Представления + +&НаСервере +Процедура УстановитьУсловноеОформление() + + УсловноеОформление.Элементы.Очистить(); + + Элемент = УсловноеОформление.Элементы.Добавить(); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Раздел.Имя); + + ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДеревоРазделовПоиска.ЭтоПодраздел"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = Истина; + + Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветРазделаПанелиФункций); + +КонецПроцедуры + +#КонецОбласти + +#Область ИнтерактивнаяЛогикаПредставления + +&НаКлиентеНаСервереБезКонтекста +Процедура ОбновитьДоступностьПриПереключенииВездеВРазделах(Элемент, ИскатьВРазделах) + + Элемент.Доступность = ИскатьВРазделах; + +КонецПроцедуры + +&НаКлиенте +Процедура РазвернутьТекущийРазделДереваРазделов(Элемент) + + // Перейдем к разделу, с которым работали при предыдущих настройках. + Если Не ПустаяСтрока(ТекущийРаздел) И ИдентификаторСтроки <> 0 Тогда + + РазделПоиска = ДеревоРазделовПоиска.НайтиПоИдентификатору(ИдентификаторСтроки); + Если РазделПоиска = Неопределено + Или РазделПоиска.Раздел <> ТекущийРаздел Тогда + Возврат; + КонецЕсли; + + РодительРаздела = РазделПоиска.ПолучитьРодителя(); + Пока РодительРаздела <> Неопределено Цикл + Элементы.ДеревоРазделовПоиска.Развернуть(РодительРаздела.ПолучитьИдентификатор()); + РодительРаздела = РодительРаздела.ПолучитьРодителя(); + КонецЦикла; + + Элементы.ДеревоРазделовПоиска.ТекущаяСтрока = ИдентификаторСтроки; + + КонецЕсли; + +КонецПроцедуры + +// Параметры: +// ЭлементДерева - ДанныеФормыЭлементДерева: +// * Пометка - Число - обязательный реквизит дерева. +// * ЭтоОбъектМетаданных - Булево - обязательный реквизит дерева. +// +&НаКлиентеНаСервереБезКонтекста +Функция СледующееЗначениеПометкиЭлемента(ЭлементДерева) + + // 0 - Флажок не установлен. + // 1 - Флажок установлен. + // 2 - Установлен квадрат. + // + // Переопределение графа конечного автомата (или машины состояний, как ее еще можно назвать). + // + // Платформа делает постоянный цикл при изменении пометки, + // т.е. имеет компоненту сильной связности орграфа: + // 0-1-2-0-1-2-0-1... + // + // 0 + // / \ + // 2 - 1 + // + // т.е. совершает цикл: не помеченный - помеченный - квадрат - не помеченный. + // + // Нам требуется поведение недетерминированного конечного автомата с компонентой сильной связности: + // 0-1-0-1-0... + // + // т.е. помеченный должен переходить в не помеченный, а тот - опять в помеченный. + // + // При этом: + // + // Для разделов циклы: + // 1) 1-0-1-0-1... + // 2) 2-0-1-0-1-0-... + // + // /\ + // 2 - 0 -1 + // + // т.е. с квадрата должен быть переход к неустановленному флажку. + // + // Для метаданных циклы: + // 1) 1-0-1-0-1-0... + // 2) 2-1-0-1-0-1-0... + // + // /\ + // 2 - 1 -0 + // + // т.е. с квадрата должен быть переход к установленному флажку. + + // На момент проверки платформа уже изменила значение пометки. + + Если ЭлементДерева.ЭтоОбъектМетаданных Тогда + // Предыдущее значение пометки = 2 : Установлен квадрат. + Если ЭлементДерева.Пометка = 0 Тогда + Возврат ПометкаФлажокУстановлен(); + КонецЕсли; + КонецЕсли; + + // Предыдущее значение пометки = 1 : Флажок установлен. + Если ЭлементДерева.Пометка = 2 Тогда + Возврат ПометкаФлажокНеУстановлен(); + КонецЕсли; + + // Во всех остальных случаях - значение установленное платформой. + Возврат ЭлементДерева.Пометка; + +КонецФункции + +// Параметры: +// ЭлементДерева - ДанныеФормыЭлементДерева: +// * Пометка - Число - обязательный реквизит дерева. +// * ЭтоОбъектМетаданных - Булево - обязательный реквизит дерева. +// +&НаКлиентеНаСервереБезКонтекста +Процедура ПометитьЭлементыРодителейРекурсивно(ЭлементДерева) + + Родитель = ЭлементДерева.ПолучитьРодителя(); + + Если Родитель = Неопределено Тогда + Возврат; + КонецЕсли; + + ЭлементыРодителя = Родитель.ПолучитьЭлементы(); + Если ЭлементыРодителя.Количество() = 0 Тогда + Родитель.Пометка = ПометкаФлажокУстановлен(); + ИначеЕсли ЭлементДерева.Пометка = ПометкаКвадрат() Тогда + Родитель.Пометка = ПометкаКвадрат(); + Иначе + Родитель.Пометка = ЗначениеПометкиОтносительноВложенныхЭлементов(Родитель); + КонецЕсли; + + ПометитьЭлементыРодителейРекурсивно(Родитель); + +КонецПроцедуры + +// Параметры: +// ЭлементДерева - ДанныеФормыЭлементДерева: +// * Пометка - Число - обязательный реквизит дерева. +// * ЭтоОбъектМетаданных - Булево - обязательный реквизит дерева. +// +&НаКлиентеНаСервереБезКонтекста +Функция ЗначениеПометкиОтносительноВложенныхЭлементов(ЭлементДерева) + + СостояниеВложенныхЭлементов = СостояниеВложенныхЭлементов(ЭлементДерева); + + ЕстьПомеченные = СостояниеВложенныхЭлементов.ЕстьПомеченные; + ЕстьНепомеченные = СостояниеВложенныхЭлементов.ЕстьНепомеченные; + + Если ЭлементДерева.ЭтоОбъектМетаданных Тогда + + // Для объекта метаданных важно какое у него состояние сейчас, + // ведь этот объект метаданных надо возвращать. + // Нельзя сбрасывать установленный флажок. + + Если ЭлементДерева.Пометка = ПометкаФлажокУстановлен() Тогда + // Оставляем флажок взведенным независимо от вложенных. + Возврат ПометкаФлажокУстановлен(); + КонецЕсли; + + Если ЭлементДерева.Пометка = ПометкаФлажокНеУстановлен() + Или ЭлементДерева.Пометка = ПометкаКвадрат() Тогда + + Если ЕстьПомеченные Тогда + Возврат ПометкаКвадрат(); + Иначе + Возврат ПометкаФлажокНеУстановлен(); + КонецЕсли; + КонецЕсли; + + Иначе + + // Для разделов не важно какое состояние сейчас, + // они всегда зависят только от вложенных. + + Если ЕстьПомеченные Тогда + + Если ЕстьНепомеченные Тогда + Возврат ПометкаКвадрат(); + Иначе + Возврат ПометкаФлажокУстановлен(); + КонецЕсли; + + КонецЕсли; + + Возврат ПометкаФлажокНеУстановлен(); + + КонецЕсли; + +КонецФункции + +// Параметры: +// ЭлементДерева - ДанныеФормыЭлементДерева: +// * Пометка - Число - обязательный реквизит дерева. +// * ЭтоОбъектМетаданных - Булево - обязательный реквизит дерева. +// +&НаКлиентеНаСервереБезКонтекста +Функция СостояниеВложенныхЭлементов(ЭлементДерева) + + ВложенныеЭлементы = ЭлементДерева.ПолучитьЭлементы(); + + ЕстьПомеченные = Ложь; + ЕстьНепомеченные = Ложь; + + Для каждого ВложенныйЭлемент Из ВложенныеЭлементы Цикл + + Если ВложенныйЭлемент.Пометка = ПометкаФлажокНеУстановлен() Тогда + ЕстьНепомеченные = Истина; + Продолжить; + КонецЕсли; + + Если ВложенныйЭлемент.Пометка = ПометкаФлажокУстановлен() Тогда + ЕстьПомеченные = Истина; + + Если ВложенныйЭлемент.ЭтоОбъектМетаданных Тогда + + // Для объекта метаданных допустимо иметь непомеченные в своем составе вложенных, + // при этом самостоятельно быть помеченным. Чтобы обыграть эту ситуацию надо поднять + // вложенные элементы на один уровень с самим объектом, к которому они относятся. + + Состояние = СостояниеВложенныхЭлементов(ВложенныйЭлемент); + ЕстьПомеченные = ЕстьПомеченные Или Состояние.ЕстьПомеченные; + ЕстьНепомеченные = ЕстьНепомеченные Или Состояние.ЕстьНепомеченные; + КонецЕсли; + + Продолжить; + КонецЕсли; + + Если ВложенныйЭлемент.Пометка = ПометкаКвадрат() Тогда + ЕстьПомеченные = Истина; + ЕстьНепомеченные = Истина; + Продолжить; + КонецЕсли; + + КонецЦикла; + + Результат = Новый Структура; + Результат.Вставить("ЕстьПомеченные", ЕстьПомеченные); + Результат.Вставить("ЕстьНепомеченные", ЕстьНепомеченные); + + Возврат Результат; + +КонецФункции + +// Параметры: +// ЭлементДерева - ДанныеФормыЭлементДерева: +// * Пометка - Число - обязательный реквизит дерева. +// * ЭтоОбъектМетаданных - Булево - обязательный реквизит дерева. +// +&НаКлиентеНаСервереБезКонтекста +Функция ТребуетсяПометитьВложенныеЭлементы(ЭлементДерева) + + Если ЭлементДерева.ЭтоОбъектМетаданных Тогда + + // Если для объекта метаданных есть не полностью выбранные вложенные элементы, + // значит эти элементы были выбраны пользователем и не следует портить его выбор. + + СостояниеВложенныхЭлементов = СостояниеВложенныхЭлементов(ЭлементДерева); + + ЕстьПомеченные = СостояниеВложенныхЭлементов.ЕстьПомеченные; + ЕстьНепомеченные = СостояниеВложенныхЭлементов.ЕстьНепомеченные; + + Если ЕстьПомеченные И ЕстьНепомеченные Тогда + Возврат Ложь; + КонецЕсли; + КонецЕсли; + + Возврат Истина; + +КонецФункции + +// Параметры: +// ЭлементДерева - ДанныеФормыЭлементДерева: +// * Пометка - Число - обязательный реквизит дерева. +// * ЭтоОбъектМетаданных - Булево - обязательный реквизит дерева. +// +&НаКлиентеНаСервереБезКонтекста +Процедура ПометитьВложенныеЭлементыРекурсивно(ЭлементДерева) + + ВложенныеЭлементы = ЭлементДерева.ПолучитьЭлементы(); + + Для каждого ВложенныйЭлемент Из ВложенныеЭлементы Цикл + + ВложенныйЭлемент.Пометка = ЭлементДерева.Пометка; + ПометитьВложенныеЭлементыРекурсивно(ВложенныйЭлемент); + + КонецЦикла; + +КонецПроцедуры + +// Параметры: +// КоллекцияЭлементовДерева - ДанныеФормыДерева +// - ДанныеФормыЭлементДерева: +// * Пометка - Число - обязательный реквизит дерева. +// * ЭтоОбъектМетаданных - Булево - обязательный реквизит дерева. +// ЗначениеПометки - Число - устанавливаемое значение. +// +&НаКлиентеНаСервереБезКонтекста +Процедура ПометитьВсеЭлементыДереваРекурсивно(ЭлементДеревоРазделовПоиска, ЗначениеПометки) + + КоллекцияЭлементовДерева = ЭлементДеревоРазделовПоиска.ПолучитьЭлементы(); + + Для каждого ЭлементДерева Из КоллекцияЭлементовДерева Цикл + ЭлементДерева.Пометка = ЗначениеПометки; + ПометитьВсеЭлементыДереваРекурсивно(ЭлементДерева, ЗначениеПометки); + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область БизнесЛогика + +&НаСервереБезКонтекста +Функция ЭтоКорневаяПодсистема(ОбъектМетаданных) + + Возврат Метаданные.Подсистемы.Содержит(ОбъектМетаданных); + +КонецФункции + +&НаСервереБезКонтекста +Функция ОбъектМетаданныхДоступен(ОбъектМетаданных) + + ДоступенПоПравам = ПравоДоступа("Просмотр", ОбъектМетаданных); + ДоступенПоФункциональнымОпциям = ОбщегоНазначения.ОбъектМетаданныхДоступенПоФункциональнымОпциям(ОбъектМетаданных); + + СвойстваМетаданного = Новый Структура("ВключатьВКомандныйИнтерфейс"); + ЗаполнитьЗначенияСвойств(СвойстваМетаданного, ОбъектМетаданных); + + Если СвойстваМетаданного.ВключатьВКомандныйИнтерфейс = Неопределено Тогда + ВключатьВКомандныйИнтерфейс = Истина; // Если свойства нет - игнорируем. + Иначе + ВключатьВКомандныйИнтерфейс = СвойстваМетаданного.ВключатьВКомандныйИнтерфейс; + КонецЕсли; + + Возврат ДоступенПоПравам И ДоступенПоФункциональнымОпциям + И ВключатьВКомандныйИнтерфейс; + +КонецФункции + +&НаСервереБезКонтекста +Функция ПодчиненныеСправочники(ОбъектМетаданных) + + Результат = Новый Массив; + + Для Каждого Справочник Из Метаданные.Справочники Цикл + Если Справочник.Владельцы.Содержит(ОбъектМетаданных) + И ОбъектМетаданныхДоступен(Справочник) Тогда + + Результат.Добавить(Справочник); + КонецЕсли; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +#КонецОбласти + +#КонецОбласти \ No newline at end of file diff --git a/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Forms/НастройкиУдаленияОбъектов/Form.form b/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Forms/НастройкиУдаленияОбъектов/Form.form new file mode 100644 index 000000000..af1dcd6aa --- /dev/null +++ b/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Forms/НастройкиУдаленияОбъектов/Form.form @@ -0,0 +1,1066 @@ + + + + НастройкиОтображенияОбъектов + 19 + Usual + + <key>ru</key> + <value>Настройки отображения объектов</value> + + true + true + + true + + + НастройкиОтображенияОбъектов + + None + + НастройкиОтображенияОбъектовГруппа + 40 + + НастройкиОтображенияОбъектовОтображаемыйРеквизит + 32 + + <key>ru</key> + <value>Место поиска / Выводимые реквизиты</value> + + true + true + + true + + + НастройкиОтображенияОбъектов.МестоПоискаРеквизитПредставление + + + ПолеРасширеннаяПодсказка + 34 + Label + true + true + + Left + + + + ПолеКонтекстноеМеню + 33 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + + + НастройкиОтображенияОбъектовКартинка + 37 + true + true + + true + + + НастройкиОтображенияОбъектов.Картинка + + None + + ПолеРасширеннаяПодсказка1 + 39 + Label + true + true + + Left + + + + ПолеКонтекстноеМеню1 + 38 + true + + PictureField + Enter + true + Left + true + + true + true + true + true + + + 1 + + AsFileRef + + + true + true + + true + + + <key>ru</key> + <value>Настройки отображения объектов группа</value> + + + НастройкиОтображенияОбъектовГруппа1РасширеннаяПодсказка + 41 + Label + true + true + + Left + + + ColumnGroup + + InCell + auto + true + + + + КоманднаяПанель + 20 + Left + + + Addition + 23 + + ExtendedTooltip + 25 + Label + true + true + + Left + + + + ContextMenu + 24 + true + + НастройкиОтображенияОбъектов + + true + + + + Addition + 29 + + ExtendedTooltip + 31 + Label + true + true + + Left + + + + ContextMenu + 30 + true + + ViewStatusAddition + НастройкиОтображенияОбъектов + + true + + + + Addition + 26 + + ExtendedTooltip + 28 + Label + true + true + + Left + + + + ContextMenu + 27 + true + + SearchControlAddition + НастройкиОтображенияОбъектов + + true + + + + РасширеннаяПодсказка + 22 + Label + true + true + + Left + + + + КонтекстноеМеню + 21 + + КонтекстноеМенюДобавитьНастройку + 75 + true + true + + true + + + КонтекстноеМенюДобавитьНастройкуРасширеннаяПодсказка + 76 + Label + true + true + + Left + + + Form.Command.ДобавитьНастройку + Normal + Auto + true + true + UserCmds + Auto + + + КонтекстноеМенюДобавитьПолеНастройки + 77 + true + true + + true + + + КонтекстноеМенюДобавитьПолеНастройкиРасширеннаяПодсказка + 78 + Label + true + true + + Left + + + Form.Command.ДобавитьПолеНастройки + Normal + Auto + true + true + UserCmds + Auto + + + КонтекстноеМенюУдалить + 73 + true + true + + true + + + КонтекстноеМенюУдалитьРасширеннаяПодсказка + 74 + Label + true + true + + Left + + + Form.Item.НастройкиОтображенияОбъектов.StandardCommand.Delete + Normal + Auto + true + true + UserCmds + Auto + + + Tree + true + true + true + true + MultiRow + Row +
    true
    + 1 + 1 + AutoUse + AutoUse + true + true + false + Auto + Auto + true + true + AsFileRef + true +
    + + ГруппаНастройкаРежимаУдаления + 58 + Usual + + ОбычноеУдаление + 63 + true + true + + true + + + ОбычноеУдаление + + None + ShowRight + + OnChange + ОбычноеУдалениеПриИзменении + + + ПолеРасширеннаяПодсказка5 + 65 + + <key>ru</key> + <value>Выполнять полную проверку возможности удаления и не удаляет объекты при наличии мест использования. +Подходит для удаления одиночных объектов.</value> + + Label + true + 4 + true + + Left + + + + ПолеКонтекстноеМеню5 + 64 + true + + RadioButtonField + Enter + true + Left + true + + + + ru + Стандартный + + + 1 + + + Vertical + + + + БезопасноеУдаление + 60 + true + true + + true + + + БезопасноеУдаление + + None + ShowRight + + OnChange + БезопасноеУдалениеПриИзменении + + + ПолеРасширеннаяПодсказка4 + 62 + + <key>ru</key> + <value>Разрешить очистку полей в помеченных на удаление объектах. +Подходит для очистки связанных объектов. +</value> + + Label + true + 3 + true + + Left + + + + ПолеКонтекстноеМеню4 + 61 + true + + RadioButtonField + Enter + true + Left + true + + + + ru + Упрощенный + + + 1 + + + Vertical + + + + МонопольноеУдаление + 42 + true + true + + true + + + МонопольноеУдаление + + None + ShowRight + + OnChange + МонопольноеУдалениеПриИзменении + + + ПолеРасширеннаяПодсказка2 + 44 + + <key>ru</key> + <value>Блокировать вход в программу. +Подходит для срочного удаления больших объемов данных.</value> + + Label + true + true + + Left + + + + ПолеКонтекстноеМеню2 + 43 + true + + RadioButtonField + Enter + true + Left + true + + RadioButtons + + + ru + Ускоренный + + + 1 + + + Vertical + + + true + true + + true + + + <key>ru</key> + <value>Способ удаления</value> + + + ru + Стандартный - удалить с контролем ссылочной целостности. + +Упрощенный - не проверять помеченные на удаление места использования и удалить с контролем ссылочной целостности. +В помеченных на удалениях местах использования ссылки на удаляемые объекты будут очищены. + +Ускоренный - удалить в монопольном режиме. + + Button + + Группа1РасширеннаяПодсказка1 + 59 + Label + true + true + + Left + + + UsualGroup + + Vertical + Collapsible + Button + true + true + auto + Auto + Auto + + + + НастройкаРегламентногоУдаления + 47 + Usual + + ГруппаНастройкаРегламентногоЗадания + 68 + + ИспользоватьРегламентноеУдаление + 51 + true + true + + true + + + АвтоматическиУдалятьПомеченныеОбъекты + + Right + + OnChange + ИспользоватьРегламентноеУдалениеПриИзменении + + + ПолеРасширеннаяПодсказка3 + 53 + Label + true + true + + Left + + + + ПолеКонтекстноеМеню3 + 52 + true + + CheckBoxField + Enter + true + Left + true + + + + УдалениеПомеченныхНастроитьРасписание + 54 + + <key>ru</key> + <value>Настроить расписание</value> + + true + false + + true + + + НастройкиРегламентноеУдалениеПомеченныхРасширеннаяПодсказка + 55 + Label + true + true + + Left + + + Hyperlink + Form.Command.НастройкиРегламентногоЗадания + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Настройки регламентного задания</value> + + + Группа1РасширеннаяПодсказка2 + 69 + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Auto + true + true + Auto + Auto + + + + УдалениеПомеченныхПредставлениеРасписания + 70 + + <key>ru</key> + <value>Удаление помеченных представление расписания</value> + + true + true + + true + + + УдалениеПомеченныхПредставлениеРасписанияРасширеннаяПодсказка + 72 + Label + true + true + + Left + + + + УдалениеПомеченныхПредставлениеРасписанияКонтекстноеМеню + 71 + true + + Label + true + true + + Style.ПоясняющийТекст + + + Left + + + true + true + + true + + + <key>ru</key> + <value>Автоматически удалять помеченные объекты по расписанию</value> + + + Группа1РасширеннаяПодсказка + 48 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + Auto + Auto + + + + ФормаКоманднаяПанель + -1 + + ФормаВыбрать + 49 + true + true + + true + + + ФормаВыбратьРасширеннаяПодсказка + 50 + Label + true + true + + Left + + + Form.Command.Выбрать + Auto + true + true + true + UserCmds + Auto + + + ФормаДобавитьНастройку + 56 + true + true + + true + + + ФормаДобавитьНастройкуРасширеннаяПодсказка + 57 + Label + true + true + + Left + + + Form.Command.ДобавитьНастройку + Normal + Auto + true + true + UserCmds + Auto + + + ФормаДобавитьПолеНастройки + 66 + true + true + + true + + + ФормаДобавитьПолеНастройкиРасширеннаяПодсказка + 67 + Label + true + true + + Left + + + Form.Command.ДобавитьПолеНастройки + Normal + Auto + true + true + UserCmds + Auto + + Left + true + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + DontBlock + true + true + true + Vertical + true + true + true + auto + true + DontShow + + НастройкиОтображенияОбъектов + + <key>ru</key> + <value>Настройки отображения объектов</value> + + 1 + + ValueTree + + + true + + + true + + + МестоПоискаРеквизитПредставление + + <key>ru</key> + <value>Место поиска реквизит представление</value> + + 3 + + String + + + + true + + + true + + + + Картинка + + <key>ru</key> + <value>Картинка</value> + + 4 + + Picture + + + true + + + true + + + + МестоПоискаРеквизит + 9 + + String + + + + true + + + true + + + + + МонопольноеУдаление + + <key>ru</key> + <value>Монопольное удаление</value> + + 5 + + Number + + 10 + + + + true + + + true + + + + АвтоматическиУдалятьПомеченныеОбъекты + + <key>ru</key> + <value>Автоматически удалять помеченные объекты по расписанию</value> + + 6 + + Boolean + + + true + + + true + + + + БезопасноеУдаление + + <key>ru</key> + <value>Безопасное удаление</value> + + 7 + + Number + + 10 + + + + true + + + true + + + + ОбычноеУдаление + + <key>ru</key> + <value>Обычное удаление</value> + + 8 + + Number + + 10 + + + + true + + + true + + + + УдалениеПомеченныхИдентификатор + 10 + + String + + + + true + + + true + + + + УдалениеПомеченныхРасписание + 11 + + + true + + + true + + + + Выбрать + + <key>ru</key> + <value>Применить</value> + + 1 + + true + + + + Выбрать + + + Auto + Auto + + + НастройкиРегламентногоЗадания + + <key>ru</key> + <value>Настройки регламентного задания</value> + + 2 + + true + + + + НастройкиРегламентногоЗадания + + + Auto + Auto + + + ДобавитьНастройку + + <key>ru</key> + <value>Добавить настройку</value> + + 3 + + true + + + StdPicture.CreateFolder + + + + ДобавитьНастройку + + + Auto + Auto + + + ДобавитьПолеНастройки + + <key>ru</key> + <value>Добавить поле настройки</value> + + 4 + + true + + + StdPicture.CreateListItem + + + + ДобавитьПолеНастройки + + + Auto + Auto + + + + + +
    diff --git a/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Forms/НастройкиУдаленияОбъектов/Module.bsl b/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Forms/НастройкиУдаленияОбъектов/Module.bsl new file mode 100644 index 000000000..20c94a123 --- /dev/null +++ b/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Forms/НастройкиУдаленияОбъектов/Module.bsl @@ -0,0 +1,349 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2020, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + Если Параметры.Свойство("АдресНастроек") Тогда + ЗагрузитьНастройки(ПолучитьИзВременногоХранилища(Параметры.АдресНастроек)); + КонецЕсли; + + РегламентноеЗадание = УдалениеПомеченныхОбъектовСлужебныйВызовСервера.РежимУдалятьПоРасписанию(); + АвтоматическиУдалятьПомеченныеОбъекты = РегламентноеЗадание.Использование; + УдалениеПомеченныхРасписание = РегламентноеЗадание.Расписание; + + УстановитьСостояниеФормыПоНастройкамРегламентногоЗадания(ЭтотОбъект); + + Если ОбщегоНазначения.РазделениеВключено() Тогда + Элементы.УдалениеПомеченныхНастроитьРасписание.Видимость = Ложь; + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + СтандартныеПодсистемыКлиент.РазвернутьУзлыДерева(ЭтотОбъект, "НастройкиОтображенияОбъектов"); +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ИспользоватьРегламентноеУдалениеПриИзменении(Элемент) + ОповещениеОбИзменении = Новый ОписаниеОповещения("РегламентныеЗаданияПослеИзмененияРасписания", ЭтотОбъект); + УдалениеПомеченныхОбъектовКлиент.ПриИзмененииФлажкаУдалятьПоРасписанию(АвтоматическиУдалятьПомеченныеОбъекты, ОповещениеОбИзменении); +КонецПроцедуры + +&НаКлиенте +Процедура НастройкиРегламентногоЗадания(Команда) + ОповещениеОбИзменении = Новый ОписаниеОповещения("РегламентныеЗаданияПослеИзмененияРасписания", ЭтотОбъект); + УдалениеПомеченныхОбъектовКлиент.НачатьИзменениеРасписанияРегламентногоЗадания(ОповещениеОбИзменении); +КонецПроцедуры + +&НаКлиенте +Процедура РегламентныеЗаданияПослеИзмененияРасписания(Изменения, ПараметрыВыполнения) Экспорт + Если Изменения = Неопределено Тогда + АвтоматическиУдалятьПомеченныеОбъекты = Ложь; + Иначе + УдалениеПомеченныхРасписание = Изменения.Расписание; + АвтоматическиУдалятьПомеченныеОбъекты = Изменения.Использование; + КонецЕсли; + + УстановитьСостояниеФормыПоНастройкамРегламентногоЗадания(ЭтотОбъект); +КонецПроцедуры + +&НаКлиенте +Процедура ОбычноеУдалениеПриИзменении(Элемент) + УстановитьРежим("ОбычноеУдаление"); +КонецПроцедуры + +&НаКлиенте +Процедура БезопасноеУдалениеПриИзменении(Элемент) + УстановитьРежим("БезопасноеУдаление"); +КонецПроцедуры + +&НаКлиенте +Процедура МонопольноеУдалениеПриИзменении(Элемент) + УстановитьРежим("МонопольноеУдаление"); +КонецПроцедуры + +#КонецОбласти + + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ДобавитьНастройку(Команда) + КоллекцияВыбираемыхОбъектов = Новый СписокЗначений; + + КоллекцияВыбираемыхОбъектов.Добавить("Справочники"); + КоллекцияВыбираемыхОбъектов.Добавить("Документы"); + КоллекцияВыбираемыхОбъектов.Добавить("ПланыВидовХарактеристик"); + КоллекцияВыбираемыхОбъектов.Добавить("ПланыСчетов"); + КоллекцияВыбираемыхОбъектов.Добавить("ПланыСчетов"); + КоллекцияВыбираемыхОбъектов.Добавить("ПланыВидовРасчета"); + КоллекцияВыбираемыхОбъектов.Добавить("БизнесПроцессы"); + КоллекцияВыбираемыхОбъектов.Добавить("Задачи"); + + ВыбранныеОбъекты = Новый СписокЗначений; + Для Каждого МестоПоиска Из НастройкиОтображенияОбъектов.ПолучитьЭлементы() Цикл + ВыбранныеОбъекты.Добавить(МестоПоиска.МестоПоискаРеквизит); + КонецЦикла; + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("КоллекцииВыбираемыхОбъектовМетаданных", КоллекцияВыбираемыхОбъектов); + ПараметрыФормы.Вставить("ТолькоПодсистемыСКИ", Истина); + ПараметрыФормы.Вставить("ВыбранныеОбъектыМетаданных", ВыбранныеОбъекты); + + ОповещениеОЗакрытии = Новый ОписаниеОповещения("ДобавитьНастройкуПродолжение", ЭтотОбъект); + ОткрытьФорму("ОбщаяФорма.ВыборОбъектовМетаданных", ПараметрыФормы, ЭтотОбъект, , , , ОповещениеОЗакрытии, + РежимОткрытияОкнаФормы.БлокироватьОкноВладельца); +КонецПроцедуры + +&НаКлиенте +Процедура ДобавитьПолеНастройки(Команда) + Если НастройкиОтображенияОбъектов.ПолучитьЭлементы().Количество() = 0 Тогда + ДобавитьНастройку(Команда); + КонецЕсли; + + ТекущиеДанные = Элементы.НастройкиОтображенияОбъектов.ТекущиеДанные; + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + МестоПоиска = ТекущиеДанные.МестоПоискаРеквизит; + РодительЭлемента = ТекущиеДанные.ПолучитьРодителя(); + Если РодительЭлемента <> Неопределено И ЗначениеЗаполнено(РодительЭлемента.МестоПоискаРеквизит) Тогда + МестоПоиска = РодительЭлемента.МестоПоискаРеквизит; + КонецЕсли; + + РеквизитыДляВыбора = РеквизитыДляВыбора(РеквизитыМетаданных(МестоПоиска), ТекущиеДанные); + + ОповещениеОВыборе = Новый ОписаниеОповещения("ДобавитьПолеНастройкиЗавершение", + ЭтотОбъект, + Новый Структура("МестоПоиска", МестоПоиска)); + РеквизитыДляВыбора.ПоказатьОтметкуЭлементов(ОповещениеОВыборе); +КонецПроцедуры + +&НаКлиенте +Процедура Выбрать(Команда) + АдресХранилища = ПодготовитьНастройки(ВладелецФормы.УникальныйИдентификатор); + Закрыть(АдресХранилища); +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Функция РеквизитыДляВыбора(РеквизитыМетаданных,Знач ТекущиеДанные) + Результат = РеквизитыМетаданных.Скопировать(); + + РодительЭлемента = ТекущиеДанные.ПолучитьРодителя(); + Если РодительЭлемента = Неопределено Тогда + РодительЭлемента = ТекущиеДанные; + КонецЕсли; + + Для Каждого ВыбранныйРеквизит Из РодительЭлемента.ПолучитьЭлементы() Цикл + РеквизитСписка = Результат.НайтиПоЗначению(ВыбранныйРеквизит.МестоПоискаРеквизит); + + Если РеквизитСписка <> Неопределено Тогда + РеквизитСписка.Пометка = Истина; + КонецЕсли; + КонецЦикла; + + Возврат Результат; +КонецФункции + +// Параметры: +// Настройки - см. НастройкиИзДанныхФормы +// +&НаСервере +Процедура ЗагрузитьНастройки(Настройки) + ОбычноеУдаление = 0; + Если Настройки.РежимУдаления = "Монопольный" Тогда + МонопольноеУдаление = 1; + ИначеЕсли Настройки.РежимУдаления = "Упрощенный" Тогда + БезопасноеУдаление = 1; + Иначе + ОбычноеУдаление = 1; + КонецЕсли; + + ВыбранныеРеквизиты = Настройки.ВыбранныеРеквизиты; + ВыбранныеРеквизиты.Сортировать("Метаданные"); + + ДеревоНастроек = РеквизитФормыВЗначение("НастройкиОтображенияОбъектов"); + + ТекущиеМетаданные = ""; + МестоПоиска = Неопределено; + Для Каждого МестоПоискаРеквизит Из ВыбранныеРеквизиты Цикл + Если ТекущиеМетаданные <> МестоПоискаРеквизит.Метаданные Тогда + МестоПоиска = ДеревоНастроек.Строки.Добавить(); + МестоПоиска.МестоПоискаРеквизитПредставление = Метаданные.НайтиПоПолномуИмени( + МестоПоискаРеквизит.Метаданные).Представление(); + МестоПоиска.Картинка = БиблиотекаКартинок.Папка; + МестоПоиска.МестоПоискаРеквизит = МестоПоискаРеквизит.Метаданные; + ТекущиеМетаданные = МестоПоискаРеквизит.Метаданные; + КонецЕсли; + + Реквизит = МестоПоиска.Строки.Добавить(); + Реквизит.МестоПоискаРеквизитПредставление = МестоПоискаРеквизит.Представление; + Реквизит.МестоПоискаРеквизит = МестоПоискаРеквизит.Реквизит; + Реквизит.Картинка = БиблиотекаКартинок.Реквизит; + КонецЦикла; + + ЗначениеВРеквизитФормы(ДеревоНастроек, "НастройкиОтображенияОбъектов"); +КонецПроцедуры + +&НаСервереБезКонтекста +Функция РеквизитыМетаданных(Знач ОбъектМетаданных) + Результат = Новый СписокЗначений; + + ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ОбъектМетаданных); + Для Каждого Реквизит Из ОбъектМетаданных.Реквизиты Цикл + Результат.Добавить(Реквизит.Имя, Реквизит.Синоним); + КонецЦикла; + + Возврат Результат; +КонецФункции + +&НаСервере +Процедура ДобавитьПолеНастройкиЗавершениеСервер(Результат, ДополнительныеПараметры) + + ДеревоМестПоиска = РеквизитФормыВЗначение("НастройкиОтображенияОбъектов"); + + ИдентификаторМестаПоиска = ДополнительныеПараметры.МестоПоиска; + Фильтр = Новый Структура("МестоПоискаРеквизит", ИдентификаторМестаПоиска); + ПодгруппаМестаПоиска = ДеревоМестПоиска.Строки.НайтиСтроки(Фильтр)[0]; + ПодгруппаМестаПоиска.Строки.Очистить(); + Для Каждого Элемент Из Результат Цикл + + Если Элемент.Пометка Тогда + МестоПоиска = ПодгруппаМестаПоиска.Строки.Добавить(); + МестоПоиска.МестоПоискаРеквизит = Элемент.Значение; + МестоПоиска.МестоПоискаРеквизитПредставление = Элемент.Представление; + МестоПоиска.Картинка = БиблиотекаКартинок.Реквизит; + КонецЕсли; + + КонецЦикла; + + ЗначениеВРеквизитФормы(ДеревоМестПоиска, "НастройкиОтображенияОбъектов"); +КонецПроцедуры + +// Возвращаемое значение: +// Структура: +// * РежимУдаления - Строка +// * ВыбранныеРеквизиты - ТаблицаЗначений: +// ** Метаданные - Строка +// ** Реквизит - Строка +// ** Представление - Строка +// +&НаСервере +Функция НастройкиИзДанныхФормы() + Настройки = Новый Структура; + Настройки.Вставить("ВыбранныеРеквизиты"); + Настройки.Вставить("РежимУдаления"); + + Если БезопасноеУдаление > 0 Тогда + Настройки.РежимУдаления = "Упрощенный"; + ИначеЕсли МонопольноеУдаление > 0 Тогда + Настройки.РежимУдаления = "Монопольный"; + Иначе + Настройки.РежимУдаления = "Стандартный"; + КонецЕсли; + + ВыбранныеРеквизиты = Новый ТаблицаЗначений; + ВыбранныеРеквизиты.Колонки.Добавить("Метаданные"); + ВыбранныеРеквизиты.Колонки.Добавить("Реквизит"); + ВыбранныеРеквизиты.Колонки.Добавить("Представление"); + + ДеревоРеквизитов = РеквизитФормыВЗначение("НастройкиОтображенияОбъектов"); + Для Каждого СтрокаМетаданных Из ДеревоРеквизитов.Строки Цикл + ОбъектМетаданных = СтрокаМетаданных.МестоПоискаРеквизит; + Для Каждого Элемент Из СтрокаМетаданных.Строки Цикл + Реквизит = ВыбранныеРеквизиты.Добавить(); + Реквизит.Метаданные = ОбъектМетаданных; + Реквизит.Представление = Элемент.МестоПоискаРеквизитПредставление; + Реквизит.Реквизит = Элемент.МестоПоискаРеквизит; + КонецЦикла; + КонецЦикла; + + Настройки.ВыбранныеРеквизиты = ВыбранныеРеквизиты; + + Возврат Настройки; +КонецФункции + +&НаСервере +Функция ПодготовитьНастройки(УникальныйИдентификатор) + Возврат ПоместитьВоВременноеХранилище(НастройкиИзДанныхФормы(), + УникальныйИдентификатор); +КонецФункции + +&НаКлиенте +Процедура ДобавитьНастройкуПродолжение(Результат, ДополнительныеПараметры) Экспорт + Если Результат = Неопределено Тогда + Возврат; + КонецЕсли; + + ДобавитьНастройкуПродолжениеСервер(Результат); +КонецПроцедуры + +&НаСервере +Процедура ДобавитьНастройкуПродолжениеСервер(Результат) + ДеревоМестПоиска = РеквизитФормыВЗначение("НастройкиОтображенияОбъектов"); + + Для Каждого Элемент Из Результат Цикл + Фильтр = Новый Структура("МестоПоискаРеквизит", Элемент.Значение); + + Если ДеревоМестПоиска.Строки.НайтиСтроки(Фильтр).Количество() = 0 Тогда + МестоПоиска = ДеревоМестПоиска.Строки.Добавить(); + МестоПоиска.МестоПоискаРеквизит = Элемент.Значение; + МестоПоиска.МестоПоискаРеквизитПредставление = Элемент.Представление; + МестоПоиска.Картинка = БиблиотекаКартинок.Папка; + КонецЕсли; + КонецЦикла; + + ЗначениеВРеквизитФормы(ДеревоМестПоиска, "НастройкиОтображенияОбъектов"); +КонецПроцедуры + +&НаКлиенте +Процедура ДобавитьПолеНастройкиЗавершение(Результат, ДополнительныеПараметры) Экспорт + Если Результат <> Неопределено Тогда + ДобавитьПолеНастройкиЗавершениеСервер(Результат, ДополнительныеПараметры); + КонецЕсли; + + СтандартныеПодсистемыКлиент.РазвернутьУзлыДерева(ЭтотОбъект, "НастройкиОтображенияОбъектов"); +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Процедура УстановитьСостояниеФормыПоНастройкамРегламентногоЗадания(Форма) + Форма.Элементы.УдалениеПомеченныхНастроитьРасписание.Доступность = Форма.АвтоматическиУдалятьПомеченныеОбъекты; + Форма.Элементы.УдалениеПомеченныхПредставлениеРасписания.Видимость = Форма.АвтоматическиУдалятьПомеченныеОбъекты; + + Если Форма.АвтоматическиУдалятьПомеченныеОбъекты Тогда + Расписание = Новый РасписаниеРегламентногоЗадания; + ЗаполнитьЗначенияСвойств(Расписание, Форма.УдалениеПомеченныхРасписание); + РасписаниеПредставление = Строка(Расписание); + Представление = ВРег(Лев(РасписаниеПредставление, 1)) + Сред(РасписаниеПредставление, 2); + Иначе + Представление = НСтр("ru = '<Отключено>'"); + КонецЕсли; + + Форма.Элементы.УдалениеПомеченныхПредставлениеРасписания.Заголовок = Представление; +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьРежим(Режим) + ОбычноеУдаление = 0; + БезопасноеУдаление = 0; + МонопольноеУдаление = 0; + ЭтотОбъект[Режим] = 1; +КонецПроцедуры +#КонецОбласти + diff --git a/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Forms/ОсновнаяФорма/Form.form b/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Forms/ОсновнаяФорма/Form.form index f32a3150e..5a1593cc8 100644 --- a/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Forms/ОсновнаяФорма/Form.form +++ b/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Forms/ОсновнаяФорма/Form.form @@ -5,242 +5,121 @@ Удаление помеченных объектов - Страницы - 1 - - СтраницаВыборРежимаУдаления - 6 - - РежимУдаления - 15 - - <key>ru</key> - <value>Выберите режим удаления</value> - - true - true - - true - - - РежимУдаления - - Top - - OnChange - РежимУдаленияПриИзменении - - - РежимУдаленияExtendedTooltip - 83 - Label - true - true - - Left - - - - РежимУдаленияКонтекстноеМеню - 16 - true - - RadioButtonField - Enter - true - Left - true - - 1 - - - ru - Удалить все помеченные объекты - - - Полный - - - - - ru - Выбрать объекты для удаления - - - Выборочный - - - Vertical - - - - Декорация1 - 130 - true - true - - true - - - Декорация1РасширеннаяПодсказка - 132 - Label - true - true - - Left - - - - Декорация1КонтекстноеМеню - 131 - true - + ГруппаНастройкиОтбораПоиска + 523 + + ДекорацияЗаголовокНастройкиОтбораПоиска + 525 + + <key>ru</key> + <value>Показывать:</value> + + true + true + + true + + + Декорация2РасширеннаяПодсказка + 527 Label true true - true Left - - - ГруппаАктивныеПользователи - 169 - - Декорация18 - 171 - true - true - - true - - - Декорация18ExtendedTooltip - 173 - Label - true - true - - Left - - - - Декорация18КонтекстноеМеню - 172 - true - - true - true - - - CommonPicture.Информация - - - - - ПояснениеКОбработке - 298 - - <key>ru</key> - <value>Удаление помеченных объектов может занять длительное время -(от нескольких секунд до нескольких часов в зависимости от объема удаляемых данных).<1/> -Во время удаления может наблюдаться существенное замедление работы <a href="1">пользователей</a>. -Рекомендуется выполнять удаление в период наименьшей активности пользователей. -</value> - - true - true - - true - - - ПояснениеКОбработкеРасширеннаяПодсказка - 300 - Label - true - true - - Left - - - - ПояснениеКОбработкеКонтекстноеМеню - 299 - true - - Label - true - - - URLProcessing - ПояснениеКОбработкеОбработкаНавигационнойСсылки - - Left - - - true - true - - true - - - <key>ru</key> - <value>Активные пользователи</value> - - - ГруппаАктивныеПользователиРасширеннаяПодсказка - 170 - Label - true - true - - Left - - - UsualGroup - - HorizontalIfPossible - Auto - true - true - Auto - Auto + + + Декорация2КонтекстноеМеню + 526 + true + + Label + true + true + + Left + + + + НастроитьОтбор + 521 + + <key>ru</key> + <value>Все помеченные на удаление</value> + + true + true + + true + + 1 + + НастроитьОтборРасширеннаяПодсказка + 522 + Label + true + true + + Left - - - УскоритьУдалениеПомеченных - 439 - - <key>ru</key> - <value>Заблокировать всю работу в программе и ускорить удаление</value> - + + Hyperlink + Form.Command.НастроитьОтбор + Normal + Auto + 60 + 1 + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Настройки отбора поиска</value> + + + Группа1РасширеннаяПодсказка + 524 + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Auto + true + true + Auto + Auto + + + + КоманднаяПанельФормы + 534 + + КоманднаяПанельПоискПомеченных + 681 + + ДеревоПомеченныхНаУдалениеУдалитьВсе + 517 true true true - - Монопольно - - Right - Button - - OnChange - УскоритьУдалениеПомеченныхПриИзменении - - УскоритьУдалениеПомеченныхРасширеннаяПодсказка - 441 - - <key>ru</key> - <value>Если флажок установлен, то на время удаления вход в программу будет закрыт и установлен монопольный режим. -Это существенно ускорит процесс удаления. - -Рекомендации по использованию флажка: -- рекомендуется включать для срочного удаления больших объемов данных, например, после выполнения свертки базы; -- во всех остальных случаях его не рекомендуется включать, чтобы не блокировать работу пользователей с программой.</value> - + ДеревоПомеченныхНаУдалениеУдалитьВсеРасширеннаяПодсказка + 518 Label true true @@ -248,145 +127,28 @@ Left
    - - УскоритьУдалениеПомеченныхКонтекстноеМеню - 440 - true - - CheckBoxField - Enter - true - Left - true - + Form.Command.УдалитьВсе + Auto + true + true + true + UserCmds + Auto
    - ГруппаУдалениеПомеченныхОбъектовПоРасписанию - 478 - - ГруппаУдалениеПомеченныхИспользование - 482 - - УдалениеПомеченныхИспользование - 484 - - <key>ru</key> - <value>Автоматически удалять помеченные объекты по расписанию</value> - - true - true - - true - - - УдалениеПомеченныхИспользование - - Right - - OnChange - УдалениеПомеченныхИспользованиеПриИзменении - - - УдалениеПомеченныхИспользованиеРасширеннаяПодсказка - 486 - Label - true - true - - Left - - - - УдалениеПомеченныхИспользованиеКонтекстноеМеню - 485 - true - - CheckBoxField - Enter - true - Left - true - - - - УдалениеПомеченныхПредставлениеРасписания - 487 - - <key>ru</key> - <value>Удаление помеченных представление расписания</value> - - true - true - - true - - - УдалениеПомеченныхПредставлениеРасписанияРасширеннаяПодсказка - 489 - Label - true - true - - Left - - - - УдалениеПомеченныхПредставлениеРасписанияКонтекстноеМеню - 488 - true - - Label - true - true - - Style.ПоясняющийТекст - - - Left - - - true - true - - true - - - <key>ru</key> - <value>Удаление помеченных использование</value> - - 43 - false - - ГруппаУдалениеПомеченныхИспользованиеРасширеннаяПодсказка - 483 - Label - true - true - - Left - - - UsualGroup - - Vertical - Auto - true - true - Auto - Auto - - + ГруппаАктивныПослеПоискаПомеченные + 562 - УдалениеПомеченныхНастроитьРасписание - 490 + ДеревоПомеченныхНаУдалениеУдалитьВыбранные + 519 true true true - УдалениеПомеченныхНастроитьРасписаниеРасширеннаяПодсказка - 491 + ДеревоПомеченныхНаУдалениеУдалитьВыбранныеРасширеннаяПодсказка + 520 Label true true @@ -394,8 +156,7 @@ Left - Hyperlink - Form.Command.УдалениеПомеченныхНастроитьРасписание + Form.Command.УдалитьВыбранные Normal Auto true @@ -403,6 +164,338 @@ UserCmds Auto + + КомандыВыбора + 57 + + КомандаСписокПомеченныхУстановитьВсе + 37 + true + true + + true + + false + + КомандаСписокПомеченныхУстановитьВсеExtendedTooltip + 92 + Label + true + true + + Left + + + Form.Command.ДеревоПомеченныхНаУдалениеУстановитьВсе + Normal + Auto + true + true + UserCmds + + Style.ButtonTextColor + + + Style.ButtonBackColor + + + Style.BorderColor + + Auto + + + ДеревоПомеченныхНаУдалениеСнятьВсе + 38 + true + true + + true + + false + + ДеревоПомеченныхНаУдалениеСнятьВсеРасширеннаяПодсказка + 93 + Label + true + true + + Left + + + Form.Command.ДеревоПомеченныхНаУдалениеСнятьВсе + Normal + Auto + true + true + UserCmds + + Style.ButtonTextColor + + + Style.ButtonBackColor + + + Style.BorderColor + + Auto + + true + true + + true + + + <key>ru</key> + <value>Команды выбора</value> + + + КомандыВыбораExtendedTooltip + 91 + Label + true + true + + Left + + + + Compact + + + + КомандыСвернутьРазвернуть + 713 + + СвернутьСтрокиДереваВыбораПомеченных + 717 + true + true + + true + + + СвернутьСтрокиДереваВыбораПомеченныхРасширеннаяПодсказка + 718 + Label + true + true + + Left + + + Form.Command.СвернутьСтрокиДереваВыбораПомеченных + Normal + Auto + true + true + UserCmds + Auto + + + РазвернутьСтрокиДереваПомеченных + 715 + true + true + + true + + + РазвернутьСтрокиДереваПомеченныхРасширеннаяПодсказка + 716 + Label + true + true + + Left + + + Form.Command.РазвернутьСтрокиДереваПомеченных + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Команды свернуть развернуть</value> + + + Группа1РасширеннаяПодсказка8 + 714 + Label + true + true + + Left + + + + Compact + + + + ДеревоПомеченныхНаУдалениеИзменить + 339 + true + true + + true + + + ДеревоПомеченныхНаУдалениеИзменитьРасширеннаяПодсказка + 340 + Label + true + true + + Left + + + Form.Command.ДеревоПомеченныхНаУдалениеИзменить + Normal + Auto + true + true + UserCmds + Auto + + + Обновить + 573 + true + true + + true + + + ОбновитьРасширеннаяПодсказка + 574 + Label + true + true + + Left + + + Form.Command.Обновить + Normal + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + + <key>ru</key> + <value>Активны после поиска помеченные</value> + + + Группа1РасширеннаяПодсказка7 + 563 + Label + true + true + + Left + + + + + true + true + + true + + + <key>ru</key> + <value>Командная панель поиск помеченных</value> + + + Группа1РасширеннаяПодсказка1 + 682 + Label + true + true + + Left + + + + + + КоманднаяПанельОбработкаОшибок + 685 + + ГруппаОсновная + 617 + + ВыполнитьДействияИУдалить + 611 + true + true + + true + + + ВыполнитьДействияИУдалитьРасширеннаяПодсказка + 612 + Label + true + true + + Left + + + Form.Command.ВыполнитьДействияИУдалить + Normal + Auto + true + true + UserCmds + Auto + + + Назад + 609 + true + true + + true + + + Назад1РасширеннаяПодсказка + 610 + Label + true + true + + Left + + + Form.Command.Назад + Normal + Auto + true + true + UserCmds + + StdPicture.Back + + Auto + true true @@ -410,11 +503,376 @@ <key>ru</key> - <value>Удаление помеченных объектов по расписанию</value> + <value>Основная</value> - ГруппаУдалениеПомеченныхОбъектовПоРасписаниюРасширеннаяПодсказка - 479 + Группа1РасширеннаяПодсказка14 + 618 + Label + true + true + + Left + + + + + + ГруппаДействияНадЭлементамиСписка + 619 + + НеУдаленныеИзменить + 621 + true + true + + true + + + НеУдаленныеИзменить1РасширеннаяПодсказка + 622 + Label + true + true + + Left + + + Form.Command.НеУдаленныеИзменить + Normal + Auto + true + true + UserCmds + Auto + + + Действия + 639 + + УстановитьУдалить + 641 + true + true + + true + + + УстановитьУдалитьРасширеннаяПодсказка + 642 + Label + true + true + + Left + + + Form.Command.УстановитьУдалить + Normal + Auto + true + true + UserCmds + Auto + + + УстановитьЗаменитьНа + 643 + true + true + + true + + + УстановитьЗаменитьНаРасширеннаяПодсказка + 644 + Label + true + true + + Left + + + Form.Command.УстановитьЗаменитьНа + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Действия</value> + + + Группа1РасширеннаяПодсказка18 + 640 + Label + true + true + + Left + + + Popup + + Auto + Normal + + + true + true + + true + + + <key>ru</key> + <value>Действия над элементами списка</value> + + + Группа1РасширеннаяПодсказка15 + 620 + Label + true + true + + Left + + + + + true + true + + true + + + <key>ru</key> + <value>Командная панель обработка ошибок</value> + + + Группа1РасширеннаяПодсказка23 + 686 + Label + true + true + + Left + + + + + + ДеревоПомеченныхНаУдалениеНастроить + 528 + true + true + + true + + + ДеревоПомеченныхНаУдалениеНастроитьРасширеннаяПодсказка + 529 + Label + true + true + + Left + + + Form.Command.Настроить + Normal + Auto + true + true + Right + UserCmds + Auto + + + Справка + 687 + true + true + + true + + + СправкаРасширеннаяПодсказка + 688 + Label + true + true + + Left + + + Form.StandardCommand.Help + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Командная панель формы</value> + + + Группа1РасширеннаяПодсказка3 + 535 + Label + true + true + + Left + + + CommandBar + + Left + Form + + + + СтраницыОтображениеСостояния + 645 + + СостояниеВыполняется + 647 + + ДекорацияЗначокДлительнойОперации + 579 + + <key>ru</key> + <value>Декорация значок длительной операции</value> + + true + true + + true + + + Декорация2РасширеннаяПодсказка2 + 581 + Label + true + true + + Left + + + + Декорация2КонтекстноеМеню2 + 580 + true + + true + true + Center + + + CommonPicture.ДлительнаяОперация48 + + AsFileRef + + + + ГруппаПояснениеКДлительнойОперации + 711 + + ДекорацияПредставлениеДлительнойОперации + 582 + + <key>ru</key> + <value>Выполняется удаление всех помеченных на удаление. +Поиск помеченных</value> + + true + true + + true + + + Декорация3РасширеннаяПодсказка + 584 + Label + true + true + + Left + + + + Декорация3КонтекстноеМеню + 583 + true + + Label + true + true + Center + + Left + + + + ПредставлениеПрогресса + 708 + + <key>ru</key> + <value>Представление прогресса</value> + + true + + true + + + Декорация1РасширеннаяПодсказка + 710 + Label + true + true + + Left + + + + Декорация1КонтекстноеМеню + 709 + true + + Label + true + true + + Left + + + true + true + + true + + + <key>ru</key> + <value>Пояснение к длительной операции</value> + + + Группа1РасширеннаяПодсказка5 + 712 Label true true @@ -424,16 +882,42 @@ UsualGroup - HorizontalIfPossible + Vertical Auto - true - Button true true Auto Auto + + ОтменитьОперацию + 587 + true + true + + true + + + ОтменитьОперациюРасширеннаяПодсказка + 588 + Label + true + true + + Left + + + UsualButton + Form.Command.ОтменитьОперацию + Normal + Auto + true + true + Center + UserCmds + Auto + true true @@ -441,11 +925,11 @@ <key>ru</key> - <value>Страница выбор режима удаления</value> + <value>Состояние выполняется</value> - СтраницаВыборРежимаУдаленияРасширеннаяПодсказка - 82 + Группа1РасширеннаяПодсказка20 + 648 Label true true @@ -455,20 +939,479 @@ Page - Vertical + AlwaysHorizontal + Center + false + + + + СостояниеВыполнено + 649 + + КартинкаУспешно + 699 + + <key>ru</key> + <value>Картинка успешно завершено с ошибками</value> + + true + true + + true + + + КартинкаУспешноЗавершеноРасширеннаяПодсказка1 + 701 + Label + true + true + + Left + + + + КартинкаУспешноЗавершеноКонтекстноеМеню1 + 700 + true + + true + true + Center + + + CommonPicture.Успешно32 + + + + + ДекорацияПредставлениеЗавершенияУспешно + 702 + + <key>ru</key> + <value>Удаление успешно завершено.</value> + + true + true + + true + + + Декорация3РасширеннаяПодсказка1 + 704 + Label + true + true + + Left + + + + Декорация3КонтекстноеМеню1 + 703 + true + + Label + true + true + Center + + Left + + + true + true + + true + + + <key>ru</key> + <value>Состояние выполнено</value> + + + Группа1РасширеннаяПодсказка21 + 650 + Label + true + true + + Left + + + Page + + AlwaysHorizontal + false + + + + СостояниеВыполненоСОшибками + 671 + + КартинкаУспешноЗавершеноСОшибками + 673 + + <key>ru</key> + <value>Картинка успешно завершено с ошибками</value> + + true + true + + true + + + КартинкаУспешноЗавершеноРасширеннаяПодсказка2 + 675 + Label + true + true + + Left + + + + КартинкаУспешноЗавершеноКонтекстноеМеню2 + 674 + true + + true + true + Center + + + CommonPicture.Ошибка32 + + + + + ДекорацияПредставлениеЗавершенияНеУспешно + 676 + + <key>ru</key> + <value>Произошла ошибка.</value> + + true + true + + true + + + Декорация3РасширеннаяПодсказка2 + 678 + Label + true + true + + Left + + + + Декорация3КонтекстноеМеню2 + 677 + true + + Label + true + true + Center + + Left + + + + ПодробнееОшибкаФоновогоЗадания + 466 + + <key>ru</key> + <value>Подробнее</value> + + true + true + + true + + + СсылкаПодробнее1РасширеннаяПодсказка + 468 + Label + true + true + + Left + + + + СсылкаПодробнее1КонтекстноеМеню + 467 + true + + Label + true + Center + + + Click + СсылкаПодробнееНажатие + + true + Left + Center + + + true + true + + true + + + <key>ru</key> + <value>Состояние выполнено с ошибками</value> + + + Группа1РасширеннаяПодсказка16 + 672 + Label + true + true + + Left + + + Page + + AlwaysHorizontal + false + + + + СостояниеУдалениеНеТребуется + 693 + + КартинкаУдалениеНеТребуется + 178 + true + true + + true + + + КартинкаУдалениеНеТребуетсяРасширеннаяПодсказка + 180 + Label + true + true + + Left + + + + КартинкаУдалениеНеТребуетсяКонтекстноеМеню + 179 + true + + true + true + + + CommonPicture.Информация32 + + + + + НадписьУдалениеНеТребуется + 181 + + <key>ru</key> + <value>Удаление не требуется. +Нет объектов, помеченных на удаление.</value> + + true + true + + true + + + НадписьУдалениеНеТребуетсяРасширеннаяПодсказка + 183 + Label + true + true + + Left + + + + НадписьУдалениеНеТребуетсяКонтекстноеМеню + 182 + true + + Label + true + + Left + Center + + + true + true + + true + + + <key>ru</key> + <value>Состояние удаление не требуется</value> + + + Группа1РасширеннаяПодсказка2 + 694 + Label + true + true + + Left + + + Page + + AlwaysHorizontal auto false - СтраницаПомеченныеНаУдаление - 25 + СостояниеЧастичноеУдаление + 719 + + КартинкаСостояниеЧастичноеУдаление + 721 + + <key>ru</key> + <value>Картинка состояние частичное удаление</value> + + true + true + + true + + + КартинкаУдалениеНеТребуетсяРасширеннаяПодсказка1 + 723 + Label + true + true + + Left + + + + КартинкаУдалениеНеТребуетсяКонтекстноеМеню1 + 722 + true + + true + true + + + CommonPicture.Информация32 + + + + + НадписьСостояниеЧастичноеУдаление + 724 + + <key>ru</key> + <value>Объекты удалены частично</value> + + true + true + + true + + + НадписьУдалениеНеТребуетсяРасширеннаяПодсказка1 + 726 + Label + true + true + + Left + + + + НадписьУдалениеНеТребуетсяКонтекстноеМеню1 + 725 + true + + Label + true + Center + + Left + Center + + + true + true + + true + + + <key>ru</key> + <value>Состояние удаление не требуется</value> + + + Группа1РасширеннаяПодсказка9 + 720 + Label + true + true + + Left + + + Page + + AlwaysHorizontal + auto + false + + + true + true + + true + + + <key>ru</key> + <value>Страницы отображение состояния</value> + + + Группа1РасширеннаяПодсказка19 + 646 + Label + true + true + + Left + + + Pages + + Auto + + + + СтраницыИнформация + 536 + + СтраницаВыборОбрабатываемыхОбъектов + 540 ДеревоПомеченныхНаУдаление 26 <key>ru</key> - <value>Отметьте флажками объекты, которые необходимо удалить</value> + <value>Дерево помеченных на удаление</value> true true @@ -479,7 +1422,7 @@ ДеревоПомеченныхНаУдаление false - Top + None Add Change Copy @@ -528,7 +1471,9 @@ CheckBoxField Enter Left - + + true + ДеревоПомеченныхНаУдалениеПредставление @@ -601,207 +1546,6 @@ ДеревоПомеченныхНаУдалениеКоманднаяПанель 28 - - КомандыВыбора - 57 - - КомандаСписокПомеченныхУстановитьВсе - 37 - true - true - - true - - false - - КомандаСписокПомеченныхУстановитьВсеExtendedTooltip - 92 - Label - true - true - - Left - - - Form.Command.ДеревоПомеченныхНаУдалениеУстановитьВсе - Normal - Auto - true - true - UserCmds - - Style.ButtonTextColor - - - Style.ButtonBackColor - - - Style.BorderColor - - Auto - - - ДеревоПомеченныхНаУдалениеСнятьВсе - 38 - true - true - - true - - false - - ДеревоПомеченныхНаУдалениеСнятьВсеРасширеннаяПодсказка - 93 - Label - true - true - - Left - - - Form.Command.ДеревоПомеченныхНаУдалениеСнятьВсе - Normal - Auto - true - true - UserCmds - - Style.ButtonTextColor - - - Style.ButtonBackColor - - - Style.BorderColor - - Auto - - true - true - - true - - - <key>ru</key> - <value>Команды выбора</value> - - - КомандыВыбораExtendedTooltip - 91 - Label - true - true - - Left - - - - Compact - - - - ДеревоПомеченныхНаУдалениеИзменить - 339 - true - true - - true - - - ДеревоПомеченныхНаУдалениеИзменитьРасширеннаяПодсказка - 340 - Label - true - true - - Left - - - Form.Command.ДеревоПомеченныхНаУдалениеИзменить - Normal - Auto - true - true - UserCmds - Auto - - - ДеревоПомеченныхНаУдалениеВспомогательныеКнопки - 301 - - ДеревоПомеченныхНаУдалениеОбновить - 70 - true - true - - true - - - ДеревоПомеченныхНаУдалениеОбновитьРасширеннаяПодсказка - 95 - Label - true - true - - Left - - - Form.Command.ДеревоПомеченныхНаУдалениеОбновить - Normal - Auto - true - true - UserCmds - Auto - InAdditionalSubmenu - - - СписокПомеченныхНаУдалениеВывестиСписок - 65 - true - true - - true - - - СписокПомеченныхНаУдалениеВывестиСписокExtendedTooltip - 96 - Label - true - true - - Left - - - Form.Item.ДеревоПомеченныхНаУдаление.StandardCommand.OutputList - Normal - Auto - true - true - UserCmds - Auto - - true - true - - true - - - <key>ru</key> - <value>Дерево помеченных на удаление вспомогательные кнопки</value> - - - ДеревоПомеченныхНаУдалениеВспомогательныеКнопкиРасширеннаяПодсказка - 302 - Label - true - true - - Left - - - - Left @@ -1104,10 +1848,7 @@ AutoUse true true - false - false false - true Auto Auto true @@ -1130,11 +1871,11 @@ <key>ru</key> - <value>Страница помеченные на удаление</value> + <value>Страница выбор обрабатываемых объектов</value> - СтраницаПомеченныеНаУдалениеРасширеннаяПодсказка - 84 + Группа1РасширеннаяПодсказка6 + 541 Label true true @@ -1165,7 +1906,6 @@ ru Надпись итоги частичного удаления - true true true @@ -1283,121 +2023,12 @@ НеУдаленныеКоманднаяПанель 222 - - НеУдаленныеЗаменитьНа - 227 - true - true - - true - - - НеУдаленныеЗаменитьНаРасширеннаяПодсказка - 228 - Label - true - true - - Left - - - Form.Command.НеУдаленныеЗаменитьНа - Normal - Auto - true - true - UserCmds - Auto - - - НеУдаленныеУдалить - 283 - true - true - - true - - - НеУдаленныеУдалитьРасширеннаяПодсказка - 284 - Label - true - true - - Left - - - Form.Command.НеУдаленныеУдалить - Normal - Auto - true - true - UserCmds - Auto - - - НеУдаленныеИзменить - 285 - true - true - - true - - - НеУдаленныеИзменитьРасширеннаяПодсказка - 286 - Label - true - true - - Left - - - Form.Item.НеУдаленные.StandardCommand.Change - Normal - Picture - true - true - UserCmds - Auto - InCommandBarAndInAdditionalSubmenu - - - НеУдаленныеВывестиСписок - 343 - true - - true - - - НеУдаленныеВывестиСписокРасширеннаяПодсказка - 344 - Label - true - true - - Left - - - Form.Item.НеУдаленные.StandardCommand.OutputList - Normal - Auto - true - true - UserCmds - Auto - Left - true Selection НеУдаленныеВыбор - - BeforeDeleteRow - НеУдаленныеПередУдалением - OnActivateRow НеУдаленныеПриАктивизацииСтроки @@ -1516,58 +2147,6 @@ UserCmds Auto - - НеУдаленныеУдалитьИзМеню - 350 - true - true - - true - - - НеУдаленныеУдалитьИзМенюРасширеннаяПодсказка - 351 - Label - true - true - - Left - - - Form.Command.НеУдаленныеУдалить - Normal - Auto - true - true - UserCmds - Auto - - - НеУдаленныеЗаменитьНаИзМеню - 352 - true - true - - true - - - НеУдаленныеЗаменитьНаИзМенюРасширеннаяПодсказка - 353 - Label - true - true - - Left - - - Form.Command.НеУдаленныеЗаменитьНа - Normal - Auto - true - true - UserCmds - Auto - НеУдаленныеВывестиСписокИзМеню 354 @@ -1664,7 +2243,6 @@ Style.FieldTextColor - true true true @@ -1708,113 +2286,11 @@ СтраницыВариантовОтображенияПричин 255 - - СтраницаТекстОшибки - 259 - - ТекстОшибки - 475 - - <key>ru</key> - <value>Текст ошибки</value> - - true - true - - true - - - ТекстОшибкиРасширеннаяПодсказка - 477 - Label - true - true - - Left - - - - ТекстОшибкиКонтекстноеМеню - 476 - true - - Label - true - true - - Left - - - - СсылкаПодробнее - 452 - - <key>ru</key> - <value>Подробнее</value> - - true - true - - true - - - СсылкаПодробнееРасширеннаяПодсказка - 454 - Label - true - true - - Left - - - - СсылкаПодробнееКонтекстноеМеню - 453 - true - - Label - true - Right - - - Click - СсылкаПодробнееНажатие - - true - Left - - - true - true - - true - - - <key>ru</key> - <value>Страница текст ошибки</value> - - - СтраницаТекстОшибкиРасширеннаяПодсказка - 260 - Label - true - true - - Left - - - Page - - Vertical - auto - false - - СтраницаПричиныНеУдаления 257 - СвязиНеУдаленных + МестаИспользованияНеудаленных 235 <key>ru</key> @@ -1826,36 +2302,35 @@ <common>true</common> </userVisible> <dataPath xsi:type="form:DataPath"> - <segments>СвязиНеУдаленных</segments> + <segments>МестаИспользованияНеудаленных</segments> </dataPath> <titleLocation>None</titleLocation> <excludedCommands>Add</excludedCommands> - <excludedCommands>CancelSearch</excludedCommands> <excludedCommands>Copy</excludedCommands> <excludedCommands>CopyToClipboard</excludedCommands> <excludedCommands>Delete</excludedCommands> <excludedCommands>EndEdit</excludedCommands> - <excludedCommands>Find</excludedCommands> <excludedCommands>MoveDown</excludedCommands> <excludedCommands>MoveUp</excludedCommands> <excludedCommands>OutputList</excludedCommands> <excludedCommands>SelectAll</excludedCommands> + <excludedCommands>ShowMultipleSelection</excludedCommands> <excludedCommands>SortListAsc</excludedCommands> <excludedCommands>SortListDesc</excludedCommands> <items xsi:type="form:FormField"> <name>СвязиНеУдаленныхПредставление</name> - <id>248</id> + <id>601</id> <visible>true</visible> <enabled>true</enabled> <userVisible> <common>true</common> </userVisible> <dataPath xsi:type="form:DataPath"> - <segments>СвязиНеУдаленных.Представление</segments> + <segments>МестаИспользованияНеудаленных.Представление</segments> </dataPath> <extendedTooltip> - <name>СвязиНеУдаленныхПредставлениеРасширеннаяПодсказка</name> - <id>250</id> + <name>РасширеннаяПодсказка</name> + <id>603</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1864,13 +2339,12 @@ </extInfo> </extendedTooltip> <contextMenu> - <name>СвязиНеУдаленныхПредставлениеКонтекстноеМеню</name> - <id>249</id> + <name>КонтекстноеМеню</name> + <id>602</id> <autoFill>true</autoFill> </contextMenu> <type>InputField</type> - <warningOnEditRepresentation>DontShow</warningOnEditRepresentation> - <markRequiredComplete>false</markRequiredComplete> + <readOnly>true</readOnly> <editMode>Enter</editMode> <showInHeader>true</showInHeader> <headerHorizontalAlign>Left</headerHorizontalAlign> @@ -1878,91 +2352,102 @@ <extInfo xsi:type="form:InputFieldExtInfo"> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> - <horizontalStretch>true</horizontalStretch> <wrap>true</wrap> - <passwordMode>false</passwordMode> - <multiLine>false</multiLine> - <extendedEdit>true</extendedEdit> - <autoChoiceIncomplete>false</autoChoiceIncomplete> - <autoMarkIncomplete>false</autoMarkIncomplete> + <chooseType>true</chooseType> <typeDomainEnabled>true</typeDomainEnabled> - <editTextUpdate>DontUse</editTextUpdate> + <textEdit>true</textEdit> + <textSize>Normal</textSize> + </extInfo> + </items> + <items xsi:type="form:FormField"> + <name>СвязиНеУдаленныхДействие</name> + <id>604</id> + <visible>true</visible> + <enabled>true</enabled> + <userVisible> + <common>true</common> + </userVisible> + <dataPath xsi:type="form:DataPath"> + <segments>МестаИспользованияНеудаленных.ДействиеПредставление</segments> + </dataPath> + <handlers> + <event>OnChange</event> + <name>СвязиНеУдаленныхДействиеПриИзменении</name> + </handlers> + <extendedTooltip> + <name>ПолеРасширеннаяПодсказка</name> + <id>606</id> + <type>Label</type> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <extInfo xsi:type="form:LabelDecorationExtInfo"> + <horizontalAlign>Left</horizontalAlign> + </extInfo> + </extendedTooltip> + <contextMenu> + <name>ПолеКонтекстноеМеню</name> + <id>605</id> + <autoFill>true</autoFill> + </contextMenu> + <type>InputField</type> + <editMode>Enter</editMode> + <cellHyperlink>true</cellHyperlink> + <showInHeader>true</showInHeader> + <headerHorizontalAlign>Left</headerHorizontalAlign> + <showInFooter>true</showInFooter> + <cellHyperlinkRepresentation>Show</cellHyperlinkRepresentation> + <cellHyperlinkDisplayVariant>Always</cellHyperlinkDisplayVariant> + <extInfo xsi:type="form:InputFieldExtInfo"> + <handlers> + <event>ChoiceProcessing</event> + <name>СвязиНеУдаленныхДействиеОбработкаВыбора</name> + </handlers> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <wrap>true</wrap> + <multiLine>true</multiLine> + <listChoiceMode>true</listChoiceMode> + <chooseType>true</chooseType> + <typeDomainEnabled>true</typeDomainEnabled> + <textEdit>true</textEdit> + <editTextUpdate>OnValueChange</editTextUpdate> + <choiceList> + <presentation> + <key>ru</key> + <value>Пометить на удаление и удалить</value> + </presentation> + <value xsi:type="core:StringValue"> + <value>ПометитьНаУдаление</value> + </value> + </choiceList> + <choiceList> + <presentation> + <key>ru</key> + <value>Заменить ссылку</value> + </presentation> + <value xsi:type="core:StringValue"> + <value>ЗаменитьСсылку</value> + </value> + </choiceList> <textSize>Normal</textSize> </extInfo> </items> <autoCommandBar> <name>СвязиНеУдаленныхКоманднаяПанель</name> <id>237</id> - <items xsi:type="form:Button"> - <name>СвязиНеУдаленныхУдалить</name> - <id>251</id> - <visible>true</visible> - <enabled>true</enabled> - <userVisible> - <common>true</common> - </userVisible> - <extendedTooltip> - <name>СвязиНеУдаленныхУдалитьРасширеннаяПодсказка</name> - <id>252</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>Picture</representation> - <autoMaxWidth>true</autoMaxWidth> - <autoMaxHeight>true</autoMaxHeight> - <placementArea>UserCmds</placementArea> - <picture xsi:type="core:PictureRef"> - <picture>StdPicture.MarkToDelete</picture> - </picture> - <representationInContextMenu>Auto</representationInContextMenu> - </items> - <items xsi:type="form:Button"> - <name>СвязиНеУдаленныхИзменить</name> - <id>253</id> - <visible>true</visible> - <enabled>true</enabled> - <userVisible> - <common>true</common> - </userVisible> - <extendedTooltip> - <name>СвязиНеУдаленныхИзменитьРасширеннаяПодсказка</name> - <id>254</id> - <type>Label</type> - <autoMaxWidth>true</autoMaxWidth> - <autoMaxHeight>true</autoMaxHeight> - <extInfo xsi:type="form:LabelDecorationExtInfo"> - <horizontalAlign>Left</horizontalAlign> - </extInfo> - </extendedTooltip> - <commandName>Form.Item.СвязиНеУдаленных.StandardCommand.Change</commandName> - <buttonImportance>Normal</buttonImportance> - <representation>Picture</representation> - <autoMaxWidth>true</autoMaxWidth> - <autoMaxHeight>true</autoMaxHeight> - <placementArea>UserCmds</placementArea> - <representationInContextMenu>Auto</representationInContextMenu> - <locationInCommandBar>InCommandBarAndInAdditionalSubmenu</locationInCommandBar> - </items> <horizontalAlign>Left</horizontalAlign> - <autoFill>true</autoFill> </autoCommandBar> <handlers> <event>Selection</event> <name>СвязиНеУдаленныхВыбор</name> </handlers> <handlers> - <event>BeforeDeleteRow</event> - <name>СвязиНеУдаленныхПередУдалением</name> + <event>OnActivateRow</event> + <name>МестаИСпользованияНЕудаленныхПриАктивизацииСтроки</name> </handlers> <handlers> - <event>BeforeRowChange</event> - <name>СвязиНеУдаленныхПередНачаломИзменения</name> + <event>ChoiceProcessing</event> + <name>МестаИспользованияНеудаленныхОбработкаВыбора</name> </handlers> <searchStringAddition> <name>СвязиНеУдаленныхСтрокаПоиска</name> @@ -1982,7 +2467,7 @@ <id>428</id> <autoFill>true</autoFill> </contextMenu> - <source>СвязиНеУдаленных</source> + <source>МестаИспользованияНеудаленных</source> <extInfo xsi:type="form:SearchStringAdditionExtInfo"> <autoMaxWidth>true</autoMaxWidth> </extInfo> @@ -2006,7 +2491,7 @@ <autoFill>true</autoFill> </contextMenu> <type>ViewStatusAddition</type> - <source>СвязиНеУдаленных</source> + <source>МестаИспользованияНеудаленных</source> <extInfo xsi:type="form:ViewStatusAdditionExtInfo"> <autoMaxWidth>true</autoMaxWidth> </extInfo> @@ -2030,7 +2515,7 @@ <autoFill>true</autoFill> </contextMenu> <type>SearchControlAddition</type> - <source>СвязиНеУдаленных</source> + <source>МестаИспользованияНеудаленных</source> <extInfo xsi:type="form:SearchControlAdditionExtInfo"> <autoMaxWidth>true</autoMaxWidth> </extInfo> @@ -2066,7 +2551,7 @@ <horizontalAlign>Left</horizontalAlign> </extInfo> </extendedTooltip> - <commandName>Form.Item.СвязиНеУдаленных.StandardCommand.Change</commandName> + <commandName>Form.Command.НеУдаленныеИзменить</commandName> <buttonImportance>Normal</buttonImportance> <representation>Auto</representation> <autoMaxWidth>true</autoMaxWidth> @@ -2074,41 +2559,13 @@ <placementArea>UserCmds</placementArea> <representationInContextMenu>Auto</representationInContextMenu> </items> - <items xsi:type="form:Button"> - <name>СвязиНеУдаленныхУдалитьИзМеню</name> - <id>361</id> - <visible>true</visible> - <enabled>true</enabled> - <userVisible> - <common>true</common> - </userVisible> - <extendedTooltip> - <name>СвязиНеУдаленныхУдалитьИзМенюРасширеннаяПодсказка</name> - <id>362</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> - <picture xsi:type="core:PictureRef"> - <picture>StdPicture.MarkToDelete</picture> - </picture> - <representationInContextMenu>Auto</representationInContextMenu> - </items> - <autoFill>true</autoFill> </contextMenu> + <representation>Tree</representation> <autoMaxWidth>true</autoMaxWidth> <height>5</height> <autoMaxHeight>true</autoMaxHeight> <autoMaxRowsCount>true</autoMaxRowsCount> + <multipleChoice>true</multipleChoice> <selectionMode>MultiRow</selectionMode> <headerHeight>1</headerHeight> <footerHeight>1</footerHeight> @@ -2119,19 +2576,17 @@ <horizontalLinesBWA>false</horizontalLinesBWA> <verticalLinesBWA>false</verticalLinesBWA> <useAlternationRowColorBWA>false</useAlternationRowColorBWA> - <autoInsertNewRow>true</autoInsertNewRow> <searchOnInput>Auto</searchOnInput> <initialListView>Auto</initialListView> <horizontalStretch>true</horizontalStretch> <verticalStretch>true</verticalStretch> <rowPictureDataPath xsi:type="form:DataPath"> - <segments>СвязиНеУдаленных.НомерКартинки</segments> + <segments>МестаИспользованияНеудаленных.НомерКартинки</segments> </rowPictureDataPath> <rowsPicture xsi:type="core:PictureRef"> <picture>CommonPicture.ПиктограммыЭлементов</picture> </rowsPicture> <autoMaxCardHeight>true</autoMaxCardHeight> - <rowFilter xsi:type="core:UndefinedValue"/> </items> <visible>true</visible> <enabled>true</enabled> @@ -2159,6 +2614,140 @@ <scrollOnCompress>false</scrollOnCompress> </extInfo> </items> + <items xsi:type="form:FormGroup"> + <name>СтраницаТекстОшибки</name> + <id>259</id> + <items xsi:type="form:FormGroup"> + <name>ГруппаТекстОшибки</name> + <id>634</id> + <items xsi:type="form:Decoration"> + <name>ТекстОшибки</name> + <id>636</id> + <title> + <key>ru</key> + <value>Текст ошибки</value> + + true + true + + true + + + Декорация2РасширеннаяПодсказка1 + 638 + Label + true + true + + Left + + + + Декорация2КонтекстноеМеню1 + 637 + true + + Label + true + true + + Left + + + + СсылкаПодробнее + 452 + + <key>ru</key> + <value>Подробнее</value> + + true + true + + true + + + СсылкаПодробнееРасширеннаяПодсказка + 454 + Label + true + true + + Left + + + + СсылкаПодробнееКонтекстноеМеню + 453 + true + + Label + true + Left + + + Click + СсылкаПодробнееНажатие + + true + Left + + + true + true + + true + + + <key>ru</key> + <value>Текст ошибки</value> + + + Группа1РасширеннаяПодсказка17 + 635 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Страница текст ошибки</value> + + + СтраницаТекстОшибкиРасширеннаяПодсказка + 260 + Label + true + true + + Left + + + Page + + Vertical + auto + false + + true true @@ -2242,44 +2831,6 @@ Auto - - НадписьВПодвале - 449 - - <key>ru</key> - <value>Для удаления объектов необходимо либо пометить на удаление все связанные с ними объекты (в списке "Места использования"), либо очистить (заменить) их ссылки в перечисленных местах использования.</value> - - true - true - - true - - - НадписьВПодвалеРасширеннаяПодсказка - 451 - Label - true - true - - Left - - - - НадписьВПодвалеКонтекстноеМеню - 450 - true - - Label - 80 - true - - Style.ПоясняющийТекст - - - Left - Center - - true true @@ -2307,795 +2858,6 @@ false - - СтраницаДлительнаяОперация - 59 - - ГоризонтальнаяГруппа1 - 492 - - ФоновоеЗаданиеАнимация - 446 - - <key>ru</key> - <value>Фоновое задание анимация</value> - - true - true - - true - - - ФоновоеЗаданиеАнимацияРасширеннаяПодсказка - 448 - Label - true - true - - Left - - - - ФоновоеЗаданиеАнимацияКонтекстноеМеню - 447 - true - - true - true - Center - - - CommonPicture.ДлительнаяОперация48 - - - - - Группа2 - 444 - - НадписьДлительнаяОперация - 202 - - <key>ru</key> - <value>Надпись длительная операция</value> - - true - true - - true - - - НадписьДлительнаяОперацияРасширеннаяПодсказка - 204 - Label - true - true - - Left - - - - НадписьДлительнаяОперацияКонтекстноеМеню - 203 - true - - Label - 1 - true - Center - - Center - - - - ФоновоеЗаданиеПроцент - 469 - true - true - - true - - - ФоновоеЗаданиеПроцент - - None - - ФоновоеЗаданиеПроцентРасширеннаяПодсказка - 471 - Label - true - true - - Left - - - - ФоновоеЗаданиеПроцентКонтекстноеМеню - 470 - true - - ProgressBarField - Center - Enter - true - Left - true - - 32 - true - 1 - true - true - 100 - true - - - - ФоновоеЗаданиеСостояние - 472 - true - true - - true - - - ФоновоеЗаданиеСостояние - - None - - ФоновоеЗаданиеСостояниеРасширеннаяПодсказка - 474 - Label - true - true - - Left - - - - ФоновоеЗаданиеСостояниеКонтекстноеМеню - 473 - true - - LabelField - Center - Center - Center - Enter - true - Left - true - - true - - - true - true - - true - - Center - - Группа2РасширеннаяПодсказка - 445 - Label - true - true - - Left - - - UsualGroup - - Vertical - Center - Auto - true - true - Auto - Auto - - - true - true - - true - - - <key>ru</key> - <value>Горизонтальная группа 1</value> - - - ГоризонтальнаяГруппа1РасширеннаяПодсказка - 493 - Label - true - true - - Left - - - UsualGroup - - HorizontalIfPossible - Auto - true - true - Auto - Auto - - - true - true - - true - - - <key>ru</key> - <value>Страница длительная операция</value> - - true - - СтраницаДлительнаяОперацияРасширеннаяПодсказка - 110 - Label - true - true - - Left - - - Page - - Vertical - Center - auto - false - - - - СтраницаУдалениеНеТребуется - 174 - - ГоризонтальнаяГруппа2 - 507 - - КартинкаУдалениеНеТребуется - 178 - true - true - - true - - - КартинкаУдалениеНеТребуетсяРасширеннаяПодсказка - 180 - Label - true - true - - Left - - - - КартинкаУдалениеНеТребуетсяКонтекстноеМеню - 179 - true - - true - true - Center - - - CommonPicture.Информация32 - - - - - НадписьУдалениеНеТребуется - 181 - - <key>ru</key> - <value>Удаление не требуется. -Нет объектов, помеченных на удаление.</value> - - true - true - - true - - - НадписьУдалениеНеТребуетсяРасширеннаяПодсказка - 183 - Label - true - true - - Left - - - - НадписьУдалениеНеТребуетсяКонтекстноеМеню - 182 - true - - Label - 5 - true - Center - - Left - Center - - - true - true - - true - - - <key>ru</key> - <value>Горизонтальная группа 2</value> - - - ГоризонтальнаяГруппа2РасширеннаяПодсказка - 508 - Label - true - true - - Left - - - UsualGroup - - HorizontalIfPossible - Auto - true - true - Auto - Auto - - - true - true - - true - - - <key>ru</key> - <value>Страница удаление не требуется</value> - - true - - СтраницаУдалениеНеТребуетсяРасширеннаяПодсказка - 175 - Label - true - true - - Left - - - Page - - Vertical - Center - auto - false - - - - СтраницаУспешноЗавершено - 142 - - ГоризонтальнаяГруппа3 - 497 - - КартинкаУспешноЗавершено - 146 - true - true - - true - - - КартинкаУспешноЗавершеноРасширеннаяПодсказка - 148 - Label - true - true - - Left - - - - КартинкаУспешноЗавершеноКонтекстноеМеню - 147 - true - - true - true - Center - - - CommonPicture.Успешно32 - - - - - НадписьУспешноЗавершено - 149 - - <key>ru</key> - <value>Удаление помеченных объектов успешно завершено. -Удалено объектов: 47.</value> - - true - true - - true - - - НадписьУспешноЗавершеноРасширеннаяПодсказка - 151 - Label - true - true - - Left - - - - НадписьУспешноЗавершеноКонтекстноеМеню - 150 - true - - Label - 5 - true - Center - - Left - Center - - - true - true - - true - - - <key>ru</key> - <value>Горизонтальная группа 3</value> - - - ГоризонтальнаяГруппа3РасширеннаяПодсказка - 498 - Label - true - true - - Left - - - UsualGroup - - HorizontalIfPossible - Auto - true - true - Auto - Auto - - - true - true - - true - - - <key>ru</key> - <value>Страница успешно завершено</value> - - true - - СтраницаУспешноЗавершеноРасширеннаяПодсказка - 143 - Label - true - true - - Left - - - Page - - Vertical - Center - auto - false - - - - СтраницаВозниклаОшибка - 458 - - ГоризонтальнаяГруппа4 - 502 - - КартинкаПредупреждение32 - 460 - - <key>ru</key> - <value>Картинка предупреждение32</value> - - true - true - - true - - - КартинкаПредупреждение32РасширеннаяПодсказка - 462 - Label - true - true - - Left - - - - КартинкаПредупреждение32КонтекстноеМеню - 461 - true - - true - true - Top - - - CommonPicture.Предупреждение32 - - - - - НадписьТекстОшибки - 463 - - <key>ru</key> - <value>Надпись текст ошибки</value> - - true - true - - true - - - НадписьТекстОшибкиРасширеннаяПодсказка - 465 - Label - true - true - - Left - - - - НадписьТекстОшибкиКонтекстноеМеню - 464 - true - - Label - 10 - true - true - false - - Left - - - true - true - - true - - - <key>ru</key> - <value>Горизонтальная группа 4</value> - - - ГоризонтальнаяГруппа4РасширеннаяПодсказка - 503 - Label - true - true - - Left - - - UsualGroup - - AlwaysHorizontal - Auto - true - true - Auto - Auto - - - - СсылкаПодробнее1 - 466 - - <key>ru</key> - <value>Технические сведения о проблеме</value> - - true - true - - true - - - СсылкаПодробнее1РасширеннаяПодсказка - 468 - Label - true - true - - Left - - - - СсылкаПодробнее1КонтекстноеМеню - 467 - true - - Label - true - Center - - - Click - СсылкаПодробнееНажатие - - true - Left - Center - - - - ПодсказкаМонопольногоРежима - 509 - - КартинкаПодсказка - 511 - - <key>ru</key> - <value>Картинка подсказка</value> - - true - true - - true - - - КартинкаПодсказкаРасширеннаяПодсказка - 513 - Label - true - true - - Left - - - - КартинкаПодсказкаКонтекстноеМеню - 512 - true - - true - true - - - CommonPicture.Информация - - AsFileRef - - - - ПодсказкаМонопольно - 514 - - <key>ru</key> - <value>Снимите флажок <b>Заблокировать всю работу в программе и ускорить удаление</> и повторите удаление, чтобы получить информацию, какие именно объекты невозможно удалить. -Для удаления остальных объектов рекомендуется воспользоваться выборочным удалением.</value> - - true - true - - true - - - ПодсказкаМонопольноРасширеннаяПодсказка - 516 - Label - true - true - - Left - - - - ПодсказкаМонопольноКонтекстноеМеню - 515 - true - - true - Label - 60 - true - - Left - - - true - true - - true - - - <key>ru</key> - <value>Подсказка монопольного режима</value> - - - ПодсказкаМонопольногоРежимаРасширеннаяПодсказка - 510 - Label - true - true - - Left - - - UsualGroup - - HorizontalIfPossible - Auto - true - true - Auto - Auto - - - true - true - - true - - - <key>ru</key> - <value>Возникла ошибка</value> - - true - - СтраницаВозниклаОшибкаРасширеннаяПодсказка - 459 - Label - true - true - - Left - - - Page - - Vertical - Center - auto - false - - true true @@ -3103,12 +2865,11 @@ <key>ru</key> - <value>Страницы</value> + <value>Страницы информация</value> - true - СтраницыРасширеннаяПодсказка - 81 + Группа1РасширеннаяПодсказка4 + 537 Label true true @@ -3122,51 +2883,19 @@ - КомандныеПанели - 164 - - ЛеваяКоманднаяПанель - 152 - - КнопкаНазад - 52 - true - true - - true - - false - - КнопкаНазадРасширеннаяПодсказка - 115 - Label - true - true - - Left - - - Form.Command.КомандаНазад - Normal - Auto - true - true - UserCmds - Auto - + ГруппаКартинок + 545 + + Предупреждение32 + 547 true true true - - <key>ru</key> - <value>Левая командная панель</value> - - true - ЛеваяКоманднаяПанельРасширеннаяПодсказка - 153 + Предупреждение32РасширеннаяПодсказка + 549 Label true true @@ -3174,107 +2903,30 @@ Left - CommandBar - - Left + + Предупреждение32КонтекстноеМеню + 548 + true + + true + true + + + CommonPicture.Предупреждение32 + - - ПраваяКоманднаяПанель - 2 - - КнопкаДалее - 3 - true - true - - true - - false - - КнопкаДалееРасширеннаяПодсказка - 116 - Label - true - true - - Left - - - Form.Command.КомандаДалее - Normal - Auto - true - true - UserCmds - Auto - - - КнопкаЗакрыть - 4 - true - true - - true - - false - - КнопкаЗакрытьРасширеннаяПодсказка - 118 - Label - true - true - - Left - - - Form.StandardCommand.Close - Normal - true - true - UserCmds - Auto - - - КнопкаСправка - 5 - true - true - - true - - false - - КнопкаСправкаРасширеннаяПодсказка - 119 - Label - true - true - - Left - - - Form.StandardCommand.Help - Normal - Auto - true - true - UserCmds - Auto - + + ДлительнаяОперация48 + 550 true true true - - <key>ru</key> - <value>Правая командная панель</value> - - true - ПраваяКоманднаяПанельРасширеннаяПодсказка - 114 + ДлительнаяОперация48РасширеннаяПодсказка + 552 Label true true @@ -3282,23 +2934,135 @@ Left - CommandBar - - Right + + ДлительнаяОперация48КонтекстноеМеню + 551 + true + + true + true + + + CommonPicture.ДлительнаяОперация48 + - true - true + + Информация32 + 553 + + <key>ru</key> + <value>Информация32</value> + + true + true + + true + + + Информация32РасширеннаяПодсказка + 555 + Label + true + true + + Left + + + + Информация32КонтекстноеМеню + 554 + true + + true + true + + + CommonPicture.Информация32 + + + + + Внимание16 + 556 + + <key>ru</key> + <value>Внимание16</value> + + true + true + + true + + + Внимание16РасширеннаяПодсказка + 558 + Label + true + true + + Left + + + + Внимание16КонтекстноеМеню + 557 + true + + true + true + + + CommonPicture.Предупреждение + + + + + Информация16 + 559 + + <key>ru</key> + <value>Информация16</value> + + true + true + + true + + + Информация16РасширеннаяПодсказка + 561 + Label + true + true + + Left + + + + Информация16КонтекстноеМеню + 560 + true + + true + true + + + CommonPicture.Информация + + + + false true <key>ru</key> - <value>Командные панели</value> + <value>Картинок</value> - КомандныеПанелиРасширеннаяПодсказка - 165 + ГруппаКартинокРасширеннаяПодсказка + 546 Label true true @@ -3308,7 +3072,7 @@ UsualGroup - HorizontalIfPossible + Vertical Auto true true @@ -3348,14 +3112,18 @@ Retry SaveValues Yes - LockOwner + DontBlock Use true true Vertical true auto - true + + + КоманднаяПанельФормы + + Объект 1 @@ -3370,27 +3138,6 @@
    true
    - - РежимУдаления - - <key>ru</key> - <value>Режим удаления</value> - - 2 - - String - - - - true - - - true - - - РежимУдаления - - ДеревоПомеченныхНаУдаление @@ -3415,7 +3162,10 @@ 1 - Boolean + Number + + 1 + true @@ -3425,7 +3175,7 @@ - Значение + УдаляемыйСсылка 2 @@ -3469,6 +3219,32 @@ true + + БылиОшибкиПриУдалении + 63 + + Boolean + + + true + + + true + + + + ЭтоОписаниеОбъектаМетаданных + 64 + + Boolean + + + true + + + true + + ТекстОшибки @@ -3562,10 +3338,11 @@ - ПометкаУдаления - 5 + ПредставлениеУдаляемый + 59 - Boolean + String + true @@ -3577,13 +3354,324 @@ СвязиНеУдаленных + 20 + + ValueTable + + + true + + + true + + + УдаляемыйСсылка + 1 + + + true + + + true + + + + ОбнаруженныйСсылка + 2 + + + true + + + true + + + + НомерКартинки + 3 + + Number + + 10 + + + + true + + + true + + + + Представление + 4 + + String + + + + true + + + true + + + + Видимость + 5 + + Boolean + + + true + + + true + + + + ПометкаУдаления + 6 + + Boolean + + + true + + + true + + + + СсылочногоТипа + 7 + + Boolean + + + true + + + true + + + + ЭтоОшибка + 8 + + Boolean + + + true + + + true + + + + ЭтоКонстанта + 9 + + Boolean + + + true + + + true + + + + ПометкаУдаленияМодифицирована + 10 + + Boolean + + + true + + + true + + + + ПредставлениеУдаляемый + 60 + + String + + + + true + + + true + + + + + НеУдаленныеПодсказка + + <key>ru</key> + <value>Не удаленные подсказка</value> + + 22 + + String + + + + true + + + true + + + + Монопольно + 8 + + Boolean + + + true + + + true + + + Монопольно + + + + ПодробныйТекстОшибки + 23 + + String + + + + true + + + true + + + + БыстрыйПоиск + 24 + + + true + + + true + + + + НеУдаленныеИдентификаторТекущейСтроки + 25 + + + true + + + true + + + + ПоказатьДиалогПередЗакрытием + 26 + + Boolean + + + true + + + true + + + + УдалениеПомеченныхИдентификатор + 29 + + + true + + + true + + + + УдалениеПомеченныхИспользование + 30 + + Boolean + + + true + + + true + + + + УдалениеПомеченныхРасписание + 31 + + + true + + + true + + + + ОтборМетаданных + 32 + + ValueList + + + true + + + true + + + ОтборМетаданных + + + + String + + + + + + ТекущаяОперация + 34 + + String + + + + true + + + true + + + + МестаИспользованияНеудаленных <key>ru</key> <value>Связи не удаленных</value> - 20 + 35 - ValueTable + ValueTree true @@ -3725,17 +3813,71 @@ true + + Действие + 37 + + String + + + + true + + + true + + + + ДействиеПредставление + + <key>ru</key> + <value>Действие представление</value> + + 43 + + String + + + + true + + + true + + + + ОсновнаяПричина + 48 + + Boolean + + + true + + + true + + + + ПредставлениеУдаляемый + 61 + + String + + + + true + + + true + + - НеУдаленныеПодсказка - - <key>ru</key> - <value>Не удаленные подсказка</value> - - 22 + КешПричинНеудаления + 36 - String - + ValueList true @@ -3743,16 +3885,109 @@ true + + + - Монопольно - - <key>ru</key> - <value>Монопольно</value> - - 8 + ТаблицаДействий + 38 - Boolean + ValueTable + + + true + + + true + + + ОбнаруженныйСсылка + 40 + + + true + + + true + + + + Действие + 41 + + String + + + + true + + + true + + + + ПараметрДействия + 42 + + + true + + + true + + + + Источник + 49 + + AnyRef + + + true + + + true + + + + + ВариантыДействий + 44 + + ValueList + + + true + + + true + + + + + + + ДействияМестИспользованияНеудаленных + 46 + + ValueList + + + true + + + true + + + + + + + ДополнительныеРеквизитыПомеченныхНаУдаления + 50 + + ValueTable true @@ -3761,12 +3996,84 @@ true - Монопольно + ДополнительныеРеквизитыПомеченныхНаУдаления + + + Реквизит + 51 + + String + + + + true + + + true + + + + Метаданные + 52 + + String + + + + true + + + true + + + + Представление + 53 + + String + + + + true + + + true + + + + + РежимУдаления + 54 + + String + + + + true + + + true + + + РежимУдаления - ПодробныйТекстОшибки - 23 + ИспользоватьРегламентноеУдаление + 58 + + Boolean + + + true + + + true + + + + ПодробныйТекстОшибкиФоновогоЗадания + 62 String @@ -3779,69 +4086,9 @@ - БыстрыйПоиск - 24 - - - true - - - true - - - - НеУдаленныеИдентификаторТекущейСтроки - 25 - - - true - - - true - - - - ПоказатьДиалогПередЗакрытием - 26 + АдресРезультатаПредыдущегоШага + 65 - Boolean - - - true - - - true - - - - ФоновоеЗаданиеПроцент - - <key>ru</key> - <value>Фоновое задание процент</value> - - 27 - - Number - - 10 - - - - true - - - true - - - - ФоновоеЗаданиеСостояние - - <key>ru</key> - <value>Фоновое задание состояние</value> - - 28 - - FormattedString String @@ -3853,23 +4100,8 @@ - УдалениеПомеченныхИдентификатор - 29 - - - true - - - true - - - - УдалениеПомеченныхИспользование - - <key>ru</key> - <value>Удаление помеченных использование</value> - - 30 + УдалятьПриОткрытии + 66 Boolean @@ -3881,9 +4113,11 @@ - УдалениеПомеченныхРасписание - 31 - + ЭтоМобильныйКлиент + 67 + + Boolean + true @@ -3891,24 +4125,6 @@ true - - КомандаДалее - - <key>ru</key> - <value>Далее ></value> - - 1 - - true - - - - КомандаДалее - - - DontUse - Auto - ДеревоПомеченныхНаУдалениеУстановитьВсе @@ -3959,24 +4175,6 @@ <currentRowUse>DontUse</currentRowUse> <selectedRowsUse>Auto</selectedRowsUse> </formCommands> - <formCommands> - <name>КомандаНазад</name> - <title> - <key>ru</key> - <value>< Назад</value> - - 4 - - true - - - - КомандаНазад - - - DontUse - Auto - ДеревоПомеченныхНаУдалениеОбновить @@ -4004,53 +4202,6 @@ <currentRowUse>DontUse</currentRowUse> <selectedRowsUse>Auto</selectedRowsUse> </formCommands> - <formCommands> - <name>СвязиНеУдаленныхУдалить</name> - <title> - <key>ru</key> - <value>Пометить на удаление / Снять пометку</value> - - 6 - - ru - Пометить на удаление / Снять пометку - - - true - - - StdPicture.MarkToDelete - - - - СвязиНеУдаленныхУдалить - - - DontUse - Auto - - - НеУдаленныеЗаменитьНа - - <key>ru</key> - <value>Заменить...</value> - - 7 - - ru - Заменить во всех местах использования... - - - true - - - - НеУдаленныеЗаменитьНа - - - DontUse - Auto - ДеревоПомеченныхНаУдалениеИзменить @@ -4078,52 +4229,279 @@ <selectedRowsUse>Auto</selectedRowsUse> </formCommands> <formCommands> - <name>НеУдаленныеУдалить</name> + <name>УдалитьВсе</name> <title> <key>ru</key> - <value>Пометить на удаление / Снять пометку</value> + <value>Удалить все</value> - 9 + 11 + + true + + + + УдалитьВсе + + + Auto + Auto + + + УдалитьВыбранные + + <key>ru</key> + <value>Удалить выбранные</value> + + 12 + + true + + + + УдалитьВыбранные + + + Auto + Auto + + + НастроитьОтбор + + <key>ru</key> + <value>Настроить отбор</value> + + 13 + + true + + + + НастроитьОтбор + + + Auto + Auto + + + Настроить + + <key>ru</key> + <value>Настроить...</value> + + 14 + + true + + + + Настроить + + + Auto + Auto + + + Обновить + + <key>ru</key> + <value>Обновить</value> + + 15 + + true + + F5 + + StdPicture.Reread + + + + Обновить + + + Picture + Auto + Auto + + + ОтменитьОперацию + + <key>ru</key> + <value>Отменить</value> + + 16 + + true + + + + ОтменитьОперацию + + + Auto + Auto + + + Назад + + <key>ru</key> + <value>К списку помеченных</value> + + 17 ru - Пометить на удаление / Снять пометку + Вернуться к выбору объектов для удаления true + + + КВыборуОбъектов + + + Auto + Auto + + + ВыполнитьДействияИУдалить + + <key>ru</key> + <value>Повторить удаление</value> + + 18 + + true + + + + ВыполнитьДействияИУдалить + + + Auto + Auto + + + НеУдаленныеИзменить + + <key>ru</key> + <value>Изменить</value> + + 19 + + true + - StdPicture.MarkToDelete + StdPicture.Change - НеУдаленныеУдалить + НеУдаленныеИзменить - DontUse + Picture + Auto Auto - УдалениеПомеченныхНастроитьРасписание + УстановитьУдалить <key>ru</key> - <value>Настроить расписание</value> + <value>Удалить</value> - 10 - - ru - Настроить расписание для автоматического удаления помеченных объектов в регламентном задании. - + 20 true - УдалениеПомеченныхНастроитьРасписание + УстановитьУдалить - DontUse + Auto Auto + + УстановитьЗаменитьНа + + <key>ru</key> + <value>Заменить на</value> + + 21 + + true + + + + УстановитьЗаменитьНа + + + Auto + Auto + + + СвернутьСтрокиДереваВыбораПомеченных + + <key>ru</key> + <value>Свернуть строки дерева выбора помеченных</value> + + 22 + + true + + + StdPicture.CollapseAll + + + + СвернутьСтрокиДереваВыбораПомеченных + + + Auto + Auto + + + РазвернутьСтрокиДереваПомеченных + + <key>ru</key> + <value>Развернуть строки дерева помеченных</value> + + 23 + + true + + + StdPicture.ExpandAll + + + + РазвернутьСтрокиДереваПомеченных + + + Auto + Auto + + + УдаляемыеОбъекты + + ValueList + + true + + + РежимУдаления + + String + + + + + ОтборМетаданных + + ValueList + + true + diff --git a/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Forms/ОсновнаяФорма/Module.bsl b/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Forms/ОсновнаяФорма/Module.bsl index ef7fb191e..17a193e12 100644 --- a/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Forms/ОсновнаяФорма/Module.bsl +++ b/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Forms/ОсновнаяФорма/Module.bsl @@ -6,6 +6,27 @@ // https://creativecommons.org/licenses/by/4.0/legalcode /////////////////////////////////////////////////////////////////////////////////////////////////////// +#Область ОписаниеПеременных + +// Информация о текущем выполняемом фоновом задании +&НаКлиенте +Перем ВыполняемаяОперация;// см. Неопределено, ДлительныеОперации.ВыполнитьФункцию + +&НаКлиенте +Перем ПредставлениеОперации;// Строка + +// Результат, который возвращает УдалениеПомеченныхОбъектовКлиент.НачатьУдалениеПомеченных +&НаКлиенте +Перем СведенияОРезультатахУдаления;// см. УдалениеПомеченныхОбъектовСлужебныйКлиентСервер.НовыйСведенияОРезультатахУдаления, Неопределено + +&НаКлиенте +Перем ОчередьЗаданийФормы; // Массив из Строка + +&НаКлиенте +Перем РезультатПредыдущегоШага; + +#КонецОбласти + #Область ОбработчикиСобытийФормы &НаСервере @@ -16,52 +37,51 @@ Возврат; // Отказ устанавливается в ПриОткрытии. КонецЕсли; - Если ОбщегоНазначения.РазделениеВключено() - И Не ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда + Если ОбщегоНазначения.РазделениеВключено() И Не ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда ТекстОшибки = НСтр("ru = 'Для удаления помеченных необходимо войти в область данных.'"); Возврат; // Отказ устанавливается в ПриОткрытии. КонецЕсли; - Если Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПоискИУдалениеДублей") Тогда - Элементы.НеУдаленныеЗаменитьНа.Видимость = Ложь; - Элементы.НеУдаленныеЗаменитьНаИзМеню.Видимость = Ложь; + Если Параметры.УдаляемыеОбъекты.Количество() > 0 Тогда + НастроитьФормуДляРаботыКакСервис(); КонецЕсли; - РегламентноеЗадание = РегламентныеЗаданияНайтиПредопределенное(); - - ВидимостьФлажка = (РегламентноеЗадание <> Неопределено); - Если ВидимостьФлажка Тогда - УдалениеПомеченныхИдентификатор = РегламентноеЗадание.УникальныйИдентификатор; - УдалениеПомеченныхИспользование = РегламентноеЗадание.Использование; - УдалениеПомеченныхРасписание = РегламентноеЗадание.Расписание; + Если Параметры.ОтборМетаданных.Количество() > 0 Тогда + УстановитьПереданныйОтборМетаданных(); КонецЕсли; - ВидимостьРасписания = ВидимостьФлажка - И Не ОбщегоНазначения.РазделениеВключено() - И Пользователи.ЭтоПолноправныйПользователь(, Истина); - - Элементы.УдалениеПомеченныхИспользование.Видимость = ВидимостьФлажка; - Элементы.УдалениеПомеченныхНастроитьРасписание.Видимость = ВидимостьРасписания; - Элементы.УдалениеПомеченныхПредставлениеРасписания.Видимость = ВидимостьРасписания; - Если Не ВидимостьРасписания Тогда - Элементы.УдалениеПомеченныхИспользование.Заголовок = НСтр("ru = 'Автоматически удалять помеченные объекты'"); + ЭтоМобильныйКлиент = ОбщегоНазначения.ЭтоМобильныйКлиент(); + Если ЭтоМобильныйКлиент Тогда + Элементы.ДеревоПомеченныхНаУдалениеНастроить.Видимость = Ложь; + Элементы.ДеревоПомеченныхНаУдалениеИзменить.Видимость = Ложь; + Элементы.НеУдаленныеИзменить.Видимость = Ложь; + Элементы.Действия.Видимость = Ложь; + Элементы.Назад.Видимость = Ложь; КонецЕсли; - УстановитьДоступность(); - - БыстрыйПоиск = Новый Структура; - БыстрыйПоиск.Вставить("ПолныеИменаОбъектовМетаданных", Новый Соответствие); - - Монопольно = Истина; - РежимУдаления = "Полный"; - ПриСозданииНаСервереУстановитьТекстПоясненияКОбработке(); - ВидимостьДоступность(ЭтотОбъект); + УстановитьСостояниеВыбораПомеченныхНаУдаление(); + УстановитьУсловноеОформление(); + УстановитьСписокДействийМестИспользования(); + ТолькоПросмотр = Истина; КонецПроцедуры &НаСервере Процедура ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки) - ВидимостьДоступность(ЭтотОбъект); + НастройкиДополнительныхРеквизитов = Настройки["ДополнительныеРеквизитыПомеченныхНаУдаления"]; + Если НастройкиДополнительныхРеквизитов <> Неопределено Тогда + ЧислоДополнительныхРеквизитов = УдалениеПомеченныхОбъектовСлужебный.ЧислоДополнительныхРеквизитов( + НастройкиДополнительныхРеквизитов); + ДобавитьДополнительныеРеквизиты(1, ЧислоДополнительныхРеквизитов); + УстановитьУсловноеОформление(); + КонецЕсли; + + НастройкиОтбора = Настройки["ОтборМетаданных"]; + Если ЗначениеЗаполнено(НастройкиОтбора) Тогда + Элементы.НастроитьОтбор.Заголовок = ПредставлениеОтбораМетаданных(НастройкиОтбора); + ИначеЕсли ЗначениеЗаполнено(Параметры.ОтборМетаданных) Тогда + ОтборМетаданных = Параметры.ОтборМетаданных; + КонецЕсли; КонецПроцедуры &НаКлиенте @@ -70,61 +90,99 @@ ПоказатьПредупреждение(, ТекстОшибки); Отказ = Истина; КонецЕсли; + + Если УдалятьПриОткрытии Тогда + ДобавитьЗадание(ЗаданияФормы().УдалениеПомеченных); + Иначе + ДобавитьЗадание(ЗаданияФормы().ПоискПомеченных); + КонецЕсли; + ПодключитьОбработчикОжидания("ЗапуститьЗаданиеСОжиданием", 0.1, Истина); КонецПроцедуры &НаКлиенте Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка) - - Если Не ПоказатьДиалогПередЗакрытием Тогда - Возврат; - КонецЕсли; - - Отказ = Истина; Если ЗавершениеРаботы Тогда Возврат; КонецЕсли; - ТекстВопроса = НСтр("ru = 'Удаление помеченных еще выполняется. - |Прервать?'"); - Кнопки = Новый СписокЗначений; - Кнопки.Добавить(КодВозвратаДиалога.Прервать); - Кнопки.Добавить(КодВозвратаДиалога.Пропустить, НСтр("ru = 'Не прерывать'")); - Обработчик = Новый ОписаниеОповещения("ПослеПодтвержденияОтменыЗадания", ЭтотОбъект); - ПоказатьВопрос(Обработчик, ТекстВопроса, Кнопки, 60, КодВозвратаДиалога.Пропустить); - + Если ПоказатьДиалогПередЗакрытием Тогда + Отказ = Истина; + Обработчик = Новый ОписаниеОповещения("ПослеПодтвержденияОтменыЗадания", ЭтотОбъект); + ТекстВопроса = НСтр("ru = 'Выполняется %1. + |Прервать?'"); + Кнопки = Новый СписокЗначений; + Кнопки.Добавить(КодВозвратаДиалога.Прервать); + Кнопки.Добавить(КодВозвратаДиалога.Пропустить, НСтр("ru = 'Не прерывать'")); + + ПоказатьВопрос(Обработчик, + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстВопроса, НРег(ПредставлениеОперации)), + Кнопки, 60, КодВозвратаДиалога.Пропустить); + ИначеЕсли УдалятьПриОткрытии Тогда + ОписаниеОповещенияОЗакрытии.ДополнительныеПараметры.Вставить("РезультатЗакрытия", СведенияОРезультатахУдаления); + КонецЕсли; КонецПроцедуры #КонецОбласти #Область ОбработчикиСобытийЭлементовШапкиФормы -&НаКлиенте -Процедура РежимУдаленияПриИзменении(Элемент) - ВидимостьДоступность(ЭтотОбъект); -КонецПроцедуры - -&НаКлиенте -Процедура ПояснениеКОбработкеОбработкаНавигационнойСсылки(Элемент, Ссылка, СтандартнаяОбработка) - СтандартнаяОбработка = Ложь; - ПараметрыФормы = Новый Структура("ОтборИмяПриложения", "1CV8,1CV8C,WebClient"); - СтандартныеПодсистемыКлиент.ОткрытьСписокАктивныхПользователей(ПараметрыФормы); -КонецПроцедуры - &НаКлиенте Процедура СсылкаПодробнееНажатие(Элемент) - СтандартныеПодсистемыКлиент.ПоказатьПодробнуюИнформацию(Неопределено, ПодробныйТекстОшибки); + Если ЭтоОшибкаУстановкиМонопольногоРежима(ПодробныйТекстОшибкиФоновогоЗадания) Тогда + СтандартныеПодсистемыКлиент.ОткрытьСписокАктивныхПользователей(); + Иначе + ТекстОшибки = ?(Элемент.Имя = Элементы.ПодробнееОшибкаФоновогоЗадания.Имя, ПодробныйТекстОшибкиФоновогоЗадания, ПодробныйТекстОшибки); + СтандартныеПодсистемыКлиент.ПоказатьПодробнуюИнформацию(Неопределено, ТекстОшибки); + КонецЕсли; КонецПроцедуры &НаКлиенте -Процедура УдалениеПомеченныхИспользованиеПриИзменении(Элемент) - Если УдалениеПомеченныхИспользование И Элементы.УдалениеПомеченныхПредставлениеРасписания.Видимость Тогда - Если Элементы.УдалениеПомеченныхПредставлениеРасписания.Видимость Тогда - РегламентныеЗаданияИзменитьРасписание(); - Возврат; - КонецЕсли; +Процедура ОтменитьОперацию(Команда) + ОтменитьОперациюСервер(ВыполняемаяОперация); + + Если ТекущееЗадание() = "ВыполнениеДополнительнойОбработки" Тогда + УстановитьСостояниеНеуспешноеУдаление(); + Иначе + УстановитьСостояниеВыбораПомеченныхНаУдаление(); + КонецЕсли; + + ПоказатьДиалогПередЗакрытием = Ложь; + ВыполняемаяОперация = Неопределено; + Если УдалятьПриОткрытии Тогда + Закрыть(); + КонецЕсли; +КонецПроцедуры + +&НаСервере +Процедура ОтменитьОперациюСервер(ВыполняемаяОперация) + Если ВыполняемаяОперация = Неопределено Тогда + Возврат; + КонецЕсли; + + ДлительныеОперации.ОтменитьВыполнениеЗадания(ВыполняемаяОперация.ИдентификаторЗадания); + УдалениеПомеченныхОбъектовСлужебный.СнятьБлокировкуИспользованияУдаляемыхОбъектов(УникальныйИдентификатор); + УстановитьМонопольныйРежимНаСервере(Ложь); +КонецПроцедуры + +&НаКлиенте +Процедура КВыборуОбъектов(Команда) + Оповещение = Новый ОписаниеОповещения("КВыборуОбъектовЗавершение", ЭтотОбъект); + Если ТаблицаДействий.Количество() > 0 Тогда + ПоказатьВопрос(Оповещение, + НСтр("ru='Не завершено удаление объектов. + |Вернуться к списку помеченных на удаление?'"), + РежимДиалогаВопрос.ДаНет); + Иначе + УстановитьСостояниеВыбораПомеченныхНаУдаление(); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура КВыборуОбъектовЗавершение(Результат, ДополнительныеПараметры) Экспорт + Если Результат = КодВозвратаДиалога.Да Тогда + ТаблицаДействий.Очистить(); + УстановитьСостояниеВыбораПомеченныхНаУдаление(); КонецЕсли; - Изменения = Новый Структура("Использование", УдалениеПомеченныхИспользование); - РегламентныеЗаданияСохранить(Изменения); КонецПроцедуры #КонецОбласти @@ -134,9 +192,10 @@ &НаКлиенте Процедура ДеревоПомеченныхНаУдалениеПометкаПриИзменении(Элемент) ТекущиеДанные = Элементы.ДеревоПомеченныхНаУдаление.ТекущиеДанные; - Если ТекущиеДанные = Неопределено Тогда - Возврат; + Если ТекущиеДанные.Пометка = 2 Тогда + ТекущиеДанные.Пометка = 0; КонецЕсли; + ДеревоПомеченныхНаУдалениеУстановитьПометкуВСписке(ТекущиеДанные, ТекущиеДанные.Пометка, Истина); КонецПроцедуры @@ -161,12 +220,6 @@ ПоказатьОбъектТаблицы(Элемент); КонецПроцедуры -&НаКлиенте -Процедура НеУдаленныеПередУдалением(Элемент, Отказ) - Отказ = Истина; - ПометитьВыделенныеОбъектыТаблицыНаУдаление(Элемент); -КонецПроцедуры - &НаКлиенте Процедура НеУдаленныеВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; @@ -179,26 +232,60 @@ ПоказатьОбъектТаблицы(Элемент); КонецПроцедуры -#КонецОбласти - -#Область ОбработчикиСобытийЭлементовТаблицыФормыСвязиНеУдаленных - -&НаКлиенте -Процедура СвязиНеУдаленныхПередНачаломИзменения(Элемент, Отказ) - Отказ = Истина; - ПоказатьОбъектТаблицы(Элемент); -КонецПроцедуры - -&НаКлиенте -Процедура СвязиНеУдаленныхПередУдалением(Элемент, Отказ) - Отказ = Истина; - ПометитьВыделенныеОбъектыТаблицыНаУдаление(Элемент); -КонецПроцедуры - &НаКлиенте Процедура СвязиНеУдаленныхВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + Если Поле.Имя <> Элементы.СвязиНеУдаленныхДействие.Имя Тогда + СтандартнаяОбработка = Ложь; + ПоказатьОбъектТаблицы(Элемент); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура МестаИспользованияНеудаленныхОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) + УстановитьЗаменитьНаПродолжение(ВыбранноеЗначение); +КонецПроцедуры + +&НаКлиенте +Процедура СвязиНеУдаленныхДействиеПриИзменении(Элемент) + ТекущиеДанные = Элементы.МестаИспользованияНеудаленных.ТекущиеДанные; + ВыбранноеЗначение = ТекущиеДанные.ДействиеПредставление; + + Если НЕ ЗначениеЗаполнено(ВыбранноеЗначение) Тогда + + Если ТекущиеДанные.Действие = "ЗаменитьСсылку" Тогда + Для Каждого Элемент Из МестаИспользованияНеудаленных.ПолучитьЭлементы() Цикл + Элемент.Действие = Неопределено; + КонецЦикла; + + Фильтр = Новый Структура("Источник", ТекущиеДанные.УдаляемыйСсылка); + Действия = ТаблицаДействий.НайтиСтроки(Фильтр); + Для Каждого Действие Из Действия Цикл + ТаблицаДействий.Удалить(Действие); + КонецЦикла; + Иначе + ТекущиеДанные.Действие = Неопределено; + + Фильтр = Новый Структура("ОбнаруженныйСсылка", ТекущиеДанные.ОбнаруженныйСсылка); + Действия = ТаблицаДействий.НайтиСтроки(Фильтр); + Для Каждого Действие Из Действия Цикл + ТаблицаДействий.Удалить(Действие); + КонецЦикла; + КонецЕсли; + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура СвязиНеУдаленныхДействиеОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; - ПоказатьОбъектТаблицы(Элемент); + + ТекущиеДанные = Элементы.МестаИспользованияНеудаленных.ТекущиеДанные; + ТекущиеДанные.ДействиеПредставление = ""; + + Если ВыбранноеЗначение = "ЗаменитьСсылку" Тогда + УстановитьЗаменитьНа(Неопределено); + Иначе + ЗарегистрироватьДействиеМестаИспользования(ТекущиеДанные, ВыбранноеЗначение); + КонецЕсли; КонецПроцедуры #КонецОбласти @@ -206,20 +293,32 @@ #Область ОбработчикиКомандФормы &НаКлиенте -Процедура КомандаДалее(Команда) - ЗапуститьФоновоеЗаданиеКлиент(1); +Процедура Обновить(Команда) + Если ВыполняемаяОперация = Неопределено Тогда + ЗапуститьЗадание(ЗаданияФормы().ПоискПомеченных); + КонецЕсли;; КонецПроцедуры &НаКлиенте -Процедура КомандаНазад(Команда) - Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаВыборРежимаУдаления; - ВидимостьДоступность(ЭтотОбъект); +Процедура ВыполнитьДействияИУдалить(Команда) + ДобавитьЗадание(ЗаданияФормы().ВыполнениеДополнительнойОбработки); + ДобавитьЗадание(ЗаданияФормы().УдалениеПомеченных); + ЗапуститьЗадание(); +КонецПроцедуры + +&НаКлиенте +Процедура НеУдаленныеИзменить(Команда) + Если НЕ ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(ТекущийЭлемент, "ТекущиеДанные") Тогда + Возврат; + КонецЕсли; + + ПоказатьОбъектТаблицы(ТекущийЭлемент); КонецПроцедуры &НаКлиенте Процедура ДеревоПомеченныхНаУдалениеУстановитьВсе(Команда) - ЭлементыСписка = ДеревоПомеченныхНаУдаление.ПолучитьЭлементы(); + Для Каждого Элемент Из ЭлементыСписка Цикл ДеревоПомеченныхНаУдалениеУстановитьПометкуВСписке(Элемент, Истина, Истина); Родитель = Элемент.ПолучитьРодителя(); @@ -227,13 +326,12 @@ ДеревоПомеченныхНаУдалениеПроверитьРодителя(Элемент) КонецЕсли; КонецЦикла; - КонецПроцедуры &НаКлиенте Процедура ДеревоПомеченныхНаУдалениеСнятьВсе(Команда) - ЭлементыСписка = ДеревоПомеченныхНаУдаление.ПолучитьЭлементы(); + Для Каждого Элемент Из ЭлементыСписка Цикл ДеревоПомеченныхНаУдалениеУстановитьПометкуВСписке(Элемент, Ложь, Истина); Родитель = Элемент.ПолучитьРодителя(); @@ -241,7 +339,6 @@ ДеревоПомеченныхНаУдалениеПроверитьРодителя(Элемент) КонецЕсли; КонецЦикла; - КонецПроцедуры &НаКлиенте @@ -251,72 +348,526 @@ &НаКлиенте Процедура ДеревоПомеченныхНаУдалениеОбновить(Команда) - ЗапуститьФоновоеЗаданиеКлиент(2); + ЗапуститьЗадание(ЗаданияФормы().ПоискПомеченных); КонецПроцедуры &НаКлиенте -Процедура НеУдаленныеЗаменитьНа(Команда) - МассивИдентификаторов = Элементы.НеУдаленные.ВыделенныеСтроки; - Если МассивИдентификаторов.Количество() = 0 Тогда - Возврат; +Процедура УдалитьВсе(Команда) + + ДобавитьЗадание(ЗаданияФормы().УдалениеПомеченных); + Если ВыполняемаяОперация = Неопределено Тогда + ДеревоПомеченныхНаУдалениеУстановитьВсе(Команда); + ЗапуститьЗадание(); КонецЕсли; - МассивСсылок = Новый Массив; - Для Каждого Идентификатор Из МассивИдентификаторов Цикл - СтрокаТаблицы = НеУдаленные.НайтиПоИдентификатору(Идентификатор); - Если ТипЗнч(СтрокаТаблицы.УдаляемыйСсылка) = Тип("Строка") Тогда - Продолжить; // Пропуск групп. +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьУдалить(Команда) + Для Каждого ИдентификаторСтроки Из Элементы.МестаИспользованияНеудаленных.ВыделенныеСтроки Цикл + ВыделеннаяСтрока = МестаИспользованияНеудаленных.НайтиПоИдентификатору(ИдентификаторСтроки); + + Если ВыделеннаяСтрока.ОсновнаяПричина Тогда + ЗарегистрироватьДействиеМестаИспользования(ВыделеннаяСтрока, "Удалить"); + КонецЕсли; + КонецЦикла; +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьЗаменитьНа(Команда) + ТекущиеДанные = Элементы.МестаИспользованияНеудаленных.ТекущиеДанные; + + Если ТекущиеДанные.ОсновнаяПричина Тогда + ПутьКФорме = ИмяМетаданных(ТекущиеДанные.УдаляемыйСсылка) + ".ФормаВыбора"; + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("РежимВыбора", Истина); + ОткрытьФорму(ПутьКФорме, ПараметрыФормы, Элементы.МестаИспользованияНеудаленных, , , , , РежимОткрытияОкнаФормы.БлокироватьОкноВладельца); + Иначе + Состояние(НСтр("ru='Для выбранной строки нельзя указать действие'"),,,БиблиотекаКартинок.Предупреждение32); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьЗаменитьНаПродолжение(Результат) + ТекущиеДанные = Элементы.МестаИспользованияНеудаленных.ТекущиеДанные; + + Для Каждого ИдентификаторСтроки Из Элементы.МестаИспользованияНеудаленных.ВыделенныеСтроки Цикл + ВыделеннаяСтрока = МестаИспользованияНеудаленных.НайтиПоИдентификатору(ИдентификаторСтроки); + + Если ВыделеннаяСтрока.УдаляемыйСсылка <> ТекущиеДанные.УдаляемыйСсылка Тогда + Продолжить; + КонецЕсли; + + Если Результат = Неопределено Тогда + ЗарегистрироватьДействиеМестаИспользования(ВыделеннаяСтрока, Неопределено); + Иначе + Если ВыделеннаяСтрока.ОсновнаяПричина Тогда + ЗарегистрироватьДействиеМестаИспользования(ВыделеннаяСтрока, "ЗаменитьСсылку", Результат); + КонецЕсли; КонецЕсли; - МассивСсылок.Добавить(СтрокаТаблицы.УдаляемыйСсылка); КонецЦикла; - Если МассивСсылок.Количество() = 0 Тогда - ПоказатьПредупреждение(, НСтр("ru = 'Выберите объекты'")); + Для Каждого ВыделеннаяСтрока Из МестаИспользованияНеудаленных.ПолучитьЭлементы() Цикл + Если ВыделеннаяСтрока.ОсновнаяПричина И ВыделеннаяСтрока.УдаляемыйСсылка = ТекущиеДанные.УдаляемыйСсылка Тогда + ЗарегистрироватьДействиеМестаИспользования(ВыделеннаяСтрока, "ЗаменитьСсылку", Результат); + КонецЕсли; + КонецЦикла; +КонецПроцедуры + +&НаКлиенте +Процедура Настроить(Команда) + ОповещениеОЗакрытии = Новый ОписаниеОповещения("НастроитьПродолжение", ЭтотОбъект); + + ПараметрыФормы = Новый Структура("АдресНастроек", НастройкиУдаленияПомеченных()); + ОткрытьФорму("Обработка.УдалениеПомеченныхОбъектов.Форма.НастройкиУдаленияОбъектов", ПараметрыФормы, ЭтотОбъект, , , , + ОповещениеОЗакрытии, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца); +КонецПроцедуры + +&НаСервере +Функция НастройкиУдаленияПомеченных() + Настройки = Новый Структура; + Настройки.Вставить("РежимУдаления", РежимУдаления); + Настройки.Вставить("ВыбранныеРеквизиты", ДополнительныеРеквизитыПомеченныхНаУдаления.Выгрузить()); + Возврат ПоместитьВоВременноеХранилище(Настройки, УникальныйИдентификатор); +КонецФункции + +&НаКлиенте +Процедура НастроитьПродолжение(Результат, ДополнительныеПараметры) Экспорт + Если Результат = Неопределено Тогда Возврат; КонецЕсли; - // Проверка подсистемы выполняется в ПриСозданииНаСервере. - МодульПоискИУдалениеДублейКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПоискИУдалениеДублейКлиент"); - МодульПоискИУдалениеДублейКлиент.ЗаменитьВыделенные(МассивСсылок); + ТребуетсяОбновлениеПомеченныхНаУдаление = НастроитьПродолжениеСервер(Результат); + Если ТребуетсяОбновлениеПомеченныхНаУдаление Тогда + ЗапуститьЗадание(ЗаданияФормы().ПоискПомеченных); + КонецЕсли; +КонецПроцедуры + +&НаСервере +Функция НастроитьПродолжениеСервер(АдресНастроек) + Настройки = ПолучитьИзВременногоХранилища(АдресНастроек); + УдалитьИзВременногоХранилища(АдресНастроек); + РежимУдаления = Настройки.РежимУдаления; + + НастройкиИзменились = НастройкиИзменились(Настройки.ВыбранныеРеквизиты); + + ТекущееЧислоДополнительныхРеквизитов = УдалениеПомеченныхОбъектовСлужебный.ЧислоДополнительныхРеквизитов( + ДополнительныеРеквизитыПомеченныхНаУдаления.Выгрузить()); + НовоеЧислоДополнительныхРеквизитов = УдалениеПомеченныхОбъектовСлужебный.ЧислоДополнительныхРеквизитов(Настройки.ВыбранныеРеквизиты); + ТекущееЧислоСозданныхРеквизитов = ТекущееЧислоСозданныхРеквизитов(ТекущееЧислоДополнительныхРеквизитов, НовоеЧислоДополнительныхРеквизитов); + + Если ТекущееЧислоСозданныхРеквизитов < НовоеЧислоДополнительныхРеквизитов Тогда + ЧислоДобавляемыхРеквизитов = НовоеЧислоДополнительныхРеквизитов - ТекущееЧислоСозданныхРеквизитов; + ДобавитьДополнительныеРеквизиты(ТекущееЧислоСозданныхРеквизитов + 1, ЧислоДобавляемыхРеквизитов); + КонецЕсли; + + Если ТекущееЧислоДополнительныхРеквизитов < ТекущееЧислоСозданныхРеквизитов + И ТекущееЧислоДополнительныхРеквизитов < НовоеЧислоДополнительныхРеквизитов Тогда + + УстановитьВидимостьДополнительныхРеквизитов(ТекущееЧислоДополнительныхРеквизитов+1, ТекущееЧислоСозданныхРеквизитов, Истина); + КонецЕсли; + + Если ТекущееЧислоДополнительныхРеквизитов > НовоеЧислоДополнительныхРеквизитов Тогда + УстановитьВидимостьДополнительныхРеквизитов(НовоеЧислоДополнительныхРеквизитов+1, + ТекущееЧислоДополнительныхРеквизитов, Ложь); + КонецЕсли; + + ДополнительныеРеквизитыПомеченныхНаУдаления.Загрузить(Настройки.ВыбранныеРеквизиты); + + УстановитьУсловноеОформление(); + + Возврат НовоеЧислоДополнительныхРеквизитов > ТекущееЧислоДополнительныхРеквизитов ИЛИ НастройкиИзменились; +КонецФункции + +&НаКлиенте +Процедура УдалитьВыбранные(Команда) + ЗапуститьЗадание(ЗаданияФормы().УдалениеПомеченных); КонецПроцедуры &НаКлиенте -Процедура НеУдаленныеУдалить(Команда) - ПометитьВыделенныеОбъектыТаблицыНаУдаление(Элементы.НеУдаленные); +Процедура НастроитьОтбор(Команда) + КоллекцияВыбираемыхОбъектов = Новый СписокЗначений(); + + КоллекцияВыбираемыхОбъектов.Добавить("Справочники"); + КоллекцияВыбираемыхОбъектов.Добавить("Документы"); + КоллекцияВыбираемыхОбъектов.Добавить("ПланыВидовХарактеристик"); + КоллекцияВыбираемыхОбъектов.Добавить("ПланыСчетов"); + КоллекцияВыбираемыхОбъектов.Добавить("ПланыСчетов"); + КоллекцияВыбираемыхОбъектов.Добавить("ПланыВидовРасчета"); + КоллекцияВыбираемыхОбъектов.Добавить("БизнесПроцессы"); + КоллекцияВыбираемыхОбъектов.Добавить("Задачи"); + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("КоллекцииВыбираемыхОбъектовМетаданных", КоллекцияВыбираемыхОбъектов); + ПараметрыФормы.Вставить("ОбластиПоиска", ОтборМетаданных); + ПараметрыФормы.Вставить("ТолькоПодсистемыСКИ", Истина); + + ОповещениеОЗакрытии = Новый ОписаниеОповещения("НастроитьОтборЗавершение", ЭтотОбъект); + ОткрытьФорму("Обработка.УдалениеПомеченныхОбъектов.Форма.ВыборОбъектовМетаданныхПоПодсистемам", ПараметрыФормы, ЭтотОбъект, , , , ОповещениеОЗакрытии, + РежимОткрытияОкнаФормы.БлокироватьОкноВладельца); КонецПроцедуры &НаКлиенте -Процедура СвязиНеУдаленныхУдалить(Команда) - ПометитьВыделенныеОбъектыТаблицыНаУдаление(Элементы.СвязиНеУдаленных); +Процедура РазвернутьСтрокиДереваПомеченных(Команда) + СтандартныеПодсистемыКлиент.РазвернутьУзлыДерева(ЭтотОбъект, "ДеревоПомеченныхНаУдаление"); КонецПроцедуры &НаКлиенте -Процедура УдалениеПомеченныхНастроитьРасписание(Команда) - РегламентныеЗаданияИзменитьРасписание(); +Процедура СвернутьСтрокиДереваВыбораПомеченных(Команда) + ВсеСтроки = Элементы.ДеревоПомеченныхНаУдаление; + Для Каждого ДанныеСтроки Из ДеревоПомеченныхНаУдаление.ПолучитьЭлементы() Цикл + ВсеСтроки.Свернуть(ДанныеСтроки.ПолучитьИдентификатор()); + КонецЦикла; КонецПроцедуры - #КонецОбласти #Область СлужебныеПроцедурыИФункции -//////////////////////////////////////////////////////////////////////////////// -// Клиент +#Область СостоянияФормы + +&НаСервере +Процедура УстановитьСостояниеВыбораПомеченныхНаУдаление() + Элементы.КоманднаяПанельФормы.Доступность = Истина; + Элементы.СостояниеВыполняется.Видимость = Ложь; + Элементы.СтраницыИнформация.Доступность = Истина; + + Элементы.СтраницыИнформация.ТекущаяСтраница = Элементы.СтраницаВыборОбрабатываемыхОбъектов; + Элементы.СтраницыОтображениеСостояния.Видимость = Ложь; + Элементы.СтраницыИнформация.ТолькоПросмотр = Ложь; + Элементы.ГруппаАктивныПослеПоискаПомеченные.Доступность = Истина; + + Элементы.КоманднаяПанельПоискПомеченных.Видимость = Истина; + Элементы.КоманднаяПанельОбработкаОшибок.Видимость = Ложь; + + Элементы.ГруппаНастройкиОтбораПоиска.Доступность = Истина; + Элементы.ПредставлениеПрогресса.Видимость = Ложь; + Элементы.ДеревоПомеченныхНаУдалениеУдалитьВсе.КнопкаПоУмолчанию = Истина; +КонецПроцедуры + +&НаСервере +Процедура УстановитьСостояниеВыбораПомеченныхНаУдалениеСПанельюСостояния() + Элементы.КоманднаяПанельФормы.Доступность = Истина; + Элементы.СостояниеВыполняется.Видимость = Истина; + Элементы.СтраницыИнформация.Доступность = Истина; + + Элементы.СтраницыИнформация.ТекущаяСтраница = Элементы.СтраницаВыборОбрабатываемыхОбъектов; + Элементы.СтраницыОтображениеСостояния.Видимость = Истина; + Элементы.СтраницыИнформация.ТолькоПросмотр = Ложь; + Элементы.ГруппаАктивныПослеПоискаПомеченные.Доступность = Истина; + + Элементы.КоманднаяПанельПоискПомеченных.Видимость = Истина; + Элементы.КоманднаяПанельОбработкаОшибок.Видимость = Ложь; + + Элементы.ГруппаНастройкиОтбораПоиска.Доступность = Истина; + Элементы.ПредставлениеПрогресса.Видимость = Ложь; + Элементы.ДеревоПомеченныхНаУдалениеУдалитьВсе.КнопкаПоУмолчанию = Истина; +КонецПроцедуры + +&НаСервере +Процедура УстановитьСостояниеНеуспешноеУдаление() + Элементы.КоманднаяПанельФормы.Доступность = Истина; + Элементы.СостояниеВыполняется.Видимость = Ложь; + Элементы.СтраницыИнформация.Доступность = Истина; + Элементы.СтраницыИнформация.Видимость = Истина; + + Элементы.СтраницыИнформация.ТекущаяСтраница = Элементы.СтраницаПричиныНевозможностиУдаления; + Элементы.СтраницыОтображениеСостояния.Видимость = Ложь; + Элементы.СтраницыИнформация.ТолькоПросмотр = Ложь; + Элементы.ГруппаАктивныПослеПоискаПомеченные.ТолькоПросмотр = Ложь; + + Элементы.КоманднаяПанельПоискПомеченных.Видимость = Ложь; + Элементы.КоманднаяПанельОбработкаОшибок.Видимость = Истина; + + Элементы.ГруппаНастройкиОтбораПоиска.Доступность = Ложь; + Элементы.ПредставлениеПрогресса.Видимость = Ложь; + Элементы.КоманднаяПанельФормы.Видимость = Истина; + Элементы.ВыполнитьДействияИУдалить.КнопкаПоУмолчанию = Истина; + Элементы.СсылкаПодробнее.Видимость = Ложь; +КонецПроцедуры + +&НаСервере +Процедура УстановитьСостояниеНеуспешноеУдалениеСПанельюСостояния() + Элементы.КоманднаяПанельФормы.Доступность = Истина; + Элементы.СостояниеВыполняется.Видимость = Истина; + Элементы.СтраницыИнформация.Доступность = Истина; + Элементы.СтраницыИнформация.Видимость = Истина; + + Элементы.СтраницыИнформация.ТекущаяСтраница = Элементы.СтраницаПричиныНевозможностиУдаления; + Элементы.СтраницыОтображениеСостояния.Видимость = Истина; + Элементы.СтраницыИнформация.ТолькоПросмотр = Ложь; + Элементы.ГруппаАктивныПослеПоискаПомеченные.ТолькоПросмотр = Ложь; + + Элементы.КоманднаяПанельПоискПомеченных.Видимость = Ложь; + Элементы.КоманднаяПанельОбработкаОшибок.Видимость = Истина; + + Элементы.ГруппаНастройкиОтбораПоиска.Доступность = Ложь; + Элементы.ПредставлениеПрогресса.Видимость = Ложь; + Элементы.КоманднаяПанельФормы.Видимость = Истина; + Элементы.ВыполнитьДействияИУдалить.КнопкаПоУмолчанию = Истина; + + Если ЭтоМобильныйКлиент Тогда + Элементы.ГруппаНеУдаленные.Видимость = Ложь; + КонецЕсли; + Элементы.СсылкаПодробнее.Видимость = Ложь; +КонецПроцедуры + +#КонецОбласти + +// Параметры: +// Ссылка - ЛюбаяСсылка +// Возвращаемое значение: +// Строка +// +&НаСервереБезКонтекста +Функция ИмяМетаданных(Ссылка) + Возврат Ссылка.Метаданные().ПолноеИмя(); +КонецФункции + +#Область Настройки + +&НаСервере +Функция НастройкиИзменились(ВыбранныеРеквизиты) + Результат = Ложь; + + ТаблицаСравнения = УдалениеПомеченныхОбъектовСлужебный.ОбъединениеТаблиц( + ВыбранныеРеквизиты, + ДополнительныеРеквизитыПомеченныхНаУдаления.Выгрузить()); + + ТаблицаСравнения.Колонки.Добавить("Число", Новый ОписаниеТипов("Число")); + ТаблицаСравнения.ЗаполнитьЗначения(1,"Число"); + ТаблицаСравнения.Свернуть("Метаданные, Реквизит", "Число"); + Для Каждого Элемент Из ТаблицаСравнения Цикл + Если Элемент.Число <> 2 Тогда + Результат = Истина; + Прервать; + КонецЕсли; + КонецЦикла; + + Возврат Результат; +КонецФункции + +&НаСервере +Функция ТекущееЧислоСозданныхРеквизитов(ТекущееЧислоДополнительныхРеквизитов, НовоеЧислоДополнительныхРеквизитов) + Результат = ТекущееЧислоДополнительныхРеквизитов; + + Для Сч = ТекущееЧислоДополнительныхРеквизитов + 1 По НовоеЧислоДополнительныхРеквизитов Цикл + Если Элементы.Найти("ДеревоПомеченныхНаУдалениеРеквизит"+Сч) <> Неопределено Тогда + Результат = Сч; + КонецЕсли; + КонецЦикла; + + Возврат Результат; +КонецФункции + +&НаСервере +Процедура УстановитьВидимостьДополнительныхРеквизитов(НачальноеНомер, КонечныйНомер, Видимость) + Для Сч = НачальноеНомер По КонечныйНомер Цикл + Элементы["ДеревоПомеченныхНаУдалениеРеквизит" + Сч].Видимость = Видимость; + КонецЦикла; +КонецПроцедуры + +&НаСервере +Процедура ДобавитьДополнительныеРеквизиты(НачальныйНомер, ЧислоДобавляемыхРеквизитов) + ДобавляемыеРеквизиты = Новый Массив; + ПоследняяЦифраВИмениРеквизита = НачальныйНомер+ЧислоДобавляемыхРеквизитов-1; + Для Сч = НачальныйНомер По ПоследняяЦифраВИмениРеквизита Цикл + ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Реквизит"+Сч, Новый ОписаниеТипов(), "ДеревоПомеченныхНаУдаление")); + КонецЦикла; + ИзменитьРеквизиты(ДобавляемыеРеквизиты); + + Для Сч = НачальныйНомер По ПоследняяЦифраВИмениРеквизита Цикл + ЭлементФормы = Элементы.Добавить("ДеревоПомеченныхНаУдалениеРеквизит"+Сч, Тип("ПолеФормы"), Элементы.ДеревоПомеченныхНаУдаление); + ЭлементФормы.Вид = ВидПоляФормы.ПолеВвода; + ЭлементФормы.ПутьКДанным = "ДеревоПомеченныхНаУдаление.Реквизит"+Сч; + КонецЦикла; +КонецПроцедуры + +#КонецОбласти + +#Область КомандыФормы + +&НаКлиенте +Процедура ЗарегистрироватьДействиеМестаИспользования(МестоИспользования, Действие, Параметр = Неопределено) + МестоИспользования.Действие = Действие; + МестоИспользования.ДействиеПредставление = ?(Параметр = Неопределено, + ДействияМестИспользованияНеудаленных.НайтиПоЗначению(МестоИспользования.Действие), + ПредставлениеКомандыЗаменитьНа(МестоИспользования, Параметр)); + + Если Действие <> Неопределено Тогда + + ЗарегистрированноеДействие = ТаблицаДействий.НайтиСтроки(Новый Структура("ОбнаруженныйСсылка",МестоИспользования.ОбнаруженныйСсылка)); + Если ЗарегистрированноеДействие.Количество() = 0 Тогда + ЗарегистрированноеДействие = ТаблицаДействий.Добавить(); + ЗарегистрированноеДействие.Действие = МестоИспользования.Действие; + ЗарегистрированноеДействие.ОбнаруженныйСсылка = МестоИспользования.ОбнаруженныйСсылка; + ЗарегистрированноеДействие.ПараметрДействия = Параметр; + ЗарегистрированноеДействие.Источник = МестоИспользования.УдаляемыйСсылка; + Иначе + ЗарегистрированноеДействие = ТаблицаДействий[0]; + ЗарегистрированноеДействие.Действие = МестоИспользования.Действие; + ЗарегистрированноеДействие.ПараметрДействия = Параметр; + КонецЕсли; + + КонецЕсли; +КонецПроцедуры + +#КонецОбласти + +#Область СобытияФормы + +&НаСервере +Процедура УстановитьПереданныйОтборМетаданных() + Перем Элемент; + Перем УстановленныйОтбор; + УстановленныйОтбор = Новый СписокЗначений; + Для Каждого Элемент Из Параметры.ОтборМетаданных Цикл + УстановленныйОтбор.Добавить(Элемент.Значение, Метаданные.НайтиПоПолномуИмени(Элемент.Значение).Представление()); + КонецЦикла; + УстановитьОтборМетаданных(ЭтотОбъект, УстановленныйОтбор); + Параметры.ОтборМетаданных = УстановленныйОтбор; +КонецПроцедуры + +// Настройка формы, если форма открыта через клиентский АПИ. +&НаСервере +Процедура НастроитьФормуДляРаботыКакСервис() + УдалятьПриОткрытии = Истина; + Элементы.СтраницыИнформация.Видимость = Ложь; + Элементы.ДеревоПомеченныхНаУдалениеНастроить.Видимость = Ложь; + Элементы.Назад.Видимость = Ложь; + Элементы.ГруппаНастройкиОтбораПоиска.Видимость = Ложь; + Элементы.КоманднаяПанельФормы.Видимость = Ложь; + Элементы.СтраницыОтображениеСостояния.Видимость = Истина; + АвтоЗаголовок = Ложь; + Заголовок = ""; +КонецПроцедуры + +&НаСервере +Процедура УстановитьУсловноеОформление() + ЦветГиперссылка = Метаданные.ЭлементыСтиля.ГиперссылкаЦвет.Значение; + ЦветНеактивнойНадписи = Метаданные.ЭлементыСтиля.ТекстЗапрещеннойЯчейкиЦвет.Значение; + + ЭлементыУсловногоОформления = УсловноеОформление.Элементы; + ЭлементыУсловногоОформления.Очистить(); + + ЭлементОформления = ЭлементыУсловногоОформления.Добавить(); + + ГруппаИ = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных")); + ГруппаИ.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ; + ОтборОформления = ГруппаИ.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборОформления.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("МестаИспользованияНеудаленных.Действие"); + ОтборОформления.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено; + + ОтборОформления = ГруппаИ.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборОформления.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("МестаИспользованияНеудаленных.ОсновнаяПричина"); + ОтборОформления.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборОформления.ПравоеЗначение = Истина; + + ОтборОформления = ГруппаИ.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборОформления.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("МестаИспользованияНеудаленных.СсылочногоТипа"); + ОтборОформления.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборОформления.ПравоеЗначение = Истина; + + ОтборОформления = ГруппаИ.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборОформления.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("МестаИспользованияНеудаленных.ОбнаруженныйСсылка"); + ОтборОформления.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено; + + ЭлементОформления.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru='Выберите действие'")); + ЭлементОформления.Оформление.УстановитьЗначениеПараметра("Шрифт", Метаданные.ЭлементыСтиля.ДействиеВКолонкеСпискаШрифт.Значение); + + ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить(); + ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("СвязиНеУдаленныхДействие"); + + // Цвет гиперссылки + ЭлементОформления = ЭлементыУсловногоОформления.Добавить(); + ОтборОформления = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборОформления.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("МестаИспользованияНеудаленных.ОсновнаяПричина"); + ОтборОформления.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборОформления.ПравоеЗначение = Истина; + + ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветГиперссылка); + + ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить(); + ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("СвязиНеУдаленныхДействие"); + + // Заголовки колонок + УстановитьУсловноеОформлениеДополнительныхРеквизитов(ЭлементыУсловногоОформления, ЦветНеактивнойНадписи); + + // Доступность выбора действий + ЭлементОформления = ЭлементыУсловногоОформления.Добавить(); + ОтборОформления = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборОформления.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("МестаИспользованияНеудаленных.ОсновнаяПричина"); + ОтборОформления.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборОформления.ПравоеЗначение = Ложь; + + ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина); + + ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить(); + ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("СвязиНеУдаленныхДействие"); +КонецПроцедуры + +&НаСервере +Процедура УстановитьУсловноеОформлениеДополнительныхРеквизитов(ЭлементыУсловногоОформления, ЦветНеактивнойНадписи) + ЭлементОформления = ЭлементыУсловногоОформления.Добавить(); + + ОтборОформления = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборОформления.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДеревоПомеченныхНаУдаление.ЭтоОписаниеОбъектаМетаданных"); + ОтборОформления.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборОформления.ПравоеЗначение = Истина; + + ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветНеактивнойНадписи); + + ЧислоДополнительныхРеквизитов = УдалениеПомеченныхОбъектовСлужебный.ЧислоДополнительныхРеквизитов( + ДополнительныеРеквизитыПомеченныхНаУдаления.Выгрузить()); + + Для Сч = 1 По ЧислоДополнительныхРеквизитов Цикл + ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить(); + ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("ДеревоПомеченныхНаУдалениеРеквизит" + Сч); + КонецЦикла; +КонецПроцедуры + +&НаСервере +Процедура УстановитьСписокДействийМестИспользования() + ДействияМестИспользованияНеудаленных.Добавить("Удалить", "Удалить"); + ДействияМестИспользованияНеудаленных.Добавить("ЗаменитьСсылку", "Заменить %ПредставлениеСсылка% на"); + + Элементы.СвязиНеУдаленныхДействие.СписокВыбора.Очистить(); + Для Каждого ЭлементСписка Из ДействияМестИспользованияНеудаленных Цикл + Элементы.СвязиНеУдаленныхДействие.СписокВыбора.Добавить(ЭлементСписка.Значение, ЭлементСписка.Представление); + КонецЦикла; +КонецПроцедуры + +#КонецОбласти + +#Область ПриАктивизацииСтрокиНеУдаленных &НаКлиенте Процедура ПоказатьСвязиНеУдаленныхНаКлиенте() Если НеУдаленныеИдентификаторТекущейСтроки = Элементы.НеУдаленные.ТекущаяСтрока Тогда Возврат; КонецЕсли; - ПоказатьСвязиНеУдаленныхНаСервере(ЭтотОбъект); + + ПодробныйТекстОшибки = ""; + ЗаполнитьМестаИспользованияНеудаленныхОбъектов(ЭтотОбъект); + + Если МестаИспользованияНеудаленных.ПолучитьЭлементы().Количество() = 0 Тогда + Элементы.СтраницыВариантовОтображенияПричин.ТекущаяСтраница = Элементы.СтраницаТекстОшибки; + УстановитьТекстОшибки(); + Элементы.Действия.Доступность = Ложь; + Иначе + Элементы.СтраницыВариантовОтображенияПричин.ТекущаяСтраница = Элементы.СтраницаПричиныНеУдаления; + СтандартныеПодсистемыКлиент.РазвернутьУзлыДерева(ЭтотОбъект, "МестаИспользованияНеудаленных", "*", Истина); + Элементы.Действия.Доступность = Истина; + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьТекстОшибки() + Элементы.ТекстОшибки.Заголовок = ТекстОшибки; + Элементы.СсылкаПодробнее.Видимость = ЗначениеЗаполнено(ПодробныйТекстОшибки) ; КонецПроцедуры &НаКлиентеНаСервереБезКонтекста -Процедура ПоказатьСвязиНеУдаленныхНаСервере(Форма) - - ПоказыватьТекстОшибки = Истина; - ТекстОшибки = ""; - ПодробныйТекстОшибки = ""; - +Процедура ЗаполнитьМестаИспользованияНеудаленныхОбъектов(Форма) НеУдаленныеИдентификаторТекущейСтроки = Форма.Элементы.НеУдаленные.ТекущаяСтрока; Если НеУдаленныеИдентификаторТекущейСтроки = Неопределено Тогда СтрокаДерева = Неопределено; @@ -324,47 +875,120 @@ СтрокаДерева = Форма.НеУдаленные.НайтиПоИдентификатору(НеУдаленныеИдентификаторТекущейСтроки); КонецЕсли; + ОтображаемыеСтроки = Форма.МестаИспользованияНеудаленных.ПолучитьЭлементы(); + ОтображаемыеСтроки.Очистить(); + Форма.КешПричинНеудаления.Очистить(); + Если СтрокаДерева = Неопределено Или СтрокаДерева.НомерКартинки < 1 Тогда // Ничего не выбрано или выбрана группа. - НеУдаленныеПодсказка = НСтр("ru = 'Выберите объект, чтобы узнать причину, - |по которой его не удалось удалить.'"); + Форма.ТекстОшибки = НСтр("ru = 'Выберите объект, чтобы узнать причину, + |по которой его не удалось удалить.'") Иначе // Выбрана ссылка не удаленного объекта. - Скрываемые = Форма.СвязиНеУдаленных.НайтиСтроки(Новый Структура("Видимость", Истина)); - Для Каждого СтрокаТаблицы Из Скрываемые Цикл - СтрокаТаблицы.Видимость = Ложь; - КонецЦикла; - - Форма.Элементы.СвязиНеУдаленных.ОтборСтрок = Новый ФиксированнаяСтруктура("УдаляемыйСсылка", СтрокаДерева.УдаляемыйСсылка); - Форма.НеУдаленныеПодсказка = " "; - Показываемые = Форма.СвязиНеУдаленных.НайтиСтроки(Новый Структура("УдаляемыйСсылка", СтрокаДерева.УдаляемыйСсылка)); + Показываемые = Форма.СвязиНеудаленных.НайтиСтроки(Новый Структура("УдаляемыйСсылка", СтрокаДерева.УдаляемыйСсылка)); Для Каждого СтрокаТаблицы Из Показываемые Цикл - СтрокаТаблицы.Видимость = Истина; Если СтрокаТаблицы.ЭтоОшибка Тогда - ТекстОшибки = СтрокаТаблицы.ОбнаруженныйСсылка; - ПодробныйТекстОшибки = СтрокаТаблицы.Представление; - Иначе - Если ПоказыватьТекстОшибки Тогда - Форма.Элементы.СвязиНеУдаленных.ТекущаяСтрока = СтрокаТаблицы.ПолучитьИдентификатор(); - ПоказыватьТекстОшибки = Ложь; - КонецЕсли; + Форма.ТекстОшибки = СтрокаТаблицы.ОбнаруженныйСсылка; + Форма.ПодробныйТекстОшибки = СтрокаТаблицы.Представление; + Прервать; КонецЕсли; + + ДобавитьПричиныНеудаленияРекурсивно(Форма, ОтображаемыеСтроки, СтрокаТаблицы); + Форма.КешПричинНеудаления.Добавить(СтрокаТаблицы.УдаляемыйСсылка); КонецЦикла; КонецЕсли; - Если ПоказыватьТекстОшибки Тогда - ТекущаяСтраница = Форма.Элементы.СтраницаТекстОшибки; - Форма.Элементы.СсылкаПодробнее.Видимость = ЗначениеЗаполнено(ПодробныйТекстОшибки); - Форма.Элементы.ТекстОшибки.Заголовок = ТекстОшибки; - Иначе - ТекущаяСтраница = Форма.Элементы.СтраницаПричиныНеУдаления; - Шаблон = НСтр("ru = 'Места использования объекта ""%1"" (%2):'"); - Форма.НеУдаленныеПодсказка = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Шаблон, СтрокаДерева.Представление, Формат(СтрокаДерева.КоличествоСвязей, "ЧН=0; ЧГ=")); - КонецЕсли; - Если Форма.Элементы.СтраницыВариантовОтображенияПричин.ТекущаяСтраница <> ТекущаяСтраница Тогда - Форма.Элементы.СтраницыВариантовОтображенияПричин.ТекущаяСтраница = ТекущаяСтраница; - КонецЕсли; КонецПроцедуры +&НаКлиентеНаСервереБезКонтекста +Процедура УстановитьВыбранноеДействиеНадПричинойНеудаления(Форма, ПричинаНеудаления, Действие = "") + Если ПричинаНеудаления.ЭтоОшибка Тогда + Возврат; + КонецЕсли; + + ТаблицаДействий = Форма.ТаблицаДействий; + ВыбранныеДействия = ТаблицаДействий.НайтиСтроки(Новый Структура("ОбнаруженныйСсылка", ПричинаНеудаления.ОбнаруженныйСсылка)); + Если ВыбранныеДействия.Количество() > 0 Тогда + Действие = ВыбранныеДействия[0].Действие; + ПараметрДействия = ВыбранныеДействия[0].ПараметрДействия; + КонецЕсли; + + ПричинаНеудаления.Действие = Действие; + Если Действие = "ЗаменитьСсылку" Тогда + ПричинаНеудаления.ДействиеПредставление = ПредставлениеКомандыЗаменитьНа(ПричинаНеудаления, ПараметрДействия); + Иначе + ПричинаНеудаления.ДействиеПредставление = Форма.ДействияМестИспользованияНеудаленных.НайтиПоЗначению(Действие); + КонецЕсли; +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Процедура ДобавитьПричиныНеудаленияРекурсивно(Форма, КоллекцияСтрокРодителя, ДанныеСтроки) + КешПричинНеудаления = Форма.КешПричинНеудаления; + + НоваяСтрока = КоллекцияСтрокРодителя.Добавить(); + ПодчиненныеСтроки = НоваяСтрока.ПолучитьЭлементы(); + Если ДанныеСтроки.ЭтоОшибка Тогда + ЗаполнитьЗначенияСвойств(НоваяСтрока, ДанныеСтроки,"ЭтоОшибка,НомерКартинки"); + НоваяСтрока.Представление = ДанныеСтроки.ОбнаруженныйСсылка; + НоваяСтрока.ОбнаруженныйСсылка = ?(ЗначениеЗаполнено(ДанныеСтроки.Представление), ДанныеСтроки.Представление, ДанныеСтроки.ОбнаруженныйСсылка); + Иначе + ЗаполнитьЗначенияСвойств(НоваяСтрока, ДанныеСтроки); + КонецЕсли; + Показываемые = Форма.СвязиНеудаленных.НайтиСтроки(Новый Структура("УдаляемыйСсылка", ДанныеСтроки.ОбнаруженныйСсылка)); + УстановитьВыбранноеДействиеНадПричинойНеудаления(Форма, + НоваяСтрока, + ?(Показываемые.Количество() <> 0, "Удалить", "")); + + СодержатьсяТолькоОшибки = Истина; + Для Каждого СтрокаТаблицы Из Показываемые Цикл + Если НЕ СтрокаТаблицы.ЭтоОшибка Тогда + СодержатьсяТолькоОшибки = Ложь; + КонецЕсли; + + Если КешПричинНеудаления.НайтиПоЗначению(СтрокаТаблицы.ОбнаруженныйСсылка) = Неопределено Тогда + КешПричинНеудаления.Добавить(СтрокаТаблицы.УдаляемыйСсылка); + ДобавитьПричиныНеудаленияРекурсивно(Форма, ПодчиненныеСтроки, СтрокаТаблицы); + КонецЕсли; + КонецЦикла; + + НоваяСтрока.ОсновнаяПричина = (ПодчиненныеСтроки.Количество() = 0 Или СодержатьсяТолькоОшибки) + И НоваяСтрока.СсылочногоТипа И Показываемые.Количество() = 0; +КонецПроцедуры + +#КонецОбласти + +#Область ПриАктивизацииСтрокиМестИспользованияНеудаленных + +&НаКлиенте +Процедура МестаИспользованияНеудаленныхПриАктивизацииСтроки(Элемент) + ТекущиеДанные = Элементы.МестаИспользованияНеудаленных.ТекущиеДанные; + + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + Если ЗначениеЗаполнено(ТекущиеДанные.ОбнаруженныйСсылка) Тогда + Элементы.СвязиНеУдаленныхДействие.СписокВыбора[1].Представление = ПредставлениеКомандыЗаменитьНа(ТекущиеДанные); + КонецЕсли; +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Функция ПредставлениеКомандыЗаменитьНа(ТекущиеДанные, Параметр = Неопределено) + СтрокаВерхнегоУровня = ТекущиеДанные.ПолучитьРодителя(); + + Если СтрокаВерхнегоУровня = Неопределено Тогда + ПредставлениеСтрокиВерхнегоУровня = ТекущиеДанные.ПредставлениеУдаляемый; + Иначе + ПредставлениеСтрокиВерхнегоУровня = СтрокаВерхнегоУровня.Представление; + КонецЕсли; + + ПредставлениеКомандыЗаменитьНа = СтрЗаменить( + "Заменить %ПредставлениеСсылка% на", "%ПредставлениеСсылка%", ПредставлениеСтрокиВерхнегоУровня) + + Символы.НПП + ?(Параметр = Неопределено, "", Параметр); + + Возврат ПредставлениеКомандыЗаменитьНа; +КонецФункции +#КонецОбласти + &НаКлиенте Процедура ПоказатьОбъектТаблицы(ТаблицаЭлемент) СтрокаТаблицы = ТаблицаЭлемент.ТекущиеДанные; @@ -373,176 +997,27 @@ КонецЕсли; Значение = Неопределено; - Если Не СтрокаТаблицы.Свойство("Значение", Значение) - И Не СтрокаТаблицы.Свойство("ОбнаруженныйСсылка", Значение) + Если Не СтрокаТаблицы.Свойство("ОбнаруженныйСсылка", Значение) И Не СтрокаТаблицы.Свойство("УдаляемыйСсылка", Значение) Тогда Возврат; КонецЕсли; - Если ТипЗнч(Значение) = Тип("Строка") Тогда + Если ТипЗнч(Значение) = Тип("Строка") + И НЕ ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(СтрокаТаблицы, "ЭтоОшибка", Ложь) Тогда + Если СтрокаТаблицы.Свойство("ЭтоКонстанта") И СтрокаТаблицы.ЭтоКонстанта Тогда ПутьКФорме = Значение + ".ФормаКонстант"; Иначе ПутьКФорме = Значение + ".ФормаСписка"; КонецЕсли; ОткрытьФорму(ПутьКФорме); + ИначеЕсли ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(СтрокаТаблицы, "ЭтоОшибка", Ложь) Тогда + СтандартныеПодсистемыКлиент.ПоказатьПодробнуюИнформацию(Неопределено, СтрокаТаблицы.ОбнаруженныйСсылка); Иначе ПоказатьЗначение(, Значение); КонецЕсли; КонецПроцедуры -&НаКлиенте -Процедура ПометитьВыделенныеОбъектыТаблицыНаУдаление(ТаблицаЭлемент) - Перем Значение; - - МассивИдентификаторов = ТаблицаЭлемент.ВыделенныеСтроки; - КоличествоВыделено = МассивИдентификаторов.Количество(); - Если КоличествоВыделено = 0 Тогда - Возврат; - КонецЕсли; - - ТаблицаИмя = ТаблицаЭлемент.Имя; - Если ТаблицаИмя = "ДеревоПомеченныхНаУдаление" Тогда - ИмяРеквизитаЗначение = "Значение"; - ЭтоСвязиНеУдаленных = Ложь; - ИначеЕсли ТаблицаИмя = "НеУдаленные" Тогда - ИмяРеквизитаЗначение = "УдаляемыйСсылка"; - ЭтоСвязиНеУдаленных = Ложь; - ИначеЕсли ТаблицаИмя = "СвязиНеУдаленных" Тогда - ИмяРеквизитаЗначение = "ОбнаруженныйСсылка"; - ЭтоСвязиНеУдаленных = Истина; - КонецЕсли; - - ТаблицаРеквизит = ЭтотОбъект[ТаблицаИмя]; - МассивСтрокТаблицы = Новый Массив; - МассивСсылокПомеченныхНаУдаление = Новый Массив; - МассивСсылокНеПомеченныхНаУдаление = Новый Массив; - УстанавливатьПометку = Ложь; - ЕстьЗаписиРегистров = Ложь; - ЕстьКонстанты = Ложь; - - Для Каждого Идентификатор Из МассивИдентификаторов Цикл - СтрокаТаблицы = ТаблицаРеквизит.НайтиПоИдентификатору(Идентификатор); - Если ЭтоСвязиНеУдаленных Тогда - Если Не СтрокаТаблицы.Видимость Тогда - Продолжить; // Обход особенности с CTRL+A. - ИначеЕсли СтрокаТаблицы.ЭтоКонстанта Тогда - ЕстьКонстанты = Истина; - Продолжить; - ИначеЕсли Не СтрокаТаблицы.СсылочногоТипа Тогда - ЕстьЗаписиРегистров = Истина; - Продолжить; - КонецЕсли; - КонецЕсли; - СтрокаТаблицы.Свойство(ИмяРеквизитаЗначение, Значение); - Если ТипЗнч(Значение) = Тип("Строка") Тогда - КоличествоВыделено = КоличествоВыделено - 1; // Группы не должны считаться выделенными. - Продолжить; // Пропуск групп. - КонецЕсли; - Если СтрокаТаблицы.ПометкаУдаления Тогда - МассивСсылокПомеченныхНаУдаление.Добавить(Значение); - Иначе - УстанавливатьПометку = Истина; - МассивСсылокНеПомеченныхНаУдаление.Добавить(Значение); - КонецЕсли; - Если ТипЗнч(ТаблицаРеквизит) = Тип("ДанныеФормыКоллекция") Тогда - Найденные = ТаблицаРеквизит.НайтиСтроки(Новый Структура(ИмяРеквизитаЗначение, Значение)); - Для Каждого СтрокаПоСсылке Из Найденные Цикл - МассивСтрокТаблицы.Добавить(СтрокаПоСсылке); - КонецЦикла; - Иначе - МассивСтрокТаблицы.Добавить(СтрокаТаблицы); - КонецЕсли; - КонецЦикла; - - МассивСсылок = ?(УстанавливатьПометку, МассивСсылокНеПомеченныхНаУдаление, МассивСсылокПомеченныхНаУдаление); - КоличествоМожноУдалить = МассивСсылок.Количество(); - Если КоличествоМожноУдалить = 0 Тогда - ТекстОшибки = НСтр("ru = 'Выберите объект.'"); - Если КоличествоВыделено = 1 Тогда - Если ЕстьЗаписиРегистров Тогда - ТекстОшибки = НСтр("ru = 'Удаление записи регистра выполняется из ее карточки.'"); - ИначеЕсли ЕстьКонстанты Тогда - ТекстОшибки = НСтр("ru = 'Очистка значения константы выполняется из ее карточки.'"); - КонецЕсли; - Иначе - Если ЕстьЗаписиРегистров Или ЕстьКонстанты Тогда - ТекстОшибки = НСтр("ru = 'Удаление записей регистров или очистка значений констант выполняется из их карточек.'"); - КонецЕсли; - КонецЕсли; - ПоказатьПредупреждение(, ТекстОшибки); - Возврат; - КонецЕсли; - - ПараметрыВыполнения = Новый Структура; - ПараметрыВыполнения.Вставить("ТаблицаИмя", ТаблицаИмя); - ПараметрыВыполнения.Вставить("МассивСтрокТаблицы", МассивСтрокТаблицы); - ПараметрыВыполнения.Вставить("МассивСсылок", МассивСсылок); - ПараметрыВыполнения.Вставить("ИмяРеквизитаЗначение", ИмяРеквизитаЗначение); - ПараметрыВыполнения.Вставить("УстанавливатьПометку", УстанавливатьПометку); - - Обработчик = Новый ОписаниеОповещения("ПометитьВыделенныеОбъектыТаблицыНаУдалениеЗавершение", ЭтотОбъект, ПараметрыВыполнения); - - Если КоличествоМожноУдалить = 1 Тогда - Если УстанавливатьПометку Тогда - ТекстВопроса = НСтр("ru = 'Пометить ""%1"" на удаление?'"); - Иначе - ТекстВопроса = НСтр("ru = 'Снять с ""%1"" пометку на удаление?'"); - КонецЕсли; - ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстВопроса, МассивСтрокТаблицы[0].Представление); - Иначе - Если УстанавливатьПометку Тогда - ТекстВопроса = НСтр("ru = 'Пометить выделенные объекты (%1) на удаление?'"); - Иначе - ТекстВопроса = НСтр("ru = 'Снять с выделенных объектов (%1) пометку на удаление?'"); - КонецЕсли; - ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстВопроса, Формат(КоличествоМожноУдалить, "ЧН=0; ЧГ=")); - КонецЕсли; - - Кнопки = Новый СписокЗначений; - Кнопки.Добавить(КодВозвратаДиалога.Да); - Кнопки.Добавить(КодВозвратаДиалога.Нет); - - ПоказатьВопрос(Обработчик, ТекстВопроса, Кнопки, 60, КодВозвратаДиалога.Нет); -КонецПроцедуры - -&НаКлиенте -Процедура ПометитьВыделенныеОбъектыТаблицыНаУдалениеЗавершение(Ответ, ПараметрыВыполнения) Экспорт - Если Ответ <> КодВозвратаДиалога.Да Тогда - Возврат; - КонецЕсли; - - ОповещениеОбИзменениях = ИзменитьПометкуУдаленияОбъектов(ПараметрыВыполнения.МассивСсылок, ПараметрыВыполнения.УстанавливатьПометку); - - КоличествоОбъектов = ПараметрыВыполнения.МассивСсылок.Количество(); - Если КоличествоОбъектов > 0 Тогда - СтандартныеПодсистемыКлиент.РазвернутьУзлыДерева(ЭтотОбъект, "НеУдаленные", "*", Истина); - КонецЕсли; - - СтандартныеПодсистемыКлиент.ОповеститьФормыОбИзменении(ОповещениеОбИзменениях, - Новый Структура("ПометкаУдаления", ПараметрыВыполнения.УстанавливатьПометку)); - - ОповещениеТекст = Неопределено; - ОповещениеСсылка = Неопределено; - Если КоличествоОбъектов = 0 Тогда - ОповещениеЗаголовок = НСтр("ru = 'Объект не найден'"); - Иначе - Если ПараметрыВыполнения.УстанавливатьПометку Тогда - ОповещениеЗаголовок = НСтр("ru = 'Пометка удаления установлена'"); - Иначе - ОповещениеЗаголовок = НСтр("ru = 'Пометка удаления снята'"); - КонецЕсли; - Если КоличествоОбъектов = 1 Тогда - ОповещениеСсылка = ПараметрыВыполнения.МассивСсылок[0]; - ОповещениеТекст = Строка(ОповещениеСсылка); - Иначе - ОповещениеЗаголовок = ОповещениеЗаголовок + " (" + Формат(КоличествоОбъектов, "ЧН=0; ЧГ=") + ")"; - КонецЕсли; - КонецЕсли; - ПоказатьОповещениеПользователя(ОповещениеЗаголовок, ОповещениеСсылка, ОповещениеТекст); - -КонецПроцедуры - &НаКлиенте Процедура ДеревоПомеченныхНаУдалениеУстановитьПометкуВСписке(Данные, Пометка, ПроверятьРодителя) @@ -566,949 +1041,560 @@ &НаКлиенте Процедура ДеревоПомеченныхНаУдалениеПроверитьРодителя(Родитель) - ПометкаРодителя = Истина; ЭлементыСтроки = Родитель.ПолучитьЭлементы(); - Для Каждого Элемент Из ЭлементыСтроки Цикл - Если Не Элемент.Пометка Тогда - ПометкаРодителя = Ложь; + Родитель.Пометка = ЗначениеПометкиЭлементов(ЭлементыСтроки); + +КонецПроцедуры + +// Параметры: +// Результат - СписокЗначений из Строка +// ДополнительныеПараметры - Структура +// +&НаКлиенте +Процедура НастроитьОтборЗавершение(Результат, ДополнительныеПараметры) Экспорт + Если Результат = Неопределено Тогда + Возврат; + КонецЕсли; + + ТекущийОтбор = ОбщегоНазначенияКлиент.СкопироватьРекурсивно(ОтборМетаданных); + УстановитьОтборМетаданных(ЭтотОбъект, Результат); + + Если ОтборМетаданныхИзменен(ТекущийОтбор, Результат) Тогда + ЗапуститьЗадание(ЗаданияФормы().ПоискПомеченных); + КонецЕсли; +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Процедура УстановитьОтборМетаданных(Форма, Результат) + Форма.ОтборМетаданных = ?(Результат = Неопределено, Новый СписокЗначений, Результат.Скопировать());// СписокЗначений из Строка + Форма.Элементы.НастроитьОтбор.Заголовок = ПредставлениеОтбораМетаданных(Результат); +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Функция ПредставлениеОтбораМетаданных(ЗначениеОтбора) + ПредставлениеОтбора = ""; + Представление = Новый Массив; + Для Каждого Отбор Из ЗначениеОтбора Цикл + Представление.Добавить(Отбор.Представление); + КонецЦикла; + ПредставлениеОтбора = СтрСоединить(Представление, ", "); + Возврат ?(ПустаяСтрока(ПредставлениеОтбора), НСтр("ru='Все помеченные на удаление'"), ПредставлениеОтбора); +КонецФункции + +&НаКлиенте +Функция ОтборМетаданныхИзменен(СтарыйОтбор, Результат) + ТребуетсяПовторныйПоиск = Ложь; + Для Каждого Элемент Из Результат Цикл + Если ОтборМетаданных.НайтиПоЗначению(Элемент.Значение) = Неопределено Тогда + ТребуетсяПовторныйПоиск = Истина; Прервать; КонецЕсли; КонецЦикла; - Родитель.Пометка = ПометкаРодителя; + Если СтарыйОтбор.Количество() <> Результат.Количество() Тогда + ТребуетсяПовторныйПоиск = Истина; + КонецЕсли; + + Возврат ТребуетсяПовторныйПоиск; +КонецФункции + +#Область ФоновыеЗадания + +#Область ПоискПомеченныхНаУдаление + +&НаКлиенте +Процедура НачатьПоискПомеченных() + УстановитьСостояниеВыбораПомеченныхНаУдалениеСПанельюСостояния(); + + ПредставлениеОперации = НСтр("ru='Поиск помеченных на удаление'"); + Элементы.СтраницыОтображениеСостояния.ТекущаяСтраница = Элементы.СостояниеВыполняется; + Элементы.ДекорацияПредставлениеДлительнойОперации.Заголовок = НСтр("ru='Выполняется поиск помеченных на удаление...'"); + Элементы.СтраницыИнформация.ТолькоПросмотр = Истина; + Элементы.ГруппаАктивныПослеПоискаПомеченные.Доступность = Ложь; + + Обработчик = Новый ОписаниеОповещения("ПослеЗавершенияПоискаПомеченных", ЭтотОбъект); + + ВыполняемаяОперация = НачатьПоискПомеченныхСервер(ОтборМетаданных, УникальныйИдентификатор); + ПриНачалеФоновогоЗадания(Обработчик); КонецПроцедуры &НаКлиенте -Процедура РегламентныеЗаданияИзменитьРасписание() - Обработчик = Новый ОписаниеОповещения("РегламентныеЗаданияПослеИзмененияРасписания", ЭтотОбъект); - Диалог = Новый ДиалогРасписанияРегламентногоЗадания(УдалениеПомеченныхРасписание); - Диалог.Показать(Обработчик); -КонецПроцедуры - -&НаКлиенте -Процедура РегламентныеЗаданияПослеИзмененияРасписания(Расписание, ПараметрыВыполнения) Экспорт - Если Расписание = Неопределено Тогда - УдалениеПомеченныхИспользование = Ложь; - Возврат; - КонецЕсли; - - УдалениеПомеченныхРасписание = Расписание; - УдалениеПомеченныхИспользование = Истина; - - Изменения = Новый Структура("Расписание", Расписание); - Изменения.Вставить("Использование", Истина); - РегламентныеЗаданияСохранить(Изменения); -КонецПроцедуры - -//////////////////////////////////////////////////////////////////////////////// -// Клиент, Сервер - -&НаКлиентеНаСервереБезКонтекста -Процедура ВидимостьДоступность(Форма) - Элементы = Форма.Элементы; - ТекущаяСтраница = Элементы.Страницы.ТекущаяСтраница; - - Элементы.КнопкаДалее.Заголовок = НСтр("ru = 'Удалить'"); - Элементы.КнопкаЗакрыть.Заголовок = НСтр("ru = 'Закрыть'"); - Элементы.КнопкаНазад.Заголовок = НСтр("ru = '< В начало'"); - - Если ТекущаяСтраница = Элементы.СтраницаВыборРежимаУдаления Тогда - Элементы.КнопкаНазад.Видимость = Ложь; - Элементы.КнопкаДалее.Видимость = Истина; - Если Форма.РежимУдаления <> "Полный" Тогда - Элементы.КнопкаДалее.Заголовок = НСтр("ru = 'Далее >'"); - КонецЕсли; - Элементы.КнопкаДалее.КнопкаПоУмолчанию = Истина; - Элементы.КнопкаЗакрыть.Заголовок = НСтр("ru = 'Отмена'"); - ИначеЕсли ТекущаяСтраница = Элементы.СтраницаПомеченныеНаУдаление Тогда - Элементы.КнопкаНазад.Видимость = Истина; - Элементы.КнопкаНазад.Заголовок = НСтр("ru = '< Назад'"); - Элементы.КнопкаДалее.Видимость = Истина; - Элементы.КнопкаДалее.Заголовок = НСтр("ru = 'Удалить'"); - Элементы.КнопкаДалее.КнопкаПоУмолчанию = Истина; - ИначеЕсли ТекущаяСтраница = Элементы.СтраницаДлительнаяОперация Тогда - Элементы.КнопкаНазад.Видимость = Ложь; - Элементы.КнопкаДалее.Видимость = Ложь; - Элементы.КнопкаЗакрыть.Заголовок = НСтр("ru = 'Прервать и закрыть'"); - ИначеЕсли ТекущаяСтраница = Элементы.СтраницаПричиныНевозможностиУдаления Тогда - Элементы.КнопкаНазад.Видимость = Истина; - Элементы.КнопкаДалее.Видимость = Истина; - Элементы.КнопкаДалее.Заголовок = НСтр("ru = 'Повторить удаление'"); - Элементы.КнопкаДалее.КнопкаПоУмолчанию = Истина; - ИначеЕсли ТекущаяСтраница = Элементы.СтраницаУдалениеНеТребуется Тогда - Элементы.КнопкаНазад.Видимость = Истина; - Элементы.КнопкаДалее.Видимость = Ложь; - Элементы.КнопкаЗакрыть.КнопкаПоУмолчанию = Истина; - ИначеЕсли ТекущаяСтраница = Элементы.СтраницаУспешноЗавершено Тогда - Элементы.КнопкаНазад.Видимость = Истина; - Элементы.КнопкаДалее.Видимость = Ложь; - Элементы.КнопкаЗакрыть.КнопкаПоУмолчанию = Истина; - ИначеЕсли ТекущаяСтраница = Элементы.СтраницаВозниклаОшибка Тогда - Элементы.КнопкаНазад.Видимость = Истина; - Элементы.КнопкаДалее.Видимость = Ложь; - КонецЕсли; - - Элементы.ПодсказкаМонопольногоРежима.Видимость = Форма.Монопольно; - -КонецПроцедуры - -&НаКлиентеНаСервереБезКонтекста -Функция НомерКартинки(Знач СсылкаИлиДанные, Знач СсылочногоТипа, Знач Вид, Знач Статус) - - Вид = ВРег(Вид); - Если СсылочногоТипа Тогда - Если Вид = "СПРАВОЧНИК" - Или Вид = "ПЛАНВИДОВХАРАКТЕРИСТИК" Тогда - НомерКартинки = 3; - ИначеЕсли Вид = "ДОКУМЕНТ" Тогда - НомерКартинки = 12; - ИначеЕсли Вид = "ПЛАНСЧЕТОВ" Тогда - НомерКартинки = 15; - ИначеЕсли Вид = "ПЛАНВИДОВРАСЧЕТА" Тогда - НомерКартинки = 17; - ИначеЕсли Вид = "БИЗНЕСПРОЦЕСС" Тогда - НомерКартинки = 19; - ИначеЕсли Вид = "ЗАДАЧА" Тогда - НомерКартинки = 21; - ИначеЕсли Вид = "ПЛАНОБМЕНА" Тогда - НомерКартинки = 23; - Иначе - НомерКартинки = -2; - КонецЕсли; - Если Статус = "Удален" Тогда - НомерКартинки = НомерКартинки + 1; - ИначеЕсли Статус = "Проведен" Тогда - НомерКартинки = НомерКартинки + 2; - КонецЕсли; - Иначе - Если Вид = "КОНСТАНТА" Тогда - НомерКартинки = 25; - ИначеЕсли Вид = "РЕГИСТРСВЕДЕНИЙ" Тогда - НомерКартинки = 26; - ИначеЕсли Вид = "РЕГИСТРНАКОПЛЕНИЯ" Тогда - НомерКартинки = 28; - ИначеЕсли Вид = "РЕГИСТРБУХГАЛТЕРИИ" Тогда - НомерКартинки = 34; - ИначеЕсли Вид = "РЕГИСТРРАСЧЕТА" Тогда - НомерКартинки = 38; - ИначеЕсли СсылкаИлиДанные = Неопределено Тогда - НомерКартинки = 11; - Иначе - НомерКартинки = 8; - КонецЕсли; - КонецЕсли; - - Возврат НомерКартинки; -КонецФункции - -//////////////////////////////////////////////////////////////////////////////// -// Вызов сервера, Сервер - -&НаСервере -Функция ПомеченныеНаУдалениеСоСтраницыРезультатов() - Результат = Новый Массив; - - ДеревоЗначений = РеквизитФормыВЗначение("НеУдаленные"); - Найденные = ДеревоЗначений.Строки.НайтиСтроки(Новый Структура("ПометкаУдаления", Истина), Истина); - Для Каждого СтрокаДерева Из Найденные Цикл - Если ТипЗнч(СтрокаДерева.УдаляемыйСсылка) <> Тип("Строка") - И Результат.Найти(СтрокаДерева.УдаляемыйСсылка) = Неопределено Тогда - Результат.Добавить(СтрокаДерева.УдаляемыйСсылка); - КонецЕсли; - КонецЦикла; - - ТаблицаЗначений = РеквизитФормыВЗначение("СвязиНеУдаленных"); - Если РежимУдаления = "Полный" Тогда - Фильтр = Новый Структура("ПометкаУдаления", Истина); - Иначе - Фильтр = Новый Структура("ПометкаУдаления, ПометкаУдаленияМодифицирована", Истина, Истина); - КонецЕсли; - Найденные = ТаблицаЗначений.НайтиСтроки(Фильтр); - Для Каждого СтрокаДерева Из Найденные Цикл - Если ТипЗнч(СтрокаДерева.ОбнаруженныйСсылка) <> Тип("Строка") - И Результат.Найти(СтрокаДерева.ОбнаруженныйСсылка) = Неопределено Тогда - Результат.Добавить(СтрокаДерева.ОбнаруженныйСсылка); - КонецЕсли; - КонецЦикла; - - Возврат Результат; -КонецФункции - -&НаСервере -Функция ПомеченныеНаУдалениеСоСтраницыУстановкиФлажков() - Результат = Новый Массив; - - ДеревоЗначений = РеквизитФормыВЗначение("ДеревоПомеченныхНаУдаление"); - Найденные = ДеревоЗначений.Строки.НайтиСтроки(Новый Структура("Пометка", Истина), Истина); - Для Каждого СтрокаДерева Из Найденные Цикл - Если ТипЗнч(СтрокаДерева.Значение) <> Тип("Строка") Тогда - Результат.Добавить(СтрокаДерева.Значение); - КонецЕсли; - КонецЦикла; - - Возврат Результат; -КонецФункции - -&НаСервере -Функция ИзменитьПометкуУдаленияОбъектов(МассивСсылок, ПометкаУдаления) - - Количество = МассивСсылок.Количество(); - НачатьТранзакцию(); - Попытка - Блокировка = Новый БлокировкаДанных; - Для Номер = 1 По Количество Цикл - Ссылка = МассивСсылок[Количество - Номер]; - ЭлементБлокировки = Блокировка.Добавить(Ссылка.Метаданные().ПолноеИмя()); - ЭлементБлокировки.УстановитьЗначение("Ссылка", Ссылка); - КонецЦикла; - Блокировка.Заблокировать(); - - Для Номер = 1 По Количество Цикл - ОбратныйИндекс = Количество - Номер; - ИзменяемыйОбъект = МассивСсылок[ОбратныйИндекс].ПолучитьОбъект(); - Если ИзменяемыйОбъект = Неопределено Тогда - МассивСсылок.Удалить(ОбратныйИндекс); - Иначе - ИзменяемыйОбъект.УстановитьПометкуУдаления(ПометкаУдаления); - КонецЕсли; - КонецЦикла; - ЗафиксироватьТранзакцию(); - Исключение - ОтменитьТранзакцию(); - ВызватьИсключение; - КонецПопытки; - КоличествоОбъектов = МассивСсылок.Количество(); - - Если КоличествоОбъектов > 0 Тогда - ДеревоЗначений = РеквизитФормыВЗначение("НеУдаленные"); - ТаблицаЗначений = РеквизитФормыВЗначение("СвязиНеУдаленных"); - - Для Каждого Ссылка Из МассивСсылок Цикл - Найденные = ДеревоЗначений.Строки.НайтиСтроки(Новый Структура("УдаляемыйСсылка", Ссылка), Истина); - Для Каждого СтрокаДерева Из Найденные Цикл - Если СтрокаДерева.ПометкаУдаления = ПометкаУдаления Тогда - Продолжить; - КонецЕсли; - СтрокаДерева.ПометкаУдаления = ПометкаУдаления; - СтрокаДерева.НомерКартинки = НомерКартинки(Ссылка, Истина, ОбщегоНазначения.ВидОбъектаПоСсылке(Ссылка), - ?(ПометкаУдаления, "Удален", "")); - КонецЦикла; - - Найденные = ТаблицаЗначений.НайтиСтроки(Новый Структура("ОбнаруженныйСсылка", Ссылка)); - Для Каждого СтрокаТаблицы Из Найденные Цикл - Если СтрокаТаблицы.ПометкаУдаления = ПометкаУдаления Тогда - Продолжить; - КонецЕсли; - СтрокаТаблицы.ПометкаУдаления = ПометкаУдаления; - СтрокаТаблицы.НомерКартинки = НомерКартинки(Ссылка, Истина, ОбщегоНазначения.ВидОбъектаПоСсылке(Ссылка), - ?(ПометкаУдаления, "Удален", "")); - СтрокаТаблицы.ПометкаУдаленияМодифицирована = Истина; - КонецЦикла; - КонецЦикла; - - ТаблицаВРеквизитФормы("НеУдаленные", ДеревоЗначений, "УдаляемыйСсылка"); - ТаблицаВРеквизитФормы("СвязиНеУдаленных", ТаблицаЗначений, "УдаляемыйСсылка, ОбнаруженныйСсылка"); - НеУдаленныеИдентификаторТекущейСтроки = Элементы.НеУдаленные.ТекущаяСтрока; - КонецЕсли; - - Возврат СтандартныеПодсистемыСервер.ПодготовитьОповещениеФормОбИзменении(МассивСсылок); - -КонецФункции - -&НаСервере -Процедура ТаблицаВРеквизитФормы(ИмяТаблицы, ДанныеТаблицы, КлючевыеКолонки) - ВыделенныеСтроки = ЗапомнитьВыделенныеСтроки(ИмяТаблицы, КлючевыеКолонки); - ЗначениеВРеквизитФормы(ДанныеТаблицы, ИмяТаблицы); - ВосстановитьВыделенныеСтроки(ИмяТаблицы, ВыделенныеСтроки); -КонецПроцедуры - -&НаСервере -Функция ЗапомнитьВыделенныеСтроки(ИмяТаблицы, КлючевыеКолонки) - ТаблицаРеквизит = ЭтотОбъект[ИмяТаблицы]; - ТаблицаЭлемент = Элементы[ИмяТаблицы]; - - Результат = Новый Структура; - Результат.Вставить("Выделенные", Новый Массив); - Результат.Вставить("Текущая", Неопределено); - - ТекущаяИдентификатор = ТаблицаЭлемент.ТекущаяСтрока; - Если ТекущаяИдентификатор <> Неопределено Тогда - СтрокаТаблицы = ТаблицаРеквизит.НайтиПоИдентификатору(ТекущаяИдентификатор); - Если СтрокаТаблицы <> Неопределено Тогда - ДанныеСтроки = Новый Структура(КлючевыеКолонки); - ЗаполнитьЗначенияСвойств(ДанныеСтроки, СтрокаТаблицы); - Результат.Текущая = ДанныеСтроки; - КонецЕсли; - КонецЕсли; - - ВыделенныеСтроки = ТаблицаЭлемент.ВыделенныеСтроки; - Если ВыделенныеСтроки <> Неопределено Тогда - Для Каждого ВыделеннаяИдентификатор Из ВыделенныеСтроки Цикл - Если ВыделеннаяИдентификатор = ТекущаяИдентификатор Тогда - Продолжить; - КонецЕсли; - СтрокаТаблицы = ТаблицаРеквизит.НайтиПоИдентификатору(ВыделеннаяИдентификатор); - Если СтрокаТаблицы <> Неопределено Тогда - ДанныеСтроки = Новый Структура(КлючевыеКолонки); - ЗаполнитьЗначенияСвойств(ДанныеСтроки, СтрокаТаблицы); - Результат.Выделенные.Добавить(ДанныеСтроки); - КонецЕсли; - КонецЦикла; - КонецЕсли; - - Возврат Результат; -КонецФункции - -&НаСервере -Процедура ВосстановитьВыделенныеСтроки(ИмяТаблицы, СтрокиТаблицы) - ТаблицаРеквизит = ЭтотОбъект[ИмяТаблицы]; - ТаблицаЭлемент = Элементы[ИмяТаблицы]; - - ТаблицаЭлемент.ВыделенныеСтроки.Очистить(); - - Если СтрокиТаблицы.Текущая <> Неопределено Тогда - Найденные = НайтиСтрокиТаблицы(ТаблицаРеквизит, СтрокиТаблицы.Текущая); - Если Найденные <> Неопределено И Найденные.Количество() > 0 Тогда - Для Каждого СтрокаТаблицы Из Найденные Цикл - Если СтрокаТаблицы <> Неопределено Тогда - Идентификатор = СтрокаТаблицы.ПолучитьИдентификатор(); - ТаблицаЭлемент.ТекущаяСтрока = Идентификатор; - ТаблицаЭлемент.ВыделенныеСтроки.Добавить(Идентификатор); - Прервать; - КонецЕсли; - КонецЦикла; - КонецЕсли; - КонецЕсли; - - Для Каждого ДанныеСтроки Из СтрокиТаблицы.Выделенные Цикл - Найденные = НайтиСтрокиТаблицы(ТаблицаРеквизит, ДанныеСтроки); - Если Найденные <> Неопределено И Найденные.Количество() > 0 Тогда - Для Каждого СтрокаТаблицы Из Найденные Цикл - Если СтрокаТаблицы <> Неопределено Тогда - ТаблицаЭлемент.ВыделенныеСтроки.Добавить(СтрокаТаблицы.ПолучитьИдентификатор()); - КонецЕсли; - КонецЦикла; - КонецЕсли; - КонецЦикла; -КонецПроцедуры - -&НаСервере -Функция НайтиСтрокиТаблицы(ТаблицаРеквизит, ДанныеСтроки) - Если ТипЗнч(ТаблицаРеквизит) = Тип("ДанныеФормыКоллекция") Тогда // Таблица значений. - Возврат ТаблицаРеквизит.НайтиСтроки(ДанныеСтроки); - ИначеЕсли ТипЗнч(ТаблицаРеквизит) = Тип("ДанныеФормыДерево") Тогда // Дерево значений. - Возврат НайтиРекурсивно(ТаблицаРеквизит.ПолучитьЭлементы(), ДанныеСтроки); - Иначе - Возврат Неопределено; - КонецЕсли; -КонецФункции - -&НаСервере -Функция НайтиРекурсивно(НаборСтрок, ДанныеСтроки, Найденные = Неопределено) - Если Найденные = Неопределено Тогда - Найденные = Новый Массив; - КонецЕсли; - Для Каждого СтрокаТаблицы Из НаборСтрок Цикл - ЗначенияСовпадают = Истина; - Для Каждого КлючИЗначение Из ДанныеСтроки Цикл - Если СтрокаТаблицы[КлючИЗначение.Ключ] <> КлючИЗначение.Значение Тогда - ЗначенияСовпадают = Ложь; - Прервать; - КонецЕсли; - КонецЦикла; - Если ЗначенияСовпадают Тогда - Найденные.Добавить(СтрокаТаблицы); - КонецЕсли; - НайтиРекурсивно(СтрокаТаблицы.ПолучитьЭлементы(), ДанныеСтроки, Найденные); - КонецЦикла; - Возврат Найденные; -КонецФункции - -&НаСервере -Процедура РегламентныеЗаданияСохранить(Изменения) - РегламентныеЗаданияСервер.ИзменитьЗадание(УдалениеПомеченныхИдентификатор, Изменения); - УстановитьДоступность(); -КонецПроцедуры - -&НаСервере -Функция РегламентныеЗаданияНайтиПредопределенное() - Фильтр = Новый Структура("Метаданные", "УдалениеПомеченных"); - Найденные = РегламентныеЗаданияСервер.НайтиЗадания(Фильтр); - Задание = ?(Найденные.Количество() = 0, Неопределено, Найденные[0]); - Возврат Задание; -КонецФункции - -&НаСервере -Процедура УстановитьДоступность() - - Если Элементы.УдалениеПомеченныхНастроитьРасписание.Видимость Тогда - Элементы.УдалениеПомеченныхНастроитьРасписание.Доступность = УдалениеПомеченныхИспользование; - Элементы.УдалениеПомеченныхПредставлениеРасписания.Видимость = УдалениеПомеченныхИспользование; - Если УдалениеПомеченныхИспользование Тогда - РасписаниеПредставление = Строка(УдалениеПомеченныхРасписание); - Представление = ВРег(Лев(РасписаниеПредставление, 1)) + Сред(РасписаниеПредставление, 2); - Иначе - Представление = НСтр("ru = '<Отключено>'"); - КонецЕсли; - Элементы.УдалениеПомеченныхПредставлениеРасписания.Заголовок = Представление; - КонецЕсли; - -КонецПроцедуры - -&НаСервереБезКонтекста -Процедура СнятьМонопольныйРежим() - УстановитьМонопольныйРежим(Ложь); - Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЗавершениеРаботыПользователей") Тогда - МодульСоединенияИБ = ОбщегоНазначения.ОбщийМодуль("СоединенияИБ"); - МодульСоединенияИБ.РазрешитьРаботуПользователей(); - КонецЕсли; -КонецПроцедуры - -//////////////////////////////////////////////////////////////////////////////// -// Сервер - -&НаСервере -Процедура ПриСозданииНаСервереУстановитьТекстПоясненияКОбработке() - Если СтандартныеПодсистемыСервер.ЭтоБазоваяВерсияКонфигурации() Тогда - КоличествоСоединений = 0; - ВыводитьПодпись = Ложь; - ВыводитьКоличество = Ложь; - ИначеЕсли ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда - КоличествоСоединений = 0; - НомерЭтогоСеанса = НомерСеансаИнформационнойБазы(); - Для Каждого СеансИнформационнойБазы Из ПолучитьСеансыИнформационнойБазы() Цикл - Если СеансИнформационнойБазы.НомерСеанса = НомерЭтогоСеанса Тогда - Продолжить; - КонецЕсли; - Если СеансИнформационнойБазы.ИмяПриложения = "1CV8" // Толстый клиент. - Или СеансИнформационнойБазы.ИмяПриложения = "1CV8C" // Тонкий клиент. - Или СеансИнформационнойБазы.ИмяПриложения = "WebClient" Тогда // Веб-клиент. - КоличествоСоединений = КоличествоСоединений + 1; - КонецЕсли; - КонецЦикла; - ВыводитьПодпись = (КоличествоСоединений > 0); - ВыводитьКоличество = Истина; - Иначе - КоличествоСоединений = 0; - ВыводитьПодпись = Истина; - ВыводитьКоличество = Ложь; - КонецЕсли; - - ШаблонЗаголовка = Элементы.ПояснениеКОбработке.Заголовок; - Если Не ВыводитьПодпись Тогда - Элементы.ПояснениеКОбработке.Заголовок = Лев(ШаблонЗаголовка, СтрНайти(ШаблонЗаголовка, "<1/>") - 1); - КлючСохраненияПоложенияОкна = "1"; - Иначе - Остаток = СтрЗаменить(ШаблонЗаголовка, "<1/>", ""); - МассивСтрок = Новый Массив; - - Позиция = СтрНайти(Остаток, ""); - ОпределениеСсылки = Лев(Остаток, Позиция -1); - Остаток = Сред(Остаток, Позиция + 4); - - Позиция = СтрНайти(ОпределениеСсылки, """"); - ОпределениеСсылки = Сред(ОпределениеСсылки, Позиция + 1); - - Позиция = СтрНайти(ОпределениеСсылки, """"); - АдресСсылки = Лев(ОпределениеСсылки, Позиция - 1); - ТекстСсылки = Сред(ОпределениеСсылки, Позиция + 2); - Если ВыводитьКоличество Тогда - ТекстСсылки = ТекстСсылки + " (" + Формат(КоличествоСоединений, "ЧГ=") + ")"; - КонецЕсли; - - МассивСтрок.Добавить(Новый ФорматированнаяСтрока(ТекстСсылки, , , , АдресСсылки)); - МассивСтрок.Добавить(Остаток); - - Элементы.ПояснениеКОбработке.Заголовок = Новый ФорматированнаяСтрока(МассивСтрок); - КлючСохраненияПоложенияОкна = "2"; - КонецЕсли; -КонецПроцедуры - -&НаСервере -Процедура ЗаполнитьКоллекцииОставшихсяОбъектов(РезультатВыполненияВФоне) - - ПрепятствующиеУдалению = РезультатВыполненияВФоне.ПрепятствующиеУдалению; - ИнформацияОТипах = РезультатВыполненияВФоне.ИнформацияОТипах; - - ДеревоНеУдаленные = РеквизитФормыВЗначение("НеУдаленные"); - ДеревоНеУдаленные.Строки.Очистить(); - ТаблицаСвязиНеУдаленных = РеквизитФормыВЗначение("СвязиНеУдаленных"); - ТаблицаСвязиНеУдаленных.Очистить(); - - ГруппыНеУдаленных = Новый Соответствие; - СтрокиНеУдаленных = Новый Соответствие; - - ОбнаруженыСсылочныеНеОтмеченные = Ложь; - ОбнаруженыРегистры = Ложь; - - Для Каждого Причина Из ПрепятствующиеУдалению Цикл - СтрокаНеУдаленного = СтрокиНеУдаленных.Получить(Причина.УдаляемыйСсылка); - Если СтрокаНеУдаленного = Неопределено Тогда - УдаляемыйИнформация = ИнформацияОТипах.Получить(Причина.УдаляемыйТип); - Если УдаляемыйИнформация.Технический Тогда - Продолжить; - КонецЕсли; - - ГруппаНеУдаленного = ГруппыНеУдаленных.Получить(Причина.УдаляемыйТип); - Если ГруппаНеУдаленного = Неопределено Тогда - ГруппаНеУдаленного = ДеревоНеУдаленные.Строки.Добавить(); - ГруппаНеУдаленного.НомерКартинки = -1; - ГруппаНеУдаленного.УдаляемыйСсылка = УдаляемыйИнформация.ПолноеИмя; - ГруппаНеУдаленного.Представление = УдаляемыйИнформация.ПредставлениеСписка; - - ГруппыНеУдаленных.Вставить(Причина.УдаляемыйТип, ГруппаНеУдаленного); - БыстрыйПоиск.ПолныеИменаОбъектовМетаданных.Вставить(Причина.УдаляемыйТип, УдаляемыйИнформация.ПолноеИмя); - КонецЕсли; - - ГруппаНеУдаленного.КоличествоСвязей = ГруппаНеУдаленного.КоличествоСвязей + 1; - - СтрокаНеУдаленного = ГруппаНеУдаленного.Строки.Добавить(); - СтрокаНеУдаленного.УдаляемыйСсылка = Причина.УдаляемыйСсылка; - СтрокаНеУдаленного.Представление = Строка(Причина.УдаляемыйСсылка); - СтрокаНеУдаленного.ПометкаУдаления = Истина; - СтрокаНеУдаленного.НомерКартинки = НомерКартинки(СтрокаНеУдаленного.УдаляемыйСсылка, - Истина, УдаляемыйИнформация.Вид, "Удален"); - СтрокиНеУдаленных.Вставить(Причина.УдаляемыйСсылка, СтрокаНеУдаленного); - КонецЕсли; - - СтрокаНеУдаленного.КоличествоСвязей = СтрокаНеУдаленного.КоличествоСвязей + 1; - - СтрокаПрепятствующегоУдалению = ТаблицаСвязиНеУдаленных.Добавить(); - СтрокаПрепятствующегоУдалению.УдаляемыйСсылка = Причина.УдаляемыйСсылка; - СтрокаПрепятствующегоУдалению.ОбнаруженныйСсылка = Причина.ОбнаруженныйСсылка; - СтрокаПрепятствующегоУдалению.ПометкаУдаления = (Причина.ОбнаруженныйСтатус = "Удален"); - СтрокаПрепятствующегоУдалению.ЭтоОшибка = (Причина.ОбнаруженныйТип = Тип("Строка")); - - Если СтрокаПрепятствующегоУдалению.ЭтоОшибка Тогда - СтрокаПрепятствующегоУдалению.Представление = Причина.Подробно; - Иначе - ОбнаруженныйИнформация = ИнформацияОТипах.Получить(Причина.ОбнаруженныйТип); - - СтрокаПрепятствующегоУдалению.СсылочногоТипа = ОбнаруженныйИнформация.Ссылочный; - - Если ОбнаруженныйИнформация.Вид = "РЕГИСТРСВЕДЕНИЙ" - Или ОбнаруженныйИнформация.Вид = "РЕГИСТРНАКОПЛЕНИЯ" - Или ОбнаруженныйИнформация.Вид = "РЕГИСТРБУХГАЛТЕРИИ" - Или ОбнаруженныйИнформация.Вид = "РЕГИСТРРАСЧЕТА" Тогда - ОбнаруженыРегистры = Истина; - КонецЕсли; - - Если Не ОбнаруженыСсылочныеНеОтмеченные // Оптимизация. - И ОбнаруженныйИнформация.Ссылочный - И РезультатВыполненияВФоне.НеУдаленные.Найти(Причина.ОбнаруженныйСсылка) = Неопределено Тогда - ОбнаруженыСсылочныеНеОтмеченные = Ложь; - КонецЕсли; - - Если Причина.ОбнаруженныйСсылка = Неопределено Тогда // Константа - СтрокаПрепятствующегоУдалению.ОбнаруженныйСсылка = ОбнаруженныйИнформация.ПолноеИмя; - СтрокаПрепятствующегоУдалению.ЭтоКонстанта = Истина; - СтрокаПрепятствующегоУдалению.Представление = ОбнаруженныйИнформация.ПредставлениеЭлемента + " (" + НСтр("ru = 'Константа'") + ")"; - Иначе - СтрокаПрепятствующегоУдалению.Представление = Строка(Причина.ОбнаруженныйСсылка) + " (" + ОбнаруженныйИнформация.ПредставлениеЭлемента + ")"; - БыстрыйПоиск.ПолныеИменаОбъектовМетаданных.Вставить(Причина.ОбнаруженныйТип, ОбнаруженныйИнформация.ПолноеИмя); - КонецЕсли; - - СтрокаПрепятствующегоУдалению.НомерКартинки = НомерКартинки(СтрокаПрепятствующегоУдалению.ОбнаруженныйСсылка, - СтрокаПрепятствующегоУдалению.СсылочногоТипа, ОбнаруженныйИнформация.Вид, Причина.ОбнаруженныйСтатус); - КонецЕсли; - КонецЦикла; - - Для Каждого ГруппаНеУдаленного Из ДеревоНеУдаленные.Строки Цикл - ГруппаНеУдаленного.Представление = ГруппаНеУдаленного.Представление + " (" + Формат(ГруппаНеУдаленного.КоличествоСвязей, "ЧН=0; ЧГ=") + ")"; - КонецЦикла; - - ЗаголовокПодвала = Элементы.НадписьВПодвале.Заголовок; - ПодписьДобавлена = (СтрЧислоВхождений(ЗаголовокПодвала, ".") = 2); - Если ОбнаруженыРегистры И Не ОбнаруженыСсылочныеНеОтмеченные Тогда - Если Не ПодписьДобавлена Тогда - Элементы.НадписьВПодвале.Заголовок = ЗаголовокПодвала + " " - + НСтр("ru = 'Для устранения сложных зависимостей рекомендуется повторить удаление с включенным флажком ""Заблокировать всю работу в программе и ускорить удаление"" (нажмите кнопку ""< В начало"").'"); - КонецЕсли; - Иначе - Если ПодписьДобавлена Тогда - Элементы.НадписьВПодвале.Заголовок = Лев(ЗаголовокПодвала, СтрНайти(ЗаголовокПодвала, ".")); - КонецЕсли; - КонецЕсли; - - ДеревоНеУдаленные.Строки.Сортировать("Представление", Истина); - ТаблицаСвязиНеУдаленных.Сортировать("УдаляемыйСсылка, Представление"); - - ЗначениеВРеквизитФормы(ДеревоНеУдаленные, "НеУдаленные"); - ЗначениеВРеквизитФормы(ТаблицаСвязиНеУдаленных, "СвязиНеУдаленных"); -КонецПроцедуры - -//////////////////////////////////////////////////////////////////////////////// -// Работа с длительными операциями - -&НаКлиенте -Процедура ЗапуститьФоновоеЗаданиеКлиент(Режим) - ПараметрыМетода = Новый Структура; - ПараметрыМетода.Вставить("ИскатьПомеченные", Ложь); - ПараметрыМетода.Вставить("УдалятьПомеченные", Ложь); - ПараметрыМетода.Вставить("ПрочитатьПомеченныеСоСтраницыРезультатов", Ложь); - ПараметрыМетода.Вставить("ПрочитатьПомеченныеСоСтраницыУстановкиФлажков", Ложь); - - Если Режим = 1 Тогда - ТекущаяСтраница = Элементы.Страницы.ТекущаяСтраница; - Если ТекущаяСтраница = Элементы.СтраницаВыборРежимаУдаления Тогда - Если РежимУдаления = "Полный" Тогда - ПараметрыМетода.ИскатьПомеченные = Истина; - ПараметрыМетода.УдалятьПомеченные = Истина; - Иначе - ПараметрыМетода.ИскатьПомеченные = Истина; - КонецЕсли; - ИначеЕсли ТекущаяСтраница = Элементы.СтраницаПомеченныеНаУдаление Тогда - ПараметрыМетода.ПрочитатьПомеченныеСоСтраницыУстановкиФлажков = Истина; - ПараметрыМетода.УдалятьПомеченные = Истина; - ИначеЕсли ТекущаяСтраница = Элементы.СтраницаПричиныНевозможностиУдаления Тогда - Если РежимУдаления = "Полный" Тогда - ПараметрыМетода.ИскатьПомеченные = Истина; - Иначе - ПараметрыМетода.ПрочитатьПомеченныеСоСтраницыРезультатов = Истина; - КонецЕсли; - ПараметрыМетода.УдалятьПомеченные = Истина; - КонецЕсли; - ИначеЕсли Режим = 2 Тогда - ПараметрыМетода.ИскатьПомеченные = Истина; - ПараметрыМетода.ПрочитатьПомеченныеСоСтраницыУстановкиФлажков = Истина; - Иначе - Возврат; - КонецЕсли; - - Если ПараметрыМетода.ИскатьПомеченные Тогда - Текст = НСтр("ru = 'Поиск помеченных на удаление объектов...'"); - Иначе - Текст = НСтр("ru = 'Удаляются объекты, помеченные на удаление...'"); - КонецЕсли; - Элементы.НадписьДлительнаяОперация.Заголовок = Текст; - - Задание = ЗапуститьФоновоеЗадание(ПараметрыМетода); - Если Задание = Неопределено Тогда - Возврат; // Удаление не требуется. - ИначеЕсли Задание.ОшибкаПриУстановкеМонопольногоРежима Тогда - Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ЗавершениеРаботыПользователей") Тогда - Оповещение = Новый ОписаниеОповещения("ПослеУстановкиМонопольногоРежима", ЭтотОбъект, Режим); - ПараметрыФормы = Новый Структура("УдалениеПомеченныхОбъектов", Истина); - МодульСоединенияИБКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("СоединенияИБКлиент"); - МодульСоединенияИБКлиент.ПриОткрытииФормыОшибкиУстановкиМонопольногоРежима(Оповещение, ПараметрыФормы); - Иначе - ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Не удалось заблокировать работу в программе по причине: - |%1'"), - Задание.ТекстОшибкиУстановкиМонопольногоРежима); - КонецЕсли; - Возврат; - КонецЕсли; - +Процедура ПриНачалеФоновогоЗадания(Знач Обработчик) + Перем НастройкиОжидания; НастройкиОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект); НастройкиОжидания.ВыводитьОкноОжидания = Ложь; НастройкиОжидания.ВыводитьПрогрессВыполнения = Истина; НастройкиОжидания.ОповещениеОПрогрессеВыполнения = Новый ОписаниеОповещения("ПриОбновленииПрогрессаФоновогоЗадания", ЭтотОбъект); + ДлительныеОперацииКлиент.ОжидатьЗавершение(ВыполняемаяОперация, Обработчик, НастройкиОжидания); + Если ВыполняемаяОперация <> Неопределено Тогда + ПоказатьДиалогПередЗакрытием = Истина; + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ПослеЗавершенияФоновогоЗадания(Результат) + РезультатПредыдущегоШага = Результат; + ПоказатьДиалогПередЗакрытием = Ложь; + ВыполняемаяОперация = Неопределено; + УдалитьТекущееЗадание(); - Обработчик = Новый ОписаниеОповещения("ПослеЗавершенияФоновогоЗадания", ЭтотОбъект); + Если КоличествоЗаданийВОчереди() = 0 Тогда + УстановитьМонопольныйРежимНаСервере(Ложь); + КонецЕсли; - ДлительныеОперацииКлиент.ОжидатьЗавершение(Задание, Обработчик, НастройкиОжидания); + Если Результат.Статус <> "Ошибка" Тогда + ЗапуститьЗадание(); + КонецЕсли; КонецПроцедуры &НаСервере -Функция ЗапуститьФоновоеЗадание(Знач ПараметрыМетода) - Если ПараметрыМетода.УдалятьПомеченные И Монопольно Тогда - ИнформацияОбОшибке = Неопределено; +Функция НачатьПоискПомеченныхСервер(ОтборМетаданных, УникальныйИдентификаторФормы) + ИмяМетода = "УдалениеПомеченныхОбъектовСлужебный.ПомеченныеНаУдаление"; + + ПараметрыМетода = ДлительныеОперации.ПараметрыВыполненияФункции(УникальныйИдентификаторФормы); + ПараметрыМетода.ЗапуститьВФоне = Истина; + ПараметрыМетода.НаименованиеФоновогоЗадания = НСтр("ru = 'Поиск помеченных на удаление'"); + Задание = ДлительныеОперации.ВыполнитьФункцию(ПараметрыМетода, ИмяМетода, + ОтборМетаданных, + ДополнительныеРеквизитыПомеченныхНаУдаления.Выгрузить(), + РеквизитФормыВЗначение("ДеревоПомеченныхНаУдаление")); + + Возврат Задание; +КонецФункции + +&НаКлиенте +Процедура ПослеЗавершенияПоискаПомеченных(Результат, ДополнительныеПараметры) Экспорт + Если Результат = Неопределено Тогда + Возврат; + КонецЕсли; + + Если Результат.Статус = "Ошибка" Тогда + + ЗаполнитьИнформациюОшибкамиФоновогоЗадания(ЭтотОбъект, Результат); + УстановитьСостояниеВыбораПомеченныхНаУдалениеСПанельюСостояния(); + + Иначе + + ЗаполнитьДеревоПомеченныхНаУдаление(Результат); + + Если ДеревоПомеченныхНаУдаление.ПолучитьЭлементы().Количество() = 0 Тогда + Элементы.СтраницыОтображениеСостояния.ТекущаяСтраница = Элементы.СостояниеУдалениеНеТребуется; + УстановитьСостояниеВыбораПомеченныхНаУдалениеСПанельюСостояния(); + ОчиститьОчередьЗаданийФормы(); + Иначе + УстановитьСостояниеВыбораПомеченныхНаУдаление(); + КонецЕсли; + + КонецЕсли; + + ПослеЗавершенияФоновогоЗадания(Результат); +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Процедура ЗаполнитьИнформациюОшибкамиФоновогоЗадания(Форма, Результат) + Форма.ПодробныйТекстОшибкиФоновогоЗадания = Результат.ПодробноеПредставлениеОшибки; + Форма.Элементы.ДекорацияПредставлениеЗавершенияНеУспешно.Заголовок = + ?(ЭтоОшибкаУстановкиМонопольногоРежима(Результат.КраткоеПредставлениеОшибки), + НСтр("ru='Не удалось установить монопольный режим'"), + Результат.КраткоеПредставлениеОшибки); + Форма.Элементы.СтраницыОтображениеСостояния.ТекущаяСтраница = Форма.Элементы.СостояниеВыполненоСОшибками; +КонецПроцедуры + +&НаСервере +Процедура ЗаполнитьДеревоПомеченныхНаУдаление(Результат) + ДеревоЗначений = ПолучитьИзВременногоХранилища(Результат.АдресРезультата); + УдалитьИзВременногоХранилища(Результат.АдресРезультата); + ЗаполнитьКоллекциюЭлементовДереваДанныхФормы(ДеревоПомеченныхНаУдаление, ДеревоЗначений); + УдалитьИзВременногоХранилища(Результат.АдресРезультата); +КонецПроцедуры + +#КонецОбласти + +#Область УдалениеПомеченных + +&НаКлиенте +Процедура НачатьУдалениеПомеченных() + ПредставлениеОперации = НСтр("ru='Удаление помеченных'"); + Элементы.СтраницыОтображениеСостояния.ТекущаяСтраница = Элементы.СостояниеВыполняется; + Элементы.ДекорацияПредставлениеДлительнойОперации.Заголовок = НСтр("ru='Выполняется удаление помеченных...'"); + УстановитьСостояниеВыбораПомеченныхНаУдалениеСПанельюСостояния(); + + Элементы.КоманднаяПанельФормы.Доступность = Ложь; + Элементы.СтраницыИнформация.ТолькоПросмотр = Истина; + + Обработчик = Новый ОписаниеОповещения("ПослеЗавершенияУдаленияПомеченных", ЭтотОбъект); + ВыполняемаяОперация = НачатьУдалениеПомеченныхСервер(УникальныйИдентификатор, РезультатПредыдущегоШага); + ПриНачалеФоновогоЗадания(Обработчик); +КонецПроцедуры + +&НаСервере +Функция УстановитьМонопольныйРежимНаСервере(МонопольныйРежим) + Результат = Новый Структура; + Результат.Вставить("Успешно", Истина); + Результат.Вставить("ПодробноеПредставлениеОшибки", ""); + Результат.Вставить("КраткоеПредставлениеОшибки", ""); + Если МонопольныйРежим() <> МонопольныйРежим Тогда Попытка - УстановитьМонопольныйРежим(Истина); + УстановитьМонопольныйРежим(МонопольныйРежим); Исключение ИнформацияОбОшибке = ИнформацияОбОшибке(); + Результат.Успешно = Ложь; + Результат.КраткоеПредставлениеОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке); + Результат.ПодробноеПредставлениеОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке); + СведенияОРезультатахУдаления = УдалениеПомеченныхОбъектовСлужебныйКлиентСервер.НовыйСведенияОРезультатахУдаления(); + ИнформацияОбОшибке = ИнформацияОбОшибке(); + ЗаписьЖурналаРегистрации(НСтр("ru = 'Удаление помеченных'", ОбщегоНазначения.КодОсновногоЯзыка()), + УровеньЖурналаРегистрации.Ошибка, + , + , + Результат.КраткоеПредставлениеОшибки + + Символы.ПС + Символы.ПС + + Результат.ПодробноеПредставлениеОшибки); КонецПопытки; - Если ИнформацияОбОшибке <> Неопределено Тогда - Результат = Новый Структура; - Результат.Вставить("ОшибкаПриУстановкеМонопольногоРежима", Истина); - Результат.Вставить("ТекстОшибкиУстановкиМонопольногоРежима", КраткоеПредставлениеОшибки(ИнформацияОбОшибке)); - Возврат Результат; - КонецЕсли; + КонецЕсли; + + Возврат Результат; +КонецФункции + +&НаСервере +Функция НачатьУдалениеПомеченныхСервер(УникальныйИдентификаторФормы, РезультатПредыдущегоШага) + Если УдалятьПриОткрытии Тогда + ИсточникУдаляемыхОбъектов = Параметры.УдаляемыеОбъекты; + Иначе + ИсточникУдаляемыхОбъектов = РеквизитФормыВЗначение("ДеревоПомеченныхНаУдаление"); КонецЕсли; - // Запуск фонового задания - Если Не ПараметрыМетода.ИскатьПомеченные Тогда - Если ПараметрыМетода.ПрочитатьПомеченныеСоСтраницыРезультатов Тогда - ПользовательскиеОбъекты = ПомеченныеНаУдалениеСоСтраницыРезультатов(); - ИначеЕсли ПараметрыМетода.ПрочитатьПомеченныеСоСтраницыУстановкиФлажков Тогда - ПользовательскиеОбъекты = ПомеченныеНаУдалениеСоСтраницыУстановкиФлажков(); - КонецЕсли; - Если ПользовательскиеОбъекты.Количество() = 0 Тогда - Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаУдалениеНеТребуется; - ВидимостьДоступность(ЭтотОбъект); - Возврат Неопределено; - КонецЕсли; - ПараметрыМетода.Вставить("ПользовательскиеОбъекты", ПользовательскиеОбъекты); + НастройкиДополнительныхРеквизитов = РеквизитФормыВЗначение("ДополнительныеРеквизитыПомеченныхНаУдаления"); + ИмяМетода = "УдалениеПомеченныхОбъектовСлужебный.УдалитьПомеченныеОбъекты"; + + ПараметрыМетода = ДлительныеОперации.ПараметрыВыполненияФункции(УникальныйИдентификаторФормы); + ПараметрыМетода.НаименованиеФоновогоЗадания = НСтр("ru = 'Поиск помеченных на удаление'"); + ПараметрыМетода.ЗапуститьВФоне = Истина; + ЗначениеРезультатаПредыдущегоШага = ?(РезультатПредыдущегоШага <> Неопределено + И ЭтоАдресВременногоХранилища(РезультатПредыдущегоШага.АдресРезультата), + ПолучитьИзВременногоХранилища(РезультатПредыдущегоШага.АдресРезультата), + Неопределено); + + ДопустимыеРежимыУдаления = УдалениеПомеченныхОбъектовСлужебный.ДопустимыеРежимыУдаления(); + Задание = ДлительныеОперации.ВыполнитьФункцию(ПараметрыМетода, ИмяМетода, + ИсточникУдаляемыхОбъектов, + ?(ДопустимыеРежимыУдаления.Найти(РежимУдаления) <> Неопределено, РежимУдаления, "Стандартный"), + НастройкиДополнительныхРеквизитов, + ЗначениеРезультатаПредыдущегоШага, + УникальныйИдентификаторФормы); + + Возврат Задание; +КонецФункции + +&НаКлиенте +Процедура ПослеЗавершенияУдаленияПомеченных(Результат, ДополнительныеПараметры) Экспорт + Если Результат = Неопределено Тогда + Возврат; КонецЕсли; - ПараметрыМетода.Вставить("ПериодЗаписи", 3); // Секунд - ПараметрыМетода.Вставить("Монопольно", Монопольно); + Если Результат.Статус = "Ошибка" Тогда + УстановитьСостояниеВыбораПомеченныхНаУдалениеСПанельюСостояния(); + ЗаполнитьИнформациюОшибкамиФоновогоЗадания(ЭтотОбъект, Результат); + СведенияОРезультатахУдаления = УдалениеПомеченныхОбъектовСлужебныйКлиентСервер.НовыйСведенияОРезультатахУдаления(); + ИначеЕсли Результат.Статус = "Выполнено" Тогда + СведенияОРезультатахУдаления = ЗагрузитьРезультатУдаления( + Результат, УникальныйИдентификаторСУчетомВладельца(), СведенияОРезультатахУдаления); + ОбработатьРезультатВыполненияУдаления(СведенияОРезультатахУдаления); + ОбщегоНазначенияКлиент.ОповеститьОбИзмененииОбъектов(СведенияОРезультатахУдаления.Удаленные); + КонецЕсли; - // Переключение на страницу длительной операции. - ПоказатьДиалогПередЗакрытием = Истина; + УстановитьМонопольныйРежимНаСервере(Ложь); + ПослеЗавершенияФоновогоЗадания(Результат); - ПоказыватьБублик = ПараметрыМетода.УдалятьПомеченные И Монопольно; - Элементы.ФоновоеЗаданиеАнимация.Видимость = ПоказыватьБублик; - Элементы.ФоновоеЗаданиеПроцент.Видимость = Не ПоказыватьБублик; - Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаДлительнаяОперация; - Если ПоказыватьБублик Тогда - Элементы.НадписьДлительнаяОперация.Заголовок = НСтр("ru = 'Пожалуйста, подождите...'"); - Элементы.НадписьДлительнаяОперация.ГоризонтальноеПоложениеВГруппе = ГоризонтальноеПоложениеЭлемента.Лево; - Элементы.ФоновоеЗаданиеСостояние.ГоризонтальноеПоложение = ГоризонтальноеПоложениеЭлемента.Лево; - ИначеЕсли ПараметрыМетода.УдалятьПомеченные Тогда - Элементы.НадписьДлительнаяОперация.Заголовок = НСтр("ru = 'Удаляются объекты, помеченные на удаление...'"); - Элементы.НадписьДлительнаяОперация.ГоризонтальноеПоложениеВГруппе = ГоризонтальноеПоложениеЭлемента.Центр; - Элементы.ФоновоеЗаданиеСостояние.ГоризонтальноеПоложение = ГоризонтальноеПоложениеЭлемента.Центр; + Если УдалятьПриОткрытии И СведенияОРезультатахУдаления.Успешно Тогда + Закрыть(СведенияОРезультатахУдаления); + КонецЕсли; +КонецПроцедуры + +// Параметры: +// СведенияОРезультатахУдаления - см. УдалениеПомеченныхОбъектовСлужебныйКлиентСервер.НовыйСведенияОРезультатахУдаления +// +&НаКлиенте +Процедура ОбработатьРезультатВыполненияУдаления(СведенияОРезультатахУдаления) + + Если НеУдаленные.ПолучитьЭлементы().Количество() > 0 Тогда + Элементы.СтраницыОтображениеСостояния.ТекущаяСтраница = Элементы.СостояниеЧастичноеУдаление; + Элементы.НадписьСостояниеЧастичноеУдаление.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru='Удалено %1 из %2.'"), + СведенияОРезультатахУдаления.УдаленныеКоличество, + СведенияОРезультатахУдаления.НеУдаленныеКоличество + СведенияОРезультатахУдаления.УдаленныеКоличество); + УстановитьСостояниеНеуспешноеУдалениеСПанельюСостояния(); + ИначеЕсли СведенияОРезультатахУдаления.УдаленныеКоличество > 0 Тогда + УстановитьСостояниеВыбораПомеченныхНаУдалениеСПанельюСостояния(); + + Элементы.СтраницыОтображениеСостояния.ТекущаяСтраница = Элементы.СостояниеВыполнено; + Элементы.ДекорацияПредставлениеЗавершенияУспешно.Заголовок = НСтр("ru='Удаление успешно завершено.'"); Иначе - Элементы.НадписьДлительнаяОперация.Заголовок = НСтр("ru = 'Поиск объектов, помеченных на удаление...'"); - Элементы.НадписьДлительнаяОперация.ГоризонтальноеПоложениеВГруппе = ГоризонтальноеПоложениеЭлемента.Центр; - Элементы.ФоновоеЗаданиеСостояние.ГоризонтальноеПоложение = ГоризонтальноеПоложениеЭлемента.Центр; + УстановитьСостояниеВыбораПомеченныхНаУдаление(); КонецЕсли; - ВидимостьДоступность(ЭтотОбъект); +КонецПроцедуры + +// Параметры: +// РезультатУдаления - Структура: +// * АдресРезультата - Строка +// Возвращаемое значение: +// см. УдалениеПомеченныхОбъектовСлужебныйКлиентСервер.НовыйСведенияОРезультатахУдаления +// +&НаСервере +Функция ЗагрузитьРезультатУдаления(РезультатУдаления, ИдентификаторХранилищаРезультата, СведенияОРезультате) + РезультатВыполненияВФоне = ПолучитьИзВременногоХранилища(РезультатУдаления.АдресРезультата); + СведенияОРезультате = ?(УдалятьПриОткрытии, СведенияОРезультате, Неопределено); + + Результат = СформироватьРезультатУдаления(СведенияОРезультате, РезультатВыполненияВФоне, + ИдентификаторХранилищаРезультата); + + ЗаполнитьКоллекциюЭлементовДереваДанныхФормы(ДеревоПомеченныхНаУдаление, + РезультатВыполненияВФоне.ДеревоПомеченныхНаУдаление); + ЗаполнитьКоллекциюЭлементовДереваДанныхФормы(НеУдаленные, РезультатВыполненияВФоне.НеУдаленные); + + СвязиНеудаленных.Загрузить(РезультатВыполненияВФоне.СвязиНеудаленных); + + Возврат Результат; +КонецФункции + +// Дополняет/формирует сведения о результате удаления для клиентского АПИ. +&НаСервере +Функция СформироватьРезультатУдаления(СведенияОРезультате, РезультатВыполненияВФоне, ИдентификаторХранилищаРезультата) + Результат = ?(СведенияОРезультате = Неопределено, + УдалениеПомеченныхОбъектовСлужебныйКлиентСервер.НовыйСведенияОРезультатахУдаления(), + СведенияОРезультате); - // Определение параметров запуска. - ИмяМетода = "Обработки.УдалениеПомеченныхОбъектов.УдалитьПомеченныеОбъектыИнтерактивно"; + РезультатПрепятствующиеУдалению = ?(ЭтоАдресВременногоХранилища(Результат.АдресРезультата), + ПолучитьИзВременногоХранилища(Результат.АдресРезультата), + УдалениеПомеченныхОбъектовСлужебный.ПрепятствующиеУдалению()); - НастройкиЗапуска = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор); - НастройкиЗапуска.НаименованиеФоновогоЗадания = НСтр("ru = 'Удаление помеченных объектов (интерактивное)'"); + Результат.Удаленные = УдалениеПомеченныхОбъектовСлужебный.ОбъединениеМассивов( + Результат.Удаленные, + РезультатВыполненияВФоне.Удаленные); + Результат.УдаленныеКоличество = РезультатВыполненияВФоне.КоличествоУдаленных + Результат.УдаленныеКоличество; + Результат.НеУдаленныеКоличество = РезультатВыполненияВФоне.КоличествоНеУдаленных + Результат.НеУдаленныеКоличество; + Результат.Успешно = Результат.УдаленныеКоличество > 0 И Результат.НеУдаленныеКоличество = 0; - Задание = ДлительныеОперации.ВыполнитьВФоне(ИмяМетода, ПараметрыМетода, НастройкиЗапуска); - Задание.Вставить("ОшибкаПриУстановкеМонопольногоРежима", Ложь); - Задание.Вставить("ТекстОшибкиУстановкиМонопольногоРежима", Неопределено); + СвязиНеудаленныхРезультата = УдалениеПомеченныхОбъектовСлужебный.ОбъединениеТаблиц( + РезультатПрепятствующиеУдалению, + РезультатВыполненияВФоне.СвязиНеудаленных, + Истина); + Результат.АдресРезультата = ПоместитьВоВременноеХранилище( + СвязиНеудаленныхРезультата, ИдентификаторХранилищаРезультата); + + Возврат Результат; +КонецФункции + +#КонецОбласти + +#Область ВыполнениеДействий + +&НаКлиенте +Процедура НачатьВыполнениеДополнительнойОбработки() + ПредставлениеОперации = НСтр("ru='Дополнительная обработка мешающих удалению объектов'"); + + УстановитьСостояниеНеуспешноеУдалениеСПанельюСостояния(); + + Элементы.СтраницыОтображениеСостояния.ТекущаяСтраница = Элементы.СостояниеВыполняется; + Элементы.ДекорацияПредставлениеДлительнойОперации.Заголовок = НСтр("ru='Выполняется дополнительная обработка причин неудаления...'"); + Элементы.КоманднаяПанельФормы.Доступность = Ложь; + Элементы.СтраницыИнформация.ТолькоПросмотр = Истина; + + + Обработчик = Новый ОписаниеОповещения("ПослеЗавершенияВыполненияДополнительнойОбработки", ЭтотОбъект); + ВыполняемаяОперация = НачатьВыполнениеДополнительнойОбработкиСервер(); + ПриНачалеФоновогоЗадания(Обработчик); +КонецПроцедуры + +&НаСервере +Функция НачатьВыполнениеДополнительнойОбработкиСервер() + ИмяМетода = "УдалениеПомеченныхОбъектовСлужебный.ВыполнитьОбработкуПричинНеудаления"; + + ПараметрыМетода = ДлительныеОперации.ПараметрыВыполненияФункции(УникальныйИдентификатор); + ПараметрыМетода.ЗапуститьВФоне = Истина; + ПараметрыМетода.НаименованиеФоновогоЗадания = НСтр("ru = 'Поиск помеченных на удаление'"); + + Задание = ДлительныеОперации.ВыполнитьФункцию(ПараметрыМетода, ИмяМетода, ТаблицаДействий.Выгрузить()); Возврат Задание; КонецФункции &НаКлиенте -Процедура ПослеУстановкиМонопольногоРежима(Результат, Режим) Экспорт - Если Результат = Ложь Тогда // Монопольный режим установлен. - ЗапуститьФоновоеЗаданиеКлиент(Режим); +Процедура ПослеЗавершенияВыполненияДополнительнойОбработки(Результат, ДополнительныеПараметры) Экспорт + Если Результат = Неопределено Тогда + Возврат; + КонецЕсли; + + Если Результат.Статус = "Ошибка" Тогда + УстановитьСостояниеНеуспешноеУдалениеСПанельюСостояния(); + ЗаполнитьИнформациюОшибкамиФоновогоЗадания(ЭтотОбъект, Результат); + УстановитьМонопольныйРежимНаСервере(Ложь); + КонецЕсли; + + ПослеЗавершенияФоновогоЗадания(Результат); +КонецПроцедуры + +#КонецОбласти + +&НаКлиенте +Процедура ПослеПодтвержденияОтменыЗадания(Ответ, ПараметрыВыполнения) Экспорт + Если Ответ = КодВозвратаДиалога.Прервать Тогда + ПоказатьДиалогПередЗакрытием = Ложь; + ОтменитьОперациюСервер(ВыполняемаяОперация); + УстановитьМонопольныйРежимНаСервере(Ложь); + Закрыть(СведенияОРезультатахУдаления); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ПриОбновленииПрогрессаФоновогоЗадания(Задание, ДополнительныеПараметры) Экспорт Если Задание.Прогресс <> Неопределено Тогда - ФоновоеЗаданиеПроцент = Задание.Прогресс.Процент; - ФоновоеЗаданиеСостояние = Задание.Прогресс.Текст; + Элементы.ПредставлениеПрогресса.Видимость = Истина; + Элементы.ПредставлениеПрогресса.Заголовок = Задание.Прогресс.Текст; КонецЕсли; КонецПроцедуры &НаКлиенте -Процедура ПослеЗавершенияФоновогоЗадания(Задание, ДополнительныеПараметры) Экспорт - ПоказатьДиалогПередЗакрытием = Ложь; - Если Монопольно Тогда - СнятьМонопольныйРежим(); - КонецЕсли; +Функция ЗначениеПометкиЭлементов(ЭлементыРодителя) - // задание было отменено. - Если Задание = Неопределено Тогда - Возврат; - КонецЕсли; + ЕстьПомеченные = Ложь; + ЕстьНепомеченные = Ложь; - Активизировать(); - - Если Задание.Статус = "Выполнено" Тогда + Для каждого ЭлементРодителя Из ЭлементыРодителя Цикл - Результат = ЗагрузитьРезультатФоновогоЗадания(Задание.АдресРезультата); - Если Результат = Неопределено Тогда - ВывестиОшибку(НСтр("ru = 'Не удалось прочитать результат удаления помеченных'"), ""); - Возврат; + Если ЭлементРодителя.Пометка = 0 Тогда + ЕстьНепомеченные = Истина; + ИначеЕсли ЭлементРодителя.Пометка = 1 Тогда + ЕстьПомеченные = Истина; КонецЕсли; - СтандартныеПодсистемыКлиент.ОповеститьФормыОбИзменении( - Результат.ОповещениеОбИзменениях, - Новый Структура("УдалениеПомеченных", Истина)); - - Если Не ПустаяСтрока(Результат.ОповещениеТекст) Тогда - ПоказатьОповещениеПользователя( - НСтр("ru = 'Удаление помеченных'"), - НавигационнаяСсылка, - Результат.ОповещениеТекст, - Результат.ОповещениеКартинка); + Если ЕстьНепомеченные И ЕстьПомеченные Тогда + Прервать; КонецЕсли; - Если Результат.РазвернутьДеревоПомеченныхНаУдаление Тогда - СтандартныеПодсистемыКлиент.РазвернутьУзлыДерева(ЭтотОбъект, "ДеревоПомеченныхНаУдаление"); + КонецЦикла; + + Если ЕстьПомеченные Тогда + Если ЕстьНепомеченные Тогда + Возврат 2; + Иначе + Возврат 1; КонецЕсли; - Иначе - - ВывестиОшибку(Задание.КраткоеПредставлениеОшибки, Задание.ПодробноеПредставлениеОшибки); - + Возврат 0; КонецЕсли; -КонецПроцедуры +КонецФункции + +#КонецОбласти + +&НаКлиенте +Функция УникальныйИдентификаторСУчетомВладельца() + Возврат ?(ВладелецФормы = Неопределено, УникальныйИдентификатор, ВладелецФормы.УникальныйИдентификатор); +КонецФункции &НаСервере -Функция ЗагрузитьРезультатФоновогоЗадания(АдресРезультата) - Если Монопольно Тогда - СнятьМонопольныйРежим(); - КонецЕсли; - - // Получение результата. - РезультатВыполненияВФоне = ПолучитьИзВременногоХранилища(АдресРезультата); - Если РезультатВыполненияВФоне = Неопределено Тогда - Возврат Неопределено; - КонецЕсли; - - Результат = Новый Структура; - Результат.Вставить("ОповещениеОбИзменениях", Новый Соответствие); - Результат.Вставить("ОповещениеТекст", ""); - Результат.Вставить("ОповещениеКартинка", Неопределено); - Результат.Вставить("РазвернутьДеревоПомеченныхНаУдаление", Ложь); - - Если РезультатВыполненияВФоне.УдалятьПомеченные Тогда - - Результат.ОповещениеОбИзменениях = СтандартныеПодсистемыСервер.ПодготовитьОповещениеФормОбИзменении(РезультатВыполненияВФоне.Удаленные); - - УдаленныеКоличество = РезультатВыполненияВФоне.Удаленные.Количество(); - НеУдаленныеКоличество = РезультатВыполненияВФоне.НеУдаленные.Количество(); - - Если УдаленныеКоличество = 0 И НеУдаленныеКоличество = 0 Тогда - Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаУдалениеНеТребуется; - ИначеЕсли НеУдаленныеКоличество = 0 Тогда - Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаУспешноЗавершено; - Результат.ОповещениеТекст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Удалено объектов: %1.'"), - Формат(УдаленныеКоличество, "ЧН=0; ЧГ=")); - Элементы.НадписьУспешноЗавершено.Заголовок = Результат.ОповещениеТекст; - Иначе - Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаПричиныНевозможностиУдаления; - Результат.ОповещениеТекст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Удалено: %1, не удалено: %2.'"), - Формат(УдаленныеКоличество, "ЧН=0; ЧГ="), - Формат(НеУдаленныеКоличество, "ЧН=0; ЧГ=")); - Результат.ОповещениеКартинка = БиблиотекаКартинок.Предупреждение32; - - Если УдаленныеКоличество = 0 Тогда - Элементы.НадписьИтогиЧастичногоУдаления.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Не получилось удалить объекты, помеченные на удаление (%1):'"), - Формат(НеУдаленныеКоличество, "ЧН=0; ЧГ=")); - Иначе - Элементы.НадписьИтогиЧастичногоУдаления.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Успешно удалено: %1 из %2, остальные объекты не удалены (%3):'"), - Формат(УдаленныеКоличество, "ЧН=0; ЧГ="), - Формат(УдаленныеКоличество+НеУдаленныеКоличество, "ЧН=0; ЧГ="), - Формат(НеУдаленныеКоличество, "ЧН=0; ЧГ=")); - КонецЕсли; - - Шаблон = Элементы.ГруппаНеУдаленные.Заголовок; - Шаблон = Лев(Шаблон, СтрНайти(Шаблон, "(")); - Элементы.ГруппаНеУдаленные.Заголовок = Шаблон + Формат(НеУдаленныеКоличество, "ЧН=0; ЧГ=") + ")"; - - ЗаполнитьКоллекцииОставшихсяОбъектов(РезультатВыполненияВФоне); - - ГруппыНеУдаленных = НеУдаленные.ПолучитьЭлементы(); - Если ГруппыНеУдаленных.Количество() > 0 Тогда - ЭлементыПервойГруппы = ГруппыНеУдаленных[0].ПолучитьЭлементы(); - Если ЭлементыПервойГруппы.Количество() > 0 Тогда - Элементы.НеУдаленные.ТекущаяСтрока = ЭлементыПервойГруппы[0].ПолучитьИдентификатор(); - ПоказатьСвязиНеУдаленныхНаСервере(ЭтотОбъект); - КонецЕсли; - КонецЕсли; - - КонецЕсли; - - Иначе - - // Заполнение дерева помеченных на удаление. - Отмеченные = ПомеченныеНаУдалениеСоСтраницыРезультатов(); - ПометкиУстанавливаютсяВыборочно = (Отмеченные.Количество() > 0); - - ДеревоЗначений = РеквизитФормыВЗначение("ДеревоПомеченныхНаУдаление"); - ДеревоЗначений.Строки.Очистить(); - ДеревоЗначений.Колонки.Добавить("Количество"); - - УзлыПервогоУровня = Новый Соответствие; - - ПользовательскиеОбъекты = РезультатВыполненияВФоне.ПользовательскиеОбъекты; - Для Каждого УдаляемыйСсылка Из ПользовательскиеОбъекты Цикл - ТипУдаляемого = ТипЗнч(УдаляемыйСсылка); - УдаляемыйИнформация = Обработки.УдалениеПомеченныхОбъектов.СформироватьИнформациюОТипах(РезультатВыполненияВФоне, ТипУдаляемого); - - УзелТипа = УзлыПервогоУровня.Получить(ТипУдаляемого); - Если УзелТипа = Неопределено Тогда - УзелТипа = ДеревоЗначений.Строки.Добавить(); - УзелТипа.Значение = УдаляемыйИнформация.ПолноеИмя; - УзелТипа.Представление = УдаляемыйИнформация.ПредставлениеСписка; - УзелТипа.Пометка = Истина; - УзелТипа.Количество = 0; - УзелТипа.НомерКартинки = -1; - УзлыПервогоУровня.Вставить(ТипУдаляемого, УзелТипа); - БыстрыйПоиск.ПолныеИменаОбъектовМетаданных.Вставить(ТипУдаляемого, УдаляемыйИнформация.ПолноеИмя); - КонецЕсли; - УзелТипа.Количество = УзелТипа.Количество + 1; - - УзелУдаляемого = УзелТипа.Строки.Добавить(); - УзелУдаляемого.Значение = УдаляемыйСсылка; - УзелУдаляемого.Представление = Строка(УдаляемыйСсылка); - УзелУдаляемого.Пометка = Истина; - УзелУдаляемого.НомерКартинки = НомерКартинки(УдаляемыйСсылка, Истина, УдаляемыйИнформация.Вид, Истина); - - Если ПометкиУстанавливаютсяВыборочно И Отмеченные.Найти(УдаляемыйСсылка) = Неопределено Тогда - УзелУдаляемого.Пометка = Ложь; - УзелТипа.Пометка = Ложь; - КонецЕсли; - - КонецЦикла; - - Для Каждого УзелТипа Из ДеревоЗначений.Строки Цикл - УзелТипа.Представление = УзелТипа.Представление + " (" + УзелТипа.Количество + ")"; - КонецЦикла; - - ДеревоЗначений.Колонки.Удалить(ДеревоЗначений.Колонки.Количество); - ДеревоЗначений.Строки.Сортировать("Представление", Истина); - - ЗначениеВРеквизитФормы(ДеревоЗначений, "ДеревоПомеченныхНаУдаление"); - - КоличествоТипов = УзлыПервогоУровня.Количество(); - - Если КоличествоТипов = 0 Тогда - Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаУдалениеНеТребуется; - Иначе - Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаПомеченныеНаУдаление; - Если КоличествоТипов = 1 Тогда - Результат.РазвернутьДеревоПомеченныхНаУдаление = Истина; - КонецЕсли; - КонецЕсли; - - КонецЕсли; - - УдалитьИзВременногоХранилища(АдресРезультата); - ВидимостьДоступность(ЭтотОбъект); - - Возврат Результат; +Процедура ЗаполнитьКоллекциюЭлементовДереваДанныхФормы(ДанныеФормы, ДеревоЗначений) + СтрокиДанныхФормы = ДанныеФормы.ПолучитьЭлементы(); + СтрокиДанныхФормы.Очистить(); + ОбщегоНазначения.ЗаполнитьКоллекциюЭлементовДереваДанныхФормы(СтрокиДанныхФормы, ДеревоЗначений); +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Функция ЭтоОшибкаУстановкиМонопольногоРежима(ПодробныйТекстОшибкиФоновогоЗадания) + ТекстОшибкиМонопольно = НСтр("ru='Ошибка разделенного доступа к базе'"); + Возврат (СтрНайти(ПодробныйТекстОшибкиФоновогоЗадания,ТекстОшибкиМонопольно) <> 0) КонецФункции &НаКлиенте -Процедура ВывестиОшибку(КраткоеПредставлениеОшибки, ПодробноеПредставлениеОшибки); - Кратко = НСтр("ru = 'Удаление не выполнено по причине:'") + Символы.ПС + КраткоеПредставлениеОшибки; - ПодробныйТекстОшибки = Кратко + Символы.ПС + Символы.ПС + ПодробноеПредставлениеОшибки; - Элементы.НадписьТекстОшибки.Заголовок = Кратко; - Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаВозниклаОшибка; - ВидимостьДоступность(ЭтотОбъект); +Процедура ДобавитьЗадание(ИмяОперации) + ОчередьЗаданийФормы.Добавить(ИмяОперации); КонецПроцедуры &НаКлиенте -Процедура ПослеПодтвержденияОтменыЗадания(Ответ, ПараметрыВыполнения) Экспорт - Если Ответ = КодВозвратаДиалога.Прервать Тогда - ПоказатьДиалогПередЗакрытием = Ложь; - Закрыть(); +Процедура УдалитьТекущееЗадание() + Если ОчередьЗаданийФормы.Количество() <> 0 Тогда + ОчередьЗаданийФормы.Удалить(0); КонецЕсли; КонецПроцедуры &НаКлиенте -Процедура УскоритьУдалениеПомеченныхПриИзменении(Элемент) - - ВидимостьДоступность(ЭтотОбъект); - +Функция ТекущееЗадание() + Возврат ?(ОчередьЗаданийФормы.Количество() = 0, "", ОчередьЗаданийФормы[0]); +КонецФункции + +&НаКлиенте +Процедура ЗапуститьЗаданиеСОжиданием() + ЗапуститьЗадание(); + ТолькоПросмотр = Ложь; КонецПроцедуры +&НаКлиенте +Процедура ЗапуститьЗадание(Задание = "") + Результат = Новый Структура("Успешно", Истина); + + Если НЕ ПустаяСтрока(Задание) И Задание <> ТекущееЗадание() Тогда + ДобавитьЗадание(Задание); + КонецЕсли; + + Если ВыполняемаяОперация <> Неопределено Тогда + Возврат; + КонецЕсли; + + ТекущееЗаданиеФормы = ТекущееЗадание(); + Если НЕ ПустаяСтрока(ТекущееЗаданиеФормы) Тогда + + Если РежимУдаления = "Монопольный" + И ТекущееЗаданиеФормы <> ЗаданияФормы().ПоискПомеченных Тогда + + Результат = УстановитьМонопольныйРежимНаСервере(Истина); + Если НЕ Результат.Успешно Тогда + Результат.Вставить("Статус", "Ошибка"); + ЗаполнитьИнформациюОшибкамиФоновогоЗадания(ЭтотОбъект, Результат); + Элементы.СтраницыОтображениеСостояния.Видимость = Истина; + Элементы.СтраницыОтображениеСостояния.ТекущаяСтраница = Элементы.СостояниеВыполненоСОшибками; + Возврат; + КонецЕсли; + КонецЕсли; + + Если ТекущееЗаданиеФормы = ЗаданияФормы().УдалениеПомеченных Тогда + НачатьУдалениеПомеченных(); + ИначеЕсли ТекущееЗаданиеФормы = ЗаданияФормы().ПоискПомеченных Тогда + НачатьПоискПомеченных(); + ИначеЕсли ТекущееЗаданиеФормы = ЗаданияФормы().ВыполнениеДополнительнойОбработки Тогда + НачатьВыполнениеДополнительнойОбработки(); + КонецЕсли; + + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Функция ЗаданияФормы() + Задания = Новый Структура; + Задания.Вставить("УдалениеПомеченных", "УдалениеПомеченных"); + Задания.Вставить("ПоискПомеченных", "ПоискПомеченных"); + Задания.Вставить("ВыполнениеДополнительнойОбработки", "ВыполнениеДополнительнойОбработки"); + Возврат Задания; +КонецФункции + +&НаКлиенте +Процедура ОчиститьОчередьЗаданийФормы() + ОчередьЗаданийФормы.Очистить(); +КонецПроцедуры + +&НаКлиенте +Функция КоличествоЗаданийВОчереди() + Возврат ОчередьЗаданийФормы.Количество(); +КонецФункции + + +#КонецОбласти + +#Область Инициализация + +СведенияОРезультатахУдаления = УдалениеПомеченныхОбъектовСлужебныйКлиентСервер.НовыйСведенияОРезультатахУдаления(); +ПредставлениеОперации = ""; +ОчередьЗаданийФормы = Новый Массив; + #КонецОбласти \ No newline at end of file diff --git a/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Help/ru.html b/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Help/ru.html index 307c5c0b9..b3b1569a8 100644 --- a/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Help/ru.html +++ b/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Help/ru.html @@ -1,47 +1,51 @@

    Предназначена для окончательного удаления помеченных объектов.

    В процессе работы с программой можно помечать на удаление объекты (например, ошибочно введенные). Помеченные на удаление объекты могут быть безвозвратно удалены пользователем с административными правами.

    -

    Команда Удаление помеченных объектов находится в разделе Администрирование - Обслуживание.

    +

    Команда Удаление помеченных объектов находится в разделе Администрирование - Обслуживание. Также можно найти эту команду в разделе Администрирование - Общие настройки - Удаление помеченных объектов. Также помощник Удаление помеченных объектов можно открыть из любого списка программы во время работы с ним по команде Еще - Сервис - Перейти к помеченным на удаление. В этом случае список будет отфильтрован и показывает только объекты из открытого списка.

    Удаление выполняется с контролем ссылочной целостности. Это значит, что если на тот или иной объект программы (документ, элемент справочника и т.д.) ссылаются другие объекты, то удаление объекта не будет выполнено. Тем не менее, следует помнить, что удаление помеченных объектов - необратимая операция.

    -

    Удаление ранее помеченных объектов можно выполнить двумя способами, которые можно выбрать с помощью переключателя:

    -
    • Удалить все помеченные объекты - производится попытка удаления всех объектов, помеченных на удаление. +

      Выбор объектов для удаления

      +

      По умолчанию показываются все помеченные на удаление объекты. Поиск таких объектов может занимать время. Можно сразу нажать кнопку Удалить все, не дожидаясь окончания поиска помеченных. Не рекомендуется делать так, если в программе ведется активная работа многими пользователями, т.к. есть вероятность удалить нужные объекты.

      +

      Перед удалением программа анализирует объекты, помеченные на удаление, и отклоняет попытку удаления, если на объекты имеются ссылки. Однако и нужные объекты могут быть удалены, если на них нет ссылок из других объектов. 

      +

      Если помеченных на удаление объектов в списке много, в программе предусмотрена возможность ограничить их количество.

      +

      В поле Показывать можно задать правила отбора помеченных на удаление объектов. По умолчанию показываются Все помеченные на удаление объекты. Ссылка показывает условие их отбора. С помощью ссылки открывается список разделов программы. Для ограничения количества найденных объектов предназначен переключатель:

      +
      • Везде - выбор всех объектов без исключения, выбрано по умолчанию.
      • -
      • Выборочное удаление объектов - этот режим позволяет предварительно выбрать объекты для удаления.

      Удаление всех помеченных объектов 

      -
      • Выберите режим, нажмите Удалить. +
      • В разделах - выбор объектов в разделах программы. С помощью флажков в списке разделов можно уточнить отбор. С помощью кнопок панели навигации можно выбрать все или отключить все флажки. Для подтверждения нажмите кнопку Выбрать. Настройки будут сохранены.

      Объекты программы представлены в виде дерева. С помощью кнопки  можно просмотреть выбранный объект программы. Если выбрана группа, то открывается список.

      +

      При удалении помеченных объектов может наблюдаться замедление работы программы. Поэтому рекомендуется проводить удаление, когда в программе не работают пользователи или когда их мало.

      +

      Удаление помеченных объектов 

      +

      Программа позволяет удалять помеченные ранее объекты двумя способами: 

      +

      +
      • Удалить все - программа производит поиск и удаление всех помеченных объектов. Через некоторое время программа выводит сообщение о количестве удаленных объектов, при этом вмешательство потребуется, только если удаление невозможно в случае обнаружения ссылок на удаляемые объекты;
      • +
      • Удалить выбранные  - будут удалены выбранные ранее объекты.
      • +
      • Отменить - прекратить удаление.
      • +
      • В случае успешного выполнения программа выводит сообщение о количестве удаленных объектов. Для возвращения в программу нажмите кнопку Закрыть.

      Действия при невозможности удаления объектов

      +
      +
      • В случае если удаляемый объект используется в других объектах, то программа не удалит этот объект и на странице с результатами покажет места его использования. Показывается вся цепочка объектов, которые мешают удалению и предлагаются способы, которыми можно решить проблему.
      • +
      • В левой части списка отображаются объекты, которые не удалось удалить, а в правой - объекты, в которых выбран отмеченный объект (места использования).
      • +
      • Двойным щелчком мыши по объекту или с помощью кнопки  Изменить можно открыть его и принять решение о правомерности его удаления. 
      • После этого нажмите Повторить удаление, для того чтобы попытаться удалить объекты еще раз.
      +
      • Нажав кнопку Действия, можно выбрать:
      • +
        • Удалить - сделать еще одну попытку удаления;
        • +
        • Заменить удаляемый объект на другой во всех местах использования. 
      • Нажмите Вернуться к выбору помеченных, чтобы изменить состав удаляемых объектов.
      • -
      • При выборе режима программа производит поиск и удаление всех помеченных объектов. Через некоторое время программа выводит сообщение о количестве удаленных объектов, при этом вмешательство потребуется, только если удаление невозможно в случае обнаружения ссылок на удаляемые объекты.

      Выборочное удаление объектов

      -
      • Выберите режим, нажмите Далее. -
      • -
      • При выборе режима программа формирует список объектов, помеченных на удаление. -
        •  В списке объекты сгруппированы по виду, по умолчанию все объекты помечены флажками на удаление. -
        • -
        • Сняв флажки в списке, можно оставить в программе те объекты, которые были помечены на удаление. -
        • -
        • Двойным щелчком мыши по объекту или с помощью кнопки  Изменить можно открыть его и принять решение о правомерности его удаления.
      • -
      • Для окончательного удаления объектов из программы нажмите Удалить. -
      • -
      • По окончании физического удаления объектов выводится сообщение о количестве удаленных объектов. -
      • -
      • Если на объекты имеются ссылки, то программа выдает предупреждение и выводит перечень объектов, которые не удалось удалить, а также объекты, которые препятствуют удалению.

      Действия при невозможности удаления объектов

      -

      Список неудаленных объектов состоит из двух частей: слева перечень объектов, справа список Места использования. 

      -
      • Для окончательного удаления объектов можно: -
        • Двойным щелчком мыши в списке или с помощью команды Еще - Изменить можно открыть объект, который препятствует удалению, например, для того чтобы вручную удалить в нем ссылки на удаляемый объект. -
        • -
        • указать ссылку на другой элемент из списка. Нажмите кнопку Заменить во всех местах использования, чтобы перейти к замене элементов. Для замены ссылок выберите из списка другой элемент вместо удаляемого. -
        • -
        •  Пометить на удаление все связанные с удаляемым элементом объекты (в правой части списка - Места использования), -
        • -
        •  Снять пометку на удаление с объекта, помеченного на удаление.
      • -
      • После этого нажмите Повторить удаление, для того чтобы попытаться удалить объекты еще раз. -
      • -
      • Нажмите В начало, для того чтобы выбрать другой способ удаления. -
      • -
      • Нажмите Закрыть, для того чтобы вернуться в программу без продолжения попыток удаления.

      Ускорение удаления помеченных объектов

      -
      • Удаление помеченных объектов может занимать длительное время. В это время может наблюдаться существенное замедление работы пользователей. -
      • -
      • Рекомендуется выполнять удаление в период наименьшей активности пользователей. -
      • -
      • Предусмотрена возможность Заблокировать всю работу в программе и ускорить удаление с помощью соответствующего флажка.

      Настройка расписания автоматического удаления

      +
    • Закройте форму, для того чтобы вернуться в программу без продолжения попыток удаления.
    • +
    • Иногда изменить документ невозможно (например, период, в котором документ, помеченный на удаление, создан и обработан, закрыт). В таких случаях нужны дополнительные действия (например, необходимо открыть период), целесообразность которых определяется в каждом конкретном случае. С помощью команды Пометить на удаление/Снять пометку меню по правой кнопке мыши можно изменить пометку удаления выбранного объекта. Например, можно снять пометку удаления с объекта, который не следует удалять или пометить на удаление объект, который препятствует удалению.
    • +
    • После разрешения конфликтов (замены мест использования или изменения пометок удаления) можно Повторить удаление объектов. При необходимости можно вернуться к выбору объектов для удаления изменить режим удаления и выбрать другие объекты для удаления.

    Настройка удаления объектов

    +

    С помощью кнопки панели навигации можно Настроить удаление помеченных объектов более точно.

    +

    С помощью кнопки  можно добавить группы объектов или  ввести отдельные объекты в таблицу Выводимые реквизиты, выбрав их из списка с помощью флажков. Настройки добавляются, если выбрать конкретные объекты. Для подтверждения нажмите кнопку Выбрать.

    +

    С помощью переключателя можно выбрать Способ удаления:

    +

    +
    • Стандартный - программа выполняет полную проверку возможности удаления и не удаляет объекты при наличии мест использования (с контролем ссылочной целостности). Подходит для удаления одиночных объектов.
    • +
    • Упрощенный - очистка полей в помеченных на удаление объектах. Подходит для очистки связанных объектов. Поможет удалить сложные цепочки объектов.
    • +
    • Ускоренный - удаление с контролем ссылочной целостности и включением монопольного режима. Позволяет блокировать вход в программу. Подходит для срочного удаления больших объемов данных.

    + + +

    При необходимости включите флажок, для того чтобы Автоматически удалять помеченные объекты по расписанию.

    +

    Удаление помеченных объектов в ускоренном режиме (монопольном)

    +
    • Данная возможность предусмотрена для быстрого удаления больших объемов данных (например, после свертки информационной базы). Для удаления помеченных все пользователи должны выйти из программы. В остальных случаях этот режим включать не рекомендуется, для того чтобы не блокировать работу в программе.
    • +
    • Удаление помеченных объектов может занимать длительное время. В это время может наблюдаться существенное замедление работы пользователей.
    • +
    • Предусмотрена возможность заблокировать всю работу в программе и ускорить удаление, выбрав с помощью переключателя Способ удаления режим Ускоренный. При этом момент выбора режима и запуска могут быть сильно разнесены по времени. При настройке режима удаления выбор сохраняется. Можно в любой момент времени нажать Удалить все, после этого программа выполнит попытку установить монопольный режим и удалить объекты.
    • +
    • После нажатия кнопки Удалить все требуется, чтобы в программе никто не работал (вход в программу будет закрыт вплоть до окончания удаления).
    • +
    • В процессе удаления могут быть разные причины завершения задания удаления. Среди них невозможность установить монопольный режим. Для просмотра списка пользователей, работающих в программе в данный момент, нажмите на ссылку Подробнее.

    Настройка расписания автоматического удаления

    • Включите флажок, для того чтобы Автоматически удалять помеченные объекты по расписанию.
    • После этого становится доступной ссылка Настроить расписание. После того, как расписание настроено, оно отображается под флажком.

    Удаление помеченных объектов в приложении в Интернете (в модели сервиса)

    diff --git a/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/ManagerModule.bsl b/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/ManagerModule.bsl index ddd1e7649..f36ca1e97 100644 --- a/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/ManagerModule.bsl +++ b/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/ManagerModule.bsl @@ -10,56 +10,15 @@ #Область СлужебныеПроцедурыИФункции -//////////////////////////////////////////////////////////////////////////////// -// Интерактивное удаление помеченных. - -// Удаляет помеченные объекты, используется при интерактивном удалении в фоновом задании. -// -// Параметры: -// ПараметрыВыполнения - Структура - Параметры, необходимые для удаления. -// АдресХранилища - Строка - Адрес временного хранилища. -// -Процедура УдалитьПомеченныеОбъектыИнтерактивно(ПараметрыВыполнения, АдресХранилища) Экспорт - УдалитьПомеченныеОбъекты(ПараметрыВыполнения); - ПараметрыВыполнения.Удалить("ВсеПомеченныеНаУдаление"); - ПоместитьВоВременноеХранилище(ПараметрыВыполнения, АдресХранилища); -КонецПроцедуры - -//////////////////////////////////////////////////////////////////////////////// -// Удаление помеченных из регламентного задания. - -// Удаляет помеченные объекты из регламентного задания. -Процедура УдалитьПомеченныеОбъектыИзРегламентногоЗадания() Экспорт - - ПараметрыВыполнения = Новый Структура; - УдалитьПомеченныеОбъекты(ПараметрыВыполнения); - -КонецПроцедуры - -//////////////////////////////////////////////////////////////////////////////// -// Инициализация и запуск. - -// Основная механика удаления помеченных объектов. -Процедура УдалитьПомеченныеОбъекты(ПараметрыВыполнения) +Функция УдалитьПомеченныеОбъекты(ПараметрыВыполнения, ИдентификаторЗадания = Неопределено) Экспорт Если НЕ Пользователи.ЭтоПолноправныйПользователь() Тогда ВызватьИсключение НСтр("ru = 'Недостаточно прав для выполнения операции.'"); КонецЕсли; - ИнициализироватьПараметры(ПараметрыВыполнения); + Замер = ТекущаяУниверсальнаяДатаВМиллисекундах(); - Если ПараметрыВыполнения.ИскатьПомеченные Тогда - ПолучитьПомеченныеНаУдаление(ПараметрыВыполнения); - КонецЕсли; - - Если Не ПараметрыВыполнения.УдалятьПомеченные Тогда - Возврат; - КонецЕсли; - - Если ПараметрыВыполнения.Интерактивное - И ПараметрыВыполнения.ВсеПомеченныеНаУдаление.Количество() = 0 Тогда - Возврат; // Не удалять технологические объекты при интерактивном запуске если нет пользовательских объектов. - КонецЕсли; + УдалениеПомеченныхОбъектовПереопределяемый.ПередПоискомПомеченныхНаУдаление(ПараметрыВыполнения); Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом"); @@ -67,11 +26,18 @@ КонецЕсли; Попытка + УдаляемыеОбъекты = ПараметрыВыполнения.ПользовательскиеОбъекты; + ПараметрыУдаления = ПараметрыУдаления(УдаляемыеОбъекты, ПараметрыВыполнения); - Если ПараметрыВыполнения.Монопольно Тогда - УдалитьПомеченныеОбъектыМонопольно(ПараметрыВыполнения); - Иначе // Не монопольно. - УдалитьПомеченныеОбъектыКонкурентно(ПараметрыВыполнения); + // Для отмены задания с клиента + Если ЗначениеЗаполнено(ИдентификаторЗадания)Тогда + ПараметрыУдаления.ИдентификаторЗадания = ИдентификаторЗадания; + КонецЕсли; + + Если ПараметрыУдаления.Монопольно Тогда + УдалитьПомеченныеОбъектыМонопольно(УдаляемыеОбъекты, ПараметрыУдаления); + Иначе + УдалитьПомеченныеОбъектыКонкурентно(УдаляемыеОбъекты, ПараметрыУдаления); КонецЕсли; Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда @@ -88,530 +54,1319 @@ Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Взаимодействия") Тогда МодульВзаимодействия = ОбщегоНазначения.ОбщийМодуль("Взаимодействия"); - МодульВзаимодействия.ПослеУдаленияПомеченных(ПараметрыВыполнения); + МодульВзаимодействия.ПослеУдаленияПомеченных(ПараметрыУдаления); КонецЕсли; -КонецПроцедуры + Замер = ТекущаяУниверсальнаяДатаВМиллисекундах() - Замер; + ОтправитьСтатистику(ПараметрыВыполнения.Режим, Замер, ПараметрыУдаления.Всего); + + Возврат ПараметрыУдаления; +КонецФункции -//////////////////////////////////////////////////////////////////////////////// -// Конкурентное удаление помеченных. +#Область КонкурентноеУдаление -// Основная механика. -Процедура УдалитьПомеченныеОбъектыКонкурентно(ПараметрыВыполнения) - УстановитьПривилегированныйРежим(Истина); - - // Удаление технологических объектов (которые создавались и помечались на удаление без участия пользователя). - Если ПараметрыВыполнения.ТехнологическиеОбъекты <> Неопределено Тогда - ОтметитьНачалоОбходаКоллекции(ПараметрыВыполнения, "ТехнологическиеОбъекты"); - Для Каждого Ссылка Из ПараметрыВыполнения.ТехнологическиеОбъекты Цикл - УдалитьСсылку(ПараметрыВыполнения, Ссылка); // Для технологических объектов результат не выводится. - ОтметитьПрогрессОбходаКоллекции(ПараметрыВыполнения, "ТехнологическиеОбъекты"); - КонецЦикла; - КонецЕсли; - - // Удаление помеченных на удаление. - ОтметитьНачалоОбходаКоллекции(ПараметрыВыполнения, "ПользовательскиеОбъекты"); - Для Каждого Ссылка Из ПараметрыВыполнения.ПользовательскиеОбъекты Цикл - Результат = УдалитьСсылку(ПараметрыВыполнения, Ссылка); - ЗарегистрироватьРезультатУдаления(ПараметрыВыполнения, Ссылка, Результат, "ПользовательскиеОбъекты"); - ОтметитьПрогрессОбходаКоллекции(ПараметрыВыполнения, "ПользовательскиеОбъекты"); - КонецЦикла; - - // Удаление цепочек (линейно связанных объектов). - ОтметитьНачалоОбходаКоллекции(ПараметрыВыполнения, "ПовторноУдаляемые"); - Пока ПараметрыВыполнения.ПовторноУдаляемые.Количество() > 0 Цикл - Ссылка = ПараметрыВыполнения.ПовторноУдаляемые[0]; - ПараметрыВыполнения.ПовторноУдаляемые.Удалить(0); - - Результат = УдалитьСсылку(ПараметрыВыполнения, Ссылка); - ЗарегистрироватьРезультатУдаления(ПараметрыВыполнения, Ссылка, Результат, "ПовторноУдаляемые"); - ОтметитьПрогрессОбходаКоллекции(ПараметрыВыполнения, "ПовторноУдаляемые"); - КонецЦикла; - - // Удаление циклов (кольцевых связей объектов). - УдалитьОставшиесяОбъектыВОднойТранзакции(ПараметрыВыполнения); - - // Очистка от "спама". - ОчиститьСвязиОтИсключенийПоискаСсылок(ПараметрыВыполнения); - -КонецПроцедуры - -// Удаление одиночного объекта с контролем результата и откатом транзакции в случае неудачи. -// // Параметры: -// ПараметрыВыполнения - Структура - -// Ссылка - ЛюбаяСсылка - +// УдаляемыеОбъекты - Массив из ЛюбаяСсылка +// ПараметрыУдаления - см. ПараметрыУдаления // -// Возвращаемое значение: -// Структура - где: -// * Сообщения - ФиксированныйМассив из Строка - -// * Количество - Число - -// * ПрепятствующиеУдалению - см. НайтиПрепятствующиеУдалению -// * ИнформацияОбОшибке - ИнформацияОбОшибке - -// * Успех - Булево - -// -Функция УдалитьСсылку(ПараметрыВыполнения, Ссылка) - Результат = Новый Структура; // Результат обрабатывается в ЗарегистрироватьРезультатУдаления(). - Результат.Вставить("Успех", Ложь); - Результат.Вставить("ИнформацияОбОшибке", Неопределено); - Результат.Вставить("ПрепятствующиеУдалению", Неопределено); - Результат.Вставить("Количество", 0); - Результат.Вставить("Сообщения", Неопределено); +Процедура УдалитьПомеченныеОбъектыКонкурентно(УдаляемыеОбъекты, ПараметрыУдаления) - Информация = СформироватьИнформациюОТипах(ПараметрыВыполнения, ТипЗнч(Ссылка)); + СведенияОМетаданных = СведенияОМетаданных(ПараметрыУдаления, УдаляемыеОбъекты); + УдаляемыеОбъекты = УдаляемыеОбъекты(УдаляемыеОбъекты, СведенияОМетаданных); + РезультатОбработки = ОбработатьУдаляемыеОбъекты(ПараметрыУдаления, УдаляемыеОбъекты, СведенияОМетаданных); + + ОтразитьМестаИспользования(ПараметрыУдаления, РезультатОбработки.МестаИспользования); + ОтразитьНеУдаленные(ПараметрыУдаления, РезультатОбработки.НеудаленныеОбъекты); + ПараметрыУдаления.Удаленные = Новый Массив(Новый ФиксированныйМассив(РезультатОбработки.УдаленныеОбъекты)); +КонецПроцедуры + +#Область ПреобразованиеКФорматуРезультата + +// Параметры: +// ПараметрыУдаления - см. ПараметрыУдаления +// НеУдаленные - см. РезультатОбработки +// +Процедура ОтразитьНеУдаленные(ПараметрыУдаления, НеУдаленные) + Если Не (ПараметрыУдаления.Свойство("ИнформацияОТипах")) Тогда + ПараметрыУдаления.Вставить("ИнформацияОТипах", Новый Соответствие); + КонецЕсли; + + Для Каждого Элемент Из НеУдаленные Цикл + Если Элемент = Неопределено Тогда + Продолжить; + КонецЕсли; + + ПараметрыУдаления.Неудаленные.Добавить(Элемент.УдаляемыйСсылка); + Если Элемент.РезультатУдаления <> КодыРезультатаУдаления().НеПомеченНаУдаление Тогда + РегистрыСведений.НеудаленныеОбъекты.Добавить(Элемент.УдаляемыйСсылка); + КонецЕсли; + + Если Элемент.РезультатУдаления = КодыРезультатаУдаления().ОшибкаПриУдалении Тогда + Причина = ПараметрыУдаления.ПрепятствующиеУдалению.Добавить(); + Причина.УдаляемыйСсылка = Элемент.УдаляемыйСсылка; + Причина.ОписаниеОшибки = КраткоеПредставлениеОшибки(Элемент.ИнформацияОбОшибке) + Элемент.Сообщения; + Причина.ПодробноеОписаниеОшибки = ПодробноеПредставлениеОшибки(Элемент.ИнформацияОбОшибке); + ИначеЕсли Элемент.РезультатУдаления = КодыРезультатаУдаления().НеПомеченНаУдаление Тогда + Причина = ПараметрыУдаления.ПрепятствующиеУдалению.Добавить(); + Причина.УдаляемыйСсылка = Элемент.УдаляемыйСсылка; + Причина.ОписаниеОшибки = НСтр("ru='Удаляемый объект не помечен на удаление'"); + КонецЕсли; + + СформироватьИнформациюОТипах(ПараметрыУдаления, ТипЗнч(Элемент.УдаляемыйСсылка)) + КонецЦикла; + +КонецПроцедуры + +Процедура ОтразитьМестаИспользования(ПараметрыУдаления, МестаИспользования) + ПрепятствующиеУдалению = ПараметрыУдаления.ПрепятствующиеУдалению; + + Для Каждого СведенияОМестеИспользования Из МестаИспользования Цикл + Если ОбъектУдален(СведенияОМестеИспользования.МестоИспользования) Тогда + Продолжить; + КонецЕсли; + + Причина = ПрепятствующиеУдалению.Добавить(); + Причина.УдаляемыйСсылка = СведенияОМестеИспользования.УдаляемыйСсылка; + Причина.МестоИспользования = СведенияОМестеИспользования.МестоИспользования; + Причина.Метаданные = СведенияОМестеИспользования.Метаданные; + КонецЦикла; +КонецПроцедуры +#КонецОбласти + +#Область УдалениеОбъектов + +// Параметры: +// ПараметрыУдаления - см. ПараметрыУдаления +// УдаляемыеОбъекты - см. УдаляемыеОбъекты +// СведенияОМетаданных - см. СведенияОМетаданных +// +// Возвращаемое значение: +// см. РезультатОбработки +// +Функция ОбработатьУдаляемыеОбъекты(ПараметрыУдаления, УдаляемыеОбъекты, СведенияОМетаданных) + + РезультатыУдаления = РезультатОбработки(); + Пакет = ПакетУдаляемыхОбъектов(); + ОбъектыСЗапретомУдаления = ПакетУдаляемыхОбъектов(); + + Для Каждого ЭлементОчереди Из УдаляемыеОбъекты Цикл + Если Пакет.Найти(ЭлементОчереди.УдаляемыйСсылка,"УдаляемыйСсылка") <> Неопределено Тогда + Продолжить; + КонецЕсли; + + ЭлементОчередиВПакете = ЭлементОчередиВПакет(ЭлементОчереди, СведенияОМетаданных, Пакет); + + Если ЗапрещенаОбработкаЭлемента(ЭлементОчередиВПакете) Тогда + ОбъектыСЗапретомУдаления = ОбъединениеТаблиц( + ОбъектыСЗапретомУдаления, + ЭлементОчередиВПакете); + Иначе + Пакет = ОбъединениеТаблиц(Пакет, ЭлементОчередиВПакете, Истина); + КонецЕсли; + + Если Пакет.Количество() >= ПараметрыУдаления.РазмерПакета + ИЛИ УдаляемыеОбъекты.Индекс(ЭлементОчереди) = УдаляемыеОбъекты.Количество()-1 Тогда + + РезультатОбработкиПакета = ОбработатьПакет(ПараметрыУдаления, Пакет); + РезультатыУдаления = ОбъединитьРезультатУдаления( + РезультатыУдаления, + РезультатОбработкиПакета); + + Пакет.Очистить(); + КонецЕсли; + КонецЦикла; + + РезультатыУдаления = ОбъединитьРезультатУдаления( + РезультатыУдаления, + РезультатУдаленияИзНеобработанногоПакета(ПараметрыУдаления, ОбъектыСЗапретомУдаления)); + + // Попробуем удалить объекты, образующие циклические ссылки в одной транзакции + Если РезультатыУдаления.НеудаленныеОбъекты.Количество() > 0 Тогда + Пакет = ЦиклическиеСсылки(РезультатыУдаления.НеудаленныеОбъекты, РезультатыУдаления.МестаИспользования); + РезультатОбработкиЦиклическихСсылок = ОбработатьПакетВОднойТранзакции(ПараметрыУдаления, Пакет); + Если РезультатОбработкиЦиклическихСсылок.УдаленныеОбъекты.Количество() > 0 Тогда + РезультатыУдаления = РезультатПослеУдаленияЦиклическихСсылок(РезультатыУдаления, РезультатОбработкиЦиклическихСсылок); + КонецЕсли; + КонецЕсли; + + Возврат РезультатыУдаления; +КонецФункции + +Функция РезультатУдаленияИзНеобработанногоПакета(ПараметрыУдаления, ОбъектыСЗапретомУдаления) + РезультатыУдаления = РезультатОбработки(); + + РезультатыУдаления.НеудаленныеОбъекты = ОбъединениеТаблиц( + РезультатыУдаления.НеудаленныеОбъекты, + ОбъектыСЗапретомУдаления); + + РезультатыУдаления.МестаИспользования = ОбъединениеТаблиц( + РезультатыУдаления.МестаИспользования, + ОставшиесяМестаИспользованияУдаляемогоОбъекта(ПараметрыУдаления, + МестаИспользованияЭлементовПакета(ПараметрыУдаления, ОбъектыСЗапретомУдаления))); + + Возврат РезультатыУдаления; +КонецФункции + +Функция ЗапрещенаОбработкаЭлемента(ЭлементОчередиВПакете) + Возврат (ЭлементОчередиВПакете.Количество() > 0 И ЭлементОчередиВПакете[ЭлементОчередиВПакете.Количество() + - 1].РезультатУдаления <> КодыРезультатаУдаления().Успешно); +КонецФункции + +Функция ЭлементОчередиВПакет(ЭлементОчереди, СведенияОМетаданных, Исключения) + Пакет = ПакетУдаляемыхОбъектов(); + РезультатУдаления = Неопределено; + + // Пропускаем если объект удален или был добавлен в пакет как подчиненный объект + Если НЕ ОбъектУдален(ЭлементОчереди.УдаляемыйСсылка) + И Исключения.Найти(ЭлементОчереди.УдаляемыйСсылка, "УдаляемыйСсылка") = Неопределено Тогда + + ИнформацияОМетаданных = СведенияОМетаданных.Найти(ЭлементОчереди.Тип, "Тип"); + ПометкаУдаления = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ЭлементОчереди.УдаляемыйСсылка, "ПометкаУдаления"); + ДочерниеПодчиненныеЭлементы = ?(ПометкаУдаления, + ДочерниеПодчиненныеЭлементы(ЭлементОчереди.УдаляемыйСсылка, ИнформацияОМетаданных), + ТаблицаДочернихПодчиненныхЭлементов()); + + Если НЕ ПометкаУдаления Тогда + РезультатУдаления = КодыРезультатаУдаления().НеПомеченНаУдаление; + ИначеЕсли РазрешеноУдалениеЭлемента(ДочерниеПодчиненныеЭлементы) Тогда + РезультатУдаления = КодыРезультатаУдаления().Успешно; + ДополнитьПакетДочернимиИПодчиненнымиЭлементами(Пакет, ДочерниеПодчиненныеЭлементы, Исключения); + Иначе + РезультатУдаления = КодыРезультатаУдаления().ЕстьДочерниеПодчиненныеЭлементыНепомеченныеНаУдаление; + КонецЕсли; + + ЭлементПакета = Пакет.Добавить(); + ЭлементПакета.УдаляемыйСсылка = ЭлементОчереди.УдаляемыйСсылка; + ЭлементПакета.ЕстьДочерниеОбъекты = ИнформацияОМетаданных.Иерархический; + ЭлементПакета.ЕстьПодчиненныеОбъекты = ИнформацияОМетаданных.ЕстьПодчиненныеОбъекты; + ЭлементПакета.ДочерниеПодчиненныеОбъекты = ДочерниеПодчиненныеЭлементы; + ЭлементПакета.РезультатУдаления = РезультатУдаления; + ЭлементПакета.ЭтоОсновнойОбъект = Истина; + КонецЕсли; + + Возврат Пакет; +КонецФункции + +Функция ОбработатьПакет(ПараметрыУдаления, Пакет) + РезультатОбработкиПакета = РезультатОбработки(); + + Если ЗначениеЗаполнено(ПараметрыУдаления.ИдентификаторЗадания) Тогда + Идентификатор = ПараметрыУдаления.ИдентификаторЗадания; + Иначе + Идентификатор = Новый УникальныйИдентификатор(); + КонецЕсли; + + ПередОбработкойПакета(Пакет, Идентификатор); + + МестаИспользования = МестаИспользованияЭлементовПакета(ПараметрыУдаления, Пакет); + + Для Каждого Элемент Из Пакет Цикл + РезультатУдаления = УдалитьЭлементПакета(ПараметрыУдаления, + Элемент, + МестаИспользования.Скопировать(Новый Структура("УдаляемыйСсылка", Элемент.УдаляемыйСсылка))); + ОтразитьРезультатУдаленияЭлементаПакета(ПараметрыУдаления, РезультатОбработкиПакета, Элемент, РезультатУдаления); + КонецЦикла; + + ПослеОбработкиПакета(ПараметрыУдаления, Идентификатор); + ОчиститьСсылкиНаУдаляемыеОбъекты(ПараметрыУдаления, РезультатОбработкиПакета); + + Возврат РезультатОбработкиПакета; +КонецФункции + +#Область ОчисткаСсылокНаУдаляемыеОбъекты + +// Параметры: +// ПараметрыУдаления - см. ПараметрыУдаления +// РезультатОбработкиПакета - см. РезультатОбработки +// +Процедура ОчиститьСсылкиНаУдаляемыеОбъекты(ПараметрыУдаления, РезультатОбработкиПакета) + Если Не ПараметрыУдаления.ОчищатьСсылкиВМестахИспользования + Или РезультатОбработкиПакета.МестаОчисткиСсылок.Количество() = 0 Тогда + + Возврат; + КонецЕсли; + + МестаИспользования = РезультатОбработкиПакета.МестаОчисткиСсылок; + МестаИспользования.Сортировать("МестоИспользования", Новый СравнениеЗначений()); + + УдаляемыеОбъектыВМестеИспользования = Новый Массив; + ПозицияТекущегоМестаИспользования = 0; + Для Каждого СведениеОМестеИспользования Из МестаИспользования Цикл + Если МестаИспользования[ПозицияТекущегоМестаИспользования].МестоИспользования + <> СведениеОМестеИспользования.МестоИспользования Тогда + + ОчиститьСсылкиВМестеИспользования(МестаИспользования[ПозицияТекущегоМестаИспользования].МестоИспользования, + УдаляемыеОбъектыВМестеИспользования); + ПозицияТекущегоМестаИспользования = МестаИспользования.Индекс(СведениеОМестеИспользования); + УдаляемыеОбъектыВМестеИспользования.Очистить(); + КонецЕсли; + + УдаляемыеОбъектыВМестеИспользования.Добавить(СведениеОМестеИспользования.УдаляемыйСсылка); + + Если МестаИспользования.Индекс(СведениеОМестеИспользования) = МестаИспользования.Количество() - 1 Тогда + ОчиститьСсылкиВМестеИспользования(СведениеОМестеИспользования.МестоИспользования, + УдаляемыеОбъектыВМестеИспользования); + КонецЕсли; + КонецЦикла; +КонецПроцедуры + +Процедура ОчиститьСсылкиВМестеИспользования(МестоИспользование, УдаляемыеОбъектыВМестеИспользования) + Если ОбъектУдален(МестоИспользование) Тогда + Возврат; + КонецЕсли; + + РедактируемыйОбъект = МестоИспользование.ПолучитьОбъект(); + МетаданныеОбъекта = РедактируемыйОбъект.Метаданные(); + + ОчиститьСсылкиВКоллекцииРеквизитов(РедактируемыйОбъект, МетаданныеОбъекта.СтандартныеРеквизиты, УдаляемыеОбъектыВМестеИспользования); + ОчиститьСсылкиВКоллекцииРеквизитов(РедактируемыйОбъект, МетаданныеОбъекта.Реквизиты, УдаляемыеОбъектыВМестеИспользования); + + Для Каждого ТабличнаяЧасть Из МетаданныеОбъекта.ТабличныеЧасти Цикл + ОчиститьСсылкиВТабличнойЧасти(РедактируемыйОбъект[ТабличнаяЧасть.Имя], ТабличнаяЧасть.Реквизиты, УдаляемыеОбъектыВМестеИспользования); + КонецЦикла; + + ЕстьСтандартныеТабличныеЧасти = ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(МетаданныеОбъекта, + "СтандартныеТабличныеЧасти"); + + СтандартныеТабличныеЧасти = ?(ЕстьСтандартныеТабличныеЧасти, + МетаданныеОбъекта.СтандартныеТабличныеЧасти, + Новый Массив); + + Для Каждого ТабличнаяЧасть Из СтандартныеТабличныеЧасти Цикл + ОчиститьСсылкиВТабличнойЧасти(РедактируемыйОбъект[ТабличнаяЧасть.Имя], ТабличнаяЧасть.СтандартныеРеквизиты, УдаляемыеОбъектыВМестеИспользования); + КонецЦикла; + + ЗаписатьРедактируемыйОбъект(МестоИспользование, РедактируемыйОбъект); +КонецПроцедуры + +Процедура ЗаписатьРедактируемыйОбъект(МестоИспользование, РедактируемыйОбъект) + РедактируемыйОбъект.ДополнительныеСвойства.Вставить("НеВыполнятьКонтрольУдаляемых"); + РедактируемыйОбъект.ОбменДанными.Загрузка = Истина; НачатьТранзакцию(); Попытка - ПопробоватьУдалитьСсылку(Ссылка, ПараметрыВыполнения, Информация, Результат); - Если Результат.Успех Тогда - ЗафиксироватьТранзакцию(); - Иначе - ОтменитьТранзакцию(); - КонецЕсли; + Блокировка = Новый БлокировкаДанных(); + Элемент = Блокировка.Добавить(МестоИспользование.Метаданные().ПолноеИмя()); + Элемент.УстановитьЗначение("Ссылка", МестоИспользование); + Блокировка.Заблокировать(); + + РедактируемыйОбъект.Записать(); + ЗафиксироватьТранзакцию(); Исключение ОтменитьТранзакцию(); - Результат.Успех = Ложь; - Результат.ИнформацияОбОшибке = ИнформацияОбОшибке(); + ЗаписатьПредупреждение(МестоИспользование, ИнформацияОбОшибке()); КонецПопытки; - Результат.Сообщения = ДлительныеОперации.СообщенияПользователю(Истина); +КонецПроцедуры + +Процедура ОчиститьСсылкиВТабличнойЧасти(РедактируемыйОбъект, КоллекцияРеквизитов, УдаляемыеОбъектыВМестеИспользования) + Для Каждого СтрокаТЧ Из РедактируемыйОбъект Цикл + ОчиститьСсылкиВКоллекцииРеквизитов(СтрокаТЧ, КоллекцияРеквизитов, УдаляемыеОбъектыВМестеИспользования); + КонецЦикла; +КонецПроцедуры + +Процедура ОчиститьСсылкиВКоллекцииРеквизитов(РедактируемыйОбъект, КоллекцияРеквизитов, УдаляемыеОбъектыВМестеИспользования) + Для Каждого Реквизит Из КоллекцияРеквизитов Цикл + Если УдаляемыеОбъектыВМестеИспользования.Найти(РедактируемыйОбъект[Реквизит.Имя]) <> Неопределено Тогда + РедактируемыйОбъект[Реквизит.Имя] = Реквизит.Тип.ПривестиЗначение(Неопределено); + КонецЕсли; + КонецЦикла; +КонецПроцедуры + +// Параметры: +// РезультатыУдаления - см. РезультатОбработки +// РезультатОбработкиЦиклическихСсылок - см. РезультатОбработки +// +// Возвращаемое значение: +// см. РезультатОбработки +// +Функция РезультатПослеУдаленияЦиклическихСсылок(РезультатыУдаления, РезультатОбработкиЦиклическихСсылок) + Результат = РезультатОбработки(); + Результат.УдаленныеОбъекты = Новый Массив(Новый ФиксированныйМассив(РезультатыУдаления.УдаленныеОбъекты)); + + Для Каждого Элемент Из РезультатыУдаления.НеудаленныеОбъекты Цикл + + Если РезультатОбработкиЦиклическихСсылок.УдаленныеОбъекты.Найти(Элемент.УдаляемыйСсылка) <> Неопределено Тогда + Результат.УдаленныеОбъекты.Добавить(Элемент.УдаляемыйСсылка); + Иначе + ЗаполнитьЗначенияСвойств(Результат.НеудаленныеОбъекты.Добавить(), Элемент); + Для Каждого МестоИспользования Из РезультатыУдаления.МестаИспользования.НайтиСтроки(Новый Структура("УдаляемыйСсылка", Элемент.УдаляемыйСсылка)) Цикл + ЗаполнитьЗначенияСвойств(Результат.МестаИспользования.Добавить(), МестоИспользования); + КонецЦикла; + КонецЕсли; + КонецЦикла; - Если Не Результат.Успех Тогда - ЗаписатьПредупреждение(Ссылка, Результат.ИнформацияОбОшибке); + Возврат Результат; +КонецФункции +#КонецОбласти + +#Область ФормированиеДочернихПодчиненныхЭлементов + +// Параметры: +// ЭлементОчереди - см. УдаляемыеОбъекты +// ИнформацияОМетаданных - см. СведенияОМетаданных +// +// Возвращаемое значение: +// см. ТаблицаДочернихПодчиненныхЭлементов +// +Функция ДочерниеПодчиненныеЭлементы(УдаляемыйСсылка, ИнформацияОМетаданных) + УстановитьПривилегированныйРежим(Истина); + ДочерниеПодчиненныеЭлементы = ТаблицаДочернихПодчиненныхЭлементов(); + + ПакетыЗапроса = Новый Массив; + + Если ИнформацияОМетаданных.Иерархический Тогда + ПакетыЗапроса.Добавить(ТекстЗапросаДочернихЭлементов(ИнформацияОМетаданных)); КонецЕсли; + Если ИнформацияОМетаданных.ОписаниеПодчиненныхОбъектов.Количество() > 0 Тогда + ПакетыЗапроса.Добавить(ТекстЗапросаПодчиненныхЭлементов(ИнформацияОМетаданных)); + КонецЕсли; + + Если ПакетыЗапроса.Количество() > 0 Тогда + ТекстЗапроса = СтрСоединить(ПакетыЗапроса, ОбщегоНазначения.РазделительПакетаЗапросов()); + Запрос = Новый Запрос(ТекстЗапроса); + Запрос.УстановитьПараметр("Родитель", УдаляемыйСсылка); + Запрос.УстановитьПараметр("Ссылка", УдаляемыйСсылка); + + РезультатПакета = Запрос.ВыполнитьПакет(); + + Если ИнформацияОМетаданных.ОписаниеПодчиненныхОбъектов.Количество() > 0 Тогда + ВыборкаПодчиненныхЭлементов = РезультатПакета[РезультатПакета.Количество()-1].Выбрать(); + ДочерниеПодчиненныеЭлементы = ОбъединениеТаблиц(ДочерниеПодчиненныеЭлементы, ПодчиненныеЭлементы(ВыборкаПодчиненныхЭлементов)); + КонецЕсли; + + Если ИнформацияОМетаданных.Иерархический Тогда + ВыборкаДочернихЭлементов = РезультатПакета[0].Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией); + ДочерниеПодчиненныеЭлементы = ОбъединениеТаблиц(ДочерниеПодчиненныеЭлементы, ДочерниеЭлементы(УдаляемыйСсылка, ВыборкаДочернихЭлементов)); + КонецЕсли; + КонецЕсли; + + Возврат ДочерниеПодчиненныеЭлементы; +КонецФункции + +// Рекурсивно формирует таблицу дочерних элементов. +// +// Параметры: +// РезультатПакета - ДеревоЗначений +// +// Возвращаемое значение: +// см. ТаблицаДочернихПодчиненныхЭлементов +// +Функция ДочерниеЭлементы(ОсновнойЭлемент, РезультатПакета) + Результат = ТаблицаДочернихПодчиненныхЭлементов(); + + Для Каждого СтрокаДерева Из РезультатПакета.Строки Цикл + + Если СтрокаДерева.Элемент = ОсновнойЭлемент Тогда + ДочерниеЭлементы = ДочерниеЭлементы(ОсновнойЭлемент, СтрокаДерева); + Результат = ОбъединениеТаблиц(Результат, ДочерниеЭлементы) + Иначе + ЗаписьРезультата = Результат.Добавить(); + ЗаполнитьЗначенияСвойств(ЗаписьРезультата, СтрокаДерева); + ЗаписьРезультата.ДочерниеЭлементы = ДочерниеЭлементы(ОсновнойЭлемент, СтрокаДерева); + Результат = ОбъединениеТаблиц(Результат, ЗаписьРезультата.ДочерниеЭлементы); + КонецЕсли; + + КонецЦикла; + Возврат Результат; КонецФункции -Процедура ПопробоватьУдалитьСсылку(Ссылка, ПараметрыВыполнения, Информация, Результат) - Блокировка = Новый БлокировкаДанных; - ЭлементБлокировки = Блокировка.Добавить(Информация.ПолноеИмя); - ЭлементБлокировки.УстановитьЗначение("Ссылка", Ссылка); - Блокировка.Заблокировать(); +// Параметры: +// РезультатПакета - ВыборкаИзРезультатаЗапроса +// +// Возвращаемое значение: +// см. ТаблицаДочернихПодчиненныхЭлементов +// +Функция ПодчиненныеЭлементы(РезультатПакета) + ДочерниеПодчиненныеЭлементы = ТаблицаДочернихПодчиненныхЭлементов(); + + Пока РезультатПакета.Следующий() Цикл + ЗаполнитьЗначенияСвойств(ДочерниеПодчиненныеЭлементы.Добавить(), РезультатПакета); + КонецЦикла; - Объект = Ссылка.ПолучитьОбъект(); - Если Объект = Неопределено Тогда - Результат.Успех = Истина; // Объект уже удален. - Возврат; - КонецЕсли; - Если Объект.ПометкаУдаления <> Истина Тогда - Результат.Успех = Ложь; - Результат.ИнформацияОбОшибке = НСтр("ru = 'Объект не помечен на удаление.'"); - Возврат; - КонецЕсли; + Возврат ДочерниеПодчиненныеЭлементы; +КонецФункции + +// Возвращаемое значение: +// ТаблицаЗначений : +// * Элемент - ЛюбаяСсылка +// * ДочерниеЭлементы - см. ТаблицаДочернихПодчиненныхЭлементов +// * ПометкаУдаления - Булево +// * ТипЭлемента - Строка +// +Функция ТаблицаДочернихПодчиненныхЭлементов() + ДочерниеПодчиненныеЭлементы = Новый ТаблицаЗначений(); + ДочерниеПодчиненныеЭлементы.Колонки.Добавить("Элемент"); + ДочерниеПодчиненныеЭлементы.Колонки.Добавить("ДочерниеЭлементы", Новый ОписаниеТипов("ТаблицаЗначений")); + ДочерниеПодчиненныеЭлементы.Колонки.Добавить("ПометкаУдаления", Новый ОписаниеТипов("Булево")); + ДочерниеПодчиненныеЭлементы.Колонки.Добавить("ТипЭлемента", Новый ОписаниеТипов("Строка")); + Возврат ДочерниеПодчиненныеЭлементы +КонецФункции + +Функция ТекстЗапросаДочернихЭлементов(ИнформацияОМетаданных) + ШаблонЗапроса = "ВЫБРАТЬ + | Таб.Ссылка КАК Элемент, + | Таб.ПометкаУдаления КАК ПометкаУдаления, + | ""Дочерний"" КАК ТипЭлемента + |ИЗ + | &ИмяТаблицы КАК ТАБ + |ГДЕ + | Таб.Ссылка В ИЕРАРХИИ (&Родитель) + |УПОРЯДОЧИТЬ ПО + | Элемент ИЕРАРХИЯ"; - ДочерниеИПодчиненныеОбъекты = НайтиДочерниеИПодчиненныеОбъекты(Ссылка, Информация); - Результат.Количество = Результат.Количество + ДочерниеИПодчиненныеОбъекты.Количество(); + Таблица = ИнформацияОМетаданных.Метаданные.ПолноеИмя(); + ТекстЗапроса = СтрЗаменить(ШаблонЗапроса, "&ИмяТаблицы", Таблица); - // Удаление невозможно, если есть хотя бы один дочерний или подчиненный объект, не помеченный на удаление. - // Эта предварительная проверка позволяет избежать отката длинной транзакции при удалении в иерархических таблицах. - ДочерниеИПодчиненныеОбъектыПомечены = Истина; - Для каждого ПодчиненныйОбъект Из ДочерниеИПодчиненныеОбъекты Цикл - Если Не ПодчиненныйОбъект.ПометкаУдаления Тогда - ДочерниеИПодчиненныеОбъектыПомечены = Ложь; + Возврат ТекстЗапроса; +КонецФункции + +// Параметры: +// ИнформацияОМетаданных - см. СведенияОМетаданных +// +// Возвращаемое значение: +// Строка +// +Функция ТекстЗапросаПодчиненныхЭлементов(ИнформацияОМетаданных) + ТекстыЗапросов = Новый Массив;// Массив из Строка + + ШаблонУсловияСвязи = "Таб.%1 = &Ссылка"; + ШаблонЗапроса = "ВЫБРАТЬ + | Таб.Ссылка КАК Элемент, + | Таб.ПометкаУдаления КАК ПометкаУдаления, + | ""Подчиненный"" КАК ТипЭлемента + |ИЗ + | &ИмяТаблицы КАК ТАБ + |ГДЕ + | Таб.Ссылка <> &Ссылка + | И &УсловиеСвязи"; + + УсловиеСвязи = "ЛОЖЬ"; + Для Каждого ПодчиненныйОбъект Из ИнформацияОМетаданных.ОписаниеПодчиненныхОбъектов Цикл + УсловиеСвязи = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонУсловияСвязи, ПодчиненныйОбъект.ИмяРеквизита); + ТекстЗапроса = СтрЗаменить(ШаблонЗапроса, "&ИмяТаблицы", ПодчиненныйОбъект.Метаданные.ПолноеИмя()); + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&УсловиеСвязи", УсловиеСвязи); + ТекстыЗапросов.Добавить(ТекстЗапроса); + КонецЦикла; + + Возврат СтрСоединить(ТекстыЗапросов, Символы.ПС + "ОБЪЕДИНИТЬ ВСЕ" + Символы.ПС); +КонецФункции +#КонецОбласти + +// Параметры: +// РезультатыУдаления - см. РезультатОбработки +// РезультатОбработки - см. РезультатОбработки +// +Функция ОбъединитьРезультатУдаления(РезультатыУдаления, РезультатОбработки) + Результат = РезультатОбработки(); + + Результат.НеудаленныеОбъекты = ОбъединениеТаблиц( + РезультатыУдаления.НеудаленныеОбъекты, + РезультатОбработки.НеудаленныеОбъекты); + Результат.МестаИспользования = ОбъединениеТаблиц( + РезультатыУдаления.МестаИспользования, + РезультатОбработки.МестаИспользования); + + Результат.УдаленныеОбъекты = УдалениеПомеченныхОбъектовСлужебный.ОбъединениеМассивов( + РезультатыУдаления.УдаленныеОбъекты, + РезультатОбработки.УдаленныеОбъекты); + + Возврат Результат; +КонецФункции + +// Параметры: +// Приемник - ТаблицаЗначений +// Источник - ТаблицаЗначений +// КолонкаПриемника - Строка +// КолонкаИсточника - Строка +// +// Возвращаемое значение: +// Булево +// +Функция ИсточникаПодмножествоПриемника(Приемник, Источник, КолонкаПриемника, КолонкаИсточника) + Результат = Истина; + + Для Каждого СведенияОМестеИспользования Из Источник Цикл + Если НЕ ОбъектУдален(СведенияОМестеИспользования.МестоИспользования) + И Приемник.Найти(СведенияОМестеИспользования[КолонкаИсточника], КолонкаПриемника) = Неопределено Тогда + Результат = Ложь; Прервать; КонецЕсли; КонецЦикла; - Если ДочерниеИПодчиненныеОбъектыПомечены Тогда - Объект.Удалить(); - КонецЕсли; + Возврат Результат; +КонецФункции + +Функция РазрешеноУдалениеЭлемента(ДополнительныеСведения) + Результат = Истина; - ПрепятствующиеУдалению = НайтиПрепятствующиеУдалению(Ссылка, ПараметрыВыполнения); - ИсключениеОбъектовДопускающихУдаление(ПрепятствующиеУдалению, ОбъектыДопускающиеУдаление()); - - Результат.ПрепятствующиеУдалению = НайтиПрепятствующиеУдалению(Ссылка, ПараметрыВыполнения); - Результат.Количество = Результат.Количество + Результат.ПрепятствующиеУдалению.Количество(); - Результат.Успех = (Результат.Количество = 0); - Если Не Результат.Успех Тогда - Результат.ИнформацияОбОшибке = НСтр("ru = 'Объект используется в других объектах программы.'"); - Если ТипЗнч(Результат.ПрепятствующиеУдалению) = Тип("ТаблицаЗначений") Тогда - Результат.ПрепятствующиеУдалению.Колонки[0].Имя = "УдаляемыйСсылка"; - Результат.ПрепятствующиеУдалению.Колонки[1].Имя = "ОбнаруженныйСсылка"; - Результат.ПрепятствующиеУдалению.Колонки[2].Имя = "ОбнаруженныйМетаданные"; - Если ДочерниеИПодчиненныеОбъектыПомечены Тогда - Для Каждого ПодчиненныйОбъект Из ДочерниеИПодчиненныеОбъекты Цикл - СтрокаТаблицы = Результат.ПрепятствующиеУдалению.Добавить(); - СтрокаТаблицы.УдаляемыйСсылка = Ссылка; - СтрокаТаблицы.ОбнаруженныйСсылка = ПодчиненныйОбъект.Ссылка; - КонецЦикла; - КонецЕсли; + Для Каждого Элемент Из ДополнительныеСведения Цикл + Если НЕ Элемент.ПометкаУдаления Тогда + Результат = Ложь; + Прервать; КонецЕсли; + КонецЦикла; + Возврат Результат; +КонецФункции + +Функция ОбъектУдален(УдаляемыйСсылка) + Возврат ЗначениеЗаполнено(УдаляемыйСсылка) + И (ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(УдаляемыйСсылка, "ВерсияДанных") + И НЕ ЗначениеЗаполнено(УдаляемыйСсылка.ВерсияДанных)); +КонецФункции + +// Параметры: +// ПараметрыУдаления - см. ПараметрыУдаления +// РезультатОбработкиПакета - см. РезультатОбработки +// Элемент - см. ПакетУдаляемыхОбъектов +// РезультатУдаления - см. УдалитьЭлементПакета +// +Процедура ОтразитьРезультатУдаленияЭлементаПакета(ПараметрыУдаления, РезультатОбработкиПакета, Элемент, РезультатУдаления) + Если РезультатУдаления.Код <> КодыРезультатаУдаления().Успешно Тогда + НеудаленныйЭлемент = РезультатОбработкиПакета.НеудаленныеОбъекты.Добавить(); + ЗаполнитьЗначенияСвойств(НеудаленныйЭлемент, Элемент); + НеудаленныйЭлемент.РезультатУдаления = РезультатУдаления.Код; + НеудаленныйЭлемент.ИнформацияОбОшибке = РезультатУдаления.ИнформацияОбОшибке; + НеудаленныйЭлемент.Сообщения = СообщенияПользователяВСтроку(РезультатУдаления.Сообщения); + Если Элемент.ЭтоОсновнойОбъект Тогда + ПараметрыУдаления.КоличествоОбработанных = ПараметрыУдаления.КоличествоОбработанных + 1; + КонецЕсли; + РезультатОбработкиПакета.МестаИспользования = ОбъединениеТаблиц( + РезультатОбработкиПакета.МестаИспользования, + РезультатУдаления.МестаИспользования); + Иначе + РезультатОбработкиПакета.УдаленныеОбъекты.Добавить(Элемент.УдаляемыйСсылка); + РезультатОбработкиПакета.МестаОчисткиСсылок = ОбъединениеТаблиц( + РезультатОбработкиПакета.МестаОчисткиСсылок, + РезультатУдаления.МестаИспользования); КонецЕсли; + + ОповеститьОПрогрессе(ПараметрыУдаления); КонецПроцедуры -// Поиск ссылок вложенных и подчиненных (иерархия и связь по владельцу). Выполняется до удаления. -Функция НайтиДочерниеИПодчиненныеОбъекты(Ссылка, Информация) +Функция СообщенияПользователяВСтроку(Сообщения) + Результат = ""; - ВложенныеИПодчиненныеОбъекты = Новый Массив; - Если Информация.Иерархический Тогда - Запрос = Новый Запрос(Информация.ТекстЗапросаПоИерархии); - Запрос.УстановитьПараметр("УдаляемыйСсылка", Ссылка); - ВложенныеИПодчиненныеОбъекты = Запрос.Выполнить().Выгрузить(); - КонецЕсли; - - Если Информация.ЕстьПодчиненные Тогда - Запрос = Новый Запрос(Информация.ТекстЗапросаПоПодчиненным); - Запрос.УстановитьПараметр("УдаляемыйСсылка", Ссылка); - ПодчиненныеОбъекты = Запрос.Выполнить().Выгрузить(); - Если ВложенныеИПодчиненныеОбъекты.Количество() > 0 Тогда - ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(ВложенныеИПодчиненныеОбъекты, ПодчиненныеОбъекты); - Иначе - ВложенныеИПодчиненныеОбъекты = ПодчиненныеОбъекты; - КонецЕсли; - КонецЕсли; - Возврат ВложенныеИПодчиненныеОбъекты; + Для Каждого Элемент Из Сообщения Цикл + Результат = Символы.ПС + Результат + Элемент.Текст; + КонецЦикла; + Возврат Результат; КонецФункции -// Поиск ссылок путем сканирования всех таблиц - выполняется после удаления. -// -// Параметры: -// Ссылка - ЛюбаяСсылка - -// ПараметрыВыполнения - Структура - -// -// Возвращаемое значение: -// ТаблицаЗначений - где: -// * Данные - ЛюбаяСсылка - -// * Метаданные - ОбъектМетаданных - -// * РазделениеДанных - Неопределено - -// * Ссылка - ЛюбаяСсылка - -// -Функция НайтиПрепятствующиеУдалению(Ссылка, ПараметрыВыполнения) +Функция ОбработатьПакетВОднойТранзакции(ПараметрыУдаления, Пакет) + Результат = РезультатОбработки(); - ПоискСсылок = Новый Массив; - ПоискСсылок.Добавить(Ссылка); - - ПрепятствующиеУдалению = НайтиПоСсылкам(ПоискСсылок); - - // Пропуск ссылок из границ последовательности. - Количество = ПрепятствующиеУдалению.Количество(); - ИмяКолонки = ПрепятствующиеУдалению.Колонки[1].Имя; - Для Номер = 1 По Количество Цикл - Индекс = Количество - Номер; - СтрокаТаблицы = ПрепятствующиеУдалению[Индекс]; - ПрепятствующийСсылка = СтрокаТаблицы[ИмяКолонки]; - Если ПрепятствующийСсылка = Ссылка - Или ДокументУжеУдален(ПараметрыВыполнения, ПрепятствующийСсылка) Тогда - ПрепятствующиеУдалению.Удалить(СтрокаТаблицы); - КонецЕсли; - КонецЦикла; - - Возврат ПрепятствующиеУдалению; - -КонецФункции - -// Поиск ссылки документа в базе данных. -Функция ДокументУжеУдален(ПараметрыВыполнения, Ссылка) - Если Ссылка = Неопределено Тогда - Возврат Ложь; // Не документ. - КонецЕсли; - Информация = СформироватьИнформациюОТипах(ПараметрыВыполнения, ТипЗнч(Ссылка)); - Если Информация.Вид <> "ДОКУМЕНТ" Тогда - Возврат Ложь; // Не документ. - КонецЕсли; - ТекстЗапроса = "ВЫБРАТЬ ПЕРВЫЕ 1 1 ИЗ #ИмяТаблицы ГДЕ Ссылка = &Ссылка"; - ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "#ИмяТаблицы", Информация.ПолноеИмя); - Запрос = Новый Запрос(ТекстЗапроса); - Запрос.УстановитьПараметр("Ссылка", Ссылка); - Возврат Запрос.Выполнить().Пустой(); -КонецФункции - -// Удаление циклов (кольцевых связей объектов). -Процедура УдалитьОставшиесяОбъектыВОднойТранзакции(ПараметрыВыполнения) - - // 0. Расчет объектов, допускающих удаления. - ДопускающиеУдаление = ОбъектыДопускающиеУдаление(); - - // 1. Объекты, которые невозможно удалить, получаются путем определения неразрешимых связей. - ОбъектыКоторыеНевозможноУдалить = Новый Массив; - ВложенныеНеразрешимыеСвязи = Новый Массив; - - Для Каждого Препятствующий Из ПараметрыВыполнения.ПрепятствующиеУдалению Цикл - - // 1.0. Обнаруженный тип может быть строкой в случае, когда препятствует удалению ошибка записи. - // потому исключать препятствующие объекты следует только в случае, когда это не ошибка. - Если Препятствующий.ОбнаруженныйТип <> Тип("Строка") Тогда - - // 1.1. Критерием для определения неразрешимых связей является тот факт, что объект, препятствующий удалению, - // не является регистром. В случае с регистрами предполагаем, что записи регистра будут удалены автоматически, - // при удалении объекта в его ведущем измерении. - Если Не ОбщегоНазначения.ЭтоОбъектСсылочногоТипа(Метаданные.НайтиПоТипу(Препятствующий.ОбнаруженныйТип)) Тогда - Продолжить; - КонецЕсли; - - // 1.2. Этот объект не должен быть допущенным к удалению объектом. - Если ДопускающиеУдаление.Найти(Препятствующий.ОбнаруженныйСсылка.Метаданные()) <> Неопределено Тогда - Продолжить; - КонецЕсли; - КонецЕсли; - - // 1.3. А также то, что объект, препятствующий удалению, не отмечен для удаления. - Если ПараметрыВыполнения.НеУдаленные.Найти(Препятствующий.ОбнаруженныйСсылка) = Неопределено - И ОбъектыКоторыеНевозможноУдалить.Найти(Препятствующий.УдаляемыйСсылка) = Неопределено Тогда - ОбъектыКоторыеНевозможноУдалить.Добавить(Препятствующий.УдаляемыйСсылка); - Найденные = ПараметрыВыполнения.ПрепятствующиеУдалению.НайтиСтроки(Новый Структура("ОбнаруженныйСсылка", Препятствующий.УдаляемыйСсылка)); - ВложенныеНеразрешимыеСвязи.Добавить(Найденные); - КонецЕсли; - КонецЦикла; - - // 1.3. Далее при помощи массива ВложенныеНеразрешимыеСвязи - // получаются неразрешимые подчиненные - "связи связей", "связи связей связей" и т.д... - Индекс = 0; - Пока Индекс < ВложенныеНеразрешимыеСвязи.Количество() Цикл - Найденные = ВложенныеНеразрешимыеСвязи[Индекс]; - Индекс = Индекс + 1; - Для Каждого Препятствующий Из Найденные Цикл - Если ОбъектыКоторыеНевозможноУдалить.Найти(Препятствующий.УдаляемыйСсылка) = Неопределено Тогда - ОбъектыКоторыеНевозможноУдалить.Добавить(Препятствующий.УдаляемыйСсылка); - Найденные = ПараметрыВыполнения.ПрепятствующиеУдалению.НайтиСтроки(Новый Структура("ОбнаруженныйСсылка", Препятствующий.УдаляемыйСсылка)); - ВложенныеНеразрешимыеСвязи.Добавить(Найденные); - КонецЕсли; - КонецЦикла; - КонецЦикла; - - // 2. Объекты, которые можно попробовать удалить в одной транзакции. - // = Массив удаляемых - Массив объектов, которые невозможно удалить. - УдаляемыеОбъекты = Новый Массив; - Для Каждого НеУдаленныйОбъект Из ПараметрыВыполнения.НеУдаленные Цикл - Если ОбъектыКоторыеНевозможноУдалить.Найти(НеУдаленныйОбъект) = Неопределено Тогда - УдаляемыеОбъекты.Добавить(НеУдаленныйОбъект); - КонецЕсли; - КонецЦикла; - - Количество = УдаляемыеОбъекты.Количество(); - Если Количество = 0 Тогда - Возврат; // Нет объектов для удаления. - КонецЕсли; - - // 3. Включение всех объектов в одну транзакцию и попытка удалить. - Успех = Ложь; НачатьТранзакцию(); Попытка - Для Номер = 1 По Количество Цикл - ОбратныйИндекс = Количество - Номер; - НеУдаленныйОбъект = УдаляемыеОбъекты[ОбратныйИндекс]; - - Информация = СформироватьИнформациюОТипах(ПараметрыВыполнения, ТипЗнч(НеУдаленныйОбъект)); - - Блокировка = Новый БлокировкаДанных; - ЭлементБлокировки = Блокировка.Добавить(Информация.ПолноеИмя); - ЭлементБлокировки.УстановитьЗначение("Ссылка", НеУдаленныйОбъект); + Для Каждого ЭлементПакета Из Пакет Цикл + Блокировка = Новый БлокировкаДанных(); + Элемент = Блокировка.Добавить(ЭлементПакета.УдаляемыйСсылка.Метаданные().ПолноеИмя()); + Элемент.УстановитьЗначение("Ссылка", ЭлементПакета.УдаляемыйСсылка); Блокировка.Заблокировать(); - Объект = НеУдаленныйОбъект.ПолучитьОбъект(); - Если Объект = Неопределено Тогда // Объект уже удален. - Продолжить; + Объект = ЭлементПакета.УдаляемыйСсылка.ПолучитьОбъект(); + Если Объект <> Неопределено Тогда + УдалитьОбъект(Объект); + Результат.УдаленныеОбъекты.Добавить(ЭлементПакета.УдаляемыйСсылка); КонецЕсли; - Если Объект.ПометкаУдаления <> Истина Тогда - УдаляемыеОбъекты.Удалить(ОбратныйИндекс); // Объект уже не помечен на удаление. - Продолжить; - КонецЕсли; - - Объект.Удалить(); КонецЦикла; - НеУдаленныйОбъект = Неопределено; - Если УдаляемыеОбъекты.Количество() > 0 Тогда - ПрепятствующиеУдалению = НайтиПоСсылкам(УдаляемыеОбъекты); - ИсключениеОбъектовДопускающихУдаление(ПрепятствующиеУдалению, ДопускающиеУдаление); - - // Исключение объектов, ранее удаленных в этой же транзакции. - ИмяКолонки = ПрепятствующиеУдалению.Колонки[1].Имя; - Для Каждого НеУдаленныйОбъект Из УдаляемыеОбъекты Цикл - ПоискНеПрепятствующих = Новый Структура(ИмяКолонки, НеУдаленныйОбъект); - НеПрепятствующие = ПрепятствующиеУдалению.НайтиСтроки(ПоискНеПрепятствующих); - Для Каждого Препятствующий Из НеПрепятствующие Цикл - ПрепятствующиеУдалению.Удалить(Препятствующий); - КонецЦикла; - КонецЦикла; - - Если ПрепятствующиеУдалению.Количество() = 0 Тогда - Успех = Истина; - КонецЕсли; + ЗафиксироватьТранзакцию(); + Исключение + // Не смогли удалить ни один объект + // Будем отображать ошибку, произошедшую на предыдущем этапе удаления + ОтменитьТранзакцию(); + Результат.НеудаленныеОбъекты = Пакет.Скопировать(); + КонецПопытки; + + Возврат Результат; +КонецФункции + +// Возвращаемое значение: +// Структура: +// * Код - Строка +// * МестаИспользования - см. МестаИспользованияЭлементовПакета +// * Сообщения - Массив из СообщениеПользователю +// * ИнформацияОбОшибке - Неопределено +// - ИнформацияОбОшибке +// +Функция УдалитьЭлементПакета(ПараметрыУдаления, Элемент, МестаИспользования) + Результат = Новый Структура(); + Результат.Вставить("Код", КодыРезультатаУдаления().Успешно); + Результат.Вставить("МестаИспользования", МестаИспользования()); + Результат.Вставить("Сообщения", Новый ФиксированныйМассив(Новый Массив)); + Результат.Вставить("ИнформацияОбОшибке"); + + // Объект был удален ранее + Если ОбъектУдален(Элемент.УдаляемыйСсылка) Тогда + Возврат Результат; + КонецЕсли; + + // У элемента есть неудаленные дочерние или подчиненные объекты + Для Каждого ДочернийПодчиненныйЭлемент Из Элемент.ДочерниеПодчиненныеОбъекты Цикл + Если НЕ ОбъектУдален(ДочернийПодчиненныйЭлемент.Элемент) Тогда + Результат.Код = КодыРезультатаУдаления().ЕстьМестаИспользования; + Результат.МестаИспользования = ОставшиесяМестаИспользованияУдаляемогоОбъекта(ПараметрыУдаления, МестаИспользования); + Возврат Результат; КонецЕсли; + КонецЦикла; - Если Успех Тогда + МестаОчисткиСсылок = МестаОчисткиСсылок(ПараметрыУдаления, МестаИспользования); + + Объект = Элемент.УдаляемыйСсылка.ПолучитьОбъект(); + НачатьТранзакцию(); + Попытка + Блокировка = Новый БлокировкаДанных(); + ЭлементБлокировки = Блокировка.Добавить(Объект.Метаданные().ПолноеИмя()); + ЭлементБлокировки.УстановитьЗначение("Ссылка", Объект.Ссылка); + Блокировка.Заблокировать(); + + УдалитьОбъект(Объект); + ОставшиесяМестаИспользования = ОставшиесяМестаИспользованияУдаляемогоОбъекта(ПараметрыУдаления, + МестаИспользования); + Если ОставшиесяМестаИспользования.Количество() = 0 + Или МестаОчисткиСсылок.Количество() = ОставшиесяМестаИспользования.Количество() Тогда + + Результат.МестаИспользования = МестаОчисткиСсылок; ЗафиксироватьТранзакцию(); Иначе + Результат.МестаИспользования = ОставшиесяМестаИспользования; + Результат.Код = КодыРезультатаУдаления().ЕстьМестаИспользования; ОтменитьТранзакцию(); КонецЕсли; - Исключение ОтменитьТранзакцию(); - Успех = Ложь; - ЗаписатьПредупреждение(НеУдаленныйОбъект, ИнформацияОбОшибке()); + ИнформацияОбОшибке = ИнформацияОбОшибке(); + Результат.Сообщения = ДлительныеОперации.СообщенияПользователю(Истина); + Результат.ИнформацияОбОшибке = ИнформацияОбОшибке; + Результат.Код = КодыРезультатаУдаления().ОшибкаПриУдалении; КонецПопытки; - - // 4. Регистрация результата (если успех). - Если Успех Тогда - Для Каждого НеУдаленныйОбъект Из УдаляемыеОбъекты Цикл - // Регистрация ссылки в коллекции удаленных. - Если ПараметрыВыполнения.Удаленные.Найти(НеУдаленныйОбъект) = Неопределено Тогда - ПараметрыВыполнения.Удаленные.Добавить(НеУдаленныйОбъект); - КонецЕсли; - - // Удаление ссылки из коллекции не удаленных. - Индекс = ПараметрыВыполнения.НеУдаленные.Найти(НеУдаленныйОбъект); - Если Индекс <> Неопределено Тогда - ПараметрыВыполнения.НеУдаленные.Удалить(Индекс); - КонецЕсли; - - // Очистка информации о связях "от" удаленных объектов. - Найденные = ПараметрыВыполнения.ПрепятствующиеУдалению.НайтиСтроки(Новый Структура("УдаляемыйСсылка", НеУдаленныйОбъект)); - Для Каждого Препятствующий Из Найденные Цикл - ПараметрыВыполнения.ПрепятствующиеУдалению.Удалить(Препятствующий); - КонецЦикла; - - // Очистка информации о связях "к" удаленным объектам. - Найденные = ПараметрыВыполнения.ПрепятствующиеУдалению.НайтиСтроки(Новый Структура("ОбнаруженныйСсылка", НеУдаленныйОбъект)); - Для Каждого Препятствующий Из Найденные Цикл - ПараметрыВыполнения.ПрепятствующиеУдалению.Удалить(Препятствующий); - КонецЦикла; - КонецЦикла; - КонецЕсли; + + Возврат Результат; +КонецФункции + +Процедура УдалитьОбъект(Объект) + Объект.ДополнительныеСвойства.Вставить("НеВыполнятьКонтрольУдаляемых"); + Объект.Удалить(); КонецПроцедуры -// Очистка причин неудаления объектов от исключений поиска ссылок. -// Применяется при оперативном удалении помеченных для того, чтобы удалить из результата "дублирующие" связи. -Процедура ОчиститьСвязиОтИсключенийПоискаСсылок(ПараметрыВыполнения) - Если Не ПараметрыВыполнения.Свойство("ИсключенияПоискаСсылок") Тогда - ПараметрыВыполнения.Вставить("ИсключенияПоискаСсылок", ОбщегоНазначения.ИсключенияПоискаСсылок()); - КонецЕсли; - Если Не ПараметрыВыполнения.Свойство("ИсключающиеПравила") Тогда - ПараметрыВыполнения.Вставить("ИсключающиеПравила", Новый Соответствие); // Кэш правил исключений поиска. - КонецЕсли; - - ОбъектыСНеИсключениями = Новый Соответствие; - ОбъектыТолькоСИсключениями = Новый Соответствие; - - // Определение "спама". - ПрепятствующиеУдалению = ПараметрыВыполнения.ПрепятствующиеУдалению; - ПрепятствующиеУдалению.Колонки.Добавить("ЭтоИсключение", Новый ОписаниеТипов("Булево")); - Для Каждого Причина Из ПрепятствующиеУдалению Цикл - Если Причина.ОбнаруженныйТип <> Тип("Строка")Тогда - ОбнаруженныйМетаданные = Метаданные.НайтиПоТипу(Причина.ОбнаруженныйТип); - Причина.ЭтоИсключение = СвязьВИсключенияхПоискаСсылок(ПараметрыВыполнения, ОбнаруженныйМетаданные, Причина); - КонецЕсли; - Если Причина.ЭтоИсключение Тогда - Если ОбъектыСНеИсключениями[Причина.УдаляемыйСсылка] = Неопределено Тогда - ОбъектыТолькоСИсключениями.Вставить(Причина.УдаляемыйСсылка, Истина); - КонецЕсли; - Иначе - ОбъектыСНеИсключениями.Вставить(Причина.УдаляемыйСсылка, Истина); - ОбъектыТолькоСИсключениями.Удалить(Причина.УдаляемыйСсылка); - КонецЕсли; +Функция ЗаписьСуществует(СведенияОМестеИспользования) + МенеджерРегистра = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(СведенияОМестеИспользования.Метаданные.ПолноеИмя());// РегистрСведенийМенеджер, РегистрБухгалтерииМенеджер, РегистрРасчетаМенеджер, РегистрНакопленияМенеджер + Набор = МенеджерРегистра.СоздатьНаборЗаписей(); + Для Сч = 0 По Набор.Отбор.Количество() - 1 Цикл + ЭлементОтбора = Набор.Отбор[Сч]; + ЭлементОтбора.Установить(СведенияОМестеИспользования.МестоИспользования[ЭлементОтбора.Имя]); КонецЦикла; - - // Если кроме "спама" ничего не осталось, - // то это ситуация, когда разработчик забыл добавить авто-очистку при удалении объекта. - // В таких редких случаях вместо вывода пустого списка причин, можно вывести "спам". - Для Каждого КлючИЗначение Из ОбъектыТолькоСИсключениями Цикл - Найденные = ПрепятствующиеУдалению.НайтиСтроки(Новый Структура("УдаляемыйСсылка", КлючИЗначение.Ключ)); - Для Каждого Причина Из Найденные Цикл - Причина.ЭтоИсключение = Ложь; - КонецЦикла; - КонецЦикла; - - // Удаление "спама". - Найденные = ПрепятствующиеУдалению.НайтиСтроки(Новый Структура("ЭтоИсключение", Истина)); - Для Каждого Причина Из Найденные Цикл - ПрепятствующиеУдалению.Удалить(Причина); - КонецЦикла; - - ПрепятствующиеУдалению.Колонки.Удалить("ЭтоИсключение"); - ПараметрыВыполнения.Удалить("ИсключенияПоискаСсылок"); - ПараметрыВыполнения.Удалить("ИсключающиеПравила"); -КонецПроцедуры + Набор.Прочитать(); + Возврат Набор.Количество() > 0; +КонецФункции -// Регистрация результата удаления и заполнение коллекции ПовторноУдаляемые. -// // Параметры: -// ПараметрыВыполнения - Структура - где: -// * Удаленные - Массив - -// * ПовторноУдаляемые - Массив - -// Ссылка - ЛюбаяСсылка - -// Результат - см. УдалитьСсылку -// ИмяКоллекции - Строка - +// ПараметрыУдаления - Структура +// Пакет - см. ПакетУдаляемыхОбъектов +// +// Возвращаемое значение: +// см. МестаИспользования // -Процедура ЗарегистрироватьРезультатУдаления(ПараметрыВыполнения, Ссылка, Результат, ИмяКоллекции) - // Результат формируется в УдалитьСсылку. - Если Результат.Успех Тогда - // Регистрация ссылки в коллекции удаленных. - ПараметрыВыполнения.Удаленные.Добавить(Ссылка); - - // Исключение удаленного объекта из причин неудаления других объектов. Поиск. - НеактуальныеПричины = ПараметрыВыполнения.ПрепятствующиеУдалению.НайтиСтроки(Новый Структура("ОбнаруженныйСсылка", Ссылка)); - Для Каждого Причина Из НеактуальныеПричины Цикл - // Удаление причины неудаления другого объекта. - УдаляемыйСсылка = Причина.УдаляемыйСсылка; - ПараметрыВыполнения.ПрепятствующиеУдалению.Удалить(Причина); - // Поиск других причин неудаления другого объекта. - Если ПараметрыВыполнения.ПрепятствующиеУдалению.Найти(УдаляемыйСсылка, "УдаляемыйСсылка") = Неопределено Тогда - // Устранены все причины неудаления другого объекта. - // Регистрация другого объекта для повторного удаления. - ПараметрыВыполнения.ПовторноУдаляемые.Добавить(УдаляемыйСсылка); - Если ИмяКоллекции = "ПовторноУдаляемые" И ПараметрыВыполнения.Интерактивное Тогда - ПараметрыВыполнения.Всего = ПараметрыВыполнения.Всего + 1; - КонецЕсли; - // Очистка записи о другом объекте из коллекции "НеУдаленные". - Индекс = ПараметрыВыполнения.НеУдаленные.Найти(УдаляемыйСсылка); - Если Индекс <> Неопределено Тогда - ПараметрыВыполнения.НеУдаленные.Удалить(Индекс); - КонецЕсли; - КонецЕсли; - КонецЦикла; - Возврат; - КонецЕсли; - - ПараметрыВыполнения.НеУдаленные.Добавить(Ссылка); +Функция МестаИспользованияЭлементовПакета(ПараметрыУдаления, Пакет) + Результат = МестаИспользования(); - Если ТипЗнч(Результат.ИнформацияОбОшибке) = Тип("ИнформацияОбОшибке") - Или Результат.ПрепятствующиеУдалению = Неопределено Тогда // Текст ошибки - Если ТипЗнч(Результат.ИнформацияОбОшибке) = Тип("ИнформацияОбОшибке") Тогда - ТекстОшибки = КраткоеПредставлениеОшибки(Результат.ИнформацияОбОшибке); - Подробно = ПодробноеПредставлениеОшибки(Результат.ИнформацияОбОшибке); - Иначе - ТекстОшибки = Результат.ИнформацияОбОшибке; - Подробно = ""; + УстановитьПривилегированныйРежим(Истина); + ПараметрыПоискаМестИспользования = ОбщегоНазначения.ПараметрыПоискаМестИспользования(); + ПараметрыПоискаМестИспользования.ОтменаИсключенийПоискаСсылок = ОтменаИсключенийПоискаСсылокПриУдаленииОбъектов(); + МестаИспользования = ОбщегоНазначения.МестаИспользования(Пакет.ВыгрузитьКолонку("УдаляемыйСсылка"),,ПараметрыПоискаМестИспользования); + МестаИспользования.Колонки[0].Имя = "УдаляемыйСсылка"; + МестаИспользования.Колонки[1].Имя = "МестоИспользования"; + МестаИспользования.Колонки[2].Имя = "Метаданные"; + + ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(МестаИспользования, Результат); + + Возврат Результат; +КонецФункции + +// Параметры: +// Пакет - см. ПакетУдаляемыхОбъектов +// ДочерниеПодчиненныеЭлементы - см. ДочерниеПодчиненныеЭлементы +// +Процедура ДополнитьПакетДочернимиИПодчиненнымиЭлементами(Пакет, ДочерниеПодчиненныеЭлементы, Исключения) + Для Каждого ОписаниеЭлемента Из ДочерниеПодчиненныеЭлементы Цикл + Если Пакет.Найти(ОписаниеЭлемента.Элемент, "УдаляемыйСсылка") <> Неопределено + ИЛИ Исключения.Найти(ОписаниеЭлемента.Элемент, "УдаляемыйСсылка") <> Неопределено Тогда + + Продолжить; КонецЕсли; - Для Каждого СообщениеОтОбъекта Из Результат.Сообщения Цикл - ТекстОшибки = СокрП(ТекстОшибки + Символы.ПС + Символы.ПС + СокрЛ(СообщениеОтОбъекта.Текст)); - Подробно = СокрП(Подробно + Символы.ПС + Символы.ПС + СокрЛ(СообщениеОтОбъекта.Текст)); - КонецЦикла; - Причина = ПараметрыВыполнения.ПрепятствующиеУдалению.Добавить(); - Причина.УдаляемыйСсылка = Ссылка; - Причина.УдаляемыйТип = ТипЗнч(Причина.УдаляемыйСсылка); - Причина.ОбнаруженныйСсылка = ТекстОшибки; - Причина.ОбнаруженныйТип = Тип("Строка"); - Причина.Подробно = Подробно; - СформироватьИнформациюОТипах(ПараметрыВыполнения, Причина.УдаляемыйТип); - Иначе // Регистрация связей (причин не удаления) для вывода пользователю. - Для Каждого СтрокаТаблицы Из Результат.ПрепятствующиеУдалению Цикл - ЗаписатьПричинуВРезультат(ПараметрыВыполнения, СтрокаТаблицы); - КонецЦикла; + + ЭлементПакета = Пакет.Добавить(); + ЭлементПакета.УдаляемыйСсылка = ОписаниеЭлемента.Элемент; + ЭлементПакета.ДочерниеПодчиненныеОбъекты = ОписаниеЭлемента.ДочерниеЭлементы; + КонецЦикла; +КонецПроцедуры + +// Параметры: +// ПараметрыУдаления - см. ПараметрыУдаления +// +Процедура ОповеститьОПрогрессе(ПараметрыВыполнения) + ПараметрыВыполнения.Всего = ПараметрыВыполнения.КоличествоУдаляемых; + ОтметитьПрогрессОбходаКоллекции(ПараметрыВыполнения, "ПользовательскиеОбъекты"); +КонецПроцедуры +#КонецОбласти + +#Область ФильтрыКоллекций + +// Параметры: +// Пакет - см. ПакетУдаляемыхОбъектов +// МестаИспользования - см. МестаИспользования +// +// Возвращаемое значение: +// см. ПакетУдаляемыхОбъектов +// +Функция ЦиклическиеСсылки(Пакет, МестаИспользования) + Результат = СсылкиТолькоНаЭлементыВнутриПакета(Пакет, МестаИспользования); + + КоличествоВПакете = Пакет.Количество(); + Пока (Результат[0].Количество() <> КоличествоВПакете) Цикл + КоличествоВПакете = Результат[0].Количество(); + Результат = СсылкиТолькоНаЭлементыВнутриПакета(Результат[0], Результат[1]); + КонецЦикла; + + Возврат Результат[0]; +КонецФункции + +// Параметры: +// ПараметрыУдаления - Структура: +// * РазмерПакета - Число +// * ИсключенияПоискаСсылок - Массив +// МестаИспользования - см. МестаИспользованияЭлементовПакета +// +// Возвращаемое значение: +// см. МестаИспользования +// +Функция ОставшиесяМестаИспользованияУдаляемогоОбъекта(ПараметрыУдаления, МестаИспользования) + Результат = МестаИспользования.СкопироватьКолонки(); + + Для Каждого СведенияОМестеИспользования Из МестаИспользования Цикл + ЭтоСсылка = СведенияОМестеИспользования.МестоИспользования <> Неопределено + И ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(СведенияОМестеИспользования.МестоИспользования, "ВерсияДанных"); + + ЭтоКонстанта = Метаданные.Константы.Содержит(СведенияОМестеИспользования.Метаданные); + + Если ЭтоСсылка + И НЕ ОбъектУдален(СведенияОМестеИспользования.МестоИспользования) + И НЕ СведенияОМестеИспользования.ЭтоСлужебныеДанные Тогда + ЗаполнитьЗначенияСвойств(Результат.Добавить(), СведенияОМестеИспользования); + КонецЕсли; + + Если НЕ ЭтоСсылка + И НЕ ЭтоКонстанта + И ЗаписьСуществует(СведенияОМестеИспользования) + И НЕ СведенияОМестеИспользования.ЭтоСлужебныеДанные Тогда + ЗаполнитьЗначенияСвойств(Результат.Добавить(), СведенияОМестеИспользования); + КонецЕсли; + + Если НЕ ЭтоСсылка + И ЭтоКонстанта + И СведенияОМестеИспользования.МестоИспользования = Неопределено Тогда + ЗаполнитьЗначенияСвойств(Результат.Добавить(), СведенияОМестеИспользования); + КонецЕсли; + КонецЦикла; + + Возврат Результат; +КонецФункции + +Функция МестаОчисткиСсылок(ПараметрыУдаления, МестаИспользования) + Результат = МестаИспользования(); + + Если Не ПараметрыУдаления.ОчищатьСсылкиВМестахИспользования Тогда + Возврат Результат; КонецЕсли; + МестаИспользования.Сортировать("Метаданные"); + Для Каждого СведенияОМестеИспользования Из МестаИспользования Цикл + + ТипМестаИспользования = ТипЗнч(СведенияОМестеИспользования.МестоИспользования); + ЭтоСсылка = ОбщегоНазначения.ЭтоСсылка(ТипМестаИспользования); + + Если ЭтоСсылка + И НЕ ОбъектУдален(СведенияОМестеИспользования.МестоИспользования) + И ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СведенияОМестеИспользования.МестоИспользования, "ПометкаУдаления") + И Не СведенияОМестеИспользования.ЭтоСлужебныеДанные Тогда + + ЗаполнитьЗначенияСвойств(Результат.Добавить(), СведенияОМестеИспользования); + КонецЕсли; + КонецЦикла; + + Возврат Результат; +КонецФункции + +Функция СсылкиТолькоНаЭлементыВнутриПакета(Пакет, МестаИспользования) + Результат = Новый Массив; + НовыйПакет = ПакетУдаляемыхОбъектов(); + МестаИспользованияКандидатов = МестаИспользования(); + + Для Каждого Элемент Из Пакет Цикл + Если Элемент.РезультатУдаления <> КодыРезультатаУдаления().ЕстьМестаИспользования + И Элемент.РезультатУдаления <> КодыРезультатаУдаления().ЕстьДочерниеПодчиненныеЭлементы Тогда + Продолжить; + КонецЕсли; + + МестаИспользованияЭлемента = МестаИспользования.Скопировать(Новый Структура("УдаляемыйСсылка", Элемент.УдаляемыйСсылка), "МестоИспользования"); + Если ИсточникаПодмножествоПриемника(Пакет, МестаИспользованияЭлемента, "УдаляемыйСсылка", "МестоИспользования") ИЛИ МестаИспользования.Количество() = 0 Тогда + ЗаполнитьЗначенияСвойств(НовыйПакет.Добавить(), Элемент); + + Для Каждого Элемент Из МестаИспользованияЭлемента Цикл + ЗаполнитьЗначенияСвойств(МестаИспользованияКандидатов.Добавить(), Элемент); + КонецЦикла; + КонецЕсли; + КонецЦикла; + + Результат.Добавить(НовыйПакет); + Результат.Добавить(МестаИспользования); + + Возврат Результат; +КонецФункции + +#КонецОбласти + +#Область ОбработчикиСобытийКонкурентногоОбновления + +Процедура ПослеОбработкиПакета(ПараметрыУдаления, Идентификатор) + УдалениеПомеченныхОбъектовСлужебный.СнятьБлокировкуИспользованияУдаляемыхОбъектов(Идентификатор); + ПараметрыСеанса.ВыполняетсяУдалениеОбъектов = Ложь; +КонецПроцедуры + +Процедура ПередОбработкойПакета(Пакет, Идентификатор) + ПараметрыСеанса.ВыполняетсяУдалениеОбъектов = Истина; + УдалениеПомеченныхОбъектовСлужебный.УстановитьБлокировкуИспользованияУдаляемыхОбъектов(Пакет, Идентификатор); +КонецПроцедуры + +#КонецОбласти + +#Область Конструкторы + +// Параметры: +// УдаляемыеОбъекты - Массив из ЛюбаяСсылка +// Параметры - Структура +// +// Возвращаемое значение: +// Структура: +// * КоличествоНеудаленных - Число +// * ПовторноУдаляемые - Массив из ЛюбаяСсылка +// * ПрепятствующиеУдалению - ТаблицаЗначений: +// ** УдаляемыйСсылка - ЛюбаяСсылка +// ** МестоИспользования - ЛюбаяСсылка +// ** ОбнаруженныйСтатус - Строка +// ** ПодробноеОписаниеОшибки - Строка +// ** ОписаниеОшибки - Строка +// * НеУдаленные - Массив +// * Удаленные - Массив +// * ПользовательскиеОбъекты - Массив +// * Монопольно - Булево +// * ОчищатьСсылкиВМестахИспользования - Булево +// * КешИнформацииОТипах - Соответствие +// * РазмерПакета - Число +// * ИсключенияПоискаСсылок - Массив из ОбъектМетаданных +// * ИдентификаторЗадания - УникальныйИдентификатор +// +Функция ПараметрыУдаления(УдаляемыеОбъекты, Параметры) + ИсключенияПоискаСсылок = ИсключенияПоискаСсылокПриУдалении(); + + ПараметрыОбработки = Новый Структура; + ПараметрыОбработки.Вставить("Монопольно", + ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Параметры, "Монопольно", Ложь)); + ПараметрыОбработки.Вставить("ИсключающиеПравила", Новый Соответствие); + ПараметрыОбработки.Вставить("ИсключенияПоискаСсылок", ИсключенияПоискаСсылок); + ПараметрыОбработки.Вставить("РазмерПакета", ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Параметры, + "РазмерПакета", 100)); + ПараметрыОбработки.Вставить("КешИнформацииОТипах", Новый Соответствие); + ПараметрыОбработки.Вставить("ОчищатьСсылкиВМестахИспользования", ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры( + Параметры, "ОчищатьСсылкиВМестахИспользования", Ложь)); + + ПараметрыОбработки.Вставить("ПользовательскиеОбъекты", Новый Массив); + + ПрепятствующиеУдалению = Новый ТаблицаЗначений; + ПрепятствующиеУдалению.Колонки.Добавить("УдаляемыйСсылка"); + ПрепятствующиеУдалению.Колонки.Добавить("МестоИспользования"); + ПрепятствующиеУдалению.Колонки.Добавить("ОбнаруженныйСтатус", Новый ОписаниеТипов("Строка",, Новый КвалификаторыСтроки(10))); + ПрепятствующиеУдалению.Колонки.Добавить("ОписаниеОшибки", Новый ОписаниеТипов("Строка")); + ПрепятствующиеУдалению.Колонки.Добавить("ПодробноеОписаниеОшибки", Новый ОписаниеТипов("Строка")); + ТипыКолонкиМетаданные = Новый Массив; + ТипыКолонкиМетаданные.Добавить("ОбъектМетаданных"); + ТипыКолонкиМетаданные.Добавить("Неопределено"); + ПрепятствующиеУдалению.Колонки.Добавить("Метаданные", Новый ОписаниеТипов(ТипыКолонкиМетаданные)); + + ПрепятствующиеУдалению.Индексы.Добавить("УдаляемыйСсылка"); + ПрепятствующиеУдалению.Индексы.Добавить("МестоИспользования"); + + ПараметрыОбработки.Вставить("Удаленные", Новый Массив); + ПараметрыОбработки.Вставить("НеУдаленные", Новый Массив); + ПараметрыОбработки.Вставить("ПрепятствующиеУдалению", ПрепятствующиеУдалению); + ПараметрыОбработки.Вставить("ПовторноУдаляемые", Новый Массив); + ПараметрыОбработки.Вставить("КоличествоУдаляемых", УдаляемыеОбъекты.Количество()); + ПараметрыОбработки.Вставить("КоличествоНеудаленных", 0); + ПараметрыОбработки.Вставить("КоличествоОбработанных", 0); + ПараметрыОбработки.Вставить("Всего", 0); + ПараметрыОбработки.Вставить("Номер", 0); + ПараметрыОбработки.Вставить("ИдентификаторЗадания", Новый УникальныйИдентификатор); + + Возврат ПараметрыОбработки; +КонецФункции + +Функция ИсключенияПоискаСсылокПриУдалении() + ИсключенияПоискаСсылок = ОбщегоНазначения.ИсключенияПоискаСсылок(); + Для Каждого Элемент Из УдалениеПомеченныхОбъектовСлужебный.ИсключенияПоискаСсылокРазрешающихУдаление() Цикл + ИсключенияПоискаСсылок.Вставить(Элемент, "*"); + КонецЦикла; + + ИсключенияПоискаСсылок.Удалить(Метаданные.Справочники.ВнешниеПользователи); + + Возврат ИсключенияПоискаСсылок; +КонецФункции + +// Возвращаемое значение: +// Структура: +// * МестаИспользования - см. ПакетУдаляемыхОбъектов +// * НеудаленныеОбъекты - см. МестаИспользования +// * УдаленныеОбъекты - Массив из ЛюбаяСсылка +// +Функция РезультатОбработки() + РезультатОбработкиПакета = Новый Структура(); + + РезультатОбработкиПакета.Вставить("УдаленныеОбъекты", Новый Массив); + РезультатОбработкиПакета.Вставить("НеудаленныеОбъекты", ПакетУдаляемыхОбъектов()); + РезультатОбработкиПакета.Вставить("МестаИспользования", МестаИспользования()); + РезультатОбработкиПакета.Вставить("МестаОчисткиСсылок", МестаИспользования()); + + Возврат РезультатОбработкиПакета +КонецФункции + +// Возвращаемое значение: +// ТаблицаЗначений: +// * УдаляемыйСсылка - ЛюбаяСсылка +// * МестоИспользования - ЛюбаяСсылка +// * Метаданные - ОбъектМетаданных +// * ЭтоСлужебныеДанные - Булево +// +Функция МестаИспользования() Экспорт + Таблица = Новый ТаблицаЗначений(); + + Таблица.Колонки.Добавить("УдаляемыйСсылка"); + Таблица.Колонки.Добавить("МестоИспользования"); + Таблица.Колонки.Добавить("Метаданные"); + Таблица.Колонки.Добавить("ЭтоСлужебныеДанные", Новый ОписаниеТипов("Булево")); + + Таблица.Индексы.добавить("УдаляемыйСсылка"); + Таблица.Индексы.добавить("МестоИспользования"); + + Возврат Таблица; +КонецФункции + +// Возвращаемое значение: +// ТаблицаЗначений: +// * УдаляемыйСсылка - ЛюбаяСсылка +// * ЕстьДочерниеОбъекты - Булево +// * ЕстьПодчиненныеОбъекты - Булево +// * ИнформацияОбОшибке - ИнформацияОбОшибке +// * Сообщения - Строка +// * РезультатУдаления - Число +// * ДочерниеПодчиненныеОбъекты - см. ТаблицаДочернихПодчиненныхЭлементов +// * ЭтоОсновнойОбъект - Булево +// +Функция ПакетУдаляемыхОбъектов() + Пакет = Новый ТаблицаЗначений; + + Пакет.Колонки.Добавить("УдаляемыйСсылка"); + Пакет.Колонки.Добавить("ЕстьДочерниеОбъекты", , Новый ОписаниеТипов("Булево")); + Пакет.Колонки.Добавить("ЕстьПодчиненныеОбъекты", Новый ОписаниеТипов("Булево")); + Пакет.Колонки.Добавить("ИнформацияОбОшибке", Новый ОписаниеТипов("ИнформацияОбОшибке")); + Пакет.Колонки.Добавить("Сообщения", Новый ОписаниеТипов("Строка")); + Пакет.Колонки.Добавить("РезультатУдаления", Новый ОписаниеТипов("Число")); + Пакет.Колонки.Добавить("ДочерниеПодчиненныеОбъекты", Новый ОписаниеТипов("ТаблицаЗначений")); + Пакет.Колонки.Добавить("ЭтоОсновнойОбъект", Новый ОписаниеТипов("Булево")); + + Возврат Пакет; +КонецФункции + +Функция КодыРезультатаУдаления() + ТипыОшибок = Новый Структура; + ТипыОшибок.Вставить("Успешно", -1); + ТипыОшибок.Вставить("ЕстьМестаИспользования", 0); + ТипыОшибок.Вставить("ОшибкаПриУдалении", 1); + ТипыОшибок.Вставить("ЕстьДочерниеПодчиненныеЭлементы", 2); + ТипыОшибок.Вставить("ЕстьДочерниеПодчиненныеЭлементыНепомеченныеНаУдаление", 3); + ТипыОшибок.Вставить("НеПомеченНаУдаление", 4); + Возврат ТипыОшибок; +КонецФункции + +// Параметры: +// МассивУдаляемыхОбъектов - Массив из ЛюбаяСсылка +// СведенияОМетаданных - ТаблицаЗначений: +// * Метаданные - ОбъектМетаданных +// * Иерархический - Булево +// * Приоритет - Число +// * Тип - Тип +// +// Возвращаемое значение: +// ТаблицаЗначений: +// * УдаляемыйСсылка - ЛюбаяСсылка +// * Приоритет - Число +// * Тип - Тип +// +Функция УдаляемыеОбъекты(МассивУдаляемыхОбъектов, СведенияОМетаданных) + УдаляемыеОбъекты = Новый ТаблицаЗначений; + УдаляемыеОбъекты.Колонки.Добавить("УдаляемыйСсылка"); + УдаляемыеОбъекты.Колонки.Добавить("Приоритет", Новый ОписаниеТипов("Число")); + УдаляемыеОбъекты.Колонки.Добавить("КоличествоПопыток", Новый ОписаниеТипов("Число")); + УдаляемыеОбъекты.Колонки.Добавить("Тип", Новый ОписаниеТипов("Тип")); + УдаляемыеОбъекты.Индексы.Добавить("УдаляемыйСсылка"); + + КоличествоПопытокОбъектов = РегистрыСведений.НеудаленныеОбъекты.КоличествоПопытокОбъектов(МассивУдаляемыхОбъектов); + + Для Каждого Элемент Из МассивУдаляемыхОбъектов Цикл + ТипЭлемента = ТипЗнч(Элемент); + ЭлементОчереди = УдаляемыеОбъекты.Добавить(); + ЭлементОчереди.УдаляемыйСсылка = Элемент; + ЭлементОчереди.Приоритет = СведенияОМетаданных.НайтиСтроки(Новый Структура("Тип", ТипЭлемента))[0].Приоритет; + ЭлементОчереди.Тип = ТипЭлемента; + КоличествоПопыток = КоличествоПопытокОбъектов.Найти(Элемент, "УдаляемыйСсылка"); + ЭлементОчереди.КоличествоПопыток = ?(КоличествоПопыток = Неопределено, 0, КоличествоПопыток.КоличествоПопыток); + КонецЦикла; + + УдаляемыеОбъекты.Сортировать("КоличествоПопыток, Приоритет"); + + Возврат УдаляемыеОбъекты; +КонецФункции +#КонецОбласти + +#Область ФормированиеСведенийОМетаданных + +// Параметры: +// ПараметрыУдаления - Структура +// УдаляемыеОбъекты - Массив из ЛюбаяСсылка +// +// Возвращаемое значение: +// ТаблицаЗначений: +// * Метаданные - ОбъектМетаданных +// * Иерархический - Булево +// * Приоритет - Число +// * Тип - Тип +// * ОписаниеПодчиненныхОбъектов - ТаблицаЗначений +// +Функция СведенияОМетаданных(ПараметрыУдаления, УдаляемыеОбъекты) + СведенияОМетаданных = Новый ТаблицаЗначений(); + СведенияОМетаданных.Колонки.Добавить("Метаданные", Новый ОписаниеТипов("ОбъектМетаданных")); + СведенияОМетаданных.Колонки.Добавить("Иерархический", Новый ОписаниеТипов("Булево")); + СведенияОМетаданных.Колонки.Добавить("Приоритет", Новый ОписаниеТипов("Число")); + СведенияОМетаданных.Колонки.Добавить("ЕстьПодчиненныеОбъекты", Новый ОписаниеТипов("Булево")); + СведенияОМетаданных.Колонки.Добавить("Тип", Новый ОписаниеТипов("Тип")); + СведенияОМетаданных.Колонки.Добавить("ОписаниеПодчиненныхОбъектов", Новый ОписаниеТипов("ТаблицаЗначений")); + СведенияОМетаданных.Индексы.Добавить("Тип"); + СведенияОМетаданных.Индексы.Добавить("Метаданные"); + + ЗаполнитьСведенияОМетаданных(СведенияОМетаданных, УдаляемыеОбъекты); + + Возврат СведенияОМетаданных; +КонецФункции + +// Возвращаемое значение: +// ТаблицаЗначений: +// * Тип - Тип +// * ПодчиненныеМетаданные - ОбъектМетаданных +// * Реквизиты - Массив +// +Функция ТаблицаПоискаПодчиненныхОбъектов() + Таблица = Новый ТаблицаЗначений; + Таблица.Колонки.Добавить("Тип", Новый ОписаниеТипов("Тип")); + Таблица.Колонки.Добавить("Метаданные", Новый ОписаниеТипов("ОбъектМетаданных")); + Таблица.Колонки.Добавить("ИмяРеквизита", Новый ОписаниеТипов("Строка")); + + Возврат Таблица; +КонецФункции + +Процедура ЗаполнитьСведенияОМетаданных(СведенияОМетаданных, УдаляемыеОбъекты) + ПодчиненныеОбъекты = ОбщегоНазначения.ПодчиненныеОбъекты(); + + Для Каждого Элемент Из УдаляемыеОбъекты Цикл + Если СведенияОМетаданных.Найти(Элемент.Метаданные(), "Метаданные") = Неопределено Тогда + ИнформацияОМетаданных = СведенияОМетаданных.Добавить(); + ИнформацияОМетаданных.Метаданные = Элемент.Метаданные(); + ИнформацияОМетаданных.Приоритет = 0; + ИнформацияОМетаданных.Тип = ТипЗнч(Элемент); + ИнформацияОМетаданных.ОписаниеПодчиненныхОбъектов = ТаблицаПоискаПодчиненныхОбъектов(); + Кеш = Новый Структура("Иерархический"); + ЗаполнитьЗначенияСвойств(Кеш, ИнформацияОМетаданных.Метаданные); + ИнформацияОМетаданных.Иерархический = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Кеш, "Иерархический", Ложь); + КонецЕсли; + КонецЦикла; + + Для Каждого ОбъектМетаданных Из Метаданные.Справочники Цикл + ОписаниеПодчиненногоОбъекта = ПодчиненныеОбъекты.Найти(ОбъектМетаданных, "ПодчиненныйОбъект"); + + Если ОписаниеПодчиненногоОбъекта = Неопределено + И ОбъектМетаданных.Владельцы.Количество() > 0 Тогда + + ОписаниеПодчиненногоОбъекта = ПодчиненныеОбъекты.Добавить(); + ОписаниеПодчиненногоОбъекта.ПодчиненныйОбъект = ОбъектМетаданных; + ОписаниеПодчиненногоОбъекта.ПоляСвязей = "Владелец"; + ИначеЕсли ОбъектМетаданных.Владельцы.Количество() > 0 Тогда + + ОписаниеПодчиненногоОбъекта.ПоляСвязей = ?(СтрНайти(ОписаниеПодчиненногоОбъекта.ПоляСвязей, "Владелец") > 0, + ОписаниеПодчиненногоОбъекта.ПоляСвязей, + ОписаниеПодчиненногоОбъекта.ПоляСвязей + ",Владелец"); + КонецЕсли; + + ЗарегистрироватьРеквизиты(СведенияОМетаданных, ОбъектМетаданных.СтандартныеРеквизиты, ОписаниеПодчиненногоОбъекта); + ЗарегистрироватьРеквизиты(СведенияОМетаданных, ОбъектМетаданных.Реквизиты, ОписаниеПодчиненногоОбъекта); + ЗарегистрироватьРеквизитыТабличныхЧастей(СведенияОМетаданных, ОбъектМетаданных.ТабличныеЧасти); + КонецЦикла; + + Для Каждого ОбъектМетаданных Из Метаданные.Документы Цикл + ОписаниеПодчиненногоОбъекта = ПодчиненныеОбъекты.Найти(ОбъектМетаданных, "ПодчиненныйОбъект"); + + ЗарегистрироватьРеквизиты(СведенияОМетаданных, ОбъектМетаданных.СтандартныеРеквизиты, ОписаниеПодчиненногоОбъекта); + ЗарегистрироватьРеквизиты(СведенияОМетаданных, ОбъектМетаданных.Реквизиты, ОписаниеПодчиненногоОбъекта); + ЗарегистрироватьРеквизитыТабличныхЧастей(СведенияОМетаданных, ОбъектМетаданных.ТабличныеЧасти); + КонецЦикла; + + Для Каждого ОбъектМетаданных Из Метаданные.ПланыВидовХарактеристик Цикл + ОписаниеПодчиненногоОбъекта = ПодчиненныеОбъекты.Найти(ОбъектМетаданных, "ПодчиненныйОбъект"); + + ЗарегистрироватьРеквизиты(СведенияОМетаданных, ОбъектМетаданных.СтандартныеРеквизиты, ОписаниеПодчиненногоОбъекта); + ЗарегистрироватьРеквизиты(СведенияОМетаданных, ОбъектМетаданных.Реквизиты, ОписаниеПодчиненногоОбъекта); + ЗарегистрироватьРеквизитыТабличныхЧастей(СведенияОМетаданных, ОбъектМетаданных.ТабличныеЧасти); + КонецЦикла; + + Для Каждого ОбъектМетаданных Из Метаданные.ПланыВидовРасчета Цикл + ОписаниеПодчиненногоОбъекта = ПодчиненныеОбъекты.Найти(ОбъектМетаданных, "ПодчиненныйОбъект"); + + ЗарегистрироватьРеквизиты(СведенияОМетаданных, ОбъектМетаданных.СтандартныеРеквизиты, ОписаниеПодчиненногоОбъекта); + ЗарегистрироватьРеквизиты(СведенияОМетаданных, ОбъектМетаданных.Реквизиты, ОписаниеПодчиненногоОбъекта); + ЗарегистрироватьРеквизитыТабличныхЧастей(СведенияОМетаданных, ОбъектМетаданных.СтандартныеТабличныеЧасти); + ЗарегистрироватьРеквизитыТабличныхЧастей(СведенияОМетаданных, ОбъектМетаданных.ТабличныеЧасти); + КонецЦикла; + + Для Каждого ОбъектМетаданных Из Метаданные.ПланыСчетов Цикл + ОписаниеПодчиненногоОбъекта = ПодчиненныеОбъекты.Найти(ОбъектМетаданных, "ПодчиненныйОбъект"); + + ЗарегистрироватьРеквизиты(СведенияОМетаданных, ОбъектМетаданных.СтандартныеРеквизиты, ОписаниеПодчиненногоОбъекта); + ЗарегистрироватьРеквизиты(СведенияОМетаданных, ОбъектМетаданных.Реквизиты, ОписаниеПодчиненногоОбъекта); + ЗарегистрироватьРеквизитыТабличныхЧастей(СведенияОМетаданных, ОбъектМетаданных.СтандартныеТабличныеЧасти); + ЗарегистрироватьРеквизитыТабличныхЧастей(СведенияОМетаданных, ОбъектМетаданных.ТабличныеЧасти); + КонецЦикла; + + Для Каждого ОбъектМетаданных Из Метаданные.БизнесПроцессы Цикл + ОписаниеПодчиненногоОбъекта = ПодчиненныеОбъекты.Найти(ОбъектМетаданных, "ПодчиненныйОбъект"); + + ЗарегистрироватьРеквизиты(СведенияОМетаданных, ОбъектМетаданных.СтандартныеРеквизиты, ОписаниеПодчиненногоОбъекта); + ЗарегистрироватьРеквизиты(СведенияОМетаданных, ОбъектМетаданных.Реквизиты, ОписаниеПодчиненногоОбъекта); + ЗарегистрироватьРеквизитыТабличныхЧастей(СведенияОМетаданных, ОбъектМетаданных.ТабличныеЧасти); + КонецЦикла; + + Для Каждого ОбъектМетаданных Из Метаданные.Задачи Цикл + ОписаниеПодчиненногоОбъекта = ПодчиненныеОбъекты.Найти(ОбъектМетаданных, "ПодчиненныйОбъект"); + + ЗарегистрироватьРеквизиты(СведенияОМетаданных, ОбъектМетаданных.СтандартныеРеквизиты, ОписаниеПодчиненногоОбъекта); + ЗарегистрироватьРеквизиты(СведенияОМетаданных, ОбъектМетаданных.РеквизитыАдресации, ОписаниеПодчиненногоОбъекта); + ЗарегистрироватьРеквизиты(СведенияОМетаданных, ОбъектМетаданных.Реквизиты, ОписаниеПодчиненногоОбъекта); + ЗарегистрироватьРеквизитыТабличныхЧастей(СведенияОМетаданных, ОбъектМетаданных.ТабличныеЧасти); + КонецЦикла; +КонецПроцедуры + +Процедура ЗарегистрироватьРеквизитыТабличныхЧастей(СведенияОМетаданных, ТабличныеЧасти) + Для Каждого ТабличнаяЧасть Из ТабличныеЧасти Цикл + Если ТипЗнч(ТабличнаяЧасть) = Тип("ОбъектМетаданных") Тогда + ЗарегистрироватьРеквизиты(СведенияОМетаданных, ТабличнаяЧасть.Реквизиты); + Иначе + ЗарегистрироватьРеквизиты(СведенияОМетаданных, ТабличнаяЧасть.СтандартныеРеквизиты); + КонецЕсли; + КонецЦикла; +КонецПроцедуры + +Процедура ЗарегистрироватьРеквизиты(СведенияОМетаданных, КоллекцияРеквизитов, ОписаниеПодчиненногоОбъекта = Неопределено) + + Для Каждого Реквизит Из КоллекцияРеквизитов Цикл + ЗарегистрироватьРеквизит(СведенияОМетаданных, Реквизит, ОписаниеПодчиненногоОбъекта); + КонецЦикла; + КонецПроцедуры -//////////////////////////////////////////////////////////////////////////////// -// Монопольное удаление помеченных. +Процедура ЗарегистрироватьРеквизит(СведенияОМетаданных, Реквизит, + ОписаниеПодчиненногоОбъекта) + ИменаПолейСвязи = ?(ЗначениеЗаполнено(ОписаниеПодчиненногоОбъекта), СтрРазделить(ОписаниеПодчиненногоОбъекта.ПоляСвязей, ","), Новый Массив); + ЭтоПолеСвязиПодчиненногоОбъекта = ИменаПолейСвязи.Найти(Реквизит.Имя) <> Неопределено; + + Для Каждого Тип Из Реквизит.Тип.Типы() Цикл + Если УдалениеПомеченныхОбъектовСлужебный.ЭтоПростойТип(Тип) Тогда + Продолжить; + КонецЕсли; + + НайденныеСведения = СведенияОМетаданных.Найти(Тип, "Тип"); + Если НайденныеСведения <> Неопределено Тогда + НайденныеСведения.Приоритет = НайденныеСведения.Приоритет + 1; + + Если ЭтоПолеСвязиПодчиненногоОбъекта Тогда + Связь = НайденныеСведения.ОписаниеПодчиненныхОбъектов.Добавить(); + Связь.Тип = Тип; + Связь.Метаданные = ОписаниеПодчиненногоОбъекта.ПодчиненныйОбъект; + Связь.ИмяРеквизита = Реквизит.Имя; + НайденныеСведения.ЕстьПодчиненныеОбъекты = Истина; + КонецЕсли; + КонецЕсли; + КонецЦикла; +КонецПроцедуры + +#КонецОбласти + +#КонецОбласти + +#Область МонопольноеУдаление // Основная механика удаления помеченных объектов. -Процедура УдалитьПомеченныеОбъектыМонопольно(ПараметрыВыполнения) +// +Процедура УдалитьПомеченныеОбъектыМонопольно(УдаляемыеОбъекты, ПараметрыВыполнения) + + ПараметрыВыполнения.ИсключенияПоискаСсылок = ОбщегоНазначения.ИсключенияПоискаСсылок(); + Для каждого ОтменаИсключения Из ОтменаИсключенийПоискаСсылокПриУдаленииОбъектов() Цикл + ПараметрыВыполнения.ИсключенияПоискаСсылок.Удалить(ОтменаИсключения); + КонецЦикла; - Если Не ПараметрыВыполнения.Свойство("ИсключенияПоискаСсылок") Тогда - ПараметрыВыполнения.Вставить("ИсключенияПоискаСсылок", ОбщегоНазначения.ИсключенияПоискаСсылок()); - КонецЕсли; Если Не ПараметрыВыполнения.Свойство("ИсключающиеПравила") Тогда ПараметрыВыполнения.Вставить("ИсключающиеПравила", Новый Соответствие); // Кэш правил исключений поиска. КонецЕсли; - УдаляемыеОбъекты = ПараметрыВыполнения.ВсеПомеченныеНаУдаление; + СведенияОМетаданных = СведенияОМетаданных(ПараметрыВыполнения, УдаляемыеОбъекты); + ПодчиненныеОбъекты = Новый Массив; + Для Сч = -(УдаляемыеОбъекты.Количество() - 1) По 0 Цикл + УдаляемыйОбъект = УдаляемыеОбъекты[-Сч]; + + Если НЕ ОбъектУдален(УдаляемыйОбъект) + И НЕ ОбщегоНазначения.ЗначениеРеквизитаОбъекта(УдаляемыйОбъект, "ПометкаУдаления") Тогда + ПричинаНеудаления = Новый Структура; + ПричинаНеудаления.Вставить("УдаляемыйСсылка", УдаляемыйОбъект); + ПричинаНеудаления.Вставить("МестоИспользования", НСтр("ru='Удаляемый объект не помечен на удаление'")); + ПричинаНеудаления.Вставить("ОбнаруженныйМетаданные"); + ЗаписатьПричинуВРезультат(ПараметрыВыполнения, ПричинаНеудаления); + УдаляемыеОбъекты.Удалить(-Сч); + Продолжить; + КонецЕсли; + + ИнформацияОМетаданных = СведенияОМетаданных.Найти(ТипЗнч(УдаляемыйОбъект), "Тип"); + ИнформацияОМетаданных.Иерархический = Ложь;// Выполняем поиск только подчиненных элементов + ДочерниеПодчиненныеОбъекты = ДочерниеПодчиненныеЭлементы( + УдаляемыйОбъект, ИнформацияОМетаданных); + + Для Каждого ПодчиненныйОбъект Из ДочерниеПодчиненныеОбъекты Цикл + Если ПодчиненныйОбъект.ПометкаУдаления Тогда + ПодчиненныеОбъекты.Добавить(ПодчиненныйОбъект.Элемент); + КонецЕсли; + КонецЦикла; + КонецЦикла; + ОбщегоНазначенияКлиентСервер.ДополнитьМассив( + УдаляемыеОбъекты, ПодчиненныеОбъекты); Пока УдаляемыеОбъекты.Количество() > 0 Цикл - ОтметитьНачалоОбходаКоллекции(ПараметрыВыполнения, "МонопольноеУдаление"); - ПрепятствующиеУдалению = Новый ТаблицаЗначений; // Попытка удалить с контролем ссылочной целостности. @@ -642,23 +1397,25 @@ // Назначение имен колонок для таблицы конфликтов, возникших при удалении. ПрепятствующиеУдалению.Колонки[0].Имя = "УдаляемыйСсылка"; - ПрепятствующиеУдалению.Колонки[1].Имя = "ОбнаруженныйСсылка"; - ПрепятствующиеУдалению.Колонки[2].Имя = "ОбнаруженныйМетаданные"; + ПрепятствующиеУдалению.Колонки[1].Имя = "МестоИспользования"; + ПрепятствующиеУдалению.Колонки[2].Имя = "Метаданные"; ВсеСвязиВИсключениях = Истина; // Анализ причин не удаления (мест использования помеченных на удаление). - ОтметитьНачалоОбходаКоллекции(ПараметрыВыполнения, "ПрепятствующиеУдалению", ПрепятствующиеУдалению); Для Каждого СтрокаТаблицы Из ПрепятствующиеУдалению Цикл - ОтметитьПрогрессОбходаКоллекции(ПараметрыВыполнения, "ПрепятствующиеУдалению"); - // Проверка исключающих правил. - Если СвязьВИсключенияхПоискаСсылок(ПараметрыВыполнения, СтрокаТаблицы.ОбнаруженныйМетаданные, СтрокаТаблицы) Тогда + ОписаниеСвязиДанных = Новый Структура("Ссылка, Данные, Метаданные"); + ОписаниеСвязиДанных.Ссылка = СтрокаТаблицы.УдаляемыйСсылка; + ОписаниеСвязиДанных.Данные = СтрокаТаблицы.МестоИспользования; + ОписаниеСвязиДанных.Метаданные = СтрокаТаблицы.Метаданные; + Если ОбщегоНазначения.ЭтоСлужебнаяСвязьДанных(ОписаниеСвязиДанных, ПараметрыВыполнения.ИсключенияПоискаСсылок) + ИЛИ СвязьТолькоСВедущимиИзмерениямиРегистров(ОписаниеСвязиДанных) Тогда Продолжить; // Связь не препятствует удалению. КонецЕсли; // Проверка наличия обнаруженной ссылки среди удаляемых объектов. - Индекс = УдаляемыеОбъекты.Найти(СтрокаТаблицы.ОбнаруженныйСсылка); + Индекс = УдаляемыеОбъекты.Найти(СтрокаТаблицы.МестоИспользования); Если Индекс <> Неопределено Тогда Продолжить; // Связь не препятствует удалению. КонецЕсли; @@ -686,371 +1443,18 @@ КонецЦикла; ПараметрыВыполнения.Вставить("Удаленные", УдаляемыеОбъекты); - ПараметрыВыполнения.Удалить("ИсключенияПоискаСсылок"); - ПараметрыВыполнения.Удалить("ИсключающиеПравила"); - -КонецПроцедуры - -// Проверяет что связь в исключениях. -Функция СвязьВИсключенияхПоискаСсылок(ПараметрыВыполнения, ОбнаруженныйМетаданные, СтрокаТаблицы) - // Определение исключающего правила для объекта метаданных, препятствующего удалению: - // Для регистров (т.н. "необъектных таблиц") - массива реквизитов для поиска в записи регистра. - // Для ссылочных типов (т.н. "объектных таблиц") - готового запроса для поиска в реквизитах. - Правило = ПараметрыВыполнения.ИсключающиеПравила[ОбнаруженныйМетаданные]; // Кэш. - Если Правило = Неопределено Тогда - Правило = СформироватьИсключающееПравило(ПараметрыВыполнения, ОбнаруженныйМетаданные); - ПараметрыВыполнения.ИсключающиеПравила.Вставить(ОбнаруженныйМетаданные, Правило); - КонецЕсли; - - // Проверка исключающего правила. - Если Правило = "*" Тогда - Возврат Истина; // Можно удалять (обнаруженный объект метаданных не мешает). - ИначеЕсли ТипЗнч(Правило) = Тип("Массив") Тогда // Имена измерений регистра. - Для Каждого ИмяРеквизита Из Правило Цикл - Если СтрокаТаблицы.ОбнаруженныйСсылка[ИмяРеквизита] = СтрокаТаблицы.УдаляемыйСсылка Тогда - Возврат Истина; // Можно удалять (обнаруженная запись регистра не мешает). - КонецЕсли; - КонецЦикла; - ИначеЕсли ТипЗнч(Правило) = Тип("Запрос") Тогда // Запрос к ссылочному объекту. - Правило.УстановитьПараметр("УдаляемыйСсылка", СтрокаТаблицы.УдаляемыйСсылка); - Правило.УстановитьПараметр("ОбнаруженныйСсылка", СтрокаТаблицы.ОбнаруженныйСсылка); - Если Не Правило.Выполнить().Пустой() Тогда - Возврат Истина; // Можно удалять (обнаруженная ссылка не мешает). - КонецЕсли; - КонецЕсли; - - Возврат Ложь; -КонецФункции - -// Компонует правило оптимально для проверки. -Функция СформироватьИсключающееПравило(ПараметрыВыполнения, ОбнаруженныйМетаданные) - ИсключениеПоиска = ПараметрыВыполнения.ИсключенияПоискаСсылок[ОбнаруженныйМетаданные]; - Если ИсключениеПоиска = "*" Тогда - Возврат "*"; // Можно удалять (обнаруженный объект метаданных не мешает). - КонецЕсли; - - // Формирование исключающего правила. - ЭтоРегистрСведений = Метаданные.РегистрыСведений.Содержит(ОбнаруженныйМетаданные); - Если ЭтоРегистрСведений - Или Метаданные.РегистрыБухгалтерии.Содержит(ОбнаруженныйМетаданные) // ЭтоРегистрБухгалтерии - Или Метаданные.РегистрыНакопления.Содержит(ОбнаруженныйМетаданные) Тогда // ЭтоРегистрНакопления - - Правило = Новый Массив; - Если ЭтоРегистрСведений Тогда - Для Каждого Измерение Из ОбнаруженныйМетаданные.Измерения Цикл - Если Измерение.Ведущее Тогда - Правило.Добавить(Измерение.Имя); - КонецЕсли; - КонецЦикла; - Иначе - Для Каждого Измерение Из ОбнаруженныйМетаданные.Измерения Цикл - Правило.Добавить(Измерение.Имя); - КонецЦикла; - КонецЕсли; - - Если ТипЗнч(ИсключениеПоиска) = Тип("Массив") Тогда - Для Каждого ИмяРеквизита Из ИсключениеПоиска Цикл - Если Правило.Найти(ИмяРеквизита) = Неопределено Тогда - Правило.Добавить(ИмяРеквизита); - КонецЕсли; - КонецЦикла; - КонецЕсли; - - ИначеЕсли ТипЗнч(ИсключениеПоиска) = Тип("Массив") Тогда - - ТекстыЗапросов = Новый Соответствие; - ИмяКорневойТаблицы = ОбнаруженныйМетаданные.ПолноеИмя(); - - Для Каждого ПутьКРеквизиту Из ИсключениеПоиска Цикл - ПозицияТочки = СтрНайти(ПутьКРеквизиту, "."); - Если ПозицияТочки = 0 Тогда - ПолноеИмяТаблицы = ИмяКорневойТаблицы; - ИмяРеквизита = ПутьКРеквизиту; - Иначе - ПолноеИмяТаблицы = ИмяКорневойТаблицы + "." + Лев(ПутьКРеквизиту, ПозицияТочки - 1); - ИмяРеквизита = Сред(ПутьКРеквизиту, ПозицияТочки + 1); - КонецЕсли; - - ТекстВложенногоЗапроса = ТекстыЗапросов.Получить(ПолноеИмяТаблицы); - Если ТекстВложенногоЗапроса = Неопределено Тогда - ТекстВложенногоЗапроса = - "ВЫБРАТЬ ПЕРВЫЕ 1 - | 1 - |ИЗ - | "+ ПолноеИмяТаблицы +" КАК Таблица - |ГДЕ - | Таблица.Ссылка = &ОбнаруженныйСсылка - | И ("; - Иначе - ТекстВложенногоЗапроса = ТекстВложенногоЗапроса + Символы.ПС + Символы.Таб + Символы.Таб + "ИЛИ "; - КонецЕсли; - ТекстВложенногоЗапроса = ТекстВложенногоЗапроса + "Таблица." + ИмяРеквизита + " = &УдаляемыйСсылка"; - - ТекстыЗапросов.Вставить(ПолноеИмяТаблицы, ТекстВложенногоЗапроса); - КонецЦикла; - - ТекстЗапроса = ""; - Для Каждого КлючИЗначение Из ТекстыЗапросов Цикл - Если ТекстЗапроса <> "" Тогда - ТекстЗапроса = ТекстЗапроса + Символы.ПС + Символы.ПС + "ОБЪЕДИНИТЬ ВСЕ" + Символы.ПС + Символы.ПС; - КонецЕсли; - ТекстЗапроса = ТекстЗапроса + КлючИЗначение.Значение + ")"; - КонецЦикла; - - Правило = Новый Запрос; - Правило.Текст = ТекстЗапроса; - - Иначе - - Правило = ""; - - КонецЕсли; - - Возврат Правило; -КонецФункции - -//////////////////////////////////////////////////////////////////////////////// -// Общая механика. - -// Инициализирует структуру параметров, необходимых для выполнения других служебных методов. -Процедура ИнициализироватьПараметры(ПараметрыВыполнения) - // Определение параметров работы программы. - Если Не ПараметрыВыполнения.Свойство("ИскатьПомеченные") Тогда - ПараметрыВыполнения.Вставить("ИскатьПомеченные", Истина); - КонецЕсли; - Если Не ПараметрыВыполнения.Свойство("УдалятьПомеченные") Тогда - ПараметрыВыполнения.Вставить("УдалятьПомеченные", Истина); - КонецЕсли; - Если Не ПараметрыВыполнения.Свойство("Монопольно") Тогда - ПараметрыВыполнения.Вставить("Монопольно", Ложь); - КонецЕсли; - Если Не ПараметрыВыполнения.Свойство("ТехнологическиеОбъекты") Тогда - ПараметрыВыполнения.Вставить("ТехнологическиеОбъекты", Новый Массив); - КонецЕсли; - Если Не ПараметрыВыполнения.Свойство("ПользовательскиеОбъекты") Тогда - ПараметрыВыполнения.Вставить("ПользовательскиеОбъекты", Новый Массив); - КонецЕсли; - Если Не ПараметрыВыполнения.Свойство("ВсеПомеченныеНаУдаление") Тогда - ПараметрыВыполнения.Вставить("ВсеПомеченныеНаУдаление", Новый Массив); - ОбщегоНазначенияКлиентСервер.ДополнитьМассив(ПараметрыВыполнения.ВсеПомеченныеНаУдаление, ПараметрыВыполнения.ТехнологическиеОбъекты); - ОбщегоНазначенияКлиентСервер.ДополнитьМассив(ПараметрыВыполнения.ВсеПомеченныеНаУдаление, ПараметрыВыполнения.ПользовательскиеОбъекты); - КонецЕсли; - Если Не ПараметрыВыполнения.Свойство("МодельСервиса") Тогда - ПараметрыВыполнения.Вставить("МодельСервиса", ОбщегоНазначения.РазделениеВключено()); - Если ПараметрыВыполнения.МодельСервиса Тогда - Если ОбщегоНазначения.ПодсистемаСуществует("ТехнологияСервиса.БазоваяФункциональность") Тогда - МодульРаботаВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("РаботаВМоделиСервиса"); - РазделительОсновныхДанных = МодульРаботаВМоделиСервиса.РазделительОсновныхДанных(); - РазделительВспомогательныхДанных = МодульРаботаВМоделиСервиса.РазделительВспомогательныхДанных(); - Иначе - РазделительОсновныхДанных = Неопределено; - РазделительВспомогательныхДанных = Неопределено; - КонецЕсли; - - ПараметрыВыполнения.Вставить("ВОбластиДанных", ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных()); - ПараметрыВыполнения.Вставить("РазделительОсновныхДанных", РазделительОсновныхДанных); - ПараметрыВыполнения.Вставить("РазделительВспомогательныхДанных", РазделительВспомогательныхДанных); - КонецЕсли; - КонецЕсли; - Если Не ПараметрыВыполнения.Свойство("ИнформацияОТипах") Тогда - ПараметрыВыполнения.Вставить("ИнформацияОТипах", Новый Соответствие); - КонецЕсли; - - ПрепятствующиеУдалению = Новый ТаблицаЗначений; - ПрепятствующиеУдалению.Колонки.Добавить("УдаляемыйСсылка"); - ПрепятствующиеУдалению.Колонки.Добавить("УдаляемыйТип", Новый ОписаниеТипов("Тип")); - ПрепятствующиеУдалению.Колонки.Добавить("ОбнаруженныйСсылка"); - ПрепятствующиеУдалению.Колонки.Добавить("ОбнаруженныйТип", Новый ОписаниеТипов("Тип")); - ПрепятствующиеУдалению.Колонки.Добавить("ОбнаруженныйСтатус", Новый ОписаниеТипов("Строка",, Новый КвалификаторыСтроки(10))); - ПрепятствующиеУдалению.Колонки.Добавить("Подробно", Новый ОписаниеТипов("Строка")); - - ПрепятствующиеУдалению.Индексы.Добавить("УдаляемыйСсылка"); - ПрепятствующиеУдалению.Индексы.Добавить("ОбнаруженныйСсылка"); - - ПараметрыВыполнения.Вставить("Удаленные", Новый Массив); - ПараметрыВыполнения.Вставить("НеУдаленные", Новый Массив); - ПараметрыВыполнения.Вставить("ПрепятствующиеУдалению", ПрепятствующиеУдалению); - ПараметрыВыполнения.Вставить("ПовторноУдаляемые", Новый Массив); - ПараметрыВыполнения.Вставить("Интерактивное", ПараметрыВыполнения.Свойство("ПериодЗаписи")); - - ИнициализироватьПараметрыДляРегистрацииПрогресса(ПараметрыВыполнения); -КонецПроцедуры - -// Формирует массив помеченных на удаление с учетом разделения. -Процедура ПолучитьПомеченныеНаУдаление(ПараметрыВыполнения) - - ОтметитьНачалоОбходаКоллекции(ПараметрыВыполнения, "ПередПоискомПомеченныхНаУдаление"); - УдалениеПомеченныхОбъектовПереопределяемый.ПередПоискомПомеченныхНаУдаление(ПараметрыВыполнения); - - УстановитьПривилегированныйРежим(Истина); - - // Получение списка помеченных на удаление. - ОтметитьНачалоОбходаКоллекции(ПараметрыВыполнения, "ПоискПомеченныхНаУдаление"); - ПараметрыВыполнения.ВсеПомеченныеНаУдаление = НайтиПомеченныеНаУдаление(); - - // Распределение помеченных на удаление по коллекциям. - ОтметитьНачалоОбходаКоллекции(ПараметрыВыполнения, "ВсеПомеченныеНаУдаление"); - Количество = ПараметрыВыполнения.ВсеПомеченныеНаУдаление.Количество(); - Для Номер = 1 По Количество Цикл - Индекс = Количество - Номер; - Ссылка = ПараметрыВыполнения.ВсеПомеченныеНаУдаление[Индекс]; - - Информация = СформироватьИнформациюОТипах(ПараметрыВыполнения, ТипЗнч(Ссылка)); - ОтметитьПрогрессОбходаКоллекции(ПараметрыВыполнения, "ВсеПомеченныеНаУдаление"); - - Если ПараметрыВыполнения.МодельСервиса - И ПараметрыВыполнения.ВОбластиДанных - И Не Информация.Разделенный Тогда - ПараметрыВыполнения.ВсеПомеченныеНаУдаление.Удалить(Индекс); - Продолжить; // Неразделенные объекты запрещено изменять из области данных. - КонецЕсли; - - Если Информация.ЕстьПредопределенные И Информация.Предопределенные.Найти(Ссылка) <> Неопределено Тогда - ПараметрыВыполнения.ВсеПомеченныеНаУдаление.Удалить(Индекс); - Продолжить; // Предопределенные элементы создаются и удаляются только автоматически. - КонецЕсли; - - Если Информация.Технический = Истина Тогда - ПараметрыВыполнения.ТехнологическиеОбъекты.Добавить(Ссылка); - Иначе - ПараметрыВыполнения.ПользовательскиеОбъекты.Добавить(Ссылка); - КонецЕсли; - КонецЦикла; КонецПроцедуры // Формирует информацию о типе объекта метаданных, как то: полное имя, представления, вид и т.п. -Функция СформироватьИнформациюОТипах(ПараметрыВыполнения, Тип) Экспорт - Информация = ПараметрыВыполнения.ИнформацияОТипах.Получить(Тип); // Кэш. - Если Информация <> Неопределено Тогда - Возврат Информация; - КонецЕсли; - - Информация = Новый Структура("ПолноеИмя, ПредставлениеЭлемента, ПредставлениеСписка, - |Вид, Ссылочный, Технический, Разделенный, - |Иерархический, ТекстЗапросаПоИерархии, - |ЕстьПодчиненные, ТекстЗапросаПоПодчиненным, - |ЕстьПредопределенные, Предопределенные"); - - // Поиск объекта метаданных. - ОбъектМетаданных = Метаданные.НайтиПоТипу(Тип); - - // Заполнение базовой информации. - Информация.ПолноеИмя = ВРег(ОбъектМетаданных.ПолноеИмя()); - - // Представления: элемента и списка. - Информация.ПредставлениеЭлемента = ОбщегоНазначения.ПредставлениеОбъекта(ОбъектМетаданных); - Информация.ПредставлениеСписка = ОбщегоНазначения.ПредставлениеСписка(ОбъектМетаданных); - - // Вид и его свойства. - Информация.Вид = Лев(Информация.ПолноеИмя, СтрНайти(Информация.ПолноеИмя, ".")-1); - ЭтоСправочник = Ложь; - ЭтоДокумент = Ложь; - ЭтоПеречисление = Ложь; - ЭтоПланВидовХарактеристик = Ложь; - ЭтоПланСчетов = Ложь; - ЭтоПланВидовРасчета = Ложь; - ЭтоБизнесПроцесс = Ложь; - ЭтоЗадача = Ложь; - ЭтоПланОбмена = Ложь; - Если Информация.Вид = "СПРАВОЧНИК" Тогда - ЭтоСправочник = Истина; - ИначеЕсли Информация.Вид = "ДОКУМЕНТ" Тогда - ЭтоДокумент = Истина; - ИначеЕсли Информация.Вид = "ПЕРЕЧИСЛЕНИЕ" Тогда - ЭтоПеречисление = Истина; - ИначеЕсли Информация.Вид = "ПЛАНВИДОВХАРАКТЕРИСТИК" Тогда - ЭтоПланВидовХарактеристик = Истина; - ИначеЕсли Информация.Вид = "ПЛАНСЧЕТОВ" Тогда - ЭтоПланСчетов = Истина; - ИначеЕсли Информация.Вид = "ПЛАНВИДОВРАСЧЕТА" Тогда - ЭтоПланВидовРасчета = Истина; - ИначеЕсли Информация.Вид = "БИЗНЕСПРОЦЕСС" Тогда - ЭтоБизнесПроцесс = Истина; - ИначеЕсли Информация.Вид = "ЗАДАЧА" Тогда - ЭтоЗадача = Истина; - ИначеЕсли Информация.Вид = "ПЛАНОБМЕНА" Тогда - ЭтоПланОбмена = Истина; - КонецЕсли; - - Информация.Ссылочный = (ЭтоСправочник Или ЭтоДокумент Или ЭтоПеречисление Или ЭтоПланВидовХарактеристик - Или ЭтоПланСчетов Или ЭтоПланВидовРасчета Или ЭтоБизнесПроцесс Или ЭтоЗадача Или ЭтоПланОбмена); - Если ЭтоСправочник Или ЭтоПланВидовХарактеристик Тогда - Информация.Иерархический = ОбъектМетаданных.Иерархический; - Иначе - Информация.Иерархический = ЭтоПланСчетов; - КонецЕсли; - Если Информация.Иерархический Тогда - ШаблонЗапроса = "ВЫБРАТЬ Ссылка, ПометкаУдаления ИЗ &ПолноеИмя ГДЕ Родитель = &УдаляемыйСсылка"; - Информация.ТекстЗапросаПоИерархии = СтрЗаменить(ШаблонЗапроса, "&ПолноеИмя", Информация.ПолноеИмя); - КонецЕсли; - - Информация.ЕстьПодчиненные = Ложь; - Информация.ТекстЗапросаПоПодчиненным = ""; - Если ЭтоСправочник Или ЭтоПланВидовХарактеристик Или ЭтоПланОбмена Или ЭтоПланСчетов Или ЭтоПланВидовРасчета Тогда - - ШаблонЗапроса = "ВЫБРАТЬ Ссылка, ПометкаУдаления ИЗ Справочник.&Имя ГДЕ Владелец = &УдаляемыйСсылка"; - ТекстЗапроса = ""; - - Для Каждого Справочник Из Метаданные.Справочники Цикл - Если Не Справочник.Владельцы.Содержит(ОбъектМетаданных) Тогда - Продолжить; - КонецЕсли; - Если Информация.ЕстьПодчиненные = Ложь Тогда - Информация.ЕстьПодчиненные = Истина; - Иначе - ТекстЗапроса = ТекстЗапроса + Символы.ПС + "ОБЪЕДИНИТЬ ВСЕ" + Символы.ПС; - КонецЕсли; - ТекстЗапроса = ТекстЗапроса + СтрЗаменить(ШаблонЗапроса, "&Имя", Справочник.Имя); - КонецЦикла; - - Информация.ТекстЗапросаПоПодчиненным = ТекстЗапроса; - КонецЕсли; - - Информация.Технический = ЭтоТехническийОбъект(Информация.ПолноеИмя); - Если ПараметрыВыполнения.МодельСервиса Тогда - - Если ОбщегоНазначения.ПодсистемаСуществует("ТехнологияСервиса.БазоваяФункциональность") Тогда - МодульРаботаВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("РаботаВМоделиСервиса"); - ЭтоРазделенныйОбъектМетаданных = МодульРаботаВМоделиСервиса.ЭтоРазделенныйОбъектМетаданных(ОбъектМетаданных); - Иначе - ЭтоРазделенныйОбъектМетаданных = Ложь; - КонецЕсли; - Информация.Разделенный = ЭтоРазделенныйОбъектМетаданных; - - КонецЕсли; - - Если ЭтоСправочник Или ЭтоПланВидовХарактеристик Или ЭтоПланСчетов Или ЭтоПланВидовРасчета Тогда - ТекстЗапроса = "ВЫБРАТЬ Ссылка ИЗ &ИмяТаблицы ГДЕ Предопределенный И ПометкаУдаления"; - ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ИмяТаблицы", Информация.ПолноеИмя); - Запрос = Новый Запрос(ТекстЗапроса); - Информация.Предопределенные = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"); - Информация.ЕстьПредопределенные = Информация.Предопределенные.Количество() > 0; - Иначе - Информация.ЕстьПредопределенные = Ложь; - КонецЕсли; - - ПараметрыВыполнения.ИнформацияОТипах.Вставить(Тип, Информация); - +// +Функция СформироватьИнформациюОТипах(ПараметрыВыполнения, Тип) + КешИнформацииОТипах = ПараметрыВыполнения.КешИнформацииОТипах; + Информация = УдалениеПомеченныхОбъектовСлужебный.ИнформацияОТипе(Тип, КешИнформацииОТипах); Возврат Информация; КонецФункции -Функция ЭтоТехническийОбъект(Знач ПолноеИмяОбъекта) - - ЭтоТехническийОбъект = Ложь; - - Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ВариантыОтчетов") Тогда - МодульОтчетыСервер = ОбщегоНазначения.ОбщийМодуль("ОтчетыСервер"); - ЭтоТехническийОбъект = МодульОтчетыСервер.ЭтоТехническийОбъект(ПолноеИмяОбъекта); - КонецЕсли; - - Возврат ЭтоТехническийОбъект - Или ПолноеИмяОбъекта = ВРег("Справочник.ИдентификаторыОбъектовМетаданных") - Или ПолноеИмяОбъекта = ВРег("Справочник.ИдентификаторыОбъектовРасширений") - Или ПолноеИмяОбъекта = ВРег("Справочник.ВерсииРасширений"); - -КонецФункции - // Регистрирует предупреждение в журнале регистрации. +// Процедура ЗаписатьПредупреждение(Ссылка, ИнформацияОбОшибке) Если ТипЗнч(ИнформацияОбОшибке) = Тип("ИнформацияОбОшибке") Тогда ТекстДляЖурнала = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке); @@ -1066,13 +1470,6 @@ ТекстДляЖурнала); КонецПроцедуры -// Регистрация причины неудаления. -// -// Параметры: -// ПараметрыВыполнения - Структура - где: -// * ПрепятствующиеУдалению - ТаблицаЗначений - -// СтрокаТаблицы - СтрокаТаблицыЗначений - -// Процедура ЗаписатьПричинуВРезультат(ПараметрыВыполнения, СтрокаТаблицы) УдаляемыйТип = ТипЗнч(СтрокаТаблицы.УдаляемыйСсылка); УдаляемыйИнформация = СформироватьИнформациюОТипах(ПараметрыВыполнения, УдаляемыйТип); @@ -1084,160 +1481,64 @@ Если ПараметрыВыполнения.НеУдаленные.Найти(СтрокаТаблицы.УдаляемыйСсылка) = Неопределено Тогда ПараметрыВыполнения.НеУдаленные.Добавить(СтрокаТаблицы.УдаляемыйСсылка); КонецЕсли; - + Причина = ПараметрыВыполнения.ПрепятствующиеУдалению.Добавить(); ЗаполнитьЗначенияСвойств(Причина, СтрокаТаблицы); - Причина.УдаляемыйТип = УдаляемыйТип; - Причина.ОбнаруженныйТип = ТипЗнч(Причина.ОбнаруженныйСсылка); - - Если СтрокаТаблицы.ОбнаруженныйСсылка = Неопределено Тогда - Если Метаданные.Константы.Содержит(СтрокаТаблицы.ОбнаруженныйМетаданные) Тогда - Причина.ОбнаруженныйТип = Тип("КонстантаМенеджерЗначения." + СтрокаТаблицы.ОбнаруженныйМетаданные.Имя); - Иначе - Причина.ОбнаруженныйСсылка = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + + МестоИспользования = СтрокаТаблицы.МестоИспользования; + + Если ТипЗнч(МестоИспользования) = Тип("Строка") Тогда + Причина.ОписаниеОшибки = МестоИспользования; + Причина.МестоИспользования = Неопределено; + КонецЕсли; + + Если МестоИспользования = Неопределено Тогда + Если НЕ Метаданные.Константы.Содержит(СтрокаТаблицы.Метаданные) Тогда + Причина.ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Обнаружены неразрешимые ссылки (%1)'"), СтрокаТаблицы.ОбнаруженныйМетаданные.Представление()); - Причина.ОбнаруженныйТип = Тип("Строка"); Возврат; КонецЕсли; КонецЕсли; - // Регистрация информации об объектах метаданных (если требуется). - ОбнаруженныйИнформация = СформироватьИнформациюОТипах(ПараметрыВыполнения, Причина.ОбнаруженныйТип); - - Если ОбнаруженныйИнформация.Вид = "ДОКУМЕНТ" Тогда - Значения = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Причина.ОбнаруженныйСсылка, "ПометкаУдаления, Проведен"); - Причина.ОбнаруженныйСтатус = ?(Значения.ПометкаУдаления, "Удален", ?(Значения.Проведен, "Проведен", "")); - ИначеЕсли ОбнаруженныйИнформация.Ссылочный Тогда - Причина.ОбнаруженныйСтатус = ?(ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Причина.ОбнаруженныйСсылка, "ПометкаУдаления"), "Удален", ""); - КонецЕсли; КонецПроцедуры -Функция ОбъектыДопускающиеУдаление() +Функция СвязьТолькоСВедущимиИзмерениямиРегистров(ОписаниеСвязиДанных) + Результат = Ложь; + + Если ОбщегоНазначения.ЭтоРегистр(ОписаниеСвязиДанных.Метаданные) Тогда + + Для каждого Измерение Из ОписаниеСвязиДанных.Метаданные.Измерения Цикл + + Если ОписаниеСвязиДанных.Данные[Измерение.Имя] = ОписаниеСвязиДанных.Ссылка + И Измерение.Ведущее Тогда + Результат = Истина; + Прервать; + КонецЕсли; + + Если ОписаниеСвязиДанных.Данные["Регистратор"] = ОписаниеСвязиДанных.Ссылка Тогда + Результат = Истина; + КонецЕсли; + + КонецЦикла; - Результат = Новый Массив; - Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда - МодульУправлениеДоступомСлужебный = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступомСлужебный"); - МодульУправлениеДоступомСлужебный.ПриДобавленииИсключенийПоискаСсылокДопускающихУдаление(Результат); КонецЕсли; Возврат Результат; - КонецФункции -Процедура ИсключениеОбъектовДопускающихУдаление(ПрепятствующиеУдалению, ДопускающиеУдаление) - - Индекс = ПрепятствующиеУдалению.Количество() - 1; - Пока Индекс >= 0 Цикл - Если ДопускающиеУдаление.Найти(ПрепятствующиеУдалению[Индекс].Метаданные) <> Неопределено Тогда - ПрепятствующиеУдалению.Удалить(Индекс); - КонецЕсли; - Индекс = Индекс - 1; - КонецЦикла; - -КонецПроцедуры - //////////////////////////////////////////////////////////////////////////////// // Передача информации на клиент. -// Инициализирует структуру параметров, необходимых для передачи на клиент. -Процедура ИнициализироватьПараметрыДляРегистрацииПрогресса(ПараметрыВыполнения) - Если Не ПараметрыВыполнения.Интерактивное Тогда - Возврат; - КонецЕсли; - - ПараметрыВыполнения.Вставить("ДостигнутыйПроцент", 0); - ПараметрыВыполнения.Вставить("Диапазон", 0); - ПараметрыВыполнения.Вставить("СледующийКонтрольныйНомер", 0); - ПараметрыВыполнения.Вставить("Номер", 0); - ПараметрыВыполнения.Вставить("Всего", 0); - ПараметрыВыполнения.Вставить("Время", ТекущаяДатаСеанса() - 0.1); - - ПараметрыВыполнения.Вставить("Диапазоны", Новый Соответствие); - - ОбщийВес = 0; - Если ПараметрыВыполнения.ИскатьПомеченные Тогда - ПараметрыВыполнения.Диапазоны.Вставить("ПередПоискомПомеченныхНаУдаление", 5); - ПараметрыВыполнения.Диапазоны.Вставить("ПоискПомеченныхНаУдаление", 4); - ПараметрыВыполнения.Диапазоны.Вставить("ВсеПомеченныеНаУдаление", 1); - ОбщийВес = ОбщийВес + 10; - КонецЕсли; - Если ПараметрыВыполнения.УдалятьПомеченные Тогда - Если ПараметрыВыполнения.Монопольно Тогда - ПараметрыВыполнения.Диапазоны.Вставить("МонопольноеУдаление", 80); - ПараметрыВыполнения.Диапазоны.Вставить("ПрепятствующиеУдалению", 10); - Иначе // Не монопольно. - ПараметрыВыполнения.Диапазоны.Вставить("ТехнологическиеОбъекты", 10); - ПараметрыВыполнения.Диапазоны.Вставить("ПользовательскиеОбъекты", 70); - ПараметрыВыполнения.Диапазоны.Вставить("ПовторноУдаляемые", 10); - КонецЕсли; - ОбщийВес = ОбщийВес + 90; - КонецЕсли; - Если ОбщийВес <> 0 И ОбщийВес <> 100 Тогда - Коэффициент = 100/ОбщийВес; - Для Каждого КлючИЗначение Из ПараметрыВыполнения.Диапазоны Цикл - ПараметрыВыполнения.Диапазоны.Вставить(КлючИЗначение.Ключ, Окр(КлючИЗначение.Значение*Коэффициент, 0)); - КонецЦикла; - КонецЕсли; - -КонецПроцедуры - -// Регистрирует начало процесса. -Процедура ОтметитьНачалоОбходаКоллекции(ПараметрыВыполнения, ИмяКоллекции, Коллекция = Неопределено) - Если Не ПараметрыВыполнения.Интерактивное Тогда - Возврат; - КонецЕсли; - ПараметрыВыполнения.ДостигнутыйПроцент = ПараметрыВыполнения.ДостигнутыйПроцент + ПараметрыВыполнения.Диапазон; - ПараметрыВыполнения.Диапазон = ПараметрыВыполнения.Диапазоны[ИмяКоллекции]; - ПараметрыВыполнения.СледующийКонтрольныйНомер = 0; - ПараметрыВыполнения.Номер = 0; - - Если Коллекция <> Неопределено Или ПараметрыВыполнения.Свойство(ИмяКоллекции, Коллекция) Тогда - ПараметрыВыполнения.Всего = Коллекция.Количество(); - Иначе - ПараметрыВыполнения.Всего = 1; - ОтметитьПрогрессОбходаКоллекции(ПараметрыВыполнения, ИмяКоллекции); - КонецЕсли; -КонецПроцедуры - -// Регистрирует прогресс. +// Параметры: +// ПараметрыВыполнения - см. ПараметрыУдаления +// ИмяКоллекции - Строка +// Процедура ОтметитьПрогрессОбходаКоллекции(ПараметрыВыполнения, ИмяКоллекции) - Если Не ПараметрыВыполнения.Интерактивное Тогда - Возврат; - КонецЕсли; - - // Проверяется целесообразность передачи информации на клиент. - Если ПараметрыВыполнения.ИскатьПомеченные Тогда - Возврат; // Если текущий шаг - расчет помеченных, то оповещать клиент не требуется. - КонецЕсли; - - // Проверяется целесообразность передачи информации на клиент. - Если ПараметрыВыполнения.Всего < 10 Тогда - Возврат; // Если всего обрабатывается меньше 10 объектов - то оповещать клиент не требуется. - КонецЕсли; - - // Регистрация прогресса. ПараметрыВыполнения.Номер = ПараметрыВыполнения.Номер + 1; - // Проверка что подошло время передачи информации на клиент. - Если ТекущаяДатаСеанса() < ПараметрыВыполнения.Время Тогда - Возврат; // Не чаще, чем раз в 3 секунды. - КонецЕсли; - - // Установка следующего времени передачи информации на клиент. - ПараметрыВыполнения.Время = ПараметрыВыполнения.Время + ПараметрыВыполнения.ПериодЗаписи; - - // Проверка что набралось достаточно изменений для передачи информации на клиент. - Если ПараметрыВыполнения.Номер < ПараметрыВыполнения.СледующийКонтрольныйНомер Тогда - Возврат; // Не чаще, чем набралось измененных объектов для изменения прогресса на 1 шаг. - КонецЕсли; - ШагОповещения = Цел(ПараметрыВыполнения.Всего / 100) + 1; - ПараметрыВыполнения.СледующийКонтрольныйНомер = ПараметрыВыполнения.Номер + ШагОповещения; - - // Расчет информации для передачи на клиент. - - Процент = ПараметрыВыполнения.ДостигнутыйПроцент - + ПараметрыВыполнения.Диапазон * ПараметрыВыполнения.Номер / ПараметрыВыполнения.Всего; + Процент = (ПараметрыВыполнения.КоличествоОбработанных) + / ПараметрыВыполнения.КоличествоУдаляемых; // Подготовка передаваемых параметров. Если ИмяКоллекции = "ПередПоискомПомеченныхНаУдаление" Тогда @@ -1252,27 +1553,16 @@ Текст = НСтр("ru = 'Анализ помеченных на удаление.'"); - ИначеЕсли ИмяКоллекции = "ТехнологическиеОбъекты" Тогда - - Текст = НСтр("ru = 'Подготовка к удалению.'"); - ИначеЕсли ИмяКоллекции = "МонопольноеУдаление" Тогда Текст = НСтр("ru = 'Выполняется удаление объектов.'"); ИначеЕсли ИмяКоллекции = "ПользовательскиеОбъекты" Тогда - НеУдалено = ПараметрыВыполнения.НеУдаленные.Количество(); - ПредставлениеНомер = Формат(ПараметрыВыполнения.Номер, "ЧН=0; ЧГ="); - ПредставлениеВсего = Формат(ПараметрыВыполнения.Всего, "ЧН=0; ЧГ="); - ПредставлениеНеУдалено = Формат(НеУдалено, "ЧН=0; ЧГ="); - Если НеУдалено = 0 Тогда // Переход на СтрШаблон невозможен. - Текст = НСтр("ru = 'Удалено: %1 из %2 объектов.'"); - Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Текст, ПредставлениеНомер, ПредставлениеВсего); - Иначе - Текст = НСтр("ru = 'Обработано: %1 из %2 объектов, из них не удалено: %3.'"); - Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Текст, ПредставлениеНомер, ПредставлениеВсего, ПредставлениеНеУдалено); - КонецЕсли; + Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Обработано %1 из %2'"), + ПараметрыВыполнения.КоличествоОбработанных, + ПараметрыВыполнения.КоличествоУдаляемых); ИначеЕсли ИмяКоллекции = "ПовторноУдаляемые" Тогда @@ -1294,10 +1584,36 @@ КонецЕсли; - // Регистрация сообщения для чтения из клиентского сеанса. ДлительныеОперации.СообщитьПрогресс(Процент, Текст); КонецПроцедуры #КонецОбласти +Функция ОбъединениеТаблиц(Таблица1, Таблица2, СохранятьПорядок = Ложь) + Возврат УдалениеПомеченныхОбъектовСлужебный.ОбъединениеТаблиц(Таблица1, Таблица2, СохранятьПорядок); +КонецФункции + +Процедура ОтправитьСтатистику(РежимУдаления, ВремяВыполнения, КоличествоУдаляемыхЭлементов) + + Если НЕ ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЦентрМониторинга") Тогда + Возврат; + КонецЕсли; + + ЦентрМониторингаМенеджер = ОбщегоНазначения.ОбщийМодуль("ЦентрМониторинга"); + ЦентрМониторингаМенеджер.ЗаписатьОперациюБизнесСтатистики( + "БазоваяФункциональность.УдалениеПомеченных."+РежимУдаления, ВремяВыполнения, + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='Количество элементов: %1'"), КоличествоУдаляемыхЭлементов)); + +КонецПроцедуры + +Функция ОтменаИсключенийПоискаСсылокПриУдаленииОбъектов() + + ОтменаИсключений = Новый Массив; + ОтменаИсключений.Добавить(Метаданные.Справочники.ВнешниеПользователи); + Возврат ОтменаИсключений; + +КонецФункции + +#КонецОбласти + #КонецЕсли diff --git a/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/УдалениеПомеченныхОбъектов.mdo b/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/УдалениеПомеченныхОбъектов.mdo index efe09118a..cfac3cfc4 100644 --- a/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/УдалениеПомеченныхОбъектов.mdo +++ b/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/УдалениеПомеченныхОбъектов.mdo @@ -31,6 +31,29 @@ PersonalComputer MobileDevice + + НастройкиУдаленияОбъектов + + ru + Настройки удаления объектов + + PersonalComputer + MobileDevice + + + ВыборОбъектовМетаданныхПоПодсистемам + + ru + Выбор объектов метаданных по подсистемам + + + + ru + + + PersonalComputer + MobileDevice + УдалениеПомеченныхОбъектов diff --git a/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/Forms/УправляемаяФорма/Module.bsl b/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/Forms/УправляемаяФорма/Module.bsl index 524bb2648..7dfd950b4 100644 --- a/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/Forms/УправляемаяФорма/Module.bsl +++ b/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/Forms/УправляемаяФорма/Module.bsl @@ -1100,7 +1100,8 @@ // Параметры: // ВыбранныеФайлы - Массив из Строка - результат выбора файла. // ДополнительныеПараметры - Структура - произвольные дополнительные параметры: -// * ОбъектХранения - Структура, ФормаКлиентскогоПриложения - приемник для хранения свойства. +// * ОбъектХранения - Структура +// - ФормаКлиентскогоПриложения - приемник для хранения свойства. // * ИмяСвойства - Строка - имя свойства объекта хранения. // * Элемент - ПолеФормы - источник события выбора файла. // @@ -1146,7 +1147,7 @@ // в зависимости от пометки текущей строки. // // Параметры: -// ТекСтрока - Строка дерева значений. +// ТекСтрока - строка дерева значений. // &НаКлиенте Процедура УстановитьПометкиПодчиненных(ТекСтрока, ИмяФлажка) @@ -1171,7 +1172,7 @@ // в зависимости от пометки текущей строки. // // Параметры: -// ТекСтрока - Строка дерева значений. +// ТекСтрока - строка дерева значений. // &НаКлиенте Процедура УстановитьПометкиРодителей(ТекСтрока, ИмяФлажка) @@ -1898,7 +1899,7 @@ // Возвращает Истина, если клиентское приложение запущено под управлением ОС Windows. // // Возвращаемое значение: -// Булево - Если нет клиентского приложения, возвращается Ложь. +// Булево - если нет клиентского приложения, возвращается Ложь. // &НаКлиенте Функция ЭтоWindowsКлиент() diff --git a/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/Forms/УправляемаяФормаНастройкиОтладкиОбработчиков/Module.bsl b/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/Forms/УправляемаяФормаНастройкиОтладкиОбработчиков/Module.bsl index ba6ab5ae2..c56405c67 100644 --- a/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/Forms/УправляемаяФормаНастройкиОтладкиОбработчиков/Module.bsl +++ b/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/Forms/УправляемаяФормаНастройкиОтладкиОбработчиков/Module.bsl @@ -76,8 +76,9 @@ КонецПроцедуры // Параметры: -// ВыбранныеФайлы - Массив из Строка, Неопределено - результат выбора файла. -// ДополнительныеПараметры - Структура - произвольные параметры: +// ВыбранныеФайлы - Массив из Строка +// - Неопределено - результат выбора файла. +// ДополнительныеПараметры - Структура: // * Элемент - ПолеФормы - источник выбора файла. // &НаКлиенте diff --git a/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/ObjectModule.bsl b/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/ObjectModule.bsl index ac0e5656f..4e4b40b3d 100644 --- a/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/ObjectModule.bsl +++ b/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/ObjectModule.bsl @@ -191,11 +191,11 @@ // Преобразует значения из строки в массив, используя указанный разделитель. // // Параметры: -// Стр - Строка - Разбираемая строка. -// Разделитель - Строка - подстрока разделитель. +// Стр - Строка - разбираемая строка. +// Разделитель - Строка - подстрока разделитель. // // Возвращаемое значение: -// Массив - полученный массив значений. +// Массив из Строка - полученный массив значений. // Функция МассивИзСтроки(Знач Стр, Разделитель=",") Экспорт @@ -208,7 +208,7 @@ ПраваяЧасть = ОтделитьРазделителем(Стр, Разделитель); КонецЦикла; - Возврат(Массив); + Возврат Массив; КонецФункции @@ -221,13 +221,13 @@ // Если параметр не задан, то функция работает в режиме совместимости со своей предыдущей версией: // - для разделителя-пробела пустые строки не включаются в результат, для остальных разделителей пустые строки // включаются в результат. -// Е если параметр Строка не содержит значащих символов или не содержит ни одного символа (пустая строка), то в +// - если параметр Строка не содержит значащих символов или не содержит ни одного символа (пустая строка), то в // случае разделителя-пробела результатом функции будет массив, содержащий одно значение "" (пустая строка), а // при других разделителях результатом функции будет пустой массив. // // // Возвращаемое значение: -// Массив - массив строк. +// Массив из Строка - массив строк. // // Пример: // РазложитьСтрокуВМассивПодстрок(",один,,два,", ",") - возвратит массив из 5 элементов, три из которых - пустые @@ -312,12 +312,12 @@ // Разбирает строку, выделяя из нее префикс и числовую часть. // // Параметры: -// Стр - Строка - Разбираемая строка; -// ЧисловаяЧасть - Число - Переменная, в которую возвратится числовая часть строки; -// Режим - Строка - Если "Число", то возвратит числовую часть, иначе - префикс. +// Стр - Строка - разбираемая строка; +// ЧисловаяЧасть - Число - переменная, в которую возвратится числовая часть строки; +// Режим - Строка - если "Число", то возвратит числовую часть, иначе - префикс. // // Возвращаемое значение: -// Строка - Префикс строки +// Строка - префикс строки // Функция ПолучитьПрефиксЧислоНомера(Знач Стр, ЧисловаяЧасть = "", Режим = "") Экспорт @@ -408,7 +408,7 @@ // не является ошибкой проверки конфигурации. // // Параметры: -// Стр - Строка - Номер или код; +// Стр - Строка - номер или код; // Добавок - Строка - добавляемая к префиксу подстрока; // Длина - Число - требуемая результирующая длина строки; // Режим - Строка - "Слева" - подстрока добавляется слева к префиксу, иначе - справа. @@ -539,7 +539,8 @@ // Возвращает объект ОписаниеТипов, содержащий указанный тип. // // Параметры: -// ЗначениеТипа - Строка, Тип - Содержит имя типа или значение типа Тип. +// ЗначениеТипа - Строка +// - Тип - содержит имя типа или значение типа Тип. // // Возвращаемое значение: // ОписаниеТипов - объект Описание типов. @@ -569,10 +570,11 @@ // Возвращает пустое (дефолтное) значение указанного типа. // // Параметры: -// Тип - Строка, Тип - имя типа или значение типа Тип. +// Тип - Строка +// - Тип - имя типа или значение типа Тип. // // Возвращаемое значение: -// Произвольный - Пустое значение указанного типа. +// Произвольный - пустое значение указанного типа. // Функция одПолучитьПустоеЗначение(Тип) Экспорт @@ -592,14 +594,18 @@ // Осуществляет простой поиск объекта информационной базы по указанному свойству. // // Параметры: -// Менеджер - СправочникМенеджер, ДокументМенеджер - Менеджер искомого объекта; +// Менеджер - СправочникМенеджер +// - ДокументМенеджер - менеджер искомого объекта; // Свойство - Строка - свойство, по которому осуществляем поиск: Имя, Код, // Наименование или Имя индексируемого реквизита. -// Значение - Строка, Число, Дата - Значение свойства, по которому ищем объект. -// НайденныйОбъектПоУникальномуИдентификатору - СправочникОбъект, ДокументОбъект - Объект информационной базы, +// Значение - Строка +// - Число +// - Дата - значение свойства, по которому ищем объект. +// НайденныйОбъектПоУникальномуИдентификатору - СправочникОбъект +// - ДокументОбъект - объект информационной базы, // который был найден по уникальному идентификатору в ходе выполнения функции. // ОбщаяСтруктураСвойств - структура - свойства искомого объекта. -// ОбщиеСвойстваПоиска - Структура - общие свойства поиска. +// ОбщиеСвойстваПоиска - Структура // СтрокаЗапросаПоискаПоУникальномуИдентификатору - Строка - текст запроса для поиска по уникальному идентификатору. // // Возвращаемое значение: @@ -718,7 +724,7 @@ // Свойство - Строка - имя свойства, по-которому ищем объект. // // Возвращаемое значение: -// Произвольный - Найденный объект информационной базы. +// Произвольный - найденный объект информационной базы. // Функция одПолучитьЗначениеПоСтроке(Стр, Тип, Свойство = "") Экспорт @@ -752,7 +758,7 @@ // Возвращает строковое представление типа значения. // // Параметры: -// ЗначениеИлиТип - Произвольный - Значение любого типа или Тип. +// ЗначениеИлиТип - Произвольный - значение любого типа или Тип. // // Возвращаемое значение: // Строка - строковое представление типа значения. @@ -801,7 +807,7 @@ // Функция может быть использована в обработчиках событий, программный код // которых хранится в правила обмена данными. // Параметры: -// ОписаниеТипов - ОписаниеТипов - Объект ОписаниеТипов, XML представление которого требуется получить. +// ОписаниеТипов - ОписаниеТипов - объект ОписаниеТипов, XML представление которого требуется получить. // // Возвращаемое значение: // Строка - XML представление переданного объекта ОписаниеТипов. @@ -855,7 +861,7 @@ // Заменяет недопустимые символы XML на другой символ. // // Параметры: -// Текст - Строка - Текст, в котором следует заменить символы. +// Текст - Строка - текст, в котором следует заменить символы. // СимволЗамены - Строка - значение на которое следует заменять недопустимые символы. // Возвращаемое значение: // Строка - результат замены. @@ -947,8 +953,8 @@ // // Параметры: // Объект - ЗаписьXML - объект типа XMLЗапись. -// Имя - Строка - Имя элемента. -// Значение - Произвольный - Значение элемента. +// Имя - Строка - имя элемента. +// Значение - Произвольный - значение элемента. // Процедура одЗаписатьЭлемент(Объект, Имя, Значение="") Экспорт @@ -1016,11 +1022,11 @@ // Параметры: // Объект - ЧтениеXML - объект типа XMLЧтение, спозиционированный на начале элемента, // атрибут которого требуется получить. -// Тип - Тип - Тип атрибута. -// Имя - Строка - Имя атрибута. +// Тип - Тип - тип атрибута. +// Имя - Строка - имя атрибута. // // Возвращаемое значение: -// Произвольный - Значение атрибута полученное по имени и приведенное к указанному типу. +// Произвольный - значение атрибута полученное по имени и приведенное к указанному типу. // Функция одАтрибут(Объект, Тип, Имя) Экспорт @@ -1252,7 +1258,7 @@ // Параметры: // КодСообщения - Строка - код сообщения. // СтрокаОшибки - Строка - строковое содержание ошибки. -// Объект - Произвольный - Объект, к которому относится ошибка. +// Объект - Произвольный - объект, к которому относится ошибка. // ТипОбъекта - Тип - тип объекта к которому относится ошибка. // // Возвращаемое значение: @@ -1317,8 +1323,8 @@ // Параметры: // КодСообщения - Строка - код сообщения. // СтрокаОшибки - Строка - строковое содержание ошибки. -// ПКО - СтрокаТаблицыЗначений - Правило конвертации объекта. -// ПКС - СтрокаТаблицыЗначений - Правило конвертации свойства. +// ПКО - СтрокаТаблицыЗначений - правило конвертации объекта. +// ПКС - СтрокаТаблицыЗначений - правило конвертации свойства. // Источник - Произвольный - источник при конвертации которого возникла ошибка. // ИмяОбработчика - Строка - имя обработчика в котором возникла ошибка. // Значение - Произвольный - значение, при конвертации которого возникла ошибка. @@ -1408,9 +1414,9 @@ // // Возвращаемое значение: // СтрокаТаблицыЗначений - ссылка на правило конвертации (строка в таблице правил): -// * Имя - Строка - -// * Наименование - Строка - -// * Источник - Строка - +// * Имя - Строка +// * Наименование - Строка +// * Источник - Строка // * Свойства - см. КоллекцияПравилаКонвертацииСвойств // Функция НайтиПравило(Объект = Неопределено, ИмяПравила = "") Экспорт @@ -1488,7 +1494,7 @@ // Устанавливает значение параметра в таблице параметров в форме обработки. // // Параметры: -// ИмяПараметра - Строка - Имя параметра. +// ИмяПараметра - Строка - имя параметра. // ЗначениеПараметра - Произвольный - значение параметра. // Процедура УстановитьЗначениеПараметраВТаблице(ИмяПараметра, ЗначениеПараметра) Экспорт @@ -1524,10 +1530,10 @@ КонецЦикла; КонецЕсли; - Отказ = Ложь; + Отказ = Ложь; УдалитьНепосредственно = Правило.Непосредственно; - - + + // Обработчик ПередУдалениемОбъектаВыборки Если Не ПустаяСтрока(Правило.ПередУдалением) Тогда @@ -1545,8 +1551,8 @@ Исключение - ЗаписатьИнформациюОбОшибкеОбработчикаОчисткиДанных(29, ОписаниеОшибки(), Правило.Имя, Объект, "ПередУдалениемОбъектаВыборки"); - + ЗаписатьИнформациюОбОшибкеОбработчикаОчисткиДанных(29, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), Правило.Имя, Объект, "ПередУдалениемОбъектаВыборки"); + КонецПопытки; Если Отказ Тогда @@ -1554,19 +1560,19 @@ Возврат; КонецЕсли; - - КонецЕсли; - - + + КонецЕсли; + + Попытка ВыполнитьУдалениеОбъекта(Объект, Свойства, УдалитьНепосредственно); - + Исключение - ЗаписатьИнформациюОбОшибкеОбработчикаОчисткиДанных(24, ОписаниеОшибки(), Правило.Имя, Объект, ""); - - КонецПопытки; + ЗаписатьИнформациюОбОшибкеОбработчикаОчисткиДанных(24, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), Правило.Имя, Объект, ""); + + КонецПопытки; КонецПроцедуры @@ -1714,7 +1720,7 @@ КонецЕсли; Исключение - ЗаписатьИнформациюОбОшибкеВыгрузкиОбработчикаПКО(64, ОписаниеОшибки(), ПКО, Источник, НСтр("ru = 'ПередКонвертациейОбъекта (глобальный)'")); + ЗаписатьИнформациюОбОшибкеВыгрузкиОбработчикаПКО(64, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), ПКО, Источник, НСтр("ru = 'ПередКонвертациейОбъекта (глобальный)'")); КонецПопытки; Если Отказ Тогда // Отказ от дальнейшей обработки правила. @@ -1740,7 +1746,7 @@ КонецЕсли; Исключение - ЗаписатьИнформациюОбОшибкеВыгрузкиОбработчикаПКО(41, ОписаниеОшибки(), ПКО, Источник, "ПередВыгрузкойОбъекта"); + ЗаписатьИнформациюОбОшибкеВыгрузкиОбработчикаПКО(41, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), ПКО, Источник, "ПередВыгрузкойОбъекта"); КонецПопытки; Если Отказ Тогда // Отказ от дальнейшей обработки правила. @@ -2016,7 +2022,7 @@ КонецЕсли; Исключение - ЗаписатьИнформациюОбОшибкеВыгрузкиОбработчикаПКО(42, ОписаниеОшибки(), ПКО, Источник, "ПриВыгрузкеОбъекта"); + ЗаписатьИнформациюОбОшибкеВыгрузкиОбработчикаПКО(42, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), ПКО, Источник, "ПриВыгрузкеОбъекта"); КонецПопытки; Если Отказ Тогда // Отказ от записи объекта в файл. @@ -2053,7 +2059,7 @@ КонецЕсли; Исключение - ЗаписатьИнформациюОбОшибкеВыгрузкиОбработчикаПКО(43, ОписаниеОшибки(), ПКО, Источник, "ПослеВыгрузкиОбъекта"); + ЗаписатьИнформациюОбОшибкеВыгрузкиОбработчикаПКО(43, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), ПКО, Источник, "ПослеВыгрузкиОбъекта"); КонецПопытки; Если Отказ Тогда // Отказ от записи объекта в файл. @@ -2116,21 +2122,21 @@ КонецЕсли; Исключение - ЗаписатьИнформациюОбОшибкеВыгрузкиОбработчикаПКО(76, ОписаниеОшибки(), ПКО, Источник, "ЕстьОбработчикПослеВыгрузкиВФайл"); + ЗаписатьИнформациюОбОшибкеВыгрузкиОбработчикаПКО(76, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), ПКО, Источник, "ЕстьОбработчикПослеВыгрузкиВФайл"); КонецПопытки; КонецЕсли; Возврат УзелСсылки; -КонецФункции // ВыгрузитьПоПравилу() +КонецФункции // Возвращает фрагмент текста языка запросов, который выражает условие ограничения на интервал дат. // // Параметры: -// Свойства - Метаданные - Свойства объекта метаданных. -// ИмяТипа - Строка - Имя типа. -// ИмяГруппыТаблицы - Строка - Имя группы таблицы. +// Свойства - Метаданные - свойства объекта метаданных. +// ИмяТипа - Строка - имя типа. +// ИмяГруппыТаблицы - Строка - имя группы таблицы. // ВыборкаДляОчисткиДанных - Булево - выборка для очистки данных. // // Возвращаемое значение: @@ -2194,8 +2200,8 @@ // Формирует результат запроса для выгрузки очистки данных. // // Параметры: -// Свойства - Структура - описание типа значения, см. СтруктураПараметровМенеджера. -// ИмяТипа - Строка - Имя типа. +// Свойства - см. СтруктураПараметровМенеджера. +// ИмяТипа - Строка - имя типа. // ВыборкаДляОчисткиДанных - Булево - выборка для очистки данных. // УдалятьОбъектыНепосредственно - Булево - признак необходимости непосредственного удаления. // ВыбиратьВсеПоля - Булево - признак необходимости выбирать все поля. @@ -2335,8 +2341,8 @@ // Формирует выборку для выгрузки очистки данных. // // Параметры: -// Свойства - Менеджер - Свойства объекта метаданных. -// ИмяТипа - Строка - Имя типа. +// Свойства - Менеджер - свойства объекта метаданных. +// ИмяТипа - Строка - имя типа. // ВыборкаДляОчисткиДанных - Булево - выборка для очистки данных. // УдалятьОбъектыНепосредственно - Булево - признак необходимости удалять непосредственно. // ВыбиратьВсеПоля - Булево - признак необходимости выбирать все поля. @@ -2368,7 +2374,7 @@ // удаления. // // Параметры: -// ТаблицаДанных - ТаблицаЗначений - Таблица для заполнения. +// ТаблицаДанных - ТаблицаЗначений - таблица для заполнения. // Процедура ЗаполнитьСписокТиповДоступныхДляУдаления(ТаблицаДанных) Экспорт @@ -2425,8 +2431,8 @@ // в зависимости от пометки текущей строки. // // Параметры: -// ТекСтрока - СтрокаДереваЗначений - Строка, у которой следует обработать подчиненные строки. -// Реквизит - Строка - Имя реквизита, в котором содержится пометка. +// ТекСтрока - СтрокаДереваЗначений - строка, у которой следует обработать подчиненные строки. +// Реквизит - Строка - имя реквизита, в котором содержится пометка. // Процедура УстановитьПометкиПодчиненных(ТекСтрока, Реквизит) Экспорт @@ -2459,8 +2465,8 @@ // в зависимости от пометки текущей строки. // // Параметры: -// ТекСтрока - СтрокаДереваЗначений - Строка, у которой следует обработать родительские строки. -// Реквизит - Строка - Имя реквизита, в котором содержится пометка. +// ТекСтрока - СтрокаДереваЗначений - строка, у которой следует обработать родительские строки. +// Реквизит - Строка - имя реквизита, в котором содержится пометка. // Процедура УстановитьПометкиРодителей(ТекСтрока, Реквизит) Экспорт @@ -2576,7 +2582,7 @@ // Выполняет запись имени, типа и значения параметра в фай сообщения обмена для передачи в базу-приемник. // // Параметры: -// Имя - Строка - Имя параметра. +// Имя - Строка - имя параметра. // ИсходноеЗначениеПараметра - Произвольный - значение параметра. // ПравилоКонвертации - Строка - имя правила конвертации для ссылочных типов. // @@ -2654,7 +2660,7 @@ // Возвращает текущее значение версии обработки. // // Возвращаемое значение: -// Число - Текущее значение версии обработки. +// Число - текущее значение версии обработки. // Функция ВерсияОбъекта() Экспорт @@ -2788,7 +2794,7 @@ // Деструктор внешней обработки. // // Параметры: -// ВключенРежимОтладки - Булево - Признак включения режима отладки. +// ВключенРежимОтладки - Булево - признак включения режима отладки. // Процедура ДеструкторВнешнейОбработкиОбработчиковСобытий(ВключенРежимОтладки = Ложь) Экспорт @@ -2935,7 +2941,7 @@ ВременныйФайлЗаписей.Открыть(ИмяФайлаЗаписей, КодировкаТекста.UTF8); Исключение ЗаписатьИнформациюОбОшибкеОбработчикиКонвертации(1000, - ОписаниеОшибки(), + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), НСтр("ru = 'Ошибка при создании временного файла для выгрузки данных'")); ВызватьИсключение; КонецПопытки; @@ -2960,7 +2966,7 @@ ВременныйФайл.Открыть(ИмяВременногоФайла, КодировкаТекста.UTF8); Исключение ЗаписатьИнформациюОбОшибкеОбработчикиКонвертации(1000, - ОписаниеОшибки(), + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), НСтр("ru = 'Ошибка при открытии временного файла для переноса данных в файл обмена'")); ВызватьИсключение; КонецПопытки; @@ -3071,9 +3077,9 @@ // Сохраняет в протокол выполнения (или выводит на экран) сообщения указанной структуры. // // Параметры: -// Код - Число. Код сообщения. -// СтруктураЗаписи - Структура. Структура записи протокола. -// ВзвестиФлагОшибок - Если истина, то - это сообщение об ошибке. Взводится ФлагОшибки. +// Код - Число - код сообщения. +// СтруктураЗаписи - Структура - структура записи протокола. +// ВзвестиФлагОшибок - если истина, то - это сообщение об ошибке. Взводится ФлагОшибки. // Функция ЗаписатьВПротоколВыполнения(Код="", СтруктураЗаписи=Неопределено, ВзвестиФлагОшибок=Истина, Уровень=0, Выравнивание=22, БезусловнаяЗаписьВПротоколОбмена = Ложь) Экспорт @@ -3247,47 +3253,47 @@ // Возвращаемое значение: // ТаблицаЗначений - коллекция правил конвертации данных: -// * Имя - Строка - -// * Наименование - Строка - -// * Порядок - Число - -// * СинхронизироватьПоИдентификатору - Булево - -// * НеСоздаватьЕслиНеНайден - Булево - -// * НеВыгружатьОбъектыСвойствПоСсылкам - Булево - -// * ПродолжитьПоискПоПолямПоискаЕслиПоИдентификаторуНеНашли - Булево - -// * ПриПереносеОбъектаПоСсылкеУстанавливатьТолькоGIUD - Булево - -// * ИспользоватьБыстрыйПоискПриЗагрузке - Булево - -// * ГенерироватьНовыйНомерИлиКодЕслиНеУказан - Булево - -// * МаленькоеКоличествоОбъектов - Булево - -// * КоличествоОбращенийДляВыгрузкиСсылки - Число - -// * КоличествоЭлементовВИБ - Число - -// * СпособВыгрузки - Произвольный - -// * Источник - Произвольный - -// * Приемник - Произвольный - -// * ТипИсточника - Строка - -// * ПередВыгрузкой - Произвольный - -// * ПриВыгрузке - Произвольный - -// * ПослеВыгрузки - Произвольный - -// * ПослеВыгрузкиВФайл - Произвольный - -// * ЕстьОбработчикПередВыгрузкой - Булево - -// * ЕстьОбработчикПриВыгрузке - Булево - -// * ЕстьОбработчикПослеВыгрузки - Булево - -// * ЕстьОбработчикПослеВыгрузкиВФайл - Булево - -// * ПередЗагрузкой - Произвольный - -// * ПриЗагрузке - Произвольный - -// * ПослеЗагрузки - Произвольный - -// * ПоследовательностьПолейПоиска - Произвольный - +// * Имя - Строка +// * Наименование - Строка +// * Порядок - Число +// * СинхронизироватьПоИдентификатору - Булево +// * НеСоздаватьЕслиНеНайден - Булево +// * НеВыгружатьОбъектыСвойствПоСсылкам - Булево +// * ПродолжитьПоискПоПолямПоискаЕслиПоИдентификаторуНеНашли - Булево +// * ПриПереносеОбъектаПоСсылкеУстанавливатьТолькоGIUD - Булево +// * ИспользоватьБыстрыйПоискПриЗагрузке - Булево +// * ГенерироватьНовыйНомерИлиКодЕслиНеУказан - Булево +// * МаленькоеКоличествоОбъектов - Булево +// * КоличествоОбращенийДляВыгрузкиСсылки - Число +// * КоличествоЭлементовВИБ - Число +// * СпособВыгрузки - Произвольный +// * Источник - Произвольный +// * Приемник - Произвольный +// * ТипИсточника - Строка +// * ПередВыгрузкой - Произвольный +// * ПриВыгрузке - Произвольный +// * ПослеВыгрузки - Произвольный +// * ПослеВыгрузкиВФайл - Произвольный +// * ЕстьОбработчикПередВыгрузкой - Булево +// * ЕстьОбработчикПриВыгрузке - Булево +// * ЕстьОбработчикПослеВыгрузки - Булево +// * ЕстьОбработчикПослеВыгрузкиВФайл - Булево +// * ПередЗагрузкой - Произвольный +// * ПриЗагрузке - Произвольный +// * ПослеЗагрузки - Произвольный +// * ПоследовательностьПолейПоиска - Произвольный // * ПоискПоТабличнымЧастям - см. КоллекцияПоискПоТабличнымЧастям -// * ЕстьОбработчикПередЗагрузкой - Булево - -// * ЕстьОбработчикПриЗагрузке - Булево - -// * ЕстьОбработчикПослеЗагрузки - Булево - -// * ЕстьОбработчикПоследовательностьПолейПоиска - Булево - +// * ЕстьОбработчикПередЗагрузкой - Булево +// * ЕстьОбработчикПриЗагрузке - Булево +// * ЕстьОбработчикПослеЗагрузки - Булево +// * ЕстьОбработчикПоследовательностьПолейПоиска - Булево // * СвойстваПоиска - см. КоллекцияПравилаКонвертацииСвойств // * Свойства - см. КоллекцияПравилаКонвертацииСвойств -// * Выгруженные - ТаблицаЗначений - -// * ВыгружатьПредставлениеИсточника - Булево - -// * НеЗамещать - Булево - -// * ЗапоминатьВыгруженные - Булево - -// * ВсеОбъектыВыгружены - Булево - +// * Выгруженные - ТаблицаЗначений +// * ВыгружатьПредставлениеИсточника - Булево +// * НеЗамещать - Булево +// * ЗапоминатьВыгруженные - Булево +// * ВсеОбъектыВыгружены - Булево // Функция КоллекцияПравилаКонвертации() @@ -3297,24 +3303,24 @@ // Возвращаемое значение: // ДеревоЗначений - коллекция правил выгрузки данных: -// * Включить - Число - -// * ЭтоГруппа - Булево - -// * Имя - Строка - -// * Наименование - Строка - -// * Порядок - Число - -// * СпособОтбораДанных - Произвольный - -// * ОбъектВыборки - Произвольный - -// * ПравилоКонвертации - Произвольный - -// * ПередОбработкой - Строка - -// * ПослеОбработки - Строка - -// * ПередВыгрузкой - Строка - -// * ПослеВыгрузки - Строка - -// * ИспользоватьОтбор - Булево - -// * НастройкиПостроителя - Произвольный - -// * ИмяОбъектаДляЗапроса - Строка - -// * ИмяОбъектаДляЗапросаРегистра - Строка - -// * ВыбиратьДанныеДляВыгрузкиОднимЗапросом - Булево - -// * СсылкаНаУзелОбмена - ПланОбменаСсылка - +// * Включить - Число +// * ЭтоГруппа - Булево +// * Имя - Строка +// * Наименование - Строка +// * Порядок - Число +// * СпособОтбораДанных - Произвольный +// * ОбъектВыборки - Произвольный +// * ПравилоКонвертации - Произвольный +// * ПередОбработкой - Строка +// * ПослеОбработки - Строка +// * ПередВыгрузкой - Строка +// * ПослеВыгрузки - Строка +// * ИспользоватьОтбор - Булево +// * НастройкиПостроителя - Произвольный +// * ИмяОбъектаДляЗапроса - Строка +// * ИмяОбъектаДляЗапросаРегистра - Строка +// * ВыбиратьДанныеДляВыгрузкиОднимЗапросом - Булево +// * СсылкаНаУзелОбмена - ПланОбменаСсылка // Функция КоллекцияПравилаВыгрузки() @@ -3324,8 +3330,8 @@ // Возвращаемое значение: // ТаблицаЗначений - коллекция правил поиска по табличным частям: -// * ИмяЭлемента - Произвольный - -// * ПоляПоискаТЧ - Массив из Произвольный - +// * ИмяЭлемента - Произвольный +// * ПоляПоискаТЧ - Массив из Произвольный // Функция КоллекцияПоискПоТабличнымЧастям() @@ -3339,46 +3345,46 @@ // Возвращаемое значение: // ТаблицаЗначений - коллекция правил конвертации свойств данных: -// * Имя - Строка - -// * Наименование - Строка - -// * Порядок - Число - -// * ЭтоГруппа - Булево - -// * ЭтоПолеПоиска - Булево - +// * Имя - Строка +// * Наименование - Строка +// * Порядок - Число +// * ЭтоГруппа - Булево +// * ЭтоПолеПоиска - Булево // * ПравилаГруппы - см. КоллекцияПравилаКонвертацииСвойств -// * ПравилаГруппыОтключенные - Произвольный - -// * ВидИсточника - Произвольный - -// * ВидПриемника - Произвольный - -// * УпрощеннаяВыгрузкаСвойства - Булево - -// * НуженУзелXMLПриВыгрузке - Булево - -// * НуженУзелXMLПриВыгрузкеГруппы - Булево - -// * ТипИсточника - Строка - -// * ТипПриемника - Строка - -// * Источник - Произвольный - -// * Приемник - Произвольный - -// * ПравилоКонвертации - Произвольный - -// * ПолучитьИзВходящихДанных - Булево - -// * НеЗамещать - Булево - -// * ЭтоОбязательноеСвойство - Булево - -// * ПередВыгрузкой - Произвольный - -// * ИмяОбработчикаПередВыгрузкой - Произвольный - -// * ПриВыгрузке - Произвольный - -// * ИмяОбработчикаПриВыгрузке - Произвольный - -// * ПослеВыгрузки - Произвольный - -// * ИмяОбработчикаПослеВыгрузки - Произвольный - -// * ПередОбработкойВыгрузки - Произвольный - -// * ИмяОбработчикаПередОбработкойВыгрузки - Произвольный - -// * ПослеОбработкиВыгрузки - Произвольный - -// * ИмяОбработчикаПослеОбработкиВыгрузки - Произвольный - -// * ЕстьОбработчикПередВыгрузкой - Булево - -// * ЕстьОбработчикПриВыгрузке - Булево - -// * ЕстьОбработчикПослеВыгрузки - Булево - -// * ЕстьОбработчикПередОбработкойВыгрузки - Булево - -// * ЕстьОбработчикПослеОбработкиВыгрузки - Булево - -// * ПриводитьКДлине - Число - -// * ИмяПараметраДляПередачи - Строка - -// * ПоискПоДатеНаРавенство - Булево - -// * ВыгружатьГруппуЧерезФайл - Булево - -// * СтрокаПолейПоиска - Произвольный - +// * ПравилаГруппыОтключенные - Произвольный +// * ВидИсточника - Произвольный +// * ВидПриемника - Произвольный +// * УпрощеннаяВыгрузкаСвойства - Булево +// * НуженУзелXMLПриВыгрузке - Булево +// * НуженУзелXMLПриВыгрузкеГруппы - Булево +// * ТипИсточника - Строка +// * ТипПриемника - Строка +// * Источник - Произвольный +// * Приемник - Произвольный +// * ПравилоКонвертации - Произвольный +// * ПолучитьИзВходящихДанных - Булево +// * НеЗамещать - Булево +// * ЭтоОбязательноеСвойство - Булево +// * ПередВыгрузкой - Произвольный +// * ИмяОбработчикаПередВыгрузкой - Произвольный +// * ПриВыгрузке - Произвольный +// * ИмяОбработчикаПриВыгрузке - Произвольный +// * ПослеВыгрузки - Произвольный +// * ИмяОбработчикаПослеВыгрузки - Произвольный +// * ПередОбработкойВыгрузки - Произвольный +// * ИмяОбработчикаПередОбработкойВыгрузки - Произвольный +// * ПослеОбработкиВыгрузки - Произвольный +// * ИмяОбработчикаПослеОбработкиВыгрузки - Произвольный +// * ЕстьОбработчикПередВыгрузкой - Булево +// * ЕстьОбработчикПриВыгрузке - Булево +// * ЕстьОбработчикПослеВыгрузки - Булево +// * ЕстьОбработчикПередОбработкойВыгрузки - Булево +// * ЕстьОбработчикПослеОбработкиВыгрузки - Булево +// * ПриводитьКДлине - Число +// * ИмяПараметраДляПередачи - Строка +// * ПоискПоДатеНаРавенство - Булево +// * ВыгружатьГруппуЧерезФайл - Булево +// * СтрокаПолейПоиска - Произвольный // Функция КоллекцияПравилаКонвертацииСвойств() @@ -3387,7 +3393,7 @@ КонецФункции // Возвращаемое значение: -// ТаблицаЗначений - стек выгрузки: +// ТаблицаЗначений: // * Ссылка - ЛюбаяСсылка - ссылка на выгружаемый объект. // Функция КоллекцияСтекВызововВыгрузкиДанных() @@ -3397,16 +3403,16 @@ КонецФункции // Возвращаемое значение: -// Структура - структура правил: +// Структура: // * ТаблицаПравилВыгрузки - см. КоллекцияПравилаВыгрузки // * ТаблицаПравилКонвертации - см. КоллекцияПравилаКонвертации -// * Алгоритмы - Структура - -// * Запросы - Структура - -// * Конвертация - Произвольный - -// * мXMLПравила - Произвольный - -// * ТаблицаНастройкиПараметров - ТаблицаЗначений - -// * Параметры - Структура - -// * ВерсияПлатформыПриемника - Строка - +// * Алгоритмы - Структура +// * Запросы - Структура +// * Конвертация - Произвольный +// * мXMLПравила - Произвольный +// * ТаблицаНастройкиПараметров - ТаблицаЗначений +// * Параметры - Структура +// * ВерсияПлатформыПриемника - Строка // Функция ОписаниеСтруктурыПравил() @@ -3434,7 +3440,7 @@ // Осуществляет загрузку правила конвертации группы свойств. // // Параметры: -// ПравилаОбмена - ЧтениеXML - Объект типа ЧтениеXML. +// ПравилаОбмена - ЧтениеXML - объект типа ЧтениеXML. // ТаблицаСвойств - см. КоллекцияПравилаКонвертацииСвойств // Процедура ЗагрузитьПКГС(ПравилаОбмена, ТаблицаСвойств) @@ -3660,7 +3666,7 @@ // Осуществляет загрузку правил конвертации свойств. // // Параметры: -// ПравилаОбмена - ЧтениеXML - Объект типа ЧтениеXML. +// ПравилаОбмена - ЧтениеXML - объект типа ЧтениеXML. // ТаблицаСвойств - ТаблицаЗначений - таблица значений, содержащая ПКС. // ТаблицаПоиска - ТаблицаЗначений - таблица значений, содержащая ПКС (синхронизирующих). // @@ -3688,7 +3694,7 @@ // Осуществляет загрузку правила конвертации значений. // // Параметры: -// ПравилаОбмена - ЧтениеXML - Объект типа ЧтениеXML. +// ПравилаОбмена - ЧтениеXML - объект типа ЧтениеXML. // Значения - соответствие значений объекта источника - строковым // представлениям объекта приемника. // ТипИсточника - значение Тип - типа Тип - тип объекта источника. @@ -3720,7 +3726,7 @@ // Осуществляет загрузку правил конвертации значений. // // Параметры: -// ПравилаОбмена - ЧтениеXML - Объект типа ЧтениеXML. +// ПравилаОбмена - ЧтениеXML - объект типа ЧтениеXML. // Значения - соответствие значений объекта источника - строковым // представлениям объекта приемника. // ТипИсточника - значение Тип - типа Тип - тип объекта источника. @@ -3757,8 +3763,8 @@ // Осуществляет загрузку правила конвертации объектов. // // Параметры: -// ПравилаОбмена - ЧтениеXML - Объект типа ЧтениеXML. -// ЗаписьXML - ЗаписьXML - Объект типа ЗаписьXML - правила, сохраняемые в файл обмена и +// ПравилаОбмена - ЧтениеXML - объект типа ЧтениеXML. +// ЗаписьXML - ЗаписьXML - объект типа ЗаписьXML - правила, сохраняемые в файл обмена и // используемые при загрузке данных. // Процедура ЗагрузитьПравилоКонвертации(ПравилаОбмена, ЗаписьXML) @@ -3868,7 +3874,7 @@ Исключение - ЗаписатьИнформациюОбОшибкеВПротокол(11, ОписаниеОшибки(), Строка(НоваяСтрока.Источник)); + ЗаписатьИнформациюОбОшибкеВПротокол(11, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), Строка(НоваяСтрока.Источник)); КонецПопытки; @@ -4054,8 +4060,8 @@ // Осуществляет загрузку правил конвертации объектов. // // Параметры: -// ПравилаОбмена - ЧтениеXML - Объект типа ЧтениеXML. -// ЗаписьXML - ЗаписьXML - Объект типа ЗаписьXML - правила, сохраняемые в файл обмена и +// ПравилаОбмена - ЧтениеXML - объект типа ЧтениеXML. +// ЗаписьXML - ЗаписьXML - объект типа ЗаписьXML - правила, сохраняемые в файл обмена и // используемые при загрузке данных. // Процедура ЗагрузитьПравилаКонвертации(ПравилаОбмена, ЗаписьXML) @@ -4203,8 +4209,8 @@ // Осуществляет загрузку правил очистки данных. // // Параметры: -// ПравилаОбмена - ЧтениеXML - Объект типа ЧтениеXML. -// ЗаписьXML - ЗаписьXML - Объект типа ЗаписьXML - правила, сохраняемые в файл обмена и +// ПравилаОбмена - ЧтениеXML - объект типа ЧтениеXML. +// ЗаписьXML - ЗаписьXML - объект типа ЗаписьXML - правила, сохраняемые в файл обмена и // используемые при загрузке данных. // Процедура ЗагрузитьПравилаОчистки(ПравилаОбмена, ЗаписьXML) @@ -4259,8 +4265,8 @@ // Осуществляет загрузку алгоритма в соответствии с форматом правил обмена. // // Параметры: -// ПравилаОбмена - ЧтениеXML - Объект типа ЧтениеXML. -// ЗаписьXML - ЗаписьXML - Объект типа ЗаписьXML - правила, сохраняемые в файл обмена и +// ПравилаОбмена - ЧтениеXML - объект типа ЧтениеXML. +// ЗаписьXML - ЗаписьXML - объект типа ЗаписьXML - правила, сохраняемые в файл обмена и // используемые при загрузке данных. // Процедура ЗагрузитьАлгоритм(ПравилаОбмена, ЗаписьXML) @@ -4305,8 +4311,8 @@ // Осуществляет загрузку алгоритмов в соответствии с форматом правил обмена. // // Параметры: -// ПравилаОбмена - ЧтениеXML - Объект типа ЧтениеXML. -// ЗаписьXML - ЗаписьXML - Объект типа ЗаписьXML - правила, сохраняемые в файл обмена и +// ПравилаОбмена - ЧтениеXML - объект типа ЧтениеXML. +// ЗаписьXML - ЗаписьXML - объект типа ЗаписьXML - правила, сохраняемые в файл обмена и // используемые при загрузке данных. // Процедура ЗагрузитьАлгоритмы(ПравилаОбмена, ЗаписьXML) @@ -4332,8 +4338,8 @@ // Осуществляет загрузку запроса в соответствии с форматом правил обмена. // // Параметры: -// ПравилаОбмена - ЧтениеXML - Объект типа ЧтениеXML. -// ЗаписьXML - ЗаписьXML - Объект типа ЗаписьXML - правила, сохраняемые в файл обмена и +// ПравилаОбмена - ЧтениеXML - объект типа ЧтениеXML. +// ЗаписьXML - ЗаписьXML - объект типа ЗаписьXML - правила, сохраняемые в файл обмена и // используемые при загрузке данных. // Процедура ЗагрузитьЗапрос(ПравилаОбмена, ЗаписьXML) @@ -4378,8 +4384,8 @@ // Осуществляет загрузку запросов в соответствии с форматом правил обмена. // // Параметры: -// ПравилаОбмена - ЧтениеXML - Объект типа ЧтениеXML. -// ЗаписьXML - ЗаписьXML - Объект типа ЗаписьXML - правила, сохраняемые в файл обмена и +// ПравилаОбмена - ЧтениеXML - объект типа ЧтениеXML. +// ЗаписьXML - ЗаписьXML - объект типа ЗаписьXML - правила, сохраняемые в файл обмена и // используемые при загрузке данных. // Процедура ЗагрузитьЗапросы(ПравилаОбмена, ЗаписьXML) @@ -4407,7 +4413,7 @@ // Осуществляет загрузку параметров в соответствии с форматом правил обмена. // // Параметры: -// ПравилаОбмена - ЧтениеXML - Объект типа ЧтениеXML. +// ПравилаОбмена - ЧтениеXML - объект типа ЧтениеXML. // Процедура ЗагрузитьПараметры(ПравилаОбмена, ЗаписьXML) @@ -4514,8 +4520,8 @@ // Осуществляет загрузку обработки в соответствии с форматом правил обмена. // // Параметры: -// ПравилаОбмена - ЧтениеXML - Объект типа ЧтениеXML. -// ЗаписьXML - ЗаписьXML - Объект типа ЗаписьXML - правила, сохраняемые в файл обмена и +// ПравилаОбмена - ЧтениеXML - объект типа ЧтениеXML. +// ЗаписьXML - ЗаписьXML - объект типа ЗаписьXML - правила, сохраняемые в файл обмена и // используемые при загрузке данных. // Процедура ЗагрузитьОбработку(ПравилаОбмена, ЗаписьXML) @@ -4563,8 +4569,8 @@ // Осуществляет загрузку внешних обработок в соответствии с форматом правил обмена. // // Параметры: -// ПравилаОбмена - ЧтениеXML - Объект типа ЧтениеXML. -// ЗаписьXML - ЗаписьXML - Объект типа ЗаписьXML - правила, сохраняемые в файл обмена и +// ПравилаОбмена - ЧтениеXML - объект типа ЧтениеXML. +// ЗаписьXML - ЗаписьXML - объект типа ЗаписьXML - правила, сохраняемые в файл обмена и // используемые при загрузке данных. // Процедура ЗагрузитьОбработки(ПравилаОбмена, ЗаписьXML) @@ -4641,7 +4647,7 @@ // Осуществляет загрузку правила выгрузки данных в соответствии с форматом правил обмена. // // Параметры: -// ПравилаОбмена - ЧтениеXML - Объект типа ЧтениеXML. +// ПравилаОбмена - ЧтениеXML - объект типа ЧтениеXML. // НоваяСтрока - СтрокаДереваЗначений - структура, описывающая правило выгрузки данных: // * Имя - Строка - идентификатор правила. // * Наименование - Строка - пользовательское представление правила. @@ -4716,7 +4722,7 @@ // Осуществляет загрузку правил выгрузки данных в соответствии с форматом правил обмена. // // Параметры: -// ПравилаОбмена - ЧтениеXML - Объект типа ЧтениеXML. +// ПравилаОбмена - ЧтениеXML - объект типа ЧтениеXML. // Процедура ЗагрузитьПравилаВыгрузки(ПравилаОбмена) @@ -4918,7 +4924,7 @@ // При выгрузке обработчиков из файла правил этот алгоритм выгружается как и другие. // // Параметры: -// Результат - ЗаписьТекста - Объект типа ЗаписьТекста - для вывода обработчиков в текстовый файл. +// Результат - ЗаписьТекста - объект типа ЗаписьТекста - для вывода обработчиков в текстовый файл. // Процедура ВыгрузитьОбработчикиКонвертации(Результат) @@ -4935,8 +4941,8 @@ // Выгружает обработчики правил выгрузки данных в текстовый файл. // // Параметры: -// Результат - ЗаписьТекста - Объект типа ЗаписьТекста - для вывода обработчиков в текстовый файл. -// СтрокиДерева - КоллекцияСтрокДереваЗначений - Объект типа КоллекцияСтрокДереваЗначений - содержит ПВД данного уровня +// Результат - ЗаписьТекста - объект типа ЗаписьТекста - для вывода обработчиков в текстовый файл. +// СтрокиДерева - КоллекцияСтрокДереваЗначений - объект типа КоллекцияСтрокДереваЗначений - содержит ПВД данного уровня // дерева значений. // Процедура ВыгрузитьОбработчикиПравилВыгрузкиДанных(Результат, СтрокиДерева) @@ -4964,8 +4970,8 @@ // Выгружает обработчики правил очистки данных в текстовый файл. // // Параметры: -// Результат - ЗаписьТекста - Объект типа ЗаписьТекста - для вывода обработчиков в текстовый файл. -// СтрокиДерева - КоллекцияСтрокДереваЗначений - Объект типа КоллекцияСтрокДереваЗначений - содержит ПОД данного уровня +// Результат - ЗаписьТекста - объект типа ЗаписьТекста - для вывода обработчиков в текстовый файл. +// СтрокиДерева - КоллекцияСтрокДереваЗначений - объект типа КоллекцияСтрокДереваЗначений - содержит ПОД данного уровня // дерева значений. // Процедура ВыгрузитьОбработчикиПравилОчисткиДанных(Результат, СтрокиДерева) @@ -4993,7 +4999,7 @@ // Выгружает обработчики правил конвертации: ПКО, ПКС, ПКГС в текстовый файл. // // Параметры: -// Результат - ЗаписьТекста - Объект типа ЗаписьТекста - для вывода обработчиков в текстовый файл. +// Результат - ЗаписьТекста - объект типа ЗаписьТекста - для вывода обработчиков в текстовый файл. // Процедура ВыгрузитьОбработчикиПравилКонвертации(Результат) @@ -5027,7 +5033,7 @@ // Выгружает обработчики правил конвертации свойств в текстовый файл. // // Параметры: -// Результат - ЗаписьТекста - Объект типа ЗаписьТекста - для вывода обработчиков в текстовый файл. +// Результат - ЗаписьТекста - объект типа ЗаписьТекста - для вывода обработчиков в текстовый файл. // ПКС - ТаблицаЗначений - содержит правила конвертации свойств или групп свойств объекта. // Процедура ВыгрузитьОбработчикиПравилКонвертацииСвойств(Результат, ПКС) @@ -5061,7 +5067,7 @@ // Выгружает алгоритмы в текстовый файл. // // Параметры: -// Результат - ЗаписьТекста - Объект типа ЗаписьТекста - для вывода алгоритмов в текстовый файл. +// Результат - ЗаписьТекста - объект типа ЗаписьТекста - для вывода алгоритмов в текстовый файл. // Процедура ВыгрузитьАлгоритмы(Результат) @@ -5082,7 +5088,7 @@ // Ключ элемента структуры - имя алгоритма, значение - интерфейс вызова процедуры, содержащей код алгоритма. // // Параметры: -// Результат - ЗаписьТекста - Объект типа ЗаписьТекста - для вывода обработчиков в текстовый файл. +// Результат - ЗаписьТекста - объект типа ЗаписьТекста - для вывода обработчиков в текстовый файл. // Процедура ВыгрузитьКонструкторВнешнейОбработки(Результат) @@ -5129,7 +5135,7 @@ // Добавляет в объект "Результат" обработчик ПКО, ПКС или ПКГС. // // Параметры: -// Результат - ЗаписьТекста - Объект типа ЗаписьТекста - для вывода обработчика в текстовый файл. +// Результат - ЗаписьТекста - объект типа ЗаписьТекста - для вывода обработчика в текстовый файл. // Правило - строка таблицы значений с правилами конвертации объекта. // ИмяОбработчика - строка - имя обработчика. // @@ -5148,7 +5154,7 @@ // Добавляет в объект "Результат" код алгоритма. // // Параметры: -// Результат - ЗаписьТекста - Объект типа ЗаписьТекста - для вывода обработчика в текстовый файл. +// Результат - ЗаписьТекста - объект типа ЗаписьТекста - для вывода обработчика в текстовый файл. // Алгоритм - элемент структуры - алгоритм для выгрузки. // Процедура ДобавитьВПотокАлгоритм(Результат, Алгоритм) @@ -5162,7 +5168,7 @@ // Добавляет в объект "Результат" обработчик ПВД или ПОД. // // Параметры: -// Результат - ЗаписьТекста - Объект типа ЗаписьТекста - для вывода обработчика в текстовый файл. +// Результат - ЗаписьТекста - объект типа ЗаписьТекста - для вывода обработчика в текстовый файл. // Правило - строка дерева значений с правилами. // ПрефиксОбработчика - строка - префикс обработчика: "ПВД" или "ПОД". // ИмяОбработчика - строка - имя обработчика. @@ -5182,7 +5188,7 @@ // Добавляет в объект "Результат" глобальный обработчик конвертации. // // Параметры: -// Результат - ЗаписьТекста - Объект типа ЗаписьТекста - для вывода обработчика в текстовый файл. +// Результат - ЗаписьТекста - объект типа ЗаписьТекста - для вывода обработчика в текстовый файл. // ИмяОбработчика - строка - имя обработчика. // Процедура ДобавитьВПотокОбработчикКонвертации(Результат, ИмяОбработчика) @@ -5202,7 +5208,7 @@ // Добавляет в объект "Результат" процедуру с кодом обработчика или кодом алгоритма. // // Параметры: -// Результат - ЗаписьТекста - Объект типа ЗаписьТекста - для вывода процедуры в текстовый файл. +// Результат - ЗаписьТекста - объект типа ЗаписьТекста - для вывода процедуры в текстовый файл. // ИнтерфейсОбработчика - Строка - полное описание интерфейса обработчика: // имя процедуры, параметры процедуры, ключевое слово "Экспорт". // Обработчик - Строка - тело обработчика или алгоритма. @@ -5260,7 +5266,7 @@ // Добавляет в объект "Результат" комментарий. // // Параметры: -// Результат - ЗаписьТекста - Объект типа ЗаписьТекста - для вывода комментария в текстовый файл. +// Результат - ЗаписьТекста - объект типа ЗаписьТекста - для вывода комментария в текстовый файл. // ИмяОбласти - Строка - имя области текстового макета "мМакетОбщиеПроцедурыФункции" // в которой содержится требуемый комментарий. // ВывестиКомментарий - Булево - признак необходимости вывода комментария. @@ -5286,7 +5292,7 @@ // Добавляет в объект "Результат" служебный код: параметры, общие процедуры и функции, деструктор внешней обработки. // // Параметры: -// Результат - ЗаписьТекста - Объект типа ЗаписьТекста - для вывода служебного кода в текстовый файл. +// Результат - ЗаписьТекста - объект типа ЗаписьТекста - для вывода служебного кода в текстовый файл. // ИмяОбласти - Строка - имя области текстового макета "мМакетОбщиеПроцедурыФункции" // в которой содержится требуемый служебный код. // @@ -5538,7 +5544,7 @@ // (смещение при котором производится вызов алгоритма). // СтрокаПрефикса - Строка - начальное смещение. // Возвращаемое значение: -// СтрокаПрефиксаДляВложенногоКода - Строка - Итоговое смещение кода алгоритма. +// СтрокаПрефиксаДляВложенногоКода - Строка - итоговое смещение кода алгоритма. // Функция ПолучитьПрефиксДляВложенногоАлгоритма(СтрокаОбработчика, СтрокаПрефикса) @@ -5746,7 +5752,7 @@ // // Параметры: // ТаблицаПОД - ДеревоЗначений - содержит правила очистки данных. -// СтрокиДерева - КоллекцияСтрокДереваЗначений - Объект типа КоллекцияСтрокДереваЗначений - содержит ПОД данного уровня +// СтрокиДерева - КоллекцияСтрокДереваЗначений - объект типа КоллекцияСтрокДереваЗначений - содержит ПОД данного уровня // дерева значений. // Процедура ДополнитьИнтерфейсамиОбработчиковПравилаОчисткиДанных(ТаблицаПОД, СтрокиДерева) @@ -5775,7 +5781,7 @@ // // Параметры: // ТаблицаПВД - ДеревоЗначений - содержит правила выгрузки данных. -// СтрокиДерева - КоллекцияСтрокДереваЗначений - Объект типа КоллекцияСтрокДереваЗначений - содержит ПВД данного уровня +// СтрокиДерева - КоллекцияСтрокДереваЗначений - объект типа КоллекцияСтрокДереваЗначений - содержит ПВД данного уровня // дерева значений. // Процедура ДополнитьИнтерфейсамиОбработчиковПравилаВыгрузкиДанных(ТаблицаПВД, СтрокиДерева) @@ -6011,7 +6017,7 @@ Менеджеры[Источник].ПКО = СтрокаТаблицы; КонецЕсли; Исключение - ЗаписатьИнформациюОбОшибкеВПротокол(11, ОписаниеОшибки(), Строка(Источник)); + ЗаписатьИнформациюОбОшибкеВПротокол(11, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), Строка(Источник)); КонецПопытки; КонецЕсли; @@ -6115,7 +6121,7 @@ Исключение - ЗаписатьИнформациюОбОшибкеОбработчикаОчисткиДанных(27, ОписаниеОшибки(), Правило.Имя, "", "ПередОбработкойПравилаОчистки"); + ЗаписатьИнформациюОбОшибкеОбработчикаОчисткиДанных(27, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), Правило.Имя, "", "ПередОбработкойПравилаОчистки"); КонецПопытки; @@ -6221,7 +6227,7 @@ Исключение - ЗаписатьИнформациюОбОшибкеОбработчикаОчисткиДанных(28, ОписаниеОшибки(), Правило.Имя, "", "ПослеОбработкиПравилаОчистки"); + ЗаписатьИнформациюОбОшибкеОбработчикаОчисткиДанных(28, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), Правило.Имя, "", "ПослеОбработкиПравилаОчистки"); КонецПопытки; @@ -6232,7 +6238,7 @@ // Обходит дерево правил очистки данных и выполняет очистку. // // Параметры: -// Строки - Коллекция строк дерева значений. +// Строки - коллекция строк дерева значений. // Процедура ОбработатьПравилаОчистки(Строки) @@ -6305,10 +6311,11 @@ // Ищет объект по номеру в списке уже загруженных объектов. // // Параметры: -// НПП - номер искомого объекта в файле обмена. +// НПП - Число - номер искомого объекта в файле обмена. // // Возвращаемое значение: -// Ссылка на найденный объект. Если объект не найден, возвращается Неопределено. +// - ЛюбаяСсылка - ссылка на найденный объект. +// - Неопределено - если объект не найден. // Функция НайтиОбъектПоНомеру(НПП, РежимПоискаОсновногоОбъекта = Ложь) @@ -6355,7 +6362,7 @@ Исключение - СтрокаСообщенияОбОшибке = ЗаписатьИнформациюОбОшибкеВПротокол(26, ОписаниеОшибки(), Объект, Тип); + СтрокаСообщенияОбОшибке = ЗаписатьИнформациюОбОшибкеВПротокол(26, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), Объект, Тип); Если Не ФлагРежимОтладки Тогда ВызватьИсключение СтрокаСообщенияОбОшибке; @@ -6369,11 +6376,11 @@ // в структуре СвойстваПоиска. // // Параметры: -// Тип - тип создаваемого объекта. -// СвойстваПоиска - Структура, содержащая устанавливаемые реквизиты нового объекта. +// Тип - Тип - тип создаваемого объекта. +// СвойстваПоиска - Структура - содержит устанавливаемые реквизиты нового объекта. // // Возвращаемое значение: -// Новый объект информационной базы. +// Произвольный - новый объект информационной базы. // Функция СоздатьНовыйОбъект(Тип, СвойстваПоиска, Объект = Неопределено, ЗаписыватьОбъектСразуПослеСоздания = Истина, НаборЗаписейРегистра = Неопределено, @@ -6382,7 +6389,7 @@ СвойстваМД = Менеджеры[Тип]; ИмяТипа = СвойстваМД.ИмяТипа; - Менеджер = СвойстваМД.Менеджер; // СправочникМенеджер, ДокументМенеджер, РегистрСведенийМенеджер, и т.п. + Менеджер = СвойстваМД.Менеджер; // СправочникМенеджер, ДокументМенеджер, РегистрСведенийМенеджер, ПланСчетовМенеджер, ПланВидовРасчетаМенеджер, ПланОбменаМенеджер Если ИмяТипа = "Справочник" ИЛИ ИмяТипа = "ПланВидовХарактеристик" Тогда @@ -6436,7 +6443,7 @@ ИначеЕсли ИмяТипа = "БизнесПроцесс" Тогда - Объект = Менеджер.СоздатьБизнесПроцесс(); + Объект = Менеджер.СоздатьБизнесПроцесс(); ИначеЕсли ИмяТипа = "Перечисление" Тогда @@ -6494,7 +6501,7 @@ НоваяСсылка = Менеджер.ПолучитьСсылку(НовыйУникальныйИдентификатор); Объект.УстановитьСсылкуНового(НоваяСсылка); - КонецЕсли; + КонецЕсли; ДополнитьСтекНеЗаписанныхОбъектов(НПП, ГНПП, Объект, НоваяСсылка, Тип, ПараметрыОбъекта); @@ -6515,12 +6522,12 @@ // Читает из файла узел свойства объекта, устанавливает значение свойства. // // Параметры: -// Тип - тип значения свойства. -// ОбъектНайден - если после выполнения функции - Ложь, то значит -// объект свойства не найден в информационной базе и создан новый. +// Тип - Тип - тип значения свойства. +// ОбъектНайден - Булево - если после выполнения функции - Ложь, то значит +// объект свойства не найден в информационной базе и создан новый. // // Возвращаемое значение: -// Значение свойства +// Произвольный - значение свойства. // Функция ПрочитатьСвойство(Тип, ИмяПКО = "") @@ -7286,7 +7293,7 @@ Иначе ВыбранныеСвойства = СтрРазделить(СтрокаИменСвойствПоиска, ", ", Ложь); - + ВременныеСвойстваПоиска = Новый Соответствие; Для Каждого ЭлементСвойств Из СвойстваПоиска Цикл @@ -7462,7 +7469,7 @@ // // Параметры: // ТипОбъекта - тип искомого объекта. -// СвойстваПоиска - структура, содержащая свойства по которым производится поиск объекта. +// СвойстваПоиска - структура - содержащая свойства по которым производится поиск объекта. // ОбъектНайден - если Ложь, то объект не найден, а создан новый. // // Возвращаемое значение: @@ -7671,7 +7678,7 @@ Исключение - ЗаписатьИнформациюОбОшибкеЗагрузкиОбработчикаПКО(73, ОписаниеОшибки(), "", "", + ЗаписатьИнформациюОбОшибкеЗагрузкиОбработчикаПКО(73, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), "", "", ТипОбъекта, Неопределено, НСтр("ru = 'Последовательность полей поиска'")); КонецПопытки; @@ -7841,7 +7848,7 @@ Исключение - ЗП = ПолучитьСтруктуруЗаписиПротокола(26, ОписаниеОшибки()); + ЗП = ПолучитьСтруктуруЗаписиПротокола(26, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ЗП.ИмяПКО = ИмяПКО; ЗП.Объект = Объект; ЗП.ТипОбъекта = ТипЗнч(Объект); @@ -8536,7 +8543,7 @@ Исключение - ЗаписатьИнформациюОбОшибкеЗагрузкиОбработчикаПКО(53, ОписаниеОшибки(), ИмяПравила, Источник, + ЗаписатьИнформациюОбОшибкеЗагрузкиОбработчикаПКО(53, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), ИмяПравила, Источник, ТипОбъекта, Неопределено, НСтр("ru = 'ПередЗагрузкойОбъекта (глобальный)'")); КонецПопытки; @@ -8570,7 +8577,7 @@ Исключение - ЗаписатьИнформациюОбОшибкеЗагрузкиОбработчикаПКО(19, ОписаниеОшибки(), ИмяПравила, Источник, + ЗаписатьИнформациюОбОшибкеЗагрузкиОбработчикаПКО(19, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), ИмяПравила, Источник, ТипОбъекта, Неопределено, "ПередЗагрузкойОбъекта"); КонецПопытки; @@ -8627,7 +8634,7 @@ Исключение - ЗаписатьИнформациюОбОшибкеЗагрузкиОбработчикаПКО(20, ОписаниеОшибки(), ИмяПравила, Источник, + ЗаписатьИнформациюОбОшибкеЗагрузкиОбработчикаПКО(20, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), ИмяПравила, Источник, ТипОбъекта, Объект, "ПриЗагрузкеОбъекта"); КонецПопытки; @@ -8704,7 +8711,7 @@ Исключение - ЗП = ПолучитьСтруктуруЗаписиПротокола(26, ОписаниеОшибки()); + ЗП = ПолучитьСтруктуруЗаписиПротокола(26, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ЗП.ИмяПКО = ИмяПравила; ЗП.НПП = НПП; ЗП.ГНПП = ГНПП; @@ -8800,7 +8807,7 @@ Исключение УдалитьИзСтекаНеЗаписанныхОбъектов(НПП, ГНПП); - ЗаписатьИнформациюОбОшибкеЗагрузкиОбработчикаПКО(20, ОписаниеОшибки(), ИмяПравила, Источник, + ЗаписатьИнформациюОбОшибкеЗагрузкиОбработчикаПКО(20, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), ИмяПравила, Источник, ТипОбъекта, Объект, "ПриЗагрузкеОбъекта"); КонецПопытки; @@ -8844,7 +8851,7 @@ Исключение УдалитьИзСтекаНеЗаписанныхОбъектов(НПП, ГНПП); - ЗаписатьИнформациюОбОшибкеЗагрузкиОбработчикаПКО(20, ОписаниеОшибки(), ИмяПравила, Источник, + ЗаписатьИнформациюОбОшибкеЗагрузкиОбработчикаПКО(20, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), ИмяПравила, Источник, ТипОбъекта, Объект, "ПриЗагрузкеОбъекта"); КонецПопытки; @@ -8909,7 +8916,7 @@ Исключение УдалитьИзСтекаНеЗаписанныхОбъектов(НПП, ГНПП); - ЗаписатьИнформациюОбОшибкеЗагрузкиОбработчикаПКО(54, ОписаниеОшибки(), ИмяПравила, Источник, + ЗаписатьИнформациюОбОшибкеЗагрузкиОбработчикаПКО(54, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), ИмяПравила, Источник, ТипОбъекта, Объект, НСтр("ru = 'ПослеЗагрузкиОбъекта (глобальный)'")); КонецПопытки; @@ -8938,7 +8945,7 @@ Исключение УдалитьИзСтекаНеЗаписанныхОбъектов(НПП, ГНПП); - ЗаписатьИнформациюОбОшибкеЗагрузкиОбработчикаПКО(21, ОписаниеОшибки(), ИмяПравила, Источник, + ЗаписатьИнформациюОбОшибкеЗагрузкиОбработчикаПКО(21, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), ИмяПравила, Источник, ТипОбъекта, Объект, "ПослеЗагрузкиОбъекта"); КонецПопытки; @@ -9014,7 +9021,7 @@ ЗаписатьДокументВБезопасномРежиме(Объект, ТипОбъекта); - ЗП = ПолучитьСтруктуруЗаписиПротокола(25, ОписаниеОшибки()); + ЗП = ПолучитьСтруктуруЗаписиПротокола(25, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ЗП.ИмяПКО = ИмяПравила; Если Не ПустаяСтрока(Источник) Тогда @@ -9473,7 +9480,7 @@ Исключение - ЗаписатьИнформациюОбОшибкеОбработчикиПКС(48, ОписаниеОшибки(), ПКО, ПКГС, + ЗаписатьИнформациюОбОшибкеОбработчикиПКС(48, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), ПКО, ПКГС, Источник, "ПередОбработкойВыгрузкиГруппыСвойств",, Ложь); КонецПопытки; @@ -9562,7 +9569,7 @@ Исключение - ЗаписатьИнформациюОбОшибкеОбработчикиПКС(49, ОписаниеОшибки(), ПКО, ПКГС, + ЗаписатьИнформациюОбОшибкеОбработчикиПКС(49, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), ПКО, ПКГС, Источник, "ПослеОбработкиВыгрузкиГруппыСвойств",, Ложь); КонецПопытки; @@ -9593,7 +9600,7 @@ Исключение - ЗаписатьИнформациюОбОшибкеОбработчикиПКС(66, ОписаниеОшибки(), ПКО, ПКГС, Источник,,,Ложь); + ЗаписатьИнформациюОбОшибкеОбработчикиПКС(66, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), ПКО, ПКГС, Источник,,,Ложь); Возврат; КонецПопытки; @@ -9665,7 +9672,7 @@ Исключение - ЗаписатьИнформациюОбОшибкеОбработчикиПКС(50, ОписаниеОшибки(), ПКО, ПКГС, + ЗаписатьИнформациюОбОшибкеОбработчикиПКС(50, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), ПКО, ПКГС, Источник, "ПередВыгрузкойГруппыСвойств",, Ложь); Прервать; @@ -9707,7 +9714,7 @@ Исключение - ЗаписатьИнформациюОбОшибкеОбработчикиПКС(51, ОписаниеОшибки(), ПКО, ПКГС, + ЗаписатьИнформациюОбОшибкеОбработчикиПКС(51, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), ПКО, ПКГС, Источник, "ПриВыгрузкеГруппыСвойств",, Ложь); Прервать; @@ -9749,7 +9756,7 @@ Исключение - ЗаписатьИнформациюОбОшибкеОбработчикиПКС(52, ОписаниеОшибки(), ПКО, ПКГС, + ЗаписатьИнформациюОбОшибкеОбработчикиПКС(52, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), ПКО, ПКГС, Источник, "ПослеВыгрузкиГруппыСвойств",, Ложь); Прервать; @@ -9807,7 +9814,7 @@ Исключение - ЗаписатьИнформациюОбОшибкеОбработчикиПКС(49, ОписаниеОшибки(), ПКО, ПКГС, + ЗаписатьИнформациюОбОшибкеОбработчикиПКС(49, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), ПКО, ПКГС, Источник, "ПослеОбработкиВыгрузкиГруппыСвойств",, Ложь); КонецПопытки; @@ -9892,7 +9899,7 @@ Исключение Если КодОшибки <> 14 Тогда - ЗаписатьИнформациюОбОшибкеОбработчикиПКС(КодОшибки, ОписаниеОшибки(), ПКО, ПКС, Источник, ""); + ЗаписатьИнформациюОбОшибкеОбработчикиПКС(КодОшибки, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), ПКО, ПКС, Источник, ""); КонецЕсли; КонецПопытки; @@ -9951,7 +9958,7 @@ Исключение - ЗаписатьИнформациюОбОшибкеОбработчикиПКС(55, ОписаниеОшибки(), ПКО, ПКС, Источник, + ЗаписатьИнформациюОбОшибкеОбработчикиПКС(55, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), ПКО, ПКС, Источник, "ПередВыгрузкойСвойства", Значение); КонецПопытки; @@ -9997,7 +10004,7 @@ Исключение - ЗаписатьИнформациюОбОшибкеОбработчикиПКС(56, ОписаниеОшибки(), ПКО, ПКС, Источник, + ЗаписатьИнформациюОбОшибкеОбработчикиПКС(56, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), ПКО, ПКС, Источник, "ПриВыгрузкеСвойства", Значение); КонецПопытки; @@ -10124,7 +10131,7 @@ Исключение - ЗаписатьИнформациюОбОшибкеОбработчикиПКС(57, ОписаниеОшибки(), ПКО, ПКС, Источник, + ЗаписатьИнформациюОбОшибкеОбработчикиПКС(57, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), ПКО, ПКС, Источник, "ПослеВыгрузкиСвойства", Значение); КонецПопытки; @@ -10542,7 +10549,7 @@ Исключение - ЗаписатьИнформациюОбОшибкеОбработчикиПКС(55, ОписаниеОшибки(), ПКО, ПКС, Источник, + ЗаписатьИнформациюОбОшибкеОбработчикиПКС(55, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), ПКО, ПКС, Источник, "ПередВыгрузкойСвойства", Значение); КонецПопытки; @@ -10673,7 +10680,7 @@ Исключение - ЗаписатьИнформациюОбОшибкеОбработчикиПКС(56, ОписаниеОшибки(), ПКО, ПКС, Источник, + ЗаписатьИнформациюОбОшибкеОбработчикиПКС(56, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), ПКО, ПКС, Источник, "ПриВыгрузкеСвойства", Значение); КонецПопытки; @@ -10792,7 +10799,7 @@ Исключение - ЗаписатьИнформациюОбОшибкеОбработчикиПКС(57, ОписаниеОшибки(), ПКО, ПКС, Источник, + ЗаписатьИнформациюОбОшибкеОбработчикиПКС(57, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), ПКО, ПКС, Источник, "ПослеВыгрузкиСвойства", Значение); КонецПопытки; @@ -10864,7 +10871,7 @@ КонецЕсли; Исключение - ЗаписатьИнформациюОбОшибкеОбработчикиПВД(65, ОписаниеОшибки(), Правило.Имя, НСтр("ru = 'ПередВыгрузкойОбъектаВыборки (глобальный)'"), Объект); + ЗаписатьИнформациюОбОшибкеОбработчикиПВД(65, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), Правило.Имя, НСтр("ru = 'ПередВыгрузкойОбъектаВыборки (глобальный)'"), Объект); КонецПопытки; Если Отказ Тогда @@ -10889,7 +10896,7 @@ КонецЕсли; Исключение - ЗаписатьИнформациюОбОшибкеОбработчикиПВД(33, ОписаниеОшибки(), Правило.Имя, "ПередВыгрузкойОбъектаВыборки", Объект); + ЗаписатьИнформациюОбОшибкеОбработчикиПВД(33, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), Правило.Имя, "ПередВыгрузкойОбъектаВыборки", Объект); КонецПопытки; Если Отказ Тогда @@ -10918,7 +10925,7 @@ КонецЕсли; Исключение - ЗаписатьИнформациюОбОшибкеОбработчикиПВД(69, ОписаниеОшибки(), Правило.Имя, НСтр("ru = 'ПослеВыгрузкиОбъектаВыборки (глобальный)'"), Объект); + ЗаписатьИнформациюОбОшибкеОбработчикиПВД(69, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), Правило.Имя, НСтр("ru = 'ПослеВыгрузкиОбъектаВыборки (глобальный)'"), Объект); КонецПопытки; КонецЕсли; @@ -10939,7 +10946,7 @@ КонецЕсли; Исключение - ЗаписатьИнформациюОбОшибкеОбработчикиПВД(34, ОписаниеОшибки(), Правило.Имя, "ПослеВыгрузкиОбъектаВыборки", Объект); + ЗаписатьИнформациюОбОшибкеОбработчикиПВД(34, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), Правило.Имя, "ПослеВыгрузкиОбъектаВыборки", Объект); КонецПопытки; КонецЕсли; @@ -10947,7 +10954,7 @@ КонецПроцедуры // Параметры: -// МетаданныеОбъекта - ОбъектМетаданных - +// МетаданныеОбъекта - ОбъектМетаданных // Функция ПолучитьИмяПервогоРеквизитаМетаданных(МетаданныеОбъекта) @@ -11164,7 +11171,7 @@ Исключение - ЗаписатьИнформациюОбОшибкеОбработчикиПВД(31, ОписаниеОшибки(), Правило.Имя, "ПередОбработкойВыгрузкиДанных"); + ЗаписатьИнформациюОбОшибкеОбработчикиПВД(31, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), Правило.Имя, "ПередОбработкойВыгрузкиДанных"); КонецПопытки; @@ -11293,7 +11300,7 @@ Исключение - ЗаписатьИнформациюОбОшибкеОбработчикиПВД(32, ОписаниеОшибки(), Правило.Имя, "ПослеОбработкиВыгрузкиДанных"); + ЗаписатьИнформациюОбОшибкеОбработчикиПВД(32, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), Правило.Имя, "ПослеОбработкиВыгрузкиДанных"); КонецПопытки; @@ -11304,7 +11311,7 @@ // Обходит дерево правил выгрузки данных и выполняет выгрузку. // // Параметры: -// Строки - Коллекция строк дерева значений. +// Строки - коллекция строк дерева значений. // Процедура ОбработатьПравилаВыгрузки(Строки, СоответствиеУзловПланаОбменаИСтрокВыгрузки) @@ -11364,8 +11371,8 @@ // Возвращаемое значение: // СтрокаДереваЗначений - строка дерева правил выгрузки данных: -// * Имя - Строка - -// * Наименование - Строка - +// * Имя - Строка +// * Наименование - Строка // Функция НайтиСтрокуДереваПравилВыгрузкиПоТипуВыгрузки(МассивСтрок, ТипВыгрузки) @@ -11404,7 +11411,7 @@ КонецПроцедуры // Параметры: -// Данные - ЛюбаяСсылка, РегистрСведенийНаборЗаписей, и т.п. - +// Данные - ЛюбаяСсылка, РегистрСведенийНаборЗаписей, и т.п. // Процедура ПолучитьСтрокуПравилВыгрузкиПоОбъектуОбмена(Данные, МетаданныеПоследнегоОбъекта, МетаданныеОбъектаВыгрузки, ПоследняяСтрокаПравилВыгрузки, ТекущаяСтрокаПравилаВыгрузки, ВременныйМассивПравилКонвертации, ОбъектДляПравилВыгрузки, @@ -11592,7 +11599,7 @@ Исключение - ЗаписатьИнформациюОбОшибкеОбработчикиПВД(32, ОписаниеОшибки(), ПоследняяСтрокаПравилаВыгрузки.Имя, "ПослеОбработкиВыгрузкиДанных"); + ЗаписатьИнформациюОбОшибкеОбработчикиПВД(32, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), ПоследняяСтрокаПравилаВыгрузки.Имя, "ПослеОбработкиВыгрузкиДанных"); КонецПопытки; @@ -11632,7 +11639,7 @@ Исключение - ЗаписатьИнформациюОбОшибкеОбработчикиПВД(31, ОписаниеОшибки(), ТекущаяСтрокаПравилаВыгрузки.Имя, "ПередОбработкойВыгрузкиДанных"); + ЗаписатьИнформациюОбОшибкеОбработчикиПВД(31, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), ТекущаяСтрокаПравилаВыгрузки.Имя, "ПередОбработкойВыгрузкиДанных"); КонецПопытки; @@ -11715,7 +11722,7 @@ ОтменитьТранзакцию(); КонецЕсли; - ЗП = ПолучитьСтруктуруЗаписиПротокола(72, ОписаниеОшибки()); + ЗП = ПолучитьСтруктуруЗаписиПротокола(72, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ЗП.УзелПланаОбмена = УзелОбмена; ЗП.Объект = Данные; ЗП.ТипОбъекта = ТипДанныхДляВыгрузки; @@ -11746,7 +11753,7 @@ КонецЕсли; Исключение - ЗаписатьИнформациюОбОшибкеОбработчикиПВД(32, ОписаниеОшибки(), ПоследняяСтрокаПравилаВыгрузки.Имя, "ПослеОбработкиВыгрузкиДанных"); + ЗаписатьИнформациюОбОшибкеОбработчикиПВД(32, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), ПоследняяСтрокаПравилаВыгрузки.Имя, "ПослеОбработкиВыгрузкиДанных"); КонецПопытки; @@ -11838,7 +11845,7 @@ // Открывает файл обмена, читает атрибуты корневого узла файла в соответствии с форматом обмена. // // Параметры: -// ТолькоПрочитатьШапку - Булево. если Истина, то после прочтения шапки файла обмена +// ТолькоПрочитатьШапку - Булево - если Истина, то после прочтения шапки файла обмена // (корневой узел), файл закрывается. // Процедура ОткрытьФайлЗагрузки(ТолькоПрочитатьШапку=Ложь, ДанныеФайлаОбмена = "") Экспорт @@ -12255,8 +12262,8 @@ // Осуществляет загрузку правил обмена в соответствии с форматом. // // Параметры: -// Источник - Объект, из которого осуществляется загрузка правил обмена; -// ТипИсточника - Строка, указывающая тип источника: "XMLФайл", "ЧтениеXML", "Строка". +// Источник - объект, из которого осуществляется загрузка правил обмена; +// ТипИсточника - Строка - указывающая тип источника: "XMLФайл", "ЧтениеXML", "Строка". // Процедура ЗагрузитьПравилаОбмена(Источник="", ТипИсточника="XMLФайл") Экспорт @@ -12746,7 +12753,7 @@ Исключение - ЗП = ПолучитьСтруктуруЗаписиПротокола(75, ОписаниеОшибки()); + ЗП = ПолучитьСтруктуруЗаписиПротокола(75, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ЗП.Обработчик = "ПослеЗагрузкиПараметров"; СтрокаСообщенияОбОшибке = ЗаписатьВПротоколВыполнения(75, ЗП, Истина); @@ -12778,7 +12785,7 @@ Исключение - ЗП = ПолучитьСтруктуруЗаписиПротокола(39, ОписаниеОшибки()); + ЗП = ПолучитьСтруктуруЗаписиПротокола(39, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ЗП.Обработчик = "АлгоритмФайлаОбмена"; СтрокаСообщенияОбОшибке = ЗаписатьВПротоколВыполнения(39, ЗП, Истина); @@ -12815,7 +12822,7 @@ Исключение - СтрокаОшибки = ПодставитьПараметрыВСтроку(НСтр("ru = 'Ошибка при загрузке данных: %1'"), ОписаниеОшибки()); + СтрокаОшибки = ПодставитьПараметрыВСтроку(НСтр("ru = 'Ошибка при загрузке данных: %1'"), ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); РезультирующаяСтрокаСИнформациейОбОшибке = ЗаписатьВПротоколВыполнения(СтрокаОшибки, Неопределено, Истина, , , Истина); @@ -12931,7 +12938,7 @@ КонецЕсли; Исключение - ЗаписатьИнформациюОбОшибкеОбработчикиКонвертации(22, ОписаниеОшибки(), НСтр("ru = 'ПередЗагрузкойДанных (конвертация)'")); + ЗаписатьИнформациюОбОшибкеОбработчикиКонвертации(22, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), НСтр("ru = 'ПередЗагрузкойДанных (конвертация)'")); Отказ = Истина; КонецПопытки; @@ -12987,7 +12994,7 @@ КонецЕсли; Исключение - ЗаписатьИнформациюОбОшибкеОбработчикиКонвертации(23, ОписаниеОшибки(), НСтр("ru = 'ПослеЗагрузкиДанных (конвертация)'")); + ЗаписатьИнформациюОбОшибкеОбработчикиКонвертации(23, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), НСтр("ru = 'ПослеЗагрузкиДанных (конвертация)'")); КонецПопытки; КонецЕсли; @@ -13091,7 +13098,7 @@ Исключение - ЗП = ПолучитьСтруктуруЗаписиПротокола(2, ОписаниеОшибки()); + ЗП = ПолучитьСтруктуруЗаписиПротокола(2, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ЗаписатьВПротоколВыполнения(2, ЗП, Истина); Возврат ""; @@ -13291,7 +13298,7 @@ КонецЕсли; Исключение - ЗаписатьИнформациюОбОшибкеОбработчикиКонвертации(62, ОписаниеОшибки(), НСтр("ru = 'ПередВыгрузкойДанных (конвертация)'")); + ЗаписатьИнформациюОбОшибкеОбработчикиКонвертации(62, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), НСтр("ru = 'ПередВыгрузкойДанных (конвертация)'")); Отказ = Истина; КонецПопытки; @@ -13346,7 +13353,7 @@ КонецЕсли; Исключение - ЗаписатьИнформациюОбОшибкеОбработчикиКонвертации(63, ОписаниеОшибки(), НСтр("ru = 'ПослеВыгрузкиДанных (конвертация)'")); + ЗаписатьИнформациюОбОшибкеОбработчикиКонвертации(63, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), НСтр("ru = 'ПослеВыгрузкиДанных (конвертация)'")); КонецПопытки; ПровестиЗаписьНеЗаписанныхОбъектов(); @@ -13382,7 +13389,7 @@ КонецЕсли; Отказ = Истина; - СтрокаОшибки = ОписаниеОшибки(); + СтрокаОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); ЗаписатьВПротоколВыполнения(ПодставитьПараметрыВСтроку( НСтр("ru = 'Ошибка при выгрузке данных: %1'"), СтрокаОшибки), Неопределено, Истина, , , Истина); @@ -13432,7 +13439,7 @@ // Процедура установки значения глобальной переменной "ФлагОшибки". // // Параметры: -// Значение - Булево, новое значение переменной "ФлагОшибки". +// Значение - Булево - новое значение переменной "ФлагОшибки". // Процедура УстановитьФлагОшибки(Значение) @@ -13944,46 +13951,46 @@ КонецПроцедуры // Возвращаемое значение: -// Структура - поля: -// * ВерсияФормата - Строка - -// * Ид - Строка - -// * Наименование - Строка - -// * ДатаВремяСоздания - Дата - -// * ВерсияПлатформыИсточника - Строка - -// * СинонимКонфигурацииИсточника - Строка - -// * ВерсияКонфигурацииИсточника - Строка - -// * Источник - Строка - -// * ВерсияПлатформыПриемника - Строка - -// * СинонимКонфигурацииПриемника - Строка - -// * ВерсияКонфигурацииПриемника - Строка - -// * Приемник - Строка - -// * ПослеЗагрузкиПравилОбмена - Строка - -// * ПередВыгрузкойДанных - Строка - -// * ПередПолучениемИзмененныхОбъектов - Строка - -// * ПослеПолученияИнформацииОбУзлахОбмена - Строка - -// * ПослеВыгрузкиДанных - Строка - -// * ПередОтправкойИнформацииОбУдалении - Строка - -// * ПередВыгрузкойОбъекта - Строка - -// * ПослеВыгрузкиОбъекта - Строка - -// * ПередЗагрузкойОбъекта - Строка - -// * ПослеЗагрузкиОбъекта - Строка - -// * ПередКонвертациейОбъекта - Строка - -// * ПередЗагрузкойДанных - Строка - -// * ПослеЗагрузкиДанных - Строка - -// * ПослеЗагрузкиПараметров - Строка - -// * ПриПолученииИнформацииОбУдалении - Строка - +// Структура: +// * ВерсияФормата - Строка +// * Ид - Строка +// * Наименование - Строка +// * ДатаВремяСоздания - Дата +// * ВерсияПлатформыИсточника - Строка +// * СинонимКонфигурацииИсточника - Строка +// * ВерсияКонфигурацииИсточника - Строка +// * Источник - Строка +// * ВерсияПлатформыПриемника - Строка +// * СинонимКонфигурацииПриемника - Строка +// * ВерсияКонфигурацииПриемника - Строка +// * Приемник - Строка +// * ПослеЗагрузкиПравилОбмена - Строка +// * ПередВыгрузкойДанных - Строка +// * ПередПолучениемИзмененныхОбъектов - Строка +// * ПослеПолученияИнформацииОбУзлахОбмена - Строка +// * ПослеВыгрузкиДанных - Строка +// * ПередОтправкойИнформацииОбУдалении - Строка +// * ПередВыгрузкойОбъекта - Строка +// * ПослеВыгрузкиОбъекта - Строка +// * ПередЗагрузкойОбъекта - Строка +// * ПослеЗагрузкиОбъекта - Строка +// * ПередКонвертациейОбъекта - Строка +// * ПередЗагрузкойДанных - Строка +// * ПослеЗагрузкиДанных - Строка +// * ПослеЗагрузкиПараметров - Строка +// * ПриПолученииИнформацииОбУдалении - Строка // Функция Конвертация() Возврат Конвертация; КонецФункции // Возвращаемое значение: -// Структура - содержит поля: -// * Имя - Строка - -// * ИмяТипа - Строка - -// * ТипСсылкиСтрокой - Строка - -// * Менеджер - СправочникМенеджер, ДокументМенеджер, РегистрСведенийМенеджер, и т.п. - -// * ОбъектМД - ОбъектМетаданныхСправочник, ОбъектМетаданныхДокумент, ОбъектМетаданныхРегистрСведений, и т.п. - +// Структура: +// * Имя - Строка +// * ИмяТипа - Строка +// * ТипСсылкиСтрокой - Строка +// * Менеджер - СправочникМенеджер, ДокументМенеджер, РегистрСведенийМенеджер, и т.п. +// * ОбъектМД - ОбъектМетаданныхСправочник, ОбъектМетаданныхДокумент, ОбъектМетаданныхРегистрСведений, и т.п. // * ПКО - см. НайтиПравило // Функция Менеджеры(Тип) @@ -14200,7 +14207,7 @@ СтрокаСообщенияОбОшибке = НСтр("ru = 'При попытке соединения с COM-сервером произошла следующая ошибка: |%1'"); - СтрокаСообщенияОбОшибке = ПодставитьПараметрыВСтроку(СтрокаСообщенияОбОшибке, ОписаниеОшибки()); + СтрокаСообщенияОбОшибке = ПодставитьПараметрыВСтроку(СтрокаСообщенияОбОшибке, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); СообщитьПользователю(СтрокаСообщенияОбОшибке); @@ -14234,7 +14241,7 @@ // Выделяет из имени файла его расширение (набор символов после последней точки). // // Параметры: -// ИмяФайла - Строка, содержащая имя файла, неважно с именем каталога или без. +// ИмяФайла - Строка - содержащая имя файла, неважно с именем каталога или без. // // Возвращаемое значение: // Строка - расширение файла. @@ -14468,13 +14475,13 @@ // Возвращаемое значение: // Структура - описание менеджера типа значения: -// * Имя - Строка - -// * ИмяТипа - Строка - -// * ТипСсылкиСтрокой - Строка - -// * Менеджер - Произвольный - -// * ОбъектМД - ОбъектМетаданных - -// * ВозможенПоискПоПредопределенным - Булево - -// * ПКО - Произвольный - +// * Имя - Строка +// * ИмяТипа - Строка +// * ТипСсылкиСтрокой - Строка +// * Менеджер - Произвольный +// * ОбъектМД - ОбъектМетаданных +// * ВозможенПоискПоПредопределенным - Булево +// * ПКО - Произвольный // Функция СтруктураПараметровМенеджера(Имя, ИмяТипа, ТипСсылкиСтрокой, Менеджер, ОбъектМД) Структура = Новый Структура(); diff --git a/SSL/src/DataProcessors/УправлениеИтогамиИАгрегатами/Forms/ОсновнаяФорма/Module.bsl b/SSL/src/DataProcessors/УправлениеИтогамиИАгрегатами/Forms/ОсновнаяФорма/Module.bsl index 65e24f08e..8aaf677e9 100644 --- a/SSL/src/DataProcessors/УправлениеИтогамиИАгрегатами/Forms/ОсновнаяФорма/Module.bsl +++ b/SSL/src/DataProcessors/УправлениеИтогамиИАгрегатами/Forms/ОсновнаяФорма/Module.bsl @@ -811,18 +811,6 @@ КонецПроцедуры -&НаКлиенте -Процедура ПолучитьОптимальныеАгрегатКлиентЗавершение(ПустойПараметр, РезультатВыполнения) Экспорт - - Если РезультатВыполнения.ЕстьОшибки Тогда - ВызватьИсключение РезультатВыполнения.ТекстСообщения; - Иначе - ПоказатьОповещениеПользователя(НСтр("ru = 'Агрегаты успешно получены.'"),, - РезультатВыполнения.ТекстСообщения, БиблиотекаКартинок.Успешно32); - КонецЕсли; - -КонецПроцедуры - &НаКлиенте Процедура ИзменитьАгрегатыКлиент(Знач ПараметрыИтогов, Знач ОчищатьСообщения = Истина) @@ -853,7 +841,7 @@ ПолеСообщенияОбОшибке = ""; Если Не ПустаяСтрока(ПараметрыИтогов.Поле) Тогда - ПолеСообщенияОбОшибке = "АгрегатыПоРегистрам[" + Выбранные[Счетчик-1] + "]." + ПараметрыИтогов.Поле; + ПолеСообщенияОбОшибке = "АгрегатыПоРегистрам[" + Формат(Выбранные[Счетчик-1], "ЧГ=0") + "]." + ПараметрыИтогов.Поле; КонецЕсли; Если Не ВыбраннаяСтрока.РежимАгрегатов @@ -967,7 +955,7 @@ ПолеСообщенияОбОшибке = ""; Если Не ПустаяСтрока(ПараметрыИтогов.Поле) Тогда - ПолеСообщенияОбОшибке = "СписокИтогов[" + Выбранные[Счетчик - 1] + "]." + ПараметрыИтогов.Поле; + ПолеСообщенияОбОшибке = "СписокИтогов[" + Формат(Выбранные[Счетчик-1], "ЧГ=0") + "]." + ПараметрыИтогов.Поле; КонецЕсли; ЕстьРегистрыДляОбработки = Истина; @@ -1024,32 +1012,39 @@ Результат = ПолучитьОптимальныеАгрегатыСервер(); Обработчик = Новый ОписаниеОповещения("ПолучитьОптимальныеАгрегатКлиентЗавершение", ЭтотОбъект, Результат); - Если Результат.МожноПолучить Тогда - #Если ВебКлиент Тогда - ПолучитьФайл(Результат.АдресФайла, Результат.ИмяФайла, Истина); - ВыполнитьОбработкуОповещения(Обработчик, Истина); - #Иначе - ПолучаемыеФайлы = Новый Массив; - ПолучаемыеФайлы.Добавить(Новый ОписаниеПередаваемогоФайла(Результат.ИмяФайла, Результат.АдресФайла)); - Расширение = НРег(Сред(Результат.ИмяФайла, СтрНайти(Результат.ИмяФайла, ".") + 1)); - Если Расширение = "zip" Тогда - Фильтр = НСтр("ru = 'Архив ZIP (*.%1)|*.%1'"); - ИначеЕсли Расширение = "xml" Тогда - Фильтр = НСтр("ru = 'Документ XML (*.%1)|*.%1'"); - Иначе - Фильтр = ""; - КонецЕсли; - Фильтр = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Фильтр, Расширение); - ДиалогСохраненияФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение); - ДиалогСохраненияФайла.ПолноеИмяФайла = Результат.ИмяФайла; - ДиалогСохраненияФайла.Фильтр = Фильтр; - ДиалогСохраненияФайла.МножественныйВыбор = Ложь; - НачатьПолучениеФайлов(Обработчик, ПолучаемыеФайлы, ДиалогСохраненияФайла, Истина); - #КонецЕсли - Иначе - ВыполнитьОбработкуОповещения(Обработчик, Истина); + Если Не Результат.МожноПолучить Тогда + Возврат; КонецЕсли; + ПараметрыСохранения = ФайловаяСистемаКлиент.ПараметрыСохраненияФайла(); + ПараметрыСохранения.Диалог.Заголовок = НСтр("ru = 'Сохранить оптимальные агрегаты в файл'"); + Расширение = НРег(Сред(Результат.ИмяФайла, СтрНайти(Результат.ИмяФайла, ".") + 1)); + Если Расширение = "zip" Тогда + Фильтр = НСтр("ru = 'Файлы настроек агрегатов (*.zip)|*.zip'"); + ИначеЕсли Расширение = "xml" Тогда + Фильтр = НСтр("ru = 'Файлы настроек агрегатов (*.xml)|*.xml'"); + Иначе + Фильтр = ""; + КонецЕсли; + ПараметрыСохранения.Диалог.Фильтр = Фильтр; + ПараметрыСохранения.Диалог.ПолноеИмяФайла = Результат.ИмяФайла; + ФайловаяСистемаКлиент.СохранитьФайл(Обработчик, Результат.АдресФайла, Результат.ИмяФайла, ПараметрыСохранения); + +КонецПроцедуры + +&НаКлиенте +Процедура ПолучитьОптимальныеАгрегатКлиентЗавершение(ПолученныеФайлы, РезультатВыполнения) Экспорт + + Если ПолученныеФайлы = Неопределено Тогда + Возврат; + КонецЕсли; + + Если РезультатВыполнения.ЕстьОшибки Тогда + ВызватьИсключение РезультатВыполнения.ТекстСообщения; + КонецЕсли; + ПоказатьОповещениеПользователя(НСтр("ru = 'Агрегаты успешно получены.'"),, + РезультатВыполнения.ТекстСообщения, БиблиотекаКартинок.Успешно32); + КонецПроцедуры //////////////////////////////////////////////////////////////////////////////// diff --git a/SSL/src/DataProcessors/УстановкаОбновлений/Forms/Форма/Module.bsl b/SSL/src/DataProcessors/УстановкаОбновлений/Forms/Форма/Module.bsl index 008c5d6eb..f3ecbb3d4 100644 --- a/SSL/src/DataProcessors/УстановкаОбновлений/Forms/Форма/Module.bsl +++ b/SSL/src/DataProcessors/УстановкаОбновлений/Forms/Форма/Module.bsl @@ -471,7 +471,7 @@ Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); Диалог.Каталог = ПолучитьКаталогФайла(Элементы.ПолеФайлОбновления.ТекстРедактирования); Диалог.ПроверятьСуществованиеФайла = Истина; - Если ЭтоБазоваяВерсия Тогда + Если ЭтоБазоваяВерсия И Не ДоступнаУстановкаПатчейВБазовойВерсии Тогда Диалог.Фильтр = НСтр("ru = 'Все файлы поставки (*.cf*;*.cfu)|*.cf*;*.cfu|Файлы поставки конфигурации (*.cf)|*.cf|Файлы поставки обновления конфигурации(*.cfu)|*.cfu'"); Иначе Диалог.МножественныйВыбор = Истина; @@ -697,13 +697,16 @@ &НаКлиенте Процедура ПерейтиКУстановкеИсправлений() - ПомещаемыеФайлы = Новый Массив; + ЗагружаемыеФайлы = Новый Массив; Для Каждого ФайлИсправления Из ФайлыИсправлений Цикл - ПомещаемыеФайлы.Добавить(Новый ОписаниеПередаваемогоФайла(ФайлИсправления)); + ЗагружаемыеФайлы.Добавить(Новый ОписаниеПередаваемогоФайла(ФайлИсправления)); КонецЦикла; ОписаниеОповещения = Новый ОписаниеОповещения("ПродолжитьУстановкуИсправлений", ЭтотОбъект); - НачатьПомещениеФайлов(ОписаниеОповещения, ПомещаемыеФайлы,, Ложь, УникальныйИдентификатор); + ПараметрыЗагрузки = ФайловаяСистемаКлиент.ПараметрыЗагрузкиФайла(); + ПараметрыЗагрузки.ИдентификаторФормы = УникальныйИдентификатор; + ПараметрыЗагрузки.Интерактивно = Ложь; + ФайловаяСистемаКлиент.ЗагрузитьФайлы(ОписаниеОповещения, ПараметрыЗагрузки, ЗагружаемыеФайлы); КонецПроцедуры @@ -745,6 +748,11 @@ Элементы.ДекорацияУстановленоИсправлений.Видимость = Ложь; Возврат; КонецЕсли; + Иначе + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЦентрМониторинга") Тогда + МодульЦентрМониторинга = ОбщегоНазначения.ОбщийМодуль("ЦентрМониторинга"); + МодульЦентрМониторинга.ЗаписатьОперациюБизнесСтатистики("РучнаяУстановкаПатча", 1); + КонецЕсли; КонецЕсли; КонецПроцедуры @@ -865,6 +873,7 @@ // // Возвращаемое значение: // Строка - каталог файла +// Функция ПолучитьКаталогФайла(Знач ПутьКФайлу) ПозицияСимвола = СтрНайти(ПутьКФайлу, "\", НаправлениеПоиска.СКонца); diff --git a/SSL/src/DataProcessors/УстановкаОбновлений/Templates/ЗаставкаОбновленияКонфигурации/Template.txt b/SSL/src/DataProcessors/УстановкаОбновлений/Templates/ЗаставкаОбновленияКонфигурации/Template.txt index 0417aeefe..fdc8a490a 100644 --- a/SSL/src/DataProcessors/УстановкаОбновлений/Templates/ЗаставкаОбновленияКонфигурации/Template.txt +++ b/SSL/src/DataProcessors/УстановкаОбновлений/Templates/ЗаставкаОбновленияКонфигурации/Template.txt @@ -27,7 +27,7 @@ var ret = 0 // Код возврата предыдущего шага. var finish = false var errStep = 0 - var loadStep = 8 // шаг начала загрузки первого файла обновления + var loadStep = 10 // шаг начала загрузки первого файла обновления var endLoadStep = loadStep + cfgFileNames.length * 6 // следующий шаг после завершения загрузки файлов обновления if (cfgFileNames.length === 0) { @@ -72,6 +72,12 @@ case 7: ret = runDeferredHandlers() break + case 8: + setProgress('[Шаг11УдалениеПатчей]') + break + case 9: + ret = DeletePatches() + break case endLoadStep: if (makeCompression) { setProgress('[Шаг7СжатиеТаблиц]') diff --git a/SSL/src/DataProcessors/УстановкаОбновлений/Templates/МакетФайлаОбновленияКонфигурации/Template.txt b/SSL/src/DataProcessors/УстановкаОбновлений/Templates/МакетФайлаОбновленияКонфигурации/Template.txt index a50fb74eb..eac96ce88 100644 --- a/SSL/src/DataProcessors/УстановкаОбновлений/Templates/МакетФайлаОбновленияКонфигурации/Template.txt +++ b/SSL/src/DataProcessors/УстановкаОбновлений/Templates/МакетФайлаОбновленияКонфигурации/Template.txt @@ -883,7 +883,7 @@ function runEnterprise () { return 0 } -function addDeletePatches () { +function addDeletePatches() { var fixFileNamesString = fixFileNames.join('\n') var removeFixNamesString = removeFixNames.join('\n') @@ -902,6 +902,39 @@ function addDeletePatches () { return result } +function DeletePatches() { + + if (!useComConnector) { + return 0 + } + + var Action = 'RemoveAll' + + try { + var result = runApp('wscript.exe', + format('"{0}\\add-delete-patches.js" /ConnectionString:"{1}" /COMConnectorName:"{2}" /Action:"{3}" /Out:"{4}\\{5}"', + thisFileDir, + connectionString.replace(/"/g, '\''), + comConnectorName, + Action, + thisFileDir, + tempLogFileName + ), + SW_HIDE, true) + appendLog() + + } catch (e) { + log(format('Исключение при вызове ОбновлениеКонфигурацииВызовСервера.УдалитьИсправленияИзСкрипта: {0}, {1}.', e.name, e.message), true) + result = 2; + } + + if (result != 0) { + log('Не удалось удалить исправления конфигурации. Подробности см. в предыдущей записи.') + } + + return result +} + function registerCOM() { isSchedule = (taskNameScheduleService !== '') param = isSchedule ? format('/s "{0}"', v8comcntr) : format('/n /i:user /s "{0}"', v8comcntr) diff --git a/SSL/src/DataProcessors/УстановкаОбновлений/Templates/СкриптУдаленияПатчей/Template.txt b/SSL/src/DataProcessors/УстановкаОбновлений/Templates/СкриптУдаленияПатчей/Template.txt index 745275e11..d4ab73428 100644 --- a/SSL/src/DataProcessors/УстановкаОбновлений/Templates/СкриптУдаленияПатчей/Template.txt +++ b/SSL/src/DataProcessors/УстановкаОбновлений/Templates/СкриптУдаленияПатчей/Template.txt @@ -22,6 +22,7 @@ try { var COMConnectorName = WScript.Arguments.Named.Item('COMConnectorName') var fixFileNames = WScript.Arguments.Named.Item('FixFileNames') var removeFixNames = WScript.Arguments.Named.Item('RemoveFixNames') + var Action = WScript.Arguments.Named.Item('Action') var outFileName = WScript.Arguments.Named.Item('Out') var outf = fso.OpenTextFile(outFileName, ForWriting, true, OpenAsASCII) @@ -29,7 +30,11 @@ try { var COMConnector = new ActiveXObject(COMConnectorName) var connection = COMConnector.Connect(ConnectionString) - connection.ОбновлениеКонфигурацииВызовСервера.ОбновитьИсправленияИзСкрипта(fixFileNames, removeFixNames) + if (Action == 'RemoveAll') { + connection.ОбновлениеКонфигурацииВызовСервера.УдалитьИсправленияИзСкрипта(); + } else { + connection.ОбновлениеКонфигурацииВызовСервера.ОбновитьИсправленияИзСкрипта(fixFileNames, removeFixNames) + } } catch (ex) { if (outf != null) { diff --git a/SSL/src/DefinedTypes/ВладелецЗначенийКлючейДоступаОбъект/ВладелецЗначенийКлючейДоступаОбъект.mdo b/SSL/src/DefinedTypes/ВладелецЗначенийКлючейДоступаОбъект/ВладелецЗначенийКлючейДоступаОбъект.mdo index b6084f5e7..50517c755 100644 --- a/SSL/src/DefinedTypes/ВладелецЗначенийКлючейДоступаОбъект/ВладелецЗначенийКлючейДоступаОбъект.mdo +++ b/SSL/src/DefinedTypes/ВладелецЗначенийКлючейДоступаОбъект/ВладелецЗначенийКлючейДоступаОбъект.mdo @@ -34,7 +34,6 @@ CatalogObject.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы CatalogObject.ЗапланированноеВзаимодействиеПрисоединенныеФайлы CatalogObject.ЭлектронноеПисьмоВходящееПрисоединенныеФайлы - CatalogObject.ИдентификаторыОбъектовМетаданных CatalogObject.ВариантыОтчетов TaskObject.ЗадачаИсполнителя CatalogObject.ПапкиЭлектронныхПисем diff --git a/SSL/src/DefinedTypes/КурсВалюты/КурсВалюты.mdo b/SSL/src/DefinedTypes/КурсВалюты/КурсВалюты.mdo new file mode 100644 index 000000000..7563776a0 --- /dev/null +++ b/SSL/src/DefinedTypes/КурсВалюты/КурсВалюты.mdo @@ -0,0 +1,19 @@ + + + + + + КурсВалюты + + ru + Курс валюты + + + Number + + 10 + 4 + true + + + diff --git a/SSL/src/DefinedTypes/ОбъектСНастраиваемымПорядком/ОбъектСНастраиваемымПорядком.mdo b/SSL/src/DefinedTypes/ОбъектСНастраиваемымПорядком/ОбъектСНастраиваемымПорядком.mdo index f83a16a35..844da5a1a 100644 --- a/SSL/src/DefinedTypes/ОбъектСНастраиваемымПорядком/ОбъектСНастраиваемымПорядком.mdo +++ b/SSL/src/DefinedTypes/ОбъектСНастраиваемымПорядком/ОбъектСНастраиваемымПорядком.mdo @@ -10,6 +10,7 @@ CatalogObject.ПравилаОбработкиЭлектроннойПочты + CatalogObject.СостоянияОригиналовПервичныхДокументов CatalogObject.ВидыКонтактнойИнформации CatalogObject.ВариантыОтветовАнкет CatalogObject.ИдентификаторыОбъектовМетаданных diff --git a/SSL/src/DefinedTypes/ОбъектСУчетомОригиналовПервичныхДокументов/ОбъектСУчетомОригиналовПервичныхДокументов.mdo b/SSL/src/DefinedTypes/ОбъектСУчетомОригиналовПервичныхДокументов/ОбъектСУчетомОригиналовПервичныхДокументов.mdo new file mode 100644 index 000000000..88660d927 --- /dev/null +++ b/SSL/src/DefinedTypes/ОбъектСУчетомОригиналовПервичныхДокументов/ОбъектСУчетомОригиналовПервичныхДокументов.mdo @@ -0,0 +1,17 @@ + + + + + + ОбъектСУчетомОригиналовПервичныхДокументов + + ru + Объект с учетом оригиналов первичных документов + + + String + + 10 + + + diff --git a/SSL/src/DocumentJournals/Взаимодействия/Forms/ПечатьЭлектронногоПисьма/Module.bsl b/SSL/src/DocumentJournals/Взаимодействия/Forms/ПечатьЭлектронногоПисьма/Module.bsl index c3ad3d891..39ab81a0e 100644 --- a/SSL/src/DocumentJournals/Взаимодействия/Forms/ПечатьЭлектронногоПисьма/Module.bsl +++ b/SSL/src/DocumentJournals/Взаимодействия/Forms/ПечатьЭлектронногоПисьма/Module.bsl @@ -148,7 +148,7 @@ &НаКлиенте Процедура ОткрытьВложениеПисьма() - + ТекущиеДанные = Элементы.Вложения.ТекущиеДанные; Если ТекущиеДанные = Неопределено Тогда Возврат; @@ -167,19 +167,7 @@ КонецЕсли; Иначе - #Если Не ВебКлиент Тогда - Если ЭтоАдресВременногоХранилища(ТекущиеДанные.АдресВоВременномХранилище) Тогда - ИмяВременнойПапки = ПолучитьИмяВременногоФайла(); - СоздатьКаталог(ИмяВременнойПапки); - ПутьКФайлу = ИмяВременнойПапки + "\" + ТекущиеДанные.ИмяФайла; - ДвоичныеДанные = ПолучитьИзВременногоХранилища(ТекущиеДанные.АдресВоВременномХранилище); // ДвоичныеДанные. - ДвоичныеДанные.Записать(ПутьКФайлу); - КонецЕсли; - ФайловаяСистемаКлиент.ОткрытьФайл(ПутьКФайлу); - #Иначе - ПутьКФайлу = ТекущиеДанные.ИмяФайлаНаКомпьютере; - ПолучитьФайл(ПутьКФайлу, ТекущиеДанные.ИмяФайла, Истина); - #КонецЕсли + ФайловаяСистемаКлиент.ОткрытьФайл(ТекущиеДанные.АдресВоВременномХранилище); КонецЕсли; КонецПроцедуры diff --git a/SSL/src/DocumentJournals/Взаимодействия/Forms/ФормаСписка/Form.form b/SSL/src/DocumentJournals/Взаимодействия/Forms/ФормаСписка/Form.form index 358c71f4c..41dfe71d7 100644 --- a/SSL/src/DocumentJournals/Взаимодействия/Forms/ФормаСписка/Form.form +++ b/SSL/src/DocumentJournals/Взаимодействия/Forms/ФормаСписка/Form.form @@ -4,6 +4,116 @@ ru Взаимодействия + + ПредупреждениеОНеотправленныхПисьмах + 926 + + ПредупреждениеОНеотправленныхПисьмахКартинка + 928 + + <key>ru</key> + <value>Картинка предупреждение</value> + + true + true + + true + + + КартинкаПредупреждениеРасширеннаяПодсказка1 + 930 + Label + true + true + + Left + + + + КартинкаПредупреждениеКонтекстноеМеню1 + 929 + true + + true + true + + + CommonPicture.Предупреждение + + AsFileRef + + + + ПредупреждениеОНеотправленныхПисьмахНадпись + 931 + + <key>ru</key> + <value>Регламентное задание <b>Получение</><b> </><b>и</><b> </><b>отправка</><b> </><b>писем</> отключено, доставка писем не выполняется. <link ВключитьПолучениеИОтправкуПисем>Включить</></value> + + true + true + + true + + Button + + ПредупреждениеОНебезопасномСодержимомРасширеннаяПодсказка1 + 933 + Label + true + true + + Left + + + + ПредупреждениеОНебезопасномСодержимомКонтекстноеМеню1 + 932 + true + + true + Label + 33 + true + true + + + URLProcessing + ПредупреждениеОНеотправленныхПисьмахНадписьОбработкаНавигационнойСсылки + + Left + + + true + true + + true + + + <key>ru</key> + <value>Группа предупреждение</value> + + + ПредупреждениеБезопасностиРасширеннаяПодсказка1 + 927 + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + Auto + WeakSeparation + true + true + Auto + Auto + + ГруппаПользовательскихНастроек 832 @@ -2205,32 +2315,6 @@ UserCmds Auto - - КонтактыПанелиНавигацииКонтекстноеМенюТолькоЗначимыеКонтакты - 782 - true - true - - true - - - КонтактыПанелиНавигацииКонтекстноеМенюТолькоЗначимыеКонтактыРасширеннаяПодсказка - 783 - Label - true - true - - Left - - - Form.Command.ТолькоЗначимыеКонтакты - Normal - Auto - true - true - UserCmds - Auto - true true @@ -2393,6 +2477,40 @@ true
    + + ДекорацияТолькоЗначимыеКонтакты + 937 + true + true + + true + + + ДекорацияТолькоЗначимыеКонтактыРасширеннаяПодсказка + 939 + Label + true + true + + Left + + + + ДекорацияТолькоЗначимыеКонтактыКонтекстноеМеню + 938 + true + + Label + true + true + + + URLProcessing + ДекорацияТолькоЗначимыеКонтактыОбработкаНавигационнойСсылки + + Left + + true true @@ -2959,32 +3077,6 @@ UserCmds Auto
    - - ПредметыПанельНавигацииКонтекстноеМенюТолькоЗначимыеПредметы - 788 - true - true - - true - - - ПредметыПанельНавигацииКонтекстноеМенюТолькоЗначимыеПредметыРасширеннаяПодсказка - 789 - Label - true - true - - Left - - - Form.Command.ТолькоЗначимыеПредметы - Normal - Auto - true - true - UserCmds - Auto - true true @@ -3140,6 +3232,40 @@ true
    + + ДекорацияТолькоЗначимыеПредметы + 934 + true + true + + true + + + ДекорацияТолькоЗначимыеПредметыРасширеннаяПодсказка + 936 + Label + true + true + + Left + + + + ДекорацияТолькоЗначимыеПредметыКонтекстноеМеню + 935 + true + + Label + true + true + + + URLProcessing + ДекорацияТолькоЗначимыеПредметыОбработкаНавигационнойСсылки + + Left + + true true @@ -6910,7 +7036,7 @@
    UsualGroup - HorizontalIfPossible + AlwaysHorizontal Auto true true @@ -8335,6 +8461,17 @@ true + + ГиперссылкаЦвет + 37 + + + true + + + true + + УстановитьВариантНавигацииПоПредмету @@ -9032,50 +9169,6 @@ <currentRowUse>DontUse</currentRowUse> <selectedRowsUse>Auto</selectedRowsUse> </formCommands> - <formCommands> - <name>ТолькоЗначимыеКонтакты</name> - <title> - <key>ru</key> - <value>Только значимые</value> - - 30 - - ru - Только значимые контакты - - - true - - - - ТолькоЗначимыеКонтакты - - - DontUse - Auto - - - ТолькоЗначимыеПредметы - - <key>ru</key> - <value>Только значимые предметы</value> - - 31 - - ru - Только значимые предметы - - - true - - - - ТолькоЗначимыеПредметы - - - DontUse - Auto - ТолькоАктивныеПредметы diff --git a/SSL/src/DocumentJournals/Взаимодействия/Forms/ФормаСписка/Module.bsl b/SSL/src/DocumentJournals/Взаимодействия/Forms/ФормаСписка/Module.bsl index b03217159..c1b720d03 100644 --- a/SSL/src/DocumentJournals/Взаимодействия/Forms/ФормаСписка/Module.bsl +++ b/SSL/src/DocumentJournals/Взаимодействия/Forms/ФормаСписка/Module.bsl @@ -27,6 +27,8 @@ ИнформационнаяБазаФайловая = ОбщегоНазначения.ИнформационнаяБазаФайловая(); + ГиперссылкаЦвет = ЦветаСтиля.ГиперссылкаЦвет; + Взаимодействия.ИнициализироватьФормуСпискаВзаимодействий(ЭтотОбъект, Параметры); ОпределитьДоступностьПолнотекстовыйПоиск(); ПравоПометкиУдаленияПапок = ПравоДоступа("Изменение", Метаданные.Справочники.ПапкиЭлектронныхПисем); @@ -64,6 +66,10 @@ Взаимодействия.ЗаполнитьСписокДоступныхДляСозданияДокументов(ДокументыДоступныеДляСоздания); ЗапрещеноОтображениеНебезопасногоСодержимогоВПисьмах = Взаимодействия.ЗапрещеноОтображениеНебезопасногоСодержимогоВПисьмах(); + ПроверитьСостояниеОтправкиПисемНаСервере(); + СФормироватьДекорациюТолькоЗначимыеПредметы(); + СФормироватьДекорациюТолькоЗначимыеКонтакты(); + КонецПроцедуры &НаСервере @@ -147,6 +153,8 @@ ВосстановитьРаскрытыеУзлыДерева(); + ПодключитьОбработчикОжидания("ПроверитьСостояниеОтправкиПисем", 60, Истина); + КонецПроцедуры &НаСервере @@ -596,6 +604,42 @@ КонецПроцедуры +&НаКлиенте +Процедура ПредупреждениеОНеотправленныхПисьмахНадписьОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка) + + ВзаимодействияКлиент.ОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка); + +КонецПроцедуры + +&НаКлиенте +Процедура ДекорацияТолькоЗначимыеПредметыОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + + Если НавигационнаяСсылкаФорматированнойСтроки = "ИзменитьТолькоЗначимыеПредметы" Тогда + + ТолькоЗначимыеПредметы = Не ТолькоЗначимыеПредметы; + ЗаполнитьПанельПредметов(); + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ДекорацияТолькоЗначимыеКонтактыОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + + Если НавигационнаяСсылкаФорматированнойСтроки = "ИзменитьТолькоЗначимыеКонтакты" Тогда + + ТолькоЗначимыеКонтакты = Не ТолькоЗначимыеКонтакты; + ЗаполнитьПанельКонтактов(); + + КонецЕсли; + +КонецПроцедуры + + //////////////////////////////////////////////////////////////////////////////////// // Обработка перетаскивания @@ -1127,7 +1171,17 @@ &НаКлиенте Процедура СоздатьЭлектронноеПисьмо(Команда) - СоздатьНовоеВзаимодействие("ЭлектронноеПисьмоИсходящее"); + ОписаниеОповещения = Новый ОписаниеОповещения("СоздатьЭлектронноеПисьмоПродолжение", ЭтотОбъект, ); + РаботаСПочтовымиСообщениямиКлиент.ПроверитьНаличиеУчетнойЗаписиДляОтправкиПочты(ОписаниеОповещения); + +КонецПроцедуры + +&НаКлиенте +Процедура СоздатьЭлектронноеПисьмоПродолжение(ПроверкаВыполнена, ДополнительныеПараметры) Экспорт + + Если ПроверкаВыполнена = Истина Тогда + СоздатьНовоеВзаимодействие("ЭлектронноеПисьмоИсходящее"); + КонецЕсли; КонецПроцедуры @@ -1221,22 +1275,6 @@ КонецПроцедуры -&НаКлиенте -Процедура ТолькоЗначимыеКонтакты(Команда) - - ТолькоЗначимыеКонтакты = Не ТолькоЗначимыеКонтакты; - ЗаполнитьПанельКонтактов(); - -КонецПроцедуры - -&НаКлиенте -Процедура ТолькоЗначимыеПредметы(Команда) - - ТолькоЗначимыеПредметы = Не ТолькоЗначимыеПредметы; - ЗаполнитьПанельПредметов(); - -КонецПроцедуры - &НаКлиенте Процедура ТолькоАктивныеПредметы(Команда) @@ -1557,15 +1595,13 @@ ВключитьНебезопасноеСодержимое = Ложь; УстановитьВидимостьПредупрежденияБезопасности(ЭтотОбъект); - ИмяСписка = "Список"; - - Если ВыборКорректен(ИмяСписка,Истина) Тогда + Если ВыборКорректен("Список",Истина) Тогда Если ОтображатьОбластьЧтения Тогда ИмяСтраницыПредпросмотра = Элементы.СтраницыПредпросмотр.ТекущаяСтраница.Имя; - Если ВзаимодействиеДляКоторогоСформированПредпросмотр <> Элементы[ИмяСписка].ТекущиеДанные.Ссылка Тогда - ОтобразитьПредпросмотрВзаимодействия(Элементы[ИмяСписка].ТекущиеДанные.Ссылка, ИмяСтраницыПредпросмотра); + Если ВзаимодействиеДляКоторогоСформированПредпросмотр <> Элементы.Список.ТекущиеДанные.Ссылка Тогда + ОтобразитьПредпросмотрВзаимодействия(Элементы.Список.ТекущиеДанные.Ссылка, ИмяСтраницыПредпросмотра); Если ИмяСтраницыПредпросмотра <> Элементы.СтраницыПредпросмотр.ТекущаяСтраница.Имя Тогда Элементы.СтраницыПредпросмотр.ТекущаяСтраница = Элементы[ИмяСтраницыПредпросмотра]; КонецЕсли; @@ -1574,7 +1610,7 @@ КонецЕсли; Если РасширенныйПоиск Тогда - ЗаполнитьОписаниеНайденоПП(Элементы[ИмяСписка].ТекущиеДанные.Ссылка); + ЗаполнитьОписаниеНайденоПП(Элементы.Список.ТекущиеДанные.Ссылка); Иначе ОписаниеНайденоПП = ""; КонецЕсли; @@ -1949,6 +1985,8 @@ КонецЕсли; УстановитьЗаголовокВидаПанелиНавигации(); + СФормироватьДекорациюТолькоЗначимыеПредметы(); + СФормироватьДекорациюТолькоЗначимыеКонтакты(); КонецПроцедуры @@ -1975,7 +2013,7 @@ НайденныеСтроки = ТаблицаДопРеквизитовСвойств.НайтиСтроки(Новый Структура("ДопРеквизитСведение", ТекущееСвойствоПанелиНавигации)); Если НайденныеСтроки.Количество() > 0 Тогда - Элементы["ДопКнопкаВыбораВариантаНавигацииСвойства_" + Строка(НайденныеСтроки[0].ПорядковыйНомер)].Пометка = Истина; + Элементы["ДопКнопкаВыбораВариантаНавигацииСвойства_" + XMLСтрока(НайденныеСтроки[0].ПорядковыйНомер)].Пометка = Истина; КонецЕсли; ИначеЕсли Элементы.СтраницыПанелиНавигации.ТекущаяСтраница = Элементы.СтраницаЗакладки Тогда @@ -2260,17 +2298,14 @@ Запрос = Новый Запрос; ТекстЗапросаПоОтбору = ПолучитьТекстЗапросаПоОтборуСписка(Запрос); - СтрокаПоКоторойИщем = Прав(ТекстЗапросаПоОтбору, СтрДлина(ТекстЗапросаПоОтбору) - СтрНайти(ТекстЗапросаПоОтбору,"ГДЕ") + 1); + СтрокаПоКоторойИщем = Прав(ТекстЗапросаПоОтбору, СтрДлина(ТекстЗапросаПоОтбору) - СтрНайти(ТекстЗапросаПоОтбору, "ГДЕ") + 1); МассивСтрокУсловия = СтрРазделить(СтрокаПоКоторойИщем, Символы.ПС, Ложь); ТекстУсловийПоЖурналуДокументов = ""; ТекстУсловийПоРегистру = ""; Инд = 1; Для Каждого СтрокаУсловия Из МассивСтрокУсловия Цикл - СтрокаУсловия = СтрЗаменить(СтрокаУсловия,"&П","&Пар"); - Если Инд = 2 Тогда - СтрокаУсловия = " И " + СтрокаУсловия; - КонецЕсли; + СтрокаУсловия = СтрЗаменить(СтрокаУсловия, "&П", "&Пар"); Если СтрНайти(СтрокаУсловия, "ЖурналДокументовВзаимодействия") Тогда ТекстУсловийПоЖурналуДокументов = ТекстУсловийПоЖурналуДокументов + СтрокаУсловия + Символы.ПС; ИначеЕсли СтрНайти(СтрокаУсловия, "ПредметыВзаимодействий") Тогда @@ -2283,33 +2318,33 @@ Инд = Инд + 1; КонецЦикла; - Если Не ПустаяСтрока(ТекстУсловийПоРегистру) Тогда - ТекстУсловийПоРегистру = "ГДЕ" + " " + ТекстУсловийПоРегистру - КонецЕсли; + ТекстЗапросаДинамическийСписок = + "ВЫБРАТЬ + | СостоянияПредметовВзаимодействий.Предмет КАК Предмет, + | СостоянияПредметовВзаимодействий.КоличествоНеРассмотрено КАК КоличествоНеРассмотрено, + | СостоянияПредметовВзаимодействий.ДатаПоследнегоВзаимодействия КАК ДатаПоследнегоВзаимодействия, + | СостоянияПредметовВзаимодействий.Активен КАК Активен, + | ТИПЗНАЧЕНИЯ(СостоянияПредметовВзаимодействий.Предмет) КАК ТипПредмета + |ИЗ + | РегистрСведений.СостоянияПредметовВзаимодействий КАК СостоянияПредметовВзаимодействий + |ГДЕ + | ИСТИНА В + | (ВЫБРАТЬ ПЕРВЫЕ 1 + | ИСТИНА + | ИЗ + | РегистрСведений.ПредметыПапкиВзаимодействий КАК ПредметыВзаимодействий + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ЖурналДокументов.Взаимодействия КАК ЖурналДокументовВзаимодействия + | ПО + | ПредметыВзаимодействий.Предмет = СостоянияПредметовВзаимодействий.Предмет + | И ПредметыВзаимодействий.Взаимодействие = ЖурналДокументовВзаимодействия.Ссылка + | И &ТекстУсловияЖурналДокументов + | ГДЕ + | &ТекстУсловияРегистрПапки)"; - ТекстЗапросаДинамическийСписок = " - |ВЫБРАТЬ - | СостоянияПредметовВзаимодействий.Предмет, - | СостоянияПредметовВзаимодействий.КоличествоНеРассмотрено, - | СостоянияПредметовВзаимодействий.ДатаПоследнегоВзаимодействия, - | СостоянияПредметовВзаимодействий.Активен КАК Активен, - | ТИПЗНАЧЕНИЯ(СостоянияПредметовВзаимодействий.Предмет) КАК ТипПредмета - |ИЗ - | РегистрСведений.СостоянияПредметовВзаимодействий КАК СостоянияПредметовВзаимодействий - |ГДЕ - | ИСТИНА В - | (ВЫБРАТЬ ПЕРВЫЕ 1 - | ИСТИНА - | ИЗ - | РегистрСведений.ПредметыПапкиВзаимодействий КАК ПредметыВзаимодействий - | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ЖурналДокументов.Взаимодействия КАК ЖурналДокументовВзаимодействия - | ПО ПредметыВзаимодействий.Предмет = СостоянияПредметовВзаимодействий.Предмет - | И ПредметыВзаимодействий.Взаимодействие = ЖурналДокументовВзаимодействия.Ссылка - | %ТекстУсловияЖурналДокументов% - | %ТекстУсловияРегистрПапки%)"; - - ТекстЗапросаДинамическийСписок = СтрЗаменить(ТекстЗапросаДинамическийСписок, "%ТекстУсловияЖурналДокументов%", ТекстУсловийПоЖурналуДокументов); - ТекстЗапросаДинамическийСписок = СтрЗаменить(ТекстЗапросаДинамическийСписок, "%ТекстУсловияРегистрПапки%", ТекстУсловийПоРегистру); + ТекстЗапросаДинамическийСписок = СтрЗаменить(ТекстЗапросаДинамическийСписок, "&ТекстУсловияЖурналДокументов", + ?(ПустаяСтрока(ТекстУсловийПоЖурналуДокументов), "ИСТИНА", ТекстУсловийПоЖурналуДокументов)); + ТекстЗапросаДинамическийСписок = СтрЗаменить(ТекстЗапросаДинамическийСписок, "&ТекстУсловияРегистрПапки", + ?(ПустаяСтрока(ТекстУсловийПоРегистру), "ИСТИНА", ТекстУсловийПоРегистру)); ПараметрыСписка.ТекстЗапроса = ТекстЗапросаДинамическийСписок; ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.ПредметыПанельНавигации, ПараметрыСписка); @@ -2353,9 +2388,9 @@ ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(ОтборПриемник,"Активен", Истина,ВидСравненияКомпоновкиДанных.Равно); КонецЕсли; - Элементы.ПредметыПанельНавигацииКонтекстноеМенюТолькоЗначимыеПредметы.Пометка = ТолькоЗначимыеПредметы; Элементы.ПредметыПанельНавигацииКонтекстноеМенюТолькоАктивныеПредметы.Пометка = ПоказыватьВсеАктивныеПредметы; - + СФормироватьДекорациюТолькоЗначимыеПредметы(); + КонецПроцедуры &НаСервере @@ -2672,7 +2707,7 @@ КонецЕсли; - Элементы.КонтактыПанелиНавигацииКонтекстноеМенюТолькоЗначимыеКонтакты.Пометка = ТолькоЗначимыеКонтакты; + СФормироватьДекорациюТолькоЗначимыеКонтакты(); КонецПроцедуры @@ -2786,7 +2821,6 @@ КонецЕсли; Если ВзаимодействияКлиентСервер.ЯвляетсяВзаимодействием(Строка.Значение) Тогда - СтрокаДетали = Строка.Строки[0]; НоваяСтрока.Представление = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = '%1 от %2 %3'"), @@ -2794,7 +2828,6 @@ Формат(СтрокаДетали.Дата, "ДЛФ=DT"), ?(Строка.НеРассмотрено = 0 Или Не ИспользоватьПризнакРассмотрено, "","(" + Строка(Строка.НеРассмотрено) + ")")); НоваяСтрока.НомерКартинки = СтрокаДетали.НомерКартинки; - Иначе НоваяСтрока.Представление = Строка(НоваяСтрока.Значение) + ?(Строка.НеРассмотрено = 0 Или Не ИспользоватьПризнакРассмотрено, @@ -3054,11 +3087,11 @@ НоваяСтрока = ТаблицаДопРеквизитовСвойствТипаБулево.Добавить(); Иначе - НоваяКоманда = Команды.Добавить("УстановитьВариантПоСвойству_" + Строка(Инд)); + НоваяКоманда = Команды.Добавить("УстановитьВариантПоСвойству_" + XMLСтрока(Инд)); НоваяКоманда.Действие = "ПереключитьПанельНавигации"; - ЭлементКнопкаПодменю = Элементы.Добавить("ДопКнопкаВыбораВариантаНавигацииСвойства_" - + Строка(Инд),Тип("КнопкаФормы"), Элементы.ВыборВариантаНавигации); + ЭлементКнопкаПодменю = Элементы.Добавить("ДопКнопкаВыбораВариантаНавигацииСвойства_" + XMLСтрока(Инд), + Тип("КнопкаФормы"), Элементы.ВыборВариантаНавигации); ЭлементКнопкаПодменю.Вид = ВидКнопкиФормы.КнопкаКоманднойПанели; ЭлементКнопкаПодменю.ИмяКоманды = НоваяКоманда.Имя; ЭлементКнопкаПодменю.Заголовок = НСтр("ru = 'По'") + " " + Выборка.Представление; @@ -3243,6 +3276,7 @@ ИмяЭлемента, СтрокаВсе = Неопределено) + ТекущаяТаблица = Элементы[ИмяЭлемента]; // ТаблицаФормы Если ЗначениеТекущейСтроки <> Неопределено Тогда Если ИмяЭлемента <> "Категории" Тогда ИдентификаторНайденнойСтроки = НайтиСтрокуВДанныхФормыДерево(ЭтотОбъект[ИмяЭлемента], @@ -3251,13 +3285,14 @@ ИдентификаторНайденнойСтроки = НайтиСтрокуВДанныхФормыКоллекция(ЭтотОбъект[ИмяЭлемента], ЗначениеТекущейСтроки,"Значение"); КонецЕсли; + Если ИдентификаторНайденнойСтроки > 0 Тогда - Элементы[ИмяЭлемента].ТекущаяСтрока = ИдентификаторНайденнойСтроки; + ТекущаяТаблица.ТекущаяСтрока = ИдентификаторНайденнойСтроки; Иначе - Элементы[ИмяЭлемента].ТекущаяСтрока = ?(СтрокаВсе = Неопределено, 0, СтрокаВсе.ПолучитьИдентификатор()); + ТекущаяТаблица.ТекущаяСтрока = ?(СтрокаВсе = Неопределено, 0, СтрокаВсе.ПолучитьИдентификатор()); КонецЕсли; Иначе - Элементы[ИмяЭлемента].ТекущаяСтрока = ?(СтрокаВсе = Неопределено, 0, СтрокаВсе.ПолучитьИдентификатор()); + ТекущаяТаблица.ТекущаяСтрока = ?(СтрокаВсе = Неопределено, 0, СтрокаВсе.ПолучитьИдентификатор()); КонецЕсли; КонецПроцедуры @@ -3269,6 +3304,7 @@ // Параметры: // Взаимодействия - список выбранных взаимодействий. // Ответственный - устанавливаемый ответственный. +// &НаСервере Процедура УстановитьОтветственного(Ответственный, Знач ДанныеДляОбработки) @@ -3308,6 +3344,7 @@ // Установить флаг "Рассмотрено" в выбранных взаимодействиях - серверная часть. // Параметры: // Взаимодействия - список выбранных взаимодействий. +// &НаСервере Процедура УстановитьФлагРассмотрено(Знач ДанныеДляОбработки, ЗначениеПризнака) @@ -3539,6 +3576,7 @@ // Параметры: // Взаимодействия - список выбранных взаимодействий. // Предмет - устанавливаемый предмет взаимодействий. +// &НаСервере Процедура УстановитьПредмет(Предмет, Знач ДанныеДляОбработки) @@ -4099,4 +4137,49 @@ И Форма.ЕстьНебезопасноеСодержимое И Не Форма.ВключитьНебезопасноеСодержимое; КонецПроцедуры -#КонецОбласти +&НаКлиенте +Процедура ПроверитьСостояниеОтправкиПисем() + + ПроверитьСостояниеОтправкиПисемНаСервере(); + Интервал = ?(Элементы.ПредупреждениеОНеотправленныхПисьмах.Видимость, 60, 600); + ПодключитьОбработчикОжидания("ПроверитьСостояниеОтправкиПисем", Интервал, Истина); + +КонецПроцедуры + +&НаСервере +Процедура ПроверитьСостояниеОтправкиПисемНаСервере() + + Элементы.ПредупреждениеОНеотправленныхПисьмах.Видимость = Взаимодействия.ОтправкаПисемПриостановлена(); + Элементы.ПредупреждениеОНеотправленныхПисьмахНадпись.Заголовок = Взаимодействия.ТекстПредупрежденияОПриостановкеОтправкиПисем(); + +КонецПроцедуры + +&НаСервере +Процедура СФормироватьДекорациюТолькоЗначимыеКонтакты() + + МассивСтрок = Новый Массив; + Если ТолькоЗначимыеКонтакты Тогда + ТекстЗаголовка = СтроковыеФункции.ФорматированнаяСтрока(НСтр("ru='Контакты с взаимодействиями по отбору, <a href = ""ИзменитьТолькоЗначимыеКонтакты"">изменить</a>'")); + Иначе + ТекстЗаголовка = СтроковыеФункции.ФорматированнаяСтрока(НСтр("ru='Отображаются все контакты, <a href = ""ИзменитьТолькоЗначимыеКонтакты"">изменить</a>'")); + КонецЕсли; + + Элементы.ДекорацияТолькоЗначимыеКонтакты.Заголовок = ТекстЗаголовка; + +КонецПроцедуры + +&НаСервере +Процедура СФормироватьДекорациюТолькоЗначимыеПредметы() + + МассивСтрок = Новый Массив; + Если ТолькоЗначимыеПредметы Тогда + ТекстЗаголовка = СтроковыеФункции.ФорматированнаяСтрока(НСтр("ru='Предметы с взаимодействиями по отбору, <a href = ""ИзменитьТолькоЗначимыеПредметы"">изменить</a>'")); + Иначе + ТекстЗаголовка = СтроковыеФункции.ФорматированнаяСтрока(НСтр("ru='Отображаются все предметы, <a href = ""ИзменитьТолькоЗначимыеПредметы"">изменить</a>'")); + КонецЕсли; + + Элементы.ДекорацияТолькоЗначимыеПредметы.Заголовок = ТекстЗаголовка; + +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git a/SSL/src/DocumentJournals/Взаимодействия/Forms/ФормаСпискаПараметрическая/Module.bsl b/SSL/src/DocumentJournals/Взаимодействия/Forms/ФормаСпискаПараметрическая/Module.bsl index b77a2b6ef..e782a4be0 100644 --- a/SSL/src/DocumentJournals/Взаимодействия/Forms/ФормаСпискаПараметрическая/Module.bsl +++ b/SSL/src/DocumentJournals/Взаимодействия/Forms/ФормаСпискаПараметрическая/Module.bsl @@ -1029,7 +1029,7 @@ // Контакт - Ссылка - контакт, для которого необходимо выполнить поиск связанных контактов. // // Возвращаемое значение: -// Массив - +// Массив // &НаСервере Функция ПараметрКонтактВЗависимостиОтТипа(Контакт) diff --git a/SSL/src/Documents/Анкета/Forms/ФормаДокумента/Module.bsl b/SSL/src/Documents/Анкета/Forms/ФормаДокумента/Module.bsl index 2acac4eb7..ff31b08e9 100644 --- a/SSL/src/Documents/Анкета/Forms/ФормаДокумента/Module.bsl +++ b/SSL/src/Documents/Анкета/Forms/ФормаДокумента/Module.bsl @@ -316,6 +316,7 @@ // ВыборкаВопрос - ВыборкаИзРезультатаЗапроса - выборка, содержащая значения ответов // на вопрос шаблона анкеты. // ДеревоАнкетыСервер - ДеревоЗначений - дерево значений, содержащее шаблон анкеты. +// &НаСервере Процедура УстановитьЗначениеРеквизита(ВопросШаблона,ВыборкаВопрос) @@ -343,6 +344,7 @@ // ВыборкаВопрос - ВыборкаИзРезультатаЗапроса - выборка, содержащая значения ответов // на вопрос шаблона анкеты. // СтрокаДерева - СтрокаДереваЗначений - строка дерева значений, содержащая данные вопроса шаблона анкеты. +// &НаСервере Процедура УстановитьЗначениеРеквизитаПростойВопрос(Вопрос,ВыборкаВопрос,СтрокаДерева) @@ -399,6 +401,7 @@ // ВыборкаВопрос - ВыборкаИзРезультатаЗапроса - выборка, содержащая значения ответов // на вопрос шаблона анкеты. // СтрокаДерева - СтрокаДереваЗначений - строка дерева значений, содержащая данные вопроса шаблона анкеты. +// &НаСервере Процедура УстановитьЗначениеРеквизитаТабличныйВопрос(Вопрос,ВыборкаВопрос,СтрокаДерева) @@ -430,6 +433,7 @@ // ВыборкаВопрос - ВыборкаИзРезультатаЗапроса - выборка, содержащая значения ответов // на вопрос шаблона анкеты. // СтрокаДерева - СтрокаДереваЗначений - строка дерева значений, содержащая данные вопроса шаблона анкеты. +// &НаСервере Процедура УстановитьЗначенияРеквизитаТабличныйВопросСоставной(Вопрос,ВыборкаВопрос,СтрокаДерева); @@ -472,6 +476,7 @@ // ВыборкаВопрос - ВыборкаИзРезультатаЗапроса - выборка, содержащая значения ответов // на вопрос шаблона анкеты. // СтрокаДерева - СтрокаДереваЗначений - строка дерева значений, содержащая данные вопроса шаблона анкеты. +// &НаСервере Процедура УстановитьЗначенияРеквизитаТабличныйВопросОтветыВСтроках(Вопрос,ВыборкаВопрос,СтрокаДерева); @@ -486,7 +491,7 @@ НомерВопросаВМассиве = МассивВопросы.Найти(ВыборкаВопрос.ЭлементарныйВопрос); Если (НомерВопросаВМассиве <> Неопределено) И (ВыборкаВопрос.НомерЯчейки <= Таблица.Количество()) Тогда - Таблица[ВыборкаВопрос.НомерЯчейки - 1][ИмяКолонкиБезНомера + Строка(НомерВопросаВМассиве+1)] = ВыборкаВопрос.Ответ; + Таблица[ВыборкаВопрос.НомерЯчейки - 1][ИмяКолонкиБезНомера + XMLСтрока(НомерВопросаВМассиве+1)] = ВыборкаВопрос.Ответ; КонецЕсли; КонецЦикла; @@ -503,6 +508,7 @@ // ВыборкаВопрос - ВыборкаИзРезультатаЗапроса - выборка, содержащая значения ответов // на вопрос шаблона анкеты. // СтрокаДерева - СтрокаДереваЗначений - строка дерева значений, содержащая данные вопроса шаблона анкеты. +// &НаСервере Процедура УстановитьЗначенияРеквизитаТабличныйВопросОтветыВКолонках(Вопрос,ВыборкаВопрос,СтрокаДерева); @@ -519,7 +525,7 @@ НомерВопросаВМассиве = МассивВопросы.Найти(ВыборкаВопрос.ЭлементарныйВопрос); Если (НомерВопросаВМассиве <> Неопределено) Тогда Если (НомерВопросаВМассиве <= Таблица.Количество()) И (ВыборкаВопрос.НомерЯчейки <= Таблица.Колонки.Количество()) Тогда - Таблица[НомерВопросаВМассиве][ИмяКолонкиБезНомера + Строка(ВыборкаВопрос.НомерЯчейки + 1)] = ВыборкаВопрос.Ответ; + Таблица[НомерВопросаВМассиве][ИмяКолонкиБезНомера + XMLСтрока(ВыборкаВопрос.НомерЯчейки + 1)] = ВыборкаВопрос.Ответ; КонецЕсли; КонецЕсли; @@ -537,6 +543,7 @@ // ВыборкаВопрос - ВыборкаИзРезультатаЗапроса - выборка, содержащая значения ответов // на вопрос шаблона анкеты. // СтрокаДерева - СтрокаДереваЗначений - строка дерева значений, содержащая данные вопроса шаблона анкеты. +// &НаСервере Процедура УстановитьЗначенияРеквизитаТабличныйВопросОтветыВСтрокахКолонках(Вопрос,ВыборкаВопрос,СтрокаДерева) @@ -552,7 +559,7 @@ Если ВыборкаВопрос.ЭлементарныйВопрос = ВопросЯчейка Тогда НомерКолонки = ?(ВыборкаВопрос.НомерЯчейки%(КоличествоКолонок - 1)=0,КоличествоКолонок - 1,ВыборкаВопрос.НомерЯчейки%(КоличествоКолонок - 1)); НомерСтроки = ЦЕЛ((ВыборкаВопрос.НомерЯчейки + ЦЕЛ(ВыборкаВопрос.НомерЯчейки/КоличествоКолонок))/КоличествоКолонок); - Таблица[НомерСтроки ][ИмяКолонкиБезНомера + Строка(НомерКолонки+1)] = ВыборкаВопрос.Ответ; + Таблица[НомерСтроки ][ИмяКолонкиБезНомера + XMLСтрока(НомерКолонки+1)] = ВыборкаВопрос.Ответ; КонецЕсли; КонецЦикла; @@ -568,6 +575,7 @@ // ВыборкаВопрос - ВыборкаИзРезультатаЗапроса - выборка, содержащая значения ответов // на вопрос шаблона анкеты. // СтрокаДерева - СтрокаДереваЗначений - строка дерева значений, содержащая данные вопроса шаблона анкеты. +// &НаСервере Процедура УстановитьЗначенияРеквизитаКомплексныйВопрос(Вопрос,ВыборкаВопрос,СтрокаДерева); @@ -786,7 +794,7 @@ Для ИндексКолонки = 1 По СтрокаДерева.СоставТабличногоВопроса.Количество()-1 Цикл - Ответ = Таблица[ИндексСтроки][ИмяКолонкиБезНомера + Строка(ИндексКолонки+1)]; + Ответ = Таблица[ИндексСтроки][ИмяКолонкиБезНомера + XMLСтрока(ИндексКолонки+1)]; Если ЗначениеЗаполнено(Ответ) Тогда ЕстьХотяБыОдинОтветУказанныйРеспондентом = Истина; @@ -842,7 +850,7 @@ Для ИндексСтроки = 0 По Таблица.Количество() - 1 Цикл Для ИндексКолонки = 1 По Таблица.Колонки.Количество() - 1 Цикл - Ответ = Таблица[ИндексСтроки][ИмяКолонкиБезНомера + Строка(ИндексКолонки+1)]; + Ответ = Таблица[ИндексСтроки][ИмяКолонкиБезНомера + XMLСтрока(ИндексКолонки+1)]; Если ЗначениеЗаполнено(Ответ) Тогда НомерЯчейки = ИндексКолонки + ИндексСтроки * (Таблица.Колонки.Количество() - 1); @@ -890,7 +898,7 @@ Для ИндексСтроки = 0 По Таблица.Количество() - 1 Цикл - Ответ = Таблица[ИндексСтроки][ИмяКолонкиБезНомера + Строка(ИндексКолонки + 1)]; + Ответ = Таблица[ИндексСтроки][ИмяКолонкиБезНомера + XMLСтрока(ИндексКолонки + 1)]; Если ЗначениеЗаполнено(Ответ) Тогда ЕстьХотяБыОдинОтветУказанныйРеспондентом = Истина; @@ -1066,6 +1074,7 @@ // Возвращаемое значение: // Булево - Истина, в случае если проверка заполнения обязательных ответов закончилась неудачей, // Ложь, в обратном случае. +// &НаСервере Функция ПроверитьЗаполнениеАнкеты() @@ -1557,8 +1566,8 @@ КонецПроцедуры // Параметры: -// ИзмененныйТекст - Строка - . -// ДополнительныеПараметры - Структура - . +// ИзмененныйТекст - Строка +// ДополнительныеПараметры - Структура // &НаКлиенте Процедура РедактированиеМногострочногоТекстаПриОкончании(ИзмененныйТекст, ДополнительныеПараметры) Экспорт diff --git a/SSL/src/Documents/Анкета/ManagerModule.bsl b/SSL/src/Documents/Анкета/ManagerModule.bsl index 2f98efb4d..c46b49f7e 100644 --- a/SSL/src/Documents/Анкета/ManagerModule.bsl +++ b/SSL/src/Documents/Анкета/ManagerModule.bsl @@ -18,7 +18,8 @@ // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: -// Массив Из Строка - +// Массив Из Строка +// Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт Результат = Новый Массив; diff --git a/SSL/src/Documents/Встреча/Forms/ФормаДокумента/Module.bsl b/SSL/src/Documents/Встреча/Forms/ФормаДокумента/Module.bsl index 6079aba87..4914d8549 100644 --- a/SSL/src/Documents/Встреча/Forms/ФормаДокумента/Module.bsl +++ b/SSL/src/Documents/Встреча/Forms/ФормаДокумента/Module.bsl @@ -108,7 +108,6 @@ КонецЕсли; // Конец СтандартныеПодсистемы.Свойства - ОбновитьОтображениеДанных(); ПроверитьДоступностьСозданияКонтакта(); // СтандартныеПодсистемы.РаботаСФайлами diff --git a/SSL/src/Documents/Встреча/ManagerModule.bsl b/SSL/src/Documents/Встреча/ManagerModule.bsl index efc098cbb..81e61b6fb 100644 --- a/SSL/src/Documents/Встреча/ManagerModule.bsl +++ b/SSL/src/Documents/Встреча/ManagerModule.bsl @@ -18,7 +18,8 @@ // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: -// Массив Из Строка - +// Массив Из Строка +// Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт Результат = Новый Массив; diff --git a/SSL/src/Documents/ЗапланированноеВзаимодействие/ManagerModule.bsl b/SSL/src/Documents/ЗапланированноеВзаимодействие/ManagerModule.bsl index 8bd1876f3..5ea9dcca2 100644 --- a/SSL/src/Documents/ЗапланированноеВзаимодействие/ManagerModule.bsl +++ b/SSL/src/Documents/ЗапланированноеВзаимодействие/ManagerModule.bsl @@ -36,7 +36,8 @@ // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: -// Массив Из Строка - +// Массив Из Строка +// Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт Результат = Новый Массив; diff --git a/SSL/src/Documents/ЗапланированноеВзаимодействие/ObjectModule.bsl b/SSL/src/Documents/ЗапланированноеВзаимодействие/ObjectModule.bsl index 9e8ebdd6f..ce075409a 100644 --- a/SSL/src/Documents/ЗапланированноеВзаимодействие/ObjectModule.bsl +++ b/SSL/src/Documents/ЗапланированноеВзаимодействие/ObjectModule.bsl @@ -32,7 +32,7 @@ // См. УправлениеДоступом.ЗаполнитьНаборыЗначенийДоступа. // // Параметры: -// Таблица - см. УправлениеДоступом.ТаблицаНаборыЗначенийДоступа. +// Таблица - см. УправлениеДоступом.ТаблицаНаборыЗначенийДоступа // Процедура ЗаполнитьНаборыЗначенийДоступа(Таблица) Экспорт diff --git a/SSL/src/Documents/НазначениеОпросов/ManagerModule.bsl b/SSL/src/Documents/НазначениеОпросов/ManagerModule.bsl index a1885761b..b18979da4 100644 --- a/SSL/src/Documents/НазначениеОпросов/ManagerModule.bsl +++ b/SSL/src/Documents/НазначениеОпросов/ManagerModule.bsl @@ -18,7 +18,8 @@ // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: -// Массив Из Строка - +// Массив Из Строка +// Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт Результат = Новый Массив; @@ -61,15 +62,15 @@ // Вызывается при подготовке шаблонов сообщений и позволяет переопределить список реквизитов и вложений. // // Параметры: -// Реквизиты - ДеревоЗначений - список реквизитов шаблона. -// ** Имя - Строка - Уникальное имя общего реквизита. -// ** Представление - Строка - Представление общего реквизита. -// ** Тип - Тип - Тип реквизита. По умолчанию строка. -// ** Формат - Строка - Формат вывода значения для чисел, дат, строк и булевых значений. -// Вложения - ТаблицаЗначений - печатные формы и вложения -// ** Имя - Строка - Уникальное имя вложения. -// ** Представление - Строка - Представление варианта. -// ** ТипФайла - Строка - Тип вложения, который соответствует расширению файла: "pdf", "png", "jpg", mxl" +// Реквизиты - ДеревоЗначений - список реквизитов шаблона: +// ** Имя - Строка - уникальное имя общего реквизита. +// ** Представление - Строка - представление общего реквизита. +// ** Тип - Тип - тип реквизита. По умолчанию строка. +// ** Формат - Строка - формат вывода значения для чисел, дат, строк и булевых значений. +// Вложения - ТаблицаЗначений - печатные формы и вложения: +// ** Имя - Строка - уникальное имя вложения. +// ** Представление - Строка - представление варианта. +// ** ТипФайла - Строка - тип вложения, который соответствует расширению файла: "pdf", "png", "jpg", mxl" // и др. // ДополнительныеПараметры - Структура - дополнительные сведения о шаблоне сообщений. // @@ -80,18 +81,19 @@ // Вызывается в момент создания сообщений по шаблону для заполнения значений реквизитов и вложений. // // Параметры: -// Сообщение - Структура - структура с ключами: -// * ЗначенияРеквизитов - Соответствие - список используемых в шаблоне реквизитов. +// Сообщение - Структура: +// * ЗначенияРеквизитов - Соответствие - список используемых в шаблоне реквизитов: // ** Ключ - Строка - имя реквизита в шаблоне; // ** Значение - Строка - значение заполнения в шаблоне. -// * ЗначенияОбщихРеквизитов - Соответствие - список используемых в шаблоне общих реквизитов. +// * ЗначенияОбщихРеквизитов - Соответствие - список используемых в шаблоне общих реквизитов: // ** Ключ - Строка - имя реквизита в шаблоне; // ** Значение - Строка - значение заполнения в шаблоне. -// * Вложения - Соответствие - значения реквизитов +// * Вложения - Соответствие: // ** Ключ - Строка - имя вложения в шаблоне; -// ** Значение - ДвоичныеДанные, Строка - двоичные данные или адрес во временном хранилище вложения. +// ** Значение - ДвоичныеДанные +// - Строка - двоичные данные или адрес во временном хранилище вложения. // ПредметСообщения - ЛюбаяСсылка - ссылка на объект являющийся источником данных. -// ДополнительныеПараметры - Структура - Дополнительная информация о шаблоне сообщения. +// ДополнительныеПараметры - Структура - дополнительная информация о шаблоне сообщения. // Процедура ПриФормированииСообщения(Сообщение, ПредметСообщения, ДополнительныеПараметры) Экспорт @@ -100,7 +102,7 @@ // Заполняет список получателей SMS при отправке сообщения сформированного по шаблону. // // Параметры: -// ПолучателиSMS - ТаблицаЗначений - список получателей SMS. +// ПолучателиSMS - ТаблицаЗначений: // * НомерТелефона - Строка - номер телефона, куда будет отправлено сообщение SMS; // * Представление - Строка - представление получателя сообщения SMS; // * Контакт - Произвольный - контакт, которому принадлежит номер телефона. @@ -110,7 +112,7 @@ // * ВидСообщения - Строка - вид формируемого сообщения: "ЭлектроннаяПочта" или "СообщениеSMS"; // * ПроизвольныеПараметры - Соответствие - заполненный список произвольных параметров; // * ОтправитьСразу - Булево - признак мгновенной отправки; -// * ПараметрыСообщения - Структура - Дополнительные параметры сообщения. +// * ПараметрыСообщения - Структура - дополнительные параметры сообщения. // Процедура ПриЗаполненииТелефоновПолучателейВСообщении(ПолучателиSMS, ПредметСообщения) Экспорт @@ -119,7 +121,7 @@ // Заполняет список получателей почты при отправке сообщения сформированного по шаблону. // // Параметры: -// ПолучателиПисьма - ТаблицаЗначений - список получается письма. +// ПолучателиПисьма - ТаблицаЗначений - список получается письма: // * Адрес - Строка - адрес электронной почты получателя; // * Представление - Строка - представление получателя письма; // * Контакт - Произвольный - контакт, которому принадлежит адрес электронной почты. @@ -129,7 +131,7 @@ // * ВидСообщения - Строка - вид формируемого сообщения: "ЭлектроннаяПочта" или "СообщениеSMS"; // * ПроизвольныеПараметры - Соответствие - заполненный список произвольных параметров; // * ОтправитьСразу - Булево - признак мгновенной отправки письма; -// * ПараметрыСообщения - Структура - Дополнительные параметры сообщения; +// * ПараметрыСообщения - Структура - дополнительные параметры сообщения; // * ПреобразовыватьHTMLДляФорматированногоДокумента - Булево - признак преобразование HTML текста // сообщения содержащего картинки в тексте письма из-за особенностей вывода изображений // в форматированном документе; diff --git a/SSL/src/Documents/СогласиеНаОбработкуПерсональныхДанных/Forms/ФормаДокумента/Module.bsl b/SSL/src/Documents/СогласиеНаОбработкуПерсональныхДанных/Forms/ФормаДокумента/Module.bsl index dd65652fe..e6080b73d 100644 --- a/SSL/src/Documents/СогласиеНаОбработкуПерсональныхДанных/Forms/ФормаДокумента/Module.bsl +++ b/SSL/src/Documents/СогласиеНаОбработкуПерсональныхДанных/Forms/ФормаДокумента/Module.bsl @@ -288,15 +288,18 @@ &НаСервере Процедура ЗаполнитьДанныеСубъекта() - Если Объект.Субъект.ЭтоГруппа Тогда + Если ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Субъект, "ЭтоГруппа") Тогда ВызватьИсключение НСтр("ru = 'Для ввода согласия на обработку персональных данных необходимо выбрать элемент, а не группу.'"); - КонецЕсли; - ДанныеСубъекта = ЗащитаПерсональныхДанных.ОписаниеДанныхСубъекта(); + КонецЕсли; + + Документы.СогласиеНаОбработкуПерсональныхДанных.ПроверитьВозможностьОформленияСогласия(Объект.Субъект); + + ДанныеСубъекта = ЗащитаПерсональныхДанных.ОписаниеДанныхСубъекта(); ДанныеСубъекта.Субъект = Объект.Субъект; ДанныеСубъектов = Новый Массив; ДанныеСубъектов.Добавить(ДанныеСубъекта); - + ЗащитаПерсональныхДанныхПереопределяемый.ДополнитьДанныеСубъектовПерсональныхДанных(ДанныеСубъектов, Объект.ДатаПолучения); Объект.ФИОСубъекта = ДанныеСубъекта.ФИО; diff --git a/SSL/src/Documents/СогласиеНаОбработкуПерсональныхДанных/ManagerModule.bsl b/SSL/src/Documents/СогласиеНаОбработкуПерсональныхДанных/ManagerModule.bsl index f982c2410..4fe4a5890 100644 --- a/SSL/src/Documents/СогласиеНаОбработкуПерсональныхДанных/ManagerModule.bsl +++ b/SSL/src/Documents/СогласиеНаОбработкуПерсональныхДанных/ManagerModule.bsl @@ -75,7 +75,6 @@ ПечатнаяФорма = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, "СогласиеНаОбработкуПерсональныхДанных(OfficeOpenXML)"); Если ПечатнаяФорма <> Неопределено Тогда - ИмяМакета = "СогласиеНаОбработкуПерсональныхДанных(OfficeOpenXML)"; МакетИДанныеОбъекта = УправлениеПечатьюВызовСервера.МакетыИДанныеОбъектовДляПечати("Документ.СогласиеНаОбработкуПерсональныхДанных", ИмяМакета, МассивОбъектов); @@ -84,8 +83,8 @@ Шаблон = НСтр("ru = 'Согласие на обработку ПДн [Субъект] - [Организация] (№[Номер] получено [ДатаПолучения])'"); ЗначенияРеквизитовДокументов = ОбщегоНазначения.ЗначенияРеквизитовОбъектов(МассивОбъектов, "Организация,Субъект,Номер,ДатаПолучения,Ссылка"); Для Каждого Ссылка Из МассивОбъектов Цикл - ЗначенияРеквизитовДокумента = ЗначенияРеквизитовДокументов[Ссылка]; + ПроверитьВозможностьОформленияСогласия(ЗначенияРеквизитовДокумента.Субъект); ЗначенияРеквизитовДокумента.ДатаПолучения = Формат(ЗначенияРеквизитовДокумента.ДатаПолучения, "ДЛФ=D"); Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПрефиксацияОбъектов") Тогда МодульПрефиксацияОбъектовКлиентСервер = ОбщегоНазначения.ОбщийМодуль("ПрефиксацияОбъектовКлиентСервер"); @@ -96,12 +95,10 @@ АдресХранилищаОфисныйДокумент = НапечататьСогласиеНаОбработкуПерсональныхДанныхСубъекта(Ссылка, МакетИДанныеОбъекта, ИмяМакета); ОфисныеДокументы.Вставить(АдресХранилищаОфисныйДокумент, ИмяДокумента); - КонецЦикла; ПечатнаяФорма.СинонимМакета = НСтр("ru = 'Согласие на обработку персональных данных (документ Microsoft Word)'"); ПечатнаяФорма.ОфисныеДокументы = ОфисныеДокументы; - КонецЕсли; КонецПроцедуры @@ -115,7 +112,7 @@ // Возвращаемое значение: // Соответствие - коллекция ссылок на объекты и их данные: // * Ключ - ЛюбаяСсылка - ссылка на объект информационной базы; -// * Значение - Структура - макет и данные: +// * Значение - Структура: // ** Ключ - Строка - имя макета, // ** Значение - Структура - данные объекта. // @@ -247,7 +244,7 @@ // Параметры: // Согласия - массив документов типа ДокументСсылка.СогласиеНаОбработкуПерсональныхДанных. // -// Возвращаемое значение - массив структур, см. ОписаниеСогласия(). +// Возвращаемое значение - см. ОписаниеСогласия // Функция ДанныеДляПечатиСогласий(Согласия) @@ -279,6 +276,7 @@ Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл + ПроверитьВозможностьОформленияСогласия(Выборка.Субъект); Описание = ОписаниеСогласия(); ЗаполнитьЗначенияСвойств(Описание, Выборка); Если Не ПустаяСтрока(Выборка.НаименованиеОрганизации) Тогда @@ -307,7 +305,7 @@ // Параметры: // Согласия - массив документов типа ДокументСсылка.СогласиеНаОбработкуПерсональныхДанных. // -// Возвращаемое значение - соответствие, в котором ключом является ссылкой, а значением описание, см. ОписаниеСогласия(). +// Возвращаемое значение - см. ОписаниеСогласия // Функция СоответствиеДанныхДляПечатиСогласий(Согласия) @@ -473,6 +471,14 @@ КонецФункции +Процедура ПроверитьВозможностьОформленияСогласия(СубъектПДн) Экспорт + + Если ЗащитаПерсональныхДанных.ЭтоОбъектСоСкрытымиПерсональнымиДанными(СубъектПДн) Тогда + ВызватьИсключение НСтр("ru = 'Оформление согласия невозможно, ПДн субъекта скрыты.'"); + КонецЕсли; + +КонецПроцедуры + #КонецОбласти #КонецЕсли \ No newline at end of file diff --git a/SSL/src/Documents/СогласиеНаОбработкуПерсональныхДанных/Templates/ПФ_DOC_СогласиеНаОбработкуПерсональныхДанных_ru/Template.bin b/SSL/src/Documents/СогласиеНаОбработкуПерсональныхДанных/Templates/ПФ_DOC_СогласиеНаОбработкуПерсональныхДанных_ru/Template.bin index 3036aa4741d6bc4b4721cbb620410f1b90087872..604be7ba1966c39d96e0f3547b31a5ffe6b69ae2 100644 GIT binary patch delta 12294 zcmZ8{bx<X~k~Qw`?l!o)ySofNxV!5G26wo)JA*qHXK;6ScO4kqzTbPh-`lP2e^QmC zQ(bjVb-GV-(+>XH176<(kH9c^-n)to21d~c?1je%=sOXvpa-(de%0>+Ay+YOaJfti z?9j+i!?y%+8KRSQ@58B?me>$hU2~dSOt8gf|57WfAJ(uWGY&OUO^62eT^paWobk9l zGCnbSjZwF!NM>4_sZR`SHCb8qWWHEF-X5rYs#n?STNG>AES{J}WqK<ztSH1i$OpIy zKMs)sbexXN^r~uBRvv7Njq(zN7(u4_Sb(q21klMcVJU2jYj@2a*2D6qXA>uB=ZYiG ziKUf(sozo7c2<R!ymax>s`X3?LCf0kuym<r-j*ZYMbnr!#q>><bg`ymi*q-1cTXwE z^zqDg%gT;(!o$F>*ktjqr(Kze{q(Z?!RJrFF;h-=1&F~e)wc8l?Ihmn$cEs)0aiL- zI&YTAO8jps9~=3bRN%mA2V(w3v=j3N!*87&u5qo&LN%wYDoz0q+vS>b%+p~?tMAsJ zb`AZA0}tj|?FAo*NE&7$ya!p$U3t}mKY!>uu5qQ-5Pzb-fciro8~Tk0N2}y1)-(~I zUs0^PEJseMZZUTO3B-9l6ebm0w3AN|2diYoKQ(S`^;R9Y!-tE148{>-wRX1&S|&J! zGA#3Z%G+ifY1Xs3ZkqBPm|dyNnDeBlNs=Cp28(GKewFZbu-$M2%YG2JZ}1k(lV>hb zXY)DbRz!upKhqT4BQjuiIz_E?cr^#`0qGgR69(}e7YhCPJ5zM`891E?-N7ZgntKN8 znYs}aCq^vKelDjgFx@m%8ttTv#KMBE{lz4#u7JB*c?&&<#1`RmMh<?phW?T(jxqSR zYfBf$I*noGc}|`|ohcv*tL^guaKAIkUbc|G?b;eFVhmZ*?ONQe;|-=p_mcpag1Oc2 zY)G3PZzh;#`ctkgzMvXH2XgV(&{V5QS61W9x8sU-E1?F@YTOUYcAHbKUb)8cWA>N9 zM$I*si<wxf%4y#@%|^s_aqa*$4YuB=$x?;3W_yMQj|6iTlQO?!yL+O2VII`m9l2hg zCUv8*s4uO|Z-v<SwGj2(f|USEvw=v#Q<&8yZ&PYotx)h*w3#D&I8a}`59p&_Zy1Dc z_z;WsqqHYpf)KlS>9b4xla4w5tDQ<F4UIkxS$`9vWX1kRnnXyUUI^Y+Y25vDG9qF} zgUc-tQ#?yV0@euefG1&!a?0Q8+J?8)Nr?Li4Dn<+-p5pEY4Yhf=>f3n8<N1<FW6#~ zaZ`P=%rPZ6n13@!`axat%85;ONZdi~er32@-DsKEU;rKbvgL|$a8~-N7*N33ke7r? z*za*4d=QTx?(Th%r_H(TFxiB(H;%Jkv6LEgD<vL^NVl}NU=Vyq%BYbaYaI>T=E~YP z55?ztOC=RV5jHnvwFE$k<9SJg=e`in_Yk|)?NC8B2C>bsLn+6T+_99YGyJgN%|vTx zr9EVcB<rcEYq3T%DqTvcwAd<mFI)pF)|91kn^xr;{AIswCm@0G$32e&jx0fN2W@j0 z%%(4h^_K>LSp8@ToMS(E9RlK*0lS>nJO?uVt#2O@n#C}>ksH8o8rk9KwT9(7xmw&O zD6)LN!}3sZ?zv1aMYXUjcKJGSmTfpQJSc9`mLkcmZK=oS)Ra5@M$&ABtt;!ea3v~+ zxXCz=tz0c`>InI}d0`?elpxd7?p!IXrv>2r_5x0Ygw||S3N2dLVr=mNPsgMRPpQ=U z^7L=9jA5<xbQr+?0?yzCzwM!Xu<a@PFm<XuEwv+xSP(j0H!V#g%v;P7B~}@6&451d zEXi%nBJIzybjk&iGM3Q#xZN?!aqpB4ePU;uU$g@*jyj^8(>HhXf;$yFM_+{r6ybSA z->8^{u3ILk+QrgHS9CfktiZhe9gd6k7i|tyNxsM`30}bK@+)CL*~g>ty%o|1=rdSE zr8?Jnsboi42&ZUssb8KuJuYFM*tu!tY^2HhbAO?2`7!(!9I-V5-~|CqaCjR&Z}D}O z7~+>!hA8^hOz(d2qI&<cx38${7~-Je1x9me<=91MxZ;--=z{QWd}saTI_Z}OyU8P^ zr7Ilv=Mq2=p+$7d;$C*>B#KH1%sq*~AE@+&)&G)ZJF3YkOvY6fkKro=ZCXu6fXaz+ zFbi#2XT)EW;BH9U$LNofLALr%LLaS8Lm92n%>$sS1$BC>&|m9!KK)V;m43in+(q+k zge*mK49Pf+Vy`|Gn$atE$=CC1uR$pEw;&D_2nX<Zbcb&ziv+BHUsQN9BdQ&3_>E&l z1=wAMkRdJhl>rdKHTV7*!vDnFs|9MD&Z0x()=7FHq_a=gjP&M0B!t_W^zrNrc*o<n zz+GG|<G{2%!I^HWf&HBDB?@YMWvGfu<@9Z&JRS#j*ZL$m&lrlwUY#u0K6q7QkP95d zEC3YDucD18h^YC9^;Bxo@qA;`$h%5^E(XCkISOTKTqCksdReWA(_|a{ZJmZGClU@F zU6SR4VN7^t_$pp=k+g<XW>RM^5HKQg=jJ$;mHRryEI1|J=FGYb{CoCyTFLMG!Y#f@ zP-A>i)#dmwyKchkG}(f8KifI@*W2<t>L9>J9IreGvwjR@*C{Yhda$Uq_PTGu;zYKU zoGq%2m&+hIhXe=tNuQB%c2*<gNJW>5=S(kkufK=hJvQ6mGfBEj3WagnBg(+^3!_G~ z8iR;B>>LaOpJ*ayOfYx=YpT5fHn~01+mR-U+v^Ho{Gp&=o(#IZy5Yk^n5dnFf&tK2 zK=nx=g`HpfwV?R*b8L>_2V}3$d?SKe((}jMnWgJ232QL&jh&C`DZ(&{Of+}LoS;o! z+cZVR(Ug2YpcaGGzA%ft7WxMhhmu=7@*EiIKqN!{L6c<q3&xLN9`_)uSJddyVJJOd zdr`!!jpW4W_aAS~Z8FO|)AOde34lMebF^gN*&v|C`Gzk|s8HA=i74&JJ!AVXh%ee< zLZVOEN2QCuddd4lVG^P3Vdu}AAI;!`Ea-_!wKPrIQK`<!)Wk3%A8>Wat3GtT3;Po7 z6NmO?1y1;e^Eg!-I`7awLGPhA-*jZ6k_*a`VE9aF#tyh<jgTYJ<jdnAC;&cvEO}W( zGGQcQ0#Op&AnRnjK{Hh-dhmNZceBKdzv?q653@>k%!$oWp5t%HpVv1Mn4ywFBk3w1 z0R^%@{M}q~^{<x+t~`rj)?7~5g=mb1ewJyLWF?fo#CcaIlHxIORU!*YREk*hoHB-1 zJlaS*<C}>e+oc53ve4$3qX2X|U@oLq>!WVR(vc+u$I|ZF?(x!pT<(#<O%c(^;1M95 z>1<rCevl?7Kse^ALMMi-CNNW3>M50BW~R!;WZuRS4ZU8*RorA5Kn6t{+|>~SFd+WO zpz_nYfj<RrsmetgF!CBMchk-aNxREa8#wxO#9p5mZT2Bu>gj%q3kDSaM8VP}S<Sn{ z+tzYDeRQF7D7TiVU3!IqD0KZrjFBk=CyDyJnn^r2PlmL|Ddu`1i2UqC1kF458?%Q| zssl@{&m>0tMuuFH&lia^31^O4p1wxjdW|x93;r$%ZL>fTNk-N0CmNk;zyVy=MT_ts zS{QW%FZv((WD~w(y1amVn6z>O^4Jn#)yq2|R(v4~%vX09Ya~hohpj8DJtIx2dkV{? zYOrJ{cqf_TOGZ<lp?|pQN|Da9Gk7?wvibTu)1KXT<#-#tP7QQu8lON4*I0N_8L}sW zT}f_H5;#LTMzTt*<k4SxbayeVx*M>zut6SZ8CWnb&`Z*RC9Z&3hyF5-s8@2)FGxdi zV<BkVkv~-5$l7l(BciEu%Gnv3oHq+-yVyoI2v3dQ``%5W;UP^zM9`e=z#2I$gXt8p zr<8Zw3Rj;YS*I1lK1QkARlzAGvB8_<gi~A#37E-9%PEqxlc9FUHKl)!j&54z!$lT$ z;h57kc)rC>hl&7TzgrD5W04A(^uqHt<|(1m(wPOxqe!)UTg)oYo{R@ki{WdH!Dt8} zh@CxjbmSygu~(v;j9ZWTi@Cb2{G8W_DFNz}Gne^RSX#36Bu+nLo~!XlLp4Pv>4uiy z${!&j=sw+!>yn=LE_Pe^5nvU9Ww4B5e<RlCOvCWko!bSB!$vnaS`zz-sribpeYx4b zqW+*A!mBqqq&(7@)f$=X&y?mE(05Hq8Bk?A%#g50H^RgyjHS?p@9bV;c6}i_GR0S? z-bBM?RI~PCBhrK`Hc#_iSY3KG+>U=}Atb3eJBNT@$7W&Iop;0G1}C&+-a`I{J~h}o zBu-VIJ_rxk(B7yUW*1i*JnEy+8>UD}#(Mq}Hb?^O5YKTP5Et+!%jipA&_aw|rMoCr zeG)3>#T6>A!fw`E=6H<oq>b_6G_3fYN<qtXejZX-Qi7wLe*g1ld@UQ#3k;4z@nsS& zuwR*K6k3W_Ln}oI%@k3lG**g;(Uczn`J20jk~a=uR3^-(67ITC{K4IJL5v&uf;un} z4xOS=DkYB7x5HG7A)G8nK6A%8jlzy=;Q_(?H2f$*JejZi&V!U)hIpDvTDII}XpHEc zUQ~EtEoW-TxFY|Ssgs2HY$;hApo&QdsadJ71wZ`Az4Cm?;rpK0x%iBC+kOun$l0K` z{d)$0cUXV_(_4`3of$IV(Y6?ciyyz+b()r1DZ${E;1V&lKJdU`q8KGV_9&@VwN~Qq zSOp+HKW}c5ywzn_kE@GKh+}tF#adf5ub&v^vM)dDW)8Z@1P@yx6gDE}gqCEm7;O+| z&O3r1Vr8%zGV;@qNM;SOkanJA<Dodbf3F<ytBzv;Qh6+J8A4>q<g*{WUrNY+&*ZJF zL!iYZ$^-%rIZ7G999e}Qm&3jmYo)KY>%E4P%HLLp^bGk62Ckowwb)w{mkkA<uwm$Q za{pA7I}+gl+l5<85cQ;4hD4h^`R(ig-kPUHxcAS#tEa>*pe;xQC*C9?C75&&9k~zC z^}aePws#`bcxqbZ=g7o$m+bRM{b#5HT!5FI;Y{373&)bC?LFloa+nSH=c+)JitL93 z=qh`h!&^1PcWRXO#;x!jI)~PZtC0iE@fpc8(6QTG#m}~zsz0me;{4W}Hl8X6hW~|f zT-4onBpoy6t=}@#nyAy;*T^QlFiZ|WVdo{Si*H<t?~DuP@jOVcq~+9dlX7ukQQQ@% zzr)BvVDTY5vIxG*xkXx#&Cw6J9UVySbt^o2^@XUU)^0W;JqjTW=n|~73G+@9Op<3} zguxoJnBAAJSlq+3^AKz08ux@zgJ&9d;FWoL<TzGIx6`}j{0kOrjVn5l?j-^!KnJZ8 z1%!#?tp)u_<j;w-x1sLoXq-J5qYIFvpm}GJMgf`H*6(<5Av_8Yrl}EyoMT$OD?Vuq zz_p;mw&baj77UPtuDi(^9`tA?^XEu4=8PnG)A&W2JM2sC=aUqIyip(NqJwgOCz`{c zcOQ4nKm2mLx#B|@bDv)m*2V_>WDqhsh@?}*z!sl@0P2?E73ZOu8Vc}SB~8a4jgzNQ z)V(<M`*5*3+#&z6{=`JK{>^mh1R;r;6AjfQlwhXSIONYO6gy1ye&ui5rnBt)0nH8J z<e>|;*nlcR#-1QVGoQK)?QEFtA)tfKLwTP&xDLnPsep7~ort{GQ@{ZL*FSn($UZ#_ z`doP6(c9jP7%+T>e@eJ}><kO`I*T9H!D`6A@ycuemNyX}L+!&VueS+Mia8dTG3ao2 zbB~O)+=Cdr$?R!NA^#aP%9ztwZ{yC`-P8M<W^N3o-`rdvI-&2JV(A<$UbmEcNmDaq zEn*;4*^7L7WUy5q10@=uL7&n}fB#97mA%u3#xOC+5hi5;{DlB2anOv_e!G_^_B-E* zvu{15aNfzCUHLO(7H<c!bxXJ6F=5MCgZ%;7I+}Y<cQFU($jdDe>eEYK=`0aERZsjj zx$k4gBOkF>s_7^`$qyA>aTL_k5W@dH@a>dtAI19pQn$m!qZb2E3Y0hBk1|k{HWMo& zwKzOY(4ps&-!81u(M^5%u4#Vv;_|g5^>j@#t`P7vpkBH=mwIGRgKONTYIv3_AR}C; zx}7sgbH@+?rly(ZA1Li&`z;i6OU(TX8o542*=Gzhi`Rwz;MmrckMtH&AYI);NlK`2 zwiWFq^)03rPTv`Dh(*yhT6WtTl-1@Qz)T_T!AWGWYV{-Eoa51J1GUP+Kb!P?uCC_f zx6@Q1E-GQjZeJ4db{Lccys{PCt4x_C1y+#?M?ZB<_P^EXb%oKsC5T0e-7ni3Iyn zp281{k@>(=oJ?C7$jo?$@+e)^xXrVyWVL_RbuU_MU4{Xe(_=MV>%}JqU!pXG9-=t# z;U6&umd9-b#%+i^G=-lsw5Wr(o!p+YVO^hv)pr~9bsIMqlt_WM;s&Qaz{gN<_Xz7; z=&m4{qW8}ZJL)RIYl+|dOQ$d?1Ek+DY-d1_B$KQnn|-_wv}?w?SUeZQF%43&9Kq5` zOd<+}MgSrmUoxu#6>!m{V||W_WUAfSn=rgW5T&cbB>gKAPj`H`mRIyjxV=;Pb?H|& zEPh%SS{8GWDp(wNHqd!1awny9l8s^#eBpwDfqi{VYH!8Qi(&<0&oexU;|J==Q&MFc znksUVqtz+dl$Xk#adJRn^BA2z2nXqO@(2gf7y&XeP8m{o?s9BmQY?a%#_4gdSU)U} zv)y{`ISxNgqPQv!G`i}jm-|ut^ad91G7%euaMzQJC;z-G%n^nzW5yh4-^MpF@%?Cn z+nh^$;uN0@o^!||ASn*Q&ddBhKa5BQ+wxTiWN4$!Sp)c;L|`4FP*?}u!?d4rH;?SK zZU9JR59VhD4&TY*BH&Doeu+UPk<Kgf`Duk{cdT1gkC^C2;+!#l3gr&+TXQz01<Hw( z^N`Bhvz@9wyO1-xyLVQg%KCwd5jUwHE`8{3`XdOVwFIo#h!c+3OTs#@<c@74g@ehw zar21?<i`KpW<=#Jv%~3{-SpwbmG%FCI|2|MM-_!QOCb_xrqS~%ZHXSK==$*>GNEsv zT-mUdhulFgy{gRboYnmm5Cl{U*VfM1QhSLLKoVX}<t`;d3Cn9)Q4<JgwXm=v&J$MB z52RM!RlI4HTFJvx;Bx<kU_PuOgSbCJ@C~Bdg+VZEc#3i8o9f*1(=yK3V2<N6+Xe&` zTOF~7Uqohv?|ol4uzac+JRw|sJyUvR`p67~4hzsTOgBKBt5+I1dAv-q&npFusNzXp zS4=jbJ4a;D?c~Idqpx)m@fNG2KJ1L(4-*c93gU@sJ>sa3BJJW#(8Xbux|OmjP5$Ej zv}G?MIpTD!|1>8*v^-L%a$#`xBLD!-jveeS6B<&L3X&Y$qYC@H5zGecYryLqu%j8J z6&b34!6ISB9>qTqX%ywT-`==NNc=fHmim<{uGCNM1WIC7V|QQcMACnI<u(xEm}2JY z1fz`cwN3i;K`OeEAA(HCh<D*qF&<EHCS%LPF^`#-z|tnIRQ28f|7I)@M;5I~mKYKO zx?|6YydS7aN(xYL>}N$2eM<F>81<`{K(C|_$Caw-xH<u=JwS``9&RL7cQmF=6eSGR zTRl8jb=vl3&lB-KV_%oOz!I0=XQNDl3eF7Ck{902mwuvh&65~bfXYm+aX&P1@#Cli z63s#So)!HDOJ9^ODY@OIO5s<No!a`&U@~WNJp#csBnZ$EpC@pTre(Ce0yfZ<xRLKt zMj(5cCoD)15Wtgb$7{RY3|s4Hx^>o0(#;}2ool3yJ3(eo@gtR$G$vk#Nq4I@QLVvW zIc*^bjP6TrZjDn%%PZVENZMN96QLOtPLjtd*pLquX{_fcm=;es8aeErks0OR8Qa!3 zccGN>f&pOLFtd}caL!yos7e8-S|3WWYwhNb*fwb01IAc^!<UMjI<scX8(9Za$V@I% zUmx}j?A`HdD|1Fawwki0-y`s|TXMZ}vfgli%yu|I^CU~^QL!+HPKZqW&>UI#^+Gwe zf7%>*KIo+Md|tAb=GRPxRKZAH+?H$IZ^s+oxFVRs>dDiYtw=i+>uLSX%_#NrRN-gq zRO!gvP)@7ap6&X{bpd|`Ia*gprNbs@NB)wa7<lOBDb}Xp5#t0zm&JyD7>T&+2a1uC z7*073kRgrS03T7%pK#{2maw?COqR+FpZ<WwCc-eS!pS!Ee8^^%Y^iH)_>x22&H&6V zkG9I0i))&d$xEp6*fHeLGQO>r99}(`xGGSb@R@f>CVpF!leyMj(U|~tk#hmk1m^et zW`s+N-=-EXZFYWJM_$?t)U?Dn4flJfl|S+dp287=(NNcw<rf2rshTBULVM(I_s19U z?s+-2ORL$y_dLkfF#d#r(xG#MJLqjjGo4dd&qFk=n)ozu*nb(_LA!Hut#9o@so({Z zX~RrUx{7me?~S18ji~;l8omS=uo_Ae3>NJ1VD!9Qrdrqj`2Buk8_&X{IY@o;HfL%9 z!zXPh?H7^|yo7a3n$jSp?=w=^E&?uH`ljwoDOVzO*9_kL-i;J}?oGnQl3a~4MNx^_ z%VDx0H^B5{E%#krSDwbjZ#r~mHn#EPA7Gl=GN-JjqC9Pw{soM6`8V<nOFU=ymXa$y zJSBmf^~G=K5Pb~4)++;EzC{`qolw2RwidKHl~=L+8=2bF7X1Mr8znioE>MF~2hho} z=!GJZ=jJ_)?sGp-j_#rC+z%fk;P@at<l!u6!GQrw{4{5-Y1@v1OP5DJZo28BlhH}K z{kqG;GnWVF5=xwy@IrFlR)`kU?V71#g7=5eKG^KpemWTr-dic;j!~?<fT!q4uXLVH zCUUSAvlwnM@9WRI)5#aFh}-qd3BWvhOW*E80s%M}G7<buX;@vr2=QYt{p7^zL?pkL zSLE%8!}}Be6HsbyHKO&cPp3--^8{)x9#Lav^$bb`yH)}n_f~AA<`*f*|H2ag%0gW8 zGI8lp`kWRx0cAPD#bt#-bOiLxyW#3+4}>l-CFHS3AsmpdRRN!MM_^EC2W0SPxAdf& zaH+mp&k0$hoNGbWoz*$HT)*C}{AN(C+}Y?)kPfIX3f3vWx^de3FzV!CePB?HcCz2g zPQCtZNAQYGS3)JcEw1w}-Q8>CfRf44;S>f6a9XUk7)QjClpt|%jpmCPk}_ivSNYBk z0sc)kiL8NA8&Ob31MaVI5#W%Hd>R~H9BvRg8b4xBzJ|SWaj)+EVG(%8x;`KaOcM;o z-yukTClXc~6?fkhC|Ft|s|$QRJG#eZ$^Ux3yPq)@{!-uusauR*74yy>1%527e7$^f zoa_KTKI(S-vz5D}PWV3`@_W5Mo&Y^^Le*`oLsd7^M!md#4;w6BfQJDdoU1J;;<H=$ zC|0lQJ&hCcm><D7pU-sdIfGP^lIf?z;4*B<P2c~bN?8}&)SyY>7@%f*`sawAH-I~_ z<l}{om^5My7X5L=!~ZQYY@I-@&9Is3W@DMhc<@`;r*Y8*6`j9fYD=bJ?`Y2zoG)Wl z^HIWn)?ZYOQ8mbn5kT~UFEG5?*r5W)cIhiy27h4BoTC!CATem049~}2RDrfmi~ek3 zK?(QCZSVHHdd6m}{{WVsA-hT#sW+;^$~Eat$OIj2Pftr%)X|5U2<JdGQe|Fw5N;4u z4yl;Qkz+FL!2X2!z3%vLXQJh$qew~Bs3c7Y(S|z-*|7Uz5P<ke0*lFhl`Tqw_zhho z98GE(lE(g4!txsJ1tn1QkFu8t&8qX$MpGZ<Xgz-^h3Fye#NhtKMh5;L0i!v-{#MNe zB?`(RPfXLe_-%Gp@i#EDXyrL1vy(X)92lWiR(qqw9!zoVwUO4}9X}_(r{1s~uc}Q= zd*%s}ZNjawp#WA<gd?ir2AjlPLX!=%Zh}`lvQY~crCPz-RLV#AZ%Kl=(f5aJQ{IT& zt^2w)E`FlnLo4>U`E}J|3;=M~%<BI^fRnkNMGVGR4+f)?`CfWM5siz64#F~|V4}WM zAB}C(IC6BqaxhK1y}jKAkw+9{&MAZ*wX+WH@K^Zr3sCzMjB>Da(*v?^^;)=D#U>m( zPtKjLHE-;l+qvv_@Z<_en;d=HSwxy;4-6`dx3{Xk$UE*Rclo;U%QAd>=>V=RIT?7d zGrQxh<SKf$-8u4S7WoACNRxP%z>1vX(RJK@o6S+>$6<&@ZR3aAzx}Y}4iT%6Ax_?Z zPjN=?2NW~<u@(j+Vw9NYghnMq!HtmX{kBnCN|lGmt3YXM`ay(}v{<hN8eFh&AGJI) zv2LM96<&~^NTM5N2oy$v)uE8$$r=JTt~F{vUhKQf3QFllf_GpCN^Xf4wUeYstB?Ht z!HEdp(&*J+<X|$Fe7;h<ZVJBWTK5~*8Mdd@3t+GViH;U>&u6`CHLp@pwX&@>?Vp~v zZJ|gBQLtwuBf59idf4IS<LY7a%kcLC3_R1OBE~p-<=z3gKht!PM!ZqzutmTYvw`g_ zuuSz{%o>|BtA?kct+Gzck%MRU`wSMRr?P-!@wLRL;#|?e^d1^MNip;wO8QP88uD(V zC4fHJeZZKyi4lVtCNiR;PitPTNlX$-nMl4Uo*_NIGkBOjg3fV?fGYGU&46%z{7o7q z$B`d@=ER%c9b`v2KYzwx{>-WKT|{eN2UbC@70N4NV6DPUGJQ+}iu{<TYCedge~-B^ zOV3Suw~<lBT<YBctBmpL9Hd1bKJOxl3m_k-kItLaXp=wUBYsHR5cQi_MuJ&VOvdgn z7RC9#^-G#-s!Dp?#A+#^GqE`*jWZ_8#vEIh>q>Vr!^9AV+uo;zqOL(N8_zY%Xm4S$ zJJWUJ!T>Z!d#DA0l(#XX?!lsp#%Vib4#PF(Er2|clN*=SV%Gf|q}nN)G}{<x2B`5I zaP*0*SBCwmQ~6E?!f#>aG=9n)pFb}$?1i(EQ6cj|D!4FI?@MLa(-RPzMT^r?NiIWP zrBIP-<=P$7r71ZG)cezE)O-A-keVjK=;KkRZu_$3TXFIBa6Vh74b#2OLB~iDTN&s( zCK7^(+#z50Do~rf^}_Ibxf{^j1L$gJvrx;dxOi{W3+{NTTaNYn`rEOSIjSG9LY^2P z?64?(<=eSJ*K)C?Hb(eYuhg@5jscnA<M;>X>08a?Y34-^UHwYUQ}=MamaXR7NAk+A zQIF>J(lVVYk8Vp4*WZqr#y}Xw#N(t%x*t|U7s~+ff3<0lV5$m`P*`9vz*=}%`1p{! z6?|AQup=Nd0|7ucVS^VV(D=uf#K6o3n~K_BWvhZ10enSTv7C1>-J&gV_u%A>vzG_` zlxp7VS`-+8RoWPjhWG@F#=w6jHFgB`cr*?DKt)cY=fka1I@(uzjt@so?Z`Sj0~sI- zBd?lneW5jzhl>rs=Rx{{W&Hu1=>T$ub%c_}W(~=317N3mMdHtoY=7^ChgRt09ycZ7 z{(0hMrRyG&w~ZpZSO02HEyFk!J89W^{_L}BZJ8CvX&T4uO6RTFE19~+v&Xl}`jdRA zfsfPxtEpy&_&A3Vn~|0#uIJg70f{Bln3iKe3k<n1qcjNsXV6T8#g$e*kj4k)X|esT zbJ*Br1}MYG3=pZzo!Bz41Pgj9`o?{O;&5_jh+M$0*5Hd6`Py`mmAy~~stuw5CxX|l z5h|_@@0rfu?|Sxi-fCb1q53${;tZ}`fy{*UW{G_DS1{dU){pCFY}}lEAPYM6r&8ps z@bYcn*qmxI6KyJen^DY3-6Eqg#k)<7R`gkTf=B}m0YniEb~qS0zy+9H$UvhcnuUSR z#|bbOC2>^lr}8uTN+E86i#!dP{5Xd8M%Pw6E0z!4x7k4c*4<h2XX<;iYu88+z}xWf zqw&5<TG)>T2U6JPy77w-+ic~2r*<Gq{qJ|=rF%5j{0$roF6c*LC(8{t-78^{Wy;Go zXrKZ(0Bg=|DF!yO9PGg%9~UiPzNPr$T&nhR+sh0hZV-IhDlT9p&Vgq=VY=8-H&|S2 zyT<XXWj0e#%swC~&%;6A2q_nL=F&g|mqRDoE&IM_(s-lYBBT%p13crs0eRc2^x+qO z$NA8j?}NQ>7<{X9Xj#rap~vjLq1Jjun+7!!fXYq(!=||PojB1@%q%x+Z|8Q`3T1V9 z;2iRu+&}QVrs2gqwDBXKJ3G<jyt210=VG(7HPr0Yiw82&U>yD{{b={%TtpcBJdGVK znLwO_>!ja}g{WV5kZ(FEx%{6>kkNup=8l&yKgH?|N)ZZX3BDq5NRN*9Z#TU7Otnoi zAPVUSuLuZspeoHP6HuHZy9qh&gQc*jC#oLjD+-Cjz$u^!%`U|u&lQ8wjKGOWgT#i4 zcT^Ftieg43?)IBgOHj<C87#IS=es1r6d^4IrFBV;ytrDI3(T2V_pv&Ln<L)J(lNLd z#EuNKV1IyuMUhLcrlm=&)Ht$&L^DDNU@W$v2fnNkZzV}G^cSpn)G4-|9$mD4445-7 zEhMTcl|01*1CcCYV5<dL6Wo@Jtqs(4lpNKp289{<+DnhSp++Wr&1@hUaw&q8zi8Mz zT_r@2Y|uVgV({-bF*LTYr$n$@l7b}^41D?KGBKJ=ahIA%c8mu-wld@_;!@2lyj^~^ zMEJk<5h>6JLms0UYNu-`d<*=2(?AOrazG*RKdw!p99RN{CVGV=)<ui1YVE_na2SW@ zs=x)jJ$LIAIhtKnZB1w02+$qb7eSH9lEtYpyb65N;DZOm-w?3g7fhDo#R<x+rHdnF z7^OVeO{w(S=@2!8_W6$m2b>693d99r8?-aU-;{}<4T`PE$rTkiSE4A$rPNYG0aQ5F z(!fahcT(0U$^JPas&6Y3*?R<9@P|w>^|57G{Cwy7^zF*32Iaw;P@pn%*}3sja=Aau zX|`fWwU~1m`)`usq1Ls=y&jf|2=B*<-)!LsY%F(~L$x>1$o~Ln2B3yqe(;`rJ8wzi z9Q-0wLW7IjU#H8&!z!i;)hG3B1t|SukIUmLmZMYE#Agcgk%FzQr}I_9lB_!<!zmm* zU`qtqkb0YVKlgVQtv&yXOw-1n4W0{=sNGafp0(pn*B@Q**B4WkCq2Vjowr^%#}1D& z(~oWX86Xgcne~q@lU<K)R+^P8o7v>`5A)WZnXNt3C&oQhTbrj|0O$x1!L$4U3&Zu% zwE=I5aZhQ#7LVZ4s?%~ns?{_bap2f#-NMT88th>|ftoN)Xka|=wjRrB8_I|BeQaak zZrOEYL&dm@u4~N}^l%{Sm;WS$gf43CRp3?C!7muQuxJ{p1#dQH(;!gKk?=Bd2FEay zjpMUN33+xOftw*BcK!}<Df|;Q%)*J+G3B~14n$NkvhEZA*>Gxe55{5%YgSXoit}Aq zC}3yF!>jSg3Gt8PLkK6Wi7#5OUCiruJyD4@Y}TSXi6)crx!rObRZo#v@V_3}QD9uT za6AcwZ^&gXt<}<aFi%=*hdb}i@k+$|jK~M=*Stn!z6wTdy+zwRDK8msV##%fsqEDz zp<Y*rlb`l#;CdjHscZJPmlYx%L*#?yM^+jF0a*M@8uG6^M&siJr!PccAv|`IEc-S# z^jk89xp)(UEE_n$j8+~!j$6M_^A~JE(thiSg^;rLYUlDbw=FL=TKOFUk@rumU!t1G zb@hRimRB?$bhQ5UmY?_uy}9_=m-)CptgsHD$piHpQ3GI9Iu(fvCf+%MJ3a(3!|a)j z26A}eh^%|U0q>EqE%ajg;55H6=8*<6TaL)0k@Cg*6k!Jd7?hdw&`qc3HYJUU&b+Gc z)nGQoMnob}yPF}3<Xhi(pa;tKe>i@DtSj42IB3U;B!9?b(2eKl7SstUZ_A}J$u_IW z6){d=s)1cy7xnxZ%~0x_C5a;VnM0pTuzoW_Wvj@Z#WvM8gfqYG*d<exCYqOO!OYvV zYWS+|ToXGEuy@vcBEN-}T~sDt&4$0_V7d(1XIN+UAuo{;Yi~$YYO1h2np6#S^fB+( zMWMU|oBHk;B>4ov2X$O7U<na5wuy55yJkKZ-N~h=o7H;?>A44afNvp0F6QIjCQf6+ z$ELdMx=Fu-^qOJYX-maRi9*p%yk#x0$RS4fY8l=dU{CuBfs6vvDu!v|#wvqPvhew{ zbK|%cpWs|zp2hK~r=1W~z3np(7Mu=ltFr_>Z``i+u>Daf40R3atYv1kIpWw<dKlZ% zPG1`N9Z;vDD}Xw!%Yzp6WlB_0WbPUq92W-kGmD>)B!0H&BAjkr)%&GkVg*cg5qazm z?CsWLt3k`$g%OYLY-ILkNt7Tenf}msVLHN^_n00CGF}EAtB7`fD97q_=h`9b*xyIZ zi~LK(07TcMU0Xtcfvv-XfnofkB6>NwnzL9sIl60_nA%$~dpp=~rW!k~vtkYH&|V2h z2C}$_KUaw_u_w|f`K@+bt>Hy{kGUG<F7bae90{JM&iutm?;uIHw<^3UlI!Q@_e6E~ zW2Sjeep+>LfbK_fC35-({_A5~2Y&JI?-V>#I)LP<*<gHk9>CXiYfhQG9_DXfo3fB; zRZ9mpWC;lln#i+?5IH=>RGh(nm2PC{IT5cRWUV5yv^t;ZEAm)2lA?8K<Nc!f6pcr* zx!fP~+7}X2uFjhC=3T5ZpgRnZ`k7K8w#D%8OsVS+sJ%OLOloAxz6x#W(pK0A_>XvT zD**HarGZcs5p;;Mh-2xzc`jrpyZmey3~q{s98{z+s%g!gJWHfzxD;zM?F-T#xB<Fn zIHh3d8(4zsDU!8xv&kbT+oP*I)C{VO7K2y`DP3FXn%WNL)K=ho;+{U<Y9?2>NVUi) z1Nz}!DF)B+Ut{{_JN*0_2xx!h>H3dZT0lAYeiEW($V@d-kEVbZW*{vFWElB1WE4~n zn;><KBu-4PggHE6LVDE_M-nt$@t@s7?Yt;O+tO57kI&IJ1LZ?lsCn$7Gue@(^Rw-7 z2vFJ2%j&y@uPA56MP;`#LqR>0K~;(X!C=`o_9$|aI{0u^!m<rp>LV5V1GZdTd4LXM z@~8gbKFK+#+hp(=e4Mg^ju+#1As5Egk%_$HWEK0|(4NEifxrSGg`5nDAp8zJQPM?n zn^&%@_ck2{8d*%7G<qLlt8E*=8VgvtXRu9&Lv>;|^;5+^dkuwz;a37b=F)<P598kR z)G$76F$}7I*s$*XDb*goq!#fPDNNMsmF;owzo-bLGeB$7RQ862*G(3b+5M-uS8Q6+ zA_E8bCr>$IvZ0OK$aW2kKgC^fN-oi_$p`rsVPJ@nIo1j(rC+DpgKQkZ2P=eb5s2E# zn^Wm4Lv=C&C@;6n&$J^CCf`qZ@{7Cg8Ih+&vr9%tLZ9&9$<o8*@6Iy1axWt~saUlS z<x8Yc%-CTi9{0;tq#I++3-?-><!8CUF?j*%jug7_V+}19k`+lKiSP?<(VNf-2)XbV zibAEOiL|B&%`>ZsmOsKUv{g}&CemcNWvTVeeJU3S3aG-c*hgy$yGG88YoK#80W^zA zu;Yvk_w!TDHc#aGV>GLkGfMLaR!zE2ts0=c*OR{=eN{XUzf6+f4CToF$c~NDaEAf# zdJhQd{*a_E(RK}Nfa$a$<=j;2?PAn98wLy;FQtP44jfvXi&}Jc13aRt&Wm0NcH=m7 z;@FCqR?}I_BS^*8+dM(xh_cB2IQ+w;OVHcAll>+DnCGb$*ON7mVeO+jABcP1!c>>) z_@f^Pv5RsxTM3-0{3zwhVGXd?Ht_}+sxv1E(aT*j2*#=dy8AoKB#Y6@?ruxzww7Sn zZCf%^rL9R`0xU+#k8+z<{ygS_hXe3_ILO|EtFR*9X?J#tT+Fj^z7#H-5+5X{Y3=cl z!wvUwW-oueef=Q?PJZ9`-@n)!bX8DmN&l0EoZKy3fpdD;ME`!!_=gf%(EpXD{>fDT zZ4Kl=Q9UZ6f6L_mY)JWM1N#48`}bH(2@KMsB>J~n`%h;GO%4Y3&yV^4WhvCaUOif> z|Fn)c|M!GwrvDDe4VYj+2$W$*L;4^0c}}31zBB}^C@@N&{J-vFV4XfTM1wqVSf7IE z|K`{Kar~wXgfb9@=v4(u{xcBk0P8hzfLR7;ME{{b<o^vs<~wlMfD*<?|6iy4KUg+d AQvd(} delta 11638 zcmZ8{V{k4?lx=vDoY=N)+qP}n&KKLxiEZ1qZS%x7-km$|&6}D2vw!reU0t<S?cTk1 zzxM#&v;)^QL;Viormr+X1_F``PwIuj1nAmtu3+}y*Zl~bQGr`&=cXR9;(cnOtck`~ zt%A}{Mxgl$CSDcy`wv-e*fJjEQ><(+S%&RgjksNk)#E~((G&a(_>JeB@{)*3k;wY4 z#UKI4m@0>bh25M!@ZAu8jNkkyQCe#ci#4iL?nIN895PmG&@Qb=FL$yV=l(dl0;tdz z|Il`K)TCK2A55<W88JV9yzPFUBwe*XX&E*uRkg6lDB8~0u0pdLzi3szZ%xTGI@D^+ zXD+5F<ttjRuxTxZXqlF@)GJb<n73HRJY|^hAg1k}$7toR*&KLDd$~&6k5v7o>TX;< zAEv5lR<u@mRCDfFY2#L&$9`eI04S$-*R)Dm7dw?d0XdJFUs+nQ8)wFxXEo<hnhWxn z%F&L!*UefyZiURcE@w=pf*nON#~5K+m#JpHNIlKi!f;{R-Q{!_Ro7*%RU}_IZa#^0 zoO;dBiqH2u3GaqdaUnm;oDxU7x+)b{9SMB7HEr-36XCfrr;2feG=@@018(&e^&~~< zRkJOBA;)O9-G&=pek_XFHeS<|>S5Wn%vQW)x1Xi^R?+ZL=bZL5o9QDzwq0j?dv#+h zQiZh7UaMKd`c_Ay+LA9|(K4~c8Puz31Nvq=T6n_@8vQ=ZXz=1n6QRphrubZ-Yr=xs zU8r&#;ONlVAE%w7c4^F&0B@v2#H@p~coW6uX-v{iA@9|{=;svhr|B7Nr0I!Ej*XZ< z3*Ls68b35NYj>LCSlLSL05kc_D<rQ?r%iO8n~ekWdbZv*tUvLqcIBvJmpd0HYGx1P zSz9*v?v}f7<~zT8{Yl^FcQxdgpJRj%r#Kk!Gr3Rf=9ok#*JbGH0XEie6{38&Ey?R4 zHhyfry3&k2%y7|ZBj7_WhB*7XfAx8z3VD@S@z5J^`c@S#gY3|?V#w7Ro^d0fj}O<Y zj*C*;S8tl|lA}1ZKgDM$ekfH}9W4r%ELy%5jD{jA4*_&*#Lz&X!=YSOm}h^Ey`JL@ z%$uf@-7P(t<PsI~0bMn#?;p8Yd<LJ8^F1mp7ELk8(;mh+794ICe1RZvG0@JV9IUw( zBie^UJ|=u4>KKMu8J#284;gPN%&~W;*iWO!SodPIwY;0|XDf5w_(x_uOhK`>lwf~3 zrD$5G&5@2f7BNVXFpg_D@?lXH&<@I%Q~b-UGb1Mry9UY20R9pXMjc=uGM~dpitv{o zs$a+6B$>`7xQE&X#khxiS_FMYRLvkbbbCU_J9Loo>XO~XwXB?wxh)~66QbRMJc_mX zp=0EUn&xG^MT#BXwZ|}$LyMe(D0KqfJ-~A|_zd~-?sHJoXLuk%j>vNDiTV;|Ns>E~ z6f}Pyy!y*>0Tv#?t6MqFY23r-OQ-H-l@bXCL(-1=$jt$!7kVaU*P?Y_Q&vO?u2KWi z{mTb7Y^##AH^w!u27Sv-j1pBkaFlemy>5okH@7eIdVDA}e70QzO1y&mZm~i)P?Noo z`=;y4blUsFR3g4prk0#3ai>>cgeMIQnX<#ogyqW>fSOu1aHis?IB0x3Lbe~1&&{=$ z$O+X3MtT~WBDBQqU|IX-9dj)cY=aujRcHgO^BAMXwKb}d6aJMzm{e*g<usFrv#mU8 z;kR0_C18In34iiePdh$lJ?oK#f?vUuee<g)yRX^LlYkg}#>=@+h;JTN_X0-f-YiQY ziLQcefKdtP=N44gSKfvv<n+zq0DZ_`3+!5dv0kQ)6TS3T@4tinHFiG6gn`JS9gt*x z0Vz1be*D<vg4P(-FhaK9T(nolj8)7MKhzDXMWwM8&_zmb*yR-AkW=|$ys$E+y0x}% zTVUA|7@!WrM(=Rw=3NG|OVY#hay}VtH3+OifXPqb0=`f>Hv*62v#PbgYUgUT&RM$S z?9?3#Li6Mm#PW2a3NP^dEBV|Nw5I`I5Jxu2r8U%it!0U~0z>l5m!+ZVHmHOg2CZxA zb5*K6=!bcFbB6%nH_fa!w3a0_al_9#5AD11*6;~?j0DH^yu5*~hK4^Hl7+=Q2Ltq& z0JrIjXa=DGX^wV=m#JQ1DHyT?J2*wVYsvx~@mYqwH6J6s(K)tPhtG*18!ZCiboo=B zmk^na%@&QZsS@-~Za{zE1VmUbc3*|O0`reUX!^t=bSFxN+i(NJJS?2k3HYTetqs1H zsTF5pZf(quz+Gt*vc28ovP1gUM(j}ypovG~12=HS*J=%)hO9*RP&#cN0{o3Hjmh4p z(5DTXu_>m-CjcMPHxF}u9YkySUgX2U_C)JQmAiAjZ-66&vP=)t--3x7cUF$Pep&2e zH|=KuDdPxb=38#S-NpZ-4WLuy1YTdqE)e2+-+}b|`Y_A9aeM*@t$gu?ab^w@&`*K! z&`v(muH&LI5rrTU=3cKu#F?oJQ!a-}*S>MkWZ!5f>}sFi!K^`y%#|4Xi`WlLn`^|- zO4TM6u!oM9C-^f{*g*YT>yUEZc#Y+rn*q%ycYv3%*G&YPv-OS~8Q4lES|G(SfDr;C zA_z%jqffI65em|6${cHg1ubR{5Hs?lr^q-5>;k+S(887N1|w*YK{2{m?_3Z6V1Qax z25JGm_WO+*huZ9ibZB%N%03UK{*m&5($CZMI>7H1EnERl_#>y&MR6kNBtIcdNt&~{ zXFhh1p<RV3SN~poWWM3kg9|3aFCf|(G?)DKN}(vW1EHB9{s9iGg69MbaF+fody~h# zhf^$@_55CF9U&nl8XWrl;jI!~OJ5^BYF)izwM;da%@W^E-x{6mO9F2{vTz@DaAXpu zm#<c1xR}$kUg3x~qGJ7rP-z5J^rW5!<8$BSel;LTXke|pe=Fv9CPuE$h5Mf5U9xz# zu4?3pP@n;evz7d@g+oy;fVMU15io@l(&j3KluGbiXx%SUIqpK#$YhrerM(jVM2hVk z1gs1Sf~tH!o9%-{cmNO2HLC0%7QW3ONra9pscv(_Xd_R=B@Lynl@mVS{WS(_wzrBW zX^DivH6Ji`KQ@tUYoczZW+ZyS5#2J_!PNXm|InHZoJPVV3n&~9FkbHrJ@14NDv@E( z7|;N7WRD~2aL}jRPLn`~h>FD4zyh=)j;O-P^9xHl?o5&N1K!PolYsWj-v<SZT_a*2 za?F_`Ap9w%(8AK{bx$6~1j@Z+fKNEJeUeJ2B;eGu20>IA-{SIq5hXUCH3CqZ53@k1 zCOYjxFk@6#WZYc`5SCK!1nxDs>7rfU!|MTEVttFisR<;^LQZMPDt3xF8+V+xm|;;& z0HX?TK9qrUfpMZoj6VaN5`dH|Ab4ggV|r#+@kK1Q`Va_-u7d+fVvz9SQ#%r;gxEB* z;c6}P3(orqh@7KOW^jVcDFSBl&E-;|Ipo0>9vB$MgGz}32=46k^(5ZJ+>je`$G_es zH3JCZ&B!X44Fe#Rmt%n(wis+a0~qLJLYiCCDOExcl|;kWm*A!89&c2}Mpa1KHAx6+ zWL%cwVxxt}BOn>8tOY|8o4J$Ere2-FI6*rR@Oe|aA{<QkvPH7;B7w;`5tdK#S9HEG zpC4$uY>|@zg;whZ<>ZJI-F20l(oU{o-Gjx<SoL~!?QJhX3lD6PqpiX`xxbmGr;L0E zv+u~4Aa1Td7Q_2#4#s#2D(@zq!3i&b`HIhlf6_i=t7L-6P(V)TloQP3phg?|TDh?n z-UOIermGI;Wm3tjzH=RSO@X+}NBm)pW1Hmr`3MXFXfv!eFuhEQ4WWk2MYIUo{nlbc zO^P;Z0~@(!tnEIrQjIXhNOlrfsTNJ07;tO@8dFZ}F-2OvliC`&Zy&gX0<_58Rrw4e z5PhgM;-(REK+R8QT1Z!IQWEFV>Bgh4sIbpIM9l&o14v<Q*VVx^e{W@rP)TSX%E18E zo1u;XrUaF|qVxn6WX*ZUs=ataFc^GS8`<zS^;?bD1~EPPZnjiGIto;InfdG2N_H0y zFE$b!V1w|WaOEyKo}jT&I+{&=2#Zmkj8~U<`9W{V(E4|B>q-JrtC5JIK$2fW(p;a` z0Y`4eMnts&TviGVBt*`LYFY0L=sWvL_2M!BtQ!vJ0QcBqrfhWJwlS<5cBjc2a>Bu9 zeN}eq^S?t%o|QHb#uup4uh+~yK9Vga<BUV6Gf?+U3hiwHX+@@YujO7w6z_$xX<g|4 zoAn%+{KY4Ytg>X&(i2<HD%Q^&X&zmJqryCHR87YW?*~h{*^=_sBS3L6QpRZO>DWgA z+#2v{ktNCnxipyXA&)3pc&yNbH+4)LO1+ksO5dL%F^-*mNr5VfIE<=iyx77~(6fk! zQK>Hr49HKFX_I_rfjkX(v^`P(5&1xbnv3y3IxB0VPGtNR<MiLru-sgpLMwYP7d~QJ zDQ$3m%d%=4vBCD$YS@5;RYH&*|6fA@WS2e;7dEBBwNR3?xgFT@EcJbxmY3MmrZ7R0 zdxjThNwU4n1Uk>4BI<S6zMne~4<5NI<`nE<&>p-E_eb~~Q?-S+%L>`HI7e+mwlSjg z(!myL7{kXV&w9(rWXVorP@WeA#xEQxP#1JhA)v1ALukxX95P=+zO*7IGd^+v`=qlj z_X~-B{?3s=sR~H<?BDDr(E+DbB7P3J2FzUHb!2)ZzM-wmXNeJZ^k7~UOYz_6v3GFz z+J%%C(<@g-uH9=CHM<KpXz19YUp;-|T~RAHlFPp0_{nYn_+T=n@{nQwnbf%O?!i&D zA%vn?<X-;1;Pyk6r?fipypIIHOQi>Q4EwKeku<e~N@{3A@AW6b%7~oSix>=1Z)UaG z<#YwEn{b0*;1H@hRSxQw*S0(AGR?7UY&fvkN1aafk+c=zo&AEuW1Jo5Y#7DyjkU_5 z-kpBCI#7;aqXurmT&|!<z26*8yjf`90<L@+a$NLA_Z9sq*DE9|qMqLXmcVRqBBt^r z@os|G1n@c`hV>L3&Oi$P{bz4iw7(&KdU3Z_Gvv}9Vd7Dihc^NbBmDKIK#tJzMZ^W= z1ATC25O__8M%3?hq4RCQy}9x@FWGK7qYa-rYZh@mK-fDW;%FlPaEAtX$iQxeyon_< z?Npkrv|wE^!JB(8LmzCw$pM;wUC{B_D-gitiOhz!-NMoy$?o!pSV|;7wDr{;pB!xM zXOBKG3ZbBD__&y2klQEATCumlk7c+_T`VY^1$p)eoflpW;)`Cq3XChT&hZP8zfJ~& zOhNqq-jEIf@o^Fk!UoOo)O_QNl}4WbqI-|y8y*Pg=jT$>R(cblfbvaEnv2qs(IlIh zs_CFLY7kU#`5>{`^vei2u_=2(fP2IMxdr~CPQIhx&mYc|Y4>|znty|ny?w(vlWn=F z(gtmO)ArhVmUFg!mXq}ayz|ZBxR^oRgJ*SSlQa{LmS?~e<QuoUL#g2uTu~)5Lq`em z3>o0x2t}+#)g=m0x<$R}YHUB->M}2j;p$vv*5<xJ8*{&*<$UCeH@@GzAQ>a&d~WH+ zbrPHz2j+Zo8*hJ^_f8`acksN{KSHd%C_JenT1X~|Qc}bC)r%uwws+kSK6K$qe4}9{ znu$)M?ab0y3>5+vhJ>IUzHHQoaIw%pfht_r;3%ynYl{W2ySYW$(V~f*90os6>vLSG z=rpvj(X?8BfqkOu2<L5k@^U0ZhE4chA>}8)n;C=RBqiS|g@EGVE*yofJ?su6*tp|5 zB5&X8o<m(-%ERQOrjub&`>m~`5si&N%ywVQI-jxmmcONrv^QL9asvx-$**jeDI=VI zpMm4KITj8G(2<}ePfK1xaU^sTNN7j+n3`{MI4*_s87taLy11#f;1<9A)j|ID_Nl+l z`8*B`87=JuEL0d28HnRP4&Ao5FdqZ+#cpK0mx{=pXIUzV|B^s2gOhj&d8BycaxKZl z<hjt0u9j%Sk)kWz;{Zt>cR5Mdtq9Jx;<D+OdjSiG4?7rhif#vO9ma4)_on?FRNand zGwgkYFodE23bu4jd=HDtNl}J;4~?P*p)o+|>V(ig7m%SLbRY%g)~LPf<U}(x$C&OS z!4<o{AZ%6$2RX@+HO#OfHg~s;2bbdKo<T4$;5BH4Pt{2*(L;`4-gy_Mz(t8ZOl`G@ zpcM}o8qQ+r5^-8?2qFt59wMu@q1GB)wlV23<$4gJBL4LWi=UK`=mMjW+s$yRX@hzS zd55`~<-#gh=s!YOc#{r#raG&Sp<0&%t;36HLxqJdIkIjnV``cdQdG!(9(r;^Bn({@ zFkq<QbS=eN7_5MwoX{|*f@vFEkvz-hQyC2aH(dQ5fzPcta>2(IPWF#ae^2XXF1xL5 z{j;v1%D)3MB7kQ0sW(cK*2|DWy!u*0Kpqq-hB|wQu<TOU()n}mGR0-o5j`<5G*4wW zZkA!Hu>vzvJ&@*L!AMy;OtLJ<x(KG*Sg_2ZZLLzLd1<Gikgf8i*BD>-;Dzdk=b;9G z)%sBLMdco~wRo21WDJV5fSqBMI=AYBMh$2$2{Bgc0b9JVW@ygJr@e0Y+i~*#q%2(7 zFD#mRw#m|5(N7PnnZU;C<FB6fR08c`i1^*3&ItRNPk7d5J`5zhT*cGuO49~Y)-2Vb z4IG`fek*Mtxa;xQWTVD@2IW)S4o3u9dkc}24~5d$g%1h>I0Qmr=?4Y^`U4IGgaiZx z<Zka|LT_eo?_y`~V(LuiVQW*Aye${RfZ~56>jSayQEjRjoydr+%d+$S0Mwj3FEMMm z!L+rhjZsHAS#Vt<kiYvT2VWYsDX%MrZJ8}3A<1J(l1RXyTqifac`<nOM`Xr%%p-z8 zxgjNXi;kWifaaP=>?J_2i-NJ2xDlR=vXdFCME<+HJ=2PmhHL6eC9fp?R7ygtaQZBI zxT>2OEyRTmtn0LHKh}kVw<JFS!RXk6^~EmIO_sG4KP3aKV_&bkQt8dsps^A!h_al9 zBzw*T!77!6JO6s2wyuySc4)g=C%>!-Y*(yEEwvvQ(2qKCx%f&?Tcq(Qm8mRg<FXD= z&-CDnWH0*6#HymH6{dXdL%bd{GwBrV*t!x{-t|=lAQ`(+Wz-PC8acei47{XwN1Xir zHTBbS;@~VSo%I0V*Q%PzGhXs+B7eoukTw7AkJfF@c2EEFfo!nUK@ZNJD56CoZ!Ivn zJ87U|F#1sTMm&DM*A#v}WH0M+QM8}x-9#c&PD7g1_B9tg>VRW9OKEs%#@Cq{!d#xI zHJ+tj%<r+7XUh!3(V;WvMi*VueFI-nhy~J5UA8ge`&K?Q!^kDYXNn%|t=jqt@*hlt z|D)`;{-hRSJl$RSK>~!)UD;23tR42V1`OMkjI)BfWqbgTQU}r`E^tT3kKRV}cGEvx zhA8dvz3|3%4quhh6~;8l5f+i;Fd<1Iq*H2?9$h^dI>{29a+-9B#8a+IiQA>6p+_Y# zlCT0oxfk{y(?i9CZc_@Ew>l{|SeLi_RLqdhLcO1Aq>ftyrfa-lN{SldT>{C1@<vG3 zq0afbLvTeMhi+z^LJAg;d@d5SG=ITD)+m_aj{qzQhYHe~I8leh(!Sa^h8_}n36FM< z3`{+7mFgj49mMH~H!=S@xx>r)y=Z<(My~_P4LYJ(!UYHINqk<`spob2{oi(%arErU z!ku?s3Wq0PoT9nnp26@zD=DY=DU8)^k8wj!zQHh3uBH29ND|P-7qRB<UzjK=4n3E; zBpSBZqsrtySAu29VOzHfNev}UDKmzyIFbE?nJ03T2iB&2+}NRU%eDWLm^Dkvu@=l< zIJ$HeooHf<Go5U%GQk43zbjg-^!<Jtot|+@@#WK&U2XoohyItDD9ozzk)%>mLSU_= zaZ+`_4(2&`82&6L&uRGMG<>eu5@$aYIn8z3GB)aJ|6TI51dhv=c#>lIF_%uBM<_*< z<EXCTwV%gD(C(IqH_;HHn*iU5ciCa65Y6+1DPM@;kbNC^?0zGsG!e-jE7U|ISa#q} zc&c@ZR3Q!_Qm0%rk%IU4=tFPz&*A4(JAW=9iPFu!`U##=1__!DqJ#xg`pSd$F-$)v zH#hso=lkIEGHrJ6&HVKvB{3UUy%<dYj!!lVS%jNThS#_h`BSA0PE@B40=KomZ|lA~ z)3hlKO0iy8EeX3kSB4Hb9d~spOVS}({@k-?_3Y#w)j!g9tB%tK2D_aPTwsy1isu+$ zbZ)cqt{1v2@V8L(C6BXA9k#2aw`aKhVp1QpR-oL^9-1HPsXy|UUVu_pZ^(=H)lT11 ztpH_DeTcnU2WYM3nR;G);;RR=?j82iw^uW#$;?>~>dtewVq+>Ly#fNPXVW<42@M*0 zOgAL2;W#8%5rJsnP^<>+EsiYV+($Sdu`rkef&`Kf0iD7OCzQH*qD(0aa9mrOlN>gW zC-$f52x{teCI0C2)=~(q;BW`Hy5^VX)1o|mZm-AN=V)3k;QRhfzo9*aO4ts6IDqcu zBDd#z_9d6|=lkLY@O853axTlWdRP1NIegLk^B{X}I2=N$=j;CbKD=JJ>-Pqz#qX)N zxFI`}2$PoxZg+;y<$~7)gKoMV6(2t)AtNN}5MhVoh)l>DE&xynf%@8qP&Dj$tu-AU zf+@wpdU(GL5%9nz6%(MvxDSp2;W3GM)6{G2*JMdEKbT-bJdY<8$9jj)Mc7{RMZ(g< zr$LYP50y0F8wH(!Mj8cx;1~n;$7a_UM^cx4g~AP2g_&eA%$@grgtG96)RJVz5)frW z=J+D|=&7*<Z(9vB2S?@N6gMj%UWY^mb_AA$`~u4jM>Z`e6-<;l1re8F{rp8Nh&lC0 zm2ugRKzMKsCbITnob8g@bNjqlOLs$9jNLy7bw$aT5RcYM9)K82h#>%%ZTJNihJ&$^ zIOl6|uZ+PIPIwH4LHJD0VPo#Mppot!AB_E>ox3@(c!HtJl&HW&{F-EF`a2_2;k$Q{ zGl(t4f9#MjDO)lTtX&>c0}wYLFqB;)%`mv*_!=0_>O%}40w1#x8YcK!z*lfhMk;*b z7)N8R+*%%vfcM45VjTf}ZnvB|wj?>Ik;KWD3qJ5&HJd(=#dHneeZE}0D*-Q%O%Vw6 zYK2>;dBV`w*;@F)V-yDW*_(&1DHz|KV|YQnZ$o*G0lrX7uM14^YpxmW8)kuJjDm;^ z$Y8pmwA+E<``<z$XzHXbO%v18vf6FH9i)YSBP2do;4BJX?tTF7-S93LwSF(%rj6a1 zexo&O5^8CeE^eerUoqci=yr{je;ZB2c796C{8R5hVO&kPjdfpGR(WGS0K1Eq8?&p~ zQ#F2v9Z8P)gKgI)4TCA}i{mKM(2uP5eZ;)4ilYMaA@Tty!3*^oiaveIf(T(Z?2U*p zQoQH!D5s^tQ3wD$)Ab-ISe<wR(nAs%9~lu2xOot{sEQgDq+1!+zHIPAhw!4%>JHKz zx<X+#X?WpERnOZDHLX|?M!mZSM~*fm%8q#&xL2pANZUL(vsJL7OH&DpqzsaCG^FXL zJeEYRU%v`9CCXB|k<o0Sqf%9R-Imdy^HRORd;Ga?o4Wyr?|9+<2wAg&jeJRdQo7yG zHBKj;kB@Z5ScpKdFI*tM<y%QtvnP`(rG>9Ra@Zs+_RSI%QWatG;rFc_(XyQ$iCE|^ zF5LE&f^t|w{=f@W=FQu5M+~d_!a8NP2aI@?<kdTGIAXiv3z<ct;kv_xjoo6<61cT} z!i8D@rLh8(6N<3EsWMCx92f<7WMFF&<^I4D5jh+vAi3(ae{R9DsBwxoR;~~bcC{XD z#H;PFJMFnFj(hNpD(83VVke}^=@Sl?whz3QBlU7=NHvhQdE?B;WfOPE;1NMG_G+g5 z%0h&5hgx3x!wiyU>PbX>U|+~!YN_5^t;CodOWXl~R8&)ZG|3rIrJDU)*1Gj;L%YR{ zq0B6?3IPwiq3>LbwZc-5RSAx}@_I9*=(wp!b4iA{a;(B~)@TIgf~n4MvJ%xZW_e>M ze(~{lZprm@@}}NtM+_ffEt0|QmS1XxcR*mCA~hLvndHc(rN+sn%~BQa1$a-$hG=AP z>Jv7=x*6MT(mL3c3!_Wv7@~c;EF}M}V^$?q4gKm}l!My~WZW1?_a^aojSkf622^0E zMU__~i)|m8Csji=u>1@YA@0j!<nGfuYp;Gq)2HEhrFV+b<jsn-?ryDmm|ru~*>aAc zA)=wm)1ve@qK?I!s@rnyNNdeU;Zyc>3}qBxLT39Q4b{<gTff?L_3OMB+GXph8{oBl zBXd;UbAd3%m&;~V=+?b$oxJgMU3LWPRjt&ydzSJm#?P4n>+ws?`*F%u4rT3P<wMVS zjf%D6%WvFT<%mn`N@=ljxkImU6U%GcT$3M^OyWVp45hA-$m62-pRV`k2NXy_8Wb$4 z66!b9T8CTY!!IBp-=ut6EP%HCCI_0IzQK?1-l^<#C50C`?%7B-9GR_RE5AT0hIW}< z-cehIes5T!YFtv15krt59#IbV>@hcsr{DXVw(>5I7Q2eBcWZ(D*!f6{sJhzKx82im zV>_%m`(S#jsh)dvw>Iy(;nTw=;OC-r(X8$e(r6Gi-6Bj@d8-=k5U^&ya*@xmMuxxR z(rp{?HrGyuZ}|85g3Mh%?#p(b)t67Lv!Z6Cl$Dr7BYWD#y|U1n-5j}9R<+IU3{R}K z;V&Lu#X!yvE!OqyCAW2nuA_|&w;Xp(c6EPP4KAE2Kh4UYUMpB39vU$`0LqZDGQAVI zlpl#F+{;q?edkE7V^SL(Jz%#YdvaUH49NebfRgRz+4l5a7dDSevEB<h{Js0)Pv&At zYmGk<Fb<SvHE&^6XwOXULDy@C`*uBTYgkt+vNcAo)d!<}b%ugjg;x_?G|$N%A$f3( zLBi_O$|S78Vr|qRgWI$a$W$&H5ct|dBufU~PP6{6TSp|WwJrCN6o87ijoS)uX)Ip@ zb$f$T3x+wp@2-ypKd!ce1=DBZ8>9Q%&hgj2Yr@OqOfA;iWw!<lO7rx#>5ntjNX==l zP8e(PSv^+8Dd7=cD=mrD?@QmEsg_fu^{`KkxVl3$89HzUky%t4I0Sj%^G!Z_g7+e8 z@zv!ho%QaU5imG#2tax^D_)14P3OFy3m)*~Z<LCAJ6Gx2keMSWx{IjCD(lUAqq8m# zv(rBv>Fr8caWprRpUv5E{0vJ%MAvG}Pd-K4?!`}KTpj14xm_FPdWM0tO@qnGK80|x z*6Jy4RM#p{pyOL=y_;pU0B{p^2MIZd&E4BQak#aW!E;cYYd~(Um$eNaUcSxGoEb8c zjPBD*igUL2YU*4Gz@6EDtT^j-Qys3S=KByi&yEt5u$+)Z*_n>#Wq>eCH0uzD(lgR2 zcuXnOi6kz`xs+#<+<=IoOitp7dPS&ze=C#Vaq16Q#+X7ZAr}+_oN2K068l8N5N}?V zc)dt9ILUGu1c1e$UZ_!6l|Y%LP^FPVuu_28Z~)=KUoqz#@|Z!4hy_AMc^Fwm9J&v3 zB0{uiuFH{#DNt;poCIYU+dLj`$(oLo@f7s1V?zg=XMk72w7?NwDI<gt4W69_c3uaX zj5*MYAbr9}M;r;U01uM1K)uQ`pTdq7L}Nb-hDYFz3=pwY>p)=Z0Wm3HhS(9ev;dif zoFtLgO<+v8{ub)2%b5XHJy(+!suXg-l_zA0!VMh8j{*?@1Ge)dIE3P-1m=GZRP7c& zrcl5N%QTJ>sVAD8P_`P$XghaFQM>@Q8WAXyhl`_xMuD<QXe^eGi{n({8u%ncVKOx* zAq=e9mjud$4#+UDXda}QgBg~yNLMR^_(RdGBVNN;0UqV}Xw?UogZtXQ08@>V{0E~+ zo_Ihu^c_tx(W1!-(VTLW)8FG$BoYL?*Ic8yFg}#>&pgEeqO@XmG)9CP-3ia2J)C2n z5YK`}rA&UQG!D2<VYocxBGR-)frNzOB?(~!_@7pi0sztvt29x91Iq%*u~++#zA<^g zr3qqcYx00+%zLU-4Khl%B>`%GH6^A}6Q8Ao(r1-aGr_Ob2n(4zUm`*wmetx_0%kIB zKj<+OR<IZrW`|nAO55=G*PA%Qzyl73tOt~*4GFA+UVk#kU@>{qLK7o}=syT{4i*rZ z3Z__BG=M@$3I!ER+7M4sh?+tQFIg0k+9LwA{Gmg}_*P4N4_c4c0qp$sSIRhm>Wu#P zzU$&tTnmZ4Tg`<1^%oB0_0F`}Y0rpi=dC;1iNSMR)|F!`gT1}^$Xs99K%cayp-c_y zA`nS4eA4<mpZiDDc4M$`d9m;7QztFIO8qr}0U+@AbX$%=KOJ9X(oH42vAY5nQ28f> z5668|v@%3<247>e<@5HetN)3Vw{#kkSRj4eKc#D%{)WuG>+5kiYT%>NO`D&r>BVz* zPyk58&D*QBqVmfyiwuFdN(uvAE^0d`+jEMaMO?#kr)dltA5$WizpL*PO6fEXI)<Lb z50Kx_V3UfB{zu2+UI-cuE1Ft96ST`uSGQSzKcd&i>s?rVb$dLumu9GQ8G0cr_^;zf z4ehzHB`~b1dS9C*_duP?#Qa{Vj)EJ%2JoY6W&{vxHY9r-_6KZ<NlTR&#=^7e`qA#^ zT(m6tkS5lM*|uX>;!|pu13<K!@`3S1n2}I_oZ3`lu<2z3J$-z=0Hnz-_s_Oz>_aYR zO$XLU^_Affvl|=}lPv2uw`R{&%<gwm9u#Wh9?LE&IMn%bk4WQ?6eBR8QBpz?+qOlh zTmfEyc-VF}idRl;t#jp?&58q6LH_nPjz<tmnScsxZJi&n*%g^11-Vb1**9ifZ#HHo zp3adb1E_6qVo=?pRT%J?2C0zTuYJi!A9H$`=wqh+j6?>=Q-cA}=T}5rOI80C5E*~c zBFtcA>nJ`#vK*lqS?ECk5^?zgXY1KHl%ge-5r@j1C)`4!UFTPFUkG@HK!b7>bg1j_ z_tdxjyvT6QY?jyqNC0LG0X>slK=(a|Cbc44sY&&Mgl3K?5yZ;6sPEN0Vy?fTu9Q_! z4rMmRig$y&r0v3fvNfKz4dKOg%L|1i<fEpd3DF5!=cHbw26Z7o2^&Y<7t#k<>JKG~ zH*@H#4m7v9t<)bnU&11B!S<GT*@uXe;U$J(I}aC}2bj<`;MDsmAX4lAJm8l_T*rVR z7qbuM@alyCM0>}cZ3d5N*w-G|0nF7v>8P&<%Vy<uO~Wd)>qhN1{A=o+n=N^FVW^Vj z{0SSr`6kgg*9tHIOAE4Z02T!3W?n)aX8IvYoaImdwxyFg4C@o`U-VX&-K}cv<QpDK z|Gp@o=8JozzqQ*9J~w_T_#iKv+sSF^O^=w@EuTl%6LH6?dp+u<Rap?HRaoIe07f`f zJqOOwzKwzLZbov^BDgQ69e8tX8=9qzx<$u+WB%taJi2`rvt}$pt`XQ^Fn3c`2jV$m zoT8ae?K@4*0F#slhP||>rf=jrx!UEC%8i+nQ0kU%k#&5ae~k)`mpM+CBpx|jz*35? z{RRU{=neT5zeo?gqtHa!Z`A2X7R!y{72DMjjv*}@@fO14-5U-#{1663TNf-uDG%FT zj<_9XANL=cNQ3F7eW_T*rG5&7#0v1VNyhhQmQKvPJ`E!DB89}5`A|$3e$Sul8Z1*O zE#y8gOR>OMMLS#0-@?MqWZ{3y0Ev<qQ^{yU1M=N4;Pd?I$FQmeB&oBW{a0ksjMw=i zV)_RK4bjTag7YZ`3o94G)4v^57LK}Dv|G=STBZJqmZO@E^l|@F51<B)XUL@FqQOeF zFjLmyx@6AWQMjlz@b=#&Q78~x9vvxD$R0q}R22isVB7MrB#8t*I}n{!0ZU$zMNBk- z`K**9kh=q@hUROdyluM&e801Srz6;=uE|F9X2SP|%_^-(!yiFOTUmC`tqa;W<M5e$ zpg^gaM{mQXAv{R~dAd{%k~p{1epmbcf~XV#&dp}F;eQ<G1il*rXYMyw1J^&#?t~f@ zG0K}8)FnvhV-GDYN|E^U4ZtOetGn~y%Djpw%6o*6T%zzM8Wgi6Rq6#C`O=Z!gM$41 zJ)b2xntFb{GXc_C5>!=nzxWg7P-Ioixk!gs&0s{4K!+zpqLVR%5Vr~@Tn4^q+nji3 z-g27`2YqZq(_xPoMY&|}Js5rmnk=rQ>_Fl#Y)!H;IjFLgu5Nm;3vha!c?^_rB7@Hf zwnvQ}bCs0QExp8Liv$B3I~a5%BH}Q-2>r+uW30lSIgTMB1<$p{^EsH@%GqZOdbeOw z<k!szyO6v)6g+(7c_-(&ee%d6-RBa~#kCh0ScZ&^OJbCDpZJDc$D;xyMxVH_Ch7mT z{u~A9S5gfWMB}tVI0O{82KW5VKi0K+qn-u<Fd#T-+76i!Vf03#E9m%Rq*GI?LbV|U z=t+c>Bv4>0npal#MY?5^r4{Hv1+EJO;+nEaNi^m5ccXo9cP5Q)z#a$l&)amgInM_F zEVI+Ejj{%eMGFKakPwPusuJUOBPWDQMI#z|lGzE65f`}7>(ZB-7?G54r9oz0wY+K& zVE|4!Lqyrg<Jtz5;Z(TsSUV<%=zgGh@l3mGNlrs#6fz$;8_b|?YS3|__6!e085hwu zLGfAqa`_CFKMD-fSbkloXi)gqiq>5Fo3#*fd*M_{wz^%3Y^VFWQd7U2ubm2c*0foW z=2p}Gd)!*(VCih8BB<(XE0Vxs0!oA`8z2a!cMq%gke2Sk-6LofOuda{#$A)%AtJ4< zX7@1e9kf5!Lzh0w;tJJ68!({is|X<RIG$3qj@E#9CY}15*-Buu(Z)Rp9{kHrI{RSt z9i$e=Y`<<7($B4W%fl_HUiHm3r_V>t$`Ys2oHHGaxT&J5GoeLkc7F+z{do>|S}OtM z&EmVZ01)YG3u`{1Z-B)<%)J=1MpKOoLE>mFu~BSGOn*2kPX@t)8#=FtAST$v4dtE) zp@<Y(`xV{o)0?`IVBhgYe`km=l4L=SIpTYOHpi#_LtWIHq^`aB-#-!a=*WX`;U>lC z5aImq@x?z{`M--7KWS2j1m|Dt`yY`c|1;k}{C|7@MmoYIXkB8Qe;rr|ARur;ARyHL z0l*_psv|{DBGp5{`L8D-+W*diPMs8^%L~HElyuF4lXRv_1!BjWgrY}?^Y5h#0tCbf z1_XrgKk{NoBq{0<;rv@s{{d`3{paN6|6>xRlj8LFK-lDxX8#GvDoODAWH|q&cF_NQ SgdWu-MSbF5iyHrt;r{?`C@Bg6 diff --git a/SSL/src/Documents/СогласиеНаОбработкуПерсональныхДанных/Templates/ПФ_MXL_СогласиеНаОбработкуПерсональныхДанных/Template.mxlx b/SSL/src/Documents/СогласиеНаОбработкуПерсональныхДанных/Templates/ПФ_MXL_СогласиеНаОбработкуПерсональныхДанных/Template.mxlx index d3e7387f4..65ff78867 100644 --- a/SSL/src/Documents/СогласиеНаОбработкуПерсональныхДанных/Templates/ПФ_MXL_СогласиеНаОбработкуПерсональныхДанных/Template.mxlx +++ b/SSL/src/Documents/СогласиеНаОбработкуПерсональныхДанных/Templates/ПФ_MXL_СогласиеНаОбработкуПерсональныхДанных/Template.mxlx @@ -925,7 +925,7 @@ <tl> <v8:item> <v8:lang>ru</v8:lang> - <v8:content> [ФИО], именуемый в дальнейшем «Субъект персональных данных» разрешает [ОрганизацияВДательномПадеже], в лице ответственного за обработку персональных данных [ОтветственныйЗаОбработкуПерсональныхДанныхВРодительномПадеже] далее «Оператор», обработку персональных данных, приведенных в пункте 2 настоящего согласия, на следующих условиях:</v8:content> + <v8:content> [ФИО], именуемый в дальнейшем «Субъект персональных данных», разрешает [ОрганизацияВДательномПадеже], в лице ответственного за обработку персональных данных [ОтветственныйЗаОбработкуПерсональныхДанныхВРодительномПадеже], далее «Оператор», обработку персональных данных, приведенных в пункте 2 настоящего согласия, на следующих условиях:</v8:content> </v8:item> </tl> </c> diff --git a/SSL/src/Documents/СообщениеSMS/ManagerModule.bsl b/SSL/src/Documents/СообщениеSMS/ManagerModule.bsl index bcd3220df..cfff28a24 100644 --- a/SSL/src/Documents/СообщениеSMS/ManagerModule.bsl +++ b/SSL/src/Documents/СообщениеSMS/ManagerModule.bsl @@ -36,7 +36,8 @@ // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: -// Массив Из Строка - +// Массив Из Строка +// Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт Результат = Новый Массив; diff --git a/SSL/src/Documents/ТелефонныйЗвонок/ManagerModule.bsl b/SSL/src/Documents/ТелефонныйЗвонок/ManagerModule.bsl index 4d36d2cfa..f8bdb7f0d 100644 --- a/SSL/src/Documents/ТелефонныйЗвонок/ManagerModule.bsl +++ b/SSL/src/Documents/ТелефонныйЗвонок/ManagerModule.bsl @@ -18,7 +18,8 @@ // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: -// Массив Из Строка - +// Массив Из Строка +// Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт Результат = Новый Массив; diff --git a/SSL/src/Documents/ТелефонныйЗвонок/ObjectModule.bsl b/SSL/src/Documents/ТелефонныйЗвонок/ObjectModule.bsl index 3e5353026..65dda991f 100644 --- a/SSL/src/Documents/ТелефонныйЗвонок/ObjectModule.bsl +++ b/SSL/src/Documents/ТелефонныйЗвонок/ObjectModule.bsl @@ -47,7 +47,7 @@ // См. УправлениеДоступом.ЗаполнитьНаборыЗначенийДоступа. // // Параметры: -// Таблица - см. УправлениеДоступом.ТаблицаНаборыЗначенийДоступа. +// Таблица - см. УправлениеДоступом.ТаблицаНаборыЗначенийДоступа // Процедура ЗаполнитьНаборыЗначенийДоступа(Таблица) Экспорт diff --git a/SSL/src/Documents/ТелефонныйЗвонок/ТелефонныйЗвонок.mdo b/SSL/src/Documents/ТелефонныйЗвонок/ТелефонныйЗвонок.mdo index 9bde8ae69..f17820468 100644 --- a/SSL/src/Documents/ТелефонныйЗвонок/ТелефонныйЗвонок.mdo +++ b/SSL/src/Documents/ТелефонныйЗвонок/ТелефонныйЗвонок.mdo @@ -138,6 +138,7 @@ <maxValue xsi:type="core:UndefinedValue"/> <fillChecking>ShowError</fillChecking> <fillValue xsi:type="core:StringValue"/> + <indexing>Index</indexing> <fullTextSearch>Use</fullTextSearch> <dataHistory>Use</dataHistory> </attributes> diff --git a/SSL/src/Documents/ЭлектронноеПисьмоВходящее/ManagerModule.bsl b/SSL/src/Documents/ЭлектронноеПисьмоВходящее/ManagerModule.bsl index 20cc90eb8..b8b46b46a 100644 --- a/SSL/src/Documents/ЭлектронноеПисьмоВходящее/ManagerModule.bsl +++ b/SSL/src/Documents/ЭлектронноеПисьмоВходящее/ManagerModule.bsl @@ -18,7 +18,8 @@ // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: -// Массив Из Строка - +// Массив Из Строка +// Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт Результат = Новый Массив; diff --git a/SSL/src/Documents/ЭлектронноеПисьмоВходящее/ЭлектронноеПисьмоВходящее.mdo b/SSL/src/Documents/ЭлектронноеПисьмоВходящее/ЭлектронноеПисьмоВходящее.mdo index a9dffc4de..136cb6966 100644 --- a/SSL/src/Documents/ЭлектронноеПисьмоВходящее/ЭлектронноеПисьмоВходящее.mdo +++ b/SSL/src/Documents/ЭлектронноеПисьмоВходящее/ЭлектронноеПисьмоВходящее.mdo @@ -346,6 +346,7 @@ <minValue xsi:type="core:UndefinedValue"/> <maxValue xsi:type="core:UndefinedValue"/> <fillValue xsi:type="core:StringValue"/> + <indexing>Index</indexing> <fullTextSearch>Use</fullTextSearch> <dataHistory>Use</dataHistory> </attributes> @@ -640,7 +641,7 @@ <dataHistory>Use</dataHistory> </attributes> <attributes uuid="efd4e0a3-2f98-40ef-8089-c853cd588fa6"> - <name>ХэшСумма</name> + <name>ХешСумма</name> <synonym> <key>ru</key> <value>Хеш сумма</value> diff --git a/SSL/src/Documents/ЭлектронноеПисьмоИсходящее/Forms/ФормаДокумента/Form.form b/SSL/src/Documents/ЭлектронноеПисьмоИсходящее/Forms/ФормаДокумента/Form.form index 67b014e21..925c21580 100644 --- a/SSL/src/Documents/ЭлектронноеПисьмоИсходящее/Forms/ФормаДокумента/Form.form +++ b/SSL/src/Documents/ЭлектронноеПисьмоИсходящее/Forms/ФормаДокумента/Form.form @@ -1,252 +1,23 @@ <?xml version="1.0" encoding="UTF-8"?> <form:Form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:form="http://g5.1c.ru/v8/dt/form"> <items xsi:type="form:FormGroup"> - <name>ГруппаЛево</name> - <id>361</id> - <items xsi:type="form:Table"> - <name>СписокПолучателей</name> - <id>399</id> + <name>ПредупреждениеОНеотправленныхПисьмах</name> + <id>472</id> + <items xsi:type="form:Decoration"> + <name>ПредупреждениеОНеотправленныхПисьмахКартинка</name> + <id>474</id> <title> <key>ru</key> - <value>Список получателей</value> + <value>Картинка предупреждение</value> true true true - - СписокПолучателей - - None - - СписокПолучателейВариантОтправки - 412 - true - true - - true - - - СписокПолучателей.ВариантОтправки - - - СписокПолучателейВариантОтправкиРасширеннаяПодсказка - 414 - Label - true - true - - Left - - - - СписокПолучателейВариантОтправкиКонтекстноеМеню - 413 - true - - InputField - Auto - true - Left - true - - 3 - true - true - true - true - OnActivate - true - - - ru - Кому: - - - Кому: - - - - - ru - Копия: - - - Копия: - - - - - ru - Скрытая копия: - - - Скрытая копия: - - - - - ru - Обратный адрес: - - - Обратный адрес: - - - Normal - - - - СписокПолучателейПредставление - 418 - true - true - - true - - - СписокПолучателей.Представление - - true - - СписокПолучателейПредставлениеРасширеннаяПодсказка - 420 - Label - true - true - - Left - - - - СписокПолучателейПредставлениеКонтекстноеМеню - 419 - true - - InputField - Auto - true - Left - true - - - AutoComplete - СписокПолучателейПредставлениеАвтоПодбор - - - StartChoice - СписокПолучателейПредставлениеНачалоВыбора - - - ChoiceProcessing - СписокПолучателейПредставлениеОбработкаВыбора - - true - true - true - true - true - true - true - Normal - - - - СписокПолучателейКоманднаяПанель - 401 - Left - - - BeforeDeleteRow - СписокПолучателейПередУдалением - - - BeforeEditEnd - СписокПолучателейПередОкончаниемРедактирования - - - OnStartEdit - СписокПолучателейПриНачалеРедактирования - - - OnChange - СписокПолучателейПриИзменении - - - СписокПолучателейСтрокаПоиска - 403 - - СписокПолучателейСтрокаПоискаРасширеннаяПодсказка - 405 - Label - true - true - - Left - - - - СписокПолучателейСтрокаПоискаКонтекстноеМеню - 404 - true - - СписокПолучателей - - true - - - - СписокПолучателейСостояниеПросмотра - 406 - - СписокПолучателейСостояниеПросмотраРасширеннаяПодсказка - 408 - Label - true - true - - Left - - - - СписокПолучателейСостояниеПросмотраКонтекстноеМеню - 407 - true - - ViewStatusAddition - СписокПолучателей - - true - - - - СписокПолучателейУправлениеПоиском - 409 - - СписокПолучателейУправлениеПоискомРасширеннаяПодсказка - 411 - Label - true - true - - Left - - - - СписокПолучателейУправлениеПоискомКонтекстноеМеню - 410 - true - - SearchControlAddition - СписокПолучателей - - true - - - СписокПолучателейРасширеннаяПодсказка - 402 + КартинкаПредупреждениеРасширеннаяПодсказка1 + 476 Label true true @@ -255,1082 +26,58 @@ - СписокПолучателейКонтекстноеМеню - 400 + КартинкаПредупреждениеКонтекстноеМеню1 + 475 true - true - true - 4 - 5 - 4 - true - MultiRow - 1 - 1 - AutoUse - AutoUse - true - true - false - true - Auto - Auto + true + true + + + CommonPicture.Предупреждение + + AsFileRef + + + + ПредупреждениеОНеотправленныхПисьмахНадпись + 477 + + <key>ru</key> + <value>Регламентное задание <b>Получение</><b> </><b>и</><b> </><b>отправка</><b> </><b>писем</> отключено, доставка писем не выполняется. <link ВключитьПолучениеИОтправкуПисем>Включить</></value> + + true + true + + true + + Button + + ПредупреждениеОНебезопасномСодержимомРасширеннаяПодсказка1 + 479 + Label + true + true + + Left + + + + ПредупреждениеОНебезопасномСодержимомКонтекстноеМеню1 + 478 + true + + true + Label + 33 + true true - true - true - true - true - - - - СтраницыУказаныКонтакты - 255 - - СтраницаКонтактыЗаполнены - 256 - - ДекорацияПустая - 257 - true - true - - true - - - ДекорацияПустаяРасширеннаяПодсказка - 315 - Label - true - true - - Left - - - - ДекорацияПустаяКонтекстноеМеню - 258 - true - - Label - 10 - true - true - - Left - - - true - true - - true - - - <key>ru</key> - <value>Страница контакты заполнены</value> - - - СтраницаКонтактыЗаполненыExtendedTooltip - 314 - Label - true - true - - Left - - - Page - - HorizontalIfPossible - auto - false - - - - СтраницаКонтактыНеЗаполнены - 261 - - ГруппаКонтактыНеЗаполнены - 262 - - УточнитьКонтакты - 263 - true - true - - true - - - УточнитьКонтактыExtendedTooltip - 319 - Label - true - true - - Left - - - Hyperlink - Form.Command.УточнитьКонтакты - Normal - PictureAndText - true - true - UserCmds - Auto - - true - true - - true - - - <key>ru</key> - <value>Контакты не заполнены</value> - - - ГруппаКонтактыНеЗаполненыExtendedTooltip - 318 - Label - true - true - - Left - - - UsualGroup - - Vertical - Auto - true - true - Auto - Auto - - - true - true - - true - - - <key>ru</key> - <value>Страница контакты не заполнены</value> - - - СтраницаКонтактыНеЗаполненыExtendedTooltip - 317 - Label - true - true - - Left - - - Page - - HorizontalIfPossible - auto - false - - - true - true - - true - - - <key>ru</key> - <value>Страницы указаны контакты</value> - - Right - - СтраницыУказаныКонтактыExtendedTooltip - 313 - Label - true - true - - Left - - - Pages - - Auto - - - - Тема - 29 - true - true - - true - - - Объект.Тема - - None - - ТемаExtendedTooltip - 327 - Label - true - true - - Left - - - - ТемаКонтекстноеМеню - 30 - true - - InputField - Enter - true - Left - true - - 40 - true - true - true - true - Normal - - ru - Тема - - - - - СтраницыОписаниеДополнительно - 248 - - СтраницаОписание - 249 - - СтраницаПисьмо - 213 - - СтраницыТекстПисьма - 197 - - СтраницаОбычныйТекст - 198 - - ТекстПисьма - 25 - true - true - - true - - - ТекстПисьма - - None - - ТекстПисьмаExtendedTooltip - 349 - Label - true - true - - Left - - - - ТекстПисьмаКонтекстноеМеню - 26 - - ТекстПисьмаКонтекстноеМенюВставитьВнешнююСсылкуНаОбъектИнформационнойБазы - 385 - true - true - - true - - - ТекстПисьмаКонтекстноеМенюВставитьВнешнююСсылкуНаОбъектИнформационнойБазыРасширеннаяПодсказка - 386 - Label - true - true - - Left - - - Form.Command.ВставитьВнешнююСсылкуНаОбъектИнформационнойБазы - Normal - Auto - true - true - UserCmds - Auto - - - ТекстПисьмаКонтекстноеМенюГруппа - 470 - - ФормаHTMLКонтекстноеМеню - 435 - true - true - - true - - - ФормаHTMLКонтекстноеМенюРасширеннаяПодсказка - 436 - Label - true - true - - Left - - - Form.Command.HTML - Normal - Auto - true - true - UserCmds - Auto - - - ФормаОбычныйТекстКонтекстноеМеню - 437 - true - true - - true - - - ФормаОбычныйТекстКонтекстноеМенюРасширеннаяПодсказка - 438 - Label - true - true - - Left - - - Form.Command.ОбычныйТекст - Normal - Auto - true - true - UserCmds - Auto - - true - true - - true - - - <key>ru</key> - <value>Формат сообщения</value> - - - ТекстПисьмаКонтекстноеМенюГруппаРасширеннаяПодсказка - 471 - Label - true - true - - Left - - - Popup - - Auto - Normal - - - true - - HTMLDocumentField - Enter - true - Left - true - - - OnClick - ТекстПисьмаПриНажатии - - 50 - true - 7 - true - true - true - - - true - true - - true - - - <key>ru</key> - <value>Страница обычный текст</value> - - - СтраницаОбычныйТекстExtendedTooltip - 348 - Label - true - true - - Left - - - Page - - Vertical - auto - false - - - - СтраницаФорматированныйДокумент - 199 - - ГруппаКоманднаяПанельФорматированногоДокумента - 202 - true - true - - true - - - <key>ru</key> - <value>Командная панель форматированного документа</value> - - - ГруппаКоманднаяПанельФорматированногоДокументаExtendedTooltip - 351 - Label - true - true - - Left - - - CommandBar - - Left - Item.ТекстПисьмаФорматированныйДокумент - - - - ТекстПисьмаФорматированныйДокумент - 200 - true - true - - true - - - ТекстПисьмаФорматированныйДокумент - - None - - ТекстПисьмаФорматированныйДокументExtendedTooltip - 352 - Label - true - true - - Left - - - - ТекстПисьмаФорматированныйДокументКонтекстноеМеню - 201 - - ВставитьВнешнююСсылкуНаОбъектИнформационнойБазы - 387 - true - true - - true - - - ВставитьВнешнююСсылкуНаОбъектИнформационнойБазыРасширеннаяПодсказка - 388 - Label - true - true - - Left - - - Form.Command.ВставитьВнешнююСсылкуНаОбъектИнформационнойБазы - Normal - Auto - true - true - UserCmds - Auto - - - ФорматСообщенияКонтекстноеМенюГруппа - 468 - - ФормаОбычныйТекстКонтекстноеМеню1 - 443 - true - true - - true - - - ФормаОбычныйТекстКонтекстноеМеню1РасширеннаяПодсказка - 444 - Label - true - true - - Left - - - Form.Command.ОбычныйТекст - Normal - Auto - true - true - UserCmds - Auto - - - ФормаHTMLКонтекстноеМеню1 - 441 - true - true - - true - - - ФормаHTMLКонтекстноеМеню1РасширеннаяПодсказка - 442 - Label - true - true - - Left - - - Form.Command.HTML - Normal - Auto - true - true - UserCmds - Auto - - true - true - - true - - - <key>ru</key> - <value>Формат сообщения</value> - - - ФорматСообщенияКонтекстноеМенюГруппаРасширеннаяПодсказка - 469 - Label - true - true - - Left - - - Popup - - Auto - Normal - - - true - - FormattedDocumentField - Enter - true - Left - true - - 50 - true - 7 - true - true - - - true - true - - true - - - <key>ru</key> - <value>Страница форматированный документ</value> - - - СтраницаФорматированныйДокументExtendedTooltip - 350 - Label - true - true - - Left - - - Page - - Vertical - auto - false - - - true - true - - true - - - <key>ru</key> - <value>Страницы текст письма</value> - - - СтраницыТекстПисьмаExtendedTooltip - 347 - Label - true - true - - Left - - - Pages - - Auto - - - - ГруппаВходящее - 208 - - ПредупреждениеБезопасности - 423 - - КартинкаПредупреждение - 425 - - <key>ru</key> - <value>Картинка предупреждение</value> - - true - true - - true - - - КартинкаПредупреждениеРасширеннаяПодсказка - 427 - Label - true - true - - Left - - - - КартинкаПредупреждениеКонтекстноеМеню - 426 - true - - true - true - - - CommonPicture.Предупреждение - - AsFileRef - - - - ПредупреждениеОНебезопасномСодержимом - 428 - - <key>ru</key> - <value>В целях безопасности некоторые элементы письма отключены, письмо может отображаться некорректно. <link ВключитьНебезопасноеСодержимое>Отобразить небезопасное содержимое</></value> - - true - true - - true - - Button - - ПредупреждениеОНебезопасномСодержимомРасширеннаяПодсказка - 430 - - <key>ru</key> - <value>Входящие письма могут содержать элементы, позволяющие отправителю скрытно отслеживать действия с письмом, в частности, время просмотра и некоторые параметры устройства, на котором письмо было прочитано. К небезопасным элементам относятся, например, загружаемые из Интернета картинки письма или встроенные скрипты. В целях безопасности такие элементы автоматически отключаются при просмотре письма.</value> - - Label - true - true - - Left - - - - ПредупреждениеОНебезопасномСодержимомКонтекстноеМеню - 429 - true - - true - Label - 33 - true - true - - - URLProcessing - ПредупреждениеОНебезопасномСодержимомОбработкаНавигационнойСсылки - - Left - - - true - true - - true - - - <key>ru</key> - <value>Предупреждение безопасности</value> - - - ПредупреждениеБезопасностиРасширеннаяПодсказка - 424 - Label - true - true - - Left - - - UsualGroup - - AlwaysHorizontal - Auto - true - true - Auto - Auto - - - - ТекстВходящегоПисьма - 203 - - <key>ru</key> - <value>Входящее сообщение</value> - - true - true - - true - - - ТекстВходящегоПисьма - - None - - ТекстВходящегоПисьмаExtendedTooltip - 354 - Label - true - true - - Left - - - - ТекстВходящегоПисьмаКонтекстноеМеню - 204 - true - - HTMLDocumentField - true - Enter - true - Left - true - - - OnClick - ТекстВходящегоПисьмаПриНажатии - - 50 - true - 7 - true - true - true - - - true - true - - true - - - <key>ru</key> - <value>Входящее</value> - - - ГруппаВходящееExtendedTooltip - 353 - Label - true - true - - Left - - - UsualGroup - - Vertical - Auto - true - true - Auto - Auto - - - - ГруппаОтправленоНомер - 275 - true - true - - true - - - <key>ru</key> - <value>Отправлено номер</value> - - - ГруппаОтправленоНомерExtendedTooltip - 355 - Label - true - true - - Left - - - UsualGroup - - HorizontalIfPossible - Auto - true - true - Auto - Auto - - - true - true - - true - - - <key>ru</key> - <value>Письмо</value> - - - СтраницаПисьмоExtendedTooltip - 346 - Label - true - true - - Left - - - UsualGroup - - Vertical - Auto - true - true - Auto - Auto - - - true - true - - true - - - <key>ru</key> - <value>Письмо</value> - - - СтраницаОписаниеExtendedTooltip - 345 - Label - true - true - - Left - - - Page - - Vertical - auto - false - - - - СтраницаДополнительныеРеквизиты - 252 - true - true - - true - - - <key>ru</key> - <value>Дополнительно</value> - - - СтраницаДополнительныеРеквизитыExtendedTooltip - 358 - Label - true - true - - Left - - - Page - - Vertical - auto - false - - - - СтраницаКомментарий - 283 - - Комментарий - 284 - true - true - - true - - - Объект.Комментарий - - None - - КомментарийExtendedTooltip - 360 - Label - true - true - - Left - - - - КомментарийКонтекстноеМеню - 285 - true - - InputField - Enter - true - Left - true - - true - true - true - true - true - Normal - - - true - true - - true - - - <key>ru</key> - <value>Комментарий</value> - - - СтраницаКомментарийExtendedTooltip - 359 - Label - true - true - - Left - - - Page - - Vertical - auto - false - - - true - true - - true - - - <key>ru</key> - <value>Страницы описание дополнительно</value> - - - СтраницыОписаниеДополнительноExtendedTooltip - 344 - Label - true - true - - Left - - - Pages - + - OnCurrentPageChange - СтраницыОписаниеДополнительноПриСменеСтраницы + URLProcessing + ПредупреждениеОНеотправленныхПисьмахНадписьОбработкаНавигационнойСсылки - TabsOnTop - Auto + Left true @@ -1340,11 +87,11 @@
    <key>ru</key> - <value>Лево</value> + <value>Группа предупреждение</value> - ГруппаЛевоРасширеннаяПодсказка - 362 + ПредупреждениеБезопасностиРасширеннаяПодсказка1 + 473 Label true true @@ -1354,8 +101,9 @@ UsualGroup - Vertical + AlwaysHorizontal Auto + WeakSeparation true true Auto @@ -1363,1281 +111,8 @@ - ГруппаПраво - 363 - - Вложения - 138 - - <key>ru</key> - <value>Вложения</value> - - true - true - - true - - - Вложения - - false - None - - Группа - 149 - - ИндексКартинки - 145 - true - true - - true - - - Вложения.ИндексКартинки - - None - - ИндексКартинкиExtendedTooltip - 339 - Label - true - true - - Left - - - - ИндексКартинкиКонтекстноеМеню - 146 - true - - PictureField - Enter - Left - true - - 2 - true - true - true - - CommonPicture.КоллекцияПиктограммФайлов - - - 1 - - - - - ИмяФайла - 143 - true - true - - true - - - Вложения.ИмяФайла - - - ИмяФайлаExtendedTooltip - 340 - Label - true - true - - Left - - - - ИмяФайлаКонтекстноеМеню - 144 - true - - InputField - Enter - Left - true - - true - true - true - true - Normal - - - - РазмерПредставление - 236 - true - true - - true - - - Вложения.РазмерПредставление - - - РазмерПредставлениеExtendedTooltip - 341 - Label - true - true - - Left - - - - РазмерПредставлениеКонтекстноеМеню - 237 - true - - InputField - true - Auto - Left - true - - 5 - true - true - true - true - true - Normal - - - true - true - - true - - - <key>ru</key> - <value>Вложения</value> - - - ГруппаExtendedTooltip - 338 - Label - true - true - - Left - - - ColumnGroup - - InCell - auto - true - true - - - None - - ВложенияКоманднаяПанель - 140 - Left - true - - - DragCheck - ВложенияПроверкаПеретаскивания - - - Selection - ВложенияВыбор - - - BeforeAddRow - ВложенияПередНачаломДобавления - - - BeforeDeleteRow - ВложенияПередУдалением - - - Drag - ВложенияПеретаскивание - - - OnActivateCell - ВложенияПриАктивизацииЯчейки - - - ВложенияСтрокаПоиска - 376 - - ВложенияСтрокаПоискаРасширеннаяПодсказка - 378 - Label - true - true - - Left - - - - ВложенияСтрокаПоискаКонтекстноеМеню - 377 - true - - Вложения - - true - - - - ВложенияСостояниеПросмотра - 379 - - ВложенияСостояниеПросмотраРасширеннаяПодсказка - 381 - Label - true - true - - Left - - - - ВложенияСостояниеПросмотраКонтекстноеМеню - 380 - true - - ViewStatusAddition - Вложения - - true - - - - ВложенияУправлениеПоиском - 382 - - ВложенияУправлениеПоискомРасширеннаяПодсказка - 384 - Label - true - true - - Left - - - - ВложенияУправлениеПоискомКонтекстноеМеню - 383 - true - - SearchControlAddition - Вложения - - true - - - - ВложенияExtendedTooltip - 336 - Label - true - true - - Left - - - - ВложенияКонтекстноеМеню - 139 - - ДобавитьВложение - 150 - true - true - - true - - false - - ДобавитьВложениеExtendedTooltip - 331 - Label - true - true - - Left - - - Form.Command.ДобавитьВложение - Normal - Auto - true - true - UserCmds - Auto - - - ДобавитьПисьмо - 397 - true - true - - true - - - ДобавитьПисьмоРасширеннаяПодсказка - 398 - Label - true - true - - Left - - - Form.Command.ДобавитьПисьмо - Normal - Auto - true - true - UserCmds - Auto - - - ОткрытьВложение - 152 - true - true - - true - - false - - ОткрытьВложениеExtendedTooltip - 332 - Label - true - true - - Left - - - Form.Command.ОткрытьВложение - Normal - Auto - true - true - UserCmds - Auto - - - СохранитьВложение - 153 - true - true - - true - - false - - СохранитьВложениеExtendedTooltip - 333 - Label - true - true - - Left - - - 0 - Normal - Auto - true - true - UserCmds - Auto - - - ВложенияКонтекстноеМенюГруппа - 466 - - УдалитьВложение - 187 - - <key>ru</key> - <value>Удалить вложение</value> - - true - true - - true - - false - - УдалитьВложениеExtendedTooltip - 334 - Label - true - true - - Left - - - Form.Item.Вложения.StandardCommand.Delete - Normal - Auto - true - true - UserCmds - Auto - - true - true - - true - - - <key>ru</key> - <value>Вложения контекстное меню группа</value> - - - ВложенияКонтекстноеМенюГруппаРасширеннаяПодсказка - 467 - Label - true - true - - Left - - - - - - ВложенияКонтекстноеМенюСвойстваВложения - 280 - true - true - - true - - - ВложенияКонтекстноеМенюСвойстваВложенияExtendedTooltip - 335 - Label - true - true - - Left - - - Form.Command.СвойстваВложения - Normal - Auto - true - true - UserCmds - Auto - - - true - true - 32 - true - 2 - true - MultiRow - Row -
    true
    - 1 - 1 - AutoUse - AutoUse - true - true - false - false - false - true - Auto - Auto - true - true - true - - Вложения.ИндексКартинки - - - CommonPicture.КоллекцияПиктограммФайлов - - true - -
    - - КомандыВложений - 450 - - ДобавитьВложениеКоманда - 452 - true - true - - true - - false - - ДобавитьВложениеКомандаРасширеннаяПодсказка - 453 - Label - true - true - - Left - - - Form.Command.ДобавитьВложение - Normal - Auto - true - true - UserCmds - Auto - - - ДобавитьПисьмоКоманда - 454 - true - true - - true - - - ДобавитьПисьмоКомандаРасширеннаяПодсказка - 455 - Label - true - true - - Left - - - Form.Command.ДобавитьПисьмо - Normal - Auto - true - true - UserCmds - Auto - - - ОткрытьВложениеКоманда - 456 - true - true - - true - - false - - ОткрытьВложениеКомандаРасширеннаяПодсказка - 457 - Label - true - true - - Left - - - Form.Command.ОткрытьВложение - Normal - Auto - true - true - UserCmds - Auto - - - СохранитьВложениеКоманда - 458 - true - true - - true - - false - - СохранитьВложениеКомандаРасширеннаяПодсказка - 459 - Label - true - true - - Left - - - 0 - Normal - Auto - true - true - UserCmds - Auto - - - ГруппаУдалить - 464 - - УдалитьВложениеКоманда - 460 - - <key>ru</key> - <value>Удалить вложение</value> - - true - true - - true - - false - - УдалитьВложениеКомандаРасширеннаяПодсказка - 461 - Label - true - true - - Left - - - Form.Item.Вложения.StandardCommand.Delete - Normal - Auto - true - true - UserCmds - Auto - - true - true - - true - - - <key>ru</key> - <value>Удалить</value> - - - ГруппаУдалитьРасширеннаяПодсказка - 465 - Label - true - true - - Left - - - - - - СвойстваВложения - 462 - true - true - - true - - - СвойстваВложенияРасширеннаяПодсказка - 463 - Label - true - true - - Left - - - Form.Command.СвойстваВложения - Normal - Auto - true - true - UserCmds - Auto - - true - true - - true - - - <key>ru</key> - <value>Команды вложений</value> - - - КомандыВложенийРасширеннаяПодсказка - 451 - Label - true - true - - Left - - - CommandBar - - Right - - - - Предмет - 160 - true - true - - true - - - Предмет - - Top - - ПредметExtendedTooltip - 310 - Label - true - true - - Left - - - - ПредметКонтекстноеМеню - 161 - true - - InputField - Enter - true - Left - true - - - StartChoice - ПредметНачалоВыбора - - 32 - true - false - false - true - ShowInInputField - false - true - true - true - Normal - - - - Ответственный - 165 - true - true - - true - - - Объект.Ответственный - - Top - - ОтветственныйExtendedTooltip - 321 - Label - true - true - - Left - - - - ОтветственныйКонтекстноеМеню - 166 - true - - InputField - Enter - true - Left - true - - 32 - true - false - true - true - true - Normal - - - - ОтправительПредставление - 136 - - <key>ru</key> - <value>От</value> - - true - true - - true - - - Объект.ОтправительПредставление - - Top - - ОтправительПредставлениеExtendedTooltip - 305 - Label - true - true - - Left - - - - ОтправительПредставлениеКонтекстноеМеню - 137 - true - - InputField - Enter - true - Left - true - - - ChoiceProcessing - ПредставлениеОтправителяОбработкаВыбора - - 32 - true - true - true - true - true - Normal - - - - НаКонтроле - 245 - - <key>ru</key> - <value>На контроле</value> - - true - true - - true - - - НаКонтроле - - Right - - OnChange - НаКонтролеПриИзменении - - - НаКонтролеExtendedTooltip - 323 - Label - true - true - - Left - - - - НаКонтролеКонтекстноеМеню - 246 - true - - CheckBoxField - Enter - true - Left - true - - - - РассмотретьПосле - 167 - true - true - - true - - - РассмотретьПосле - - Top - - РассмотретьПослеExtendedTooltip - 324 - Label - true - true - - Left - - - - РассмотретьПослеКонтекстноеМеню - 168 - true - - InputField - Enter - true - Left - true - - - ChoiceProcessing - РассмотретьПослеОбработкаВыбора - - true - true - false - true - true - true - true - Normal - - - - Важность - 264 - true - true - - true - - - Объект.Важность - - Top - - ВажностьExtendedTooltip - 320 - Label - true - true - - Left - - - - ВажностьКонтекстноеМеню - 265 - true - - InputField - Enter - true - Left - true - - 17 - true - true - false - true - true - true - Normal - - - - ГруппаДатаОтправкиАктуальность - 368 - - ДатаКогдаОтправить - 370 - - <key>ru</key> - <value>Когда отправить</value> - - true - true - - true - - - Объект.ДатаКогдаОтправить - - Top - - ДатаКогдаОтправитьРасширеннаяПодсказка - 372 - Label - true - true - - Left - - - - ДатаКогдаОтправитьКонтекстноеМеню - 371 - true - - InputField - Enter - true - Left - true - - 15 - true - true - false - true - true - true - true - Normal - - - - ДатаАктуальностиОтправки - 373 - - <key>ru</key> - <value>Не отправлять после</value> - - true - true - - true - - - Объект.ДатаАктуальностиОтправки - - Top - - ДатаАктуальностиОтправкиРасширеннаяПодсказка - 375 - Label - true - true - - Left - - - - ДатаАктуальностиОтправкиКонтекстноеМеню - 374 - true - - InputField - Enter - true - Left - true - - 15 - true - true - false - true - true - true - true - Normal - - - true - true - - true - - - <key>ru</key> - <value>Дата отправки актуальность</value> - - - ГруппаДатаОтправкиАктуальностьРасширеннаяПодсказка - 369 - Label - true - true - - Left - - - UsualGroup - - HorizontalIfPossible - Auto - true - true - Auto - Auto - - - - ГруппаДатаОтправленияНомер - 393 - - Номер - 276 - true - - true - - - Объект.Number - - - НомерExtendedTooltip - 356 - Label - true - true - - Left - - - - НомерКонтекстноеМеню - 277 - true - - LabelField - Bottom - Bottom - Enter - true - Left - true - - 9 - true - true - false - - - - ДатаОтправления - 278 - true - true - - true - - - Объект.ДатаОтправления - - - ДатаОтправленияExtendedTooltip - 357 - Label - true - true - - Left - - - - ДатаОтправленияКонтекстноеМеню - 279 - true - - LabelField - true - Bottom - Bottom - Enter - true - Left - true - - 11 - true - true - - ru - ДФ='дд.ММ.гггг Ч:мм' - - - - true - true - - true - - - <key>ru</key> - <value>Дата отправления номер</value> - - true - - ГруппаДатаОтправленияНомерРасширеннаяПодсказка - 394 - Label - true - true - - Left - - - UsualGroup - - Vertical - Bottom - Auto - true - true - Auto - Auto - - - true - true - - true - - - <key>ru</key> - <value>Право</value> - - - ГруппаПравоРасширеннаяПодсказка - 364 - Label - true - true - - Left - - - UsualGroup - - Vertical - Auto - true - true - Auto - Auto - -
    - - ФормаКоманднаяПанель - -1 + КоманднаяПанель + 482 Отправить 135 @@ -3139,6 +614,2702 @@ UserCmds Auto + true + true + + true + + + <key>ru</key> + <value>Командная панель</value> + + + Группа2РасширеннаяПодсказка + 483 + Label + true + true + + Left + + + CommandBar + + Left + + + + ВсеЭлементы + 480 + + ГруппаЛево + 361 + + СписокПолучателей + 399 + + <key>ru</key> + <value>Список получателей</value> + + true + true + + true + + + СписокПолучателей + + None + + СписокПолучателейВариантОтправки + 412 + true + true + + true + + + СписокПолучателей.ВариантОтправки + + + СписокПолучателейВариантОтправкиРасширеннаяПодсказка + 414 + Label + true + true + + Left + + + + СписокПолучателейВариантОтправкиКонтекстноеМеню + 413 + true + + InputField + Auto + true + Left + true + + 3 + true + true + true + true + OnActivate + true + + + ru + Кому: + + + Кому: + + + + + ru + Копия: + + + Копия: + + + + + ru + Скрытая копия: + + + Скрытая копия: + + + + + ru + Обратный адрес: + + + Обратный адрес: + + + Normal + + + + СписокПолучателейПредставление + 418 + true + true + + true + + + СписокПолучателей.Представление + + true + + СписокПолучателейПредставлениеРасширеннаяПодсказка + 420 + Label + true + true + + Left + + + + СписокПолучателейПредставлениеКонтекстноеМеню + 419 + true + + InputField + Auto + true + Left + true + + + AutoComplete + СписокПолучателейПредставлениеАвтоПодбор + + + StartChoice + СписокПолучателейПредставлениеНачалоВыбора + + + ChoiceProcessing + СписокПолучателейПредставлениеОбработкаВыбора + + true + true + true + true + true + true + true + Normal + + + + СписокПолучателейКоманднаяПанель + 401 + Left + + + BeforeDeleteRow + СписокПолучателейПередУдалением + + + BeforeEditEnd + СписокПолучателейПередОкончаниемРедактирования + + + OnStartEdit + СписокПолучателейПриНачалеРедактирования + + + OnChange + СписокПолучателейПриИзменении + + + СписокПолучателейСтрокаПоиска + 403 + + СписокПолучателейСтрокаПоискаРасширеннаяПодсказка + 405 + Label + true + true + + Left + + + + СписокПолучателейСтрокаПоискаКонтекстноеМеню + 404 + true + + СписокПолучателей + + true + + + + СписокПолучателейСостояниеПросмотра + 406 + + СписокПолучателейСостояниеПросмотраРасширеннаяПодсказка + 408 + Label + true + true + + Left + + + + СписокПолучателейСостояниеПросмотраКонтекстноеМеню + 407 + true + + ViewStatusAddition + СписокПолучателей + + true + + + + СписокПолучателейУправлениеПоиском + 409 + + СписокПолучателейУправлениеПоискомРасширеннаяПодсказка + 411 + Label + true + true + + Left + + + + СписокПолучателейУправлениеПоискомКонтекстноеМеню + 410 + true + + SearchControlAddition + СписокПолучателей + + true + + + + СписокПолучателейРасширеннаяПодсказка + 402 + Label + true + true + + Left + + + + СписокПолучателейКонтекстноеМеню + 400 + true + + true + true + 4 + 5 + 4 + true + MultiRow + 1 + 1 + AutoUse + AutoUse + true + true + false + true + Auto + Auto + true + true + true + true + true + + + + СтраницыУказаныКонтакты + 255 + + СтраницаКонтактыЗаполнены + 256 + + ДекорацияПустая + 257 + true + true + + true + + + ДекорацияПустаяРасширеннаяПодсказка + 315 + Label + true + true + + Left + + + + ДекорацияПустаяКонтекстноеМеню + 258 + true + + Label + 10 + true + true + + Left + + + true + true + + true + + + <key>ru</key> + <value>Страница контакты заполнены</value> + + + СтраницаКонтактыЗаполненыExtendedTooltip + 314 + Label + true + true + + Left + + + Page + + HorizontalIfPossible + auto + false + + + + СтраницаКонтактыНеЗаполнены + 261 + + ГруппаКонтактыНеЗаполнены + 262 + + УточнитьКонтакты + 263 + true + true + + true + + + УточнитьКонтактыExtendedTooltip + 319 + Label + true + true + + Left + + + Hyperlink + Form.Command.УточнитьКонтакты + Normal + PictureAndText + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Контакты не заполнены</value> + + + ГруппаКонтактыНеЗаполненыExtendedTooltip + 318 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Страница контакты не заполнены</value> + + + СтраницаКонтактыНеЗаполненыExtendedTooltip + 317 + Label + true + true + + Left + + + Page + + HorizontalIfPossible + auto + false + + + true + true + + true + + + <key>ru</key> + <value>Страницы указаны контакты</value> + + Right + + СтраницыУказаныКонтактыExtendedTooltip + 313 + Label + true + true + + Left + + + Pages + + Auto + + + + Тема + 29 + true + true + + true + + + Объект.Тема + + None + + ТемаExtendedTooltip + 327 + Label + true + true + + Left + + + + ТемаКонтекстноеМеню + 30 + true + + InputField + Enter + true + Left + true + + 40 + true + true + true + true + Normal + + ru + Тема + + + + + СтраницыОписаниеДополнительно + 248 + + СтраницаОписание + 249 + + СтраницаПисьмо + 213 + + СтраницыТекстПисьма + 197 + + СтраницаОбычныйТекст + 198 + + ТекстПисьма + 25 + true + true + + true + + + ТекстПисьма + + None + + ТекстПисьмаExtendedTooltip + 349 + Label + true + true + + Left + + + + ТекстПисьмаКонтекстноеМеню + 26 + + ТекстПисьмаКонтекстноеМенюВставитьВнешнююСсылкуНаОбъектИнформационнойБазы + 385 + true + true + + true + + + ТекстПисьмаКонтекстноеМенюВставитьВнешнююСсылкуНаОбъектИнформационнойБазыРасширеннаяПодсказка + 386 + Label + true + true + + Left + + + Form.Command.ВставитьВнешнююСсылкуНаОбъектИнформационнойБазы + Normal + Auto + true + true + UserCmds + Auto + + + ТекстПисьмаКонтекстноеМенюГруппа + 470 + + ФормаHTMLКонтекстноеМеню + 435 + true + true + + true + + + ФормаHTMLКонтекстноеМенюРасширеннаяПодсказка + 436 + Label + true + true + + Left + + + Form.Command.HTML + Normal + Auto + true + true + UserCmds + Auto + + + ФормаОбычныйТекстКонтекстноеМеню + 437 + true + true + + true + + + ФормаОбычныйТекстКонтекстноеМенюРасширеннаяПодсказка + 438 + Label + true + true + + Left + + + Form.Command.ОбычныйТекст + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Формат сообщения</value> + + + ТекстПисьмаКонтекстноеМенюГруппаРасширеннаяПодсказка + 471 + Label + true + true + + Left + + + Popup + + Auto + Normal + + + true + + HTMLDocumentField + Enter + true + Left + true + + + OnClick + ТекстПисьмаПриНажатии + + 50 + true + 7 + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Страница обычный текст</value> + + + СтраницаОбычныйТекстExtendedTooltip + 348 + Label + true + true + + Left + + + Page + + Vertical + auto + false + + + + СтраницаФорматированныйДокумент + 199 + + ГруппаКоманднаяПанельФорматированногоДокумента + 202 + true + true + + true + + + <key>ru</key> + <value>Командная панель форматированного документа</value> + + + ГруппаКоманднаяПанельФорматированногоДокументаExtendedTooltip + 351 + Label + true + true + + Left + + + CommandBar + + Left + Item.ТекстПисьмаФорматированныйДокумент + + + + ТекстПисьмаФорматированныйДокумент + 200 + true + true + + true + + + ТекстПисьмаФорматированныйДокумент + + None + + ТекстПисьмаФорматированныйДокументExtendedTooltip + 352 + Label + true + true + + Left + + + + ТекстПисьмаФорматированныйДокументКонтекстноеМеню + 201 + + ВставитьВнешнююСсылкуНаОбъектИнформационнойБазы + 387 + true + true + + true + + + ВставитьВнешнююСсылкуНаОбъектИнформационнойБазыРасширеннаяПодсказка + 388 + Label + true + true + + Left + + + Form.Command.ВставитьВнешнююСсылкуНаОбъектИнформационнойБазы + Normal + Auto + true + true + UserCmds + Auto + + + ФорматСообщенияКонтекстноеМенюГруппа + 468 + + ФормаОбычныйТекстКонтекстноеМеню1 + 443 + true + true + + true + + + ФормаОбычныйТекстКонтекстноеМеню1РасширеннаяПодсказка + 444 + Label + true + true + + Left + + + Form.Command.ОбычныйТекст + Normal + Auto + true + true + UserCmds + Auto + + + ФормаHTMLКонтекстноеМеню1 + 441 + true + true + + true + + + ФормаHTMLКонтекстноеМеню1РасширеннаяПодсказка + 442 + Label + true + true + + Left + + + Form.Command.HTML + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Формат сообщения</value> + + + ФорматСообщенияКонтекстноеМенюГруппаРасширеннаяПодсказка + 469 + Label + true + true + + Left + + + Popup + + Auto + Normal + + + true + + FormattedDocumentField + Enter + true + Left + true + + 50 + true + 7 + true + true + + + true + true + + true + + + <key>ru</key> + <value>Страница форматированный документ</value> + + + СтраницаФорматированныйДокументExtendedTooltip + 350 + Label + true + true + + Left + + + Page + + Vertical + auto + false + + + true + true + + true + + + <key>ru</key> + <value>Страницы текст письма</value> + + + СтраницыТекстПисьмаExtendedTooltip + 347 + Label + true + true + + Left + + + Pages + + Auto + + + + ГруппаВходящее + 208 + + ПредупреждениеБезопасности + 423 + + КартинкаПредупреждение + 425 + + <key>ru</key> + <value>Картинка предупреждение</value> + + true + true + + true + + + КартинкаПредупреждениеРасширеннаяПодсказка + 427 + Label + true + true + + Left + + + + КартинкаПредупреждениеКонтекстноеМеню + 426 + true + + true + true + + + CommonPicture.Предупреждение + + AsFileRef + + + + ПредупреждениеОНебезопасномСодержимом + 428 + + <key>ru</key> + <value>В целях безопасности некоторые элементы письма отключены, письмо может отображаться некорректно. <link ВключитьНебезопасноеСодержимое>Отобразить небезопасное содержимое</></value> + + true + true + + true + + Button + + ПредупреждениеОНебезопасномСодержимомРасширеннаяПодсказка + 430 + + <key>ru</key> + <value>Входящие письма могут содержать элементы, позволяющие отправителю скрытно отслеживать действия с письмом, в частности, время просмотра и некоторые параметры устройства, на котором письмо было прочитано. К небезопасным элементам относятся, например, загружаемые из Интернета картинки письма или встроенные скрипты. В целях безопасности такие элементы автоматически отключаются при просмотре письма.</value> + + Label + true + true + + Left + + + + ПредупреждениеОНебезопасномСодержимомКонтекстноеМеню + 429 + true + + true + Label + 33 + true + true + + + URLProcessing + ПредупреждениеОНебезопасномСодержимомОбработкаНавигационнойСсылки + + Left + + + true + true + + true + + + <key>ru</key> + <value>Предупреждение безопасности</value> + + + ПредупреждениеБезопасностиРасширеннаяПодсказка + 424 + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + Auto + true + true + Auto + Auto + + + + ТекстВходящегоПисьма + 203 + + <key>ru</key> + <value>Входящее сообщение</value> + + true + true + + true + + + ТекстВходящегоПисьма + + None + + ТекстВходящегоПисьмаExtendedTooltip + 354 + Label + true + true + + Left + + + + ТекстВходящегоПисьмаКонтекстноеМеню + 204 + true + + HTMLDocumentField + true + Enter + true + Left + true + + + OnClick + ТекстВходящегоПисьмаПриНажатии + + 50 + true + 7 + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Входящее</value> + + + ГруппаВходящееExtendedTooltip + 353 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + Auto + Auto + + + + ГруппаОтправленоНомер + 275 + true + true + + true + + + <key>ru</key> + <value>Отправлено номер</value> + + + ГруппаОтправленоНомерExtendedTooltip + 355 + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Auto + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Письмо</value> + + + СтраницаПисьмоExtendedTooltip + 346 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Письмо</value> + + + СтраницаОписаниеExtendedTooltip + 345 + Label + true + true + + Left + + + Page + + Vertical + auto + false + + + + СтраницаДополнительныеРеквизиты + 252 + true + true + + true + + + <key>ru</key> + <value>Дополнительно</value> + + + СтраницаДополнительныеРеквизитыExtendedTooltip + 358 + Label + true + true + + Left + + + Page + + Vertical + auto + false + + + + СтраницаКомментарий + 283 + + Комментарий + 284 + true + true + + true + + + Объект.Комментарий + + None + + КомментарийExtendedTooltip + 360 + Label + true + true + + Left + + + + КомментарийКонтекстноеМеню + 285 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + Normal + + + true + true + + true + + + <key>ru</key> + <value>Комментарий</value> + + + СтраницаКомментарийExtendedTooltip + 359 + Label + true + true + + Left + + + Page + + Vertical + auto + false + + + true + true + + true + + + <key>ru</key> + <value>Страницы описание дополнительно</value> + + + СтраницыОписаниеДополнительноExtendedTooltip + 344 + Label + true + true + + Left + + + Pages + + + OnCurrentPageChange + СтраницыОписаниеДополнительноПриСменеСтраницы + + TabsOnTop + Auto + + + true + true + + true + + + <key>ru</key> + <value>Лево</value> + + + ГруппаЛевоРасширеннаяПодсказка + 362 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + Auto + Auto + + + + ГруппаПраво + 363 + + Вложения + 138 + + <key>ru</key> + <value>Вложения</value> + + true + true + + true + + + Вложения + + false + None + + Группа + 149 + + ИндексКартинки + 145 + true + true + + true + + + Вложения.ИндексКартинки + + None + + ИндексКартинкиExtendedTooltip + 339 + Label + true + true + + Left + + + + ИндексКартинкиКонтекстноеМеню + 146 + true + + PictureField + Enter + Left + true + + 2 + true + true + true + + CommonPicture.КоллекцияПиктограммФайлов + + + 1 + + + + + ИмяФайла + 143 + true + true + + true + + + Вложения.ИмяФайла + + + ИмяФайлаExtendedTooltip + 340 + Label + true + true + + Left + + + + ИмяФайлаКонтекстноеМеню + 144 + true + + InputField + Enter + Left + true + + true + true + true + true + Normal + + + + РазмерПредставление + 236 + true + true + + true + + + Вложения.РазмерПредставление + + + РазмерПредставлениеExtendedTooltip + 341 + Label + true + true + + Left + + + + РазмерПредставлениеКонтекстноеМеню + 237 + true + + InputField + true + Auto + Left + true + + 5 + true + true + true + true + true + Normal + + + true + true + + true + + + <key>ru</key> + <value>Вложения</value> + + + ГруппаExtendedTooltip + 338 + Label + true + true + + Left + + + ColumnGroup + + InCell + auto + true + true + + + None + + ВложенияКоманднаяПанель + 140 + Left + true + + + DragCheck + ВложенияПроверкаПеретаскивания + + + Selection + ВложенияВыбор + + + BeforeAddRow + ВложенияПередНачаломДобавления + + + BeforeDeleteRow + ВложенияПередУдалением + + + Drag + ВложенияПеретаскивание + + + OnActivateCell + ВложенияПриАктивизацииЯчейки + + + ВложенияСтрокаПоиска + 376 + + ВложенияСтрокаПоискаРасширеннаяПодсказка + 378 + Label + true + true + + Left + + + + ВложенияСтрокаПоискаКонтекстноеМеню + 377 + true + + Вложения + + true + + + + ВложенияСостояниеПросмотра + 379 + + ВложенияСостояниеПросмотраРасширеннаяПодсказка + 381 + Label + true + true + + Left + + + + ВложенияСостояниеПросмотраКонтекстноеМеню + 380 + true + + ViewStatusAddition + Вложения + + true + + + + ВложенияУправлениеПоиском + 382 + + ВложенияУправлениеПоискомРасширеннаяПодсказка + 384 + Label + true + true + + Left + + + + ВложенияУправлениеПоискомКонтекстноеМеню + 383 + true + + SearchControlAddition + Вложения + + true + + + + ВложенияExtendedTooltip + 336 + Label + true + true + + Left + + + + ВложенияКонтекстноеМеню + 139 + + ДобавитьВложение + 150 + true + true + + true + + false + + ДобавитьВложениеExtendedTooltip + 331 + Label + true + true + + Left + + + Form.Command.ДобавитьВложение + Normal + Auto + true + true + UserCmds + Auto + + + ДобавитьПисьмо + 397 + true + true + + true + + + ДобавитьПисьмоРасширеннаяПодсказка + 398 + Label + true + true + + Left + + + Form.Command.ДобавитьПисьмо + Normal + Auto + true + true + UserCmds + Auto + + + ОткрытьВложение + 152 + true + true + + true + + false + + ОткрытьВложениеExtendedTooltip + 332 + Label + true + true + + Left + + + Form.Command.ОткрытьВложение + Normal + Auto + true + true + UserCmds + Auto + + + СохранитьВложение + 153 + true + true + + true + + false + + СохранитьВложениеExtendedTooltip + 333 + Label + true + true + + Left + + + 0 + Normal + Auto + true + true + UserCmds + Auto + + + ВложенияКонтекстноеМенюГруппа + 466 + + УдалитьВложение + 187 + + <key>ru</key> + <value>Удалить вложение</value> + + true + true + + true + + false + + УдалитьВложениеExtendedTooltip + 334 + Label + true + true + + Left + + + Form.Item.Вложения.StandardCommand.Delete + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Вложения контекстное меню группа</value> + + + ВложенияКонтекстноеМенюГруппаРасширеннаяПодсказка + 467 + Label + true + true + + Left + + + + + + ВложенияКонтекстноеМенюСвойстваВложения + 280 + true + true + + true + + + ВложенияКонтекстноеМенюСвойстваВложенияExtendedTooltip + 335 + Label + true + true + + Left + + + Form.Command.СвойстваВложения + Normal + Auto + true + true + UserCmds + Auto + + + true + true + 32 + true + 2 + true + MultiRow + Row +
    true
    + 1 + 1 + AutoUse + AutoUse + true + true + false + false + false + true + Auto + Auto + true + true + true + + Вложения.ИндексКартинки + + + CommonPicture.КоллекцияПиктограммФайлов + + true + +
    + + КомандыВложений + 450 + + ДобавитьВложениеКоманда + 452 + true + true + + true + + false + + ДобавитьВложениеКомандаРасширеннаяПодсказка + 453 + Label + true + true + + Left + + + Form.Command.ДобавитьВложение + Normal + Auto + true + true + UserCmds + Auto + + + ДобавитьПисьмоКоманда + 454 + true + true + + true + + + ДобавитьПисьмоКомандаРасширеннаяПодсказка + 455 + Label + true + true + + Left + + + Form.Command.ДобавитьПисьмо + Normal + Auto + true + true + UserCmds + Auto + + + ОткрытьВложениеКоманда + 456 + true + true + + true + + false + + ОткрытьВложениеКомандаРасширеннаяПодсказка + 457 + Label + true + true + + Left + + + Form.Command.ОткрытьВложение + Normal + Auto + true + true + UserCmds + Auto + + + СохранитьВложениеКоманда + 458 + true + true + + true + + false + + СохранитьВложениеКомандаРасширеннаяПодсказка + 459 + Label + true + true + + Left + + + 0 + Normal + Auto + true + true + UserCmds + Auto + + + ГруппаУдалить + 464 + + УдалитьВложениеКоманда + 460 + + <key>ru</key> + <value>Удалить вложение</value> + + true + true + + true + + false + + УдалитьВложениеКомандаРасширеннаяПодсказка + 461 + Label + true + true + + Left + + + Form.Item.Вложения.StandardCommand.Delete + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Удалить</value> + + + ГруппаУдалитьРасширеннаяПодсказка + 465 + Label + true + true + + Left + + + + + + СвойстваВложения + 462 + true + true + + true + + + СвойстваВложенияРасширеннаяПодсказка + 463 + Label + true + true + + Left + + + Form.Command.СвойстваВложения + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Команды вложений</value> + + + КомандыВложенийРасширеннаяПодсказка + 451 + Label + true + true + + Left + + + CommandBar + + Right + + + + Предмет + 160 + true + true + + true + + + Предмет + + Top + + ПредметExtendedTooltip + 310 + Label + true + true + + Left + + + + ПредметКонтекстноеМеню + 161 + true + + InputField + Enter + true + Left + true + + + StartChoice + ПредметНачалоВыбора + + 32 + true + false + false + true + ShowInInputField + false + true + true + true + Normal + + + + Ответственный + 165 + true + true + + true + + + Объект.Ответственный + + Top + + ОтветственныйExtendedTooltip + 321 + Label + true + true + + Left + + + + ОтветственныйКонтекстноеМеню + 166 + true + + InputField + Enter + true + Left + true + + 32 + true + false + true + true + true + Normal + + + + ОтправительПредставление + 136 + + <key>ru</key> + <value>От</value> + + true + true + + true + + + Объект.ОтправительПредставление + + Top + + ОтправительПредставлениеExtendedTooltip + 305 + Label + true + true + + Left + + + + ОтправительПредставлениеКонтекстноеМеню + 137 + true + + InputField + Enter + true + Left + true + + + ChoiceProcessing + ПредставлениеОтправителяОбработкаВыбора + + 32 + true + true + true + true + true + Normal + + + + НаКонтроле + 245 + + <key>ru</key> + <value>На контроле</value> + + true + true + + true + + + НаКонтроле + + Right + + OnChange + НаКонтролеПриИзменении + + + НаКонтролеExtendedTooltip + 323 + Label + true + true + + Left + + + + НаКонтролеКонтекстноеМеню + 246 + true + + CheckBoxField + Enter + true + Left + true + + + + РассмотретьПосле + 167 + true + true + + true + + + РассмотретьПосле + + Top + + РассмотретьПослеExtendedTooltip + 324 + Label + true + true + + Left + + + + РассмотретьПослеКонтекстноеМеню + 168 + true + + InputField + Enter + true + Left + true + + + ChoiceProcessing + РассмотретьПослеОбработкаВыбора + + true + true + false + true + true + true + true + Normal + + + + Важность + 264 + true + true + + true + + + Объект.Важность + + Top + + ВажностьExtendedTooltip + 320 + Label + true + true + + Left + + + + ВажностьКонтекстноеМеню + 265 + true + + InputField + Enter + true + Left + true + + 17 + true + true + false + true + true + true + Normal + + + + ГруппаДатаОтправкиАктуальность + 368 + + ДатаКогдаОтправить + 370 + + <key>ru</key> + <value>Когда отправить</value> + + true + true + + true + + + Объект.ДатаКогдаОтправить + + Top + + ДатаКогдаОтправитьРасширеннаяПодсказка + 372 + Label + true + true + + Left + + + + ДатаКогдаОтправитьКонтекстноеМеню + 371 + true + + InputField + Enter + true + Left + true + + 15 + true + true + false + true + true + true + true + Normal + + + + ДатаАктуальностиОтправки + 373 + + <key>ru</key> + <value>Не отправлять после</value> + + true + true + + true + + + Объект.ДатаАктуальностиОтправки + + Top + + ДатаАктуальностиОтправкиРасширеннаяПодсказка + 375 + Label + true + true + + Left + + + + ДатаАктуальностиОтправкиКонтекстноеМеню + 374 + true + + InputField + Enter + true + Left + true + + 15 + true + true + false + true + true + true + true + Normal + + + true + true + + true + + + <key>ru</key> + <value>Дата отправки актуальность</value> + + + ГруппаДатаОтправкиАктуальностьРасширеннаяПодсказка + 369 + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Auto + true + true + Auto + Auto + + + + ГруппаДатаОтправленияНомер + 393 + + Номер + 276 + true + + true + + + Объект.Number + + + НомерExtendedTooltip + 356 + Label + true + true + + Left + + + + НомерКонтекстноеМеню + 277 + true + + LabelField + Bottom + Bottom + Enter + true + Left + true + + 9 + true + true + false + + + + ДатаОтправления + 278 + true + true + + true + + + Объект.ДатаОтправления + + + ДатаОтправленияExtendedTooltip + 357 + Label + true + true + + Left + + + + ДатаОтправленияКонтекстноеМеню + 279 + true + + LabelField + true + Bottom + Bottom + Enter + true + Left + true + + 11 + true + true + + ru + ДФ='дд.ММ.гггг Ч:мм' + + + + true + true + + true + + + <key>ru</key> + <value>Дата отправления номер</value> + + true + + ГруппаДатаОтправленияНомерРасширеннаяПодсказка + 394 + Label + true + true + + Left + + + UsualGroup + + Vertical + Bottom + Auto + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Право</value> + + + ГруппаПравоРасширеннаяПодсказка + 364 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + Auto + Auto + +
    + true + true + + true + + + <key>ru</key> + <value>Все элементы</value> + + + ВсеЭлементыРасширеннаяПодсказка + 481 + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Auto + true + true + Auto + Auto + +
    + None + false + + ФормаКоманднаяПанель + -1 Left @@ -3169,7 +3340,7 @@ true true true - HorizontalIfPossible + Vertical LeftWide true true diff --git a/SSL/src/Documents/ЭлектронноеПисьмоИсходящее/Forms/ФормаДокумента/Module.bsl b/SSL/src/Documents/ЭлектронноеПисьмоИсходящее/Forms/ФормаДокумента/Module.bsl index d37081c09..869f99222 100644 --- a/SSL/src/Documents/ЭлектронноеПисьмоИсходящее/Forms/ФормаДокумента/Module.bsl +++ b/SSL/src/Documents/ЭлектронноеПисьмоИсходящее/Forms/ФормаДокумента/Module.bsl @@ -56,6 +56,8 @@ КонецЕсли; // Конец СтандартныеПодсистемы.ПодключаемыеКоманды + ПроверитьСостояниеОтправкиПисемНаСервере(); + КонецПроцедуры &НаКлиенте @@ -76,6 +78,8 @@ // Конец СтандартныеПодсистемы.ПодключаемыеКоманды УправлениеДоступностью(); + + ПодключитьОбработчикОжидания("ПроверитьСостояниеОтправкиПисем", 60, Истина); КонецПроцедуры @@ -537,13 +541,9 @@ &НаКлиенте Процедура ПослеЗаписи(ПараметрыЗаписи) - ВзаимодействияКлиент.ВзаимодействиеПредметПослеЗаписи(ЭтотОбъект, - Объект, - ПараметрыЗаписи, - "ЭлектронноеПисьмоИсходящее"); + ВзаимодействияКлиент.ВзаимодействиеПредметПослеЗаписи(ЭтотОбъект, Объект, + ПараметрыЗаписи, "ЭлектронноеПисьмоИсходящее"); - ОбновитьОтображениеДанных(); - КонецПроцедуры &НаСервере @@ -632,6 +632,13 @@ КонецЕсли; КонецПроцедуры +&НаКлиенте +Процедура ПредупреждениеОНеотправленныхПисьмахНадписьОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка) + + ВзаимодействияКлиент.ОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка); + +КонецПроцедуры + #КонецОбласти #Область ОбработчикиСобытийЭлементовТаблицыФормыВложения @@ -762,7 +769,7 @@ Если НайденныеСтроки.Количество() > 1 Тогда ШаблонТекстаОшибки = НСтр("ru = 'Адрес %1 уже есть в списке.'"); ОбщегоНазначенияКлиент.СообщитьПользователю(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонТекстаОшибки, Адрес) - ,, "СписокПолучателей[" + Строка(СписокПолучателей.Индекс(НайденныеСтроки[0])) + "].Представление"); + ,, "СписокПолучателей[" + Формат(СписокПолучателей.Индекс(НайденныеСтроки[0]), "ЧГ=0") + "].Представление"); Отказ = Истина; Возврат; КонецЕсли; @@ -1035,13 +1042,14 @@ Если Не ПустаяСтрока(СтруктураАдреса.ОписаниеОшибки) Тогда Отказ = Истина; - ОбщегоНазначенияКлиент.СообщитьПользователю(СтруктураАдреса.ОписаниеОшибки, , "СписокПолучателей[" + Строка(СписокПолучателей.Индекс(СтрокаАдреса)) + "].Представление"); + ОбщегоНазначенияКлиент.СообщитьПользователю(СтруктураАдреса.ОписаниеОшибки,, + "СписокПолучателей[" + Формат(СписокПолучателей.Индекс(СтрокаАдреса), "ЧГ=0") + "].Представление"); КонецЕсли; Если АдресаПоПредставлению.Получить(СтруктураАдреса.Адрес) <> Неопределено Тогда Отказ = Истина; ОбщегоНазначенияКлиент.СообщитьПользователю(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонТекстаОшибки, - СтруктураАдреса.Адрес),, "СписокПолучателей[" + Строка(СписокПолучателей.Индекс(СтрокаАдреса)) + "].Представление"); + СтруктураАдреса.Адрес),, "СписокПолучателей[" + Формат(СписокПолучателей.Индекс(СтрокаАдреса), "ЧГ=0") + "].Представление"); Иначе АдресаПоПредставлению.Вставить(СтруктураАдреса.Адрес, СтрокаАдреса.ПолучитьИдентификатор()); КонецЕсли; @@ -1054,13 +1062,14 @@ Если Не ПустаяСтрока(СтруктураАдреса.ОписаниеОшибки) Тогда Отказ = Истина; - ОбщегоНазначенияКлиент.СообщитьПользователю(СтруктураАдреса.ОписаниеОшибки, , "СписокПолучателей[" + Строка(СписокПолучателей.Индекс(СтрокаАдреса)) + "].Представление"); + ОбщегоНазначенияКлиент.СообщитьПользователю(СтруктураАдреса.ОписаниеОшибки,, + "СписокПолучателей[" + Формат(СписокПолучателей.Индекс(СтрокаАдреса), "ЧГ=0") + "].Представление"); КонецЕсли; Если АдресаПоЗначению.Получить(СтруктураАдреса.Адрес) <> Неопределено Тогда Отказ = Истина; ОбщегоНазначенияКлиент.СообщитьПользователю(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонТекстаОшибки, - СтруктураАдреса.Адрес),, "СписокПолучателей[" + Строка(СписокПолучателей.Индекс(СтрокаАдреса)) + "].Представление"); + СтруктураАдреса.Адрес),, "СписокПолучателей[" + Формат(СписокПолучателей.Индекс(СтрокаАдреса), "ЧГ=0") + "].Представление"); Иначе АдресаПоЗначению.Вставить(СтруктураАдреса.Адрес, СтрокаАдреса.ПолучитьИдентификатор()); КонецЕсли; @@ -1073,12 +1082,12 @@ Если НЕ Отказ Тогда Для каждого АдресПоЗначению Из АдресаПоЗначению Цикл - Если АдресаПоПредставлению.Получить(АдресПоЗначению.Ключ) <> Неопределено - И АдресаПоПредставлению.Получить(АдресПоЗначению.Ключ) <> АдресПоЗначению.Значение Тогда + Если АдресаПоПредставлению[АдресПоЗначению.Ключ] <> Неопределено + И АдресаПоПредставлению[АдресПоЗначению.Ключ] <> АдресПоЗначению.Значение Тогда Отказ = Истина; Индекс = СписокПолучателей.Индекс(СписокПолучателей.НайтиПоИдентификатору(АдресПоЗначению.Значение)); ОбщегоНазначенияКлиент.СообщитьПользователю(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонТекстаОшибки, - АдресПоЗначению.Ключ),, "СписокПолучателей[" + Строка(Индекс) + "].Представление"); + АдресПоЗначению.Ключ),, "СписокПолучателей[" + Формат(Индекс, "ЧГ=0") + "].Представление"); КонецЕсли; КонецЦикла; КонецЕсли; @@ -1323,7 +1332,6 @@ Если ТекущиеДанные <> Неопределено Тогда Индекс = Вложения.Индекс(ТекущиеДанные); Вложения.Удалить(Индекс); - ОбновитьОтображениеДанных(); КонецЕсли; КонецПроцедуры @@ -1545,7 +1553,7 @@ // // Параметры: // Размер - Число - размер файла. -// ДополнительныеПараметры - Структура - содержит: +// ДополнительныеПараметры - Структура: // * СтрокаТаблицыВложений - СтрокаТаблицыЗначений - содержит: // ** Размер - Число - размер файла. // @@ -1717,6 +1725,7 @@ // Определяет способ редактирования письма и // отображает текст письма согласно способу редактирования. +// &НаСервере Процедура ОпределитьСпособРедактированияПисьма() @@ -2117,11 +2126,7 @@ Иначе - ТекстПисьмаФорматированныйДокумент.Добавить(ТекстПисьма); - Объект.Текст = ""; - Объект.ТипТекста = ПредопределенноеЗначение("Перечисление.ТипыТекстовЭлектронныхПисем.HTML"); - Элементы.СтраницыТекстПисьма.ТекущаяСтраница = Элементы.СтраницаФорматированныйДокумент; - Элементы.ФорматСообщения.Заголовок = ФорматСообщения; + ПриИзмененииФорматаПодписиНаHTMLНаСервере(Объект.УчетнаяЗапись); КонецЕсли; @@ -2403,46 +2408,27 @@ Результат.Вставить("ТекстСообщения", ""); Результат.Вставить("ПисьмоОтправлено", Ложь); - Попытка - - ПараметрыПисьма = Неопределено; - ИмяСервераИсходящейПочты = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.УчетнаяЗапись, "СерверИсходящейПочты", Истина); - Взаимодействия.ВыполнитьОтправкуПисьма(ПисьмоОбъект,, ПараметрыПисьма); - - Исключение - - ДанныеАнализаОшибочныхПолучателей = УправлениеЭлектроннойПочтой.РезультатАнализаОшибочныхПолучателей(ПисьмоОбъект, ПараметрыПисьма.ОшибочныеПолучатели); - ЭтоПроблемаОтвергнутыхСерверомПочтовыхАдресов = ДанныеАнализаОшибочныхПолучателей.ЭтоПроблемаОтвергнутыхСерверомПочтовыхАдресов; - ВсеАдресатыПисьмаОтвергнутыСервером = ДанныеАнализаОшибочныхПолучателей.ВсеАдресатыПисьмаОтвергнутыСервером; - ПредставлениеОшибочныхАдресатов = ДанныеАнализаОшибочныхПолучателей.ПредставлениеОшибочныхАдресатов; - - Если ЭтоПроблемаОтвергнутыхСерверомПочтовыхАдресов И Не ВсеАдресатыПисьмаОтвергнутыСервером Тогда - Результат.ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Следующие адресаты электронного письма не приняты почтовым сервером: - |%1. Письмо отправлено остальным адресатам.'", ОбщегоНазначения.КодОсновногоЯзыка()), - ПредставлениеОшибочныхАдресатов); - Иначе - - ШаблонСообщенияОбОшибке = НСтр("ru = 'Не удалось отправить письмо %1 по причине: - |%2'", ОбщегоНазначения.КодОсновногоЯзыка()); - ТекстСообщенияОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщенияОбОшибке, - Взаимодействия.ПредставлениеПисьма(ПисьмоОбъект.Тема, ПисьмоОбъект.Дата), - ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); - - ЗаписьЖурналаРегистрации(УправлениеЭлектроннойПочтой.СобытиеЖурналаРегистрации(), - УровеньЖурналаРегистрации.Ошибка, - ПисьмоОбъект.Ссылка.Метаданные(), - ПисьмоОбъект.Ссылка, - ТекстСообщенияОбОшибке); - + ПараметрыПисьма = Взаимодействия.ПараметрыПисьмаДляОтправки(ПисьмоОбъект); + Письмо = РаботаСПочтовымиСообщениями.ПодготовитьПисьмо(ПисьмоОбъект.УчетнаяЗапись, ПараметрыПисьма); + РезультатОтправки = РаботаСПочтовымиСообщениями.ОтправитьПисьмо(ПисьмоОбъект.УчетнаяЗапись, Письмо); + + ПараметрыОбработкиОшибки = УправлениеЭлектроннойПочтой.ПараметрыОбработкиОшибкиОтправки(); + ПараметрыОбработкиОшибки.ПисьмоОбъект = ПисьмоОбъект; + ПараметрыОбработкиОшибки.Ссылка = ПисьмоОбъект.Ссылка; + ПараметрыОбработкиОшибки.ПредставлениеПисьма = Взаимодействия.ПредставлениеПисьма(ПисьмоОбъект.Тема, ПисьмоОбъект.Дата); + ПараметрыОбработкиОшибки.КоличествоПопыток = 0; + ПараметрыОбработкиОшибки.ИнкрементироватьКоличествоПопыток = Ложь; + ПараметрыОбработкиОшибки.СообщатьПользователю = Истина; + + Если ЗначениеЗаполнено(РезультатОтправки.ОшибочныеПолучатели) Тогда + Результат = УправлениеЭлектроннойПочтой.ОбработатьОшибкуОтправкиПисьма(ПараметрыОбработкиОшибки, РезультатОтправки.ОшибочныеПолучатели); + Если Не Результат.ПисьмоОтправлено Тогда ЗначениеВРеквизитФормы(ПисьмоОбъект, "Объект"); - Результат.ТекстСообщения = КраткоеПредставлениеОшибки(ИнформацияОбОшибке()); Возврат Результат; КонецЕсли; - - КонецПопытки; + КонецЕсли; - ИдентификаторПисьма = ПараметрыПисьма.ИдентификаторСообщения; + ИдентификаторПисьма = РезультатОтправки.ИдентификаторПисьмаSMTP; Результат.ПисьмоОтправлено = Истина; НачатьТранзакцию(); @@ -2664,6 +2650,40 @@ КонецПроцедуры +&НаСервере +Процедура ПриИзмененииФорматаПодписиНаHTMLНаСервере(УчетнаяЗапись) + + ПараметрыУЗ = + Взаимодействия.ПолучитьПараметрыРаботыПользователяДляИсходящегоЭлектронногоПисьма( + УчетнаяЗапись, + ФорматСообщения, + ?(Объект.ВзаимодействиеОснование = Неопределено, Истина, Ложь)); + + Если ПараметрыУЗ.Подпись <> Неопределено Тогда + + ТекстПодпись = ПараметрыУЗ.Подпись.ПолучитьТекст(); + + Если СтрЧислоВхождений(ТекстПисьма, ТекстПодпись) > 0 Тогда + ТекстПисьма = СтрЗаменить(ТекстПисьма, ТекстПодпись, ""); + КонецЕсли; + + ТекстПисьмаФорматированныйДокумент.Добавить(ТекстПисьма); + + ДобавитьФорматированныйДокументКФорматированномуДокументу(ТекстПисьмаФорматированныйДокумент, ПараметрыУЗ.Подпись); + + Иначе + + ТекстПисьмаФорматированныйДокумент.Добавить(ТекстПисьма); + + КонецЕсли; + + Объект.Текст = ""; + Объект.ТипТекста = ПредопределенноеЗначение("Перечисление.ТипыТекстовЭлектронныхПисем.HTML"); + Элементы.СтраницыТекстПисьма.ТекущаяСтраница = Элементы.СтраницаФорматированныйДокумент; + Элементы.ФорматСообщения.Заголовок = ФорматСообщения; + +КонецПроцедуры + &НаСервере Процедура УдалитьЭлементыСтаройПодписи(ТекстПисьмаФорматированныйДокумент, СтараяПодпись) @@ -2954,4 +2974,21 @@ КонецПроцедуры // Конец СтандартныеПодсистемы.ПодключаемыеКоманды +&НаКлиенте +Процедура ПроверитьСостояниеОтправкиПисем() + + ПроверитьСостояниеОтправкиПисемНаСервере(); + Интервал = ?(Элементы.ПредупреждениеОНеотправленныхПисьмах.Видимость, 60, 600); + ПодключитьОбработчикОжидания("ПроверитьСостояниеОтправкиПисем", Интервал, Истина); + +КонецПроцедуры + +&НаСервере +Процедура ПроверитьСостояниеОтправкиПисемНаСервере() + + Элементы.ПредупреждениеОНеотправленныхПисьмах.Видимость = Взаимодействия.ОтправкаПисемПриостановлена(); + Элементы.ПредупреждениеОНеотправленныхПисьмахНадпись.Заголовок = Взаимодействия.ТекстПредупрежденияОПриостановкеОтправкиПисем(); + +КонецПроцедуры + #КонецОбласти diff --git a/SSL/src/Documents/ЭлектронноеПисьмоИсходящее/ManagerModule.bsl b/SSL/src/Documents/ЭлектронноеПисьмоИсходящее/ManagerModule.bsl index b727b2ef5..52f3462ef 100644 --- a/SSL/src/Documents/ЭлектронноеПисьмоИсходящее/ManagerModule.bsl +++ b/SSL/src/Documents/ЭлектронноеПисьмоИсходящее/ManagerModule.bsl @@ -18,7 +18,8 @@ // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: -// Массив Из Строка - +// Массив Из Строка +// Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт Результат = Новый Массив; diff --git a/SSL/src/Documents/ЭлектронноеПисьмоИсходящее/ObjectModule.bsl b/SSL/src/Documents/ЭлектронноеПисьмоИсходящее/ObjectModule.bsl index 2da7a917d..1ac21a846 100644 --- a/SSL/src/Documents/ЭлектронноеПисьмоИсходящее/ObjectModule.bsl +++ b/SSL/src/Documents/ЭлектронноеПисьмоИсходящее/ObjectModule.bsl @@ -313,7 +313,7 @@ // Заполняет параметры нового письма из письма основания. // // Параметры: -// Письмо - ДокументСсылка.ЭлектронноеПисьмоВходящее - +// Письмо - ДокументСсылка.ЭлектронноеПисьмоВходящее // - ДокументСсылка.ЭлектронноеПисьмоИсходящее - письмо-основание. // ПереноситьОтправителяВПолучатели - Булево - признак необходимости переноса отправителя письма основания в // создаваемое письмо. diff --git a/SSL/src/Documents/ЭлектронноеПисьмоИсходящее/ЭлектронноеПисьмоИсходящее.mdo b/SSL/src/Documents/ЭлектронноеПисьмоИсходящее/ЭлектронноеПисьмоИсходящее.mdo index ffc084c33..272c8a0ac 100644 --- a/SSL/src/Documents/ЭлектронноеПисьмоИсходящее/ЭлектронноеПисьмоИсходящее.mdo +++ b/SSL/src/Documents/ЭлектронноеПисьмоИсходящее/ЭлектронноеПисьмоИсходящее.mdo @@ -812,7 +812,7 @@ Use - ХэшСумма + ХешСумма ru Хеш сумма diff --git a/SSL/src/Enums/РежимыВыполненияОбработчиков/РежимыВыполненияОбработчиков.mdo b/SSL/src/Enums/РежимыВыполненияОбработчиков/РежимыВыполненияОбработчиков.mdo new file mode 100644 index 000000000..7be10b50a --- /dev/null +++ b/SSL/src/Enums/РежимыВыполненияОбработчиков/РежимыВыполненияОбработчиков.mdo @@ -0,0 +1,52 @@ + + + + + + + + РежимыВыполненияОбработчиков + + ru + Режимы выполнения обработчиков + + + Use + Order + + Use + + + + + Use + Ref + + Use + + + + true + BothWays + + Монопольно + + ru + Монопольно + + + + Оперативно + + ru + Оперативно + + + + Отложенно + + ru + Отложенно + + + diff --git a/SSL/src/Enums/РежимыВыполненияОтложенныхОбработчиков/РежимыВыполненияОтложенныхОбработчиков.mdo b/SSL/src/Enums/РежимыВыполненияОтложенныхОбработчиков/РежимыВыполненияОтложенныхОбработчиков.mdo new file mode 100644 index 000000000..badbd4ae5 --- /dev/null +++ b/SSL/src/Enums/РежимыВыполненияОтложенныхОбработчиков/РежимыВыполненияОтложенныхОбработчиков.mdo @@ -0,0 +1,45 @@ + + + + + + + + РежимыВыполненияОтложенныхОбработчиков + + ru + Режимы выполнения отложенных обработчиков + + + Use + Order + + Use + + + + + Use + Ref + + Use + + + + true + BothWays + + Последовательно + + ru + Последовательно + + + + Параллельно + + ru + Параллельно + + + diff --git a/SSL/src/Enums/СтатусыОбработчиковОбновления/ManagerModule.bsl b/SSL/src/Enums/СтатусыОбработчиковОбновления/ManagerModule.bsl new file mode 100644 index 000000000..e69de29bb diff --git a/SSL/src/Enums/СтатусыОбработчиковОбновления/СтатусыОбработчиковОбновления.mdo b/SSL/src/Enums/СтатусыОбработчиковОбновления/СтатусыОбработчиковОбновления.mdo new file mode 100644 index 000000000..cc9cb3d13 --- /dev/null +++ b/SSL/src/Enums/СтатусыОбработчиковОбновления/СтатусыОбработчиковОбновления.mdo @@ -0,0 +1,66 @@ + + + + + + + + СтатусыОбработчиковОбновления + + ru + Статусы обработчиков обновления + + + Use + Order + + Use + + + + + Use + Ref + + Use + + + + true + BothWays + + Выполнен + + ru + Выполнен + + + + НеВыполнялся + + ru + Не выполнялся + + + + Выполняется + + ru + Выполняется + + + + Приостановлен + + ru + Приостановлен + + + + Ошибка + + ru + Ошибка + + + diff --git a/SSL/src/EventSubscriptions/ДополнительныеРеквизитыОбработкаПроверкиЗаполнения/ДополнительныеРеквизитыОбработкаПроверкиЗаполнения.mdo b/SSL/src/EventSubscriptions/ДополнительныеРеквизитыОбработкаПроверкиЗаполнения/ДополнительныеРеквизитыОбработкаПроверкиЗаполнения.mdo index fdb079ead..42dc8ce58 100644 --- a/SSL/src/EventSubscriptions/ДополнительныеРеквизитыОбработкаПроверкиЗаполнения/ДополнительныеРеквизитыОбработкаПроверкиЗаполнения.mdo +++ b/SSL/src/EventSubscriptions/ДополнительныеРеквизитыОбработкаПроверкиЗаполнения/ДополнительныеРеквизитыОбработкаПроверкиЗаполнения.mdo @@ -6,8 +6,10 @@ Дополнительные реквизиты обработка проверки заполнения + BusinessProcessObject ChartOfCharacteristicTypesObject CatalogObject + TaskObject DocumentObject FillCheckProcessing diff --git a/SSL/src/EventSubscriptions/ЗапретитьИспользованиеУдаляемыхОбъектовВКонстантах/ЗапретитьИспользованиеУдаляемыхОбъектовВКонстантах.mdo b/SSL/src/EventSubscriptions/ЗапретитьИспользованиеУдаляемыхОбъектовВКонстантах/ЗапретитьИспользованиеУдаляемыхОбъектовВКонстантах.mdo new file mode 100644 index 000000000..0fc0e142a --- /dev/null +++ b/SSL/src/EventSubscriptions/ЗапретитьИспользованиеУдаляемыхОбъектовВКонстантах/ЗапретитьИспользованиеУдаляемыхОбъектовВКонстантах.mdo @@ -0,0 +1,13 @@ + + + ЗапретитьИспользованиеУдаляемыхОбъектовВКонстантах + + ru + Запретить использование удаляемых объектов в константах + + + ConstantValueManager + + OnWrite + CommonModule.УдалениеПомеченныхОбъектовСлужебный.ЗапретитьИспользованиеУдаляемыхОбъектовВКонстантахПриЗаписи + diff --git a/SSL/src/EventSubscriptions/ЗапретитьИспользованиеУдаляемыхОбъектовВНаборахЗаписей/ЗапретитьИспользованиеУдаляемыхОбъектовВНаборахЗаписей.mdo b/SSL/src/EventSubscriptions/ЗапретитьИспользованиеУдаляемыхОбъектовВНаборахЗаписей/ЗапретитьИспользованиеУдаляемыхОбъектовВНаборахЗаписей.mdo new file mode 100644 index 000000000..9ded03f67 --- /dev/null +++ b/SSL/src/EventSubscriptions/ЗапретитьИспользованиеУдаляемыхОбъектовВНаборахЗаписей/ЗапретитьИспользованиеУдаляемыхОбъектовВНаборахЗаписей.mdo @@ -0,0 +1,15 @@ + + + ЗапретитьИспользованиеУдаляемыхОбъектовВНаборахЗаписей + + ru + Запретить использование удаляемых объектов в наборах записей + + + InformationRegisterRecordSet + AccountingRegisterRecordSet + AccumulationRegisterRecordSet + + OnWrite + CommonModule.УдалениеПомеченныхОбъектовСлужебный.ЗапретитьИспользованиеУдаляемыхОбъектовВНаборахЗаписейПриЗаписи + diff --git a/SSL/src/EventSubscriptions/ЗапретитьИспользованиеУдаляемыхОбъектовВНаборахРегистровРасчета/ЗапретитьИспользованиеУдаляемыхОбъектовВНаборахРегистровРасчета.mdo b/SSL/src/EventSubscriptions/ЗапретитьИспользованиеУдаляемыхОбъектовВНаборахРегистровРасчета/ЗапретитьИспользованиеУдаляемыхОбъектовВНаборахРегистровРасчета.mdo new file mode 100644 index 000000000..fbf9820e9 --- /dev/null +++ b/SSL/src/EventSubscriptions/ЗапретитьИспользованиеУдаляемыхОбъектовВНаборахРегистровРасчета/ЗапретитьИспользованиеУдаляемыхОбъектовВНаборахРегистровРасчета.mdo @@ -0,0 +1,13 @@ + + + ЗапретитьИспользованиеУдаляемыхОбъектовВНаборахРегистровРасчета + + ru + Запретить использование удаляемых объектов в наборах регистров расчета + + + CalculationRegisterRecordSet + + OnWrite + CommonModule.УдалениеПомеченныхОбъектовСлужебный.ЗапретитьИспользованиеУдаляемыхОбъектовВНаборахРегистровРасчетаПриЗаписи + diff --git a/SSL/src/EventSubscriptions/ЗапретитьИспользованиеУдаляемыхОбъектовВОбъектах/ЗапретитьИспользованиеУдаляемыхОбъектовВОбъектах.mdo b/SSL/src/EventSubscriptions/ЗапретитьИспользованиеУдаляемыхОбъектовВОбъектах/ЗапретитьИспользованиеУдаляемыхОбъектовВОбъектах.mdo new file mode 100644 index 000000000..86d6c97e8 --- /dev/null +++ b/SSL/src/EventSubscriptions/ЗапретитьИспользованиеУдаляемыхОбъектовВОбъектах/ЗапретитьИспользованиеУдаляемыхОбъектовВОбъектах.mdo @@ -0,0 +1,20 @@ + + + ЗапретитьИспользованиеУдаляемыхОбъектовВОбъектах + + ru + Запретить использование удаляемых объектов в объектах + + + BusinessProcessObject + ChartOfCalculationTypesObject + ChartOfAccountsObject + ChartOfCharacteristicTypesObject + ExchangePlanObject + CatalogObject + TaskObject + DocumentObject + + OnWrite + CommonModule.УдалениеПомеченныхОбъектовСлужебный.ЗапретитьИспользованиеУдаляемыхОбъектовВСправочникахПриЗаписи + diff --git a/SSL/src/EventSubscriptions/КонтрольНеразделенныхНаборовЗаписейПриЗаписи/КонтрольНеразделенныхНаборовЗаписейПриЗаписи.mdo b/SSL/src/EventSubscriptions/КонтрольНеразделенныхНаборовЗаписейПриЗаписи/КонтрольНеразделенныхНаборовЗаписейПриЗаписи.mdo index b01e7cacb..6885b18e2 100644 --- a/SSL/src/EventSubscriptions/КонтрольНеразделенныхНаборовЗаписейПриЗаписи/КонтрольНеразделенныхНаборовЗаписейПриЗаписи.mdo +++ b/SSL/src/EventSubscriptions/КонтрольНеразделенныхНаборовЗаписейПриЗаписи/КонтрольНеразделенныхНаборовЗаписейПриЗаписи.mdo @@ -26,6 +26,7 @@ InformationRegisterRecordSet.ЗависимостиПравДоступа InformationRegisterRecordSet.ПараметрыРаботыПрограммы InformationRegisterRecordSet.ПакетыИнформацииПриЗапуске + InformationRegisterRecordSet.ОбработчикиОбновленияОбщихДанных InformationRegisterRecordSet.НастройкиТранспортаОбменаОбластейДанных InformationRegisterRecordSet.СвязиАдресныхОбъектов InformationRegisterRecordSet.ДомаЗданияСтроения diff --git a/SSL/src/EventSubscriptions/ОбновитьПредставлениеВнешнегоПользователя/ОбновитьПредставлениеВнешнегоПользователя.mdo b/SSL/src/EventSubscriptions/ОбновитьВнешнегоПользователя/ОбновитьВнешнегоПользователя.mdo similarity index 57% rename from SSL/src/EventSubscriptions/ОбновитьПредставлениеВнешнегоПользователя/ОбновитьПредставлениеВнешнегоПользователя.mdo rename to SSL/src/EventSubscriptions/ОбновитьВнешнегоПользователя/ОбновитьВнешнегоПользователя.mdo index 10bb0dd97..0ba6713f8 100644 --- a/SSL/src/EventSubscriptions/ОбновитьПредставлениеВнешнегоПользователя/ОбновитьПредставлениеВнешнегоПользователя.mdo +++ b/SSL/src/EventSubscriptions/ОбновитьВнешнегоПользователя/ОбновитьВнешнегоПользователя.mdo @@ -1,13 +1,13 @@ - ОбновитьПредставлениеВнешнегоПользователя + ОбновитьВнешнегоПользователя ru - Обновить представление внешнего пользователя + Обновить внешнего пользователя DefinedType.ВнешнийПользовательОбъект OnWrite - CommonModule.ПользователиСлужебный.ОбновитьПредставлениеВнешнегоПользователяПриЗаписи + CommonModule.ПользователиСлужебный.ОбновитьВнешнегоПользователяПриЗаписи diff --git a/SSL/src/ExchangePlans/ОбновлениеИнформационнойБазы/ОбновлениеИнформационнойБазы.mdo b/SSL/src/ExchangePlans/ОбновлениеИнформационнойБазы/ОбновлениеИнформационнойБазы.mdo index a48d60c35..b150dcbd8 100644 --- a/SSL/src/ExchangePlans/ОбновлениеИнформационнойБазы/ОбновлениеИнформационнойБазы.mdo +++ b/SSL/src/ExchangePlans/ОбновлениеИнформационнойБазы/ОбновлениеИнформационнойБазы.mdo @@ -80,11 +80,11 @@ Use ru - Обрабатываемый объект + Очередь отложенной обработки данных ru - Обрабатываемые объекты + Очереди отложенной обработки данных 9 Variable diff --git a/SSL/src/FunctionalOptions/ИспользоватьУчетОригиналовПервичныхДокументов/ИспользоватьУчетОригиналовПервичныхДокументов.mdo b/SSL/src/FunctionalOptions/ИспользоватьУчетОригиналовПервичныхДокументов/ИспользоватьУчетОригиналовПервичныхДокументов.mdo new file mode 100644 index 000000000..0a036b0ee --- /dev/null +++ b/SSL/src/FunctionalOptions/ИспользоватьУчетОригиналовПервичныхДокументов/ИспользоватьУчетОригиналовПервичныхДокументов.mdo @@ -0,0 +1,14 @@ + + + ИспользоватьУчетОригиналовПервичныхДокументов + + ru + Использовать учет оригиналов первичных документов + + Constant.ИспользоватьУчетОригиналовПервичныхДокументов + true + Catalog.СостоянияОригиналовПервичныхДокументов + InformationRegister.СостоянияОригиналовПервичныхДокументов + Subsystem.СтандартныеПодсистемы.Subsystem.УчетОригиналовПервичныхДокументов + CommonCommand.ЖурналУчетаОригиналовПервичныхДокументов + diff --git a/SSL/src/InformationRegisters/АдресныеОбъекты/Forms/ЗагрузкаАдресногоКлассификатора/Form.form b/SSL/src/InformationRegisters/АдресныеОбъекты/Forms/ЗагрузкаАдресногоКлассификатора/Form.form index 0252215cb..069b5fd51 100644 --- a/SSL/src/InformationRegisters/АдресныеОбъекты/Forms/ЗагрузкаАдресногоКлассификатора/Form.form +++ b/SSL/src/InformationRegisters/АдресныеОбъекты/Forms/ЗагрузкаАдресногоКлассификатора/Form.form @@ -16,17 +16,73 @@ ГруппаУстановитьСнятьФлажки 208 - - СубъектыРФУстановитьФлажки - 47 + + КнопкиВыбора + 239 + + СубъектыРФУстановитьФлажки + 47 + true + true + + true + + + СубъектыРФУстановитьФлажкиРасширеннаяПодсказка + 48 + Label + true + true + + Left + + + Form.Command.УстановитьФлажки + Normal + Auto + true + true + UserCmds + Auto + + + СубъектыРФСнятьФлажки + 49 + true + true + + true + + + СубъектыРФСнятьФлажкиРасширеннаяПодсказка + 50 + Label + true + true + + Left + + + Form.Command.СнятьФлажки + Normal + Auto + true + true + UserCmds + Auto + true true true + + <key>ru</key> + <value>Выбрать все</value> + - СубъектыРФУстановитьФлажкиРасширеннаяПодсказка - 48 + КнопкиВыбораРасширеннаяПодсказка + 240 Label true true @@ -34,39 +90,9 @@ Left - Form.Command.УстановитьФлажки - Normal - Auto - true - true - UserCmds - Auto - - - СубъектыРФСнятьФлажки - 49 - true - true - - true - - - СубъектыРФСнятьФлажкиРасширеннаяПодсказка - 50 - Label - true - true - - Left - - - Form.Command.СнятьФлажки - Normal - Auto - true - true - UserCmds - Auto + + Compact + true true @@ -154,6 +180,60 @@ ГруппаЕще 210 + + СубъектыРФУстановитьФлажки1 + 241 + true + true + + true + + + СубъектыРФУстановитьФлажки1РасширеннаяПодсказка + 242 + Label + true + true + + Left + + + Form.Command.УстановитьФлажки + Normal + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + СубъектыРФСнятьФлажки1 + 243 + true + true + + true + + + СубъектыРФСнятьФлажки1РасширеннаяПодсказка + 244 + Label + true + true + + Left + + + Form.Command.СнятьФлажки + Normal + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + СубъектыРФНайти 43 @@ -897,7 +977,7 @@ - ГруппаЗагрузкаИзПапки + ГруппаЗагрузкаИзКаталога 185 ДоступныеИсточникиЗагрузкиКаталог @@ -1017,7 +1097,7 @@ Загрузка из папки - ГруппаЗагрузкаИзПапкиРасширеннаяПодсказка + ГруппаЗагрузкаИзКаталогаРасширеннаяПодсказка 186 Label true @@ -1577,7 +1657,7 @@ <key>ru</key> - <value>Группа надписи завершение</value> + <value>Надписи завершение</value> ГруппаНадписиЗавершениеРасширеннаяПодсказка diff --git a/SSL/src/InformationRegisters/АдресныеОбъекты/Forms/ЗагрузкаАдресногоКлассификатора/Module.bsl b/SSL/src/InformationRegisters/АдресныеОбъекты/Forms/ЗагрузкаАдресногоКлассификатора/Module.bsl index eec437058..692cd5514 100644 --- a/SSL/src/InformationRegisters/АдресныеОбъекты/Forms/ЗагрузкаАдресногоКлассификатора/Module.bsl +++ b/SSL/src/InformationRegisters/АдресныеОбъекты/Forms/ЗагрузкаАдресногоКлассификатора/Module.bsl @@ -224,7 +224,7 @@ Процедура АдресЗагрузкиНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) АдресныйКлассификаторКлиент.ВыбратьКаталог(ЭтотОбъект, "АдресЗагрузки", - НСтр("ru = 'Каталог с файлами адресного классификатора'"), + НСтр("ru = 'Папка с файлами адресного классификатора'"), СтандартнаяОбработка, Новый ОписаниеОповещения("ЗавершениеВыбораКаталогаАдресаЗагрузки", ЭтотОбъект)); @@ -310,8 +310,7 @@ Процедура Загрузить(Команда) Если КодИсточникаЗагрузки = "КАТАЛОГ" Тогда - Текст = НСтр("ru = 'Для загрузки адресного классификатора из папки - |необходимо установить расширение для работы с 1С:Предприятием.'"); + Текст = НСтр("ru = 'Для загрузки адресного классификатора из папки необходимо установить расширение для работы с 1С:Предприятием.'"); КонтрольРасширенияРаботыСФайлами(Текст, КодИсточникаЗагрузки, АдресЗагрузки); ИначеЕсли КодИсточникаЗагрузки = "САЙТ" Тогда @@ -756,7 +755,11 @@ ДополнительныеПараметры.Вставить("Позиция", 0); ОписаниеОповещения = Новый ОписаниеОповещения("ЗапуститьФоновуюЗагрузкуИзКаталогаКлиентаПослеПомещенияФайлов", ЭтотОбъект, ДополнительныеПараметры); - НачатьПомещениеФайлов(ОписаниеОповещения, ПомещаемыеФайлы,, Ложь, УникальныйИдентификатор); + + ПараметрыЗагрузкиФайла = ФайловаяСистемаКлиент.ПараметрыЗагрузкиФайла(); + ПараметрыЗагрузкиФайла.ИдентификаторФормы = УникальныйИдентификатор; + ПараметрыЗагрузкиФайла.Интерактивно = Ложь; + ФайловаяСистемаКлиент.ЗагрузитьФайлы(ОписаниеОповещения, ПараметрыЗагрузкиФайла, ПомещаемыеФайлы); КонецПроцедуры diff --git a/SSL/src/InformationRegisters/АдресныеОбъекты/Forms/ОчисткаАдресногоКлассификатора/Form.form b/SSL/src/InformationRegisters/АдресныеОбъекты/Forms/ОчисткаАдресногоКлассификатора/Form.form index 075b2db73..ae6d9eb74 100644 --- a/SSL/src/InformationRegisters/АдресныеОбъекты/Forms/ОчисткаАдресногоКлассификатора/Form.form +++ b/SSL/src/InformationRegisters/АдресныеОбъекты/Forms/ОчисткаАдресногоКлассификатора/Form.form @@ -192,17 +192,73 @@ - - СубъектыРФУстановитьФлажки - 47 + + КнопкиВыбора + 147 + + СубъектыРФУстановитьФлажки + 47 + true + true + + true + + + СубъектыРФУстановитьФлажкиРасширеннаяПодсказка + 48 + Label + true + true + + Left + + + Form.Command.УстановитьФлажки + Normal + Auto + true + true + UserCmds + Auto + + + СубъектыРФСнятьФлажки + 49 + true + true + + true + + + СубъектыРФСнятьФлажкиРасширеннаяПодсказка + 50 + Label + true + true + + Left + + + Form.Command.СнятьФлажки + Normal + Auto + true + true + UserCmds + Auto + true true true + + <key>ru</key> + <value>Кнопки выбора</value> + - СубъектыРФУстановитьФлажкиРасширеннаяПодсказка - 48 + КнопкиВыбораРасширеннаяПодсказка + 148 Label true true @@ -210,39 +266,9 @@ Left - Form.Command.УстановитьФлажки - Normal - Auto - true - true - UserCmds - Auto - - - СубъектыРФСнятьФлажки - 49 - true - true - - true - - - СубъектыРФСнятьФлажкиРасширеннаяПодсказка - 50 - Label - true - true - - Left - - - Form.Command.СнятьФлажки - Normal - Auto - true - true - UserCmds - Auto + + Compact + СубъектыРФНайти @@ -1370,6 +1396,19 @@ true + + АдресныйКлассификаторСодержитЗагруженныеСведения + 2 + + Boolean + + + true + + + true + + Очистить diff --git a/SSL/src/InformationRegisters/АдресныеОбъекты/Forms/ОчисткаАдресногоКлассификатора/Module.bsl b/SSL/src/InformationRegisters/АдресныеОбъекты/Forms/ОчисткаАдресногоКлассификатора/Module.bsl index 86832dec4..c13857167 100644 --- a/SSL/src/InformationRegisters/АдресныеОбъекты/Forms/ОчисткаАдресногоКлассификатора/Module.bsl +++ b/SSL/src/InformationRegisters/АдресныеОбъекты/Forms/ОчисткаАдресногоКлассификатора/Module.bsl @@ -26,12 +26,18 @@ // Автосохранение настроек СохраняемыеВНастройкахДанныеМодифицированы = Истина; + КонецПроцедуры &НаКлиенте Процедура ПриОткрытии(Отказ) - ОбновитьИнтерфейсПоКоличествуОчищаемых(); + Если Не АдресныйКлассификаторСодержитЗагруженныеСведения Тогда + Отказ = Истина; + ПоказатьПредупреждение(, НСтр("ru='Адресные сведения для очистки отсутствуют'")); + Иначе + ОбновитьИнтерфейсПоКоличествуОчищаемых(); + КонецЕсли; КонецПроцедуры @@ -313,6 +319,8 @@ ТаблицаРегионов = АдресныйКлассификаторСлужебный.СведенияОЗагрузкеСубъектовРФ(); ТаблицаРегионов.Колонки.Добавить("Очищать", Новый ОписаниеТипов("Булево")); + АдресныйКлассификаторСодержитЗагруженныеСведения = Ложь; + Для Каждого Регион Из ТаблицаРегионов Цикл Регион.Представление = Формат(Регион.КодСубъектаРФ, "ЧЦ=2; ЧН=; ЧВН=; ЧГ=") + ", " + Регион.Представление; КонецЦикла; @@ -323,6 +331,8 @@ СтрокаТаблицы = ТаблицаРегионов.Получить(Индекс); Если НЕ СтрокаТаблицы.Загружено Тогда ТаблицаРегионов.Удалить(СтрокаТаблицы); + Иначе + АдресныйКлассификаторСодержитЗагруженныеСведения = Истина; КонецЕсли; Индекс = Индекс - 1; КонецЦикла; diff --git a/SSL/src/InformationRegisters/АдресныеОбъекты/Forms/СведенияОбАдресномКлассификаторе/Module.bsl b/SSL/src/InformationRegisters/АдресныеОбъекты/Forms/СведенияОбАдресномКлассификаторе/Module.bsl index 04aa086a1..2024a9df2 100644 --- a/SSL/src/InformationRegisters/АдресныеОбъекты/Forms/СведенияОбАдресномКлассификаторе/Module.bsl +++ b/SSL/src/InformationRegisters/АдресныеОбъекты/Forms/СведенияОбАдресномКлассификаторе/Module.bsl @@ -110,12 +110,12 @@ Если ИПППодключена Тогда ИнформацияОСервисе = АдресныйКлассификаторПовтИсп.СервисКлассификатора1С(10); - URL = ИнформацияОСервисе.Сервер + ":" + ИнформацияОСервисе.Порт + "/"+ АдресныйКлассификаторСлужебный.ПрефиксВерсииЗапроса(); + СсылкаНаВебСервис = ИнформацияОСервисе.Сервер + ":" + ИнформацияОСервисе.Порт + "/"+ АдресныйКлассификаторСлужебный.ПрефиксВерсииЗапроса(); Если КлассификаторДоступен Тогда Шаблон = НСтр("ru = 'Веб-сервис доступен. |URL подключения: %1'"); - Сведения.Добавить(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Шаблон, URL)); + Сведения.Добавить(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Шаблон, СсылкаНаВебСервис)); Иначе @@ -124,7 +124,7 @@ Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПолучениеФайловИзИнтернета") Тогда МодульПолучениеФайловИзИнтернета = ОбщегоНазначения.ОбщийМодуль("ПолучениеФайловИзИнтернета"); - Результат = МодульПолучениеФайловИзИнтернета.ДиагностикаСоединения(URL); + Результат = МодульПолучениеФайловИзИнтернета.ДиагностикаСоединения(СсылкаНаВебСервис); Сведения.Добавить(Результат.ЖурналДиагностики); КонецЕсли; diff --git a/SSL/src/InformationRegisters/АдресныеОбъекты/ManagerModule.bsl b/SSL/src/InformationRegisters/АдресныеОбъекты/ManagerModule.bsl index 1a21009bb..4b4f02749 100644 --- a/SSL/src/InformationRegisters/АдресныеОбъекты/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/АдресныеОбъекты/ManagerModule.bsl @@ -95,9 +95,9 @@ // // Возвращаемое значение: // ТаблицаЗначений - поставляемые данные. Колонки: -// * Уровень - Число - Уровень сокращения. -// * Наименование - Строка - Полное наименование адресного объекта. -// * Сокращение - Строка - Сокращенное наименование адресного объекта. +// * Уровень - Число - уровень сокращения. +// * Наименование - Строка - полное наименование адресного объекта. +// * Сокращение - Строка - сокращенное наименование адресного объекта. // Функция АдресныеСокращения() Экспорт diff --git a/SSL/src/InformationRegisters/АдресныеОбъекты/Templates/КлассификаторСубъектовРФ/Template.txt b/SSL/src/InformationRegisters/АдресныеОбъекты/Templates/КлассификаторСубъектовРФ/Template.txt index 06b780ccc..c352892ae 100644 --- a/SSL/src/InformationRegisters/АдресныеОбъекты/Templates/КлассификаторСубъектовРФ/Template.txt +++ b/SSL/src/InformationRegisters/АдресныеОбъекты/Templates/КлассификаторСубъектовРФ/Template.txt @@ -53,98 +53,110 @@ <Type>UUID</Type> </ValueType> </column> + + <column> + <Name xsi:type="xs:string">ОКТМО</Name> + <ValueType> + <Type>xs:string</Type> + <StringQualifiers> + <Length>8</Length> + <AllowedLength>Variable</AllowedLength> + </StringQualifiers> + </ValueType> + </column> + <index><column>КодСубъектаРФ</column></index> <index><column>Наименование</column></index> <index><column>Наименование</column><column>Сокращение</column></index> <index><column>Идентификатор</column></index> + <index><column>ОКТМО</column></index> - <row><Value>01</Value><Value>Адыгея</Value> <Value>Респ</Value> <Value>385000</Value><Value>385</Value><Value>d8327a56-80de-4df2-815c-4f6ab1224c50</Value></row> - <row><Value>02</Value><Value>Башкортостан</Value> <Value>Респ</Value> <Value>450000</Value><Value>450-453</Value><Value>6f2cbfd8-692a-4ee4-9b16-067210bde3fc</Value></row> - <row><Value>03</Value><Value>Бурятия</Value> <Value>Респ</Value> <Value>670000</Value><Value>670-671</Value><Value>a84ebed3-153d-4ba9-8532-8bdf879e1f5a</Value></row> - <row><Value>04</Value><Value>Алтай</Value> <Value>Респ</Value> <Value>649000</Value><Value>649</Value><Value>5c48611f-5de6-4771-9695-7e36a4e7529d</Value></row> - <row><Value>05</Value><Value>Дагестан</Value> <Value>Респ</Value> <Value>368000</Value><Value>367-368</Value><Value>0bb7fa19-736d-49cf-ad0e-9774c4dae09b</Value></row> - <row><Value>06</Value><Value>Ингушетия</Value> <Value>Респ</Value> <Value>386000</Value><Value>386</Value><Value>b2d8cd20-cabc-4deb-afad-f3c4b4d55821</Value></row> - <row><Value>07</Value><Value>Кабардино-Балкарская</Value> <Value>Респ</Value> <Value>000000</Value><Value>360-367</Value><Value>1781f74e-be4a-4697-9c6b-493057c94818</Value></row> - <row><Value>08</Value><Value>Калмыкия</Value> <Value>Респ</Value> <Value>000000</Value><Value>358-359</Value><Value>491cde9d-9d76-4591-ab46-ea93c079e686</Value></row> - <row><Value>09</Value><Value>Карачаево-Черкесская</Value> <Value>Респ</Value> <Value>000000</Value><Value>369</Value><Value>61b95807-388a-4cb1-9bee-889f7cf811c8</Value></row> - <row><Value>10</Value><Value>Карелия</Value> <Value>Респ</Value> <Value>000000</Value><Value>185-186</Value><Value>248d8071-06e1-425e-a1cf-d1ff4c4a14a8</Value></row> - <row><Value>11</Value><Value>Коми</Value> <Value>Респ</Value> <Value>000000</Value><Value>167-169</Value><Value>c20180d9-ad9c-46d1-9eff-d60bc424592a</Value></row> - <row><Value>12</Value><Value>Марий Эл</Value> <Value>Респ</Value> <Value>000000</Value><Value>424-425</Value><Value>de2cbfdf-9662-44a4-a4a4-8ad237ae4a3e</Value></row> - <row><Value>13</Value><Value>Мордовия</Value> <Value>Респ</Value> <Value>000000</Value><Value>430-431</Value><Value>37a0c60a-9240-48b5-a87f-0d8c86cdb6e1</Value></row> - <row><Value>14</Value><Value>Саха /Якутия/</Value> <Value>Респ</Value> <Value>000000</Value><Value>677-678</Value><Value>c225d3db-1db6-4063-ace0-b3fe9ea3805f</Value></row> - <row><Value>15</Value><Value>Северная Осетия - Алания</Value> <Value>Респ</Value> <Value>000000</Value><Value>362-363</Value><Value>de459e9c-2933-4923-83d1-9c64cfd7a817</Value></row> - <row><Value>16</Value><Value>Татарстан</Value> <Value>Респ</Value> <Value>420000</Value><Value>420-423</Value><Value>0c089b04-099e-4e0e-955a-6bf1ce525f1a</Value></row> - <row><Value>17</Value><Value>Тыва</Value> <Value>Респ</Value> <Value>660000</Value><Value>667-668</Value><Value>026bc56f-3731-48e9-8245-655331f596c0</Value></row> - <row><Value>18</Value><Value>Удмуртская</Value> <Value>Респ</Value> <Value>000000</Value><Value>426-427</Value><Value>52618b9c-bcbb-47e7-8957-95c63f0b17cc</Value></row> - <row><Value>19</Value><Value>Хакасия</Value> <Value>Респ</Value> <Value>655000</Value><Value>655</Value><Value>8d3f1d35-f0f4-41b5-b5b7-e7cadf3e7bd7</Value></row> - <row><Value>20</Value><Value>Чеченская</Value> <Value>Респ</Value> <Value>000000</Value><Value>364-366</Value><Value>de67dc49-b9ba-48a3-a4cc-c2ebfeca6c5e</Value></row> - <row><Value>21</Value><Value>Чувашская Республика -</Value> <Value>Чувашия</Value><Value>000000</Value><Value>428-429</Value><Value>878fc621-3708-46c7-a97f-5a13a4176b3e</Value></row> - <row><Value>22</Value><Value>Алтайский</Value> <Value>край</Value> <Value>000000</Value><Value>656-659</Value><Value>8276c6a1-1a86-4f0d-8920-aba34d4cc34a</Value></row> - <row><Value>23</Value><Value>Краснодарский</Value> <Value>край</Value> <Value>000000</Value><Value>350-354</Value><Value>d00e1013-16bd-4c09-b3d5-3cb09fc54bd8</Value></row> - <row><Value>24</Value><Value>Красноярский</Value> <Value>край</Value> <Value>000000</Value><Value>660-663,647-648</Value><Value>db9c4f8b-b706-40e2-b2b4-d31b98dcd3d1</Value></row> - <row><Value>25</Value><Value>Приморский</Value> <Value>край</Value> <Value>000000</Value><Value>690-692</Value><Value>43909681-d6e1-432d-b61f-ddac393cb5da</Value></row> - <row><Value>26</Value><Value>Ставропольский</Value> <Value>край</Value> <Value>000000</Value><Value>355-357</Value><Value>327a060b-878c-4fb4-8dc4-d5595871a3d8</Value></row> - <row><Value>27</Value><Value>Хабаровский</Value> <Value>край</Value> <Value>000000</Value><Value>680-682</Value><Value>7d468b39-1afa-41ec-8c4f-97a8603cb3d4</Value></row> - <row><Value>28</Value><Value>Амурская</Value> <Value>обл</Value> <Value>675000</Value><Value>675-676</Value><Value>844a80d6-5e31-4017-b422-4d9c01e9942c</Value></row> - <row><Value>29</Value><Value>Архангельская</Value> <Value>обл</Value> <Value>000000</Value><Value>163-165</Value><Value>294277aa-e25d-428c-95ad-46719c4ddb44</Value></row> - <row><Value>30</Value><Value>Астраханская</Value> <Value>обл</Value> <Value>000000</Value><Value>414-416</Value><Value>83009239-25cb-4561-af8e-7ee111b1cb73</Value></row> - <row><Value>31</Value><Value>Белгородская</Value> <Value>обл</Value> <Value>000000</Value><Value>308-309</Value><Value>639efe9d-3fc8-4438-8e70-ec4f2321f2a7</Value></row> - <row><Value>32</Value><Value>Брянская</Value> <Value>обл</Value> <Value>000000</Value><Value>241-243</Value><Value>f5807226-8be0-4ea8-91fc-39d053aec1e2</Value></row> - <row><Value>33</Value><Value>Владимирская</Value> <Value>обл</Value> <Value>000000</Value><Value>600-602</Value><Value>b8837188-39ee-4ff9-bc91-fcc9ed451bb3</Value></row> - <row><Value>34</Value><Value>Волгоградская</Value> <Value>обл</Value> <Value>000000</Value><Value>400-404</Value><Value>da051ec8-da2e-4a66-b542-473b8d221ab4</Value></row> - <row><Value>35</Value><Value>Вологодская</Value> <Value>обл</Value> <Value>000000</Value><Value>160-162</Value><Value>ed36085a-b2f5-454f-b9a9-1c9a678ee618</Value></row> - <row><Value>36</Value><Value>Воронежская</Value> <Value>обл</Value> <Value>000000</Value><Value>394-397</Value><Value>b756fe6b-bbd3-44d5-9302-5bfcc740f46e</Value></row> - <row><Value>37</Value><Value>Ивановская</Value> <Value>обл</Value> <Value>000000</Value><Value>153-155</Value><Value>0824434f-4098-4467-af72-d4f702fed335</Value></row> - <row><Value>38</Value><Value>Иркутская</Value> <Value>обл</Value> <Value>000000</Value><Value>664-668,669</Value><Value>6466c988-7ce3-45e5-8b97-90ae16cb1249</Value></row> - <row><Value>39</Value><Value>Калининградская</Value> <Value>обл</Value> <Value>000000</Value><Value>236-238</Value><Value>90c7181e-724f-41b3-b6c6-bd3ec7ae3f30</Value></row> - <row><Value>40</Value><Value>Калужская</Value> <Value>обл</Value> <Value>000000</Value><Value>248-249</Value><Value>18133adf-90c2-438e-88c4-62c41656de70</Value></row> - <row><Value>41</Value><Value>Камчатский</Value> <Value>край</Value> <Value>000000</Value><Value>683-684,688</Value><Value>d02f30fc-83bf-4c0f-ac2b-5729a866a207</Value></row> - <row><Value>42</Value><Value>Кемеровская область -</Value> <Value>Кузбасс</Value><Value>000000</Value><Value>650-654</Value><Value>393aeccb-89ef-4a7e-ae42-08d5cebc2e30</Value></row> - <row><Value>43</Value><Value>Кировская</Value> <Value>обл</Value> <Value>610000</Value><Value>610-613</Value><Value>0b940b96-103f-4248-850c-26b6c7296728</Value></row> - <row><Value>44</Value><Value>Костромская</Value> <Value>обл</Value> <Value>000000</Value><Value>156-157</Value><Value>15784a67-8cea-425b-834a-6afe0e3ed61c</Value></row> - <row><Value>45</Value><Value>Курганская</Value> <Value>обл</Value> <Value>641000</Value><Value>640-641</Value><Value>4a3d970f-520e-46b9-b16c-50d4ca7535a8</Value></row> - <row><Value>46</Value><Value>Курская</Value> <Value>обл</Value> <Value>000000</Value><Value>305-307</Value><Value>ee594d5e-30a9-40dc-b9f2-0add1be44ba1</Value></row> - <row><Value>47</Value><Value>Ленинградская</Value> <Value>обл</Value> <Value>000000</Value><Value>187-188</Value><Value>6d1ebb35-70c6-4129-bd55-da3969658f5d</Value></row> - <row><Value>48</Value><Value>Липецкая</Value> <Value>обл</Value> <Value>000000</Value><Value>398-399</Value><Value>1490490e-49c5-421c-9572-5673ba5d80c8</Value></row> - <row><Value>49</Value><Value>Магаданская</Value> <Value>обл</Value> <Value>000000</Value><Value>685-686</Value><Value>9c05e812-8679-4710-b8cb-5e8bd43cdf48</Value></row> - <row><Value>50</Value><Value>Московская</Value> <Value>обл</Value> <Value>000000</Value><Value>140-144</Value><Value>29251dcf-00a1-4e34-98d4-5c47484a36d4</Value></row> - <row><Value>51</Value><Value>Мурманская</Value> <Value>обл</Value> <Value>000000</Value><Value>183-184</Value><Value>1c727518-c96a-4f34-9ae6-fd510da3be03</Value></row> - <row><Value>52</Value><Value>Нижегородская</Value> <Value>обл</Value> <Value>000000</Value><Value>603-607</Value><Value>88cd27e2-6a8a-4421-9718-719a28a0a088</Value></row> - <row><Value>53</Value><Value>Новгородская</Value> <Value>обл</Value> <Value>000000</Value><Value>173-175</Value><Value>e5a84b81-8ea1-49e3-b3c4-0528651be129</Value></row> - <row><Value>54</Value><Value>Новосибирская</Value> <Value>обл</Value> <Value>000000</Value><Value>630-633</Value><Value>1ac46b49-3209-4814-b7bf-a509ea1aecd9</Value></row> - <row><Value>55</Value><Value>Омская</Value> <Value>обл</Value> <Value>000000</Value><Value>644-646</Value><Value>05426864-466d-41a3-82c4-11e61cdc98ce</Value></row> - <row><Value>56</Value><Value>Оренбургская</Value> <Value>обл</Value> <Value>460000</Value><Value>460-462</Value><Value>8bcec9d6-05bc-4e53-b45c-ba0c6f3a5c44</Value></row> - <row><Value>57</Value><Value>Орловская</Value> <Value>обл</Value> <Value>000000</Value><Value>302-303</Value><Value>5e465691-de23-4c4e-9f46-f35a125b5970</Value></row> - <row><Value>58</Value><Value>Пензенская</Value> <Value>обл</Value> <Value>000000</Value><Value>440-442</Value><Value>c99e7924-0428-4107-a302-4fd7c0cca3ff</Value></row> - <row><Value>59</Value><Value>Пермский</Value> <Value>край</Value> <Value>000000</Value><Value>614-619</Value><Value>4f8b1a21-e4bb-422f-9087-d3cbf4bebc14</Value></row> - <row><Value>60</Value><Value>Псковская</Value> <Value>обл</Value> <Value>000000</Value><Value>180-182</Value><Value>f6e148a1-c9d0-4141-a608-93e3bd95e6c4</Value></row> - <row><Value>61</Value><Value>Ростовская</Value> <Value>обл</Value> <Value>000000</Value><Value>344-347</Value><Value>f10763dc-63e3-48db-83e1-9c566fe3092b</Value></row> - <row><Value>62</Value><Value>Рязанская</Value> <Value>обл</Value> <Value>390000</Value><Value>390-391</Value><Value>963073ee-4dfc-48bd-9a70-d2dfc6bd1f31</Value></row> - <row><Value>63</Value><Value>Самарская</Value> <Value>обл</Value> <Value>000000</Value><Value>443-446</Value><Value>df3d7359-afa9-4aaa-8ff9-197e73906b1c</Value></row> - <row><Value>64</Value><Value>Саратовская</Value> <Value>обл</Value> <Value>410000</Value><Value>410-413</Value><Value>df594e0e-a935-4664-9d26-0bae13f904fe</Value></row> - <row><Value>65</Value><Value>Сахалинская</Value> <Value>обл</Value> <Value>693000</Value><Value>693-694</Value><Value>aea6280f-4648-460f-b8be-c2bc18923191</Value></row> - <row><Value>66</Value><Value>Свердловская</Value> <Value>обл</Value> <Value>620000</Value><Value>620-624</Value><Value>92b30014-4d52-4e2e-892d-928142b924bf</Value></row> - <row><Value>67</Value><Value>Смоленская</Value> <Value>обл</Value> <Value>000000</Value><Value>214-216</Value><Value>e8502180-6d08-431b-83ea-c7038f0df905</Value></row> - <row><Value>68</Value><Value>Тамбовская</Value> <Value>обл</Value> <Value>392000</Value><Value>392-393</Value><Value>a9a71961-9363-44ba-91b5-ddf0463aebc2</Value></row> - <row><Value>69</Value><Value>Тверская</Value> <Value>обл</Value> <Value>000000</Value><Value>170-172</Value><Value>61723327-1c20-42fe-8dfa-402638d9b396</Value></row> - <row><Value>70</Value><Value>Томская</Value> <Value>обл</Value> <Value>000000</Value><Value>634-636</Value><Value>889b1f3a-98aa-40fc-9d3d-0f41192758ab</Value></row> - <row><Value>71</Value><Value>Тульская</Value> <Value>обл</Value> <Value>000000</Value><Value>300-301</Value><Value>d028ec4f-f6da-4843-ada6-b68b3e0efa3d</Value></row> - <row><Value>72</Value><Value>Тюменская</Value> <Value>обл</Value> <Value>000000</Value><Value>625-627</Value><Value>54049357-326d-4b8f-b224-3c6dc25d6dd3</Value></row> - <row><Value>73</Value><Value>Ульяновская</Value> <Value>обл</Value> <Value>433000</Value><Value>432-433</Value><Value>fee76045-fe22-43a4-ad58-ad99e903bd58</Value></row> - <row><Value>74</Value><Value>Челябинская</Value> <Value>обл</Value> <Value>454000</Value><Value>454-457</Value><Value>27eb7c10-a234-44da-a59c-8b1f864966de</Value></row> - <row><Value>75</Value><Value>Забайкальский</Value> <Value>край</Value> <Value>000000</Value><Value>672-674,687</Value><Value>b6ba5716-eb48-401b-8443-b197c9578734</Value></row> - <row><Value>76</Value><Value>Ярославская</Value> <Value>обл</Value> <Value>000000</Value><Value>150-152</Value><Value>a84b2ef4-db03-474b-b552-6229e801ae9b</Value></row> - <row><Value>77</Value><Value>Москва</Value> <Value>г</Value> <Value>000000</Value><Value>101-135</Value><Value>0c5b2444-70a0-4932-980c-b4dc0d3f02b5</Value></row> - <row><Value>78</Value><Value>Санкт-Петербург</Value> <Value>г</Value> <Value>190000</Value><Value>190-199</Value><Value>c2deb16a-0330-4f05-821f-1d09c93331e6</Value></row> - <row><Value>79</Value><Value>Еврейская</Value> <Value>Аобл</Value> <Value>000000</Value><Value>679</Value><Value>1b507b09-48c9-434f-bf6f-65066211c73e</Value></row> - <row><Value>80</Value><Value>Забайкальский край Агинский Бурятский</Value> <Value>округ</Value> <Value>000000</Value><Value>0</Value><Value>53ec9705-ec3e-4cbf-921f-229968e10aeb</Value></row> - <row><Value>83</Value><Value>Ненецкий</Value> <Value>АО</Value> <Value>166000</Value><Value>166</Value><Value>89db3198-6803-4106-9463-cbf781eff0b8</Value></row> - <row><Value>86</Value><Value>Ханты-Мансийский Автономный округ - Югра</Value><Value>АО</Value> <Value>000000</Value><Value>628</Value><Value>d66e5325-3a25-4d29-ba86-4ca351d9704b</Value></row> - <row><Value>87</Value><Value>Чукотский</Value> <Value>АО</Value> <Value>000000</Value><Value>689</Value><Value>f136159b-404a-4f1f-8d8d-d169e1374d5c</Value></row> - <row><Value>89</Value><Value>Ямало-Ненецкий</Value> <Value>АО</Value> <Value>629000</Value><Value>629</Value><Value>826fa834-3ee8-404f-bdbc-13a5221cfb6e</Value></row> - <row><Value>91</Value><Value>Крым</Value> <Value>Респ</Value> <Value>000000</Value><Value>295-298</Value><Value>bd8e6511-e4b9-4841-90de-6bbc231a789e</Value></row> - <row><Value>92</Value><Value>Севастополь</Value> <Value>г</Value> <Value>000000</Value><Value>299</Value><Value>6fdecb78-893a-4e3f-a5ba-aa062459463b</Value></row> - <row><Value>99</Value><Value>Байконур</Value> <Value>г</Value> <Value>468320</Value><Value>468</Value><Value>63ed1a35-4be6-4564-a1ec-0c51f7383314</Value></row> + <row><Value>01</Value><Value>Адыгея</Value> <Value>Респ</Value> <Value>385000</Value><Value>385</Value><Value>d8327a56-80de-4df2-815c-4f6ab1224c50</Value><Value>79</Value></row> + <row><Value>02</Value><Value>Башкортостан</Value> <Value>Респ</Value> <Value>450000</Value><Value>450-453</Value><Value>6f2cbfd8-692a-4ee4-9b16-067210bde3fc</Value><Value>80</Value></row> + <row><Value>03</Value><Value>Бурятия</Value> <Value>Респ</Value> <Value>670000</Value><Value>670-671</Value><Value>a84ebed3-153d-4ba9-8532-8bdf879e1f5a</Value><Value>81</Value></row> + <row><Value>04</Value><Value>Алтай</Value> <Value>Респ</Value> <Value>649000</Value><Value>649</Value><Value>5c48611f-5de6-4771-9695-7e36a4e7529d</Value><Value>84</Value></row> + <row><Value>05</Value><Value>Дагестан</Value> <Value>Респ</Value> <Value>368000</Value><Value>367-368</Value><Value>0bb7fa19-736d-49cf-ad0e-9774c4dae09b</Value><Value>82</Value></row> + <row><Value>06</Value><Value>Ингушетия</Value> <Value>Респ</Value> <Value>386000</Value><Value>386</Value><Value>b2d8cd20-cabc-4deb-afad-f3c4b4d55821</Value><Value>26</Value></row> + <row><Value>07</Value><Value>Кабардино-Балкарская</Value> <Value>Респ</Value> <Value>000000</Value><Value>360-367</Value><Value>1781f74e-be4a-4697-9c6b-493057c94818</Value><Value>83</Value></row> + <row><Value>08</Value><Value>Калмыкия</Value> <Value>Респ</Value> <Value>000000</Value><Value>358-359</Value><Value>491cde9d-9d76-4591-ab46-ea93c079e686</Value><Value>85</Value></row> + <row><Value>09</Value><Value>Карачаево-Черкесская</Value> <Value>Респ</Value> <Value>000000</Value><Value>369</Value><Value>61b95807-388a-4cb1-9bee-889f7cf811c8</Value><Value>91</Value></row> + <row><Value>10</Value><Value>Карелия</Value> <Value>Респ</Value> <Value>000000</Value><Value>185-186</Value><Value>248d8071-06e1-425e-a1cf-d1ff4c4a14a8</Value><Value>86</Value></row> + <row><Value>11</Value><Value>Коми</Value> <Value>Респ</Value> <Value>000000</Value><Value>167-169</Value><Value>c20180d9-ad9c-46d1-9eff-d60bc424592a</Value><Value>87</Value></row> + <row><Value>12</Value><Value>Марий Эл</Value> <Value>Респ</Value> <Value>000000</Value><Value>424-425</Value><Value>de2cbfdf-9662-44a4-a4a4-8ad237ae4a3e</Value><Value>88</Value></row> + <row><Value>13</Value><Value>Мордовия</Value> <Value>Респ</Value> <Value>000000</Value><Value>430-431</Value><Value>37a0c60a-9240-48b5-a87f-0d8c86cdb6e1</Value><Value>89</Value></row> + <row><Value>14</Value><Value>Саха /Якутия/</Value> <Value>Респ</Value> <Value>000000</Value><Value>677-678</Value><Value>c225d3db-1db6-4063-ace0-b3fe9ea3805f</Value><Value>98</Value></row> + <row><Value>15</Value><Value>Северная Осетия - Алания</Value> <Value>Респ</Value> <Value>000000</Value><Value>362-363</Value><Value>de459e9c-2933-4923-83d1-9c64cfd7a817</Value><Value>90</Value></row> + <row><Value>16</Value><Value>Татарстан</Value> <Value>Респ</Value> <Value>420000</Value><Value>420-423</Value><Value>0c089b04-099e-4e0e-955a-6bf1ce525f1a</Value><Value>92</Value></row> + <row><Value>17</Value><Value>Тыва</Value> <Value>Респ</Value> <Value>660000</Value><Value>667-668</Value><Value>026bc56f-3731-48e9-8245-655331f596c0</Value><Value>93</Value></row> + <row><Value>18</Value><Value>Удмуртская</Value> <Value>Респ</Value> <Value>000000</Value><Value>426-427</Value><Value>52618b9c-bcbb-47e7-8957-95c63f0b17cc</Value><Value>94</Value></row> + <row><Value>19</Value><Value>Хакасия</Value> <Value>Респ</Value> <Value>655000</Value><Value>655</Value><Value>8d3f1d35-f0f4-41b5-b5b7-e7cadf3e7bd7</Value><Value>95</Value></row> + <row><Value>20</Value><Value>Чеченская</Value> <Value>Респ</Value> <Value>000000</Value><Value>364-366</Value><Value>de67dc49-b9ba-48a3-a4cc-c2ebfeca6c5e</Value><Value>96</Value></row> + <row><Value>21</Value><Value>Чувашская Республика -</Value> <Value>Чувашия</Value><Value>000000</Value><Value>428-429</Value><Value>878fc621-3708-46c7-a97f-5a13a4176b3e</Value><Value>97</Value></row> + <row><Value>22</Value><Value>Алтайский</Value> <Value>край</Value> <Value>000000</Value><Value>656-659</Value><Value>8276c6a1-1a86-4f0d-8920-aba34d4cc34a</Value><Value>01</Value></row> + <row><Value>23</Value><Value>Краснодарский</Value> <Value>край</Value> <Value>000000</Value><Value>350-354</Value><Value>d00e1013-16bd-4c09-b3d5-3cb09fc54bd8</Value><Value>03</Value></row> + <row><Value>24</Value><Value>Красноярский</Value> <Value>край</Value> <Value>000000</Value><Value>660-663,647-648</Value><Value>db9c4f8b-b706-40e2-b2b4-d31b98dcd3d1</Value><Value>04</Value></row> + <row><Value>25</Value><Value>Приморский</Value> <Value>край</Value> <Value>000000</Value><Value>690-692</Value><Value>43909681-d6e1-432d-b61f-ddac393cb5da</Value><Value>05</Value></row> + <row><Value>26</Value><Value>Ставропольский</Value> <Value>край</Value> <Value>000000</Value><Value>355-357</Value><Value>327a060b-878c-4fb4-8dc4-d5595871a3d8</Value><Value>07</Value></row> + <row><Value>27</Value><Value>Хабаровский</Value> <Value>край</Value> <Value>000000</Value><Value>680-682</Value><Value>7d468b39-1afa-41ec-8c4f-97a8603cb3d4</Value><Value>08</Value></row> + <row><Value>28</Value><Value>Амурская</Value> <Value>обл</Value> <Value>675000</Value><Value>675-676</Value><Value>844a80d6-5e31-4017-b422-4d9c01e9942c</Value><Value>10</Value></row> + <row><Value>29</Value><Value>Архангельская</Value> <Value>обл</Value> <Value>000000</Value><Value>163-165</Value><Value>294277aa-e25d-428c-95ad-46719c4ddb44</Value><Value>11</Value></row> + <row><Value>30</Value><Value>Астраханская</Value> <Value>обл</Value> <Value>000000</Value><Value>414-416</Value><Value>83009239-25cb-4561-af8e-7ee111b1cb73</Value><Value>12</Value></row> + <row><Value>31</Value><Value>Белгородская</Value> <Value>обл</Value> <Value>000000</Value><Value>308-309</Value><Value>639efe9d-3fc8-4438-8e70-ec4f2321f2a7</Value><Value>14</Value></row> + <row><Value>32</Value><Value>Брянская</Value> <Value>обл</Value> <Value>000000</Value><Value>241-243</Value><Value>f5807226-8be0-4ea8-91fc-39d053aec1e2</Value><Value>15</Value></row> + <row><Value>33</Value><Value>Владимирская</Value> <Value>обл</Value> <Value>000000</Value><Value>600-602</Value><Value>b8837188-39ee-4ff9-bc91-fcc9ed451bb3</Value><Value>17</Value></row> + <row><Value>34</Value><Value>Волгоградская</Value> <Value>обл</Value> <Value>000000</Value><Value>400-404</Value><Value>da051ec8-da2e-4a66-b542-473b8d221ab4</Value><Value>18</Value></row> + <row><Value>35</Value><Value>Вологодская</Value> <Value>обл</Value> <Value>000000</Value><Value>160-162</Value><Value>ed36085a-b2f5-454f-b9a9-1c9a678ee618</Value><Value>19</Value></row> + <row><Value>36</Value><Value>Воронежская</Value> <Value>обл</Value> <Value>000000</Value><Value>394-397</Value><Value>b756fe6b-bbd3-44d5-9302-5bfcc740f46e</Value><Value>20</Value></row> + <row><Value>37</Value><Value>Ивановская</Value> <Value>обл</Value> <Value>000000</Value><Value>153-155</Value><Value>0824434f-4098-4467-af72-d4f702fed335</Value><Value>24</Value></row> + <row><Value>38</Value><Value>Иркутская</Value> <Value>обл</Value> <Value>000000</Value><Value>664-668,669</Value><Value>6466c988-7ce3-45e5-8b97-90ae16cb1249</Value><Value>25</Value></row> + <row><Value>39</Value><Value>Калининградская</Value> <Value>обл</Value> <Value>000000</Value><Value>236-238</Value><Value>90c7181e-724f-41b3-b6c6-bd3ec7ae3f30</Value><Value>27</Value></row> + <row><Value>40</Value><Value>Калужская</Value> <Value>обл</Value> <Value>000000</Value><Value>248-249</Value><Value>18133adf-90c2-438e-88c4-62c41656de70</Value><Value>29</Value></row> + <row><Value>41</Value><Value>Камчатский</Value> <Value>край</Value> <Value>000000</Value><Value>683-684,688</Value><Value>d02f30fc-83bf-4c0f-ac2b-5729a866a207</Value><Value>30</Value></row> + <row><Value>42</Value><Value>Кемеровская</Value> <Value>обл</Value> <Value>000000</Value><Value>650-654</Value><Value>393aeccb-89ef-4a7e-ae42-08d5cebc2e30</Value><Value>32</Value></row> + <row><Value>43</Value><Value>Кировская</Value> <Value>обл</Value> <Value>610000</Value><Value>610-613</Value><Value>0b940b96-103f-4248-850c-26b6c7296728</Value><Value>33</Value></row> + <row><Value>44</Value><Value>Костромская</Value> <Value>обл</Value> <Value>000000</Value><Value>156-157</Value><Value>15784a67-8cea-425b-834a-6afe0e3ed61c</Value><Value>34</Value></row> + <row><Value>45</Value><Value>Курганская</Value> <Value>обл</Value> <Value>641000</Value><Value>640-641</Value><Value>4a3d970f-520e-46b9-b16c-50d4ca7535a8</Value><Value>37</Value></row> + <row><Value>46</Value><Value>Курская</Value> <Value>обл</Value> <Value>000000</Value><Value>305-307</Value><Value>ee594d5e-30a9-40dc-b9f2-0add1be44ba1</Value><Value>38</Value></row> + <row><Value>47</Value><Value>Ленинградская</Value> <Value>обл</Value> <Value>000000</Value><Value>187-188</Value><Value>6d1ebb35-70c6-4129-bd55-da3969658f5d</Value><Value>41</Value></row> + <row><Value>48</Value><Value>Липецкая</Value> <Value>обл</Value> <Value>000000</Value><Value>398-399</Value><Value>1490490e-49c5-421c-9572-5673ba5d80c8</Value><Value>42</Value></row> + <row><Value>49</Value><Value>Магаданская</Value> <Value>обл</Value> <Value>000000</Value><Value>685-686</Value><Value>9c05e812-8679-4710-b8cb-5e8bd43cdf48</Value><Value>44</Value></row> + <row><Value>50</Value><Value>Московская</Value> <Value>обл</Value> <Value>000000</Value><Value>140-144</Value><Value>29251dcf-00a1-4e34-98d4-5c47484a36d4</Value><Value>46</Value></row> + <row><Value>51</Value><Value>Мурманская</Value> <Value>обл</Value> <Value>000000</Value><Value>183-184</Value><Value>1c727518-c96a-4f34-9ae6-fd510da3be03</Value><Value>47</Value></row> + <row><Value>52</Value><Value>Нижегородская</Value> <Value>обл</Value> <Value>000000</Value><Value>603-607</Value><Value>88cd27e2-6a8a-4421-9718-719a28a0a088</Value><Value>22</Value></row> + <row><Value>53</Value><Value>Новгородская</Value> <Value>обл</Value> <Value>000000</Value><Value>173-175</Value><Value>e5a84b81-8ea1-49e3-b3c4-0528651be129</Value><Value>49</Value></row> + <row><Value>54</Value><Value>Новосибирская</Value> <Value>обл</Value> <Value>000000</Value><Value>630-633</Value><Value>1ac46b49-3209-4814-b7bf-a509ea1aecd9</Value><Value>50</Value></row> + <row><Value>55</Value><Value>Омская</Value> <Value>обл</Value> <Value>000000</Value><Value>644-646</Value><Value>05426864-466d-41a3-82c4-11e61cdc98ce</Value><Value>52</Value></row> + <row><Value>56</Value><Value>Оренбургская</Value> <Value>обл</Value> <Value>460000</Value><Value>460-462</Value><Value>8bcec9d6-05bc-4e53-b45c-ba0c6f3a5c44</Value><Value>53</Value></row> + <row><Value>57</Value><Value>Орловская</Value> <Value>обл</Value> <Value>000000</Value><Value>302-303</Value><Value>5e465691-de23-4c4e-9f46-f35a125b5970</Value><Value>54</Value></row> + <row><Value>58</Value><Value>Пензенская</Value> <Value>обл</Value> <Value>000000</Value><Value>440-442</Value><Value>c99e7924-0428-4107-a302-4fd7c0cca3ff</Value><Value>56</Value></row> + <row><Value>59</Value><Value>Пермский</Value> <Value>край</Value> <Value>000000</Value><Value>614-619</Value><Value>4f8b1a21-e4bb-422f-9087-d3cbf4bebc14</Value><Value>57</Value></row> + <row><Value>60</Value><Value>Псковская</Value> <Value>обл</Value> <Value>000000</Value><Value>180-182</Value><Value>f6e148a1-c9d0-4141-a608-93e3bd95e6c4</Value><Value>58</Value></row> + <row><Value>61</Value><Value>Ростовская</Value> <Value>обл</Value> <Value>000000</Value><Value>344-347</Value><Value>f10763dc-63e3-48db-83e1-9c566fe3092b</Value><Value>60</Value></row> + <row><Value>62</Value><Value>Рязанская</Value> <Value>обл</Value> <Value>390000</Value><Value>390-391</Value><Value>963073ee-4dfc-48bd-9a70-d2dfc6bd1f31</Value><Value>61</Value></row> + <row><Value>63</Value><Value>Самарская</Value> <Value>обл</Value> <Value>000000</Value><Value>443-446</Value><Value>df3d7359-afa9-4aaa-8ff9-197e73906b1c</Value><Value>36</Value></row> + <row><Value>64</Value><Value>Саратовская</Value> <Value>обл</Value> <Value>410000</Value><Value>410-413</Value><Value>df594e0e-a935-4664-9d26-0bae13f904fe</Value><Value>63</Value></row> + <row><Value>65</Value><Value>Сахалинская</Value> <Value>обл</Value> <Value>693000</Value><Value>693-694</Value><Value>aea6280f-4648-460f-b8be-c2bc18923191</Value><Value>64</Value></row> + <row><Value>66</Value><Value>Свердловская</Value> <Value>обл</Value> <Value>620000</Value><Value>620-624</Value><Value>92b30014-4d52-4e2e-892d-928142b924bf</Value><Value>65</Value></row> + <row><Value>67</Value><Value>Смоленская</Value> <Value>обл</Value> <Value>000000</Value><Value>214-216</Value><Value>e8502180-6d08-431b-83ea-c7038f0df905</Value><Value>66</Value></row> + <row><Value>68</Value><Value>Тамбовская</Value> <Value>обл</Value> <Value>392000</Value><Value>392-393</Value><Value>a9a71961-9363-44ba-91b5-ddf0463aebc2</Value><Value>68</Value></row> + <row><Value>69</Value><Value>Тверская</Value> <Value>обл</Value> <Value>000000</Value><Value>170-172</Value><Value>61723327-1c20-42fe-8dfa-402638d9b396</Value><Value>28</Value></row> + <row><Value>70</Value><Value>Томская</Value> <Value>обл</Value> <Value>000000</Value><Value>634-636</Value><Value>889b1f3a-98aa-40fc-9d3d-0f41192758ab</Value><Value>69</Value></row> + <row><Value>71</Value><Value>Тульская</Value> <Value>обл</Value> <Value>000000</Value><Value>300-301</Value><Value>d028ec4f-f6da-4843-ada6-b68b3e0efa3d</Value><Value>70</Value></row> + <row><Value>72</Value><Value>Тюменская</Value> <Value>обл</Value> <Value>000000</Value><Value>625-627</Value><Value>54049357-326d-4b8f-b224-3c6dc25d6dd3</Value><Value>71</Value></row> + <row><Value>73</Value><Value>Ульяновская</Value> <Value>обл</Value> <Value>433000</Value><Value>432-433</Value><Value>fee76045-fe22-43a4-ad58-ad99e903bd58</Value><Value>73</Value></row> + <row><Value>74</Value><Value>Челябинская</Value> <Value>обл</Value> <Value>454000</Value><Value>454-457</Value><Value>27eb7c10-a234-44da-a59c-8b1f864966de</Value><Value>75</Value></row> + <row><Value>75</Value><Value>Забайкальский</Value> <Value>край</Value> <Value>000000</Value><Value>672-674,687</Value><Value>b6ba5716-eb48-401b-8443-b197c9578734</Value><Value></Value></row> + <row><Value>76</Value><Value>Ярославская</Value> <Value>обл</Value> <Value>000000</Value><Value>150-152</Value><Value>a84b2ef4-db03-474b-b552-6229e801ae9b</Value><Value>78</Value></row> + <row><Value>77</Value><Value>Москва</Value> <Value>г</Value> <Value>000000</Value><Value>101-135</Value><Value>0c5b2444-70a0-4932-980c-b4dc0d3f02b5</Value><Value>45</Value></row> + <row><Value>78</Value><Value>Санкт-Петербург</Value> <Value>г</Value> <Value>190000</Value><Value>190-199</Value><Value>c2deb16a-0330-4f05-821f-1d09c93331e6</Value><Value>40</Value></row> + <row><Value>79</Value><Value>Еврейская</Value> <Value>Аобл</Value> <Value>000000</Value><Value>679</Value><Value>1b507b09-48c9-434f-bf6f-65066211c73e</Value><Value>99</Value></row> + <row><Value>83</Value><Value>Ненецкий</Value> <Value>АО</Value> <Value>166000</Value><Value>166</Value><Value>89db3198-6803-4106-9463-cbf781eff0b8</Value><Value>118</Value></row> + <row><Value>86</Value><Value>Ханты-Мансийский Автономный округ - Югра</Value><Value>АО</Value> <Value>000000</Value><Value>628</Value><Value>d66e5325-3a25-4d29-ba86-4ca351d9704b</Value><Value>718</Value></row> + <row><Value>87</Value><Value>Чукотский</Value> <Value>АО</Value> <Value>000000</Value><Value>689</Value><Value>f136159b-404a-4f1f-8d8d-d169e1374d5c</Value><Value>77</Value></row> + <row><Value>89</Value><Value>Ямало-Ненецкий</Value> <Value>АО</Value> <Value>629000</Value><Value>629</Value><Value>826fa834-3ee8-404f-bdbc-13a5221cfb6e</Value><Value>719</Value></row> + <row><Value>91</Value><Value>Крым</Value> <Value>Респ</Value> <Value>000000</Value><Value>295-298</Value><Value>bd8e6511-e4b9-4841-90de-6bbc231a789e</Value><Value>35</Value></row> + <row><Value>92</Value><Value>Севастополь</Value> <Value>г</Value> <Value>000000</Value><Value>299</Value><Value>6fdecb78-893a-4e3f-a5ba-aa062459463b</Value><Value>67</Value></row> + <row><Value>99</Value><Value>Байконур</Value> <Value>г</Value> <Value>468320</Value><Value>468</Value><Value>63ed1a35-4be6-4564-a1ec-0c51f7383314</Value><Value></Value></row> -</ValueTable> +</ValueTable> \ No newline at end of file diff --git a/SSL/src/InformationRegisters/ВерсииОбъектов/ManagerModule.bsl b/SSL/src/InformationRegisters/ВерсииОбъектов/ManagerModule.bsl index d12730abc..3d192e74e 100644 --- a/SSL/src/InformationRegisters/ВерсииОбъектов/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/ВерсииОбъектов/ManagerModule.bsl @@ -189,7 +189,7 @@ ТаблицаИзмененийТабличныхЧастей[ИмяТаблицы][ИмяКолонкиТекущейВерсии] = ВерсияОбъекта.ТабличныеЧасти[ИмяТаблицы].Скопировать(); - СсылкаНаВерсиюТаблицы = ТаблицаИзмененийТабличныхЧастей[ИмяТаблицы][ИмяКолонкиТекущейВерсии]; + СсылкаНаВерсиюТаблицы = ТаблицаИзмененийТабличныхЧастей[ИмяТаблицы][ИмяКолонкиТекущейВерсии];// ТаблицаЗначений СсылкаНаВерсиюТаблицы.Колонки.Добавить("Версионирование_ИдСтроки"); Для Каждого СтрокаТаблицы Из СсылкаНаВерсиюТаблицы Цикл СтрокаТаблицы.Версионирование_ИдСтроки = СтрокаТаблицы.НомерСтроки; @@ -463,7 +463,7 @@ ПромежутокМеждуЗаполнениями = ПромежутокМеждуЗаполнениями + 1; ТекущаяКолонкаВерсииТЧ = "Версия" + Формат(МассивНомеровВерсий[ИндексПоВерсиям-1], "ЧГ=0"); // Табличная часть текущей версии (таблица значений с признаками модификации). - ТекущаяТЧВерсии = ВерсииТекущейТЧ[ТекущаяКолонкаВерсииТЧ]; + ТекущаяТЧВерсии = ВерсииТекущейТЧ[ТекущаяКолонкаВерсииТЧ];// ТаблицаЗначений НайденнаяСтрока = ТекущаяТЧВерсии.Найти(ТекСчетчикУникальныйИд, "Версионирование_ИдСтроки"); // В очередной версии найдено изменение строки (возможно это первое изменение с конца). @@ -835,8 +835,8 @@ // Формируем список ТабличныхДокументов // /////////////////////////////////////////////////////////////////////////////// - ТабличныеДокументы0 = РезультатРазбораВерсии_0.ТабличныеДокументы; - ТабличныеДокументы1 = РезультатРазбораВерсии_1.ТабличныеДокументы; + ТабличныеДокументы0 = РезультатРазбораВерсии_0.ТабличныеДокументы;// см. ВерсионированиеОбъектов.ТабличныеДокументыОбъекта + ТабличныеДокументы1 = РезультатРазбораВерсии_1.ТабличныеДокументы;// см. ВерсионированиеОбъектов.ТабличныеДокументыОбъекта СписокТабличныхДокументов0 = СоздатьТаблицуСравнения(); СписокТабличныхДокументов0.Колонки.Добавить("Представление"); @@ -1077,7 +1077,7 @@ ПодготовитьКолонкиТаблицИзмененийДляСоответствия(ТаблицаТЧ[ЭлементТЧ.Ключ], МассивНомеровВерсий); ТаблицаТЧ[ЭлементТЧ.Ключ]["Версия" + Формат(МладшаяВерсияОбъекта, "ЧГ=0")] = ЭлементТЧ.Значение.Скопировать(); - ТекущаяТЗ = ТаблицаТЧ[ЭлементТЧ.Ключ]["Версия" + Формат(МладшаяВерсияОбъекта, "ЧГ=0")]; + ТекущаяТЗ = ТаблицаТЧ[ЭлементТЧ.Ключ]["Версия" + Формат(МладшаяВерсияОбъекта, "ЧГ=0")];// ТаблицаЗначений ТекущаяТЗ.Колонки.Добавить("Версионирование_ИдСтроки"); ТекущаяТЗ.Колонки.Добавить("Версионирование_Модификация"); @@ -1119,6 +1119,13 @@ Возврат Истина; КонецФункции +// Параметры: +// СтрокаТЧ1 - СтрокаТаблицыЗначений +// СтрокаТЧ2 - СтрокаТаблицыЗначений +// Колонки - КоллекцияКолонокТаблицыЗначений +// Возвращаемое значение: +// Булево +// Функция СтрокиТЧРавны(СтрокаТЧ1, СтрокаТЧ2, Колонки) Для Каждого Колонка Из Колонки Цикл @@ -1307,6 +1314,10 @@ КонецФункции + +// Параметры: +// СтрокаТаблицы - СтрокаТаблицыЗначений +// Функция ИндексСтроки(СтрокаТаблицы) Возврат СтрокаТаблицы.Владелец().Индекс(СтрокаТаблицы); КонецФункции @@ -1314,7 +1325,7 @@ Процедура ДобавитьНомераСтрокВТабличныеЧасти(ТабличныеЧасти) Для Каждого Соответствие Из ТабличныеЧасти Цикл - Таблица = Соответствие.Значение; + Таблица = Соответствие.Значение;// ТаблицаЗначений Если Таблица.Колонки.Найти("НомерСтроки") <> Неопределено Тогда Продолжить; КонецЕсли; diff --git a/SSL/src/InformationRegisters/ГруппыЗначенийДоступа/ManagerModule.bsl b/SSL/src/InformationRegisters/ГруппыЗначенийДоступа/ManagerModule.bsl index 8d6ca3fbe..b8117667f 100644 --- a/SSL/src/InformationRegisters/ГруппыЗначенийДоступа/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/ГруппыЗначенийДоступа/ManagerModule.bsl @@ -179,7 +179,7 @@ // Параметры: // ЗначенияДоступа - СправочникОбъект, // - СправочникСсылка. -// - Массив значений указанных выше типов. +// - массив значений указанных выше типов. // - Неопределено - без отбора. // Тип значений должен быть в составе типов измерения Значение // регистра сведений ГруппыЗначенийДоступа. @@ -256,6 +256,7 @@ Процедура ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию(Параметры) Экспорт // Регистрация данных не требуется. + Возврат; КонецПроцедуры diff --git a/SSL/src/InformationRegisters/ДанныеОбработанныеВЦентральномУзлеРИБ/ManagerModule.bsl b/SSL/src/InformationRegisters/ДанныеОбработанныеВЦентральномУзлеРИБ/ManagerModule.bsl index bcd09e1a1..d13b1ed32 100644 --- a/SSL/src/InformationRegisters/ДанныеОбработанныеВЦентральномУзлеРИБ/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/ДанныеОбработанныеВЦентральномУзлеРИБ/ManagerModule.bsl @@ -14,9 +14,14 @@ // // Параметры: // Очередь - Число - очередь обработки, в которой выполняется текущий обработчик. -// Данные - Ссылка, Массив, НаборДанных - данные, по которым нужно зарегистрировать изменения. +// Данные - ЛюбаяСсылка +// - РегистрСведенийНаборЗаписей +// - РегистрНакопленияНаборЗаписей +// - РегистрБухгалтерииНаборЗаписей +// - РегистрРасчетаНаборЗаписей +// - Массив из ЛюбаяСсылка - данные, по которым нужно зарегистрировать изменения. // Регистрация по независимому регистру сведений не поддерживается. -// ДополнительныеПараметры - см. ОбновлениеИнформационнойБазы.ДополнительныеПараметрыОтметкиОбработки. +// ДополнительныеПараметры - см. ОбновлениеИнформационнойБазы.ДополнительныеПараметрыОтметкиОбработки // Процедура ОтметитьВыполнениеОбработки(Очередь, Данные, ДополнительныеПараметры) Экспорт diff --git a/SSL/src/InformationRegisters/ДатыЗапретаИзменения/Forms/ДатыЗапретаИзменения/Module.bsl b/SSL/src/InformationRegisters/ДатыЗапретаИзменения/Forms/ДатыЗапретаИзменения/Module.bsl index 9022989af..4de762577 100644 --- a/SSL/src/InformationRegisters/ДатыЗапретаИзменения/Forms/ДатыЗапретаИзменения/Module.bsl +++ b/SSL/src/InformationRegisters/ДатыЗапретаИзменения/Forms/ДатыЗапретаИзменения/Module.bsl @@ -2186,16 +2186,16 @@ &НаСервереБезКонтекста Функция СсылкаДоступнаДляЧтения(ПроверяемаяСсылка) - ТекстЗапроса = " - |ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1 - | 1 + ТекстЗапроса = + "ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1 + | ИСТИНА КАК ЗначениеИстина |ИЗ - | [ИмяТаблицы] + | &ИмяТаблицы КАК ТекущаяТаблица |ГДЕ - | Ссылка = &Ссылка - |"; + | ТекущаяТаблица.Ссылка = &Ссылка"; - ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "[ИмяТаблицы]", ОбщегоНазначения.ИмяТаблицыПоСсылке(ПроверяемаяСсылка)); + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, + "&ИмяТаблицы", ОбщегоНазначения.ИмяТаблицыПоСсылке(ПроверяемаяСсылка)); Запрос = Новый Запрос; Запрос.Текст = ТекстЗапроса; diff --git a/SSL/src/InformationRegisters/ЗамерыВремени/ManagerModule.bsl b/SSL/src/InformationRegisters/ЗамерыВремени/ManagerModule.bsl index 88b93d548..2dd210196 100644 --- a/SSL/src/InformationRegisters/ЗамерыВремени/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/ЗамерыВремени/ManagerModule.bsl @@ -212,7 +212,7 @@ Возврат НастроечнаяТаблицаИнтервалов; -КонецФункции // НастроечнаяТаблицаИнтерваловПоУмолчанию() +КонецФункции // Формирует и возвращает таблицу интервалов из таблицы настроек интервалов // @@ -221,7 +221,7 @@ // Должна содержать колонки НижняяГраница, ВерхняяГраница, Шаг типа Число. // // Возвращаемое значение: -// ТаблицаИнтервалов - Таблица, содержащая нижнее и верхнее граничные значения для каждого из интервалов. +// ТаблицаИнтервалов - таблица, содержащая нижнее и верхнее граничные значения для каждого из интервалов. // Колонки: НижняяГраница, ВерхняяГраница. // Функция ТаблицаИнтерваловПоНастройкам(ТаблицаНастроек) @@ -281,7 +281,7 @@ Возврат ТаблицаИнтервалов; -КонецФункции // ТаблицаИнтерваловПоНастройкам() +КонецФункции // Формирует и возвращает часть текстам запроса по таблице интервалов // diff --git a/SSL/src/InformationRegisters/ЗамерыВремениТехнологические/ManagerModule.bsl b/SSL/src/InformationRegisters/ЗамерыВремениТехнологические/ManagerModule.bsl index 02a4d359a..de2558813 100644 --- a/SSL/src/InformationRegisters/ЗамерыВремениТехнологические/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/ЗамерыВремениТехнологические/ManagerModule.bsl @@ -171,7 +171,7 @@ Возврат НастроечнаяТаблицаИнтервалов; -КонецФункции // НастроечнаяТаблицаИнтерваловПоУмолчанию() +КонецФункции // Формирует и возвращает таблицу интервалов из таблицы настроек интервалов // @@ -180,7 +180,7 @@ // Должна содержать колонки НижняяГраница, ВерхняяГраница, Шаг типа Число. // // Возвращаемое значение: -// ТаблицаИнтервалов - Таблица, содержащая нижнее и верхнее граничные значения для каждого из интервалов. +// ТаблицаИнтервалов - таблица, содержащая нижнее и верхнее граничные значения для каждого из интервалов. // Колонки: НижняяГраница, ВерхняяГраница. // Функция ТаблицаИнтерваловПоНастройкам(ТаблицаНастроек) @@ -240,7 +240,7 @@ Возврат ТаблицаИнтервалов; -КонецФункции // ТаблицаИнтерваловПоНастройкам() +КонецФункции // Формирует и возвращает часть текстам запроса по таблице интервалов // diff --git a/SSL/src/InformationRegisters/ЗапросыРазрешенийНаИспользованиеВнешнихРесурсов/ManagerModule.bsl b/SSL/src/InformationRegisters/ЗапросыРазрешенийНаИспользованиеВнешнихРесурсов/ManagerModule.bsl index fd8e4e99a..78927601c 100644 --- a/SSL/src/InformationRegisters/ЗапросыРазрешенийНаИспользованиеВнешнихРесурсов/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/ЗапросыРазрешенийНаИспользованиеВнешнихРесурсов/ManagerModule.bsl @@ -250,7 +250,7 @@ // Проверяет необходимость интерактивного запроса разрешений на использование внешних ресурсов. // // Возвращаемое значение: -// Булево - +// Булево // Функция ТребуетсяЗапросРазрешенийНаИспользованиеВнешнихРесурсов() @@ -265,7 +265,7 @@ // Проверяет возможность интерактивного запроса разрешений на использование внешних ресурсов. // // Возвращаемое значение: -// Булево - +// Булево // Функция ВозможенЗапросРазрешенийНаИспользованиеВнешнихРесурсов() diff --git a/SSL/src/InformationRegisters/ЗначенияГруппДоступа/ManagerModule.bsl b/SSL/src/InformationRegisters/ЗначенияГруппДоступа/ManagerModule.bsl index 75f2fd2c2..fcfdc816b 100644 --- a/SSL/src/InformationRegisters/ЗначенияГруппДоступа/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/ЗначенияГруппДоступа/ManagerModule.bsl @@ -36,7 +36,7 @@ // // Параметры: // ГруппыДоступа - СправочникСсылка.ГруппыДоступа. -// - Массив значений указанных выше типов. +// - массив значений указанных выше типов. // - Неопределено - без отбора. // // ЕстьИзменения - Булево - (возвращаемое значение) - если производилась запись, @@ -56,9 +56,10 @@ ИспользуемыеВидыДоступа.Колонки.Добавить("ВидДоступа", Метаданные.ОпределяемыеТипы.ЗначениеДоступа.Тип); ИспользуемыеВидыДоступа.Колонки.Добавить("ВидДоступаПользователи", Новый ОписаниеТипов("Булево")); ИспользуемыеВидыДоступа.Колонки.Добавить("ВидДоступаВнешниеПользователи", Новый ОписаниеТипов("Булево")); - СвойстваВидовДоступа = УправлениеДоступомСлужебный.СвойстваВидаДоступа(); - Для каждого СвойстваВидаДоступа Из СвойстваВидовДоступа Цикл + СвойстваВидовДоступа = УправлениеДоступомСлужебныйПовтИсп.СвойстваВидовДоступа(); + + Для Каждого СвойстваВидаДоступа Из СвойстваВидовДоступа.Массив Цикл Если Не УправлениеДоступомСлужебный.ВидДоступаИспользуется(СвойстваВидаДоступа.Ссылка) И Не СвойстваВидаДоступа.Имя = "ДополнительныеОтчетыИОбработки" Тогда Продолжить; diff --git a/SSL/src/InformationRegisters/ИсполнителиЗадач/RecordSetModule.bsl b/SSL/src/InformationRegisters/ИсполнителиЗадач/RecordSetModule.bsl index 215597149..490d2cbe0 100644 --- a/SSL/src/InformationRegisters/ИсполнителиЗадач/RecordSetModule.bsl +++ b/SSL/src/InformationRegisters/ИсполнителиЗадач/RecordSetModule.bsl @@ -11,7 +11,8 @@ #Область ОписаниеПеременных // СтандартныеПодсистемы.УправлениеДоступом -Перем ИзмененныеГруппыИсполнителей; // Группы исполнителей, состав которых был изменен. +Перем ИзмененныеГруппыИсполнителей; // Массив из СправочникСсылка.ГруппыИсполнителейЗадач - + // группы исполнителей, состав которых был изменен. // Конец СтандартныеПодсистемы.УправлениеДоступом #КонецОбласти diff --git a/SSL/src/InformationRegisters/КалендарныеГрафики/ManagerModule.bsl b/SSL/src/InformationRegisters/КалендарныеГрафики/ManagerModule.bsl index 61db417b5..119d46000 100644 --- a/SSL/src/InformationRegisters/КалендарныеГрафики/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/КалендарныеГрафики/ManagerModule.bsl @@ -342,10 +342,10 @@ // Функция читает данные графика работы из регистра. // // Параметры: -// ГрафикРаботы - Ссылка на текущий элемент справочника. -// НомерГода - Номер года, за который необходимо прочитать график. +// ГрафикРаботы - ссылка на текущий элемент справочника. +// НомерГода - номер года, за который необходимо прочитать график. // -// Возвращаемое значение - соответствие, где Ключ - дата. +// Возвращаемое значение - соответствие - где Ключ - дата. // Функция ПрочитатьДанныеГрафикаИзРегистра(ГрафикРаботы, НомерГода) Экспорт @@ -380,8 +380,8 @@ // Процедура записывает данные графика в регистр. // // Параметры: -// ГрафикРаботы - Ссылка на текущий элемент справочника. -// НомерГода - Номер года, за который необходимо записать график. +// ГрафикРаботы - ссылка на текущий элемент справочника. +// НомерГода - номер года, за который необходимо записать график. // ДниВключенныеВГрафик - соответствие даты и данных к ней относящихся. // // Возвращаемое значение @@ -512,7 +512,7 @@ // ДниВключенныеВГрафик, ДниВключенныеВГрафикПоНеделям, ДниВключенныеВГрафикПроизвольнойДлины. // // Возвращаемое значение: -// Структура - Описание: +// Структура: // * ПроизводственныйКалендарь // * СпособЗаполнения // * ШаблонЗаполнения @@ -520,6 +520,7 @@ // * УчитыватьНерабочиеПериоды // * НерабочиеПериоды // * ДатаОтсчета +// Функция ПараметрыЗаполненияГрафика() Экспорт ПараметрыЗаполнения = Новый Структура( "ПроизводственныйКалендарь, @@ -538,13 +539,14 @@ // способа заполнения и других настроек. // // Параметры: -// ДатаНачала - Дата - Начало заполнения данных. -// ДатаОкончания - Дата - Окончание заполнения данных. -// ПараметрыЗаполнения - Структура - См. ПараметрыЗаполнения. +// ДатаНачала - Дата - начало заполнения данных. +// ДатаОкончания - Дата - окончание заполнения данных. +// ПараметрыЗаполнения - см. ПараметрыЗаполнения. // // Возвращаемое значение: -// Соответствие - где Ключ - дата, значение массив структур с описанием интервалов времени для +// Соответствие - где Ключ - дата, значение массив структур с описанием интервалов времени для: // указанной даты. +// Функция ДниВключенныеВГрафик(ДатаНачала, ДатаОкончания, ПараметрыЗаполнения) Экспорт ДниВключенныеВГрафик = Новый Соответствие; diff --git a/SSL/src/InformationRegisters/КодировкиФайлов/ManagerModule.bsl b/SSL/src/InformationRegisters/КодировкиФайлов/ManagerModule.bsl new file mode 100644 index 000000000..a692c95ca --- /dev/null +++ b/SSL/src/InformationRegisters/КодировкиФайлов/ManagerModule.bsl @@ -0,0 +1,327 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2020, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область СлужебныеПроцедурыИФункции + +// Возвращает кодировку версии файла. +// +// Параметры: +// ВерсияСсылка - ОпределяемыйТип.ПрисоединенныеФайлы - версия файла. +// +// Возвращаемое значение: +// Строка +// +Функция КодировкаВерсииФайла(ВерсияСсылка) Экспорт + + УстановитьПривилегированныйРежим(Истина); + + МенеджерЗаписи = РегистрыСведений.КодировкиФайлов.СоздатьМенеджерЗаписи(); + МенеджерЗаписи.Файл = ВерсияСсылка; + МенеджерЗаписи.Прочитать(); + + Возврат МенеджерЗаписи.Кодировка; + +КонецФункции + +// Записывает кодировку версии файла. +// +// Параметры: +// ВерсияСсылка - ОпределяемыйТип.ПрисоединенныеФайлы - ссылка на версию файла. +// Кодировка - Строка - новая кодировка версии файла. +// +Процедура ЗаписатьКодировкуВерсииФайла(ВерсияСсылка, Кодировка) Экспорт + + УстановитьПривилегированныйРежим(Истина); + + МенеджерЗаписи = РегистрыСведений.КодировкиФайлов.СоздатьМенеджерЗаписи(); + МенеджерЗаписи.Файл = ВерсияСсылка; + МенеджерЗаписи.Кодировка = Кодировка; + МенеджерЗаписи.Записать(Истина); + +КонецПроцедуры + +// Автоматически определяет и возвращает кодировку текстового файла. +// +// Параметры: +// ПрисоединенныйФайл - ОпределяемыйТип.ПрисоединенныеФайлы +// Расширение - Строка - расширение файла. +// +// Возвращаемое значение: +// Строка +// +Функция ОпределитьКодировкуФайла(ПрисоединенныйФайл, Расширение) Экспорт + + Кодировка = КодировкаВерсииФайла(ПрисоединенныйФайл); + Если ЗначениеЗаполнено(Кодировка) Тогда + Возврат Кодировка; + КонецЕсли; + + ОбщиеНастройки = РаботаСФайламиСлужебныйПовтИсп.НастройкиРаботыСФайлами().ОбщиеНастройки; + АвтоопределениеКодировки = РаботаСФайламиСлужебныйКлиентСервер.РасширениеФайлаВСписке( + ОбщиеНастройки.СписокРасширенийТекстовыхФайлов, Расширение); + Если Не АвтоопределениеКодировки Тогда + Возврат Кодировка; + КонецЕсли; + + ДвоичныеДанные = РаботаСФайлами.ДвоичныеДанныеФайла(ПрисоединенныйФайл, Ложь); + Если ДвоичныеДанные <> Неопределено Тогда + Кодировка = КодировкаИзДвоичныхДанных(ДвоичныеДанные); + Если Не ЗначениеЗаполнено(Кодировка) Тогда + Если СтрЗаканчиваетсяНа(НРег(Расширение), "xml") Тогда + Кодировка = КодировкаИзОбъявленияXML(ДвоичныеДанные); + Иначе + Кодировка = КодировкаИзСоответствияАлфавиту(ДвоичныеДанные); + КонецЕсли; + + Если НРег(Кодировка) = "utf-8" Тогда + Кодировка = НРег(Кодировка) + "_WithoutBOM"; + КонецЕсли; + + КонецЕсли; + КонецЕсли; + Возврат Кодировка; + +КонецФункции + +// Возвращает кодировку, полученную из двоичных данных файла, если +// файл содержит сигнатуру BOM в начале. +// +// Параметры: +// ДвоичныеДанные - двоичные данные файла. +// +// Возвращаемое значение: +// Строка - кодировка файла. Если файл не содержит сигнатуру BOM, +// возвращает пустую строку. +// +Функция КодировкаИзДвоичныхДанных(ДвоичныеДанные) + + ЧтениеДанных = Новый ЧтениеДанных(ДвоичныеДанные); + БуферДвоичныхДанных = ЧтениеДанных.ПрочитатьВБуферДвоичныхДанных(5); + + Возврат КодировкаBOM(БуферДвоичныхДанных); + +КонецФункции + +// Возвращает кодировку, полученную из двоичных данных файла, если +// файл содержит объявление XML. +// +// Параметры: +// ДвоичныеДанные - двоичные данные файла. +// +// Возвращаемое значение: +// КодировкаXML - Строка - кодировка файла. Если невозможно прочитать +// объявление XML, возвращает пустую строку. +// +Функция КодировкаИзОбъявленияXML(ДвоичныеДанные) + + БуферДвоичныхДанных = ПолучитьБуферДвоичныхДанныхИзДвоичныхДанных(ДвоичныеДанные); + ПотокВПамяти = Новый ПотокВПамяти(БуферДвоичныхДанных); + ЧтениеXML = Новый ЧтениеXML; + ЧтениеXML.ОткрытьПоток(ПотокВПамяти); + Попытка + ЧтениеXML.ПерейтиКСодержимому(); + КодировкаXML = ЧтениеXML.КодировкаXML; + Исключение + КодировкаXML = ""; + КонецПопытки; + ЧтениеXML.Закрыть(); + ПотокВПамяти.Закрыть(); + + Возврат КодировкаXML; + +КонецФункции + +// Возвращает кодировку текста, полученную из сигнатуры BOM в начале. +// +// Параметры: +// БуферДвоичныхДанных - коллекция байтов для определения кодировки. +// +// Возвращаемое значение: +// Кодировка - Строка - кодировка файла. Если файл не содержит сигнатуру BOM, +// возвращает пустую строку. +// +Функция КодировкаBOM(БуферДвоичныхДанных) + + ПрочитанныеБайты = Новый Массив(5); + Для Индекс = 0 По 4 Цикл + Если Индекс < БуферДвоичныхДанных.Размер Тогда + ПрочитанныеБайты[Индекс] = БуферДвоичныхДанных[Индекс]; + Иначе + ПрочитанныеБайты[Индекс] = ЧислоИзШестнадцатеричнойСтроки("0xA5"); + КонецЕсли; + КонецЦикла; + + Если ПрочитанныеБайты[0] = ЧислоИзШестнадцатеричнойСтроки("0xFE") + И ПрочитанныеБайты[1] = ЧислоИзШестнадцатеричнойСтроки("0xFF") Тогда + Кодировка = "UTF-16BE"; + ИначеЕсли ПрочитанныеБайты[0] = ЧислоИзШестнадцатеричнойСтроки("0xFF") + И ПрочитанныеБайты[1] = ЧислоИзШестнадцатеричнойСтроки("0xFE") Тогда + Если ПрочитанныеБайты[2] = ЧислоИзШестнадцатеричнойСтроки("0x00") + И ПрочитанныеБайты[3] = ЧислоИзШестнадцатеричнойСтроки("0x00") Тогда + Кодировка = "UTF-32LE"; + Иначе + Кодировка = "UTF-16LE"; + КонецЕсли; + ИначеЕсли ПрочитанныеБайты[0] = ЧислоИзШестнадцатеричнойСтроки("0xEF") + И ПрочитанныеБайты[1] = ЧислоИзШестнадцатеричнойСтроки("0xBB") + И ПрочитанныеБайты[2] = ЧислоИзШестнадцатеричнойСтроки("0xBF") Тогда + Кодировка = "UTF-8"; + ИначеЕсли ПрочитанныеБайты[0] = ЧислоИзШестнадцатеричнойСтроки("0x00") + И ПрочитанныеБайты[1] = ЧислоИзШестнадцатеричнойСтроки("0x00") + И ПрочитанныеБайты[2] = ЧислоИзШестнадцатеричнойСтроки("0xFE") + И ПрочитанныеБайты[3] = ЧислоИзШестнадцатеричнойСтроки("0xFF") Тогда + Кодировка = "UTF-32BE"; + ИначеЕсли ПрочитанныеБайты[0] = ЧислоИзШестнадцатеричнойСтроки("0x0E") + И ПрочитанныеБайты[1] = ЧислоИзШестнадцатеричнойСтроки("0xFE") + И ПрочитанныеБайты[2] = ЧислоИзШестнадцатеричнойСтроки("0xFF") Тогда + Кодировка = "SCSU"; + ИначеЕсли ПрочитанныеБайты[0] = ЧислоИзШестнадцатеричнойСтроки("0xFB") + И ПрочитанныеБайты[1] = ЧислоИзШестнадцатеричнойСтроки("0xEE") + И ПрочитанныеБайты[2] = ЧислоИзШестнадцатеричнойСтроки("0x28") Тогда + Кодировка = "BOCU-1"; + ИначеЕсли ПрочитанныеБайты[0] = ЧислоИзШестнадцатеричнойСтроки("0x2B") + И ПрочитанныеБайты[1] = ЧислоИзШестнадцатеричнойСтроки("0x2F") + И ПрочитанныеБайты[2] = ЧислоИзШестнадцатеричнойСтроки("0x76") + И (ПрочитанныеБайты[3] = ЧислоИзШестнадцатеричнойСтроки("0x38") + Или ПрочитанныеБайты[3] = ЧислоИзШестнадцатеричнойСтроки("0x39") + Или ПрочитанныеБайты[3] = ЧислоИзШестнадцатеричнойСтроки("0x2B") + Или ПрочитанныеБайты[3] = ЧислоИзШестнадцатеричнойСтроки("0x2F")) Тогда + Кодировка = "UTF-7"; + ИначеЕсли ПрочитанныеБайты[0] = ЧислоИзШестнадцатеричнойСтроки("0xDD") + И ПрочитанныеБайты[1] = ЧислоИзШестнадцатеричнойСтроки("0x73") + И ПрочитанныеБайты[2] = ЧислоИзШестнадцатеричнойСтроки("0x66") + И ПрочитанныеБайты[3] = ЧислоИзШестнадцатеричнойСтроки("0x73") Тогда + Кодировка = "UTF-EBCDIC"; + Иначе + Кодировка = ""; + КонецЕсли; + + Возврат Кодировка; + +КонецФункции + +// Возвращает наиболее подходящую кодировку текста, полученную путем сравнения с алфавитом. +// +// Параметры: +// ДанныеТекста - ДвоичныеДанные - двоичные данные файла. +// +// Возвращаемое значение: +// СоответствующаяКодировка - Строка - кодировка файла. +// +Функция КодировкаИзСоответствияАлфавиту(ДанныеТекста) + + Кодировки = РаботаСФайламиСлужебный.Кодировки(); + Кодировки.Удалить(Кодировки.НайтиПоЗначению("utf-8_WithoutBOM")); + + КодировкаKOI8R = Кодировки.НайтиПоЗначению("koi8-r"); + Кодировки.Сдвинуть(КодировкаKOI8R, -Кодировки.Индекс(КодировкаKOI8R)); + + КодировкаWin1251 = Кодировки.НайтиПоЗначению("windows-1251"); + Кодировки.Сдвинуть(КодировкаWin1251, -Кодировки.Индекс(КодировкаWin1251)); + + КодировкаUTF8 = Кодировки.НайтиПоЗначению("utf-8"); + Кодировки.Сдвинуть(КодировкаUTF8, -Кодировки.Индекс(КодировкаUTF8)); + + СоответствующаяКодировка = ""; + МаксимальноеСоответствиеКодировки = 0; + Для Каждого Кодировка Из Кодировки Цикл + + СоответствиеКодировки = ПроцентСоответствияАлфавиту(ДанныеТекста, Кодировка.Значение); + Если СоответствиеКодировки > 0.95 Тогда + Возврат Кодировка.Значение; + КонецЕсли; + + Если СоответствиеКодировки > МаксимальноеСоответствиеКодировки Тогда + СоответствующаяКодировка = Кодировка.Значение; + МаксимальноеСоответствиеКодировки = СоответствиеКодировки; + КонецЕсли; + + КонецЦикла; + + Возврат СоответствующаяКодировка; + +КонецФункции + +Функция ПроцентСоответствияАлфавиту(ДвоичныеДанные, ПроверяемаяКодировка) + + // АПК:1036-выкл, АПК:163-выкл - алфавит не требует проверки орфографии. + Алфавит = "АаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯя" + + "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz" + + "1234567890 "; + // АПК:1036-вкл, АПК:163-вкл + + ПотокАлфавита = Новый ПотокВПамяти(); + ЗаписьАлфавита = Новый ЗаписьДанных(ПотокАлфавита); + ЗаписьАлфавита.ЗаписатьСтроку(Алфавит, ПроверяемаяКодировка); + ЗаписьАлфавита.Закрыть(); + + ДанныеАлфавита = ПотокАлфавита.ЗакрытьИПолучитьДвоичныеДанные(); + ЧтениеДанныхАлфавита = Новый ЧтениеДанных(ДанныеАлфавита); + БуферАлфавитаВКодировке = ЧтениеДанныхАлфавита.ПрочитатьВБуферДвоичныхДанных(); + + Индекс = 0; + СимволыАлфавита = Новый Массив; + Пока Индекс <= БуферАлфавитаВКодировке.Размер - 1 Цикл + + ТекущийСимвол = БуферАлфавитаВКодировке[Индекс]; + + // Символы кириллицы в кодировке UTF-8 - двухбайтовые. + Если ПроверяемаяКодировка = "utf-8" + И (ТекущийСимвол = 208 + Или ТекущийСимвол = 209) Тогда + + Индекс = Индекс + 1; + ТекущийСимвол = Формат(ТекущийСимвол, "ЧН=0; ЧГ=") + Формат(БуферАлфавитаВКодировке[Индекс], "ЧН=0; ЧГ="); + КонецЕсли; + + Индекс = Индекс + 1; + СимволыАлфавита.Добавить(ТекущийСимвол); + + КонецЦикла; + + ЧтениеДанныхТекста = Новый ЧтениеДанных(ДвоичныеДанные); + БуферДанныхТекста = ЧтениеДанныхТекста.ПрочитатьВБуферДвоичныхДанных(?(ПроверяемаяКодировка = "utf-8", 200, 100)); + РазмерБуфераТекста = БуферДанныхТекста.Размер; + КоличествоСимволов = РазмерБуфераТекста; + + Индекс = 0; + КоличествоВхождений = 0; + Пока Индекс <= РазмерБуфераТекста - 1 Цикл + + ТекущийСимвол = БуферДанныхТекста[Индекс]; + Если ПроверяемаяКодировка = "utf-8" + И (ТекущийСимвол = 208 + Или ТекущийСимвол = 209) Тогда + + // Если последний байт в буфере является первым байтом двухбайтового символа, игнорируем его. + Если Индекс = РазмерБуфераТекста - 1 Тогда + Прервать; + КонецЕсли; + + Индекс = Индекс + 1; + КоличествоСимволов = КоличествоСимволов - 1; + ТекущийСимвол = Формат(ТекущийСимвол, "ЧН=0; ЧГ=") + Формат(БуферДанныхТекста[Индекс], "ЧН=0; ЧГ="); + + КонецЕсли; + + Индекс = Индекс + 1; + Если СимволыАлфавита.Найти(ТекущийСимвол) <> Неопределено Тогда + КоличествоВхождений = КоличествоВхождений + 1; + КонецЕсли; + + КонецЦикла; + + Возврат ?(КоличествоСимволов = 0, 100, КоличествоВхождений/КоличествоСимволов); + +КонецФункции + +#КонецОбласти + +#КонецЕсли diff --git a/SSL/src/InformationRegisters/КурсыВалют/КурсыВалют.mdo b/SSL/src/InformationRegisters/КурсыВалют/КурсыВалют.mdo index 1defcc585..62c5500a4 100644 --- a/SSL/src/InformationRegisters/КурсыВалют/КурсыВалют.mdo +++ b/SSL/src/InformationRegisters/КурсыВалют/КурсыВалют.mdo @@ -82,12 +82,7 @@ <value>Курс</value> </synonym> <type> - <types>Number</types> - <numberQualifiers> - <precision>10</precision> - <scale>4</scale> - <nonNegative>true</nonNegative> - </numberQualifiers> + <types>DefinedType.КурсВалюты</types> </type> <toolTip> <key>ru</key> @@ -98,9 +93,7 @@ <fillChecking>ShowError</fillChecking> <fullTextSearch>Use</fullTextSearch> <dataHistory>Use</dataHistory> - <fillValue xsi:type="core:NumberValue"> - <value>0</value> - </fillValue> + <fillValue xsi:type="core:UndefinedValue"/> </resources> <resources uuid="4bd1cae4-d5b5-444e-9cf5-67a969714293"> <name>Кратность</name> diff --git a/SSL/src/InformationRegisters/КэшПрограммныхИнтерфейсов/ManagerModule.bsl b/SSL/src/InformationRegisters/КэшПрограммныхИнтерфейсов/ManagerModule.bsl index 89cf6ff83..4d7f28c25 100644 --- a/SSL/src/InformationRegisters/КэшПрограммныхИнтерфейсов/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/КэшПрограммныхИнтерфейсов/ManagerModule.bsl @@ -14,7 +14,7 @@ // // Параметры: // Идентификатор - Строка - идентификатор записи кэша. -// ТипДанных - ПеречислениеСсылка.ТипыДанныхКэшаПрограммныхИнтерфейсов - +// ТипДанных - ПеречислениеСсылка.ТипыДанныхКэшаПрограммныхИнтерфейсов // ПараметрыПолучения - Строка - массив параметров сериализованный в XML для передачи в метод обновления кэша. // ИспользоватьУстаревшиеДанные - Булево - флаг определяющий необходимость ожидания обновления // данных в кэше перед возвратом значения, в случае обнаружения факта их устаревания. @@ -22,7 +22,7 @@ // обновления данных кэша, в случае обнаружения факта устаревания данных. // // Возвращаемое значение: -// ФиксированныйМассив, ДвоичныеДанные - . +// ФиксированныйМассив, ДвоичныеДанные // Функция ДанныеКэшаВерсий(Знач Идентификатор, Знач ТипДанных, Знач ПараметрыПолучения, Знач ИспользоватьУстаревшиеДанные = Истина) Экспорт @@ -246,7 +246,7 @@ // ПараметрыПолучения - Массив - дополнительные параметры получения данных в кэш. // // Возвращаемое значение: -// ФиксированныйМассив, ДвоичныеДанные - +// ФиксированныйМассив, ДвоичныеДанные // Функция ПодготовитьДанныеКэшаВерсий(Знач ТипДанных, Знач ПараметрыПолучения) Экспорт @@ -413,7 +413,7 @@ КонецФункции // Возвращаемое значение: -// ФиксированныйМассив - +// ФиксированныйМассив // Функция ПолучитьВерсииИнтерфейсаВКэш(Знач ПараметрыПодключения, Знач ИмяИнтерфейса) diff --git a/SSL/src/InformationRegisters/НаследованиеНастроекПравОбъектов/ManagerModule.bsl b/SSL/src/InformationRegisters/НаследованиеНастроекПравОбъектов/ManagerModule.bsl index 09cb7ec98..e2ef6ebbb 100644 --- a/SSL/src/InformationRegisters/НаследованиеНастроекПравОбъектов/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/НаследованиеНастроекПравОбъектов/ManagerModule.bsl @@ -14,12 +14,12 @@ // Например, иерархию элементов справочника ПапкиФайлов. // // Параметры: -// ВладельцыНастроекПрав - Ссылка, например, СправочникСсылка.ПапкиФайлов или другого типа, -// по которым права настраиваются непосредственно. -// - Тип владельца прав, например Тип("СправочникСсылка.ПапкиФайлов"). -// - Массив значений указанных выше типов. +// ВладельцыНастроекПрав - ОпределяемыйТип.ВладелецНастроекПрав - например, СправочникСсылка.ПапкиФайлов +// или другого типа, по которым права настраиваются непосредственно. +// - тип владельца прав, например Тип("СправочникСсылка.ПапкиФайлов"). +// - массив значений указанных выше типов. // - Неопределено - без отбора для всех типов. -// - Объект, например, СправочникОбъект.ПапкиФайлов, при передаче +// - объект, например, СправочникОбъект.ПапкиФайлов, при передаче // объекта обновление будет только, если объект перед записью и // он изменился (родитель изменен). // @@ -69,11 +69,11 @@ // Например, справочник ПапкиФайлов. // // Параметры: -// ВладелецНастроекПрав - Ссылка - например, СправочникСсылка.ПапкиФайлов или другого типа, -// по которым права настраиваются непосредственно. -// - Объект - например, СправочникОбъект.ПапкиФайлов, при передаче -// объекта обновление будет только, если объект перед записью и -// он изменился (родитель изменен). +// ВладелецНастроекПрав - ОпределяемыйТип.ВладелецНастроекПрав - например, СправочникСсылка.ПапкиФайлов +// или другого типа, по которым права настраиваются непосредственно. +// - ОпределяемыйТип.ВладелецНастроекПравОбъект - например, СправочникОбъект.ПапкиФайлов, +// при передаче объекта обновление будет если только объект в состоянии перед записью и +// родитель изменен. // // ЕстьИзменения - Булево - (возвращаемое значение) - если производилась запись, // устанавливается Истина, иначе не изменяется. @@ -157,7 +157,7 @@ НовыеЗаписи = РодителиОбъекта(Ссылка, Ссылка, СвойстваРодителяОбъекта); Иначе НовыеЗаписи = УправлениеДоступомСлужебныйПовтИсп.ТаблицаПустогоНабораЗаписей( - Метаданные.РегистрыСведений.НаследованиеНастроекПравОбъектов.ПолноеИмя()).Получить(); + Метаданные.РегистрыСведений.НаследованиеНастроекПравОбъектов.ПолноеИмя()).Получить(); // ТаблицаЗначений НоваяСтрока = НовыеЗаписи.Добавить(); НоваяСтрока.Объект = Ссылка; @@ -200,21 +200,23 @@ // Заполняет НаборЗаписей родителями объекта, включая себя, как родителя. // // Параметры: -// Ссылка - Ссылка - ссылка в иерархии СсылкаОбъекта или СсылкаОбъекта. -// СсылкаОбъекта - Ссылка, Неопределено - ссылка на исходный объект. -// СвойстваРодителяОбъекта - Структура - со свойствами: -// * Ссылка - Ссылка - ссылка на родителя исходного объекта, +// Ссылка - ОпределяемыйТип.ВладелецНастроекПрав - ссылка в иерархии СсылкаОбъекта или СсылкаОбъекта. +// СсылкаОбъекта - ОпределяемыйТип.ВладелецНастроекПрав +// - Неопределено - ссылка на исходный объект. +// СвойстваРодителяОбъекта - Структура: +// * Ссылка - ОпределяемыйТип.ВладелецНастроекПрав - ссылка на родителя исходного объекта, // который может отличаться от родителя, // записанного в базе данных. // * Наследовать - Булево - наследование настроек родителем. +// ПолучатьНаследование - Булево // // Возвращаемое значение: -// НаборЗаписей - РегистрСведенийНаборЗаписей.НаследованиеНастроекПравОбъектов. +// РегистрСведенийНаборЗаписей.НаследованиеНастроекПравОбъектов // Функция РодителиОбъекта(Ссылка, СсылкаОбъекта = Неопределено, СвойстваРодителяОбъекта = "", ПолучатьНаследование = Истина) Экспорт НовыеЗаписи = УправлениеДоступомСлужебныйПовтИсп.ТаблицаПустогоНабораЗаписей( - Метаданные.РегистрыСведений.НаследованиеНастроекПравОбъектов.ПолноеИмя()).Получить(); + Метаданные.РегистрыСведений.НаследованиеНастроекПравОбъектов.ПолноеИмя()).Получить(); // ТаблицаЗначений // Получение флажка наследования настроек прав родителей для ссылки. Если ПолучатьНаследование Тогда @@ -364,7 +366,8 @@ Запрос.Текст = СтрЗаменить(Запрос.Текст, "ТаблицаОбъектов", Ссылка.Метаданные().ПолноеИмя()); - РезультатыЗапроса = Запрос.ВыполнитьПакет(); + РезультатыЗапроса = Запрос.ВыполнитьПакет(); // Массив из РезультатЗапроса + Выборка = РезультатыЗапроса[1].Выбрать(); Родитель = ?(Выборка.Следующий(), Выборка.Родитель, Неопределено); diff --git a/SSL/src/InformationRegisters/НастройкиВариантовОтчетов/ManagerModule.bsl b/SSL/src/InformationRegisters/НастройкиВариантовОтчетов/ManagerModule.bsl index 6e4ff8a8e..4c599f805 100644 --- a/SSL/src/InformationRegisters/НастройкиВариантовОтчетов/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/НастройкиВариантовОтчетов/ManagerModule.bsl @@ -46,30 +46,34 @@ // Записывает таблицу настроек в данные регистра по указанным измерениям. // // Параметры: -// ТаблицаНастроек - ТаблицаЗначений - -// Измерения - Структура - где:ъ -// * Пользователь - СправочникСсылка.Пользователи - -// - СправочникСсылка.ВнешниеПользователи - -// * Вариант - СправочникСсылка.ВариантыОтчетов - -// * Подсистема - СправочникСсылка.ИдентификаторыОбъектовМетаданных - -// - СправочникСсылка.ИдентификаторыОбъектовРасширений - -// Ресурсы - Структура - где: -// * Видимость - Булево - -// * БыстрыйДоступ - Булево - -// УдалятьСтарые - Булево - +// ТаблицаНастроек - ТаблицаЗначений +// Измерения - Структура: +// * Пользователь - СправочникСсылка.Пользователи +// - СправочникСсылка.ВнешниеПользователи +// * Вариант - СправочникСсылка.ВариантыОтчетов +// * Подсистема - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// - СправочникСсылка.ИдентификаторыОбъектовРасширений +// Ресурсы - Структура: +// * Видимость - Булево +// * БыстрыйДоступ - Булево +// УдалятьСтарые - Булево // Процедура ЗаписатьПакетНастроек(ТаблицаНастроек, Измерения, Ресурсы, УдалятьСтарые) Экспорт НаборЗаписей = СоздатьНаборЗаписей(); // РегистрСведенийНаборЗаписей.НастройкиВариантовОтчетов Для Каждого КлючИЗначение Из Измерения Цикл - НаборЗаписей.Отбор[КлючИЗначение.Ключ].Установить(КлючИЗначение.Значение, Истина); + ЭлементОтбора = НаборЗаписей.Отбор[КлючИЗначение.Ключ]; // ЭлементОтбора + ЭлементОтбора.Установить(КлючИЗначение.Значение, Истина); + ТаблицаНастроек.Колонки.Добавить(КлючИЗначение.Ключ); ТаблицаНастроек.ЗаполнитьЗначения(КлючИЗначение.Значение, КлючИЗначение.Ключ); КонецЦикла; + Для Каждого КлючИЗначение Из Ресурсы Цикл ТаблицаНастроек.Колонки.Добавить(КлючИЗначение.Ключ); ТаблицаНастроек.ЗаполнитьЗначения(КлючИЗначение.Значение, КлючИЗначение.Ключ); КонецЦикла; + Если Не УдалятьСтарые Тогда НаборЗаписей.Прочитать(); СтарыеЗаписи = НаборЗаписей.Выгрузить(); @@ -81,6 +85,7 @@ КонецЕсли; КонецЦикла; КонецЕсли; + НаборЗаписей.Загрузить(ТаблицаНастроек); НаборЗаписей.Записать(Истина); @@ -505,7 +510,7 @@ // которым предоставлены права на данный вариант отчета. // // Параметры: -// Записи - РегистрСведенийНаборЗаписей.НастройкиВариантовОтчетов - +// Записи - РегистрСведенийНаборЗаписей.НастройкиВариантовОтчетов // Процедура ОповеститьПользователейВариантаОтчета(Записи) Экспорт diff --git a/SSL/src/InformationRegisters/НастройкиОбменаДаннымиXDTO/НастройкиОбменаДаннымиXDTO.mdo b/SSL/src/InformationRegisters/НастройкиОбменаДаннымиXDTO/НастройкиОбменаДаннымиXDTO.mdo index cb9c6ccde..c3792ec6e 100644 --- a/SSL/src/InformationRegisters/НастройкиОбменаДаннымиXDTO/НастройкиОбменаДаннымиXDTO.mdo +++ b/SSL/src/InformationRegisters/НастройкиОбменаДаннымиXDTO/НастройкиОбменаДаннымиXDTO.mdo @@ -97,6 +97,24 @@ <dataHistory>Use</dataHistory> <fillValue xsi:type="core:UndefinedValue"/> </resources> + <resources uuid="f98a7b6d-f364-4b84-9aeb-8dd822ef582f"> + <name>РасширениеФормата</name> + <synonym> + <key>ru</key> + <value>Расширение формата</value> + </synonym> + <type> + <types>String</types> + <stringQualifiers> + <length>250</length> + </stringQualifiers> + </type> + <minValue xsi:type="core:UndefinedValue"/> + <maxValue xsi:type="core:UndefinedValue"/> + <fullTextSearch>Use</fullTextSearch> + <dataHistory>Use</dataHistory> + <fillValue xsi:type="core:StringValue"/> + </resources> <attributes uuid="44526cb1-561d-4b87-a628-d79cc64ccdec"> <name>ИмяПланаОбменаКорреспондента</name> <synonym> diff --git a/SSL/src/InformationRegisters/НастройкиОчисткиФайлов/ManagerModule.bsl b/SSL/src/InformationRegisters/НастройкиОчисткиФайлов/ManagerModule.bsl index f883cc73e..ab38adde7 100644 --- a/SSL/src/InformationRegisters/НастройкиОчисткиФайлов/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/НастройкиОчисткиФайлов/ManagerModule.bsl @@ -10,6 +10,17 @@ #Область СлужебныеПроцедурыИФункции + +// Возвращаемое значение: +// ТаблицаЗначений: +// * ВладелецФайла - ЛюбаяСсылка +// * ИдентификаторВладельца - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// * ЭтоНастройкаДляЭлементаСправочника - БУлево +// * ТипВладельцаФайла - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// * Действие - ПеречислениеСсылка.ВариантыОчисткиФайлов +// * ПериодОчистки - ПеречислениеСсылка.ПериодОчисткиФайлов +// * ЭтоФайл - Булево +// Функция ТекущиеНастройкиОчистки() Экспорт УстановитьПривилегированныйРежим(Истина); diff --git a/SSL/src/InformationRegisters/НастройкиПравОбъектов/ManagerModule.bsl b/SSL/src/InformationRegisters/НастройкиПравОбъектов/ManagerModule.bsl index 9bcc532d3..03bba359a 100644 --- a/SSL/src/InformationRegisters/НастройкиПравОбъектов/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/НастройкиПравОбъектов/ManagerModule.bsl @@ -90,24 +90,26 @@ // Возвращает настройки прав объекта. // // Параметры: -// СсылкаНаОбъект - ссылка на объект для которого нужно прочитать настройки прав. +// СсылкаНаОбъект - ОпределяемыйТип.ВладелецНастроекПрав - ссылка на объект для которого нужно прочитать настройки прав. // // Возвращаемое значение: -// Структура - +// Структура: // Наследовать - Булево - флажок наследования настроек прав родителей. -// Настройки - ТаблицаЗначений -// - ВладелецНастройки - ссылка на объект или родителя объекта -// (из иерархии родителей объекта). -// - НаследованиеРазрешено - Булево - разрешено наследование. -// - Пользователь - СправочникСсылка.Пользователи +// Настройки - ТаблицаЗначений: +// * ВладелецНастройки - ОпределяемыйТип.ВладелецНастроекПрав - ссылка на объект +// или родителя объекта (из иерархии родителей объекта) +// * НаследованиеРазрешено - Булево - разрешено наследование. +// * Пользователь - СправочникСсылка.Пользователи // СправочникСсылка.ГруппыПользователей // СправочникСсылка.ВнешниеПользователи // СправочникСсылка.ГруппыВнешнихПользователей. -// - <ИмяПрава1> - Неопределено, Булево +// * <ИмяПрава1> - Неопределено +// - Булево - // Неопределено - право не настроено, // Истина - право разрешено, // Ложь - право запрещено. -// - <ИмяПрава2> - ... +// * <ИмяПрава2> - Неопределено +// - Булево // Функция Прочитать(Знач СсылкаНаОбъект) Экспорт @@ -143,7 +145,7 @@ Если ВозможныеПрава.ИерархическиеТаблицы.Получить(ТипЗнч(СсылкаНаОбъект)) = Неопределено Тогда НаследованиеНастроек = УправлениеДоступомСлужебныйПовтИсп.ТаблицаПустогоНабораЗаписей( - Метаданные.РегистрыСведений.НаследованиеНастроекПравОбъектов.ПолноеИмя()).Получить(); + Метаданные.РегистрыСведений.НаследованиеНастроекПравОбъектов.ПолноеИмя()).Получить(); // ТаблицаЗначений НоваяСтрока = НаследованиеНастроек.Добавить(); НаследованиеНастроек.Колонки.Добавить("Уровень", Новый ОписаниеТипов("Число")); НоваяСтрока.Объект = СсылкаНаОбъект; @@ -238,15 +240,30 @@ // Записывает настройки прав объекта. // // Параметры: +// СсылкаНаОбъект - ОпределяемыйТип.ВладелецНастроекПрав +// Настройки - ТаблицаЗначений: +// * ВладелецНастройки - ОпределяемыйТип.ВладелецНастроекПрав - ссылка на объект +// или родителя объекта (из иерархии родителей объекта). +// * НаследованиеРазрешено - Булево - разрешено наследование. +// * Пользователь - СправочникСсылка.Пользователи +// СправочникСсылка.ГруппыПользователей +// СправочникСсылка.ВнешниеПользователи +// СправочникСсылка.ГруппыВнешнихПользователей. +// * <ИмяПрава1> - Неопределено +// - Булево - +// Неопределено - право не настроено, +// Истина - право разрешено, +// Ложь - право запрещено. +// * <ИмяПрава2> - Неопределено +// - Булево +// // Наследовать - Булево - флажок наследования настроек прав родителей. -// Настройки - ТаблицаЗначений со структурой возвращенной функцией Прочитать() -// записываются только строки, у которых ВладелецНастройки = СсылкаНаОбъект. // Процедура Записать(Знач СсылкаНаОбъект, Знач Настройки, Знач Наследовать) Экспорт СтандартныеПодсистемыСервер.ПроверитьДинамическоеОбновлениеВерсииПрограммы(); - ВозможныеПрава = УправлениеДоступомСлужебныйПовтИсп.ВозможныеПраваДляНастройкиПравОбъектов(); - ОписаниеПрав = ВозможныеПрава.ПоТипамСсылок.Получить(ТипЗнч(СсылкаНаОбъект)); + ВозможныеПрава = УправлениеДоступомСлужебныйПовтИсп.ВозможныеПраваДляНастройкиПравОбъектов(); // См. ВозможныеПраваДляНастройкиПравОбъектов + ОписаниеПрав = ВозможныеПрава.ПоТипамСсылок.Получить(ТипЗнч(СсылкаНаОбъект)); // Массив из см. СвойстваВозможногоПрава Если ОписаниеПрав = Неопределено Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( @@ -425,7 +442,7 @@ Отбор = Новый Структура; Для каждого КлючИЗначение Из ВозможныеПрава.ПоТипамСсылок Цикл ТипВладельцаПрав = КлючИЗначение.Ключ; - ОписаниеПрав = КлючИЗначение.Значение; + ОписаниеПрав = КлючИЗначение.Значение; // Массив из см. СвойстваВозможногоПрава Если ПустыеСсылкиВладелецПрав.Получить(ТипВладельцаПрав) = Неопределено Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( @@ -628,6 +645,29 @@ КонецПроцедуры // См. РегистрыСведений.НастройкиПравОбъектов.ВозможныеПрава. +// +// Возвращаемое значение: +// Структура: +// * ПоТипам - ФиксированноеСоответствие: +// * Ключ - Тип - тип ссылки или объекта из ОпределяемыйТип.ВладельцыНастроекПрав +// * Значение - ФиксированноеСоответствие: +// ** Ключ - Строка - имя возможного права +// ** Значение - см. СвойстваВозможногоПрава +// * ПоТипамСсылок - ФиксированноеСоответствие: +// * Ключ - Тип - тип ссылки из ОпределяемыйТип.ВладельцыНастроекПрав +// * Значение - Массив из см. СвойстваВозможногоПрава +// * ПоПолнымИменам - ФиксированноеСоответствие: +// * Ключ - Строка - владелец прав (полное имя таблицы) +// * Значение - см. СвойстваВозможногоПрава +// * ТипыВладельцев - Массив из ОпределяемыйТип.ВладелецНастроекПрав +// * ОтдельныеТаблицы - ФиксированноеСоответствие: +// * Ключ - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// - СправочникСсылка.ИдентификаторыОбъектовРасширений - идентификатор таблицы +// * Значение - Строка - полное имя таблицы +// * ИерархическиеТаблицы - ФиксированноеСоответствие: +// * Ключ - Тип - тип ссылки или объекта из ОпределяемыйТип.ВладельцыНастроекПрав +// * Значение - Булево - Истина. +// Функция ВозможныеПраваДляНастройкиПравОбъектов() Экспорт ВозможныеПрава = СтандартныеПодсистемыСервер.ПараметрРаботыПрограммы( @@ -650,6 +690,7 @@ Процедура ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию(Параметры) Экспорт // Регистрация данных не требуется. + Возврат; КонецПроцедуры @@ -709,7 +750,11 @@ КонецФункции -// См. УправлениеДоступомПереопределяемый.ПриЗаполненииВозможныхПравДляНастройкиПравОбъектов. +// См. УправлениеДоступомПереопределяемый.ПриЗаполненииВозможныхПравДляНастройкиПравОбъектов +// +// Возвращаемое значение: +// см. ВозможныеПраваДляНастройкиПравОбъектов +// Функция ВозможныеПрава() ВозможныеПрава = ЗаполненныеВозможныеПрава(); @@ -764,7 +809,7 @@ ПраваВладельца = ПоПолнымИменам[ВозможноеПраво.ВладелецПрав]; Если ПраваВладельца = Неопределено Тогда - ПраваВладельца = Новый Соответствие; + ПраваВладельца = ПраваВладельца(); МассивПравВладельца = Новый Массив; ТипСсылки = СтандартныеПодсистемыСервер.ТипСсылкиИлиКлючаЗаписиОбъектаМетаданных( @@ -796,13 +841,14 @@ Строка(ТипСсылки)); КонецЕсли; - Если СвойстваВидовДоступа.ПоТипамЗначений.Получить(ТипСсылки) <> Неопределено Тогда + СвойстваВидаДоступа = СвойстваВидовДоступа.ПоТипамЗначений.Получить(ТипСсылки); // см. УправлениеДоступомСлужебный.СвойстваВидаДоступа + Если СвойстваВидаДоступа <> Неопределено Тогда ВызватьИсключение ЗаголовокОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Тип владельца прав ""%1"" |не может использоваться, как тип значений доступа, |но обнаружен в описании вида доступа ""%2"".'"), Строка(ТипСсылки), - СвойстваВидовДоступа.ПоТипамЗначений.Получить(ТипСсылки).Имя); + СвойстваВидаДоступа.Имя); КонецЕсли; Если СвойстваВидовДоступа.ПоТипамГруппИЗначений.Получить(ТипСсылки) <> Неопределено Тогда @@ -811,7 +857,7 @@ |не может использоваться, как тип групп значений доступа, |но обнаружен в описании вида доступа ""%2"".'"), Строка(ТипСсылки), - СвойстваВидовДоступа.ПоТипамЗначений.Получить(ТипСсылки).Имя); + СвойстваВидаДоступа.Имя); КонецЕсли; Если ТипыПодпискиОбновитьГруппыВладельцевНастроекПрав.Получить(ТипОбъекта) = Неопределено Тогда @@ -853,15 +899,7 @@ КонецЕсли; КонецЦикла; - СвойстваВозможногоПрава = Новый Структура( - "ВладелецПрав, - |Имя, - |НачальноеЗначение, - |ТребуемыеПрава, - |ЧтениеВТаблицах, - |ИзменениеВТаблицах, - |ИндексПрава"); - ЗаполнитьЗначенияСвойств(СвойстваВозможногоПрава, ВозможноеПраво); + СвойстваВозможногоПрава = СвойстваВозможногоПрава(ВозможноеПраво); СвойстваВозможногоПрава.ИндексПрава = ИндексыПравВладельцев[ВозможноеПраво.ВладелецПрав]; ИндексыПравВладельцев[ВозможноеПраво.ВладелецПрав] = СвойстваВозможногоПрава.ИндексПрава + 1; @@ -890,17 +928,64 @@ КонецЦикла; ВозможныеПрава = Новый Структура; - ВозможныеПрава.Вставить("ПоТипам", ПоТипам); - ВозможныеПрава.Вставить("ПоТипамСсылок", ПоТипамСсылок); - ВозможныеПрава.Вставить("ПоПолнымИменам", ПоПолнымИменам); - ВозможныеПрава.Вставить("ТипыВладельцев", ТипыВладельцев); - ВозможныеПрава.Вставить("ОтдельныеТаблицы", ОтдельныеТаблицы); - ВозможныеПрава.Вставить("ИерархическиеТаблицы", ИерархическиеТаблицы); + ВозможныеПрава.Вставить("ПоТипам", ПоТипам); + ВозможныеПрава.Вставить("ПоТипамСсылок", ПоТипамСсылок); + ВозможныеПрава.Вставить("ПоПолнымИменам", ПоПолнымИменам); + ВозможныеПрава.Вставить("ТипыВладельцев", ТипыВладельцев); + ВозможныеПрава.Вставить("ОтдельныеТаблицы", ОтдельныеТаблицы); + ВозможныеПрава.Вставить("ИерархическиеТаблицы", ИерархическиеТаблицы); Возврат ОбщегоНазначения.ФиксированныеДанные(ВозможныеПрава); КонецФункции +// Возвращаемое значение: +// Структура: +// * ВладелецПрав - Строка +// * Имя - Строка +// * Заголовок - Строка +// * Подсказка - Строка +// * НачальноеЗначение - Булево +// * ТребуемыеПрава - Массив Из Строка +// * ЧтениеВТаблицах - Массив Из Строка +// * ИзменениеВТаблицах - Массив Из Строка +// +Функция СвойстваВозможногоПрава(ВозможноеПраво) + + СвойстваВозможногоПрава = Новый Структура( + "ВладелецПрав, + |Имя, + |НачальноеЗначение, + |ТребуемыеПрава, + |ЧтениеВТаблицах, + |ИзменениеВТаблицах, + |ИндексПрава"); + + ЗаполнитьЗначенияСвойств(СвойстваВозможногоПрава, ВозможноеПраво); + + Возврат СвойстваВозможногоПрава; + +КонецФункции + +// Возвращаемое значение: +// Соответствие: +// Ключ - Тип +// Значение - см. СвойстваВозможногоПрава +// +Функция ПраваВладельца() + + Возврат Новый Соответствие(); + +КонецФункции + +// Возвращаемое значение: +// Соответствие: +// * Ключ - Строка - полное имя права. +// * Значение - ФиксированнаяСтруктура: +// * Имя - Строка - имя возможного права. +// * Заголовок - Строка - заголовок колонки. +// * Подсказка - Строка - подсказка колонки. +// Функция ПредставлениеВозможныхПрав() Экспорт ВозможныеПрава = ЗаполненныеВозможныеПрава(); @@ -909,14 +994,24 @@ Для Каждого ВозможноеПраво Из ВозможныеПрава Цикл ПолноеИмяПрава = ВозможноеПраво.ВладелецПрав + "_" + ВозможноеПраво.Имя; - ПредставлениеВозможныхПрав.Вставить(ПолноеИмяПрава, Новый ФиксированнаяСтруктура( - Новый Структура("Заголовок, Подсказка", ВозможноеПраво.Заголовок, ВозможноеПраво.Подсказка))); + ПредставлениеВозможныхПрав.Вставить(ПолноеИмяПрава, + Новый ФиксированнаяСтруктура(Новый Структура("Имя, Заголовок, Подсказка", + ВозможноеПраво.Имя, ВозможноеПраво.Заголовок, ВозможноеПраво.Подсказка))); КонецЦикла; Возврат Новый ФиксированноеСоответствие(ПредставлениеВозможныхПрав); КонецФункции +// Параметры: +// ОписаниеВозможногоПрава - см. СвойстваВозможногоПрава +// +// Возвращаемое значение: +// Структура: +// * Имя - Строка +// * Заголовок - Строка +// * Подсказка - Строка +// Функция ПредставлениеВозможногоПрава(ОписаниеВозможногоПрава) Экспорт ПредставлениеВозможныхПрав = УправлениеДоступомСлужебныйПовтИсп.ПредставлениеВозможныхПрав(); @@ -925,8 +1020,8 @@ Представление = ПредставлениеВозможныхПрав.Получить(ПолноеИмяПрава); Если Не ЗначениеЗаполнено(Представление) Тогда - Представление = Новый ФиксированнаяСтруктура( - Новый Структура("Заголовок, Подсказка", ОписаниеВозможногоПрава.Имя, "")); + Представление = Новый ФиксированнаяСтруктура( Новый Структура("Имя, Заголовок, Подсказка", + ОписаниеВозможногоПрава.Имя, ОписаниеВозможногоПрава.Имя, "")); КонецЕсли; Возврат Представление; diff --git a/SSL/src/InformationRegisters/НастройкиСинхронизацииФайлов/Forms/НастройкиСинхронизацииФайлов/Module.bsl b/SSL/src/InformationRegisters/НастройкиСинхронизацииФайлов/Forms/НастройкиСинхронизацииФайлов/Module.bsl index b3462629d..cd25c1497 100644 --- a/SSL/src/InformationRegisters/НастройкиСинхронизацииФайлов/Forms/НастройкиСинхронизацииФайлов/Module.bsl +++ b/SSL/src/InformationRegisters/НастройкиСинхронизацииФайлов/Forms/НастройкиСинхронизацииФайлов/Module.bsl @@ -383,7 +383,11 @@ КонецПроцедуры // Параметры: -// ДополнительныеПараметры - Структура - . +// ВыбранноеЗначение - Структура: +// * ВладелецФайла - ЛюбаяСсылка +// * НоваяНастройка - Булево +// * Наименование - Строка +// ДополнительныеПараметры - Структура // &НаКлиенте Процедура УстановитьНастройкиОтбора(ВыбранноеЗначение, ДополнительныеПараметры) Экспорт @@ -524,6 +528,11 @@ КонецФункции +// Параметры: +// Результат - Структура +// ДополнительныеПараметры - Структура: +// * ТекущаяСтрока - Число +// &НаКлиенте Процедура ОчиститьДанныеНастройкиЗавершение(Результат, ДополнительныеПараметры) Экспорт diff --git a/SSL/src/InformationRegisters/НастройкиСинхронизацииФайлов/ManagerModule.bsl b/SSL/src/InformationRegisters/НастройкиСинхронизацииФайлов/ManagerModule.bsl index 733d9b640..3958709ee 100644 --- a/SSL/src/InformationRegisters/НастройкиСинхронизацииФайлов/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/НастройкиСинхронизацииФайлов/ManagerModule.bsl @@ -10,6 +10,18 @@ #Область СлужебныеПроцедурыИФункции +// Возвращаемое значение: +// ТаблицаЗначений: +// * ВладелецФайла - ЛюбаяСсылка +// * ИдентификаторВладельца - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// * ЭтоНастройкаДляЭлементаСправочника - Булево +// * ТипВладельцаФайла - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// * ПравилоОтбора - ХранилищеЗначения +// * ЭтоФайл - Булево +// * Синхронизировать - Булево +// * УчетнаяЗапись - СправочникСсылка.УчетныеЗаписиСинхронизацииФайлов +// * Наименование - Строка +// Функция ТекущиеНастройкиСинхронизации() Экспорт УстановитьПривилегированныйРежим(Истина); diff --git a/SSL/src/InformationRegisters/НастройкиУчетныхЗаписейЭлектроннойПочты/Commands/Настройки/CommandModule.bsl b/SSL/src/InformationRegisters/НастройкиУчетныхЗаписейЭлектроннойПочты/Commands/ДополнительныеНастройки/CommandModule.bsl similarity index 100% rename from SSL/src/InformationRegisters/НастройкиУчетныхЗаписейЭлектроннойПочты/Commands/Настройки/CommandModule.bsl rename to SSL/src/InformationRegisters/НастройкиУчетныхЗаписейЭлектроннойПочты/Commands/ДополнительныеНастройки/CommandModule.bsl diff --git a/SSL/src/InformationRegisters/НастройкиУчетныхЗаписейЭлектроннойПочты/Forms/ФормаЗаписи/Form.form b/SSL/src/InformationRegisters/НастройкиУчетныхЗаписейЭлектроннойПочты/Forms/ФормаЗаписи/Form.form index 3c1e1b7fd..40e8e0ed5 100644 --- a/SSL/src/InformationRegisters/НастройкиУчетныхЗаписейЭлектроннойПочты/Forms/ФормаЗаписи/Form.form +++ b/SSL/src/InformationRegisters/НастройкиУчетныхЗаписейЭлектроннойПочты/Forms/ФормаЗаписи/Form.form @@ -2,7 +2,7 @@ <form:Form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:form="http://g5.1c.ru/v8/dt/form"> <title> <key>ru</key> - <value>Настройки учетной записи</value> + <value>Дополнительные настройки</value> СтраницыФормы diff --git a/SSL/src/InformationRegisters/НастройкиУчетныхЗаписейЭлектроннойПочты/НастройкиУчетныхЗаписейЭлектроннойПочты.mdo b/SSL/src/InformationRegisters/НастройкиУчетныхЗаписейЭлектроннойПочты/НастройкиУчетныхЗаписейЭлектроннойПочты.mdo index 772a18929..2550311b1 100644 --- a/SSL/src/InformationRegisters/НастройкиУчетныхЗаписейЭлектроннойПочты/НастройкиУчетныхЗаписейЭлектроннойПочты.mdo +++ b/SSL/src/InformationRegisters/НастройкиУчетныхЗаписейЭлектроннойПочты/НастройкиУчетныхЗаписейЭлектроннойПочты.mdo @@ -418,10 +418,10 @@ MobileDevice - Настройки + ДополнительныеНастройки ru - Настройки + Дополнительные настройки FormNavigationPanelGoTo diff --git a/SSL/src/InformationRegisters/НеразделенныеПользователи/ManagerModule.bsl b/SSL/src/InformationRegisters/НеразделенныеПользователи/ManagerModule.bsl index f70a8cd71..b3bc98332 100644 --- a/SSL/src/InformationRegisters/НеразделенныеПользователи/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/НеразделенныеПользователи/ManagerModule.bsl @@ -13,7 +13,7 @@ // Возвращает список неразделенных администраторов // // Возвращаемое значение: -// СписокЗначений – список уникальных идентификаторов с представлениями (имена пользователей). +// СписокЗначений - список уникальных идентификаторов с представлениями (имена пользователей). // Функция СписокАдминистраторов() Экспорт @@ -53,6 +53,7 @@ // // Возвращаемое значение: // Число +// Функция МаксимальныйПорядковыйНомер() Экспорт ТекстЗапроса = "ВЫБРАТЬ @@ -76,6 +77,7 @@ // // Возвращаемое значение: // Число +// Функция ПорядковыйНомерПользователяИБ(Идентификатор) Экспорт Запрос = Новый Запрос; diff --git a/SSL/src/InformationRegisters/НеудаленныеОбъекты/ManagerModule.bsl b/SSL/src/InformationRegisters/НеудаленныеОбъекты/ManagerModule.bsl new file mode 100644 index 000000000..c071f3d95 --- /dev/null +++ b/SSL/src/InformationRegisters/НеудаленныеОбъекты/ManagerModule.bsl @@ -0,0 +1,60 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2020, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +// Формирует таблицу с количеством попыток для указанных объектов. +// Если объект ранее не удалялся, то запись о количестве попыток будет отсутствовать. +// +// Параметры: +// Объекты - Массив из ЛюбаяСсылка +// Возвращаемое значение: +// ТаблицаЗначений: +// * УдаляемыйСсылка - ЛюбаяСсылка +// * КоличествоПопыток - Число +// +Функция КоличествоПопытокОбъектов(Объекты) Экспорт + Запрос = Новый Запрос; + + Запрос.Текст = + "ВЫБРАТЬ + | НеудаленныеОбъекты.Объект КАК УдаляемыйСсылка, + | НеудаленныеОбъекты.КоличествоПопыток КАК КоличествоПопыток + |ИЗ + | РегистрСведений.НеудаленныеОбъекты КАК НеудаленныеОбъекты + |ГДЕ + | НеудаленныеОбъекты.Объект В (&СписокОбъектов) + | И НеудаленныеОбъекты.КоличествоПопыток > 0"; + + Запрос.УстановитьПараметр("СписокОбъектов", Объекты); + + РезультатЗапроса = Запрос.Выполнить(); + КоличествоПопытокОбъектов = РезультатЗапроса.Выгрузить(); + КоличествоПопытокОбъектов.Индексы.Добавить("УдаляемыйСсылка"); + + Возврат КоличествоПопытокОбъектов; +КонецФункции + +// Добавляет запись в регистр. +// +// Параметры: +// НеудаленнаяСсылка - ЛюбаяСсылка +// +Процедура Добавить(НеудаленнаяСсылка) Экспорт + Запись = РегистрыСведений.НеудаленныеОбъекты.СоздатьМенеджерЗаписи(); + Запись.Объект = НеудаленнаяСсылка; + Если ЗначениеЗаполнено(Запись.Объект) Тогда + Запись.Записать(); + КонецЕсли; +КонецПроцедуры + +#КонецОбласти + +#КонецЕсли \ No newline at end of file diff --git a/SSL/src/InformationRegisters/НеудаленныеОбъекты/RecordSetModule.bsl b/SSL/src/InformationRegisters/НеудаленныеОбъекты/RecordSetModule.bsl new file mode 100644 index 000000000..13d103968 --- /dev/null +++ b/SSL/src/InformationRegisters/НеудаленныеОбъекты/RecordSetModule.bsl @@ -0,0 +1,79 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2020, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ОбработчикиСобытий +Процедура ПередЗаписью(Отказ, Замещение) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + Если Количество() = 0 Тогда + Возврат; + КонецЕсли; + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | ТекущийНаборЗаписей.Объект КАК Объект, + | 1 КАК КоличествоПопыток, + | &ВремяТекущейПопытки КАК ВремяПоследнейПопытки + |ПОМЕСТИТЬ ТекущийНабор + |ИЗ + | &ТекущийНаборЗаписей КАК ТекущийНаборЗаписей + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | Таблица.Объект КАК Объект, + | СУММА(Таблица.КоличествоПопыток) КАК КоличествоПопыток, + | МАКСИМУМ(Таблица.ВремяПоследнейПопытки) КАК ВремяПоследнейПопытки + |ИЗ + | (ВЫБРАТЬ + | НеудаленныеОбъекты.Объект КАК Объект, + | НеудаленныеОбъекты.КоличествоПопыток КАК КоличествоПопыток, + | НеудаленныеОбъекты.ВремяПоследнейПопытки КАК ВремяПоследнейПопытки + | ИЗ + | РегистрСведений.НеудаленныеОбъекты КАК НеудаленныеОбъекты + | ГДЕ + | НеудаленныеОбъекты.Объект В + | (ВЫБРАТЬ + | Таб.Объект + | ИЗ + | ТекущийНабор КАК Таб) + | + | ОБЪЕДИНИТЬ ВСЕ + | + | ВЫБРАТЬ + | ТекущийНабор.Объект, + | ТекущийНабор.КоличествоПопыток, + | ТекущийНабор.ВремяПоследнейПопытки + | ИЗ + | ТекущийНабор КАК ТекущийНабор) КАК Таблица + |СГРУППИРОВАТЬ ПО + | Таблица.Объект"; + + Запрос.УстановитьПараметр("ВремяТекущейПопытки", ОбщегоНазначения.ТекущаяДатаПользователя()); + Запрос.УстановитьПараметр("ТекущийНаборЗаписей", Выгрузить()); + + РезультатЗапроса = Запрос.Выполнить(); + ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); + + Очистить(); + Пока ВыборкаДетальныеЗаписи.Следующий() Цикл + ЗаполнитьЗначенияСвойств(Добавить(), ВыборкаДетальныеЗаписи); + КонецЦикла; + +КонецПроцедуры +#КонецОбласти + +#Иначе +ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'"); +#КонецЕсли \ No newline at end of file diff --git a/SSL/src/InformationRegisters/НеудаленныеОбъекты/НеудаленныеОбъекты.mdo b/SSL/src/InformationRegisters/НеудаленныеОбъекты/НеудаленныеОбъекты.mdo new file mode 100644 index 000000000..e76f72248 --- /dev/null +++ b/SSL/src/InformationRegisters/НеудаленныеОбъекты/НеудаленныеОбъекты.mdo @@ -0,0 +1,103 @@ + + + + + + + + + + + + НеудаленныеОбъекты + + ru + Неудаленные объекты + + + Use + Active + + Use + + + + + Use + LineNumber + + Use + + + + + Use + Recorder + + Use + + + + + Use + Period + + ShowError + Use + + + + Managed + + КоличествоПопыток + + ru + Количество попыток + + + Number + + 10 + true + + + + + Use + Use + + + + ВремяПоследнейПопытки + + ru + Время последней попытки + + + Date + + + + + Use + Use + + + + Объект + + ru + Объект + + + AnyRef + + + + Use + Use + + true + true + + diff --git a/SSL/src/InformationRegisters/ОбновлениеКлючейДоступаКДанным/Forms/ОбновлениеДоступаНаУровнеЗаписей/Form.form b/SSL/src/InformationRegisters/ОбновлениеКлючейДоступаКДанным/Forms/ОбновлениеДоступаНаУровнеЗаписей/Form.form index ce5b1d4e8..98527c9d7 100644 --- a/SSL/src/InformationRegisters/ОбновлениеКлючейДоступаКДанным/Forms/ОбновлениеДоступаНаУровнеЗаписей/Form.form +++ b/SSL/src/InformationRegisters/ОбновлениеКлючейДоступаКДанным/Forms/ОбновлениеДоступаНаУровнеЗаписей/Form.form @@ -309,6 +309,10 @@ true + + <key>ru</key> + <value>Количество потоков обновления доступа подсказка 1</value> + ShowBottom ГруппаКоличествоПотоковОбновленияДоступаПодсказка1РасширеннаяПодсказка @@ -432,6 +436,10 @@ true + + <key>ru</key> + <value>Балансировка нагрузки на диск подсказка 1</value> + ShowBottom ГруппаБалансировкаНагрузкиНаДискПодсказка1РасширеннаяПодсказка @@ -772,6 +780,10 @@ true + + <key>ru</key> + <value>Количество потоков обновления доступа подсказка 2</value> + ShowBottom ГруппаКоличествоПотоковОбновленияДоступаПодсказка2РасширеннаяПодсказка @@ -895,6 +907,10 @@ true + + <key>ru</key> + <value>Балансировка нагрузки на диск подсказка 2</value> + ShowBottom ГруппаБалансировкаНагрузкиНаДискПодсказка2РасширеннаяПодсказка diff --git a/SSL/src/InformationRegisters/ОбновлениеКлючейДоступаКДанным/Forms/ОбновлениеДоступаРучноеУправление/Module.bsl b/SSL/src/InformationRegisters/ОбновлениеКлючейДоступаКДанным/Forms/ОбновлениеДоступаРучноеУправление/Module.bsl index 6863c078d..a2be0e3c4 100644 --- a/SSL/src/InformationRegisters/ОбновлениеКлючейДоступаКДанным/Forms/ОбновлениеДоступаРучноеУправление/Module.bsl +++ b/SSL/src/InformationRegisters/ОбновлениеКлючейДоступаКДанным/Forms/ОбновлениеДоступаРучноеУправление/Module.bsl @@ -178,55 +178,59 @@ ПараметрыОграничения, ИдентификаторТранзакции, Истина, ЕстьИзмененияПрав); Если ПараметрыОграничения.БезЗаписиКлючейДоступа Тогда - Текст = Текст + Символы.ПС + НСтр("ru = '1. Обновление не требуется. Ключ доступа объекта не используется.'"); - - ИначеЕсли ПараметрыОграничения.СЗаписьюВсегдаРазрешенногоКлючаДоступа Тогда - Если КлючДоступаИсточникаУстарел Тогда - Текст = Текст + Символы.ПС + НСтр("ru = '1. У объекта установлен всегда разрешенный ключ доступа.'"); + Если ПараметрыОграничения.ДоступЗапрещен + Или ПараметрыОграничения.ОграничениеОтключено Тогда + Текст = Текст + Символы.ПС + НСтр("ru = 'Обновление не требуется. Ключи доступа к объектам этого типа не нужны.'"); Иначе - Текст = Текст + Символы.ПС + НСтр("ru = '1. Обновление не требуется. У объекта ключ доступа уже всегда разрешенный.'"); + Текст = Текст + Символы.ПС + НСтр("ru = 'Обновление не требуется. Объекты этого типа используют ключи доступа к их владельцам.'"); + КонецЕсли; + Возврат; + КонецЕсли; + + Если ПараметрыОграничения.СЗаписьюВсегдаРазрешенногоКлючаДоступа Тогда + Если КлючДоступаИсточникаУстарел Тогда + Текст = Текст + Символы.ПС + НСтр("ru = '1. Установлен всегда разрешенный ключ доступа к объекту.'"); + Иначе + Текст = Текст + Символы.ПС + НСтр("ru = '1. Обновление не требуется. Всегда разрешенный ключ доступа к объекту уже установлен.'"); КонецЕсли; Иначе Если КлючДоступаИсточникаУстарел Тогда - Текст = Текст + Символы.ПС + НСтр("ru = '1. У объекта обновлен ключ доступа.'"); + Текст = Текст + Символы.ПС + НСтр("ru = '1. Обновлен ключ доступа к объекту.'"); Иначе - Текст = Текст + Символы.ПС + НСтр("ru = '1. Обновление не требуется. У объекта ключ доступа не устарел.'"); + Текст = Текст + Символы.ПС + НСтр("ru = '1. Обновление не требуется. Ключ доступа к объекту не устарел.'"); КонецЕсли; КонецЕсли; - Если ПараметрыОграничения.БезЗаписиКлючейДоступа Тогда - Текст = Текст + Символы.ПС + НСтр("ru = '2. Обновление не требуется. Ключ доступа объекта не используется.'"); - - ИначеЕсли ПараметрыОграничения.СЗаписьюВсегдаРазрешенногоКлючаДоступа Тогда + Если ПараметрыОграничения.СЗаписьюВсегдаРазрешенногоКлючаДоступа Тогда Если ЕстьИзмененияПрав Тогда Текст = Текст + Символы.ПС - + НСтр("ru = '2. У всегда разрешенного ключа доступа обновлен состав - | групп доступа или пользователей или внешних пользователей.'"); + + НСтр("ru = '2. Обновлены права на всегда разрешенный ключ доступа + | у групп доступа или пользователей или внешних пользователей.'"); Иначе Текст = Текст + Символы.ПС - + НСтр("ru = '2. Обновление не требуется. У всегда разрешенного ключа доступа - | состав групп доступа, пользователей и внешних пользователей не устарел.'"); + + НСтр("ru = '2. Обновление не требуется. Права на всегда разрешенный ключ доступа + | у групп доступа, пользователей и внешних пользователей не устарели.'"); КонецЕсли; ИначеЕсли ЕстьИзмененияПрав Тогда Если ПараметрыОграничения.ЕстьОграничениеПоПользователям Тогда Если ДляВнешнихПользователей Тогда - Текст = Текст + Символы.ПС + НСтр("ru = '2. У ключа доступа обновлен состав внешних пользователей.'"); + Текст = Текст + Символы.ПС + НСтр("ru = '2. Обновлены права на ключ доступа у внешних пользователей или групп доступа.'"); Иначе - Текст = Текст + Символы.ПС + НСтр("ru = '2. У ключа доступа обновлен состав пользователей.'"); + Текст = Текст + Символы.ПС + НСтр("ru = '2. Обновлены права на ключ доступа у пользователей или групп доступа.'"); КонецЕсли; Иначе - Текст = Текст + Символы.ПС + НСтр("ru = '2. У ключа доступа обновлен состав групп доступа.'"); + Текст = Текст + Символы.ПС + НСтр("ru = '2. Обновлены права на ключ доступа у групп доступа.'"); КонецЕсли; Иначе Если ПараметрыОграничения.ЕстьОграничениеПоПользователям Тогда Если ДляВнешнихПользователей Тогда - Текст = Текст + Символы.ПС + НСтр("ru = '2. Обновление не требуется. У ключа доступа состав внешних пользователей не устарел.'"); + Текст = Текст + Символы.ПС + НСтр("ru = '2. Обновление не требуется. Права на ключ доступа у внешних пользователей и групп доступа не устарели.'"); Иначе - Текст = Текст + Символы.ПС + НСтр("ru = '2. Обновление не требуется. У ключа доступа состав пользователей не устарел.'"); + Текст = Текст + Символы.ПС + НСтр("ru = '2. Обновление не требуется. Права на ключ доступа у пользователей и групп доступа не устарели.'"); КонецЕсли; Иначе - Текст = Текст + Символы.ПС + НСтр("ru = '2. Обновление не требуется. У ключа доступа состав групп доступа не устарел.'"); + Текст = Текст + Символы.ПС + НСтр("ru = '2. Обновление не требуется. Права на ключ доступа у групп доступа не устарели.'"); КонецЕсли; КонецЕсли; diff --git a/SSL/src/InformationRegisters/ОбработчикиОбновления/ОбработчикиОбновления.mdo b/SSL/src/InformationRegisters/ОбработчикиОбновления/ОбработчикиОбновления.mdo new file mode 100644 index 000000000..b1463c0fb --- /dev/null +++ b/SSL/src/InformationRegisters/ОбработчикиОбновления/ОбработчикиОбновления.mdo @@ -0,0 +1,495 @@ + + + + + + + + + + + + ОбработчикиОбновления + + ru + Обработчики обновления + + true + InDialog + + Use + Active + + Use + + + + + Use + LineNumber + + Use + + + + + Use + Recorder + + Use + + + + + Use + Period + + ShowError + Use + + + + Managed + + Статус + + ru + Статус + + + EnumRef.СтатусыОбработчиковОбновления + + + + Use + Use + + + + Версия + + ru + Версия + + + String + + 20 + + + + + Use + Use + + + + ИмяБиблиотеки + + ru + Имя библиотеки + + + String + + 100 + + + + + Use + Use + + + + ДлительностьОбработки + + ru + Длительность обработки + + + Number + + 10 + + + + + Use + Use + + + + РежимВыполнения + + ru + Режим выполнения + + + EnumRef.РежимыВыполненияОбработчиков + + + + Use + Use + + + + ВерсияРегистрации + + ru + Версия регистрации + + + String + + 20 + + + + + Use + Use + + + + ВерсияПорядок + + ru + Версия порядок + + + Number + + 11 + + + + + Use + Use + + + + Идентификатор + + ru + Идентификатор + + + UUID + + + + Use + + + + ЧислоПопыток + + ru + Число попыток + + + Number + + 10 + + + + + Use + Use + + + + СтатистикаВыполнения + + ru + Статистика выполнения + + + ValueStorage + + + + Use + Use + + + + ИнформацияОбОшибке + + ru + Информация об ошибке + + + String + + 1024 + + + + + Use + Use + + + + Комментарий + + ru + Комментарий + + + String + + 1024 + + + + + Use + Use + + + + Приоритет + + ru + Приоритет + + + String + + 100 + + + + + Use + Use + + + + ПроцедураПроверки + + ru + Процедура проверки + + + String + + 255 + + + + + Use + Use + + + + ПроцедураЗаполненияДанныхОбновления + + ru + Процедура заполнения данных обновления + + + String + + 255 + + + + + Use + Use + + + + ОчередьОтложеннойОбработки + + ru + Очередь отложенной обработки + + + Number + + 10 + + + + + Use + Use + + + + ЗапускатьТолькоВГлавномУзле + + ru + Запускать только в главном узле + + + Boolean + + + + Use + Use + + + + ЗапускатьИВПодчиненномУзлеРИБСФильтрами + + ru + Запускать и в подчиненном узле РИБ с фильтрами + + + Boolean + + + + Use + Use + + + + Многопоточный + + ru + Многопоточный + + + Boolean + + + + Use + Use + + + + ОбработкаПорцииЗавершена + + ru + Обработка порции завершена + + + Boolean + + + + Use + Use + + + + ГруппаОбновления + + ru + Группа обновления + + + Number + + 10 + + + + + Use + Use + + + + ИтерацияЗапуска + + ru + Итерация запуска + + + Number + + 10 + + + + + Use + Use + + + + ОбрабатываемыеДанные + + ru + Обрабатываемые данные + + + ValueStorage + + + + Use + Use + + + + РежимВыполненияОтложенногоОбработчика + + ru + Режим выполнения отложенного обработчика + + + EnumRef.РежимыВыполненияОтложенныхОбработчиков + + + + Use + Use + + + + ИзменяемыеОбъекты + + ru + Изменяемые объекты + + + String + + 1024 + + + + + Use + Use + + + + ИмяОбработчика + + ru + Имя обработчика + + + String + + 255 + + + + ru + Имя процедуры обработчика обновления + + + + Use + Use + + true + + diff --git a/SSL/src/InformationRegisters/ОбработчикиОбновленияОбщихДанных/ОбработчикиОбновленияОбщихДанных.mdo b/SSL/src/InformationRegisters/ОбработчикиОбновленияОбщихДанных/ОбработчикиОбновленияОбщихДанных.mdo new file mode 100644 index 000000000..25685edd9 --- /dev/null +++ b/SSL/src/InformationRegisters/ОбработчикиОбновленияОбщихДанных/ОбработчикиОбновленияОбщихДанных.mdo @@ -0,0 +1,210 @@ + + + + + + + + + + + + ОбработчикиОбновленияОбщихДанных + + ru + Обработчики обновления общих данных + + true + InDialog + + Use + Active + + Use + + + + + Use + LineNumber + + Use + + + + + Use + Recorder + + Use + + + + + Use + Period + + ShowError + Use + + + + Managed + + Статус + + ru + Статус + + + EnumRef.СтатусыОбработчиковОбновления + + + + Use + Use + + + + Версия + + ru + Версия + + + String + + 20 + + + + + Use + Use + + + + ИмяБиблиотеки + + ru + Имя библиотеки + + + String + + 100 + + + + + Use + Use + + + + ДлительностьОбработки + + ru + Длительность обработки + + + Number + + 10 + + + + + Use + Use + + + + РежимВыполнения + + ru + Режим выполнения + + + EnumRef.РежимыВыполненияОбработчиков + + + + Use + Use + + + + ВерсияРегистрации + + ru + Версия регистрации + + + String + + 20 + + + + + Use + Use + + + + Комментарий + + ru + Комментарий + + + String + + 1024 + + + + + Use + Use + + + + ИнформацияОбОшибке + + ru + Информация об ошибке + + + String + + 1024 + + + + + Use + Use + + + + ИмяОбработчика + + ru + Имя обработчика + + + String + + 255 + + + + + Use + Use + + true + + diff --git a/SSL/src/InformationRegisters/ОбработчикиСобытийСинхронизацииДанных/ManagerModule.bsl b/SSL/src/InformationRegisters/ОбработчикиСобытийСинхронизацииДанных/ManagerModule.bsl index 911563e92..59c6baa98 100644 --- a/SSL/src/InformationRegisters/ОбработчикиСобытийСинхронизацииДанных/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/ОбработчикиСобытийСинхронизацииДанных/ManagerModule.bsl @@ -53,8 +53,8 @@ // Процедура выполняет обработчики, зарегистрированные для событий узлов планов обмена. // // Параметры: -// УзелИнформационнойБазы - ПланОбменаСсылка - Узел информационной базы для выполнения обработчиков. -// Событие - Строка - Имя события, для которого необходимо выполнить обработчики. +// УзелИнформационнойБазы - ПланОбменаСсылка - узел информационной базы для выполнения обработчиков. +// Событие - Строка - имя события, для которого необходимо выполнить обработчики. // Процедура ВыполнитьОбработчики(УзелИнформационнойБазы, Событие) Экспорт diff --git a/SSL/src/InformationRegisters/ОбщиеПоставляемыеМакетыПечати/ManagerModule.bsl b/SSL/src/InformationRegisters/ОбщиеПоставляемыеМакетыПечати/ManagerModule.bsl index 123848445..7b770aeaf 100644 --- a/SSL/src/InformationRegisters/ОбщиеПоставляемыеМакетыПечати/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/ОбщиеПоставляемыеМакетыПечати/ManagerModule.bsl @@ -49,25 +49,29 @@ Попытка БлокировкаДанных.Заблокировать(); - МенеджерЗаписи = РегистрыСведений.ОбщиеПоставляемыеМакетыПечати.СоздатьМенеджерЗаписи(); - МенеджерЗаписи.ИмяМакета = Макет.Имя; - МенеджерЗаписи.Объект = ИдентификаторОбъектаМетаданныхВладельца; - МенеджерЗаписи.Прочитать(); - - Если Не МенеджерЗаписи.Выбран() Тогда - МенеджерЗаписи.ИмяМакета = Макет.Имя; - МенеджерЗаписи.Объект = ИдентификаторОбъектаМетаданныхВладельца; - КонецЕсли; + НаборЗаписей = РегистрыСведений.ОбщиеПоставляемыеМакетыПечати.СоздатьНаборЗаписей(); + НаборЗаписей.Отбор.ИмяМакета.Установить(Макет.Имя); + НаборЗаписей.Отбор.Объект.Установить(ИдентификаторОбъектаМетаданныхВладельца); + НаборЗаписей.Прочитать(); - Если МенеджерЗаписи.ВерсияМакета = ВерсияМакета Тогда + Если НаборЗаписей.Количество() > 0 Тогда + Запись = НаборЗаписей[0]; + Иначе + Запись = НаборЗаписей.Добавить(); + Запись.ИмяМакета = Макет.Имя; + Запись.Объект = ИдентификаторОбъектаМетаданныхВладельца; + КонецЕсли; + + Если Запись.ВерсияМакета = ВерсияМакета Тогда ОтменитьТранзакцию(); Продолжить; КонецЕсли; - МенеджерЗаписи.ВерсияМакета = ВерсияМакета; - МенеджерЗаписи.ПредыдущаяКонтрольнаяСумма = МенеджерЗаписи.КонтрольнаяСумма; - МенеджерЗаписи.КонтрольнаяСумма = КонтрольнаяСумма; - МенеджерЗаписи.Записать(); + Запись.ВерсияМакета = ВерсияМакета; + Запись.ПредыдущаяКонтрольнаяСумма = Запись.КонтрольнаяСумма; + Запись.КонтрольнаяСумма = КонтрольнаяСумма; + + ОбновлениеИнформационнойБазы.ЗаписатьНаборЗаписей(НаборЗаписей); ЗафиксироватьТранзакцию(); Исключение @@ -117,8 +121,7 @@ // Параметры: // МассивОбъектов - Массив - ссылки на объекты, которые нужно распечатать; // ПараметрыПечати - Структура - дополнительные настройки печати; -// КоллекцияПечатныхФорм - ТаблицаЗначений - сформированные табличные документы (выходной параметр), -// см. УправлениеПечатью.ПодготовитьКоллекциюПечатныхФорм. +// КоллекцияПечатныхФорм - см. УправлениеПечатью.ПодготовитьКоллекциюПечатныхФорм. // ОбъектыПечати - СписокЗначений - значение - ссылка на объект; // представление - имя области в которой был выведен объект (выходной // параметр); diff --git a/SSL/src/InformationRegisters/ПакетыДляОтправки/ManagerModule.bsl b/SSL/src/InformationRegisters/ПакетыДляОтправки/ManagerModule.bsl index 65e346953..c4643ccca 100644 --- a/SSL/src/InformationRegisters/ПакетыДляОтправки/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/ПакетыДляОтправки/ManagerModule.bsl @@ -33,15 +33,15 @@ ТелоПакета = ЦентрМониторингаСлужебный.СтруктураJSONВСтроку(JSONСтруктура); ХешMD5 = Новый ХешированиеДанных(ХешФункция.MD5); ХешMD5.Добавить(ТелоПакета + "hashSalt"); - HASH = ХешMD5.ХешСумма; - HASH = СтрЗаменить(Строка(HASH), " ", ""); + ХешПакета = ХешMD5.ХешСумма; + ХешПакета = СтрЗаменить(Строка(ХешПакета), " ", ""); НаборЗаписей = СоздатьНаборЗаписей(); НовЗапись = НаборЗаписей.Добавить(); НовЗапись.Период = ДатаЗаписи; НовЗапись.НомерПакета = СледующийНомерПакета; НовЗапись.ТелоПакета = ТелоПакета; - НовЗапись.ХешПакета = HASH; + НовЗапись.ХешПакета = ХешПакета; НаборЗаписей.ОбменДанными.Загрузка = Истина; НаборЗаписей.Записать(Ложь); diff --git a/SSL/src/InformationRegisters/ПараметрыОграниченияДоступа/ManagerModule.bsl b/SSL/src/InformationRegisters/ПараметрыОграниченияДоступа/ManagerModule.bsl index e40027ee1..73edddb77 100644 --- a/SSL/src/InformationRegisters/ПараметрыОграниченияДоступа/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/ПараметрыОграниченияДоступа/ManagerModule.bsl @@ -64,7 +64,9 @@ Или ОбщегоНазначенияКлиентСервер.СравнитьВерсии(ВерсияИБ, "3.1.1.1") > 0 И ОбщегоНазначенияКлиентСервер.СравнитьВерсии(ВерсияИБ, "3.1.1.109") < 0 Или ОбщегоНазначенияКлиентСервер.СравнитьВерсии(ВерсияИБ, "3.1.2.1") > 0 - И ОбщегоНазначенияКлиентСервер.СравнитьВерсии(ВерсияИБ, "3.1.2.249") < 0 Тогда + И ОбщегоНазначенияКлиентСервер.СравнитьВерсии(ВерсияИБ, "3.1.2.249") < 0 + Или ОбщегоНазначенияКлиентСервер.СравнитьВерсии(ВерсияИБ, "3.1.3.1") > 0 + И ОбщегоНазначенияКлиентСервер.СравнитьВерсии(ВерсияИБ, "3.1.3.4") < 0 Тогда ЕстьТекущиеИзменения = Истина; КонецЕсли; @@ -148,14 +150,18 @@ Если ОбщегоНазначенияКлиентСервер.СравнитьВерсии(ВерсияИБ, "3.0.3.168") < 0 Или ОбщегоНазначенияКлиентСервер.СравнитьВерсии(ВерсияИБ, "3.1.2.1") > 0 - И ОбщегоНазначенияКлиентСервер.СравнитьВерсии(ВерсияИБ, "3.1.2.249") < 0 Тогда - + И ОбщегоНазначенияКлиентСервер.СравнитьВерсии(ВерсияИБ, "3.1.2.249") < 0 + Или ОбщегоНазначенияКлиентСервер.СравнитьВерсии(ВерсияИБ, "3.1.3.1") > 0 + И ОбщегоНазначенияКлиентСервер.СравнитьВерсии(ВерсияИБ, "3.1.3.4") < 0 Тогда + ЗапланироватьОбновление_00_00268406("ПереходНаВерсиюБСП_3.0.3.168"); КонецЕсли; Если ОбщегоНазначенияКлиентСервер.СравнитьВерсии(ВерсияИБ, "3.0.3.190") < 0 Или ОбщегоНазначенияКлиентСервер.СравнитьВерсии(ВерсияИБ, "3.1.2.1") > 0 - И ОбщегоНазначенияКлиентСервер.СравнитьВерсии(ВерсияИБ, "3.1.2.269") < 0 Тогда + И ОбщегоНазначенияКлиентСервер.СравнитьВерсии(ВерсияИБ, "3.1.2.269") < 0 + Или ОбщегоНазначенияКлиентСервер.СравнитьВерсии(ВерсияИБ, "3.1.3.1") > 0 + И ОбщегоНазначенияКлиентСервер.СравнитьВерсии(ВерсияИБ, "3.1.3.26") < 0 Тогда ЗапланироватьОбновление_00_00263154("ПереходНаВерсиюБСП_3.0.3.190"); КонецЕсли; @@ -307,6 +313,7 @@ Процедура ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию3(Параметры) Экспорт // Регистрация данных не требуется. + Возврат; КонецПроцедуры diff --git a/SSL/src/InformationRegisters/ПараметрыРаботыВерсийРасширений/ManagerModule.bsl b/SSL/src/InformationRegisters/ПараметрыРаботыВерсийРасширений/ManagerModule.bsl index 240dde252..90de9bc5a 100644 --- a/SSL/src/InformationRegisters/ПараметрыРаботыВерсийРасширений/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/ПараметрыРаботыВерсийРасширений/ManagerModule.bsl @@ -97,7 +97,7 @@ // Возвращает дату последнего заполнения параметров работы версии расширений. // // Возвращаемое значение: -// Дата - +// Дата // Функция ДатаПоследнегоЗаполненияВсехПараметровРаботыРасширений() Экспорт diff --git a/SSL/src/InformationRegisters/ПараметрыРаботыПрограммы/ManagerModule.bsl b/SSL/src/InformationRegisters/ПараметрыРаботыПрограммы/ManagerModule.bsl index 211cee94a..706a7236e 100644 --- a/SSL/src/InformationRegisters/ПараметрыРаботыПрограммы/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/ПараметрыРаботыПрограммы/ManagerModule.bsl @@ -978,9 +978,9 @@ КонецФункции // Возвращаемое значение: -// ТаблицаЗначений - Описание: -// * ВерсияКонфигурации - Строка - -// * Изменения - Произвольный - +// ТаблицаЗначений: +// * ВерсияКонфигурации - Строка +// * Изменения - Произвольный // Функция КоллекцияИзмененийПараметраРаботыПрограммы() diff --git a/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/МакетыПечатныхФорм/Form.form b/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/МакетыПечатныхФорм/Form.form index c323520c1..c74ab860d 100644 --- a/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/МакетыПечатныхФорм/Form.form +++ b/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/МакетыПечатныхФорм/Form.form @@ -365,7 +365,7 @@ МакетыПечатныхФормОткрытьМакет 73 true - true + false true @@ -391,7 +391,7 @@ МакетыПечатныхФормИзменитьМакет 72 true - true + false true diff --git a/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/РедактированиеМакета/Form.form b/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/РедактированиеМакета/Form.form index f3687a6ba..0440e398f 100644 --- a/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/РедактированиеМакета/Form.form +++ b/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/РедактированиеМакета/Form.form @@ -970,7 +970,7 @@ - ВременнаяПапка + ИмяВременногоКаталога 12 String diff --git a/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/РедактированиеМакета/Module.bsl b/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/РедактированиеМакета/Module.bsl index 9fa544227..fee3db830 100644 --- a/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/РедактированиеМакета/Module.bsl +++ b/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/РедактированиеМакета/Module.bsl @@ -70,8 +70,8 @@ &НаКлиенте Процедура ПриЗакрытии(ЗавершениеРаботы) - Если Не ПустаяСтрока(ВременнаяПапка) Тогда - НачатьУдалениеФайлов(Новый ОписаниеОповещения, ВременнаяПапка); + Если Не ПустаяСтрока(ИмяВременногоКаталога) Тогда + НачатьУдалениеФайлов(Новый ОписаниеОповещения, ИмяВременногоКаталога); КонецЕсли; Если ЗавершениеРаботы Тогда @@ -111,7 +111,6 @@ &НаКлиенте Процедура ЗавершитьИзменение(Команда) - #Если Вебклиент ИЛИ МобильныйКлиент Тогда ОписаниеОповещения = Новый ОписаниеОповещения("ПриЗагрузкеФайла", ЭтотОбъект); ПараметрыЗагрузки = ФайловаяСистемаКлиент.ПараметрыЗагрузкиФайла(); @@ -228,11 +227,17 @@ &НаКлиенте Процедура ОткрытьМакетТонкийКлиент() + ОписаниеОповещения = Новый ОписаниеОповещения("ОткрытьМакетТонкийКлиентПослеСозданияВременногоКаталога", ЭтотОбъект); + ФайловаяСистемаКлиент.СоздатьВременныйКаталог(ОписаниеОповещения); + +КонецПроцедуры + +&НаКлиенте +Процедура ОткрытьМакетТонкийКлиентПослеСозданияВременногоКаталога(ИмяВременногоКаталога, ДополнительныеПараметры) Экспорт + #Если Не ВебКлиент И НЕ МобильныйКлиент Тогда Макет = МакетПечатнойФормы(ИмяОбъектаМетаданныхМакета); - ВременнаяПапка = ПолучитьИмяВременногоФайла(); - СоздатьКаталог(ВременнаяПапка); - ПутьКФайлуМакета = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ВременнаяПапка) + ИмяФайлаМакета; + ПутьКФайлуМакета = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ИмяВременногоКаталога) + ИмяФайлаМакета; Если ТипМакета = "MXL" Тогда Если Параметры.ТолькоОткрытие Тогда @@ -260,7 +265,7 @@ &НаКлиенте Процедура ОткрытьМакетВебКлиент() - ПолучитьФайл(ПоместитьМакетВоВременноеХранилище(), ИмяФайлаМакета); + ФайловаяСистемаКлиент.СохранитьФайл(Неопределено, ПоместитьМакетВоВременноеХранилище(), ИмяФайлаМакета); ПерейтиНаСтраницуЗавершенияИзменения(); КонецПроцедуры diff --git a/SSL/src/InformationRegisters/ПользовательскиеНастройкиДоступаКОбработкам/ManagerModule.bsl b/SSL/src/InformationRegisters/ПользовательскиеНастройкиДоступаКОбработкам/ManagerModule.bsl index 402e279c6..d73b92789 100644 --- a/SSL/src/InformationRegisters/ПользовательскиеНастройкиДоступаКОбработкам/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/ПользовательскиеНастройкиДоступаКОбработкам/ManagerModule.bsl @@ -11,11 +11,19 @@ #Область СлужебныеПроцедурыИФункции // Записывает таблицу настроек в данные регистра по указанным измерениям. +// +// Параметры: +// ТаблицаНастроек - ТаблицаЗначений +// ЗначенияИзмерений - Структура +// ЗначенияРесурсов - Структура +// УдалятьСтарые - Булево +// Процедура ЗаписатьПакетНастроек(ТаблицаНастроек, ЗначенияИзмерений, ЗначенияРесурсов, УдалятьСтарые) Экспорт НаборЗаписей = СоздатьНаборЗаписей(); Для Каждого КлючИЗначение Из ЗначенияИзмерений Цикл - НаборЗаписей.Отбор[КлючИЗначение.Ключ].Установить(КлючИЗначение.Значение, Истина); + Отбор = НаборЗаписей.Отбор[КлючИЗначение.Ключ];// ЭлементОтбора + Отбор.Установить(КлючИЗначение.Значение, Истина); ТаблицаНастроек.Колонки.Добавить(КлючИЗначение.Ключ); ТаблицаНастроек.ЗаполнитьЗначения(КлючИЗначение.Значение, КлючИЗначение.Ключ); КонецЦикла; diff --git a/SSL/src/InformationRegisters/ПоставляемыеМакетыПечати/ManagerModule.bsl b/SSL/src/InformationRegisters/ПоставляемыеМакетыПечати/ManagerModule.bsl index a18e30350..d7059663b 100644 --- a/SSL/src/InformationRegisters/ПоставляемыеМакетыПечати/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/ПоставляемыеМакетыПечати/ManagerModule.bsl @@ -54,25 +54,29 @@ Попытка БлокировкаДанных.Заблокировать(); - МенеджерЗаписи = РегистрыСведений.ПоставляемыеМакетыПечати.СоздатьМенеджерЗаписи(); - МенеджерЗаписи.ИмяМакета = Макет.Имя; - МенеджерЗаписи.Объект = ИдентификаторОбъектаМетаданныхВладельца; - МенеджерЗаписи.Прочитать(); - - Если Не МенеджерЗаписи.Выбран() Тогда - МенеджерЗаписи.ИмяМакета = Макет.Имя; - МенеджерЗаписи.Объект = ИдентификаторОбъектаМетаданныхВладельца; - КонецЕсли; + НаборЗаписей = РегистрыСведений.ПоставляемыеМакетыПечати.СоздатьНаборЗаписей(); + НаборЗаписей.Отбор.ИмяМакета.Установить(Макет.Имя); + НаборЗаписей.Отбор.Объект.Установить(ИдентификаторОбъектаМетаданныхВладельца); + НаборЗаписей.Прочитать(); - Если МенеджерЗаписи.ВерсияМакета = ВерсияМакета Тогда + Если НаборЗаписей.Количество() > 0 Тогда + Запись = НаборЗаписей[0]; + Иначе + Запись = НаборЗаписей.Добавить(); + Запись.ИмяМакета = Макет.Имя; + Запись.Объект = ИдентификаторОбъектаМетаданныхВладельца; + КонецЕсли; + + Если Запись.ВерсияМакета = ВерсияМакета Тогда ОтменитьТранзакцию(); Продолжить; КонецЕсли; - МенеджерЗаписи.ВерсияМакета = ВерсияМакета; - МенеджерЗаписи.ПредыдущаяКонтрольнаяСумма = МенеджерЗаписи.КонтрольнаяСумма; - МенеджерЗаписи.КонтрольнаяСумма = КонтрольнаяСумма; - МенеджерЗаписи.Записать(); + Запись.ВерсияМакета = ВерсияМакета; + Запись.ПредыдущаяКонтрольнаяСумма = Запись.КонтрольнаяСумма; + Запись.КонтрольнаяСумма = КонтрольнаяСумма; + + ОбновлениеИнформационнойБазы.ЗаписатьНаборЗаписей(НаборЗаписей); ЗафиксироватьТранзакцию(); Исключение diff --git a/SSL/src/InformationRegisters/ПотокиОбновления/ПотокиОбновления.mdo b/SSL/src/InformationRegisters/ПотокиОбновления/ПотокиОбновления.mdo new file mode 100644 index 000000000..722e50070 --- /dev/null +++ b/SSL/src/InformationRegisters/ПотокиОбновления/ПотокиОбновления.mdo @@ -0,0 +1,171 @@ + + + + + + + + + + + + ПотокиОбновления + + ru + Потоки обновления + + true + InDialog + + Use + Active + + Use + + + + + Use + LineNumber + + Use + + + + + Use + Recorder + + Use + + + + + Use + Period + + ShowError + Use + + + + Managed + + АдресРезультата + + ru + Адрес результата + + + String + + 255 + + + + + + + + Группа + + ru + Группа + + + String + + 20 + + + + + + + + Наименование + + ru + Наименование + + + String + + 1024 + + + + + + + + ПараметрыПроцедуры + + ru + Параметры процедуры + + + ValueStorage + + + + + + + ПараметрыПроцедурыЗавершения + + ru + Параметры процедуры завершения + + + ValueStorage + + + + + + + ПриоритетЗавершения + + ru + Приоритет завершения + + + Number + + 10 + + + + + + + + ИдентификаторЗадания + + ru + Идентификатор задания + + + UUID + + + + + + + ИдентификаторПотока + + ru + Идентификатор потока + + + UUID + + + + Use + + true + + diff --git a/SSL/src/InformationRegisters/ПраваРолей/ManagerModule.bsl b/SSL/src/InformationRegisters/ПраваРолей/ManagerModule.bsl index 6d500229c..8694a61d9 100644 --- a/SSL/src/InformationRegisters/ПраваРолей/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/ПраваРолей/ManagerModule.bsl @@ -468,6 +468,22 @@ КонецФункции // Формирует пустую таблицу прав ролей. +// +// Возвращаемое значение: +// ТаблицаЗначений: +// * ОбъектМетаданных - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// * Роль - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// * Изменение - Булево +// * Добавление - Булево +// * ЧтениеБезОграничения - Булево +// * ИзменениеБезОграничения - Булево +// * ДобавлениеБезОграничения - Булево +// * Просмотр - Булево +// * Редактирование - Булево +// * ИнтерактивноеДобавление - Булево +// * РольПолноеИмя - Строка +// * ОбъектМетаданныхПолноеИмя - Строка +// Функция ТаблицаПравРолей(ОбъектыРасширений = Ложь, ВидИзмененияСтроки = Ложь, КакРезультатЗапроса = Ложь) Экспорт ПраваРолей = СоздатьНаборЗаписей().Выгрузить(); diff --git a/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ЗагрузитьПравилаСинхронизацииДанных/Module.bsl b/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ЗагрузитьПравилаСинхронизацииДанных/Module.bsl index 4d7b348bf..e94fb2fa0 100644 --- a/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ЗагрузитьПравилаСинхронизацииДанных/Module.bsl +++ b/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ЗагрузитьПравилаСинхронизацииДанных/Module.bsl @@ -565,13 +565,13 @@ &НаСервере Функция ПолучитьАдресВременногоХранилищаАрхиваПравилНаСервере() - // Создаем временный каталог на сервере и формируем пути к файлам и папкам. - ИмяВременнойПапки = ПолучитьИмяВременногоФайла(""); - СоздатьКаталог(ИмяВременнойПапки); + // Создаем временный каталог на сервере и формируем пути к файлам и каталогам. + ИмяВременногоКаталога = ПолучитьИмяВременногоФайла(""); + СоздатьКаталог(ИмяВременногоКаталога); - ПутьКФайлу = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ИмяВременнойПапки) + "ExchangeRules"; - ПутьКФайлуКорреспондента = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ИмяВременнойПапки) + "CorrespondentExchangeRules"; - ПутьКФайлуРегистрации = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ИмяВременнойПапки) + "RegistrationRules"; + ПутьКФайлу = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ИмяВременногоКаталога) + "ExchangeRules"; + ПутьКФайлуКорреспондента = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ИмяВременногоКаталога) + "CorrespondentExchangeRules"; + ПутьКФайлуРегистрации = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ИмяВременногоКаталога) + "RegistrationRules"; Запрос = Новый Запрос; Запрос.Текст = @@ -592,7 +592,7 @@ НСтрока = НСтр("ru = 'Не удалось получить правила обмена.'"); ОбменДаннымиСервер.СообщитьОбОшибке(НСтрока); - УдалитьФайлы(ИмяВременнойПапки); + УдалитьФайлы(ИмяВременногоКаталога); Возврат ""; Иначе @@ -619,13 +619,13 @@ КонецЦикла; - МаскаУпаковкиФайлов = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ИмяВременнойПапки) + "*.xml"; + МаскаУпаковкиФайлов = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ИмяВременногоКаталога) + "*.xml"; ОбменДаннымиСервер.ЗапаковатьВZipФайл(ПутьКФайлу + ".zip", МаскаУпаковкиФайлов); // Помещаем архив правил в хранилище. ДвоичныеДанныеАрхиваПравил = Новый ДвоичныеДанные(ПутьКФайлу + ".zip"); АдресВременногоХранилища = ПоместитьВоВременноеХранилище(ДвоичныеДанныеАрхиваПравил); - УдалитьФайлы(ИмяВременнойПапки); + УдалитьФайлы(ИмяВременногоКаталога); Возврат АдресВременногоХранилища; @@ -775,8 +775,14 @@ // // Параметры: // Шаблон - Строка - заготовка для формирования. -// Строка1 - Строка, ФорматированнаяСтрока, Картинка, Неопределено - подставляемое значение. -// Строка2 - Строка, ФорматированнаяСтрока, Картинка, Неопределено - подставляемое значение. +// Строка1 - Строка +// - ФорматированнаяСтрока +// - Картинка +// - Неопределено - подставляемое значение. +// Строка2 - Строка +// - ФорматированнаяСтрока +// - Картинка +// - Неопределено - подставляемое значение. // // Возвращаемое значение: // ФорматированнаяСтрока - сформированная по входящим параметрам. @@ -854,9 +860,9 @@ #Если МобильныйКлиент Тогда Возврат ""; #Иначе - App = Новый COMОбъект("Shell.Application"); - Folder = App.Namespace(26); - Результат = Folder.Self.Path; + Приложение = Новый COMОбъект("Shell.Application"); + Каталог = Приложение.Namespace(26); + Результат = Каталог.Self.Path; Возврат ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(Результат); #КонецЕсли diff --git a/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ПравилаКонвертацииОбъектов/Module.bsl b/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ПравилаКонвертацииОбъектов/Module.bsl index 73174e310..ef52d1b17 100644 --- a/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ПравилаКонвертацииОбъектов/Module.bsl +++ b/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ПравилаКонвертацииОбъектов/Module.bsl @@ -432,11 +432,11 @@ &НаСервере Функция ПолучитьАдресВременногоХранилищаАрхиваПравилНаСервере() - // Создаем временный каталог на сервере и формируем пути к файлам и папкам. - ИмяВременнойПапки = ПолучитьИмяВременногоФайла(""); - СоздатьКаталог(ИмяВременнойПапки); - ПутьКФайлу = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ИмяВременнойПапки) + "ExchangeRules"; - ПутьКФайлуКорреспондента = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ИмяВременнойПапки) + "CorrespondentExchangeRules"; + // Создаем временный каталог на сервере и формируем пути к файлам и каталогам. + ИмяВременногоКаталога = ПолучитьИмяВременногоФайла(""); + СоздатьКаталог(ИмяВременногоКаталога); + ПутьКФайлу = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ИмяВременногоКаталога) + "ExchangeRules"; + ПутьКФайлуКорреспондента = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ИмяВременногоКаталога) + "CorrespondentExchangeRules"; Запрос = Новый Запрос; Запрос.Текст = @@ -455,7 +455,7 @@ НСтрока = НСтр("ru = 'Не удалось получить правила обмена.'"); ОбменДаннымиСервер.СообщитьОбОшибке(НСтрока); - УдалитьФайлы(ИмяВременнойПапки); + УдалитьФайлы(ИмяВременногоКаталога); Возврат ""; Иначе @@ -470,13 +470,13 @@ ДвоичныеДанныеПравилКорреспондента = Выборка.ПравилаXMLКорреспондента.Получить(); // ДвоичныеДанные ДвоичныеДанныеПравилКорреспондента.Записать(ПутьКФайлуКорреспондента + ".xml"); - МаскаУпаковкиФайлов = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ИмяВременнойПапки) + "*.xml"; + МаскаУпаковкиФайлов = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ИмяВременногоКаталога) + "*.xml"; ОбменДаннымиСервер.ЗапаковатьВZipФайл(ПутьКФайлу + ".zip", МаскаУпаковкиФайлов); // Помещаем архив правил в хранилище. ДвоичныеДанныеАрхиваПравил = Новый ДвоичныеДанные(ПутьКФайлу + ".zip"); АдресВременногоХранилища = ПоместитьВоВременноеХранилище(ДвоичныеДанныеАрхиваПравил); - УдалитьФайлы(ИмяВременнойПапки); + УдалитьФайлы(ИмяВременногоКаталога); Возврат АдресВременногоХранилища; КонецЕсли; diff --git a/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/ManagerModule.bsl b/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/ManagerModule.bsl index f189fd119..a7de20bd7 100644 --- a/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/ManagerModule.bsl @@ -110,10 +110,10 @@ ИмяФайла = Файл.Имя; // Распаковываем архив - ИмяВременнойПапки = ПолучитьИмяВременногоФайла(""); - Если ОбменДаннымиСервер.РаспаковатьZipФайл(ИмяФайлаПравил, ИмяВременнойПапки) Тогда + ИмяВременногоКаталога = ПолучитьИмяВременногоФайла(""); + Если ОбменДаннымиСервер.РаспаковатьZipФайл(ИмяФайлаПравил, ИмяВременногоКаталога) Тогда - СписокРаспакованныхФайлов = НайтиФайлы(ИмяВременнойПапки, ПолучитьМаскуВсеФайлы(), Истина); + СписокРаспакованныхФайлов = НайтиФайлы(ИмяВременногоКаталога, ПолучитьМаскуВсеФайлы(), Истина); // В архиве не было ни одного файла - отказываемся от загрузки. Если СписокРаспакованныхФайлов.Количество() = 0 Тогда @@ -151,8 +151,8 @@ ВызватьИсключение НСтр("ru = 'Не удалось распаковать архив с правилами.'"); КонецЕсли; - // Удаляем временный архив и временную папку, в которую был распакован архив. - ФайловаяСистема.УдалитьВременныйФайл(ИмяВременнойПапки); + // Удаляем временный архив и временный каталог с ним. + ФайловаяСистема.УдалитьВременныйФайл(ИмяВременногоКаталога); ИнформацияОПравилахКонвертации = "[ИнформацияОПравилахИсточника] | @@ -165,12 +165,7 @@ ДвоичныеДанные.Записать(ИмяВременногоФайла); // Зачитываем правила конвертации. - КонвертацияОбъектовИнформационныхБаз = Обработки.КонвертацияОбъектовИнформационныхБаз.Создать(); - - // свойства обработки - КонвертацияОбъектовИнформационныхБаз.РежимОбмена = "Выгрузка"; - КонвертацияОбъектовИнформационныхБаз.ИмяПланаОбменаВРО = ИмяПланаОбмена; - КонвертацияОбъектовИнформационныхБаз.КлючСообщенияЖурналаРегистрации = ОбменДаннымиСервер.СобытиеЖурналаРегистрацииЗагрузкаПравилДляОбменаДанными(); + КонвертацияОбъектовИнформационныхБаз = НоваяОбработкаКонвертацияОбъектовИнформационныхБаз("Выгрузка", ИмяПланаОбмена); ОбменДаннымиСервер.УстановитьНастройкиОтладкиВыгрузкиДляПравилОбмена(КонвертацияОбъектовИнформационныхБаз, ИмяПланаОбмена, Ложь); @@ -184,12 +179,7 @@ ДвоичныеДанныеКорреспондента.Записать(ИмяВременногоФайлаКорреспондента); // Зачитываем правила конвертации. - КонвертацияОбъектовИнформационныхБаз = Обработки.КонвертацияОбъектовИнформационныхБаз.Создать(); - - // свойства обработки - КонвертацияОбъектовИнформационныхБаз.РежимОбмена = "Загрузка"; - КонвертацияОбъектовИнформационныхБаз.ИмяПланаОбменаВРО = ИмяПланаОбмена; - КонвертацияОбъектовИнформационныхБаз.КлючСообщенияЖурналаРегистрации = ОбменДаннымиСервер.СобытиеЖурналаРегистрацииЗагрузкаПравилДляОбменаДанными(); + КонвертацияОбъектовИнформационныхБаз = НоваяОбработкаКонвертацияОбъектовИнформационныхБаз("Загрузка", ИмяПланаОбмена); // методы обработки ПравилаЗачитанныеКорреспондента = КонвертацияОбъектовИнформационныхБаз.ПравилаОбмена(ИмяВременногоФайлаКорреспондента); @@ -342,15 +332,36 @@ Возврат ПравилаТиповые; КонецФункции +// Параметры: +// РежимОбмена - Строка +// ИмяПланаОбмена - Строка +// +// Возвращаемое значение: +// ОбработкаОбъект.КонвертацияОбъектовИнформационныхБаз +// +Функция НоваяОбработкаКонвертацияОбъектовИнформационныхБаз(РежимОбмена, ИмяПланаОбмена) + + КонвертацияОбъектовИнформационныхБаз = Обработки.КонвертацияОбъектовИнформационныхБаз.Создать(); + + КонвертацияОбъектовИнформационныхБаз.РежимОбмена = РежимОбмена; + КонвертацияОбъектовИнформационныхБаз.ИмяПланаОбменаВРО = ИмяПланаОбмена; + + КонвертацияОбъектовИнформационныхБаз.УстановитьКлючСообщенияЖурналаРегистрации( + ОбменДаннымиСервер.СобытиеЖурналаРегистрацииЗагрузкаПравилДляОбменаДанными()); + + Возврат КонвертацияОбъектовИнформационныхБаз; + +КонецФункции + // Загружает правила в регистр. // // Параметры: -// Отказ - Булево - Отказ от записи в регистр. +// Отказ - Булево - отказ от записи в регистр. // Запись - РегистрСведенийЗапись.ПравилаДляОбменаДанными - запись регистра, в которую будут помещены данные. -// АдресВременногоХранилища - Строка - Адрес временного хранилища, из которого будут загружены XML-правила. -// ИмяФайлаПравил - Строка - Имя файла из которого были загружены файлы(оно также фиксируется в регистре). +// АдресВременногоХранилища - Строка - адрес временного хранилища, из которого будут загружены XML-правила. +// ИмяФайлаПравил - Строка - имя файла из которого были загружены файлы(оно также фиксируется в регистре). // ДвоичныеДанные - ДвоичныеДанные - данные, в которые сохраняется XML-файл (в том числе и распакованный из ZIP-архива). -// ЭтоАрхив - Булево - Признак того, что правила загружаются из ZIP-архива, а не из XML-файла. +// ЭтоАрхив - Булево - признак того, что правила загружаются из ZIP-архива, а не из XML-файла. // Процедура ЗагрузитьПравила(Отказ, Запись, АдресВременногоХранилища = "", ИмяФайлаПравил = "", ЭтоАрхив = Ложь) Экспорт @@ -399,10 +410,10 @@ ДвоичныеДанные.Записать(ИмяВременногоАрхива); // Распаковываем архив - ИмяВременнойПапки = ПолучитьИмяВременногоФайла(""); - Если ОбменДаннымиСервер.РаспаковатьZipФайл(ИмяВременногоАрхива, ИмяВременнойПапки) Тогда + ИмяВременногоКаталога = ПолучитьИмяВременногоФайла(""); + Если ОбменДаннымиСервер.РаспаковатьZipФайл(ИмяВременногоАрхива, ИмяВременногоКаталога) Тогда - СписокРаспакованныхФайлов = НайтиФайлы(ИмяВременнойПапки, ПолучитьМаскуВсеФайлы(), Истина); + СписокРаспакованныхФайлов = НайтиФайлы(ИмяВременногоКаталога, ПолучитьМаскуВсеФайлы(), Истина); // В архиве не было ни одного файла - отказываемся от загрузки. Если СписокРаспакованныхФайлов.Количество() = 0 Тогда @@ -467,8 +478,8 @@ ОбменДаннымиСервер.СообщитьОбОшибке(НСтрока, Отказ); КонецЕсли; - // Удаляем временный архив и временную папку, в которую был распакован архив. - ФайловаяСистема.УдалитьВременныйФайл(ИмяВременнойПапки); + // Удаляем временный архив и временный каталог с ним. + ФайловаяСистема.УдалитьВременныйФайл(ИмяВременногоКаталога); ФайловаяСистема.УдалитьВременныйФайл(ИмяВременногоАрхива); КонецЕсли; @@ -486,12 +497,7 @@ Если ЭтоПравилаКонвертации Тогда // Зачитываем правила конвертации. - КонвертацияОбъектовИнформационныхБаз = Обработки.КонвертацияОбъектовИнформационныхБаз.Создать(); - - // свойства обработки - КонвертацияОбъектовИнформационныхБаз.РежимОбмена = "Выгрузка"; - КонвертацияОбъектовИнформационныхБаз.ИмяПланаОбменаВРО = Запись.ИмяПланаОбмена; - КонвертацияОбъектовИнформационныхБаз.КлючСообщенияЖурналаРегистрации = ОбменДаннымиСервер.СобытиеЖурналаРегистрацииЗагрузкаПравилДляОбменаДанными(); + КонвертацияОбъектовИнформационныхБаз = НоваяОбработкаКонвертацияОбъектовИнформационныхБаз("Выгрузка", Запись.ИмяПланаОбмена); ОбменДаннымиСервер.УстановитьНастройкиОтладкиВыгрузкиДляПравилОбмена(КонвертацияОбъектовИнформационныхБаз, Запись.ИмяПланаОбмена, Запись.РежимОтладки); @@ -510,12 +516,7 @@ ДвоичныеДанныеКорреспондента.Записать(ИмяВременногоФайлаКорреспондента); // Зачитываем правила конвертации. - КонвертацияОбъектовИнформационныхБаз = Обработки.КонвертацияОбъектовИнформационныхБаз.Создать(); - - // свойства обработки - КонвертацияОбъектовИнформационныхБаз.РежимОбмена = "Загрузка"; - КонвертацияОбъектовИнформационныхБаз.ИмяПланаОбменаВРО = Запись.ИмяПланаОбмена; - КонвертацияОбъектовИнформационныхБаз.КлючСообщенияЖурналаРегистрации = ОбменДаннымиСервер.СобытиеЖурналаРегистрацииЗагрузкаПравилДляОбменаДанными(); + КонвертацияОбъектовИнформационныхБаз = НоваяОбработкаКонвертацияОбъектовИнформационныхБаз("Загрузка", Запись.ИмяПланаОбмена); // методы обработки ПравилаЗачитанныеКорреспондента = КонвертацияОбъектовИнформационныхБаз.ПравилаОбмена(ИмяВременногоФайлаКорреспондента); @@ -600,10 +601,10 @@ ДвоичныеДанные.Записать(ИмяВременногоАрхива); // Распаковываем архив - ИмяВременнойПапки = ПолучитьИмяВременногоФайла(""); - Если ОбменДаннымиСервер.РаспаковатьZipФайл(ИмяВременногоАрхива, ИмяВременнойПапки) Тогда + ИмяВременногоКаталога = ПолучитьИмяВременногоФайла(""); + Если ОбменДаннымиСервер.РаспаковатьZipФайл(ИмяВременногоАрхива, ИмяВременногоКаталога) Тогда - СписокРаспакованныхФайлов = НайтиФайлы(ИмяВременнойПапки, ПолучитьМаскуВсеФайлы(), Истина); + СписокРаспакованныхФайлов = НайтиФайлы(ИмяВременногоКаталога, ПолучитьМаскуВсеФайлы(), Истина); // В архиве не было ни одного файла - отказываемся от загрузки. Если СписокРаспакованныхФайлов.Количество() = 0 Тогда @@ -646,8 +647,8 @@ ОбменДаннымиСервер.СообщитьОбОшибке(НСтрока, Отказ); КонецЕсли; - // Удаляем временный архив и временную папку, в которую был распакован архив. - ФайловаяСистема.УдалитьВременныйФайл(ИмяВременнойПапки); + // Удаляем временный архив и временный каталог с ним. + ФайловаяСистема.УдалитьВременныйФайл(ИмяВременногоКаталога); ФайловаяСистема.УдалитьВременныйФайл(ИмяВременногоАрхива); КонецЕсли; @@ -667,12 +668,7 @@ ДвоичныеДанные.Записать(ИмяВременногоФайла); // Зачитываем правила конвертации. - КонвертацияОбъектовИнформационныхБаз = Обработки.КонвертацияОбъектовИнформационныхБаз.Создать(); - - // свойства обработки - КонвертацияОбъектовИнформационныхБаз.РежимОбмена = "Выгрузка"; - КонвертацияОбъектовИнформационныхБаз.ИмяПланаОбменаВРО = ЗаписьПравилКонвертации.ИмяПланаОбмена; - КонвертацияОбъектовИнформационныхБаз.КлючСообщенияЖурналаРегистрации = ОбменДаннымиСервер.СобытиеЖурналаРегистрацииЗагрузкаПравилДляОбменаДанными(); + КонвертацияОбъектовИнформационныхБаз = НоваяОбработкаКонвертацияОбъектовИнформационныхБаз("Выгрузка", ЗаписьПравилКонвертации.ИмяПланаОбмена); ОбменДаннымиСервер.УстановитьНастройкиОтладкиВыгрузкиДляПравилОбмена(КонвертацияОбъектовИнформационныхБаз, ЗаписьПравилКонвертации.ИмяПланаОбмена, ЗаписьПравилКонвертации.РежимОтладки); @@ -699,12 +695,7 @@ ДвоичныеДанныеКорреспондента.Записать(ИмяВременногоФайлаКорреспондента); // Зачитываем правила конвертации. - КонвертацияОбъектовИнформационныхБаз = Обработки.КонвертацияОбъектовИнформационныхБаз.Создать(); - - // свойства обработки - КонвертацияОбъектовИнформационныхБаз.РежимОбмена = "Загрузка"; - КонвертацияОбъектовИнформационныхБаз.ИмяПланаОбменаВРО = ЗаписьПравилКонвертации.ИмяПланаОбмена; - КонвертацияОбъектовИнформационныхБаз.КлючСообщенияЖурналаРегистрации = ОбменДаннымиСервер.СобытиеЖурналаРегистрацииЗагрузкаПравилДляОбменаДанными(); + КонвертацияОбъектовИнформационныхБаз = НоваяОбработкаКонвертацияОбъектовИнформационныхБаз("Загрузка", ЗаписьПравилКонвертации.ИмяПланаОбмена); // методы обработки ПравилаЗачитанныеКорреспондента = КонвертацияОбъектовИнформационныхБаз.ПравилаОбмена(ИмяВременногоФайлаКорреспондента); @@ -775,7 +766,7 @@ // // Возвращаемое значение: // ПравилаЗачитанные - ХранилищеЗначения - зачитанные правила конвертации объектов. -// Неопределено - Если правила конвертации не были загружены в базу для плана обмена. +// Неопределено - если правила конвертации не были загружены в базу для плана обмена. // Функция ЗачитанныеПравилаКонвертацииОбъектов(Знач ИмяПланаОбмена, ПолучатьПравилаКорреспондента = Ложь) Экспорт diff --git a/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/RecordSetModule.bsl b/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/RecordSetModule.bsl index 8fbe9c346..bcce3c949 100644 --- a/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/RecordSetModule.bsl +++ b/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/RecordSetModule.bsl @@ -93,7 +93,7 @@ Если Не КаталогПроверки.Существует() Тогда - СтрокаСообщения = НСтр("ru = 'Каталог файла протокола обмена ""%1"" не найден.'"); + СтрокаСообщения = НСтр("ru = 'Папка файла протокола обмена ""%1"" не найдена.'"); СтрокаСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаСообщения, ИмяКаталогаПроверки); Отказ = Истина; diff --git a/SSL/src/InformationRegisters/ПредметыПапкиВзаимодействий/ManagerModule.bsl b/SSL/src/InformationRegisters/ПредметыПапкиВзаимодействий/ManagerModule.bsl index 2c142594f..8e2cc4271 100644 --- a/SSL/src/InformationRegisters/ПредметыПапкиВзаимодействий/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/ПредметыПапкиВзаимодействий/ManagerModule.bsl @@ -57,11 +57,11 @@ // Устанавливает папку, предмет и реквизиты рассмотрения для взаимодействий. // // Параметры: -// Ссылка - ДокументСсылка.ЭлектронноеПисьмоВходящее, -// ДокументСсылка.ЭлектронноеПисьмоИсходящее, -// ДокументСсылка.Встреча, -// ДокументСсылка.ЗапланированноеВзаимодействие, -// ДокументСсылка.ТелефонныйЗвонок - взаимодействие для которого будут установлены папка и предмет. +// Ссылка - ДокументСсылка.ЭлектронноеПисьмоВходящее +// - ДокументСсылка.ЭлектронноеПисьмоИсходящее +// - ДокументСсылка.Встреча +// - ДокументСсылка.ЗапланированноеВзаимодействие +// - ДокументСсылка.ТелефонныйЗвонок - взаимодействие для которого будут установлены папка и предмет. // Реквизиты - см. РегистрыСведений.ПредметыПапкиВзаимодействий.РеквизитыВзаимодействия. // НаборЗаписей - РегистрСведений.ПредметыПапкиВзаимодействий.НаборЗаписей - набор записей регистра, если он уже создан // на момент вызова процедуры. @@ -145,12 +145,12 @@ // // Параметры: // Блокировка - БлокировкаДанных - устанавливаемая блокировка -// Взаимодействия - Массив - -// - ДокументСсылка.ЗапланированноеВзаимодействие - -// - ДокументСсылка.Встреча - -// - ДокументСсылка.ТелефонныйЗвонок - -// - ДокументСсылка.СообщениеSMS - -// - ДокументСсылка.ЭлектронноеПисьмоВходящее - +// Взаимодействия - Массив +// - ДокументСсылка.ЗапланированноеВзаимодействие +// - ДокументСсылка.Встреча +// - ДокументСсылка.ТелефонныйЗвонок +// - ДокументСсылка.СообщениеSMS +// - ДокументСсылка.ЭлектронноеПисьмоВходящее // - ДокументСсылка.ЭлектронноеПисьмоИсходящее - документы, для которых устанавливается блокировка. // Процедура ЗаблокироватьПредметыПапокВзаимодействий(Блокировка, Взаимодействия) Экспорт diff --git a/SSL/src/InformationRegisters/ПредопределенныеВариантыОтчетовВерсийРасширений/ManagerModule.bsl b/SSL/src/InformationRegisters/ПредопределенныеВариантыОтчетовВерсийРасширений/ManagerModule.bsl index f2e115d17..928f2a7f7 100644 --- a/SSL/src/InformationRegisters/ПредопределенныеВариантыОтчетовВерсийРасширений/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/ПредопределенныеВариантыОтчетовВерсийРасширений/ManagerModule.bsl @@ -13,33 +13,37 @@ // Записывает таблицу настроек в данные регистра по указанным измерениям. // // Параметры: -// ТаблицаНастроек - ТаблицаЗначений - -// Измерения - Структура - где:ъ -// * Пользователь - СправочникСсылка.Пользователи - -// - СправочникСсылка.ВнешниеПользователи - -// * Вариант - СправочникСсылка.ВариантыОтчетов - -// * Подсистема - СправочникСсылка.ИдентификаторыОбъектовМетаданных - -// - СправочникСсылка.ИдентификаторыОбъектовРасширений - -// Ресурсы - Структура - где: -// * Видимость - Булево - -// * БыстрыйДоступ - Булево - -// ПоверхСуществующих - Булево - +// ТаблицаНастроек - ТаблицаЗначений +// Измерения - Структура: +// * Пользователь - СправочникСсылка.Пользователи +// - СправочникСсылка.ВнешниеПользователи +// * Вариант - СправочникСсылка.ВариантыОтчетов +// * Подсистема - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// - СправочникСсылка.ИдентификаторыОбъектовРасширений +// Ресурсы - Структура: +// * Видимость - Булево +// * БыстрыйДоступ - Булево +// ПоверхСуществующих - Булево // // Возвращаемое значение: -// РегистрСведенийНаборЗаписей.ПредопределенныеВариантыОтчетовВерсийРасширений - +// РегистрСведенийНаборЗаписей.ПредопределенныеВариантыОтчетовВерсийРасширений // Функция Набор(ТаблицаНастроек, Измерения, Ресурсы, ПоверхСуществующих) Экспорт НаборЗаписей = СоздатьНаборЗаписей(); Для Каждого КлючИЗначение Из Измерения Цикл - НаборЗаписей.Отбор[КлючИЗначение.Ключ].Установить(КлючИЗначение.Значение, Истина); + ЭлементОтбора = НаборЗаписей.Отбор[КлючИЗначение.Ключ]; // ЭлементОтбора + ЭлементОтбора.Установить(КлючИЗначение.Значение, Истина); + ТаблицаНастроек.Колонки.Добавить(КлючИЗначение.Ключ); ТаблицаНастроек.ЗаполнитьЗначения(КлючИЗначение.Значение, КлючИЗначение.Ключ); КонецЦикла; + Для Каждого КлючИЗначение Из Ресурсы Цикл ТаблицаНастроек.Колонки.Добавить(КлючИЗначение.Ключ); ТаблицаНастроек.ЗаполнитьЗначения(КлючИЗначение.Значение, КлючИЗначение.Ключ); КонецЦикла; + Если Не ПоверхСуществующих Тогда НаборЗаписей.Прочитать(); СтарыеЗаписи = НаборЗаписей.Выгрузить(); @@ -51,6 +55,7 @@ КонецЕсли; КонецЦикла; КонецЕсли; + НаборЗаписей.Загрузить(ТаблицаНастроек); Возврат НаборЗаписей; diff --git a/SSL/src/InformationRegisters/ПроцессыДляЗапуска/Forms/НастройкаОтложенногоСтартаПроцесса/Module.bsl b/SSL/src/InformationRegisters/ПроцессыДляЗапуска/Forms/НастройкаОтложенногоСтартаПроцесса/Module.bsl index f9b73e7bd..18b752785 100644 --- a/SSL/src/InformationRegisters/ПроцессыДляЗапуска/Forms/НастройкаОтложенногоСтартаПроцесса/Module.bsl +++ b/SSL/src/InformationRegisters/ПроцессыДляЗапуска/Forms/НастройкаОтложенногоСтартаПроцесса/Module.bsl @@ -213,32 +213,31 @@ КонецЕсли; РазностьДат = ""; - Приставка = НСтр("ru = 'Задание будет запущено'") + " "; - Корень = НСтр("ru = 'через'") + " "; Если ИспользоватьДатуИВремяВСрокахЗадач Тогда Если ЧислоДней > 0 И ЧислоЧасов > 0 Тогда - РазностьДат = Корень + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = '%1 дн. и %2 ч.'"), + РазностьДат = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Задание будет запущено через %1 дн. и %2 ч.'"), Строка(ЧислоДней), Строка(ЧислоЧасов)); ИначеЕсли ЧислоДней > 0 Тогда - РазностьДат = Корень + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("%1 дн.", Строка(ЧислоДней)); - ИначеЕсли ЧислоЧасов > 0 Тогда - РазностьДат = Корень + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("%1 ч.", Строка(ЧислоЧасов)); - Иначе РазностьДат = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'менее чем через час.'"), Строка(ЧислоЧасов)); + НСтр("ru='Задание будет запущено через %1 дн.'"), Строка(ЧислоДней)); + ИначеЕсли ЧислоЧасов > 0 Тогда + РазностьДат = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru='Задание будет запущено через %1 ч.'"), Строка(ЧислоЧасов)); + Иначе + РазностьДат = НСтр("ru = 'Задание будет запущено менее чем через час.'"); КонецЕсли; Иначе Если ЧислоДней > 0 Тогда - РазностьДат = Корень + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("%1 дн.", Строка(ЧислоДней)); - Иначе РазностьДат = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'менее чем через день.'"), Строка(ЧислоДней)); + НСтр("ru='Задание будет запущено через %1 дн.'"), Строка(ЧислоДней)); + Иначе + РазностьДат = НСтр("ru = 'Задание будет запущено менее чем через день.'"); КонецЕсли; КонецЕсли; - Возврат Приставка + РазностьДат; + Возврат РазностьДат; КонецФункции diff --git a/SSL/src/InformationRegisters/ПубличныеИдентификаторыСинхронизируемыхОбъектов/ManagerModule.bsl b/SSL/src/InformationRegisters/ПубличныеИдентификаторыСинхронизируемыхОбъектов/ManagerModule.bsl index 7f5f70761..f47047e5f 100644 --- a/SSL/src/InformationRegisters/ПубличныеИдентификаторыСинхронизируемыхОбъектов/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/ПубличныеИдентификаторыСинхронизируемыхОбъектов/ManagerModule.bsl @@ -20,9 +20,11 @@ // Возвращает признак наличия записи в регистре по переданному отбору. // // Параметры: -// СтруктураЗаписи - Структура - структура отбора: +// СтруктураЗаписи - Структура: // * УзелИнформационнойБазы - ПланОбменаСсылка - узел плана обмена. -// * Ссылка - ДокументСсылка, ПланВидовХарактеристикСсылка, СправочникСсылка - ссылка на объект. +// * Ссылка - ДокументСсылка +// - ПланВидовХарактеристикСсылка +// - СправочникСсылка - ссылка на объект. // // Возвращаемое значение: // Булево - Истина, если в регистре содержатся записи для заданного отбора. @@ -58,12 +60,13 @@ // В противном случае возвращается УИД переданной ссылки. // // Параметры: -// УзелИнформационнойБазы - Ссылка на узел плана обмена, в который происходит выгрузка данных. +// УзелИнформационнойБазы - ссылка на узел плана обмена, в который происходит выгрузка данных. // СсылкаНаОбъект - ссылка на объект информационной базы, для которого необходимо получить // уникальный идентификатор объекта XDTO. // // Возвращаемое значение: -// Строка - Уникальный идентификатор объекта. +// Строка - уникальный идентификатор объекта. +// Функция ПубличныйИдентификаторПоСсылкеОбъекта(УзелИнформационнойБазы, СсылкаНаОбъект) Экспорт УстановитьПривилегированныйРежим(Истина); diff --git a/SSL/src/InformationRegisters/РазрешенияНаИспользованиеВнешнихРесурсов/ManagerModule.bsl b/SSL/src/InformationRegisters/РазрешенияНаИспользованиеВнешнихРесурсов/ManagerModule.bsl index f8482a0e7..e0098dade 100644 --- a/SSL/src/InformationRegisters/РазрешенияНаИспользованиеВнешнихРесурсов/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/РазрешенияНаИспользованиеВнешнихРесурсов/ManagerModule.bsl @@ -17,7 +17,7 @@ // Разрешение - ОбъектXDTO. // // Возвращаемое значение: -// Строка - . +// Строка // Функция КлючРазрешения(Знач Разрешение) Экспорт @@ -64,12 +64,12 @@ // БезОписаний - Булево - если Истина - срез будет возвращен с очищенным полем Description у разрешений. // // Возвращаемое значение - ТаблицаЗначений, колонки: -// * ТипПрограммногоМодуля - СправочникСсылка.ИдентификаторыОбъектовМетаданных - -// * ИдентификаторПрограммногоМодуля - УникальныйИдентификатор - -// * ТипВладельца - СправочникСсылка.ИдентификаторыОбъектовМетаданных - -// * ИдентификаторВладельца - УникальныйИдентификатор - +// * ТипПрограммногоМодуля - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// * ИдентификаторПрограммногоМодуля - УникальныйИдентификатор +// * ТипВладельца - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// * ИдентификаторВладельца - УникальныйИдентификатор // * Тип - Строка - имя XDTO-типа, описывающего разрешения. -// * Разрешения - Соответствие - описание разрешений: +// * Разрешения - Соответствие: // ** Ключ - Строка - ключ разрешения (см. функцию КлючРазрешения в модуле менеджера регистра. // РазрешенияНаИспользованиеВнешнихРесурсов), // ** Значение - ОбъектXDTO - XDTO-описание разрешения. diff --git a/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/Форма/Module.bsl b/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/Форма/Module.bsl index 5aab0773c..7366c8ecb 100644 --- a/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/Форма/Module.bsl +++ b/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/Форма/Module.bsl @@ -1270,7 +1270,7 @@ &НаКлиенте Процедура ОткрытьВерсиюНаКлиенте(ПолеВерсия) - ТекущиеДанные = Элементы.Коллизии.ТекущиеДанные; + ТекущиеДанные = ТекущиеДанныеТаблицыКоллизий(); Если ТекущиеДанные = Неопределено Тогда Возврат; КонецЕсли; @@ -1281,6 +1281,26 @@ КонецПроцедуры +// Возвращаемое значение: +// ДанныеФормыСтруктура - поля: +// * Дата - Дата +// * Ссылка - ЛюбаяСсылка +// * ТипСтрокой - Строка +// * НомерЭтойВерсии - Число +// * НомерДругойВерсии - Число +// * АвторДругойВерсии - СправочникСсылка.ВнешниеПользователи +// - СправочникСсылка.Пользователи +// - ПланОбменаСсылка +// * ДругаяВерсияПринята - Булево +// * ВерсияПроигнорирована - Булево +// +&НаКлиенте +Функция ТекущиеДанныеТаблицыКоллизий() + + Возврат Элементы.Коллизии.ТекущиеДанные; + +КонецФункции + &НаКлиенте Процедура ОткрытьОтчетСравненияВерсий(Ссылка, СравниваемыеВерсии) @@ -1299,8 +1319,6 @@ МодульВерсионированиеОбъектов = ОбщегоНазначения.ОбщийМодуль("ВерсионированиеОбъектов"); КонецЕсли; - РазрешитьПроведениеДокумента = Метаданные.СвойстваОбъектов.Проведение.Разрешить; - СчетчикВсего = 0; СчетчикНеПринятые = 0; Для Каждого ВыделеннаяСтрока Из ВыделенныеСтроки Цикл @@ -1347,13 +1365,19 @@ // Отбор - ОтборКомпоновкиДанных - объект отбора. // // Возвращаемое значение: -// Структура - набор полей отбора: -// * Пропущена - ИдентификаторКомпоновкиДанных, Неопределено - идентификатор элемента компоновки. -// * ДатаНачала - ИдентификаторКомпоновкиДанных, Неопределено - идентификатор элемента компоновки. -// * ДатаОкончания - ИдентификаторКомпоновкиДанных, Неопределено - идентификатор элемента компоновки. -// * УзелРавно - ИдентификаторКомпоновкиДанных, Неопределено - идентификатор элемента компоновки. -// * Причина - ИдентификаторКомпоновкиДанных, Неопределено - идентификатор элемента компоновки. -// * УзелВСписке - ИдентификаторКомпоновкиДанных, Неопределено - идентификатор элемента компоновки. +// Структура: +// * Пропущена - ИдентификаторКомпоновкиДанных +// - Неопределено - идентификатор элемента компоновки. +// * ДатаНачала - ИдентификаторКомпоновкиДанных +// - Неопределено - идентификатор элемента компоновки. +// * ДатаОкончания - ИдентификаторКомпоновкиДанных +// - Неопределено - идентификатор элемента компоновки. +// * УзелРавно - ИдентификаторКомпоновкиДанных +// - Неопределено - идентификатор элемента компоновки. +// * Причина - ИдентификаторКомпоновкиДанных +// - Неопределено - идентификатор элемента компоновки. +// * УзелВСписке - ИдентификаторКомпоновкиДанных +// - Неопределено - идентификатор элемента компоновки. // &НаСервере Функция НастройкаОтбораПоРезультатамОбменов(Отбор) @@ -1382,13 +1406,19 @@ // ОтборПоПричине - Булево - Истина, если в настройку необходимо включить отбор по причине проблемы. // // Возвращаемое значение: -// Структура - набор полей отбора: -// * АвторРавно - ИдентификаторКомпоновкиДанных, Неопределено - идентификатор элемента компоновки. -// * ДатаНачала - ИдентификаторКомпоновкиДанных, Неопределено - идентификатор элемента компоновки. -// * ДатаОкончания - ИдентификаторКомпоновкиДанных, Неопределено - идентификатор элемента компоновки. -// * ВерсияПроигнорирована - ИдентификаторКомпоновкиДанных, Неопределено - идентификатор элемента компоновки. -// * АвторВСписке - ИдентификаторКомпоновкиДанных, Неопределено - идентификатор элемента компоновки. -// * ПричинаЗапрета - ИдентификаторКомпоновкиДанных, Неопределено - (необязательное) идентификатор элемента компоновки. +// Структура: +// * АвторРавно - ИдентификаторКомпоновкиДанных +// - Неопределено - идентификатор элемента компоновки. +// * ДатаНачала - ИдентификаторКомпоновкиДанных +// - Неопределено - идентификатор элемента компоновки. +// * ДатаОкончания - ИдентификаторКомпоновкиДанных +// - Неопределено - идентификатор элемента компоновки. +// * ВерсияПроигнорирована - ИдентификаторКомпоновкиДанных +// - Неопределено - идентификатор элемента компоновки. +// * АвторВСписке - ИдентификаторКомпоновкиДанных +// - Неопределено - идентификатор элемента компоновки. +// * ПричинаЗапрета - ИдентификаторКомпоновкиДанных +// - Неопределено - (необязательное) идентификатор элемента компоновки. // &НаСервере Функция НастройкаОтбораПоВерсиямОбъектов(Отбор, ОтборПоПричине = Ложь) @@ -1416,7 +1446,7 @@ КонецФункции // Возвращаемое значение: -// Структура - набор настроек отборов: +// Структура: // * НепроведенныеДокументы - см. НастройкаОтбораПоРезультатамОбменов // * НезаполненныеРеквизиты - см. НастройкаОтбораПоРезультатамОбменов // * ОшибкиОбъектаXDTO - см. НастройкаОтбораПоРезультатамОбменов diff --git a/SSL/src/InformationRegisters/СведенияОФайлах/ManagerModule.bsl b/SSL/src/InformationRegisters/СведенияОФайлах/ManagerModule.bsl index 118247b63..747b5d219 100644 --- a/SSL/src/InformationRegisters/СведенияОФайлах/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/СведенияОФайлах/ManagerModule.bsl @@ -102,7 +102,6 @@ Строка.Файл, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Предупреждение, Строка.Файл.Метаданные(), Строка.Файл, ТекстСообщения); - КонецПопытки; КонецЦикла; diff --git a/SSL/src/InformationRegisters/СостоянияКонтактовВзаимодействий/ManagerModule.bsl b/SSL/src/InformationRegisters/СостоянияКонтактовВзаимодействий/ManagerModule.bsl index f131fcb33..7a0700c40 100644 --- a/SSL/src/InformationRegisters/СостоянияКонтактовВзаимодействий/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/СостоянияКонтактовВзаимодействий/ManagerModule.bsl @@ -13,7 +13,8 @@ // Удаляет либо одну, либо все записи из регистра. // // Параметры: -// Контакт - СправочникСсылка, Неопределено - контакт, для которого удаляется запись. +// Контакт - СправочникСсылка +// - Неопределено - контакт, для которого удаляется запись. // Если указано значение Неопределено, то регистр будет очищен полностью. // Процедура УдалитьЗаписьИзРегистра(Контакт = Неопределено) Экспорт diff --git a/SSL/src/InformationRegisters/СостоянияОригиналовПервичныхДокументов/Forms/ИзменениеСостоянийОригиналовПервичныхДокументов/Form.form b/SSL/src/InformationRegisters/СостоянияОригиналовПервичныхДокументов/Forms/ИзменениеСостоянийОригиналовПервичныхДокументов/Form.form new file mode 100644 index 000000000..d1cd8a184 --- /dev/null +++ b/SSL/src/InformationRegisters/СостоянияОригиналовПервичныхДокументов/Forms/ИзменениеСостоянийОригиналовПервичныхДокументов/Form.form @@ -0,0 +1,1589 @@ + + + + <key>ru</key> + <value>Изменение состояния оригинала документа</value> + + + ГруппаДекорацияПредупреждение + 96 + + КартинкаИнфо + 93 + + <key>ru</key> + <value>Картинка инфо</value> + + true + true + + true + + + КартинкаИнфоРасширеннаяПодсказка + 95 + Label + true + true + + Left + + + + КартинкаИнфоКонтекстноеМеню + 94 + true + + true + true + Center + + + CommonPicture.Информация32 + + AutoSize + AsFileRef + + + + НадписьПредупреждение + 80 + + <key>ru</key> + <value>Состояние оригинала документа установлено по печатным формам.</value> + + true + true + + true + + + НадписьПредупреждениеРасширеннаяПодсказка + 82 + Label + true + true + + Left + + + + НадписьПредупреждениеКонтекстноеМеню + 81 + true + + Label + true + Center + + Left + + + true + true + + true + + + <key>ru</key> + <value>Декорация предупреждение</value> + + + ГруппаДекорацияПредупреждениеРасширеннаяПодсказка + 97 + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + Auto + true + true + Auto + Auto + + + + ГруппаКоманды + 131 + + ГруппУстановитьСостояниеОригинала + 151 + VeryHigh + + КоманднаяПанельУстановитьСостояниеОригинала + 70 + + ПодменюУстановитьНастроитьСостояниеОригинала + 143 + + ГруппаУстановитьСостояниеОригинала + 147 + true + true + + true + + + <key>ru</key> + <value>Установить состояние оригинала</value> + + + ru + Установить состояние оригинала первичного документа + + + ГруппаУстановитьСостояниеОригиналаРасширеннаяПодсказка + 148 + Label + true + true + + Left + + + + + + ГруппаНастроитьСостоянияОригинала + 149 + true + true + + true + + + <key>ru</key> + <value>Группа установить состояние оригинала</value> + + + ru + Настроить состояние оригинала + + + ГруппаНастроитьСостоянияОригиналаРасширеннаяПодсказка + 150 + Label + true + true + + Left + + + + + true + true + + true + + + <key>ru</key> + <value>Состояние оригинала</value> + + + ru + Подменю команд предназначенных для установки и изменения состояния оригинала первичных документов. + + + ПодменюУстановитьНастроитьСостояниеОригиналаРасширеннаяПодсказка + 144 + Label + true + true + + Left + + + Popup + + + CommonPicture.УстановитьСостояниеОригиналаПервичногоДокумента + + PictureAndText + Normal + + + + ГруппаУстановитьОригиналПолучен + 145 + VeryHigh + true + true + + true + + + <key>ru</key> + <value>Установить оригинал получен</value> + + + ru + Команда предназначена для установки конечного состояния оригинала первичного документа"Оригинал получен". + + + ГруппаУстановитьОригиналПолученРасширеннаяПодсказка + 146 + Label + true + true + + Left + + + + + true + true + + true + + + <key>ru</key> + <value>Установить состояние</value> + + + ru + Установить состояние оригинала + + false + + КоманднаяПанельУстановитьСостояниеОригиналаРасширеннаяПодсказка + 71 + Label + true + true + + Left + + + CommandBar + + Left + + + true + true + + true + + + <key>ru</key> + <value>Установить состояние оригинала</value> + + + ГруппУстановитьСостояниеОригиналаРасширеннаяПодсказка + 152 + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + Single + Auto + true + true + Auto + Auto + + + + ГруппаДополнительно + 153 + VeryLow + + ГруппаКартинкаДобавитьСвою + 136 + VeryHigh + + КартинкаДобавить + 133 + + <key>ru</key> + <value>Картинка добавить</value> + + true + true + + true + + + КартинкаДобавитьРасширеннаяПодсказка + 135 + Label + true + true + + Left + + + + КартинкаДобавитьКонтекстноеМеню + 134 + true + + true + true + Center + + + StdPicture.CreateListItem + + AsFileRef + + + + ДобавитьСвою + 98 + + ПечатнаяФормаВручную + 100 + + <key>ru</key> + <value>Печатная форма</value> + + true + true + + true + + + ПечатнаяФормаВручную + + + ПечатнаяФормаВручнуюРасширеннаяПодсказка + 102 + Label + true + true + + Left + + + + ПечатнаяФормаВручнуюКонтекстноеМеню + 101 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + + + ДобавитьВручную + 103 + + <key>ru</key> + <value>Добавить</value> + + true + true + + true + + + ДобавитьВручнуюРасширеннаяПодсказка + 104 + Label + true + true + + Left + + + UsualButton + Form.Command.ДобавитьВручную + Normal + Auto + true + true + Right + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Добавить свою</value> + + + Style.ГиперссылкаЦвет + + + Style.NormalTextFont + + + ru + Добавить свою печатную форму + + Center + + ДобавитьСвоюРасширеннаяПодсказка + 99 + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + PopUp + WeakSeparation + true + true + auto + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Добавить свою</value> + + Center + + ГруппаКартинкаДобавитьСвоюРасширеннаяПодсказка + 137 + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + Half + Auto + true + true + Auto + Auto + + + + ГруппаПечатныеФормы + 129 + VeryHigh + + ПечатныеФормы + 83 + + ПоказатьОтслеживаемые + 87 + + <key>ru</key> + <value> Показать отслеживаемые</value> + + true + true + + true + + + ПоказатьОтслеживаемыеРасширеннаяПодсказка + 88 + Label + true + true + + Left + + + Form.Command.ПоказатьОтслеживаемые + Normal + true + true + Right + UserCmds + Auto + InCommandBar + + + ПоказатьВсе + 85 + + <key>ru</key> + <value> Показать все</value> + + true + true + + true + + + ПоказатьВсеРасширеннаяПодсказка + 86 + Label + true + true + + Left + + + Form.Command.ПоказатьВсе + Normal + true + true + Right + UserCmds + InCommandBar + + true + true + + true + + + <key>ru</key> + <value>Фильтр форм</value> + + + ПечатныеФормыРасширеннаяПодсказка + 84 + Label + true + true + + Left + + + Popup + + + CommonPicture.Отборы + + Picture + FormCommandPanelGlobalCommands + Normal + + + true + true + + true + + + <key>ru</key> + <value>Фильтр форм</value> + + false + Right + Bottom + + ГруппаПечатныеФормыРасширеннаяПодсказка + 130 + Label + true + true + + Left + + + CommandBar + + Left + + + true + true + + true + + + <key>ru</key> + <value>Дополнительно</value> + + Right + + ГруппаДополнительноРасширеннаяПодсказка + 154 + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + Right + Auto + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Команды</value> + + true + + ГруппаКомандыРасширеннаяПодсказка + 132 + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Single + Auto + true + true + Auto + Auto + + + + КомплектПечатныхФорм + 48 + VeryHigh + + <key>ru</key> + <value>Комплект печатных форм</value> + + true + true + + true + + + КомплектПечатныхФорм + + None + + КомплектПечатныхФормГруппа + 115 + + КомплектПечатныхФормКартинка + 112 + true + true + + true + + + КомплектПечатныхФорм.Картинка + + None + + КомплектПечатныхФормКартинкаРасширеннаяПодсказка + 114 + Label + true + true + + Left + + + + КомплектПечатныхФормКартинкаКонтекстноеМеню + 113 + true + + PictureField + true + Auto + true + Left + true + + 7 + true + true + true + + + 1 + + AsFileRef + + + + КомплектПечатныхФормПредставление + 61 + + <key>ru</key> + <value>Первичный документ</value> + + true + true + + true + + + КомплектПечатныхФорм.Представление + + + КомплектПечатныхФормПредставлениеРасширеннаяПодсказка + 63 + Label + true + true + + Left + + + + КомплектПечатныхФормПредставлениеКонтекстноеМеню + 62 + true + + InputField + true + Auto + true + Left + true + + true + true + false + true + true + true + true + Normal + + + true + true + + true + + + <key>ru</key> + <value>Комплект печатных форм группа</value> + + + КомплектПечатныхФормГруппаРасширеннаяПодсказка + 116 + Label + true + true + + Left + + + ColumnGroup + + InCell + auto + true + + + + ОригиналПолученКартинка + 138 + true + true + + true + + + КомплектПечатныхФорм.ОригиналПолученКартинка + + None + + ОригиналПолученКартинкаРасширеннаяПодсказка + 140 + Label + true + true + + Left + + + + ОригиналПолученКартинкаКонтекстноеМеню + 139 + true + + PictureField + Auto + true + + CommonPicture.СостояниеОригиналаПервичногоДокументаОригиналПолучен + + Left + true + + true + true + true + true + + CommonPicture.КоллекцияПиктограммНаличиеОригиналаПервичногоДокумента + + + + 1 + + AsFileRef + + + + КомплектПечатныхФормСостояние + 64 + + <key>ru</key> + <value>Состояние оригинала</value> + + true + true + + true + + + КомплектПечатныхФорм.Состояние + + + OnChange + КомплектПечатныхФормСостояниеПриИзменении + + + КомплектПечатныхФормСостояниеРасширеннаяПодсказка + 66 + Label + true + true + + Left + + + + КомплектПечатныхФормСостояниеКонтекстноеМеню + 65 + true + + InputField + Auto + true + Left + true + + + ChoiceProcessing + КомплектПечатныхФормСостояниеОбработкаВыбора + + true + true + true + true + true + true + Normal + 5 + + + + КомплектПечатныхФормКоманднаяПанель + 50 + Left + + + Selection + КомплектПечатныхФормВыбор + + + BeforeAddRow + КомплектПечатныхФормПередНачаломДобавления + + + BeforeDeleteRow + КомплектПечатныхФормПередУдалением + + + КомплектПечатныхФормСтрокаПоиска + 52 + + КомплектПечатныхФормСтрокаПоискаРасширеннаяПодсказка + 54 + Label + true + true + + Left + + + + КомплектПечатныхФормСтрокаПоискаКонтекстноеМеню + 53 + true + + КомплектПечатныхФорм + + true + + + + КомплектПечатныхФормСостояниеПросмотра + 55 + + КомплектПечатныхФормСостояниеПросмотраРасширеннаяПодсказка + 57 + Label + true + true + + Left + + + + КомплектПечатныхФормСостояниеПросмотраКонтекстноеМеню + 56 + true + + ViewStatusAddition + КомплектПечатныхФорм + + true + + + + КомплектПечатныхФормУправлениеПоиском + 58 + + КомплектПечатныхФормУправлениеПоискомРасширеннаяПодсказка + 60 + Label + true + true + + Left + + + + КомплектПечатныхФормУправлениеПоискомКонтекстноеМеню + 59 + true + + SearchControlAddition + КомплектПечатныхФорм + + true + + + + КомплектПечатныхФормРасширеннаяПодсказка + 51 + Label + true + true + + Left + + + + КомплектПечатныхФормКонтекстноеМеню + 49 + + ГруппаУстановитьСостояниеОригиналаКонтекстноеМеню + 141 + true + true + + true + + + <key>ru</key> + <value>Состояние оригинала</value> + + false + + ГруппаУстановитьСостояниеОригиналаКонтекстноеМенюРасширеннаяПодсказка + 142 + Label + true + true + + Left + + + Popup + + + CommonPicture.УстановитьСостояниеОригиналаПервичногоДокумента + + Auto + Normal + + + + true + true + true + true + true + MultiRow +
    true
    + 1 + 1 + AutoUse + AutoUse + true + true + false + Auto + Auto + true + true + true + true + AsFileRef + + КомплектПечатныхФорм.Картинка + + + CommonPicture.КоллекцияПиктограммПечатныеФормыОригиналаПервичногоДокумента + + true + +
    + + ГруппаКнопокНиз + 110 + + СсылкаНаДокумент + 117 + true + true + + true + + + СсылкаНаДокумент + + None + + СсылкаНаДокументРасширеннаяПодсказка + 119 + Label + true + true + + Left + + + + СсылкаНаДокументКонтекстноеМеню + 118 + true + + LabelField + Bottom + Enter + true + Left + true + + + Click + СсылкаНаДокументНажатие + + true + true + true + + + + ОК + 155 + true + true + + true + + + ОКРасширеннаяПодсказка + 156 + Label + true + true + + Left + + + UsualButton + Form.Command.ОК + Auto + true + true + true + Right + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Кнопок низ</value> + + true + Bottom + + ГруппаКнопокНизРасширеннаяПодсказка + 111 + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + Bottom + Auto + true + true + Auto + Auto + + + + ФормаКоманднаяПанель + -1 + Left + + + NotificationProcessing + ОбработкаОповещения + + + OnCreateAtServer + ПриСозданииНаСервере + + 50 + LockOwner + true + true + Vertical + true + true + true + auto + true + + Запись + 1 + + InformationRegisterRecordManager.СостоянияОригиналовПервичныхДокументов + + + true + + + true + +
    true
    + true +
    + + КомплектПечатныхФорм + + <key>ru</key> + <value>Комплект печатных форм</value> + + 2 + + ValueTable + + + true + + + true + + + Представление + + <key>ru</key> + <value>Представление</value> + + 1 + + String + + + + true + + + true + + + + Состояние + + <key>ru</key> + <value>Состояние</value> + + 2 + + CatalogRef.СостоянияОригиналовПервичныхДокументов + + + true + + + true + + + + Картинка + + <key>ru</key> + <value>Картинка</value> + + 3 + + Number + + 1 + true + + + + true + + + true + + + + Извне + 4 + + Boolean + + + true + + + true + + + + ОригиналПолученКартинка + + <key>ru</key> + <value>Оригинал получен картинка</value> + + 5 + + Number + + true + + + + true + + + true + + + + ИмяМакета + 6 + + String + + + + true + + + true + + + + + СоответствиеКомандСостояниямОригинала + 3 + + ValueTable + + + true + + + true + + + ИмяКоманды + 1 + + String + + + + true + + + true + + + + ИмяСостояния + 2 + + String + + + + true + + + true + + + + + ПечатнаяФормаВручную + + <key>ru</key> + <value>Печатная форма вручную</value> + + 4 + + String + + + + true + + + true + + + + СсылкаНаДокумент + + <key>ru</key> + <value>Ссылка на документ</value> + + 5 + + String + + + + true + + + true + + + + ФильтрПечатныхФорм + 6 + + String + + + + true + + + true + + + + ИзФормыДокумента + 7 + + Boolean + + + true + + + true + + + + СписокПечатныхФорм + 8 + + ValueList + + + true + + + true + + + + + + + СписокВыбораСостоянийОригинала + 9 + + ValueList + + + true + + + true + + + + + + + ПоказатьВсе + + <key>ru</key> + <value>Показать все</value> + + 5 + + ru + Показать все + + + true + + + + ПоказатьВсе + + + Auto + + КомплектПечатныхФорм + + Auto + + + ПоказатьОтслеживаемые + + <key>ru</key> + <value>Показать отслеживаемые</value> + + 6 + + ru + Показать отслеживаемые + + + true + + + + ПоказатьОтслеживаемые + + + Auto + + КомплектПечатныхФорм + + Auto + + + ДобавитьВручную + + <key>ru</key> + <value>Добавить вручную</value> + + 7 + + ru + Добавить вручную + + + true + + + + ДобавитьВручную + + + Auto + Auto + + + ОК + + <key>ru</key> + <value>ОК</value> + + 1 + + ru + ОК + + + true + + + + ОК + + + Auto + Auto + + + + + + +
    diff --git a/SSL/src/InformationRegisters/СостоянияОригиналовПервичныхДокументов/Forms/ИзменениеСостоянийОригиналовПервичныхДокументов/Module.bsl b/SSL/src/InformationRegisters/СостоянияОригиналовПервичныхДокументов/Forms/ИзменениеСостоянийОригиналовПервичныхДокументов/Module.bsl new file mode 100644 index 000000000..c23a32b3a --- /dev/null +++ b/SSL/src/InformationRegisters/СостоянияОригиналовПервичныхДокументов/Forms/ИзменениеСостоянийОригиналовПервичныхДокументов/Module.bsl @@ -0,0 +1,621 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2020, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + СостоянияОригиналов = УчетОригиналовПервичныхДокументов.ИспользуемыеСостояния(); + УчетОригиналовПервичныхДокументов.ВывестиНаФормуКомандыСостоянияОригинала(ЭтотОбъект, КомплектПечатныхФорм, СостоянияОригиналов); + + ЗаполнитьСписокПечатныхФормПоСсылке(); + + Если Параметры.Свойство("Ссылка") Тогда + Запись.Ссылка = Параметры.Ссылка; + ФильтрПечатныхФорм = "Все"; + Элементы.НадписьПредупреждение.Заголовок = НСтр("ru='Состояние оригинала документа будет установлено по печатным формам'"); + ИначеЕсли КомплектПечатныхФорм.Количество()= 0 Тогда + ЗаполнитьВсеПечатныеФормы(); + ФильтрПечатныхФорм = "Все"; + Элементы.НадписьПредупреждение.Заголовок = НСтр("ru='Состояние оригинала документа будет установлено по печатным формам'"); + Иначе + ФильтрПечатныхФорм = "Отслеживаемые"; + КонецЕсли; + + УстановитьСсылкуНаОригинал(); + + Если КомплектПечатныхФорм.Количество()= 0 Тогда + ВосстанавливатьФильтр = Ложь; + Иначе + ВосстанавливатьФильтр = Истина; + КонецЕсли; + + ВосстановитьНастройки(ВосстанавливатьФильтр); + + УстановитьСсылкуНаОригинал(); + + УстановитьФильтрПечатныхФорм(); + + ЭлементОформления = УсловноеОформление.Элементы.Добавить(); + + ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("КомплектПечатныхФорм.Состояние"); + ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено; + ЭлементОтбора.Использование = Истина; + + ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.СеребристоСерый); + ЭлементОформления.Использование = Истина; + + ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить(); + ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("КомплектПечатныхФормПредставление"); + ПолеОформления.Использование = Истина; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + + // СтандартныеПодсистемы.УчетОригиналовПервичныхДокументов + Если ИмяСобытия = "ДобавлениеУдалениеСостоянияОригиналаПервичногоДокумента" Тогда + Подключаемый_ОбновитьКомандыСостоянияОригинала(); + ОбновитьОтображениеДанных(); + ИначеЕсли ИмяСобытия = "ИзменениеСостоянияОригиналаПервичногоДокумента" Тогда + КомплектПечатныхФорм.Очистить(); + ПоказатьОтслеживаемыеНаСервере(); + Если КомплектПечатныхФорм.Количество()=0 Тогда + ПоказатьВсеНаСервере(); + КонецЕсли; + КонецЕсли; + // Конец СтандартныеПодсистемы.УчетОригиналовПервичныхДокументов + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура СсылкаНаДокументНажатие(Элемент, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + ПоказатьЗначение(,Запись.Ссылка); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормы + +&НаКлиенте +Процедура КомплектПечатныхФормВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + + Если Поле.Имя = "ОригиналПолученКартинка" Тогда + УстановитьСостояниеОригинала("УстановитьОригиналПолучен"); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура КомплектПечатныхФормПередУдалением(Элемент, Отказ) + + Отказ = Истина; + +КонецПроцедуры + +&НаКлиенте +Процедура КомплектПечатныхФормПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр) + + Отказ = Истина; + +КонецПроцедуры + +&НаКлиенте +Процедура КомплектПечатныхФормСостояниеПриИзменении(Элемент) + + КоличествоСдвинуть = 0; + + Для Каждого Строка Из КомплектПечатныхФорм Цикл + Если ЗначениеЗаполнено(Строка.Состояние) Тогда + КоличествоСдвинуть = КоличествоСдвинуть+1; + КонецЕсли; + КонецЦикла; + + ТекущаяСтрока = Элементы.КомплектПечатныхФорм.ТекущиеДанные; + НовыйИндекс = КомплектПечатныхФорм.Индекс(ТекущаяСтрока); + + Если Не НовыйИндекс <= КоличествоСдвинуть Тогда + КоличествоСдвинуть = НовыйИндекс - КоличествоСдвинуть +1; + КомплектПечатныхФорм.Сдвинуть(НовыйИндекс,-КоличествоСдвинуть); + КонецЕсли; + + Если Не ЗначениеЗаполнено(Элементы.КомплектПечатныхФорм.ТекущиеДанные.Состояние) Тогда + Элементы.КомплектПечатныхФорм.ТекущиеДанные.ОригиналПолученКартинка = 0; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура КомплектПечатныхФормСостояниеОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) + + Если ВыбранноеЗначение = ПредопределенноеЗначение("Справочник.СостоянияОригиналовПервичныхДокументов.ОригиналПолучен") Тогда + Элементы.КомплектПечатныхФорм.ТекущиеДанные.ОригиналПолученКартинка = 1; + Иначе + Элементы.КомплектПечатныхФорм.ТекущиеДанные.ОригиналПолученКартинка = 0; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ОК(Команда) + + ОчиститьНеОтслеживаемые(); + + УстановитьОбщееСостояние(); + + СохранитьНастройки(); + + Если КомплектПечатныхФорм.Количество()<> 0 Тогда + ЗаписатьСостоянияОригиналовПервичныхДокументов(); + Оповестить("ИзменениеСостоянияОригиналаПервичногоДокумента"); + Закрыть(); + УчетОригиналовПервичныхДокументовКлиент.ОповеститьПользователяОбУстановкеСостояний(1, Запись.Ссылка); + ИначеЕсли КомплектПечатныхФорм.Количество() = 0 Тогда + Закрыть(); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_УстановитьСостояниеОригинала(Команда) + + Если Команда.Имя = "НастройкаСостояний" Тогда + УчетОригиналовПервичныхДокументовКлиент.ОткрытьФормуНастройкиСостояний(); + Иначе + УстановитьСостояниеОригинала(Команда.Имя); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура Подключаемый_ОбновитьКомандыСостоянияОригинала() + + УчетОригиналовПервичныхДокументов.ОбновитьКомандыСостоянияОригинала(ЭтотОбъект,Элементы.КомплектПечатныхФорм); + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьСостояниеОригинала(Команда) + + НайденноеСостояние = Элементы.Найти(Команда); + + Если Не НайденноеСостояние = Неопределено Тогда + ИмяСостояния = НайденноеСостояние.Заголовок; + ИначеЕсли Команда = "УстановитьОригиналПолучен" Тогда + ИмяСостояния = "Оригинал получен"; + Иначе + Возврат; + КонецЕсли; + + Для Каждого СтрокаСписка Из Элементы.КомплектПечатныхФорм.ВыделенныеСтроки Цикл + ДанныеСтроки = Элементы.КомплектПечатныхФорм.ДанныеСтроки(СтрокаСписка); + + ДанныеСтроки.Состояние = НайтиСостояниеВСправочнике(ИмяСостояния); + + Если ДанныеСтроки.Состояние = ПредопределенноеЗначение("Справочник.СостоянияОригиналовПервичныхДокументов.ОригиналПолучен") Тогда + ДанныеСтроки.ОригиналПолученКартинка = 1; + Иначе + ДанныеСтроки.ОригиналПолученКартинка = 0; + КонецЕсли; + + ДанныеСтроки.Состояние = НайтиСостояниеВСправочнике(ИмяСостояния); + КонецЦикла; + + Элементы.КомплектПечатныхФорм.Обновить(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПоказатьВсе(Команда) + + ПоказатьВсеНаСервере() + +КонецПроцедуры + +&НаКлиенте +Процедура ПоказатьОтслеживаемые(Команда) + + ПоказатьОтслеживаемыеНаСервере() + +КонецПроцедуры + +&НаКлиенте +Процедура ДобавитьВручную(Команда) + + Если Не ЗначениеЗаполнено(ПечатнаяФормаВручную) Тогда + Возврат; + КонецЕсли; + + ПервичныйДокумент = СтрЗаменить(ПечатнаяФормаВручную," ",""); + + НайденныеСтроки = КомплектПечатныхФорм.НайтиСтроки(Новый Структура("ИмяМакета",ПервичныйДокумент)); + + Если НайденныеСтроки.Количество() > 0 Тогда + ОчиститьСообщения(); + ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'В списке уже есть такая форма.'")); + Возврат; + КонецЕсли; + + Элементы.ДобавитьСвою.Скрыть(); + КоличествоСдвинуть = 0; + + Для Каждого Строка Из КомплектПечатныхФорм Цикл + Если ЗначениеЗаполнено(Строка.Состояние) Тогда + КоличествоСдвинуть = КоличествоСдвинуть+1; + КонецЕсли; + КонецЦикла; + + Если КоличествоСдвинуть = 0 Тогда + КоличествоСдвинуть = КомплектПечатныхФорм.Количество(); + Иначе + КоличествоСдвинуть = КомплектПечатныхФорм.Количество() - КоличествоСдвинуть; + КонецЕсли; + + НоваяСтрока = КомплектПечатныхФорм.Добавить(); + НоваяСтрока.ИмяМакета = ПервичныйДокумент; + НоваяСтрока.Представление = ПечатнаяФормаВручную; + НоваяСтрока.Состояние = ПредопределенноеЗначение("Справочник.СостоянияОригиналовПервичныхДокументов.ФормаНапечатана"); + НоваяСтрока.Извне = Истина; + НоваяСтрока.Картинка = 2; + НоваяСтрока.ОригиналПолученКартинка = 0; + + ПоследняяСтрока = КомплектПечатныхФорм.Количество()-1; + + КомплектПечатныхФорм.Сдвинуть(ПоследняяСтрока,-КоличествоСдвинуть); + + Элементы.КомплектПечатныхФорм.Обновить(); + Элементы.КомплектПечатныхФорм.ВыделенныеСтроки.Очистить(); + Элементы.КомплектПечатныхФорм.ВыделенныеСтроки.Добавить(НоваяСтрока.ПолучитьИдентификатор()); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +#Область ЗаполнениеТаблицыКомплектПечатныхФорм + +&НаСервере +Процедура ЗаполнитьПервоначальныйСписокПечатныхФорм() + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Печать") Тогда + + ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ОбщегоНазначения.ИмяТаблицыПоСсылке(Запись.Ссылка)); + СписокОбъектов = Новый Массив; + СписокОбъектов.Добавить(ОбъектМетаданных); + + КоллекцияПечатныхФорм = УправлениеПечатью.КомандыПечатиФормы("ФормаДокумента", СписокОбъектов); + + ОбъектМетаданных = ОбщегоНазначения.ИмяТаблицыПоСсылке(Запись.Ссылка); + ЗапросТаблицаКоманд = ДополнительныеОтчетыИОбработки.НовыйЗапросПоДоступнымКомандам(Перечисления.ВидыДополнительныхОтчетовИОбработок.ПечатнаяФорма,ОбъектМетаданных, Истина); + ТаблицаКоманд = ЗапросТаблицаКоманд.Выполнить().Выгрузить(); + + Для Каждого ТекСтрока Из КоллекцияПечатныхФорм Цикл + НоваяСтрока = КомплектПечатныхФорм.Добавить(); + НоваяСтрока.ИмяМакета = ТекСтрока.Идентификатор; + НоваяСтрока.Представление = ТекСтрока.Представление; + НоваяСтрока.Картинка = 1; + НоваяСтрока.ОригиналПолученКартинка = 0; + КонецЦикла; + + Если ТаблицаКоманд.Количество() > 0 Тогда + Для Каждого ТекСтрока Из ТаблицаКоманд Цикл + + Если КомплектПечатныхФорм.НайтиСтроки(Новый Структура("ИмяМакета", ТекСтрока.Идентификатор)) = 0 Тогда + НоваяСтрока = КомплектПечатныхФорм.Добавить(); + НоваяСтрока.ИмяМакета = ТекСтрока.Идентификатор; + НоваяСтрока.Представление = ТекСтрока.Представление; + НоваяСтрока.Картинка = 1; + НоваяСтрока.ОригиналПолученКартинка = 0; + КонецЕсли; + + КонецЦикла; + КонецЕсли; + + НенужныеСтроки = КомплектПечатныхФорм.НайтиСтроки(Новый Структура("Представление","Комплект документов на принтер")); + Для Каждого НеНужнаяСтрока Из НенужныеСтроки Цикл + КомплектПечатныхФорм.Удалить(НеНужнаяСтрока); + КонецЦикла; + + + НенужныеСтроки = КомплектПечатныхФорм.НайтиСтроки(Новый Структура("Представление","Комплект документов с настройкой...")); + Для Каждого НеНужнаяСтрока Из НенужныеСтроки Цикл + КомплектПечатныхФорм.Удалить(НеНужнаяСтрока); + КонецЦикла; + + Иначе + Возврат; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ЗаполнитьСписокПечатныхФормПоСсылке() + + Запрос = Новый Запрос; + Запрос.Текст = "ВЫБРАТЬ + | СостоянияОригиналовПервичныхДокументов.ПервичныйДокумент КАК ПервичныйДокумент, + | СостоянияОригиналовПервичныхДокументов.Состояние КАК Состояние, + | СостоянияОригиналовПервичныхДокументов.ФормаИзвне КАК Извне, + | СостоянияОригиналовПервичныхДокументов.ПервичныйДокументПредставление КАК Представление + |ИЗ + | РегистрСведений.СостоянияОригиналовПервичныхДокументов КАК СостоянияОригиналовПервичныхДокументов + |ГДЕ + | НЕ СостоянияОригиналовПервичныхДокументов.ОбщееСостояние + | И СостоянияОригиналовПервичныхДокументов.Ссылка = &Ссылка"; + + Запрос.УстановитьПараметр("Ссылка", Запись.Ссылка); + + Выборка = Запрос.Выполнить().Выбрать(); + + Пока Выборка.Следующий() Цикл + НоваяСтрока = КомплектПечатныхФорм.Добавить(); + НоваяСтрока.ИмяМакета = Выборка.ПервичныйДокумент; + НоваяСтрока.Представление = Выборка.Представление; + НоваяСтрока.Состояние = Выборка.Состояние; + НоваяСтрока.Извне = Выборка.Извне; + + Если Выборка.Извне = Истина Тогда + НоваяСтрока.Картинка = 2; + Иначе + НоваяСтрока.Картинка = 1; + КонецЕсли; + + Если Выборка.Состояние = Справочники.СостоянияОригиналовПервичныхДокументов.ОригиналПолучен Тогда + НоваяСтрока.ОригиналПолученКартинка = 1; + Иначе + НоваяСтрока.ОригиналПолученКартинка = 0; + КонецЕсли; + + КонецЦикла; + + КомплектПечатныхФорм.Сортировать("Представление"); + +КонецПроцедуры + +&НаСервере +Процедура ЗаполнитьВсеПечатныеФормы() + + ЗаполнитьСписокПечатныхФормПоСсылке(); + ЗаполнитьПервоначальныйСписокПечатныхФорм(); + + УдалитьДубликатыФорм(); + + Запрос = Новый Запрос; + Запрос.Текст = "ВЫБРАТЬ + | СостоянияОригиналовПервичныхДокументов.ПервичныйДокумент КАК ПервичныйДокумент, + | СостоянияОригиналовПервичныхДокументов.ПервичныйДокументПредставление КАК Представление + |ИЗ + | РегистрСведений.СостоянияОригиналовПервичныхДокументов КАК СостоянияОригиналовПервичныхДокументов + |ГДЕ + | ТИПЗНАЧЕНИЯ(СостоянияОригиналовПервичныхДокументов.Ссылка) = &Тип + | И СостоянияОригиналовПервичныхДокументов.ДатаПоследнегоИзменения МЕЖДУ &ДатаНачала И &ДатаОкончания + | И СостоянияОригиналовПервичныхДокументов.ФормаИзвне + | + |СГРУППИРОВАТЬ ПО + | СостоянияОригиналовПервичныхДокументов.ПервичныйДокумент, + | СостоянияОригиналовПервичныхДокументов.ПервичныйДокументПредставление"; + + Запрос.Текст = СтрЗаменить(Запрос.Текст, "&Тип","ТИП ("+ОбщегоНазначения.ИмяТаблицыПоСсылке(Запись.Ссылка)+")"); + Запрос.УстановитьПараметр("ДатаНачала",НачалоМесяца(НачалоДня(ТекущаяДатаСеанса()))); + Запрос.УстановитьПараметр("ДатаОкончания",КонецМесяца(КонецДня(ТекущаяДатаСеанса()))); + + Выборка = Запрос.Выполнить().Выбрать(); + + Пока Выборка.Следующий() Цикл + НоваяСтрока = КомплектПечатныхФорм.Добавить(); + НоваяСтрока.ИмяМакета = Выборка.ПервичныйДокумент; + НоваяСтрока.Представление = Выборка.Представление; + НоваяСтрока.Извне = Истина; + НоваяСтрока.Картинка = 2; + НоваяСтрока.ОригиналПолученКартинка = 0; + КонецЦикла; + + УдалитьДубликатыФорм(); + +КонецПроцедуры + +&НаСервере +Процедура ОчиститьНеОтслеживаемые() + + Отбор = Новый Структура("Состояние",ПредопределенноеЗначение("Справочник.СостоянияОригиналовПервичныхДокументов.ПустаяСсылка")); + НайденныеСтроки = КомплектПечатныхФорм.НайтиСтроки(Отбор); + Для Каждого Строка Из НайденныеСтроки Цикл + КомплектПечатныхФорм.Удалить(Строка); + КонецЦикла; + +КонецПроцедуры + +&НаСервере +Процедура УдалитьДубликатыФорм() + + Для Каждого Строка Из КомплектПечатныхФорм Цикл + Отбор = Новый Структура("ИмяМакета",Строка.ИмяМакета); + НайденныеСтроки = КомплектПечатныхФорм.НайтиСтроки(Отбор); + Если НайденныеСтроки.Количество()> 1 Тогда + Счетчик = НайденныеСтроки.Количество(); + Пока Счетчик > НайденныеСтроки.Количество()-1 Цикл + КомплектПечатныхФорм.Удалить(НайденныеСтроки[Счетчик-1]); + Если Не Счетчик = 0 Тогда + Счетчик = Счетчик-1; + Иначе + Продолжить; + КонецЕсли; + КонецЦикла; + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +&НаСервере +Процедура ПоказатьВсеНаСервере() + + Элементы.ПоказатьВсе.Пометка = Истина; + Элементы.ПоказатьОтслеживаемые.Пометка = Ложь; + ФильтрПечатныхФорм = "Все"; + + ОчиститьНеОтслеживаемые(); + ЗаполнитьВсеПечатныеФормы(); + +КонецПроцедуры + +&НаСервере +Процедура ПоказатьОтслеживаемыеНаСервере() + + Элементы.ПоказатьВсе.Пометка = Ложь; + Элементы.ПоказатьОтслеживаемые.Пометка = Истина; + ФильтрПечатныхФорм = "Отслеживаемые"; + + ОчиститьНеОтслеживаемые(); + ЗаполнитьСписокПечатныхФормПоСсылке(); + УдалитьДубликатыФорм(); +КонецПроцедуры + +&НаСервере +Процедура УстановитьФильтрПечатныхФорм() + + Если ФильтрПечатныхФорм = "Отслеживаемые" Тогда + ПоказатьОтслеживаемыеНаСервере(); + Иначе + ПоказатьВсеНаСервере(); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура УстановитьСсылкуНаОригинал() + + Документ = Запись.Ссылка.ПолучитьОбъект(); + ТипДокумента = Метаданные.НайтиПоПолномуИмени(ОбщегоНазначения.ИмяТаблицыПоСсылке(Запись.Ссылка)); + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПрефиксацияОбъектов") Тогда + Значения = Новый Структура("Документ,Номер,Дата",СокрЛП(ТипДокумента), + ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(Документ.Номер, Истина, Истина),Формат(Документ.Дата,НСтр("ru='ДЛФ=DD'"))); + СсылкаНаДокумент = НСтр("ru='[Документ] № [Номер] от [Дата]'"); + СсылкаНаДокумент = СтроковыеФункцииКлиентСервер.ВставитьПараметрыВСтроку(СсылкаНаДокумент,Значения); + Иначе + СсылкаНаДокумент = Запись.Ссылка; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Функция НайтиСостояниеВСправочнике(ИмяСостояния) + + СостояниеОригинала = Справочники.СостоянияОригиналовПервичныхДокументов.НайтиПоНаименованию(ИмяСостояния); + + Возврат СостояниеОригинала + +КонецФункции + +&НаКлиенте +Процедура УстановитьОбщееСостояние() + + КоличествоЗаписываемых = 0; + + Для Каждого Строка Из КомплектПечатныхФорм Цикл + Если ЗначениеЗаполнено(Строка.Состояние) Тогда + КоличествоЗаписываемых = КоличествоЗаписываемых + 1; + КонецЕсли; + КонецЦикла; + + Для Каждого Строка Из КомплектПечатныхФорм Цикл + Если ЗначениеЗаполнено(Строка.Состояние) Тогда + Отбор = Новый Структура("Состояние",Строка.Состояние); + НайденныеСтроки = КомплектПечатныхФорм.НайтиСтроки(Отбор); + + Если НайденныеСтроки.Количество() = КомплектПечатныхФорм.Количество() Или КоличествоЗаписываемых = 1 Тогда + Запись.Состояние = Строка.Состояние; + Иначе + Запись.Состояние = ПредопределенноеЗначение("Справочник.СостоянияОригиналовПервичныхДокументов.ОригиналыНеВсе"); + КонецЕсли; + + Прервать; + КонецЕсли; + КонецЦикла + +КонецПроцедуры + +&НаСервере +Процедура ЗаписатьСостоянияОригиналовПервичныхДокументов() + + ПроверкаЗаписьСостоянияОригинала = РегистрыСведений.СостоянияОригиналовПервичныхДокументов.СоздатьНаборЗаписей(); + ПроверкаЗаписьСостоянияОригинала.Отбор.Ссылка.Установить(Запись.Ссылка); + ПроверкаЗаписьСостоянияОригинала.Прочитать(); + + Если ПроверкаЗаписьСостоянияОригинала.Количество() = 0 Тогда + РегистрыСведений.СостоянияОригиналовПервичныхДокументов.ЗаписатьОбщееСостояниеОригиналаДокумента(Запись.Ссылка,Запись.Состояние); + КонецЕсли; + + Если КомплектПечатныхФорм.Количество()<> 0 Тогда + Для Каждого ПечатнаяФорма Из КомплектПечатныхФорм Цикл + + Если ЗначениеЗаполнено(ПечатнаяФорма.Состояние) Тогда + ПроверкаЗаписьСостоянияОригинала.Отбор.ПервичныйДокумент.Установить(ПечатнаяФорма.ИмяМакета); + ПроверкаЗаписьСостоянияОригинала.Прочитать(); + Если ПроверкаЗаписьСостоянияОригинала.Количество() > 0 Тогда + + Если ПроверкаЗаписьСостоянияОригинала[0].Состояние <> ПечатнаяФорма.Состояние Тогда + РегистрыСведений.СостоянияОригиналовПервичныхДокументов.ЗаписатьСостояниеОригиналаДокументаПоПечатнымФормам(Запись.Ссылка, + ПечатнаяФорма.ИмяМакета,ПечатнаяФорма.Представление,ПечатнаяФорма.Состояние,ПечатнаяФорма.Извне); + КонецЕсли; + + Иначе + РегистрыСведений.СостоянияОригиналовПервичныхДокументов.ЗаписатьСостояниеОригиналаДокументаПоПечатнымФормам(Запись.Ссылка, + ПечатнаяФорма.ИмяМакета,ПечатнаяФорма.Представление,ПечатнаяФорма.Состояние,ПечатнаяФорма.Извне); + КонецЕсли; + КонецЕсли; + + КонецЦикла; + КонецЕсли; + РегистрыСведений.СостоянияОригиналовПервичныхДокументов.ЗаписатьОбщееСостояниеОригиналаДокумента(Запись.Ссылка,Запись.Состояние); + +КонецПроцедуры + +&НаСервере +Процедура ВосстановитьНастройки(ВосстанавливатьФильтр) + + Настройки = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("РегистрСведений.СостоянияОригиналовПервичныхДокументов.Форма.ИзменениеСостоянийОригиналовПервичныхДокументов","ФильтрПечатныхФорм"); + + Если ВосстанавливатьФильтр Тогда + Если ТипЗнч(Настройки) = Тип("Структура") Тогда + ФильтрПечатныхФорм = Настройки.ФильтрПечатныхФорм; + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура СохранитьНастройки() + + ИменаСохраняемыхРеквизитов = "ФильтрПечатныхФорм"; + + Настройки = Новый Структура(ИменаСохраняемыхРеквизитов); + ЗаполнитьЗначенияСвойств(Настройки, ЭтотОбъект); + + ОбщегоНазначения.ХранилищеОбщихНастроекСохранить("РегистрСведений.СостоянияОригиналовПервичныхДокументов.Форма.ИзменениеСостоянийОригиналовПервичныхДокументов","ФильтрПечатныхФорм",Настройки); + +КонецПроцедуры + +#КонецОбласти diff --git a/SSL/src/InformationRegisters/СостоянияОригиналовПервичныхДокументов/Forms/ФормаЗаписи/Form.form b/SSL/src/InformationRegisters/СостоянияОригиналовПервичныхДокументов/Forms/ФормаЗаписи/Form.form new file mode 100644 index 000000000..c66ef2dab --- /dev/null +++ b/SSL/src/InformationRegisters/СостоянияОригиналовПервичныхДокументов/Forms/ФормаЗаписи/Form.form @@ -0,0 +1,344 @@ + + + + Ссылка + 1 + true + true + + true + + + СсылкаРасширеннаяПодсказка + 3 + Label + true + true + + Left + + + + СсылкаКонтекстноеМеню + 2 + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + + + ПечатнаяФорма + 4 + true + true + + true + + + Запись.ПервичныйДокумент + + + ПечатнаяФормаРасширеннаяПодсказка + 6 + Label + true + true + + Left + + + + ПечатнаяФормаКонтекстноеМеню + 5 + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + + + СостояниеОригиналаПервичногоДокумента + 10 + true + true + + true + + + Запись.Состояние + + + СостояниеОригиналаПервичногоДокументаРасширеннаяПодсказка + 12 + Label + true + true + + Left + + + + СостояниеОригиналаПервичногоДокументаКонтекстноеМеню + 11 + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + + + Ответственный + 13 + true + true + + true + + + ОтветственныйРасширеннаяПодсказка + 15 + Label + true + true + + Left + + + + ОтветственныйКонтекстноеМеню + 14 + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + + + ДатаПоследнегоИзмененияСостояния + 16 + true + true + + true + + + Запись.ДатаПоследнегоИзменения + + + ДатаПоследнегоИзмененияСостоянияРасширеннаяПодсказка + 18 + Label + true + true + + Left + + + + ДатаПоследнегоИзмененияСостоянияКонтекстноеМеню + 17 + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + + + ГруппаПризнаки + 22 + + ОбщееСостояние + 7 + true + true + + true + + + Запись.ОбщееСостояние + + Right + + ОбщееСостояниеРасширеннаяПодсказка + 9 + Label + true + true + + Left + + + + ОбщееСостояниеКонтекстноеМеню + 8 + true + + CheckBoxField + true + Enter + true + Left + true + + + + Извне + 19 + true + true + + true + + + Запись.ФормаИзвне + + Right + + ИзвнеРасширеннаяПодсказка + 21 + Label + true + true + + Left + + + + ИзвнеКонтекстноеМеню + 20 + true + + CheckBoxField + true + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Признаки</value> + + + ГруппаПризнакиРасширеннаяПодсказка + 23 + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + Auto + true + true + Auto + Auto + + + + ФормаКоманднаяПанель + -1 + Left + + LockOwner + true + true + true + Vertical + true + true + true + auto + true + + Запись + 1 + + InformationRegisterRecordManager.СостоянияОригиналовПервичныхДокументов + + + true + + + true + +
    true
    + true +
    + + + + + +
    diff --git a/SSL/src/InformationRegisters/СостоянияОригиналовПервичныхДокументов/ManagerModule.bsl b/SSL/src/InformationRegisters/СостоянияОригиналовПервичныхДокументов/ManagerModule.bsl new file mode 100644 index 000000000..19438d237 --- /dev/null +++ b/SSL/src/InformationRegisters/СостоянияОригиналовПервичныхДокументов/ManagerModule.bsl @@ -0,0 +1,169 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2020, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +// Делает записи состояний оригиналов печатных форм регистр, после печати формы. +// +// Параметры: +// ОбъектыПечати - СписокЗначений - список документов. +// ПечатныеФормы - СписокЗначений - наименование макетов и представление печатных форм. +// +Процедура ЗаписатьСостоянияОригиналовДокументаПослеПечатиФормы(ОбъектыПечати, ПечатныеФормы) Экспорт + + Состояние = ПредопределенноеЗначение("Справочник.СостоянияОригиналовПервичныхДокументов.ФормаНапечатана"); + Если ЗначениеЗаполнено(ОбъектыПечати) Тогда + Если ОбъектыПечати.Количество() > 1 Тогда + Если ПечатныеФормы.Количество() > 1 Тогда + Для Каждого Документ Из ОбъектыПечати Цикл + Если УчетОригиналовПервичныхДокументов.ЭтоОбъектУчета(Документ.Значение) Тогда + // Записываем общее состояние + ЗаписатьОбщееСостояниеОригиналаДокумента(Документ.Значение,Состояние); + Для Каждого Форма Из ПечатныеФормы Цикл //Если документов и форм несколько, записываем для каждого документа, состояние каждой формы + ЗаписатьСостояниеОригиналаДокументаПоПечатнымФормам(Документ.Значение, Форма.Значение, Форма.Представление, Состояние, Ложь); + КонецЦикла; + КонецЕсли; + КонецЦикла; + Иначе + Для Каждого Документ Из ОбъектыПечати Цикл + Если УчетОригиналовПервичныхДокументов.ЭтоОбъектУчета(Документ.Значение) Тогда + ЗаписатьСостояниеОригиналаДокументаПоПечатнымФормам(Документ.Значение, ПечатныеФормы[0].Значение,ПечатныеФормы[0].Представление, Состояние, Ложь); + ЗаписатьОбщееСостояниеОригиналаДокумента(Документ.Значение,Состояние); + КонецЕсли; + КонецЦикла; + КонецЕсли; + Иначе + Документ = ОбъектыПечати[0].Значение; + Если УчетОригиналовПервичныхДокументов.ЭтоОбъектУчета(Документ) Тогда + Если ПечатныеФормы.Количество() > 1 Тогда + Для Каждого Форма Из ПечатныеФормы Цикл + ЗаписатьСостояниеОригиналаДокументаПоПечатнымФормам(Документ, Форма.Значение,Форма.Представление, Состояние, Ложь); + КонецЦикла; + Иначе + ЗаписатьСостояниеОригиналаДокументаПоПечатнымФормам(Документ, ПечатныеФормы[0].Значение,ПечатныеФормы[0].Представление, Состояние, Ложь); + КонецЕсли; + ЗаписатьОбщееСостояниеОригиналаДокумента(Документ,Состояние); + КонецЕсли; + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +// Делает запись состояния оригинала печатной формы в регистр, после печати формы. +// +// Параметры: +// Документ - СсылкаДокумент - ссылка на документ. +// ПечатнаяФорма - Строка - имя макета печатной формы. +// Представление - Строка - наименование печатной формы. +// Состояние - Строка +// - СсылкаСправочник - наименование или ссылка на состояние оригинала печатной формы. +// Извне - Булево - признак, показывающий принадлежит ли форма системе 1С. +// +Процедура ЗаписатьСостояниеОригиналаДокументаПоПечатнымФормам(Документ, ПечатнаяФорма, Представление, Состояние, Извне) Экспорт + + УстановитьПривилегированныйРежим(Истина); + + НачатьТранзакцию(); + + Попытка + + ЗаписьСостоянияОригинала = РегистрыСведений.СостоянияОригиналовПервичныхДокументов.СоздатьМенеджерЗаписи(); + ЗаписьСостоянияОригинала.Ссылка = Документ.Ссылка; + ЗаписьСостоянияОригинала.ПервичныйДокумент = ПечатнаяФорма; + ЗаписьСостоянияОригинала.ПервичныйДокументПредставление = Представление; + ЗаписьСостоянияОригинала.Состояние = Справочники.СостоянияОригиналовПервичныхДокументов.НайтиПоНаименованию(Состояние); + ЗаписьСостоянияОригинала.АвторИзменения = Пользователи.АвторизованныйПользователь(); + ЗаписьСостоянияОригинала.ОбщееСостояние = Ложь; + ЗаписьСостоянияОригинала.ФормаИзвне = Извне; + ЗаписьСостоянияОригинала.ДатаПоследнегоИзменения = ТекущаяДатаСеанса(); + ЗаписьСостоянияОригинала.Записать(); + + ЗафиксироватьТранзакцию(); + + Исключение + + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + + УстановитьПривилегированныйРежим(Ложь); + +КонецПроцедуры + +// Делает запись общего состояния оригинала документа в регистр. +// +// Параметры: +// Документ - СсылкаДокумент - ссылка на документ. +// Состояние - Строка - наименование состояния оригинала. +// +Процедура ЗаписатьОбщееСостояниеОригиналаДокумента(Документ, Состояние) Экспорт + + УстановитьПривилегированныйРежим(Истина); + + НачатьТранзакцию(); + + Попытка + + Блокировка = Новый БлокировкаДанных(); + Элемент = Блокировка.Добавить("РегистрСведений.СостоянияОригиналовПервичныхДокументов"); + Элемент.Режим = РежимБлокировкиДанных.Исключительный; + Блокировка.Заблокировать(); + + ЗаписьСостоянияОригинала = РегистрыСведений.СостоянияОригиналовПервичныхДокументов.СоздатьМенеджерЗаписи(); + ЗаписьСостоянияОригинала.Ссылка = Документ.Ссылка; + ЗаписьСостоянияОригинала.ПервичныйДокумент = ""; + + ПроверкаЗаписьСостоянияОригинала = РегистрыСведений.СостоянияОригиналовПервичныхДокументов.СоздатьНаборЗаписей(); + ПроверкаЗаписьСостоянияОригинала.Отбор.Ссылка.Установить(Документ.Ссылка); + ПроверкаЗаписьСостоянияОригинала.Отбор.ОбщееСостояние.Установить(Ложь); + ПроверкаЗаписьСостоянияОригинала.Прочитать(); + Если ПроверкаЗаписьСостоянияОригинала.Количество() > 1 Тогда + Для Каждого Запись Из ПроверкаЗаписьСостоянияОригинала Цикл + Если Запись.АвторИзменения <> Пользователи.ТекущийПользователь() Тогда + ЗаписьСостоянияОригинала.АвторИзменения = Неопределено; + Иначе + ЗаписьСостоянияОригинала.АвторИзменения = Пользователи.ТекущийПользователь(); + КонецЕсли; + КонецЦикла; + Иначе + ЗаписьСостоянияОригинала.АвторИзменения = Пользователи.ТекущийПользователь(); + КонецЕсли; + + Если ПроверкаЗаписьСостоянияОригинала.Количество() > 0 Тогда + Если УчетОригиналовПервичныхДокументов.СостояниеПечатныхФормОдинаково(Документ,Состояние) Тогда + ЗаписьСостоянияОригинала.Состояние = Справочники.СостоянияОригиналовПервичныхДокументов.НайтиПоНаименованию(Состояние); + Иначе + ЗаписьСостоянияОригинала.Состояние = Справочники.СостоянияОригиналовПервичныхДокументов.ОригиналыНеВсе; + КонецЕсли; + Иначе + ЗаписьСостоянияОригинала.Состояние = Справочники.СостоянияОригиналовПервичныхДокументов.НайтиПоНаименованию(Состояние); + КонецЕсли; + + + ЗаписьСостоянияОригинала.ОбщееСостояние = Истина; + ЗаписьСостоянияОригинала.ДатаПоследнегоИзменения = ТекущаяДатаСеанса(); + ЗаписьСостоянияОригинала.Записать(); + + ЗафиксироватьТранзакцию(); + + Исключение + + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + + УстановитьПривилегированныйРежим(Ложь); + +КонецПроцедуры + +#КонецОбласти + +#КонецЕсли + diff --git a/SSL/src/InformationRegisters/СостоянияОригиналовПервичныхДокументов/RecordSetModule.bsl b/SSL/src/InformationRegisters/СостоянияОригиналовПервичныхДокументов/RecordSetModule.bsl new file mode 100644 index 000000000..dbd764cfb --- /dev/null +++ b/SSL/src/InformationRegisters/СостоянияОригиналовПервичныхДокументов/RecordSetModule.bsl @@ -0,0 +1,27 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2020, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ОбработчикиСобытий + +Процедура ПередЗаписью(Отказ, Замещение) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(ЭтотОбъект); + +КонецПроцедуры + +#КонецОбласти + +#Иначе +ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'"); +#КонецЕсли \ No newline at end of file diff --git a/SSL/src/InformationRegisters/СостоянияОригиналовПервичныхДокументов/СостоянияОригиналовПервичныхДокументов.mdo b/SSL/src/InformationRegisters/СостоянияОригиналовПервичныхДокументов/СостоянияОригиналовПервичныхДокументов.mdo new file mode 100644 index 000000000..3d70b7b52 --- /dev/null +++ b/SSL/src/InformationRegisters/СостоянияОригиналовПервичныхДокументов/СостоянияОригиналовПервичныхДокументов.mdo @@ -0,0 +1,236 @@ + + + + + + + + + + + + СостоянияОригиналовПервичныхДокументов + + ru + Состояния оригиналов первичных документов + + InDialog + InformationRegister.СостоянияОригиналовПервичныхДокументов.Form.ФормаЗаписи + + Use + Active + + Use + + + + + Use + LineNumber + + Use + + + + + Use + Recorder + + Use + + + + + Use + Period + + ShowError + Use + + + + Managed + + Состояние + + ru + Состояние + + + CatalogRef.СостоянияОригиналовПервичныхДокументов + + + ru + Текущие состояние оригинала (или печатной формы) первичного документа + + + + ShowError + Use + Use + + Index + + + ДатаПоследнегоИзменения + + ru + Дата последнего изменения + + + Date + + + + ru + Дата изменения текущего состояния оригинала + + + + Use + Use + + + + АвторИзменения + + ru + Автор изменения + + + CatalogRef.Пользователи + + + ru + Ответственный за смену текущего состояния оригинала + + + + Index + Use + Use + + + + ПервичныйДокументПредставление + + ru + Первичный документ представление + + + String + + 150 + + + + + Use + Use + + + + Ссылка + + ru + Ссылка + + + en + Reference + + + DefinedType.ОбъектСУчетомОригиналовПервичныхДокументов + + + + true + Use + Use + true + + true + true + + + ПервичныйДокумент + + ru + Первичный документ + + + String + + 100 + + + + ru + Наименование печатной формы документа, которая отслеживается + + + + Use + Use + + true + + + ОбщееСостояние + + ru + Общее состояние + + + Boolean + + + ru + Признак, показывающий является ли текущее состоянии общим или нет + + + + Use + Use + + true + + + ФормаИзвне + + ru + Форма извне + + + Boolean + + + ru + Признак, показывающий является ли текущая печатная форма системной или добавлена вручную + + + + Use + Use + + true + + + ФормаЗаписи + + ru + Форма записи + + PersonalComputer + MobileDevice + + + ИзменениеСостоянийОригиналовПервичныхДокументов + + ru + Изменение состояний оригиналов первичных документов + + PersonalComputer + MobileDevice + + diff --git a/SSL/src/InformationRegisters/СостоянияПапокПисем/ManagerModule.bsl b/SSL/src/InformationRegisters/СостоянияПапокПисем/ManagerModule.bsl index 38585bc06..d960fbc65 100644 --- a/SSL/src/InformationRegisters/СостоянияПапокПисем/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/СостоянияПапокПисем/ManagerModule.bsl @@ -13,7 +13,8 @@ // Удаляет либо одну, либо все записи из регистра. // // Параметры: -// Папка - Справочник.ПапкиЭлектронныхПисем, Неопределено - папка, для которой удаляется запись. +// Папка - Справочник.ПапкиЭлектронныхПисем +// - Неопределено - папка, для которой удаляется запись. // Если указано значение Неопределено, то регистр будет очищен полностью. // Процедура УдалитьЗаписьИзРегистра(Папка = Неопределено) Экспорт diff --git a/SSL/src/InformationRegisters/СостоянияПредметовВзаимодействий/ManagerModule.bsl b/SSL/src/InformationRegisters/СостоянияПредметовВзаимодействий/ManagerModule.bsl index d7c059f99..49944c5ba 100644 --- a/SSL/src/InformationRegisters/СостоянияПредметовВзаимодействий/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/СостоянияПредметовВзаимодействий/ManagerModule.bsl @@ -13,9 +13,11 @@ // Удаляет либо одну, либо все записи из регистра. // // Параметры: -// Предмет - ДокументСсылка, СправочникСсылка, Неопределено - предмет, для которого удаляется запись. -// Если указано значение Неопределено, то регистр будет -// очищен полностью. +// Предмет - ДокументСсылка +// - СправочникСсылка +// - Неопределено - предмет, для которого удаляется запись. +// Если указано значение Неопределено, то регистр будет +// очищен полностью. // Процедура УдалитьЗаписьИзРегистра(Предмет = Неопределено) Экспорт @@ -33,7 +35,8 @@ // Выполняет запись в регистр сведений для указанного предмета. // // Параметры: -// Предмет - ДокументСсылка, СправочникСсылка - предмет, для которого выполняется запись. +// Предмет - ДокументСсылка +// - СправочникСсылка - предмет, для которого выполняется запись. // КоличествоНеРассмотрено - Число - количество не рассмотренных взаимодействий для предмета. // ДатаПоследнегоВзаимодействия - ДатаВремя - дата последнего взаимодействия по предмету. // Активен - Булево - признак активности предмета. diff --git a/SSL/src/InformationRegisters/ТаблицыГруппДоступа/ManagerModule.bsl b/SSL/src/InformationRegisters/ТаблицыГруппДоступа/ManagerModule.bsl index 89348547a..b2768326d 100644 --- a/SSL/src/InformationRegisters/ТаблицыГруппДоступа/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/ТаблицыГруппДоступа/ManagerModule.bsl @@ -51,11 +51,11 @@ // // Параметры: // ГруппыДоступа - СправочникСсылка.ГруппыДоступа. -// - Массив значений указанного выше типа. +// - массив значений указанного выше типа. // - Неопределено - без отбора. // // Таблицы - СправочникСсылка.ИдентификаторыОбъектовМетаданных. -// - Массив значений указанного выше типа. +// - массив значений указанного выше типа. // - Неопределено - без отбора. // // ЕстьИзменения - Булево - (возвращаемое значение) - если производилась запись, diff --git a/SSL/src/InformationRegisters/УдаляемыеОбъекты/RecordSetModule.bsl b/SSL/src/InformationRegisters/УдаляемыеОбъекты/RecordSetModule.bsl new file mode 100644 index 000000000..4168e9e6a --- /dev/null +++ b/SSL/src/InformationRegisters/УдаляемыеОбъекты/RecordSetModule.bsl @@ -0,0 +1,30 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2020, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ОбработчикиСобытий + +Процедура ПередЗаписью(Отказ, Замещение) + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + // Не поддерживаются ссылки на объекты расширений + Для Сч = -(Количество() - 1) По 0 Цикл + Если ЭтотОбъект[-Сч].Объект = Неопределено Тогда + Удалить(-Сч); + КонецЕсли; + КонецЦикла; +КонецПроцедуры + +#КонецОбласти + +#Иначе +ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'"); +#КонецЕсли \ No newline at end of file diff --git a/SSL/src/InformationRegisters/УдаляемыеОбъекты/УдаляемыеОбъекты.mdo b/SSL/src/InformationRegisters/УдаляемыеОбъекты/УдаляемыеОбъекты.mdo new file mode 100644 index 000000000..0fb59ec45 --- /dev/null +++ b/SSL/src/InformationRegisters/УдаляемыеОбъекты/УдаляемыеОбъекты.mdo @@ -0,0 +1,100 @@ + + + + + + + + + + + + УдаляемыеОбъекты + + ru + Удаляемые объекты + + + Use + Active + + Use + + + + + Use + LineNumber + + Use + + + + + Use + Recorder + + Use + + + + + Use + Period + + ShowError + Use + + + + Managed + + ВремяБлокировки + + ru + Время блокировки + + + Date + + + + + Use + Use + + + + Объект + + ru + Объект + + + AnyRef + + + + Use + Use + + true + true + + + ИдентификаторСеанса + + ru + Идентификатор сеанса + + + UUID + + + + Index + Use + + true + + diff --git a/SSL/src/Reports/АнализЖурналаРегистрации/ManagerModule.bsl b/SSL/src/Reports/АнализЖурналаРегистрации/ManagerModule.bsl index bf9363186..4a52e0a98 100644 --- a/SSL/src/Reports/АнализЖурналаРегистрации/ManagerModule.bsl +++ b/SSL/src/Reports/АнализЖурналаРегистрации/ManagerModule.bsl @@ -53,7 +53,7 @@ // по переданному периоду. // // Параметры: -// ПараметрыОтчета - Структура - со свойствами: +// ПараметрыОтчета - Структура: // * ДатаНачала - Дата - начало периода, по которому будет собираться информация. // * ДатаОкончания - Дата - окончание периода, по которому будет собираться информация. // * Пользователь - Строка - имя пользователя, по которому проводить анализ. @@ -198,6 +198,16 @@ // Расчет данных, необходимых для составления отчета. Для Каждого СтрокаДанныхЖурналаРегистрации Из ДанныеЖурналаРегистрации Цикл + СозданоДокументов = 0; + СозданоСправочников = 0; + ИзмененоДокументов = 0; + ИзмененоСправочников = 0; + СозданоБизнесПроцессов = 0; + ИзмененоБизнесПроцессов = 0; + ИзмененоЗадач = 0; + СозданоЗадач = 0; + ВидОбъекта = Неопределено; + СтрокаДанныхЖурналаРегистрации.Дата = СтрокаДанныхЖурналаРегистрации.Дата - СмещениеВремениСервера; Если СтрокаДанныхЖурналаРегистрации.ИмяПользователя = "" Тогда Продолжить; @@ -396,17 +406,7 @@ КонецЕсли; - СозданоДокументов = 0; - СозданоСправочников = 0; - ИзмененоДокументов = 0; - ИзмененоСправочников = 0; - СозданоБизнесПроцессов = 0; - ИзмененоБизнесПроцессов = 0; - ИзмененоЗадач = 0; - СозданоЗадач = 0; - ВидОбъекта = Неопределено; - - КонецЦикла; + КонецЦикла; Если СтрокаИсходныхДанных <> Неопределено Тогда СтрокаИсходныхДанных.ЧасовРаботы = ЧасовРаботы; @@ -656,7 +656,7 @@ // Функция формирует отчет по работе регламентных заданий. // // Параметры: -// ПараметрыЗаполнения - Структура - набор параметров, необходимых для построения отчета, где +// ПараметрыЗаполнения - Структура - набор параметров, необходимых для построения отчета, где: // * ДатаНачала - Дата - начало периода, по которому будет собираться информация. // * ДатаОкончания - Дата - окончание периода, по которому будет собираться информация. // РазмерОдновременноСессий - Число - минимальное количество одновременно работавших регламентных заданий для @@ -1456,18 +1456,19 @@ КонецФункции // Параметры: -// Макет - ТабличныйДокумент - -// ИмяОбласти - Строка - +// Макет - ТабличныйДокумент +// ИмяОбласти - Строка // // Возвращаемое значение: -// ТабличныйДокумент - где: -// * Параметры - ПараметрыМакетаТабличногоДокумента - где: -// ** ДатаНачала - Дата - -// ** ДатаОкончания - Дата - -// ** РежимОтображенияИнтервалов - Строка - -// ** СписокРегламентныхЗаданий - Строка - -// ** РасшифровкаЗадания - Массив из Строка, Дата - -// ** РасшифровкаИнтервала - Массив из Строка - +// ТабличныйДокумент: +// * Параметры - ПараметрыМакетаТабличногоДокумента: +// ** ДатаНачала - Дата +// ** ДатаОкончания - Дата +// ** РежимОтображенияИнтервалов - Строка +// ** СписокРегламентныхЗаданий - Строка +// ** РасшифровкаЗадания - Массив из Строка +// - Дата +// ** РасшифровкаИнтервала - Массив из Строка // Функция ОписаниеОбластиМакета(Макет, ИмяОбласти) diff --git a/SSL/src/Reports/АнализЖурналаРегистрации/ObjectModule.bsl b/SSL/src/Reports/АнализЖурналаРегистрации/ObjectModule.bsl index ed99b4178..914a370ed 100644 --- a/SSL/src/Reports/АнализЖурналаРегистрации/ObjectModule.bsl +++ b/SSL/src/Reports/АнализЖурналаРегистрации/ObjectModule.bsl @@ -17,8 +17,10 @@ // Задать настройки формы отчета. // // Параметры: -// Форма - ФормаКлиентскогоПриложения, Неопределено - -// КлючВарианта - Строка, Неопределено - +// Форма - ФормаКлиентскогоПриложения +// - Неопределено +// КлючВарианта - Строка +// - Неопределено // Настройки - см. ОтчетыКлиентСервер.НастройкиОтчетаПоУмолчанию // Процедура ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки) Экспорт @@ -31,9 +33,11 @@ // См. "Расширение управляемой формы для отчета.ПриЗагрузкеВариантаНаСервере" в синтакс-помощнике. // // Параметры: -// Форма - ФормаКлиентскогоПриложения, РасширениеУправляемойФормыДляОтчета - Форма отчета, где: -// * Отчет - ДанныеФормыСтруктура, ОтчетОбъект - -// НовыеНастройкиКД - НастройкиКомпоновкиДанных - Настройки для загрузки в компоновщик настроек. +// Форма - ФормаКлиентскогоПриложения +// - РасширениеУправляемойФормыДляОтчета - форма отчета, где: +// * Отчет - ДанныеФормыСтруктура +// - ОтчетОбъект +// НовыеНастройкиКД - НастройкиКомпоновкиДанных - настройки для загрузки в компоновщик настроек. // Процедура ПриЗагрузкеВариантаНаСервере(Форма, НовыеНастройкиКД) Экспорт Если ЖурналРегистрации.СмещениеВремениСервера() = 0 Тогда @@ -45,8 +49,10 @@ КонецПроцедуры // Параметры: -// Форма - ФормаКлиентскогоПриложения, РасширениеУправляемойФормыДляОтчета - где: -// * Отчет - ДанныеФормыСтруктура, ОтчетОбъект - +// Форма - ФормаКлиентскогоПриложения +// - РасширениеУправляемойФормыДляОтчета: +// * Отчет - ДанныеФормыСтруктура +// - ОтчетОбъект // СвойстваНастройки - см. ОтчетыПереопределяемый.ПриОпределенииПараметровВыбора.СвойстваНастройки // Процедура ПриОпределенииПараметровВыбора(Форма, СвойстваНастройки) Экспорт @@ -299,9 +305,9 @@ КонецПроцедуры // Возвращаемое значение: -// Массив из Структура - где: -// * УИД - УникальныйИдентификатор - -// * Наименование - Строка - +// Массив из Структура: +// * УИД - УникальныйИдентификатор +// * Наименование - Строка // Функция СписокВсехРегламентныхЗаданий() УстановитьПривилегированныйРежим(Истина); diff --git a/SSL/src/Reports/АнализОпроса/Forms/РасшифровкаТабличныхВопросов/Module.bsl b/SSL/src/Reports/АнализОпроса/Forms/РасшифровкаТабличныхВопросов/Module.bsl index b9956593e..017bf2f57 100644 --- a/SSL/src/Reports/АнализОпроса/Forms/РасшифровкаТабличныхВопросов/Module.bsl +++ b/SSL/src/Reports/АнализОпроса/Forms/РасшифровкаТабличныхВопросов/Module.bsl @@ -347,7 +347,8 @@ ПредопределенныеОтветы.Загрузить(РеквизитыВопросШаблона.ПредопределенныеОтветы.Выгрузить()); ПолучитьФормулировкиЭлементарныхВопросов(ФормулировкиЭлементарныхВопросов); - Заголовок = НСтр("ru = 'Ответы на вопрос №'") + " " + ПолныйКод + " " + НСтр("ru = 'опроса'") + " " + НаименованиеОпроса + " " + НСтр("ru = 'от'") + " " + Формат(ДатаОпроса,"ДЛФ=D"); + Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Ответы на вопрос № %1 опроса %2 от %3'"), ПолныйКод, НаименованиеОпроса, Формат(ДатаОпроса,"ДЛФ=D")); Возврат Ложь; diff --git a/SSL/src/Reports/АнализОпроса/ObjectModule.bsl b/SSL/src/Reports/АнализОпроса/ObjectModule.bsl index a5b9f9f9f..e47010c4f 100644 --- a/SSL/src/Reports/АнализОпроса/ObjectModule.bsl +++ b/SSL/src/Reports/АнализОпроса/ObjectModule.bsl @@ -14,7 +14,7 @@ // // Параметры: // ТаблицаОтчета - ТабличныйДокумент - документ, в который выводятся данные. -// Опрос - ДокументСсылка.НазначениеОпросов - Опрос, по которому формируется отчет. +// Опрос - ДокументСсылка.НазначениеОпросов - опрос, по которому формируется отчет. // ВидОтчета - Строка - может принимать значения АнализОтветов и АнализОтветивших. // Процедура СформироватьОтчет(ТаблицаОтчета,Опрос,ВидОтчета) Экспорт @@ -52,7 +52,7 @@ Макет = ПолучитьМакет("МакетОтветы"); - Область = Макет.ПолучитьОбласть("Заголовок"); + Область = Макет.ПолучитьОбласть("Заголовок");// ТабличныйДокумент Область.Параметры.Заголовок = ШаблонАнкеты.Заголовок; Область.Параметры.Опрос = ПредставлениеОпросаДляЗаголовка(РеквизитыОпрос); ТаблицаОтчета.Вывести(Область,1); @@ -118,7 +118,8 @@ // // Параметры: // ТаблицаОтчета - ТабличныйДокумент - в него осуществляется вывод информации. -// СтрокаДерева - СтрокаДереваЗначений - текущая строка с данными. +// СтрокаДерева - СтрокаДереваЗначений - текущая строка с данными: +// * Наименование - Строка // Макет - Макет - макет, используемый для вывода информации. // ПолныйКод - Строка - полный код строки, выводимой в отчет. // @@ -135,7 +136,8 @@ // // Параметры: // ТаблицаОтчета - ТабличныйДокумент - в него осуществляется вывод информации. -// СтрокаДерева - СтрокаДереваЗначений - текущая строка с данными. +// СтрокаДерева - СтрокаДереваЗначений - текущая строка с данными: +// * Наименование - Строка // Макет - Макет - макет, используемый для вывода информации. // Полный код - Строка - полный код строки, выводимой в отчет. // @@ -543,7 +545,7 @@ // Выполняет запрос по шаблону анкеты и данным регистра ответов. // // Параметры: -// Опрос - ДокументСсылка.НазначениеОпросов - Опрос, по которому строится запрос. +// Опрос - ДокументСсылка.НазначениеОпросов - опрос, по которому строится запрос. // ШаблонАнкеты - СправочникСсылка.ШаблоныАнкет, по которому проводился опрос. // // Возвращаемое значение: @@ -947,7 +949,7 @@ Макет = ПолучитьМакет("МакетОтветившие"); - Область = Макет.ПолучитьОбласть("Заголовок"); + Область = Макет.ПолучитьОбласть("Заголовок");// ТабличныйДокумент Область.Параметры.Заголовок = РеквизитыОпрос.ШаблонАнкеты.Заголовок; Область.Параметры.Опрос = ПредставлениеОпросаДляЗаголовка(РеквизитыОпрос); ТаблицаОтчета.Вывести(Область,1); diff --git a/SSL/src/Reports/АнализПравДоступа/ManagerModule.bsl b/SSL/src/Reports/АнализПравДоступа/ManagerModule.bsl new file mode 100644 index 000000000..80278e63f --- /dev/null +++ b/SSL/src/Reports/АнализПравДоступа/ManagerModule.bsl @@ -0,0 +1,148 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2020, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// См. ВариантыОтчетовПереопределяемый.ПередДобавлениемКомандОтчетов. +Процедура ПередДобавлениемКомандОтчетов(КомандыОтчетов, НастройкиФормы, СтандартнаяОбработка) Экспорт + + Если Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ВариантыОтчетов") Тогда + Возврат; + КонецЕсли; + + Если Не ПравоДоступа("Просмотр", Метаданные.Отчеты["АнализПравДоступа"]) Тогда + Возврат; + КонецЕсли; + + Команда = КомандыОтчетов.Добавить(); + Команда.Представление = НСтр("ru = 'Права пользователей'"); + Команда.МножественныйВыбор = Истина; + Команда.Менеджер= "Отчет.АнализПравДоступа"; + + Если НастройкиФормы.ИмяФормы = "Справочник.Пользователи.Форма.ФормаСписка" Тогда + Команда.Представление = НСтр("ru = 'Права пользователя'"); + Команда.КлючВарианта = "ПраваПользователейНаТаблицы"; + ИначеЕсли НастройкиФормы.ИмяФормы = "Справочник.Пользователи.Форма.ФормаЭлемента" Тогда + Команда.Представление = НСтр("ru = 'Права пользователя'"); + Команда.КлючВарианта = "ПраваПользователяНаТаблицы"; + Иначе + Команда.КлючВарианта = "ПраваПользователейНаТаблицу"; + Команда.ТолькоВоВсехДействиях = Истина; + Команда.Важность = "СмТакже"; + КонецЕсли; + +КонецПроцедуры + +// См. ВариантыОтчетовПереопределяемый.НастроитьВариантыОтчетов. +// +Процедура НастроитьВариантыОтчета(Настройки, НастройкиОтчета) Экспорт + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ВариантыОтчетов") Тогда + МодульВариантыОтчетов = ОбщегоНазначения.ОбщийМодуль("ВариантыОтчетов"); + Иначе + Возврат; + КонецЕсли; + + МодульВариантыОтчетов.УстановитьРежимВыводаВПанеляхОтчетов(Настройки, НастройкиОтчета, Ложь); + НастройкиОтчета.ОпределитьНастройкиФормы = Истина; + + НастройкиВарианта = МодульВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, "АнализПравДоступа"); + НастройкиВарианта.Описание = НСтр("ru = 'Показывает текущие настройки прав доступа пользователей к таблицам информационной базы.'"); + + НастройкиВарианта = МодульВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, "ПраваПользователейНаТаблицы"); + НастройкиВарианта.Включен = Ложь; + + НастройкиВарианта = МодульВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, "ПраваПользователяНаТаблицы"); + НастройкиВарианта.Включен = Ложь; + + НастройкиВарианта = МодульВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, "ПраваПользователейНаТаблицу"); + НастройкиВарианта.Включен = Ложь; + + НастройкиВарианта = МодульВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, "ПраваПользователяНаТаблицу"); + НастройкиВарианта.Включен = Ложь; + + НастройкиВарианта = МодульВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, "ПраваПользователяНаТаблицыОтчета"); + НастройкиВарианта.Включен = Ложь; + + НастройкиВарианта = МодульВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, "ПраваПользователейНаТаблицыОтчета"); + НастройкиВарианта.Включен = Ложь; + + НастройкиВарианта = МодульВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, "ПраваПользователяНаТаблицыОтчетов"); + НастройкиВарианта.Включен = Ложь; + +КонецПроцедуры + +#КонецОбласти + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +// Параметры: +// АдресДанныхРасшифровки - Строка - адрес временного хранилища данных расшифровки отчета. +// Расшифровка - ИдентификаторРасшифровкиКомпоновкиДанных - элемент расшифровки. +// +// Возвращаемое значение: +// Структура: +// * ИмяПоляРасшифровки - Строка +// * СписокПолей - Соответствие: +// ** Ключ - Строка +// ** Значение - Произвольный +// +Функция ПараметрыРасшифровки(АдресДанныхРасшифровки, Расшифровка) Экспорт + + ДанныеРасшифровки = ПолучитьИзВременногоХранилища(АдресДанныхРасшифровки); + ЭлементРасшифровки = ДанныеРасшифровки.Элементы[Расшифровка]; + + СписокПолей = Новый Соответствие; + ЗаполнитьСписокПолей(СписокПолей, ЭлементРасшифровки); + + ИмяПоляРасшифровки = ""; + Для Каждого ЗначениеПоля Из ЭлементРасшифровки.ПолучитьПоля() Цикл + ИмяПоляРасшифровки = ЗначениеПоля.Поле; + Прервать; + КонецЦикла; + + Результат = Новый Структура; + Результат.Вставить("ИмяПоляРасшифровки", ИмяПоляРасшифровки); + Результат.Вставить("СписокПолей", СписокПолей); + + Возврат Результат; + +КонецФункции + +// Параметры: +// СписокПолей - Соответствие +// ЭлементРасшифровки - ЭлементРасшифровкиКомпоновкиДанныхПоля +// - ЭлементРасшифровкиКомпоновкиДанныхГруппировка +// +Процедура ЗаполнитьСписокПолей(СписокПолей, ЭлементРасшифровки) + + Если ТипЗнч(ЭлементРасшифровки) = Тип("ЭлементРасшифровкиКомпоновкиДанныхПоля") Тогда + Для Каждого ЗначениеПоля Из ЭлементРасшифровки.ПолучитьПоля() Цикл + Если СписокПолей[ЗначениеПоля.Поле] = Неопределено Тогда + СписокПолей.Вставить(ЗначениеПоля.Поле, ЗначениеПоля.Значение); + КонецЕсли; + КонецЦикла; + КонецЕсли; + + Для Каждого Родитель Из ЭлементРасшифровки.ПолучитьРодителей() Цикл + ЗаполнитьСписокПолей(СписокПолей, Родитель); + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#КонецЕсли + + diff --git a/SSL/src/Reports/АнализПравДоступа/ObjectModule.bsl b/SSL/src/Reports/АнализПравДоступа/ObjectModule.bsl new file mode 100644 index 000000000..0dcf291e5 --- /dev/null +++ b/SSL/src/Reports/АнализПравДоступа/ObjectModule.bsl @@ -0,0 +1,785 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2020, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +#Область ДляВызоваИзДругихПодсистем + +// Задать настройки формы отчета. +// +// Параметры: +// Форма - ФормаКлиентскогоПриложения +// - Неопределено +// КлючВарианта - Строка +// - Неопределено +// Настройки - см. ОтчетыКлиентСервер.НастройкиОтчетаПоУмолчанию +// +Процедура ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки) Экспорт + + Настройки.ФормироватьСразу = Истина; + Настройки.События.ПередЗагрузкойНастроекВКомпоновщик = Истина; + Настройки.События.ПриСозданииНаСервере = Истина; + Настройки.События.ПриОпределенииИспользуемыхТаблиц = Истина; + +КонецПроцедуры + +// Вызывается в обработчике одноименного события формы отчета после выполнения кода формы. +// См. также: ФормаКлиентскогоПриложения.ПриСозданииНаСервере в синтакс-помощнике +// и ОтчетыПереопределяемый.ПриСозданииНаСервере. +// +// Параметры: +// Форма - ФормаКлиентскогоПриложения - форма отчета. +// Отказ - Булево - передается из параметров обработчика "как есть". +// СтандартнаяОбработка - Булево - передается из параметров обработчика "как есть". +// +Процедура ПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка) Экспорт + + Если ЗначениеЗаполнено(Форма.НастройкиОтчета.ВариантСсылка) Тогда + Форма.НастройкиОтчета.Наименование = Форма.НастройкиОтчета.ВариантСсылка; + КонецЕсли; + + Если Форма.КонтекстВарианта = Метаданные.Справочники.Пользователи.ПолноеИмя() Тогда + Если Форма.Параметры.ПараметрКоманды.Количество() > 1 Тогда + Форма.КлючТекущегоВарианта = "ПраваПользователейНаТаблицы"; + Форма.Параметры.КлючВарианта = "ПраваПользователейНаТаблицы"; + Иначе + Форма.КлючТекущегоВарианта = "ПраваПользователяНаТаблицы"; + Форма.Параметры.КлючВарианта = "ПраваПользователяНаТаблицы"; + КонецЕсли; + Форма.ВариантыКонтекста.Очистить(); + Форма.ВариантыКонтекста.Добавить(Форма.КлючТекущегоВарианта); + КонецЕсли; + + Если УправлениеДоступомСлужебный.УпрощенныйИнтерфейсНастройкиПравДоступа() Тогда + Форма.НастройкиОтчета.СхемаМодифицирована = Истина; + Схема = ПолучитьИзВременногоХранилища(Форма.НастройкиОтчета.АдресСхемы); + Поле = Схема.НаборыДанных.ПраваПользователей.Поля.Найти("ГруппаДоступа"); + Поле.Заголовок = НСтр("ru = 'Профиль пользователя'"); + Поле.ТипЗначения = Новый ОписаниеТипов("СправочникСсылка.ПрофилиГруппДоступа"); + Форма.НастройкиОтчета.АдресСхемы = ПоместитьВоВременноеХранилище(Схема, Форма.УникальныйИдентификатор); + КонецЕсли; + +КонецПроцедуры + +// Вызывается перед загрузкой новых настроек. Используется для изменения схемы компоновки. +// Например, если схема отчета зависит от ключа варианта или параметров отчета. +// Чтобы изменения схемы вступили в силу следует вызывать метод ОтчетыСервер.ПодключитьСхему(). +// +// Параметры: +// Контекст - Произвольный - +// Параметры контекста, в котором используется отчет. +// Используется для передачи в параметрах метода ОтчетыСервер.ПодключитьСхему(). +// КлючСхемы - Строка - +// Идентификатор текущей схемы компоновщика настроек. +// По умолчанию не заполнен (это означает что компоновщик инициализирован на основании основной схемы). +// Используется для оптимизации, чтобы переинициализировать компоновщик как можно реже). +// Может не использоваться если переинициализация выполняется безусловно. +// КлючВарианта - Строка +// - Неопределено - +// Имя предопределенного или уникальный идентификатор пользовательского варианта отчета. +// Неопределено когда вызов для варианта расшифровки или без контекста. +// НовыеНастройкиКД - НастройкиКомпоновкиДанных +// - Неопределено - +// Настройки варианта отчета, которые будут загружены в компоновщик настроек после его инициализации. +// Неопределено когда настройки варианта не надо загружать (уже загружены ранее). +// НовыеПользовательскиеНастройкиКД - ПользовательскиеНастройкиКомпоновкиДанных +// - Неопределено - +// Пользовательские настройки, которые будут загружены в компоновщик настроек после его инициализации. +// Неопределено когда пользовательские настройки не надо загружать (уже загружены ранее). +// +// Пример: +// // Компоновщик отчета инициализируется на основании схемы из общих макетов: +// Если КлючСхемы <> "1" Тогда +// КлючСхемы = "1"; +// СхемаКД = ПолучитьОбщийМакет("МояОбщаяСхемаКомпоновки"); +// ОтчетыСервер.ПодключитьСхему(ЭтотОбъект, Контекст, СхемаКД, КлючСхемы); +// КонецЕсли; +// +// // Схема зависит от значения параметра, выведенного в пользовательские настройки отчета: +// Если ТипЗнч(НовыеПользовательскиеНастройкиКД) = Тип("ПользовательскиеНастройкиКомпоновкиДанных") Тогда +// ПолноеИмяОбъектаМетаданных = ""; +// Для Каждого ЭлементКД Из НовыеПользовательскиеНастройкиКД.Элементы Цикл +// Если ТипЗнч(ЭлементКД) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда +// ИмяПараметра = Строка(ЭлементКД.Параметр); +// Если ИмяПараметра = "ОбъектМетаданных" Тогда +// ПолноеИмяОбъектаМетаданных = ЭлементКД.Значение; +// КонецЕсли; +// КонецЕсли; +// КонецЦикла; +// Если КлючСхемы <> ПолноеИмяОбъектаМетаданных Тогда +// КлючСхемы = ПолноеИмяОбъектаМетаданных; +// СхемаКД = Новый СхемаКомпоновкиДанных; +// // Наполнение схемы... +// ОтчетыСервер.ПодключитьСхему(ЭтотОбъект, Контекст, СхемаКД, КлючСхемы); +// КонецЕсли; +// КонецЕсли; +// +Процедура ПередЗагрузкойНастроекВКомпоновщик(Контекст, КлючСхемы, КлючВарианта, НовыеНастройкиКД, НовыеПользовательскиеНастройкиКД) Экспорт + + Если ТипЗнч(Контекст) = Тип("ФормаКлиентскогоПриложения") И НовыеНастройкиКД <> Неопределено Тогда + НовыеНастройкиКД.ДополнительныеСвойства.Вставить("АдресКартинкиПросмотр", ПоместитьВоВременноеХранилище(Неопределено, Контекст.УникальныйИдентификатор)); + НовыеНастройкиКД.ДополнительныеСвойства.Вставить("АдресКартинкиРедактирование", ПоместитьВоВременноеХранилище(Неопределено, Контекст.УникальныйИдентификатор)); + НовыеНастройкиКД.ДополнительныеСвойства.Вставить("АдресКартинкиСоздание", ПоместитьВоВременноеХранилище(Неопределено, Контекст.УникальныйИдентификатор)); + КонецЕсли; + + Если КлючСхемы = "1" Тогда + Возврат; + КонецЕсли; + + КлючСхемы = "1"; + + Если ТипЗнч(Контекст) = Тип("ФормаКлиентскогоПриложения") И НовыеНастройкиКД <> Неопределено Тогда + + РеквизитыФормы = Новый Структура("КонтекстВарианта"); + ЗаполнитьЗначенияСвойств(РеквизитыФормы, Контекст); + + Если ЗначениеЗаполнено(РеквизитыФормы.КонтекстВарианта) Тогда + Если КлючВарианта = "ПраваПользователейНаТаблицу" Тогда + ОбъектМетаданных = ОбщегоНазначения.ИдентификаторОбъектаМетаданных(Контекст.КонтекстВарианта, Ложь); + Если ЗначениеЗаполнено(ОбъектМетаданных) Тогда + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(НовыеНастройкиКД.Отбор, "ОбъектМетаданных", ОбъектМетаданных, + ВидСравненияКомпоновкиДанных.Равно, , Истина); + КонецЕсли; + ИначеЕсли КлючВарианта = "ПраваПользователейНаТаблицы" Тогда + СписокПользователей = Новый СписокЗначений; + СписокПользователей.ЗагрузитьЗначения(Контекст.Параметры.ПараметрКоманды); + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(НовыеНастройкиКД.Отбор, "Пользователь", СписокПользователей, + ВидСравненияКомпоновкиДанных.ВСписке, , Истина); + ИначеЕсли КлючВарианта = "ПраваПользователяНаТаблицы" Тогда + Если Контекст.Параметры.Свойство("ПараметрКоманды") Тогда + СписокПользователей = Новый СписокЗначений; + СписокПользователей.ЗагрузитьЗначения(Контекст.Параметры.ПараметрКоманды); + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(НовыеНастройкиКД.Отбор, "Пользователь", СписокПользователей, + ВидСравненияКомпоновкиДанных.ВСписке, , Истина); + КонецЕсли; + КонецЕсли; + КонецЕсли; + + КонецЕсли; + +КонецПроцедуры + +// Список регистров и других объектов метаданных, по которым формируется отчет. +// Используется для проверки что отчет может содержать не обновленные данные. +// +// Параметры: +// КлючВарианта - Строка +// - Неопределено - +// Имя предопределенного или уникальный идентификатор пользовательского варианта отчета. +// Неопределено когда вызов для варианта расшифровки или без контекста. +// ИспользуемыеТаблицы - Массив - +// Полные имена объектов метаданных (регистров, документов и других таблиц), +// данные которых выводятся в отчете. +// +// Пример: +// ИспользуемыеТаблицы.Добавить(Метаданные.Документы._ДемоЗаказПокупателя.ПолноеИмя()); +// +Процедура ПриОпределенииИспользуемыхТаблиц(КлючВарианта, ИспользуемыеТаблицы) Экспорт + + ИспользуемыеТаблицы.Добавить(Метаданные.РегистрыСведений.ПраваРолей.ПолноеИмя()); + +КонецПроцедуры + +#КонецОбласти + +#КонецОбласти + +#Область ОбработчикиСобытий + +Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + + НастройкиКомпоновщика = КомпоновщикНастроек.ПолучитьНастройки(); + + КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; + МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиКомпоновщика, ДанныеРасшифровки); + + ВнешниеНаборыДанных = Новый Структура; + ВнешниеНаборыДанных.Вставить("ПраваПользователей", ПраваПользователей()); + + ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; + ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных , ДанныеРасшифровки); + + ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; + ПроцессорВывода.УстановитьДокумент(ДокументРезультат); + + ПроцессорВывода.Вывести(ПроцессорКомпоновки); + + ГруппаДоступаЗаголовок = НСтр("ru = 'Группа доступа'"); + Если УправлениеДоступомСлужебный.УпрощенныйИнтерфейсНастройкиПравДоступа() Тогда + ГруппаДоступаЗаголовок = НСтр("ru = 'Профиль пользователя'"); + КонецЕсли; + + Для НомерСтроки = 1 По ДокументРезультат.ВысотаТаблицы Цикл + Для НомерКолонки = 1 По ДокументРезультат.ШиринаТаблицы Цикл + Область = ДокументРезультат.Область(НомерСтроки, НомерКолонки); + Если Область.Текст = "&ГруппаДоступаЗаголовок" Тогда + Область.Текст = ГруппаДоступаЗаголовок; + КонецЕсли; + + Если ТипЗнч(Область.Расшифровка) <> Тип("ИдентификаторРасшифровкиКомпоновкиДанных") Тогда + Продолжить; + КонецЕсли; + + ЗначенияПолей = ДанныеРасшифровки.Элементы[Область.Расшифровка].ПолучитьПоля(); + + Если ЗначенияПолей.Найти("Право") <> Неопределено Тогда + Если Область.Текст = "1" Тогда + Область.Картинка = БиблиотекаКартинок.Просмотр; + Область.Текст = ""; + ИначеЕсли Область.Текст = "2" Тогда + Область.Картинка = БиблиотекаКартинок.Редактирование; + Область.Текст = ""; + ИначеЕсли Область.Текст = "3" Тогда + Область.Картинка = БиблиотекаКартинок.Создание; + Область.Текст = ""; + КонецЕсли; + КонецЕсли; + КонецЦикла; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Функция ТаблицыОтчетов() + + Результат = ПустаяКоллекцияТаблицОтчетов(); + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ВариантыОтчетов") Тогда + МодульВариантыОтчетов = ОбщегоНазначения.ОбщийМодуль("ВариантыОтчетов"); + Иначе + Возврат Результат; + КонецЕсли; + + ТаблицыОтчетов = Новый ТаблицаЗначений; + ТаблицыОтчетов.Колонки.Добавить("Отчет"); + ТаблицыОтчетов.Колонки.Добавить("ОбъектМетаданных"); + + ВладельцыТаблиц = Новый Соответствие; + + Для Каждого ОбъектМетаданных Из Метаданные.Отчеты Цикл + ИспользуемыеТаблицы = МодульВариантыОтчетов.ИспользуемыеТаблицыОтчета(ОбъектМетаданных); + + Для Каждого ИмяТаблицы Из ИспользуемыеТаблицы Цикл + ИспользуемаяТаблица = ВладельцыТаблиц[ИмяТаблицы]; + Если ИспользуемаяТаблица = Неопределено Тогда + ВладелецТаблицы = ИмяТаблицы; + ЧастиСтроки = СтрРазделить(ВладелецТаблицы, ".", Истина); + Если ЧастиСтроки.Количество() = 1 Тогда + Продолжить; + КонецЕсли; + Если ЧастиСтроки.Количество() > 2 Тогда + ВладелецТаблицы = ЧастиСтроки[0] + "." + ЧастиСтроки[1]; + КонецЕсли; + ВладельцыТаблиц.Вставить(ИмяТаблицы, ВладелецТаблицы); + ИспользуемаяТаблица = ВладелецТаблицы; + КонецЕсли; + + СтрокаТаблицы = ТаблицыОтчетов.Добавить(); + СтрокаТаблицы.Отчет = ОбъектМетаданных.ПолноеИмя(); + СтрокаТаблицы.ОбъектМетаданных = ИспользуемаяТаблица; + КонецЦикла; + КонецЦикла; + + ТаблицыОтчетов.Свернуть("Отчет, ОбъектМетаданных"); + + ИменаОбъектовМетаданных = ТаблицыОтчетов.ВыгрузитьКолонку("ОбъектМетаданных"); + Для Каждого ОбъектМетаданных Из Метаданные.Отчеты Цикл + ИменаОбъектовМетаданных.Добавить(ОбъектМетаданных.ПолноеИмя()); + КонецЦикла; + + ИдентификаторыОбъектовМетаданных = ОбщегоНазначения.ИдентификаторыОбъектовМетаданных(ИменаОбъектовМетаданных, Ложь); + + Для Каждого СтрокаТаблицы Из ТаблицыОтчетов Цикл + ИмяТаблицы = СтрокаТаблицы.ОбъектМетаданных; + ИспользуемаяТаблица = ИдентификаторыОбъектовМетаданных[ИмяТаблицы]; + СтрокаТаблицы.ОбъектМетаданных = ИспользуемаяТаблица; + СтрокаТаблицы.Отчет = ИдентификаторыОбъектовМетаданных[СтрокаТаблицы.Отчет]; + КонецЦикла; + + Для Каждого СтрокаТаблицы Из ТаблицыОтчетов Цикл + ЗаполнитьЗначенияСвойств(Результат.Добавить(), СтрокаТаблицы); + КонецЦикла; + + Возврат Результат; + +КонецФункции + +Функция ПустаяКоллекцияТаблицОтчетов() + + Результат = Новый ТаблицаЗначений; + Результат.Колонки.Добавить("Отчет", Новый ОписаниеТипов("СправочникСсылка.ИдентификаторыОбъектовМетаданных,СправочникСсылка.ИдентификаторыОбъектовРасширений")); + Результат.Колонки.Добавить("ОбъектМетаданных", Новый ОписаниеТипов("СправочникСсылка.ИдентификаторыОбъектовМетаданных,СправочникСсылка.ИдентификаторыОбъектовРасширений")); + + Возврат Результат; + +КонецФункции + +Функция Отчеты() + + Результат = Новый СписокЗначений; + + ИменаОтчетов = Новый Массив; + Для Каждого ОбъектМетаданных Из Метаданные.Отчеты Цикл + ИменаОтчетов.Добавить(ОбъектМетаданных.ПолноеИмя()); + КонецЦикла; + + ИдентификаторыОбъектовМетаданных = ОбщегоНазначения.ИдентификаторыОбъектовМетаданных(ИменаОтчетов, Ложь); + + Для Каждого Отчет Из ИменаОтчетов Цикл + Результат.Добавить(ИдентификаторыОбъектовМетаданных[Отчет]); + КонецЦикла; + + Возврат Результат; + +КонецФункции + +Функция ПраваОтчетов() + + Результат = ПустаяКоллекцияПравОтчетов(); + + ИменаОбъектовМетаданных = Новый Массив; + Для Каждого ИмяКоллекции Из СтрРазделить("Отчеты,Роли", ",", Ложь) Цикл + Для Каждого ОбъектМетаданных Из Метаданные[ИмяКоллекции] Цикл + ИменаОбъектовМетаданных.Добавить(ОбъектМетаданных.ПолноеИмя()); + КонецЦикла; + КонецЦикла; + + ИдентификаторыОбъектовМетаданных = ОбщегоНазначения.ИдентификаторыОбъектовМетаданных(ИменаОбъектовМетаданных, Ложь); + + Для Каждого Отчет Из Метаданные.Отчеты Цикл + Для Каждого Роль Из Метаданные.Роли Цикл + СтрокаТаблицы = Результат.Добавить(); + СтрокаТаблицы.Отчет= ИдентификаторыОбъектовМетаданных[Отчет.ПолноеИмя()]; + СтрокаТаблицы.Роль = ИдентификаторыОбъектовМетаданных[Роль.ПолноеИмя()]; + СтрокаТаблицы.Просмотр = ПравоДоступа("Просмотр", Отчет, Роль); + КонецЦикла; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +Функция ПустаяКоллекцияПравОтчетов() + + Результат = Новый ТаблицаЗначений; + Результат.Колонки.Добавить("Отчет", Новый ОписаниеТипов("СправочникСсылка.ИдентификаторыОбъектовМетаданных,СправочникСсылка.ИдентификаторыОбъектовРасширений")); + Результат.Колонки.Добавить("Роль", Новый ОписаниеТипов("СправочникСсылка.ИдентификаторыОбъектовМетаданных,СправочникСсылка.ИдентификаторыОбъектовРасширений")); + Результат.Колонки.Добавить("Просмотр", Новый ОписаниеТипов("Булево")); + + Возврат Результат; + +КонецФункции + +Функция ПраваПользователей() + + ТекстЗапроса = + "ВЫБРАТЬ + | Пользователи.Ссылка КАК Ссылка, + | НЕ Пользователи.Недействителен + | И НЕ Пользователи.ПометкаУдаления КАК ВходВПрограммуРазрешен + |ПОМЕСТИТЬ ВсеПользователи + |ИЗ + | Справочник.Пользователи КАК Пользователи + | + |ОБЪЕДИНИТЬ ВСЕ + | + |ВЫБРАТЬ + | ГруппыПользователей.Ссылка, + | НЕ ГруппыПользователей.ПометкаУдаления + |ИЗ + | Справочник.ГруппыПользователей КАК ГруппыПользователей + | + |ИНДЕКСИРОВАТЬ ПО + | Ссылка + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ГруппыДоступаПользователи.Пользователь КАК Пользователь, + | ГруппыДоступа.Профиль КАК Профиль, + | ГруппыДоступаПользователи.Ссылка КАК ГруппаДоступа + |ПОМЕСТИТЬ ГруппыДоступаПользователей + |ИЗ + | Справочник.ГруппыДоступа.Пользователи КАК ГруппыДоступаПользователи + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ГруппыДоступа КАК ГруппыДоступа + | ПО ГруппыДоступаПользователи.Ссылка = ГруппыДоступа.Ссылка + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВсеПользователи КАК ВсеПользователи + | ПО ГруппыДоступаПользователи.Пользователь = ВсеПользователи.Ссылка + |ГДЕ + | НЕ ГруппыДоступа.ПометкаУдаления + | + |СГРУППИРОВАТЬ ПО + | ГруппыДоступаПользователи.Пользователь, + | ГруппыДоступа.Профиль, + | ГруппыДоступаПользователи.Ссылка + | + |ИНДЕКСИРОВАТЬ ПО + | Профиль + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ПраваРолей.Отчет КАК Отчет, + | ПраваРолей.Роль КАК Роль, + | ПраваРолей.Просмотр КАК Просмотр + |ПОМЕСТИТЬ ПраваРолейНаОтчеты + |ИЗ + | &ПраваОтчетов КАК ПраваРолей + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ПраваРолейРасширений.ОбъектМетаданных КАК ОбъектМетаданных, + | ПраваРолейРасширений.Роль КАК Роль, + | ПраваРолейРасширений.Просмотр КАК Просмотр, + | ПраваРолейРасширений.Редактирование КАК Редактирование, + | ПраваРолейРасширений.ИнтерактивноеДобавление КАК ИнтерактивноеДобавление + |ПОМЕСТИТЬ ПраваРолейРасширений + |ИЗ + | &ПраваРолейРасширений КАК ПраваРолейРасширений + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ПраваРолей.ОбъектМетаданных КАК ОбъектМетаданных, + | ПраваРолей.Роль КАК Роль, + | ПраваРолей.Просмотр КАК Просмотр, + | ПраваРолей.Редактирование КАК Редактирование, + | ПраваРолей.ИнтерактивноеДобавление КАК ИнтерактивноеДобавление + |ПОМЕСТИТЬ ПраваРолей + |ИЗ + | РегистрСведений.ПраваРолей КАК ПраваРолей + | + |ОБЪЕДИНИТЬ ВСЕ + | + |ВЫБРАТЬ + | ПраваРолейРасширений.ОбъектМетаданных, + | ПраваРолейРасширений.Роль, + | ПраваРолейРасширений.Просмотр, + | ПраваРолейРасширений.Редактирование, + | ПраваРолейРасширений.ИнтерактивноеДобавление + |ИЗ + | ПраваРолейРасширений КАК ПраваРолейРасширений + | + |ОБЪЕДИНИТЬ ВСЕ + | + |ВЫБРАТЬ + | ПраваРолей.Отчет, + | ПраваРолей.Роль, + | ПраваРолей.Просмотр, + | ЛОЖЬ, + | ЛОЖЬ + |ИЗ + | ПраваРолейНаОтчеты КАК ПраваРолей + | + |ИНДЕКСИРОВАТЬ ПО + | Роль + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ПраваРолей.ОбъектМетаданных КАК ОбъектМетаданных, + | ПраваРолей.Роль КАК Роль, + | ПраваРолей.Просмотр КАК Просмотр, + | ПраваРолей.Редактирование КАК Редактирование, + | ПраваРолей.ИнтерактивноеДобавление КАК ИнтерактивноеДобавление, + | ПрофилиГруппДоступаРоли.Ссылка КАК Профиль + |ПОМЕСТИТЬ ПраваПрофилей + |ИЗ + | ПраваРолей КАК ПраваРолей + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ПрофилиГруппДоступа.Роли КАК ПрофилиГруппДоступаРоли + | ПО ПраваРолей.Роль = ПрофилиГруппДоступаРоли.Роль + | + |СГРУППИРОВАТЬ ПО + | ПраваРолей.ОбъектМетаданных, + | ПраваРолей.Роль, + | ПрофилиГруппДоступаРоли.Ссылка, + | ПраваРолей.ИнтерактивноеДобавление, + | ПраваРолей.Просмотр, + | ПраваРолей.Редактирование + | + |ИНДЕКСИРОВАТЬ ПО + | Профиль + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ТаблицыОтчетов.Отчет КАК Отчет, + | ТаблицыОтчетов.ОбъектМетаданных КАК Таблица + |ПОМЕСТИТЬ ТаблицыОтчетов + |ИЗ + | &ТаблицыОтчетов КАК ТаблицыОтчетов + | + |ИНДЕКСИРОВАТЬ ПО + | Таблица + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ГруппыДоступаПользователей.Пользователь КАК Пользователь, + | ГруппыДоступаПользователей.ГруппаДоступа КАК ГруппаДоступа, + | ПраваПрофилей.ОбъектМетаданных КАК ОбъектМетаданных, + | МАКСИМУМ(ПраваПрофилей.Просмотр) КАК Просмотр, + | МАКСИМУМ(ПраваПрофилей.Редактирование) КАК Редактирование, + | МАКСИМУМ(ПраваПрофилей.ИнтерактивноеДобавление) КАК ИнтерактивноеДобавление, + | ПраваПрофилей.Профиль КАК Профиль + |ПОМЕСТИТЬ ПраваОбъектов + |ИЗ + | ГруппыДоступаПользователей КАК ГруппыДоступаПользователей + | ЛЕВОЕ СОЕДИНЕНИЕ ПраваПрофилей КАК ПраваПрофилей + | ПО ГруппыДоступаПользователей.Профиль = ПраваПрофилей.Профиль + | + |СГРУППИРОВАТЬ ПО + | ГруппыДоступаПользователей.Пользователь, + | ГруппыДоступаПользователей.ГруппаДоступа, + | ПраваПрофилей.ОбъектМетаданных, + | ПраваПрофилей.Профиль + | + |ИНДЕКСИРОВАТЬ ПО + | ОбъектМетаданных + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ПраваОбъектов.Пользователь КАК Пользователь, + | ПраваОбъектов.ГруппаДоступа КАК ГруппаДоступа, + | ПраваОбъектов.ОбъектМетаданных КАК ОбъектМетаданных, + | ПраваОбъектов.Просмотр КАК Просмотр + |ПОМЕСТИТЬ ПраваОтчетов + |ИЗ + | ПраваОбъектов КАК ПраваОбъектов + |ГДЕ + | ПраваОбъектов.ОбъектМетаданных В(&Отчеты) + | + |ИНДЕКСИРОВАТЬ ПО + | ОбъектМетаданных, + | Пользователь, + | ГруппаДоступа + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ПраваОбъектов.Пользователь КАК Пользователь, + | ПраваОбъектов.ГруппаДоступа КАК ГруппаДоступа, + | ПраваОбъектов.ОбъектМетаданных КАК ОбъектМетаданных, + | ПраваОбъектов.Просмотр КАК Просмотр, + | ПраваОбъектов.Редактирование КАК Редактирование, + | ПраваОбъектов.ИнтерактивноеДобавление КАК ИнтерактивноеДобавление, + | ТаблицыОтчетов.Отчет КАК Отчет, + | ПраваОбъектов.Профиль КАК Профиль + |ПОМЕСТИТЬ ПраваОбъектовИСвязанныеОтчеты + |ИЗ + | ПраваОбъектов КАК ПраваОбъектов + | ЛЕВОЕ СОЕДИНЕНИЕ ТаблицыОтчетов КАК ТаблицыОтчетов + | ПО ПраваОбъектов.ОбъектМетаданных = ТаблицыОтчетов.Таблица + |ГДЕ + | НЕ ПраваОбъектов.ОбъектМетаданных В (&Отчеты) + | + |ИНДЕКСИРОВАТЬ ПО + | Пользователь, + | ОбъектМетаданных, + | ГруппаДоступа + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ПраваОбъектовИСвязанныеОтчеты.Пользователь КАК Пользователь, + | ПраваОбъектовИСвязанныеОтчеты.ГруппаДоступа КАК ГруппаДоступа, + | ПраваОбъектовИСвязанныеОтчеты.ОбъектМетаданных КАК ОбъектМетаданных, + | ПраваОбъектовИСвязанныеОтчеты.Просмотр КАК Просмотр, + | ПраваОбъектовИСвязанныеОтчеты.Редактирование КАК Редактирование, + | ПраваОбъектовИСвязанныеОтчеты.ИнтерактивноеДобавление КАК ИнтерактивноеДобавление, + | ВЫБОР + | КОГДА ПраваОбъектовИСвязанныеОтчеты.ИнтерактивноеДобавление + | ТОГДА 3 + | КОГДА ПраваОбъектовИСвязанныеОтчеты.Редактирование + | ТОГДА 2 + | КОГДА ПраваОбъектовИСвязанныеОтчеты.Просмотр + | ТОГДА 1 + | ИНАЧЕ 0 + | КОНЕЦ КАК Право, + | ВЫБОР + | КОГДА ПраваОбъектовИСвязанныеОтчеты.ИнтерактивноеДобавление + | ТОГДА &КартинкаСоздание + | КОГДА ПраваОбъектовИСвязанныеОтчеты.Редактирование + | ТОГДА &КартинкаРедактирование + | КОГДА ПраваОбъектовИСвязанныеОтчеты.Просмотр + | ТОГДА &КартинкаПросмотр + | ИНАЧЕ 0 + | КОНЕЦ КАК КартинкаПраво, + | ВЫБОР + | КОГДА ПраваОбъектовИСвязанныеОтчеты.Просмотр + | ТОГДА &КартинкаПросмотр + | ИНАЧЕ """" + | КОНЕЦ КАК КартинкаПросмотр, + | ВЫБОР + | КОГДА ПраваОбъектовИСвязанныеОтчеты.Редактирование + | ТОГДА &КартинкаРедактирование + | ИНАЧЕ """" + | КОНЕЦ КАК КартинкаРедактирование, + | ВЫБОР + | КОГДА ПраваОбъектовИСвязанныеОтчеты.ИнтерактивноеДобавление + | ТОГДА &КартинкаСоздание + | ИНАЧЕ """" + | КОНЕЦ КАК КартинкаСоздание, + | ПраваОбъектовИСвязанныеОтчеты.Отчет КАК Отчет, + | ПраваОтчетов.ГруппаДоступа КАК ГруппаДоступаОтчета, + | ВЫБОР + | КОГДА ПраваОтчетов.Просмотр + | ТОГДА 1 + | ИНАЧЕ 0 + | КОНЕЦ КАК ПравоОтчета, + | ПраваОбъектовИСвязанныеОтчеты.Профиль КАК Профиль + |ПОМЕСТИТЬ ПраваПользователейСНастроеннымиПравами + |ИЗ + | ПраваОбъектовИСвязанныеОтчеты КАК ПраваОбъектовИСвязанныеОтчеты + | ЛЕВОЕ СОЕДИНЕНИЕ ПраваОтчетов КАК ПраваОтчетов + | ПО ПраваОбъектовИСвязанныеОтчеты.Пользователь = ПраваОтчетов.Пользователь + | И ПраваОбъектовИСвязанныеОтчеты.Отчет = ПраваОтчетов.ОбъектМетаданных + | И ПраваОбъектовИСвязанныеОтчеты.ГруппаДоступа = ПраваОтчетов.ГруппаДоступа + |ГДЕ + | НЕ ПраваОбъектовИСвязанныеОтчеты.ОбъектМетаданных ЕСТЬ NULL + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ПраваОбъектовИСвязанныеОтчеты.ОбъектМетаданных КАК ОбъектМетаданных, + | ПраваОбъектовИСвязанныеОтчеты.Отчет КАК Отчет + |ПОМЕСТИТЬ ВсеОбъектыСПравами + |ИЗ + | ПраваОбъектовИСвязанныеОтчеты КАК ПраваОбъектовИСвязанныеОтчеты + | + |СГРУППИРОВАТЬ ПО + | ПраваОбъектовИСвязанныеОтчеты.ОбъектМетаданных, + | ПраваОбъектовИСвязанныеОтчеты.Отчет + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ВсеПользователи.Ссылка КАК Пользователь, + | ВсеОбъектыСПравами.ОбъектМетаданных КАК ОбъектМетаданных, + | ВсеОбъектыСПравами.Отчет КАК Отчет, + | ВсеПользователи.ВходВПрограммуРазрешен КАК ВходВПрограммуРазрешен + |ПОМЕСТИТЬ ВсеПользователиИОбъекты + |ИЗ + | ВсеПользователи КАК ВсеПользователи, + | ВсеОбъектыСПравами КАК ВсеОбъектыСПравами + | + |СГРУППИРОВАТЬ ПО + | ВсеПользователи.Ссылка, + | ВсеОбъектыСПравами.ОбъектМетаданных, + | ВсеОбъектыСПравами.Отчет, + | ВсеПользователи.ВходВПрограммуРазрешен + | + |ИНДЕКСИРОВАТЬ ПО + | Пользователь, + | ОбъектМетаданных, + | Отчет + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ЕСТЬNULL(ПраваПользователейСНастроеннымиПравами.Пользователь, ВсеПользователиИОбъекты.Пользователь) КАК Пользователь, + | ВЫБОР + | КОГДА &УпрощенныйИнтерфейсНастройкиПравДоступа + | ТОГДА ПраваПользователейСНастроеннымиПравами.Профиль + | ИНАЧЕ ПраваПользователейСНастроеннымиПравами.ГруппаДоступа + | КОНЕЦ КАК ГруппаДоступа, + | ЕСТЬNULL(ПраваПользователейСНастроеннымиПравами.ОбъектМетаданных, ВсеПользователиИОбъекты.ОбъектМетаданных) КАК ОбъектМетаданных, + | ЕСТЬNULL(ПраваПользователейСНастроеннымиПравами.Просмотр, ЛОЖЬ) КАК Просмотр, + | ЕСТЬNULL(ПраваПользователейСНастроеннымиПравами.Редактирование, ЛОЖЬ) КАК Редактирование, + | ЕСТЬNULL(ПраваПользователейСНастроеннымиПравами.ИнтерактивноеДобавление, ЛОЖЬ) КАК ИнтерактивноеДобавление, + | ЕСТЬNULL(ПраваПользователейСНастроеннымиПравами.Право, 0) КАК Право, + | ПраваПользователейСНастроеннымиПравами.КартинкаПраво КАК КартинкаПраво, + | ПраваПользователейСНастроеннымиПравами.КартинкаПросмотр КАК КартинкаПросмотр, + | ПраваПользователейСНастроеннымиПравами.КартинкаРедактирование КАК КартинкаРедактирование, + | ПраваПользователейСНастроеннымиПравами.КартинкаСоздание КАК КартинкаСоздание, + | ЕСТЬNULL(ПраваПользователейСНастроеннымиПравами.Отчет, ВсеПользователиИОбъекты.Отчет) КАК Отчет, + | ПраваПользователейСНастроеннымиПравами.ГруппаДоступаОтчета КАК ГруппаДоступаОтчета, + | ПраваПользователейСНастроеннымиПравами.ПравоОтчета КАК ПравоОтчета, + | ВсеПользователиИОбъекты.ВходВПрограммуРазрешен КАК ВходВПрограммуРазрешен + |ИЗ + | ВсеПользователиИОбъекты КАК ВсеПользователиИОбъекты + | ПОЛНОЕ СОЕДИНЕНИЕ ПраваПользователейСНастроеннымиПравами КАК ПраваПользователейСНастроеннымиПравами + | ПО (ПраваПользователейСНастроеннымиПравами.Пользователь = ВсеПользователиИОбъекты.Пользователь) + | И (ПраваПользователейСНастроеннымиПравами.ОбъектМетаданных = ВсеПользователиИОбъекты.ОбъектМетаданных)"; + + ВключенаГруппировкаПоОтчетам = ВключенаГруппировкаПоОтчетам(); + + Запрос = Новый Запрос(ТекстЗапроса); + Запрос.УстановитьПараметр("ПраваОтчетов", ?(ВключенаГруппировкаПоОтчетам, ПраваОтчетов(), ПустаяКоллекцияПравОтчетов())); + Запрос.УстановитьПараметр("ТаблицыОтчетов", ?(ВключенаГруппировкаПоОтчетам, ТаблицыОтчетов(), ПустаяКоллекцияТаблицОтчетов())); + Запрос.УстановитьПараметр("Отчеты", Отчеты()); + Запрос.УстановитьПараметр("УпрощенныйИнтерфейсНастройкиПравДоступа", УправлениеДоступомСлужебный.УпрощенныйИнтерфейсНастройкиПравДоступа()); + Запрос.УстановитьПараметр("ПраваРолейРасширений", УправлениеДоступомСлужебный.ПраваРолейРасширений()); + + АдресКартинкиПросмотр = Неопределено; + АдресКартинкиРедактирование = Неопределено; + АдресКартинкиСоздание = Неопределено; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ВариантыОтчетов") Тогда + АдресКартинкиПросмотр = КомпоновщикНастроек.Настройки.ДополнительныеСвойства.АдресКартинкиПросмотр; + АдресКартинкиРедактирование = КомпоновщикНастроек.Настройки.ДополнительныеСвойства.АдресКартинкиРедактирование; + АдресКартинкиСоздание = КомпоновщикНастроек.Настройки.ДополнительныеСвойства.АдресКартинкиСоздание; + КонецЕсли; + + Запрос.УстановитьПараметр("КартинкаПросмотр", ПоместитьВоВременноеХранилище(БиблиотекаКартинок.Просмотр.ПолучитьДвоичныеДанные(), АдресКартинкиПросмотр)); + Запрос.УстановитьПараметр("КартинкаРедактирование", ПоместитьВоВременноеХранилище(БиблиотекаКартинок.Редактирование.ПолучитьДвоичныеДанные(), АдресКартинкиРедактирование)); + Запрос.УстановитьПараметр("КартинкаСоздание", ПоместитьВоВременноеХранилище(БиблиотекаКартинок.Создание.ПолучитьДвоичныеДанные(), АдресКартинкиСоздание)); + + Возврат Запрос.Выполнить().Выгрузить(); + +КонецФункции + +Функция ВключенаГруппировкаПоОтчетам() + + СписокПолей = Новый Массив; + ЗаполнитьСписокПолейГруппировок(КомпоновщикНастроек.ПолучитьНастройки().Структура, СписокПолей); + + Возврат СписокПолей.Найти(Новый ПолеКомпоновкиДанных("Отчет")) <> Неопределено; + +КонецФункции + +// Параметры: +// КоллекцияЭлементов - КоллекцияЭлементовСтруктурыНастроекКомпоновкиДанных +// СписокПолей - Массив +// +Процедура ЗаполнитьСписокПолейГруппировок(КоллекцияЭлементов, СписокПолей) + + Для Каждого Элемент Из КоллекцияЭлементов Цикл + Если (ТипЗнч(Элемент) = Тип("ГруппировкаКомпоновкиДанных") + Или ТипЗнч(Элемент) = Тип("ГруппировкаТаблицыКомпоновкиДанных")) + И Элемент.Использование Тогда + Для Каждого Поле Из Элемент.ПоляГруппировки.Элементы Цикл + Если ТипЗнч(Поле) = Тип("ПолеГруппировкиКомпоновкиДанных") Тогда + Если Поле.Использование Тогда + СписокПолей.Добавить(Поле.Поле); + КонецЕсли; + КонецЕсли; + КонецЦикла; + ЗаполнитьСписокПолейГруппировок(Элемент.Структура, СписокПолей); + ИначеЕсли ТипЗнч(Элемент) = Тип("ТаблицаКомпоновкиДанных") И Элемент.Использование Тогда + ЗаполнитьСписокПолейГруппировок(Элемент.Строки, СписокПолей); + ЗаполнитьСписокПолейГруппировок(Элемент.Колонки, СписокПолей); + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Иначе +ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'"); +#КонецЕсли \ No newline at end of file diff --git a/SSL/src/Reports/АнализПравДоступа/Templates/Макет/Template.dcs b/SSL/src/Reports/АнализПравДоступа/Templates/Макет/Template.dcs new file mode 100644 index 000000000..245287a7c --- /dev/null +++ b/SSL/src/Reports/АнализПравДоступа/Templates/Макет/Template.dcs @@ -0,0 +1,4150 @@ + + + + ИсточникДанных1 + Local + + + ПраваПользователей + + ОбъектМетаданных + ОбъектМетаданных + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Таблица</v8:content> + </v8:item> + + + d5p1:CatalogRef.ИдентификаторыОбъектовРасширений + d5p1:CatalogRef.ИдентификаторыОбъектовМетаданных + + + + Пользователь + Пользователь + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Пользователь</v8:content> + </v8:item> + + + d5p1:CatalogRef.ГруппыПользователей + d5p1:CatalogRef.Пользователи + + + + ГруппаДоступа + ГруппаДоступа + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Группа доступа</v8:content> + </v8:item> + + + d5p1:CatalogRef.ГруппыДоступа + + + + ИнтерактивноеДобавление + ИнтерактивноеДобавление + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Создание</v8:content> + </v8:item> + + + xs:boolean + + + + Просмотр + Просмотр + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Просмотр</v8:content> + </v8:item> + + + xs:boolean + + + + Редактирование + Редактирование + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Редактирование</v8:content> + </v8:item> + + + xs:boolean + + + + Право + Право + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Уровень доступа</v8:content> + </v8:item> + + + xs:decimal + + 1 + 0 + Nonnegative + + + + 1 + + + ru + Просмотр + + + + + 2 + + + ru + Редактирование + + + + + 3 + + + ru + Создание + + + + + + КартинкаПросмотр + КартинкаПросмотр + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Картинка просмотр</v8:content> + </v8:item> + + + xs:string + + 0 + Variable + + + + + КартинкаРедактирование + КартинкаРедактирование + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Картинка редактирование</v8:content> + </v8:item> + + + xs:string + + 0 + Variable + + + + + КартинкаСоздание + КартинкаСоздание + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Картинка создание</v8:content> + </v8:item> + + + xs:string + + 0 + Variable + + + + + Отчет + Отчет + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Отчет</v8:content> + </v8:item> + + + d5p1:CatalogRef.ИдентификаторыОбъектовРасширений + d5p1:CatalogRef.ИдентификаторыОбъектовМетаданных + + + + ГруппаДоступаОтчета + ГруппаДоступаОтчета + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Группа доступа отчета</v8:content> + </v8:item> + + + d5p1:CatalogRef.ГруппыДоступа + + + + ПравоОтчета + ПравоОтчета + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Уровень доступа к отчету</v8:content> + </v8:item> + + + xs:decimal + + 1 + 0 + Nonnegative + + + + + ВходВПрограммуРазрешен + ВходВПрограммуРазрешен + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Пользователю разрешен вход в программу</v8:content> + </v8:item> + + + xs:boolean + + + ИсточникДанных1 + ПраваПользователей + + + Право + Максимум(Право) + ОбъектМетаданных + + + КартинкаПросмотр + Максимум(КартинкаПросмотр) + + + КартинкаРедактирование + Максимум(КартинкаРедактирование) + + + КартинкаСоздание + Максимум(КартинкаСоздание) + + + Просмотр + Максимум(Просмотр) + + + Редактирование + Максимум(Редактирование) + + + ИнтерактивноеДобавление + Максимум(ИнтерактивноеДобавление) + + + Право + Максимум(ПравоОтчета) + Отчет + + + ВходВПрограммуРазрешен + Минимум(ВходВПрограммуРазрешен) + + + + + + + + + + + Пользователь + КолонкаПользователь + Header + + + + ГруппаДоступа + КолонкаГруппаДоступа + Header + + + + ПользовательЗаголовок + Header + + + + ОбъектМетаданныхЗаголовок + Header + + + + Легенда + Header + + + + ОтчетЗаголовок + Header + + + + ГруппаДоступа + КартинкаПросмотр + КартинкаРедактирование + КартинкаСоздание + ПраваПоГруппамДоступа + Header + + + + Пользователь + КартинкаПросмотр + КартинкаРедактирование + КартинкаСоздание + ПраваПользователя + Header + + + + АнализПравДоступа + + + ru + Анализ прав доступа + + + + + + ОбъектМетаданных + + + Пользователь + + + Право + + + + + false + ОбъектМетаданных + InList + + + -1 + + 91c5e0cc-63a9-4398-b8d3-561eeecd248d + + + Право + GreaterOrEqual + 1 + Normal + 39a199ad-a34a-4363-bcad-f674ea3b14c8 + + + false + Пользователь + InList + + + -1 + + ece687f5-e5a6-4d3c-9153-fca4b227345a + + + ВходВПрограммуРазрешен + Equal + true + + + ru + Скрыть пользователей с отключенным входом в программу + + + Normal + 685f8653-1edd-40d3-9129-5dbc8bab6e90 + + + + + + + Право + + + + + Право + Equal + 1 + + + + + ЦветФона + style:ПравоПросмотраФон + + + + + + + Право + + + + + Право + Equal + 2 + + + + + ЦветФона + style:ПравоРедактированияФон + + + + + + + Право + + + + + Право + Equal + 3 + + + + + ЦветФона + style:ПравоСозданияФон + + + + + + + Пользователь + + + + + + false + Размещение + Wrap + + + false + ОриентацияТекста + 90 + + + false + МаксимальнаяШирина + 2 + + + false + РастягиватьПоГоризонтали + true + + + МаксимальнаяВысота + 70 + + + DontUse + DontUse + DontUse + DontUse + DontUse + DontUse + + + + + Пользователь + + + + + ВходВПрограммуРазрешен + Equal + false + + + + + ЦветТекста + style:ТекстЗапрещеннойЯчейкиЦвет + + + + + + + Право + + + + + Право + Filled + + + ВходВПрограммуРазрешен + Equal + false + + + + + ЦветФона + style:ПравоНедействительногоПользователяФон + + + + + + + false + РасположениеИтогов + None + + + false + РасположениеРесурсов + Vertically + + + ГоризонтальноеРасположениеОбщихИтогов + None + + + ВертикальноеРасположениеОбщихИтогов + None + + + false + ТипЗаголовкаПолей + Short + + + + + КолонкаПользователь + + + Пользователь + Items + None + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + + + + + + Пользователь + + + Право + + + + + + + ОбъектМетаданных + Items + None + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + + + + + + ОбъектМетаданных + + + + + false + МакетОформления + Main + + + ru + Таблица + + + + + false + РасположениеРесурсов + Vertically + + + Normal + c3f2a0ca-524d-44fd-a05f-7cfa9f91711b + + + false + ГруппировкаПоОтчетам + + + Отчет + Items + None + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + + + Отчет + Filled + + + + + + + + + + + ВыводитьОтбор + DontOutput + + + + + + ОбъектМетаданных + Items + None + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + + + + + + + + Normal + e549951a-8e6c-4ab1-b173-c76d63d7f9b2 + + + + + + + Легенда + + + + + + + + + МакетОформления + БезОформления + + + КоличествоЗаписей + 1 + + + false + ТипМакета + Vertical + + + Normal + ebf1c91e-e3cf-426d-b2ee-13552003fa74 + + + ru + Легенда + + + + + + + ПраваПользователейНаТаблицы + + + ru + Права пользователей на таблицы + + + + + + ОбъектМетаданных + + + Пользователь + + + Право + + + + + false + ОбъектМетаданных + InList + + + -1 + + Normal + 0231de1c-3184-40d8-8247-c5650409922c + + + false + Пользователь + InList + + + -1 + + Normal + + + false + Право + GreaterOrEqual + 1 + Normal + 4befccc4-9010-4c6a-9575-82660bbc06bf + + + false + ВходВПрограммуРазрешен + Equal + true + + + ru + Скрыть пользователей с отключенным входом в программу + + + Normal + 98ef20f5-9394-4a5b-bd98-61d4fdfc5707 + + + + + + + Право + + + + + Право + Equal + 1 + + + + + ЦветФона + style:ПравоПросмотраФон + + + + + + + Право + + + + + Право + Equal + 2 + + + + + ЦветФона + style:ПравоРедактированияФон + + + + + + + Право + + + + + Право + Equal + 3 + + + + + ЦветФона + style:ПравоСозданияФон + + + + + + + Пользователь + + + + + + false + Размещение + Wrap + + + false + ОриентацияТекста + 90 + + + false + МаксимальнаяШирина + 2 + + + false + РастягиватьПоГоризонтали + true + + + МаксимальнаяВысота + 70 + + + DontUse + DontUse + DontUse + DontUse + DontUse + DontUse + + + + + Право + + + + + Право + Filled + + + ВходВПрограммуРазрешен + Equal + false + + + + + ЦветФона + style:ПравоНедействительногоПользователяФон + + + + + + + Пользователь + + + + + ВходВПрограммуРазрешен + Equal + false + + + + + ЦветТекста + style:ТекстЗапрещеннойЯчейкиЦвет + + + + + + + false + МакетОформления + Основной + + + false + РасположениеИтогов + None + + + false + РасположениеРесурсов + Vertically + + + ГоризонтальноеРасположениеОбщихИтогов + None + + + ВертикальноеРасположениеОбщихИтогов + None + + + false + ТипЗаголовкаПолей + Short + + + + + КолонкаПользователь + + + Пользователь + Items + None + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + + + + + + Пользователь + + + Право + + + + + + + ОбъектМетаданных + Items + None + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + + + + + + ОбъектМетаданных + + + + + false + МакетОформления + Main + + + ru + Таблица + + + + + false + РасположениеРесурсов + Vertically + + + + + + + + + Легенда + + + + + + + + + МакетОформления + БезОформления + + + КоличествоЗаписей + 1 + + + Normal + b7d4003d-6df0-435a-a7c9-7d59ce0d623a + + + ru + Легенда + + + + + + + ПраваПользователяНаТаблицы + + + ru + Права пользователя на таблицы + + + + + + ОбъектМетаданных + + + ГруппаДоступа + + + Право + + + + + false + Пользователь + Equal + Normal + + + false + Право + GreaterOrEqual + 1 + Normal + 12d5529f-b584-44b3-b37e-ffa717fce6f1 + + + + + + + Право + + + + + Право + Equal + 1 + + + + + ЦветФона + style:ПравоПросмотраФон + + + + + + + Право + + + + + Право + Equal + 2 + + + + + ЦветФона + style:ПравоРедактированияФон + + + + + + + Право + + + + + Право + Equal + 3 + + + + + ЦветФона + style:ПравоСозданияФон + + + + + + + ГруппаДоступа + + + + + + МаксимальнаяВысота + 70 + + + DontUse + DontUse + DontUse + DontUse + DontUse + DontUse + + + + + Право + + + + + Право + Filled + + + ВходВПрограммуРазрешен + Equal + false + + + + + ЦветФона + style:ПравоНедействительногоПользователяФон + + + + + + + КартинкаПросмотр + + + Просмотр + + + + + Просмотр + Equal + true + + + ВходВПрограммуРазрешен + Equal + false + + + + + ЦветФона + style:ПравоНедействительногоПользователяФон + + + + + + + КартинкаРедактирование + + + Редактирование + + + + + Редактирование + Equal + true + + + ВходВПрограммуРазрешен + Equal + false + + + + + ЦветФона + style:ПравоНедействительногоПользователяФон + + + + + + + КартинкаСоздание + + + ИнтерактивноеДобавление + + + + + ИнтерактивноеДобавление + Equal + true + + + ВходВПрограммуРазрешен + Equal + false + + + + + ЦветФона + style:ПравоНедействительногоПользователяФон + + + + + + + ГруппаДоступа + + + + + ГруппаДоступа + NotFilled + + + + + ЦветТекста + style:ТекстЗапрещеннойЯчейкиЦвет + + + Текст + + + ru + <Без доступа> + + + + + + + + + false + РасположениеИтогов + None + + + false + РасположениеРесурсов + Vertically + + + ГоризонтальноеРасположениеОбщихИтогов + None + + + ВертикальноеРасположениеОбщихИтогов + None + + + false + ТипЗаголовкаПолей + Short + + + ВыводитьОтбор + DontOutput + + + + ПользовательЗаголовок + + + Пользователь + Items + None + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + + + + + + + + + КолонкаГруппаДоступа + + + ГруппаДоступа + Items + None + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + + + + + + ГруппаДоступа + + + Право + + + + + + + ОбъектМетаданных + Items + None + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + + + + + + ОбъектМетаданных + + + + + false + МакетОформления + Main + + + ru + Таблица + + + + + false + РасположениеРесурсов + Vertically + + + + + + + + + + Легенда + + + + + + + + + МакетОформления + БезОформления + + + КоличествоЗаписей + 1 + + + Normal + d7ffd476-3d65-411a-b844-2e3c54a01723 + + + ru + Легенда + + + + + + + ПраваПользователейНаТаблицу + + + ru + Права пользователей на таблицу + + + + + + Пользователь + + + КартинкаПросмотр + + + КартинкаРедактирование + + + КартинкаСоздание + + + + + false + ОбъектМетаданных + Equal + Normal + + + false + Пользователь + Equal + Normal + 7a412447-4710-4980-a012-e951cdfc618f + + + false + Право + GreaterOrEqual + 1 + Normal + 333e101d-6632-4c33-b582-28b2863c71dc + + + false + ВходВПрограммуРазрешен + Equal + true + + + ru + Скрыть пользователей с отключенным входом в программу + + + Normal + 0c68038c-5afb-41d4-8210-50ddfee8fb65 + + + + + + + Право + + + + + Право + Equal + 1 + + + + + ЦветФона + style:ПравоПросмотраФон + + + + + + + Право + + + + + Право + Equal + 2 + + + + + ЦветФона + style:ПравоРедактированияФон + + + + + + + Право + + + + + Право + Equal + 3 + + + + + ЦветФона + style:ПравоСозданияФон + + + + + + + КартинкаПросмотр + + + КартинкаРедактирование + + + КартинкаСоздание + + + + + + ВыводитьКартинку + Auto + + + ВертикальноеПоложениеКартинки + Center + + + ГоризонтальноеПоложениеКартинки + Center + + + + + + + КартинкаПросмотр + + + Просмотр + + + + + Просмотр + Equal + true + + + + + ЦветФона + style:ПравоПросмотраФон + + + + + + + КартинкаРедактирование + + + Редактирование + + + + + Редактирование + Equal + true + + + + + ЦветФона + style:ПравоРедактированияФон + + + + + + + КартинкаСоздание + + + ИнтерактивноеДобавление + + + + + ИнтерактивноеДобавление + Equal + true + + + + + ЦветФона + style:ПравоСозданияФон + + + + + + + Пользователь + + + + + ВходВПрограммуРазрешен + Equal + false + + + + + ЦветТекста + style:ТекстЗапрещеннойЯчейкиЦвет + + + + + + + Право + + + + + Право + Filled + + + ВходВПрограммуРазрешен + Equal + false + + + + + ЦветФона + style:ПравоНедействительногоПользователяФон + + + + + + + КартинкаПросмотр + + + Просмотр + + + + + Просмотр + Equal + true + + + ВходВПрограммуРазрешен + Equal + false + + + + + ЦветФона + style:ПравоНедействительногоПользователяФон + + + + + + + КартинкаРедактирование + + + Редактирование + + + + + Редактирование + Equal + true + + + ВходВПрограммуРазрешен + Equal + false + + + + + ЦветФона + style:ПравоНедействительногоПользователяФон + + + + + + + КартинкаСоздание + + + ИнтерактивноеДобавление + + + + + ИнтерактивноеДобавление + Equal + true + + + ВходВПрограммуРазрешен + Equal + false + + + + + ЦветФона + style:ПравоНедействительногоПользователяФон + + + + + + + false + РасположениеИтогов + None + + + false + РасположениеРесурсов + Vertically + + + ГоризонтальноеРасположениеОбщихИтогов + None + + + ВертикальноеРасположениеОбщихИтогов + None + + + false + ТипЗаголовкаПолей + Short + + + ВыводитьОтбор + DontOutput + + + + ОбъектМетаданныхЗаголовок + + + ОбъектМетаданных + Items + None + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + + + + + + + + + ПраваПользователя + + + Пользователь + Items + None + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + + + + + + + + + + Легенда + + + + + + + + + МакетОформления + БезОформления + + + КоличествоЗаписей + 1 + + + Normal + a71bf3f1-8265-4e84-9bde-1ebd2d3c71eb + + + ru + Легенда + + + + + + + ПраваПользователяНаТаблицу + + + ru + Права пользователя на таблицу + + + + + + ГруппаДоступа + + + КартинкаПросмотр + + + КартинкаРедактирование + + + КартинкаСоздание + + + + + ОбъектМетаданных + Equal + Normal + + + Пользователь + Equal + Normal + + + + + + + КартинкаПросмотр + + + КартинкаРедактирование + + + КартинкаСоздание + + + + + + ВыводитьКартинку + Auto + + + + + + + Просмотр + + + КартинкаПросмотр + + + + + Просмотр + Equal + true + + + + + ЦветФона + style:ПравоПросмотраФон + + + + + + + Редактирование + + + КартинкаРедактирование + + + + + Редактирование + Equal + true + + + + + ЦветФона + style:ПравоРедактированияФон + + + + + + + ИнтерактивноеДобавление + + + КартинкаСоздание + + + + + ИнтерактивноеДобавление + Equal + true + + + + + ЦветФона + style:ПравоСозданияФон + + + + + + + Просмотр + + + КартинкаПросмотр + + + + + Просмотр + Equal + true + + + ВходВПрограммуРазрешен + Equal + false + + + + + ЦветФона + style:ПравоНедействительногоПользователяФон + + + + + + + Редактирование + + + КартинкаРедактирование + + + + + Редактирование + Equal + true + + + ВходВПрограммуРазрешен + Equal + false + + + + + ЦветФона + style:ПравоНедействительногоПользователяФон + + + + + + + ИнтерактивноеДобавление + + + КартинкаСоздание + + + + + ИнтерактивноеДобавление + Equal + true + + + ВходВПрограммуРазрешен + Equal + false + + + + + ЦветФона + style:ПравоНедействительногоПользователяФон + + + + + + + ГруппаДоступа + + + + + ГруппаДоступа + NotFilled + + + + + ЦветТекста + style:ТекстЗапрещеннойЯчейкиЦвет + + + Текст + + + ru + <Без доступа> + + + + + + + + + ГоризонтальноеРасположениеОбщихИтогов + None + + + ВертикальноеРасположениеОбщихИтогов + None + + + ВыводитьОтбор + DontOutput + + + + ПользовательЗаголовок + + + Пользователь + Items + None + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + + + + + + false + ВыводитьЗаголовок + DontOutput + + + false + ВариантИспользованияГруппировки + AdditionalInformation + + + + ОбъектМетаданныхЗаголовок + + + ОбъектМетаданных + Items + None + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + + + + + + false + ВариантИспользованияГруппировки + AdditionalInformation + + + + + ПраваПоГруппамДоступа + + + ГруппаДоступа + Items + None + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + + + + + + ГруппаДоступа + + + КартинкаПросмотр + + + КартинкаРедактирование + + + КартинкаСоздание + + + + + + + Легенда + + + + + + + + + МакетОформления + БезОформления + + + КоличествоЗаписей + 1 + + + Normal + 15bee542-8025-4ad8-8ebd-ca7d183762d6 + + + ru + Легенда + + + + + + + ПраваПользователейНаТаблицыОтчета + + + ru + Права пользователей на таблицы отчета + + + + + + Отчет + + + ОбъектМетаданных + + + Пользователь + + + Право + + + + + Отчет + Equal + + Normal + + + false + Право + GreaterOrEqual + 1 + Normal + bb97c32b-6606-4e2f-84b8-5a3c1a36426c + + + false + ВходВПрограммуРазрешен + Equal + true + + + ru + Скрыть пользователей с отключенным входом в программу + + + Normal + e4741d14-20fa-466f-9e8d-892ca655c087 + + + + + false + + + Пользователь + + + + + + ОриентацияТекста + 90 + + + DontUse + DontUse + DontUse + DontUse + DontUse + DontUse + + + + + Право + + + + + Право + Equal + 1 + + + + + ЦветФона + style:ПравоПросмотраФон + + + + + + + Право + + + + + Право + Equal + 2 + + + + + ЦветФона + style:ПравоРедактированияФон + + + + + + + Право + + + + + Право + Equal + 3 + + + + + ЦветФона + style:ПравоСозданияФон + + + + + + + Пользователь + + + + + + МаксимальнаяВысота + 70 + + + DontUse + DontUse + DontUse + DontUse + DontUse + DontUse + + + + + Пользователь + + + + + ВходВПрограммуРазрешен + Equal + false + + + + + false + ЦветФона + style:ПравоНедействительногоПользователяФон + + + ЦветТекста + style:ТекстЗапрещеннойЯчейкиЦвет + + + + + + + Право + + + + + ВходВПрограммуРазрешен + Equal + false + + + Право + Filled + + + + + ЦветФона + style:ПравоНедействительногоПользователяФон + + + + + + + false + РасположениеИтогов + None + + + false + РасположениеРесурсов + Vertically + + + ГоризонтальноеРасположениеОбщихИтогов + None + + + ВертикальноеРасположениеОбщихИтогов + None + + + false + ТипЗаголовкаПолей + Short + + + ВыводитьОтбор + DontOutput + + + + ОтчетЗаголовок + + + Отчет + Items + None + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + + + + + + + + + + + КолонкаПользователь + + + Пользователь + Items + None + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + + + + + + Пользователь + + + Право + + + + + + + Отчет + Items + None + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + + + + + + + + + + ОбъектМетаданных + Items + None + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + + + + + + ОбъектМетаданных + + + + + false + МакетОформления + Main + + + ru + Таблица + + + + + false + РасположениеРесурсов + Vertically + + + + + + + + + + Легенда + + + + + + + + + МакетОформления + БезОформления + + + КоличествоЗаписей + 1 + + + Normal + d08e0721-13c6-4e63-b708-48bf0eeefeeb + + + ru + Легенда + + + + + + + ПраваПользователяНаТаблицыОтчета + + + ru + Права пользователя на таблицы отчета + + + + + + ОбъектМетаданных + + + ГруппаДоступа + + + Право + + + + + Пользователь + InList + Normal + + + Отчет + Equal + Normal + + + false + Право + GreaterOrEqual + 1 + Normal + cfb5d8b8-61bf-438c-8847-a39255e414e6 + + + + + false + + + Пользователь + + + + + + ОриентацияТекста + 90 + + + DontUse + DontUse + DontUse + DontUse + DontUse + DontUse + + + + + Право + + + + + Право + Equal + 1 + + + + + ЦветФона + style:ПравоПросмотраФон + + + + + + + Право + + + + + Право + Equal + 2 + + + + + ЦветФона + style:ПравоРедактированияФон + + + + + + + Право + + + + + Право + Equal + 3 + + + + + ЦветФона + style:ПравоСозданияФон + + + + + + + ГруппаДоступа + + + + + + МаксимальнаяВысота + 70 + + + DontUse + DontUse + DontUse + DontUse + DontUse + DontUse + + + + + Право + + + + + Право + Filled + + + ВходВПрограммуРазрешен + Equal + false + + + + + ЦветФона + style:ПравоНедействительногоПользователяФон + + + + + + + ГруппаДоступа + + + + + ГруппаДоступа + NotFilled + + + + + ЦветТекста + style:ТекстЗапрещеннойЯчейкиЦвет + + + Текст + + + ru + <Без доступа> + + + + + + + + + false + РасположениеИтогов + None + + + false + РасположениеРесурсов + Vertically + + + ГоризонтальноеРасположениеОбщихИтогов + None + + + ВертикальноеРасположениеОбщихИтогов + None + + + false + ТипЗаголовкаПолей + Short + + + ВыводитьОтбор + DontOutput + + + + ОтчетЗаголовок + + + Отчет + Items + None + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + + + + + + + + ПользовательЗаголовок + + + Пользователь + Items + None + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + + + + + + + + + + + + КолонкаГруппаДоступа + + + ГруппаДоступа + Items + None + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + + + + + + ГруппаДоступа + + + Право + + + + + + + Отчет + Items + None + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + + + + + + + + + + ОбъектМетаданных + Items + None + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + + + + + + ОбъектМетаданных + + + + + false + МакетОформления + Main + + + ru + Таблица + + + + + false + РасположениеРесурсов + Vertically + + + + + + + + + + Легенда + + + + + + + + + МакетОформления + БезОформления + + + КоличествоЗаписей + 1 + + + Normal + b1b756b2-49f5-4c58-8c2d-bfc2cc80c9d2 + + + ru + Легенда + + + + + + + ПраваПользователяНаТаблицыОтчетов + + + ru + Права пользователя на таблицы отчетов + + + + + + ОбъектМетаданных + + + ГруппаДоступа + + + Право + + + + + false + Пользователь + InList + Normal + + + false + Право + GreaterOrEqual + 1 + Normal + 12d5529f-b584-44b3-b37e-ffa717fce6f1 + + + + + + + Право + + + + + Право + Equal + 1 + + + + + ЦветФона + style:ПравоПросмотраФон + + + + + + + Право + + + + + Право + Equal + 2 + + + + + ЦветФона + style:ПравоРедактированияФон + + + + + + + Право + + + + + Право + Equal + 3 + + + + + ЦветФона + style:ПравоСозданияФон + + + + + + + ГруппаДоступа + + + + + + МаксимальнаяВысота + 70 + + + DontUse + DontUse + DontUse + DontUse + DontUse + DontUse + + + + + Право + + + + + Право + Filled + + + ВходВПрограммуРазрешен + Equal + false + + + + + ЦветФона + style:ПравоНедействительногоПользователяФон + + + + + + + КартинкаПросмотр + + + Просмотр + + + + + Просмотр + Equal + true + + + ВходВПрограммуРазрешен + Equal + false + + + + + ЦветФона + style:ПравоНедействительногоПользователяФон + + + + + + + КартинкаРедактирование + + + Редактирование + + + + + Редактирование + Equal + true + + + ВходВПрограммуРазрешен + Equal + false + + + + + ЦветФона + style:ПравоНедействительногоПользователяФон + + + + + + + КартинкаСоздание + + + ИнтерактивноеДобавление + + + + + ИнтерактивноеДобавление + Equal + true + + + ВходВПрограммуРазрешен + Equal + false + + + + + ЦветФона + style:ПравоНедействительногоПользователяФон + + + + + + + ГруппаДоступа + + + + + ГруппаДоступа + NotFilled + + + + + ЦветТекста + style:ТекстЗапрещеннойЯчейкиЦвет + + + Текст + + + ru + <Без доступа> + + + + + + + + + false + РасположениеИтогов + None + + + false + РасположениеРесурсов + Vertically + + + ГоризонтальноеРасположениеОбщихИтогов + None + + + ВертикальноеРасположениеОбщихИтогов + None + + + false + ТипЗаголовкаПолей + Short + + + ВыводитьОтбор + DontOutput + + + + ПользовательЗаголовок + + + Пользователь + Items + None + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + + + + + + + + + КолонкаГруппаДоступа + + + ГруппаДоступа + Items + None + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + + + + + + ГруппаДоступа + + + Право + + + + + + + Отчет + Items + None + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + + + Отчет + Filled + + + + + + + + + + + ВыводитьОтбор + DontOutput + + + + + + ОбъектМетаданных + Items + None + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + + + + + + ОбъектМетаданных + + + + + false + МакетОформления + Main + + + ru + Таблица + + + + + false + РасположениеРесурсов + Vertically + + + + + + + + + + + Легенда + + + + + + + + + МакетОформления + БезОформления + + + КоличествоЗаписей + 1 + + + Normal + d7ffd476-3d65-411a-b844-2e3c54a01723 + + + ru + Легенда + + + + + + \ No newline at end of file diff --git a/SSL/src/Reports/АнализПравДоступа/АнализПравДоступа.mdo b/SSL/src/Reports/АнализПравДоступа/АнализПравДоступа.mdo new file mode 100644 index 000000000..3c6aa7cc0 --- /dev/null +++ b/SSL/src/Reports/АнализПравДоступа/АнализПравДоступа.mdo @@ -0,0 +1,24 @@ + + + + + + + АнализПравДоступа + + ru + Анализ прав доступа + + true + Report.АнализПравДоступа.Template.Макет + SettingsStorage.ХранилищеВариантовОтчетов + SettingsStorage.ХранилищеВариантовОтчетов + + Макет + + ru + Макет + + DataCompositionSchema + + diff --git a/SSL/src/Reports/ДатыЗапретаЗагрузки/ObjectModule.bsl b/SSL/src/Reports/ДатыЗапретаЗагрузки/ObjectModule.bsl index 56244c3ea..c2321fb9b 100644 --- a/SSL/src/Reports/ДатыЗапретаЗагрузки/ObjectModule.bsl +++ b/SSL/src/Reports/ДатыЗапретаЗагрузки/ObjectModule.bsl @@ -16,14 +16,11 @@ // Задать настройки формы отчета. // -// Настройки общей формы отчета подсистемы "Варианты отчетов". -// // Параметры: -// Форма - ФормаКлиентскогоПриложения, Неопределено - Форма отчета или форма настроек отчета. -// Неопределено когда вызов без контекста. -// КлючВарианта - Строка, Неопределено - Имя предопределенного -// или уникальный идентификатор пользовательского варианта отчета. -// Неопределено когда вызов без контекста. +// Форма - ФормаКлиентскогоПриложения +// - Неопределено +// КлючВарианта - Строка +// - Неопределено // Настройки - см. ОтчетыКлиентСервер.НастройкиОтчетаПоУмолчанию // Процедура ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки) Экспорт diff --git a/SSL/src/Reports/ДатыЗапретаИзменения/ObjectModule.bsl b/SSL/src/Reports/ДатыЗапретаИзменения/ObjectModule.bsl index a257fee21..b01807b76 100644 --- a/SSL/src/Reports/ДатыЗапретаИзменения/ObjectModule.bsl +++ b/SSL/src/Reports/ДатыЗапретаИзменения/ObjectModule.bsl @@ -17,8 +17,10 @@ // Задать настройки формы отчета. // // Параметры: -// Форма - ФормаКлиентскогоПриложения, Неопределено - -// КлючВарианта - Строка, Неопределено - +// Форма - ФормаКлиентскогоПриложения +// - Неопределено +// КлючВарианта - Строка +// - Неопределено // Настройки - см. ОтчетыКлиентСервер.НастройкиОтчетаПоУмолчанию // Процедура ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки) Экспорт diff --git a/SSL/src/Reports/ДвиженияДокумента/ManagerModule.bsl b/SSL/src/Reports/ДвиженияДокумента/ManagerModule.bsl index a85e4630b..07df9fe59 100644 --- a/SSL/src/Reports/ДвиженияДокумента/ManagerModule.bsl +++ b/SSL/src/Reports/ДвиженияДокумента/ManagerModule.bsl @@ -49,7 +49,8 @@ // * ФункциональныеОпции - Строка - имена функциональных опций через запятую, определяющих видимость команды. // * УсловияВидимости - Массив - определяет видимость команды в зависимости от контекста. // * ИзменяетВыбранныеОбъекты - Булево - определяет доступность команды. -// * МножественныйВыбор - Булево, Неопределено - если Истина, то команда поддерживает множественный выбор. +// * МножественныйВыбор - Булево +// - Неопределено - если Истина, то команда поддерживает множественный выбор. // В этом случае в параметре выполнения будет передан список ссылок. // Необязательный. Значение по умолчанию: Истина. // * РежимЗаписи - Строка - действия, связанные с записью объекта, которые выполняются перед обработчиком команды. @@ -59,11 +60,13 @@ // * ИмяФормы - Строка - имя формы, которую требуется открыть или получить для выполнения команды. // * КлючВарианта - Строка - имя варианта отчета, открываемого при выполнении команды. // * ИмяПараметраФормы - Строка - имя параметра формы, в который следует передать ссылку или массив ссылок. -// * ПараметрыФормы - Неопределено, Структура - параметры формы, указанной в ИмяФормы. +// * ПараметрыФормы - Неопределено +// - Структура - параметры формы, указанной в ИмяФормы. // * Обработчик - Строка - описание процедуры, обрабатывающей основное действие команды. // * ДополнительныеПараметры - Структура - параметры обработчика, указанного в Обработчик. // Параметры - Структура - структура, содержащая параметры подключения команды. -// ДокументыСОтчетомОДвижениях - Массив, Неопределено - массив документов, в которых будет выводится +// ДокументыСОтчетомОДвижениях - Массив +// - Неопределено - массив документов, в которых будет выводится // команда открытия отчета. Неопределено в том случае когда отчет выводится // для всех документов со свойством "Проведение" установленным в "Разрешить" // и непустой коллекцией движений. diff --git a/SSL/src/Reports/ДвиженияДокумента/ObjectModule.bsl b/SSL/src/Reports/ДвиженияДокумента/ObjectModule.bsl index 2387d111a..a12357af3 100644 --- a/SSL/src/Reports/ДвиженияДокумента/ObjectModule.bsl +++ b/SSL/src/Reports/ДвиженияДокумента/ObjectModule.bsl @@ -13,6 +13,7 @@ Перем КлючТекущегоВарианта; // Строка // Хранит идентификатор настроек варианта отчета. // Также см. Синтакс-помощник. +Перем КлючРодительскогоВарианта; // Строка Перем СвойстваРегистров; // см. ПалитраСвойствРегистров Перем Примечания; // см. ПалитраСвойствПримечаний @@ -26,21 +27,16 @@ // Задать настройки формы отчета. // -// Настройки общей формы отчета подсистемы "Варианты отчетов". -// // Параметры: -// Форма - ФормаКлиентскогоПриложения, Неопределено - Форма отчета или форма настроек отчета. -// Неопределено когда вызов без контекста. -// КлючВарианта - Строка, Неопределено - Имя предопределенного -// или уникальный идентификатор пользовательского варианта отчета. -// Неопределено когда вызов без контекста. +// Форма - ФормаКлиентскогоПриложения +// - Неопределено +// КлючВарианта - Строка +// - Неопределено // Настройки - см. ОтчетыКлиентСервер.НастройкиОтчетаПоУмолчанию // Процедура ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки) Экспорт - Настройки.РазрешеноВыбиратьИНастраиватьВариантыБезСохранения = Истина; - Настройки.СкрытьКомандыРассылки = Истина; - Настройки.ПараметрыРасположенияЭлементовУправления = ПараметрыРасположенияЭлементовУправления(); + Настройки.ПараметрыРасположенияЭлементовУправления = ПараметрыРасположенияЭлементовУправления(); Настройки.События.ПриСозданииНаСервере = Истина; Настройки.События.ПередЗагрузкойНастроекВКомпоновщик = Истина; @@ -64,13 +60,16 @@ // По умолчанию не заполнен (это означает что компоновщик инициализирован на основании основной схемы). // Используется для оптимизации, чтобы переинициализировать компоновщик как можно реже. // Может не использоваться если переинициализация выполняется безусловно. -// КлючВарианта - Строка, Неопределено - +// КлючВарианта - Строка +// - Неопределено - // Имя предопределенного или уникальный идентификатор пользовательского варианта отчета. // Неопределено когда вызов для варианта расшифровки или без контекста. -// Настройки - НастройкиКомпоновкиДанных, Неопределено - +// Настройки - НастройкиКомпоновкиДанных +// - Неопределено - // Настройки варианта отчета, которые будут загружены в компоновщик настроек после его инициализации. // Неопределено когда настройки варианта не надо загружать (уже загружены ранее). -// ПользовательскиеНастройки - ПользовательскиеНастройкиКомпоновкиДанных, Неопределено - +// ПользовательскиеНастройки - ПользовательскиеНастройкиКомпоновкиДанных +// - Неопределено - // Пользовательские настройки, которые будут загружены в компоновщик настроек после его инициализации. // Неопределено когда пользовательские настройки не надо загружать (уже загружены ранее). // @@ -112,9 +111,11 @@ ПараметрыОтчета = ПараметрыОтчета(Настройки, ПользовательскиеНастройки); Если ПараметрыОтчета.ДокументВладелец = Неопределено Тогда - ВызватьИсключение НСтр("ru = 'Отчет о движениях документа не предназначен для рассылки.'"); + ВызватьИсключение НСтр("ru = 'Отчет о движениях документа возможно открыть из формы документа.'"); КонецЕсли; + КлючРодительскогоВарианта = КлючРодительскогоВарианта(Контекст, КлючВарианта, Настройки); + Если КлючСхемы = КлючВарианта Тогда Возврат; КонецЕсли; @@ -135,15 +136,20 @@ ЗначенияПараметров.Вставить("ДокументВладелец", ПараметрыОтчета.ДокументВладелец); ЗначенияПараметров.Вставить("СписокРегистров", СписокВыбранныхРегистров); + ОграничитьТипВладельца(ПараметрыОтчета.ДокументВладелец); УстановитьПараметрыДанных(Настройки, ЗначенияПараметров, ПользовательскиеНастройки); - Если КлючВарианта = "Основной" Тогда - ПодготовитьГоризонтальныйВариант(ПараметрыОтчета.ДокументВладелец, Настройки); - ИначеЕсли КлючВарианта = "Дополнительный" Тогда - ПодготовитьВертикальныйВариант(ПараметрыОтчета.ДокументВладелец, Настройки); + ЭтоПредопределенныйВариант = (КлючРодительскогоВарианта = КлючВарианта); + + Если КлючРодительскогоВарианта = "Основной" Тогда + ПодготовитьГоризонтальныйВариант(ПараметрыОтчета.ДокументВладелец, Настройки, ЭтоПредопределенныйВариант); + ИначеЕсли КлючРодительскогоВарианта = "Дополнительный" Тогда + ПодготовитьВертикальныйВариант(ПараметрыОтчета.ДокументВладелец, Настройки, ЭтоПредопределенныйВариант); КонецЕсли; - Настройки.ДополнительныеСвойства.Вставить("ИдентификаторыСвойствНастроек", Новый Массив); + ДополнительныеСвойства = Настройки.ДополнительныеСвойства; + ДополнительныеСвойства.Вставить("ИдентификаторыСвойствНастроек", Новый Массив); + ДополнительныеСвойства.Вставить("КлючРодительскогоВарианта", КлючРодительскогоВарианта); ОтчетыСервер.ПодключитьСхему(ЭтотОбъект, Контекст, СхемаКомпоновкиДанных, КлючСхемы); @@ -158,20 +164,17 @@ ВызватьИсключение НСтр("ru = 'Выбранное действие в данном отчете не доступно.'"); КонецЕсли; - Если Форма.Параметры.Свойство("ДокументВладелец") Тогда - СтруктураПараметровДанных = Новый Структура("ДокументВладелец", Форма.Параметры.ДокументВладелец); - УстановитьПараметрыДанных(КомпоновщикНастроек.Настройки, СтруктураПараметровДанных); - ИначеЕсли Не Форма.Параметры.Свойство("ПараметрКоманды") Тогда - ВызватьИсключение НСтр("ru = 'Для начала работы с отчетом необходимо воспользоваться соответствующей командой в форме интересующего документа.'"); - КонецЕсли; - ДокументВладелец = Форма.Параметры.ПараметрКоманды; - Если Не ЗначениеЗаполнено(ДокументВладелец) Тогда - ВызватьИсключение НСтр("ru = 'Для начала работы с отчетом необходимо воспользоваться соответствующей командой в форме интересующего документа.'"); + ДокументВладелец = Неопределено; + + Если Не Форма.Параметры.Свойство("ДокументВладелец", ДокументВладелец) + И Не Форма.Параметры.Свойство("ПараметрКоманды", ДокументВладелец) + И Не ЗначениеЗаполнено(ДокументВладелец) Тогда + + Возврат; КонецЕсли; СтруктураПараметровДанных = Новый Структура("ДокументВладелец", ДокументВладелец); УстановитьПараметрыДанных(КомпоновщикНастроек.Настройки, СтруктураПараметровДанных); - Форма.КлючНазначенияИспользования = ДокументВладелец.Метаданные().ПолноеИмя(); КонецПроцедуры @@ -241,7 +244,7 @@ ПолучитьСвойстваРегистров(Настройки, ДокументВладелец); - НайденныйПараметр = Настройки.ПараметрыДанных.Элементы.Найти("Списокрегистров"); + НайденныйПараметр = Настройки.ПараметрыДанных.Элементы.Найти("СписокРегистров"); Если НайденныйПараметр <> Неопределено И Не НайденныйПараметр.Использование Тогда @@ -275,6 +278,16 @@ #Область ПодготовкаДанных +Процедура ОграничитьТипВладельца(Владелец) + + ТипыВладельца = Новый Массив; + ТипыВладельца.Добавить(ТипЗнч(Владелец)); + + НайденныйПараметр = СхемаКомпоновкиДанных.Параметры.Найти("ДокументВладелец"); + НайденныйПараметр.ТипЗначения = Новый ОписаниеТипов(ТипыВладельца); + +КонецПроцедуры + Функция НаборыДанныхОтчета(ДокументВладелец, ДополнительнаяНумерация = Ложь) НаборыДанных = Новый Массив; @@ -418,14 +431,10 @@ Для Каждого Ресурс Из Ресурсы Цикл Если Ресурс.Балансовый Или Не КорреспонденцияОбъекта Тогда - НаборДанных.Ресурсы.Вставить(Ресурс.Имя, Ресурс.Представление()); - Иначе - НаборДанных.РесурсыДт.Вставить(Ресурс.Имя + "Дт", Ресурс.Представление() + " " + ЛокализацияДебет); НаборДанных.РесурсыКт.Вставить(Ресурс.Имя + "Кт", Ресурс.Представление() + " " + ЛокализацияКредит); - КонецЕсли; КонецЦикла; @@ -433,13 +442,11 @@ Для ИндексСубконто = 1 По МаксимальноеКоличествоСубконто Цикл Если КорреспонденцияОбъекта Тогда - ИндексСтрокой = Формат(ИндексСубконто, "ЧГ=0"); НаборДанных.СубконтоДт.Вставить("СубконтоДт" + ИндексСтрокой, ЛокализацияСубконто + " " + ЛокализацияДебет + " " + ИндексСтрокой); НаборДанных.СубконтоКт.Вставить("СубконтоКт" + ИндексСтрокой, ЛокализацияСубконто + " " + ЛокализацияКредит + " " + ИндексСтрокой); - Иначе НаборДанных.Субконто.Вставить("Субконто" + ИндексСтрокой, ЛокализацияСубконто + " " + ИндексСтрокой); КонецЕсли; @@ -447,10 +454,9 @@ КонецЦикла; Если КорреспонденцияОбъекта Тогда - НаборДанных.ИзмеренияДт.Вставить("СчетДт", ЛокализацияСчет + " " +ЛокализацияДебет); + НаборДанных.ИзмеренияДт.Вставить("СчетДт", ЛокализацияСчет + " " + ЛокализацияДебет); НаборДанных.ИзмеренияКт.Вставить("СчетКт", ЛокализацияСчет + " " + ЛокализацияКредит); Иначе - ТекстИзмерения = ТекстИзмерения + ?(ЗначениеЗаполнено(ТекстИзмерения), ", ", "") + "Счет"; НаборДанных.Измерения.Вставить("Счет", ЛокализацияСчет); КонецЕсли; @@ -588,7 +594,7 @@ #Область ГоризонтальныйВариант -Процедура ПодготовитьГоризонтальныйВариант(ДокументВладелец, Настройки) +Процедура ПодготовитьГоризонтальныйВариант(ДокументВладелец, Настройки, ЭтоПредопределенныйВариант) Если СвойстваРегистров.Количество() = 0 Тогда Возврат; @@ -617,8 +623,10 @@ НаборДанных.ПредставлениеВидаРегистра, НаборДанных.ИмяРегистра); КонецЕсли; - - ПодготовитьГоризонтальныйВариантНабораДанных(Настройки, НаборДанных, ЭлементНабораДанных); + + Если ЭтоПредопределенныйВариант Тогда + ПодготовитьГоризонтальныйВариантНабораДанных(Настройки, НаборДанных, ЭлементНабораДанных); + КонецЕсли; КонецЦикла; @@ -657,7 +665,7 @@ СтруктураРеквизитов = ЭлементДанных.Реквизиты; ПользовательскийЗаголовок = ПредставлениеВидаРегистра + " " + ПредставлениеРегистра; - ГруппировкаДетальныеЗаписи = ДобавитьЭлементСтруктуры(НастройкиКД, ВидРегистра + "_" + ИмяРегистра, ПользовательскийЗаголовок); + ГруппировкаДетальныеЗаписи = ДетальныеЗаписиПоРегистру(НастройкиКД, ВидРегистра + "_" + ИмяРегистра, ПользовательскийЗаголовок); Если СтруктураСтандартныхРеквизитов.Количество() > 0 Тогда @@ -722,7 +730,7 @@ ПользовательскийЗаголовок = НСтр("ru = 'Регистр расчета'") + " " + ПредставлениеРегистра; - ГруппировкаДетальныеЗаписи = ДобавитьЭлементСтруктуры(НастройкиКД, + ГруппировкаДетальныеЗаписи = ДетальныеЗаписиПоРегистру(НастройкиКД, ВидРегистра + "_" + ИмяРегистра, ПользовательскийЗаголовок); Если СтруктураСтандартныхРеквизитов.Количество() > 0 Тогда @@ -779,7 +787,7 @@ #Область ВертикальныйВариант -Процедура ПодготовитьВертикальныйВариант(ДокументВладелец, Настройки) +Процедура ПодготовитьВертикальныйВариант(ДокументВладелец, Настройки, ЭтоПредопределенныйВариант) Если СвойстваРегистров.Количество() = 0 Тогда Возврат; @@ -809,8 +817,10 @@ НаборДанных.ПредставлениеВидаРегистра, НаборДанных.ИмяРегистра); КонецЕсли; - - ПодготовитьВертикальныйВариантНабораДанных(Настройки, НаборДанных, ЭлементНабораДанных); + + Если ЭтоПредопределенныйВариант Тогда + ПодготовитьВертикальныйВариантНабораДанных(Настройки, НаборДанных, ЭлементНабораДанных); + КонецЕсли; КонецЦикла; @@ -850,7 +860,7 @@ СтруктураНумератора = ЭлементДанных.Нумератор; Заголовок = ПредставлениеВидаРегистра + " " + ПредставлениеРегистра; - ГруппировкаДетальныеЗаписи = ДобавитьЭлементСтруктуры(НастройкиКД, ВидРегистра + "_" + ИмяРегистра, Заголовок); + ГруппировкаДетальныеЗаписи = ДетальныеЗаписиПоРегистру(НастройкиКД, ВидРегистра + "_" + ИмяРегистра, Заголовок); Если СтруктураНумератора.Количество() > 0 Тогда @@ -929,7 +939,7 @@ ПользовательскийЗаголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Регистр расчета %1'"), ПредставлениеРегистра); - ГруппировкаДетальныеЗаписи = ДобавитьЭлементСтруктуры(НастройкиКД, ВидРегистра + "_" + ИмяРегистра, + ГруппировкаДетальныеЗаписи = ДетальныеЗаписиПоРегистру(НастройкиКД, ВидРегистра + "_" + ИмяРегистра, ПользовательскийЗаголовок); Если СтруктураНумератора.Количество() > 0 Тогда @@ -1019,7 +1029,7 @@ ПользовательскийЗаголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Регистр бухгалтерии %1'"), ПредставлениеРегистра); - ГруппировкаДетальныеЗаписи = ДобавитьЭлементСтруктуры(НастройкиКД, + ГруппировкаДетальныеЗаписи = ДетальныеЗаписиПоРегистру(НастройкиКД, ВидРегистра + "_" + ИмяРегистра, ПользовательскийЗаголовок); Если СтруктураСтандартныхРеквизитов.Количество() > 0 Тогда @@ -1162,10 +1172,11 @@ // НаборДанных - НаборДанныхОбъединениеСхемыКомпоновкиДанных, // - НаборДанныхЗапросСхемыКомпоновкиДанных, // - НаборДанныхОбъектСхемыКомпоновкиДанных, -// - Неопределено - -// Поле - Строка - -// Заголовок - Строка - -// ПутьКДанным - Неопределено, Строка - +// - Неопределено +// Поле - Строка +// Заголовок - Строка +// ПутьКДанным - Неопределено +// - Строка // // Возвращаемое значение: // ПолеНабораДанныхСхемыКомпоновкиДанных, ПапкаПолейНабораДанныхСхемыКомпоновкиДанных - Описание @@ -1273,10 +1284,9 @@ КонецПроцедуры -Функция ДобавитьЭлементСтруктуры(НастройкиКД, ИмяГруппировки, ПользовательскийЗаголовок) +Функция ДетальныеЗаписиПоРегистру(НастройкиКД, ИмяГруппировки, ПользовательскийЗаголовок) ГруппировкаПоРегистру = НастройкиКД.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных")); - ГруппировкаПоРегистру.Имя = ИмяГруппировки; ГруппировкаПоРегистру.ПредставлениеПользовательскойНастройки = ПользовательскийЗаголовок; ГруппировкаПоРегистру.Использование = Истина; @@ -1286,18 +1296,17 @@ СкрытьОтборВТаблицеДвижений(ГруппировкаПоРегистру); - ПолеГруппировкиРегистр = ГруппировкаПоРегистру.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных")); + ПолеГруппировкиПоРегистру = ГруппировкаПоРегистру.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных")); + ПолеГруппировкиПоРегистру.Использование = Истина; + ПолеГруппировкиПоРегистру.Поле = Новый ПолеКомпоновкиДанных("ИмяРегистра"); + ПолеГруппировкиПоРегистру.ТипГруппировки = ТипГруппировкиКомпоновкиДанных.Элементы; + ПолеГруппировкиПоРегистру.ТипДополнения = ТипДополненияПериодаКомпоновкиДанных.БезДополнения; - ПолеГруппировкиРегистр.Использование = Истина; - ПолеГруппировкиРегистр.Поле = Новый ПолеКомпоновкиДанных("ИмяРегистра"); - ПолеГруппировкиРегистр.ТипГруппировки = ТипГруппировкиКомпоновкиДанных.Элементы; - ПолеГруппировкиРегистр.ТипДополнения = ТипДополненияПериодаКомпоновкиДанных.БезДополнения; + ДетальныеЗаписиПоРегистру = ГруппировкаПоРегистру.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных")); + ДетальныеЗаписиПоРегистру.Порядок.Элементы.Добавить(Тип("АвтоЭлементПорядкаКомпоновкиДанных")); + ДетальныеЗаписиПоРегистру.Использование = Истина; - ДетальныеЗаписи = ГруппировкаПоРегистру.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных")); - ДетальныеЗаписи.Порядок.Элементы.Добавить(Тип("АвтоЭлементПорядкаКомпоновкиДанных")); - ДетальныеЗаписи.Использование = Истина; - - Возврат ДетальныеЗаписи; + Возврат ДетальныеЗаписиПоРегистру; КонецФункции @@ -1414,14 +1423,13 @@ ЗаполнитьПримечания(Настройки); - ПолноеИмяРегистра = Неопределено; + ПолноеИмяРегистра = Неопределено; Для НомерСтроки = 1 По ДокументРезультат.ВысотаТаблицы Цикл Для НомерКолонки = 1 По 2 Цикл // поиск заголовка таблицы в первых двух колонках - ИмяОбласти = "R" + Формат(НомерСтроки, "ЧГ=0") + "C" + Формат(НомерКолонки, "ЧГ=0"); - Область = ДокументРезультат.Область(ИмяОбласти); + Область = ДокументРезультат.Область(НомерСтроки, НомерКолонки); СвойстваРегистра = СвойстваРегистра(Область.Текст); Если СвойстваРегистра = Неопределено Тогда @@ -1444,8 +1452,7 @@ Прервать; КонецЦикла; - ИмяОбластиНумератора = "R" + Формат(НомерСтроки, "ЧГ=0") + "C1"; - ОбластьНумератора = ДокументРезультат.Область(ИмяОбластиНумератора); + ОбластьНумератора = ДокументРезультат.Область(НомерСтроки, 1); Если Не ЭтоЧисло(ОбластьНумератора.Текст) Тогда @@ -1460,7 +1467,9 @@ ОбластьНумератора.Отступ = 0; ОбластьНумератора.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Лево; - Если ПолноеИмяРегистра = Неопределено Тогда + Если ПолноеИмяРегистра = Неопределено + Или Примечания = Неопределено Тогда + Продолжить; КонецЕсли; @@ -1688,21 +1697,21 @@ // регистратором которого является документ-владелец. // // Возвращаемое значение: -// ТаблицаЗначений - где: -// * Приоритет - Число - -// * ПолноеИмяРегистра - Строка - -// * ИмяГруппировки - Строка - -// * ИмяРегистра - Строка - -// * ПредставлениеРегистра - Строка - -// * ВидРегистра - Строка - -// * ВидРегистраНакопления - Строка - -// * ПредставлениеВидаРегистра - Строка - -// * ПериодичностьРегистраРасчета - Строка - -// * ПериодичностьРегистраСведений - Строка - -// * РежимЗаписиРегистраСведений - Строка - -// * ИмяПоляРегистратора - Строка - -// * КоличествоЗаписей - Число - -// * ЗаголовокТаблицы - Строка - +// ТаблицаЗначений: +// * Приоритет - Число +// * ПолноеИмяРегистра - Строка +// * ИмяГруппировки - Строка +// * ИмяРегистра - Строка +// * ПредставлениеРегистра - Строка +// * ВидРегистра - Строка +// * ВидРегистраНакопления - Строка +// * ПредставлениеВидаРегистра - Строка +// * ПериодичностьРегистраРасчета - Строка +// * ПериодичностьРегистраСведений - Строка +// * РежимЗаписиРегистраСведений - Строка +// * ИмяПоляРегистратора - Строка +// * КоличествоЗаписей - Число +// * ЗаголовокТаблицы - Строка // Функция ПалитраСвойствРегистров() @@ -1737,7 +1746,7 @@ Процедура ЗаполнитьПримечания(Настройки) - Если КлючТекущегоВарианта <> "Дополнительный" Тогда + Если КлючРодительскогоВарианта <> "Дополнительный" Тогда Возврат; КонецЕсли; @@ -1745,36 +1754,36 @@ Для Каждого СвойстваРегистра Из СвойстваРегистров Цикл - ВыбранныеГруппыПолей = Новый Массив; + ГруппыВыбранныхПолей = Новый Массив; Группировки = Настройки.Структура; - НайтиГруппировкуРекурсивно(Группировки, ВыбранныеГруппыПолей, СвойстваРегистра.ИмяГруппировки); + НайтиГруппыВыбранныхПолей(Группировки, ГруппыВыбранныхПолей, СвойстваРегистра.ИмяГруппировки); ПолеНумератора = Новый ПолеКомпоновкиДанных("Нумератор"); - ЭтажностьСтроки = ЭтажностьСтроки(ПолеНумератора, ВыбранныеГруппыПолей); + ЭтажностьСтроки = ЭтажностьСтроки(ПолеНумератора, ГруппыВыбранныхПолей); Для Индекс = 0 По ЭтажностьСтроки - 1 Цикл ТекстПримечания = ""; - Для Каждого ВыбраннаяГруппа Из ВыбранныеГруппыПолей Цикл - Если ВыбраннаяГруппа.Поле = ПолеНумератора Тогда + Для Каждого ГруппаПолей Из ГруппыВыбранныхПолей Цикл + Если ГруппаПолей.Поле = ПолеНумератора Тогда Продолжить; КонецЕсли; Заголовок = ""; - Если ВыбраннаяГруппа.Заголовок = НСтр("ru = 'Стандартные реквизиты'") Тогда + Если ГруппаПолей.Заголовок = НСтр("ru = 'Стандартные реквизиты'") Тогда Заголовок = НСтр("ru = 'Стандартный реквизит'"); - ИначеЕсли ВыбраннаяГруппа.Заголовок = НСтр("ru = 'Измерения'") Тогда + ИначеЕсли ГруппаПолей.Заголовок = НСтр("ru = 'Измерения'") Тогда Заголовок = НСтр("ru = 'Измерение'"); - ИначеЕсли ВыбраннаяГруппа.Заголовок = НСтр("ru = 'Ресурсы'") Тогда + ИначеЕсли ГруппаПолей.Заголовок = НСтр("ru = 'Ресурсы'") Тогда Заголовок = НСтр("ru = 'Ресурс'"); - ИначеЕсли ВыбраннаяГруппа.Заголовок = НСтр("ru = 'Реквизиты'") Тогда + ИначеЕсли ГруппаПолей.Заголовок = НСтр("ru = 'Реквизиты'") Тогда Заголовок = НСтр("ru = 'Реквизит'"); - ИначеЕсли ВыбраннаяГруппа.Заголовок = НСтр("ru = 'Данные расчета'") Тогда + ИначеЕсли ГруппаПолей.Заголовок = НСтр("ru = 'Данные расчета'") Тогда Заголовок = НСтр("ru = 'Данные расчета'"); КонецЕсли; - Элементы = ВыбраннаяГруппа.Элементы; // КоллекцияВыбранныхПолейКомпоновкиДанных + Элементы = ГруппаПолей.Элементы; // КоллекцияВыбранныхПолейКомпоновкиДанных Если Индекс <= Элементы.Количество() - 1 Тогда ВыбранноеПоле = Элементы[Индекс]; // ВыбранноеПолеКомпоновкиДанных @@ -1806,11 +1815,11 @@ // для нумерованных строк вертикального варианта отчета. // // Возвращаемое значение: -// ТаблицаЗначений - где: -// * ПолноеИмяРегистра - Строка - -// * Примечание - Строка - -// * Этаж - Строка - -// * Этажность - Число - +// ТаблицаЗначений: +// * ПолноеИмяРегистра - Строка +// * Примечание - Строка +// * Этаж - Строка +// * Этажность - Число // Функция ПалитраСвойствПримечаний() @@ -1832,7 +1841,6 @@ ЭтажностьСтроки = 0; Для Каждого ВыбраннаяГруппа Из МассивВыбранныхПолей Цикл - Если ВыбраннаяГруппа.Поле = ПолеНумератора Тогда Элементы = ВыбраннаяГруппа.Элементы; Для Каждого Элемент Из Элементы Цикл @@ -1841,7 +1849,6 @@ КонецЕсли; КонецЦикла; КонецЕсли; - КонецЦикла; Возврат ЭтажностьСтроки; @@ -1852,16 +1859,74 @@ #Область Прочее +Функция КлючРодительскогоВарианта(Контекст, КлючВарианта, Настройки) + + КлючРодительскогоВарианта = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры( + Настройки.ДополнительныеСвойства, "КлючРодительскогоВарианта"); + + Если КлючРодительскогоВарианта <> Неопределено Тогда + Возврат КлючРодительскогоВарианта; + КонецЕсли; + + КлючПредопределенногоВарианта = КлючПредопределенногоВарианта(КлючВарианта); + + ВариантОтчета = Неопределено; + Если ТипЗнч(Контекст) = Тип("ФормаКлиентскогоПриложения") Тогда + ВариантОтчета = Контекст.НастройкиОтчета.ВариантСсылка; + ИначеЕсли ТипЗнч(Контекст) = Тип("Структура") Тогда + ВариантОтчета = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Контекст, "СсылкаВарианта"); + КонецЕсли; + + Если Не ЗначениеЗаполнено(ВариантОтчета) Тогда + Возврат КлючПредопределенногоВарианта; + КонецЕсли; + + РодительВариантаОтчета = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ВариантОтчета, "Родитель"); + + Если Не ЗначениеЗаполнено(РодительВариантаОтчета) Тогда + Возврат КлючПредопределенногоВарианта; + КонецЕсли; + + Возврат ОбщегоНазначения.ЗначениеРеквизитаОбъекта(РодительВариантаОтчета, "КлючВарианта"); + +КонецФункции + +Функция КлючПредопределенногоВарианта(КлючВарианта) + + КлючПредопределенногоВарианта = Неопределено; + + ВариантыНастроек = СхемаКомпоновкиДанных.ВариантыНастроек; + + Для Каждого ВариантНастроек Из ВариантыНастроек Цикл + + Если ВариантНастроек.Имя = КлючВарианта Тогда + КлючПредопределенногоВарианта = КлючВарианта; + Прервать; + КонецЕсли; + + КонецЦикла; + + Если КлючПредопределенногоВарианта <> Неопределено Тогда + Возврат КлючПредопределенногоВарианта; + КонецЕсли; + + Возврат ВариантыНастроек[0].Имя; + +КонецФункции + // Возвращает коллекцию регистров, на которые текущий пользователь имеет право. // // Параметры: -// Регистратор - ДокументСсылка - -// Движения - КоллекцияДвижений, Неопределено - +// Регистратор - ДокументСсылка +// Движения - КоллекцияДвижений +// - Неопределено // // Возвращаемое значение: -// Соответствие - где: -// * Ключ - ОбъектМетаданныхРегистрСведений, ОбъектМетаданныхРегистрНакопления, ОбъектМетаданныхРегистрРасчета - -// * Значение - Строка - +// Соответствие: +// * Ключ - ОбъектМетаданныхРегистрСведений +// - ОбъектМетаданныхРегистрНакопления +// - ОбъектМетаданныхРегистрРасчета +// * Значение - Строка // Функция РегистрыСДвижениямиДокумента(Регистратор, Движения = Неопределено) @@ -2122,35 +2187,42 @@ КонецФункции -// Описание -// // Параметры: -// КоллекцияЭлементов - КоллекцияЭлементовСтруктурыНастроекКомпоновкиДанных - -// - КоллекцияЭлементовСтруктурыТаблицыКомпоновкиДанных - -// - КоллекцияЭлементовСтруктурыДиаграммыКомпоновкиДанных - -// ВыбранныеПоляГруппировок - Массив из ВыбранноеПолеКомпоновкиДанных - -// ЗначениеПоиска - Строка - +// ЭлементыСтруктуры - КоллекцияЭлементовСтруктурыНастроекКомпоновкиДанных +// - КоллекцияЭлементовСтруктурыТаблицыКомпоновкиДанных +// - КоллекцияЭлементовСтруктурыДиаграммыКомпоновкиДанных +// ВыбранныеПоляГруппировок - Массив из ВыбранноеПолеКомпоновкиДанных +// ЗначениеПоиска - Строка // -Процедура НайтиГруппировкуРекурсивно(КоллекцияЭлементов, ВыбранныеПоляГруппировок, ЗначениеПоиска) +Процедура НайтиГруппыВыбранныхПолей(ЭлементыСтруктуры, ГруппыВыбранныхПолей, ЗначениеПоиска) - Для каждого Элемент Из КоллекцияЭлементов Цикл + Для Каждого Элемент Из ЭлементыСтруктуры Цикл Если ТипЗнч(Элемент) = Тип("ГруппировкаКомпоновкиДанных") Тогда Если Элемент.Имя = ЗначениеПоиска Тогда - Если Элемент.Структура.Количество() > 0 Тогда - ДетальныеЗаписи = Элемент.Структура[0]; // ГруппировкаКомпоновкиДанных - ВыбранныеПоля = ДетальныеЗаписи.Выбор.Элементы; - Для Каждого ВыбранноеПоле Из ВыбранныеПоля Цикл - ВыбранныеПоляГруппировок.Добавить(ВыбранноеПоле); - КонецЦикла; - КонецЕсли; + НайтиГруппыВыбранныхПолейРегистра(Элемент.Структура, ГруппыВыбранныхПолей); КонецЕсли; - НайтиГруппировкуРекурсивно(Элемент.Структура, ВыбранныеПоляГруппировок, ЗначениеПоиска); - ИначеЕсли ТипЗнч(Элемент) = Тип("ТаблицаКомпоновкиДанных") Тогда - НайтиГруппировкуРекурсивно(Элемент.Строки, ВыбранныеПоляГруппировок, ЗначениеПоиска); - НайтиГруппировкуРекурсивно(Элемент.Колонки, ВыбранныеПоляГруппировок, ЗначениеПоиска); - ИначеЕсли ТипЗнч(Элемент) = Тип("ДиаграммаКомпоновкиДанных") Тогда - НайтиГруппировкуРекурсивно(Элемент.Серии, ВыбранныеПоляГруппировок, ЗначениеПоиска); - НайтиГруппировкуРекурсивно(Элемент.Точки, ВыбранныеПоляГруппировок, ЗначениеПоиска); + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +// Параметры: +// ЭлементыСтруктуры - КоллекцияЭлементовСтруктурыНастроекКомпоновкиДанных +// - КоллекцияЭлементовСтруктурыТаблицыКомпоновкиДанных +// - КоллекцияЭлементовСтруктурыДиаграммыКомпоновкиДанных +// ВыбранныеПоляГруппировок - Массив из ВыбранноеПолеКомпоновкиДанных +// +Процедура НайтиГруппыВыбранныхПолейРегистра(ЭлементыСтруктуры, ГруппыВыбранныхПолей) + + Для Каждого ЭлементСтруктуры Из ЭлементыСтруктуры Цикл + Если ТипЗнч(ЭлементСтруктуры) = Тип("ГруппировкаКомпоновкиДанных") Тогда + Для Каждого ЭлементВыбора Из ЭлементСтруктуры.Выбор.Элементы Цикл + Если ТипЗнч(ЭлементВыбора) = Тип("ГруппаВыбранныхПолейКомпоновкиДанных") Тогда + ГруппыВыбранныхПолей.Добавить(ЭлементВыбора); + КонецЕсли; + КонецЦикла; + + НайтиГруппыВыбранныхПолейРегистра(ЭлементСтруктуры.Структура, ГруппыВыбранныхПолей); КонецЕсли; КонецЦикла; @@ -2167,7 +2239,8 @@ Если ТипЗнч(Элемент) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда ИмяПараметра = Строка(Элемент.Параметр); Если ИмяПараметра = "ДокументВладелец" Тогда - НайденныйПараметр = Элемент; + НайденныйПараметр = Элемент; + Прервать; КонецЕсли; КонецЕсли; КонецЦикла; @@ -2198,6 +2271,7 @@ КонецЕсли; ЗаголовокТаблицы = Лев(ТекстОбласти, ПозицияКоличества - 2); + Возврат СвойстваРегистров.Найти(ЗаголовокТаблицы, "ЗаголовокТаблицы"); КонецФункции diff --git a/SSL/src/Reports/ДвиженияДокумента/Templates/ПустаяСхемаКомпоновкиДанных/Template.dcs b/SSL/src/Reports/ДвиженияДокумента/Templates/ПустаяСхемаКомпоновкиДанных/Template.dcs index 796e02306..9a97f8566 100644 --- a/SSL/src/Reports/ДвиженияДокумента/Templates/ПустаяСхемаКомпоновкиДанных/Template.dcs +++ b/SSL/src/Reports/ДвиженияДокумента/Templates/ПустаяСхемаКомпоновкиДанных/Template.dcs @@ -19,7 +19,7 @@ d4p1:DocumentRef
    - true + false false true Always @@ -119,19 +119,6 @@ - - false - ДоступностьВариантаДляРассылки - true - Inaccessible - 75ac16ba-c451-4a6d-8e82-c39746a6aa8a - - - ru - Этот параметр служебный. Изменять его не рекомендуется. - - - diff --git a/SSL/src/Reports/ИспользуемыеВнешниеРесурсы/ManagerModule.bsl b/SSL/src/Reports/ИспользуемыеВнешниеРесурсы/ManagerModule.bsl index bc36536ee..f5da13b24 100644 --- a/SSL/src/Reports/ИспользуемыеВнешниеРесурсы/ManagerModule.bsl +++ b/SSL/src/Reports/ИспользуемыеВнешниеРесурсы/ManagerModule.bsl @@ -228,7 +228,7 @@ // Параметры: // ТабличныйДокумент - ТабличныйДокумент, в который будет выведено представление операций, // Макет - ТабличныйДокумент, полученный из макета отчета ПредставленияРазрешений, -// ОперацииАдминистрирования - ТаблицаЗначений, см. +// ОперацииАдминистрирования - ТаблицаЗначений - см. // Обработки.НастройкаРазрешенийНаИспользованиеВнешнихРесурсов.ОперацииАдминистрированияВЗапросах(). // Процедура СформироватьПредставлениеОпераций(ТабличныйДокумент, Знач Макет, Знач ОперацииАдминистрирования) @@ -364,11 +364,11 @@ Если ТипРазрешения = "FileSystemAccess" Тогда Если Разрешение.Path = "/temp" Тогда - ДополнениеРазрешения.Вставить("Path", НСтр("ru = 'Каталог временных файлов'")); + ДополнениеРазрешения.Вставить("Path", НСтр("ru = 'Папка временных файлов'")); КонецЕсли; Если Разрешение.Path = "/bin" Тогда - ДополнениеРазрешения.Вставить("Path", НСтр("ru = 'Каталог, в который установлен сервер 1С:Предприятия'")); + ДополнениеРазрешения.Вставить("Path", НСтр("ru = 'Папка, в которой установлен сервер 1С:Предприятия'")); КонецЕсли; КонецЕсли; diff --git a/SSL/src/Reports/ИспользуемыеВнешниеРесурсы/ObjectModule.bsl b/SSL/src/Reports/ИспользуемыеВнешниеРесурсы/ObjectModule.bsl index 573d822a6..40776b955 100644 --- a/SSL/src/Reports/ИспользуемыеВнешниеРесурсы/ObjectModule.bsl +++ b/SSL/src/Reports/ИспользуемыеВнешниеРесурсы/ObjectModule.bsl @@ -17,8 +17,10 @@ // Задать настройки формы отчета. // // Параметры: -// Форма - ФормаКлиентскогоПриложения, Неопределено - -// КлючВарианта - Строка, Неопределено - +// Форма - ФормаКлиентскогоПриложения +// - Неопределено +// КлючВарианта - Строка +// - Неопределено // Настройки - см. ОтчетыКлиентСервер.НастройкиОтчетаПоУмолчанию // Процедура ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки) Экспорт diff --git a/SSL/src/Reports/МестаИспользованияСсылок/ObjectModule.bsl b/SSL/src/Reports/МестаИспользованияСсылок/ObjectModule.bsl index 738b75f0d..0516c469f 100644 --- a/SSL/src/Reports/МестаИспользованияСсылок/ObjectModule.bsl +++ b/SSL/src/Reports/МестаИспользованияСсылок/ObjectModule.bsl @@ -17,8 +17,10 @@ // Задать настройки формы отчета. // // Параметры: -// Форма - ФормаКлиентскогоПриложения, Неопределено - -// КлючВарианта - Строка, Неопределено - +// Форма - ФормаКлиентскогоПриложения +// - Неопределено +// КлючВарианта - Строка +// - Неопределено // Настройки - см. ОтчетыКлиентСервер.НастройкиОтчетаПоУмолчанию // Процедура ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки) Экспорт diff --git a/SSL/src/Reports/ОбъемНенужныхФайлов/ObjectModule.bsl b/SSL/src/Reports/ОбъемНенужныхФайлов/ObjectModule.bsl index af99d51a9..1e6fcf4fa 100644 --- a/SSL/src/Reports/ОбъемНенужныхФайлов/ObjectModule.bsl +++ b/SSL/src/Reports/ОбъемНенужныхФайлов/ObjectModule.bsl @@ -68,6 +68,16 @@ #Область СлужебныеПроцедурыИФункции +// Параметры: +// ТаблицаНенужныхФайлов - ТаблицаЗначений: +// * ВладелецФайла - ЛюбаяСсылка +// * ОбъемНенужныхФайлов - Число +// НастройкаОчистки - СтрокаТаблицыЗначений: +// * Действие - ПеречислениеСсылка.ВариантыОчисткиФайлов +// МассивИсключений - Неопределено +// - Массив +// ЭтоНастройкаДляЭлементаСправочника - Булево +// Процедура ПолучитьОбъемНенужныхФайлов(ТаблицаНенужныхФайлов, НастройкаОчистки, МассивИсключений = Неопределено, ЭтоНастройкаДляЭлементаСправочника = Ложь) Если НастройкаОчистки.Действие = Перечисления.ВариантыОчисткиФайлов.НеОчищать Тогда diff --git a/SSL/src/Reports/ПраваДоступа/Forms/ФормаОтчета/Module.bsl b/SSL/src/Reports/ПраваДоступа/Forms/ФормаОтчета/Module.bsl index f002d89b2..04a0649b0 100644 --- a/SSL/src/Reports/ПраваДоступа/Forms/ФормаОтчета/Module.bsl +++ b/SSL/src/Reports/ПраваДоступа/Forms/ФормаОтчета/Module.bsl @@ -1838,7 +1838,7 @@ КонецЕсли; ТипыЗначенийВидовДоступа = - УправлениеДоступомСлужебныйПовтИсп.ТипыЗначенийВидовДоступаИВладельцевНастроекПрав().Получить(); + УправлениеДоступомСлужебныйПовтИсп.ТипыЗначенийВидовДоступаИВладельцевНастроекПрав().Получить(); // ТаблицаЗначений Запрос = Новый Запрос; Запрос.УстановитьПараметр("ПостоянныеВидыОграничений", diff --git a/SSL/src/Reports/ПраваДоступа/ManagerModule.bsl b/SSL/src/Reports/ПраваДоступа/ManagerModule.bsl index 58571c26e..b366f0be8 100644 --- a/SSL/src/Reports/ПраваДоступа/ManagerModule.bsl +++ b/SSL/src/Reports/ПраваДоступа/ManagerModule.bsl @@ -16,6 +16,10 @@ // См. ВариантыОтчетовПереопределяемый.НастроитьВариантыОтчетов. // +// Параметры: +// Настройки - см. ВариантыОтчетов.КоллекцияПредопределенныхВариантовОтчетов +// НастройкиОтчета - см. ВариантыОтчетов.ОписаниеВарианта +// Процедура НастроитьВариантыОтчета(Настройки, НастройкиОтчета) Экспорт НастройкиОтчета.Включен = Ложь; КонецПроцедуры diff --git a/SSL/src/Reports/ПрогрессОбновленияОбластейДанных/ObjectModule.bsl b/SSL/src/Reports/ПрогрессОбновленияОбластейДанных/ObjectModule.bsl new file mode 100644 index 000000000..39460bd4c --- /dev/null +++ b/SSL/src/Reports/ПрогрессОбновленияОбластейДанных/ObjectModule.bsl @@ -0,0 +1,71 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2020, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ОбработчикиСобытий + +Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) + + ИнформацияПоОбновлению = ИнформацияПоОбновлению(); + + СтандартнаяОбработка = Ложь; + НастройкиКД = КомпоновщикНастроек.ПолучитьНастройки(); + ВнешниеНаборыДанных = Новый Структура("СводнаяИнформация, ОбластиСПроблемами", + ИнформацияПоОбновлению.СводнаяИнформация, ИнформацияПоОбновлению.ИнформацияПоОбработчикам); + + КомпоновщикМакетаКД = Новый КомпоновщикМакетаКомпоновкиДанных; + МакетКД = КомпоновщикМакетаКД.Выполнить(СхемаКомпоновкиДанных, НастройкиКД, ДанныеРасшифровки); + + ПроцессорКД = Новый ПроцессорКомпоновкиДанных; + ПроцессорКД.Инициализировать(МакетКД, ВнешниеНаборыДанных, ДанныеРасшифровки); + + ПроцессорВыводаРезультатаКД = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; + ПроцессорВыводаРезультатаКД.УстановитьДокумент(ДокументРезультат); + ПроцессорВыводаРезультатаКД.Вывести(ПроцессорКД); + + ДокументРезультат.ПоказатьУровеньГруппировокСтрок(2); + + КомпоновщикНастроек.ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("ОтчетПустой", ИнформацияПоОбновлению.СводнаяИнформация.Количество() = 0); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Функция ИнформацияПоОбновлению() + + ПрогрессОбновления = ОбновлениеИнформационнойБазы.ПрогрессОбновленияОбластейДанных("Отложенное"); + СводнаяИнформация = Новый ТаблицаЗначений; + СводнаяИнформация.Колонки.Добавить("Обновлено"); + СводнаяИнформация.Колонки.Добавить("Выполняется"); + СводнаяИнформация.Колонки.Добавить("Ожидают"); + СводнаяИнформация.Колонки.Добавить("Проблемы"); + + Строка = СводнаяИнформация.Добавить(); + ЗаполнитьЗначенияСвойств(Строка, ПрогрессОбновления); + + Отбор = Новый Структура; + Отбор.Вставить("РежимВыполнения", "Отложенно"); + Отбор.Вставить("Статус", "Ошибка"); + ИнформацияПоОбработчикам = ОбновлениеИнформационнойБазы.ОбработчикиОбновления(Отбор); + + Результат = Новый Структура; + Результат.Вставить("СводнаяИнформация", СводнаяИнформация); + Результат.Вставить("ИнформацияПоОбработчикам", ИнформацияПоОбработчикам); + + Возврат Результат; + +КонецФункции + +#КонецОбласти + +#Иначе +ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'"); +#КонецЕсли \ No newline at end of file diff --git a/SSL/src/Reports/ПрогрессОбновленияОбластейДанных/Templates/ОсновнаяСхемаКомпоновкиДанных/Template.dcs b/SSL/src/Reports/ПрогрессОбновленияОбластейДанных/Templates/ОсновнаяСхемаКомпоновкиДанных/Template.dcs new file mode 100644 index 000000000..4972de077 --- /dev/null +++ b/SSL/src/Reports/ПрогрессОбновленияОбластейДанных/Templates/ОсновнаяСхемаКомпоновкиДанных/Template.dcs @@ -0,0 +1,329 @@ + + + + ИсточникДанных1 + Local + + + СводнаяИнформация + + Обновлено + Обновлено + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Обновлено</v8:content> + </v8:item> + + + + Выполняется + Выполняется + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Выполняется</v8:content> + </v8:item> + + + + Ожидают + Ожидают + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Ожидают</v8:content> + </v8:item> + + + + Проблемы + Проблемы + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Проблемы</v8:content> + </v8:item> + + + ИсточникДанных1 + СводнаяИнформация + + + ОбластиСПроблемами + + ОбластьДанных + ОбластьДанных + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Область данных</v8:content> + </v8:item> + + + + ИмяОбработчика + ИмяОбработчика + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Обработчик</v8:content> + </v8:item> + + + + ИнформацияОбОшибке + ИнформацияОбОшибке + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Информация об ошибке</v8:content> + </v8:item> + + + + ИмяБиблиотеки + ИмяБиблиотеки + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Имя библиотеки</v8:content> + </v8:item> + + + + Статус + Статус + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Статус</v8:content> + </v8:item> + + + + ДлительностьОбработки + ДлительностьОбработки + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Длительность обработки</v8:content> + </v8:item> + + + + Версия + Версия + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Версия</v8:content> + </v8:item> + + + + РежимВыполнения + РежимВыполнения + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Режим выполнения</v8:content> + </v8:item> + + + ИсточникДанных1 + ОбластиСПроблемами + + + Количество + 1 + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Количество</v8:content> + </v8:item> + + + + Выполняется + Максимум(Выполняется) + + + Обновлено + Максимум(Обновлено) + + + Ожидают + Максимум(Ожидают) + + + Проблемы + Максимум(Проблемы) + + + Количество + Сумма(Количество) + + + Основной + + + ru + Прогресс обновления областей данных + + + + + + false + ТипДиаграммы + Pie + + + + + + Выполняется + + + Обновлено + + + Ожидают + + + Проблемы + + + + + ТипДиаграммы + Pie + + ТипДиаграммы.ВидПодписей + SeriesPercent + + + + Заголовок + + + ru + Сводная информация по областям данных + + + + + + + + + + ОбластьДанных + Items + None + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + + + + + + ОбластьДанных + + + Количество + + + + + + + ОбластьДанных + + + + + + ГоризонтальноеПоложение + Left + + + + + + + + ИмяБиблиотеки + Items + None + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + + + + + + + Количество + + + + + + ИмяОбработчика + Items + None + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + ИнформацияОбОшибке + Items + None + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + + + + + + + + + + + + ИмяБиблиотеки + + + ИмяОбработчика + + + ИнформацияОбОшибке + + + ОбластьДанных + + + + + Заголовок + + + ru + Обработчики, завершенные с ошибкой + + + + + + + + \ No newline at end of file diff --git a/SSL/src/Reports/ПрогрессОбновленияОбластейДанных/ПрогрессОбновленияОбластейДанных.mdo b/SSL/src/Reports/ПрогрессОбновленияОбластейДанных/ПрогрессОбновленияОбластейДанных.mdo new file mode 100644 index 000000000..ce3695e72 --- /dev/null +++ b/SSL/src/Reports/ПрогрессОбновленияОбластейДанных/ПрогрессОбновленияОбластейДанных.mdo @@ -0,0 +1,22 @@ + + + + + + + ПрогрессОбновленияОбластейДанных + + ru + Прогресс обновления областей данных + + true + Report.ПрогрессОбновленияОбластейДанных.Template.ОсновнаяСхемаКомпоновкиДанных + + ОсновнаяСхемаКомпоновкиДанных + + ru + Основная схема компоновки данных + + DataCompositionSchema + + diff --git a/SSL/src/Reports/ПрогрессОтложенногоОбновления/ObjectModule.bsl b/SSL/src/Reports/ПрогрессОтложенногоОбновления/ObjectModule.bsl index 9639fc493..077531657 100644 --- a/SSL/src/Reports/ПрогрессОтложенногоОбновления/ObjectModule.bsl +++ b/SSL/src/Reports/ПрогрессОтложенногоОбновления/ObjectModule.bsl @@ -129,10 +129,11 @@ КонецЦикла; КонецЕсли; - ДанныеПоОбработчикам = ОбработчикиОбновления(); - Для Каждого ДанныеПоОбработчику Из ДанныеПоОбработчикам Цикл - ИмяОбработчика = ДанныеПоОбработчику.Ключ; - Для Каждого ДанныеПоОбъекту Из ДанныеПоОбработчику.Значение.ДанныеОбработчика Цикл + Обработчики = ОбновлениеИнформационнойБазыСлужебный.ОбработчикиДляОтложеннойРегистрацииДанных(); + Для Каждого Обработчик Из Обработчики Цикл + ДанныеПоОбработчику = Обработчик.ОбрабатываемыеДанные.Получить(); + ИмяОбработчика = Обработчик.ИмяОбработчика; + Для Каждого ДанныеПоОбъекту Из ДанныеПоОбработчику.ДанныеОбработчика Цикл ПолноеИмяОбъекта = ДанныеПоОбъекту.Ключ; Очередь = ДанныеПоОбъекту.Значение.Очередь; Количество = ДанныеПоОбъекту.Значение.Количество; @@ -201,15 +202,6 @@ КонецФункции -Функция ОбработчикиОбновления() - - СведенияОбОбновлении = ОбновлениеИнформационнойБазыСлужебный.СведенияОбОбновленииИнформационнойБазы(); - ОбрабатываемыеДанные = СведенияОбОбновлении.ОбрабатываемыеДанные; - - Возврат ОбрабатываемыеДанные; - -КонецФункции - #КонецОбласти #Иначе diff --git a/SSL/src/Reports/РезультатыПроверкиУчета/Forms/АвтоисправлениеПроблемы/Module.bsl b/SSL/src/Reports/РезультатыПроверкиУчета/Forms/АвтоисправлениеПроблемы/Module.bsl index 894f089ee..4aa02505c 100644 --- a/SSL/src/Reports/РезультатыПроверкиУчета/Forms/АвтоисправлениеПроблемы/Module.bsl +++ b/SSL/src/Reports/РезультатыПроверкиУчета/Forms/АвтоисправлениеПроблемы/Module.bsl @@ -106,17 +106,8 @@ Процедура ВосстановитьОтсутствующиеПредопределенныеЭлементы(ИдентификаторПроверки) // 1. Пытаемся найти имеющийся элемент, похожий на предопределенный и привязать его. - Запрос = Новый Запрос; - Запрос.УстановитьПараметр("Идентификатор", ИдентификаторПроверки); - Запрос.Текст = - "ВЫБРАТЬ - | ПравилаПроверкиУчета.Ссылка КАК Ссылка - |ИЗ - | Справочник.ПравилаПроверкиУчета КАК ПравилаПроверкиУчета - |ГДЕ - | ПравилаПроверкиУчета.Идентификатор = &Идентификатор"; - Результат = Запрос.Выполнить().Выгрузить(); - ПравилоПроверки = Результат[0].Ссылка; + Результат = ПравилоПроверкиПоИдентификатору(ИдентификаторПроверки); + ПравилоПроверки = Результат.Ссылка; Запрос = Новый Запрос; Запрос.УстановитьПараметр("ПравилоПроверки", ПравилоПроверки); @@ -194,10 +185,12 @@ Для Каждого Свойство Из Свойства Цикл Запрос.УстановитьПараметр("Наименование", Свойство.Наименование); Запрос.УстановитьПараметр("Родитель", Свойство.Родитель); - Если Запрос.Выполнить().Пустой() Тогда + РезультатЗапроса = Запрос.Выполнить(); + Если РезультатЗапроса.Пустой() Тогда Продолжить; КонецЕсли; - Ссылка = Запрос.Выполнить().Выгрузить()[0].Ссылка; + РезультатЗапроса = РезультатЗапроса.Выгрузить().ВыгрузитьКолонку("Ссылка");// Массив из ЛюбаяСсылка + Ссылка = РезультатЗапроса[0]; Объект = Ссылка.ПолучитьОбъект(); Объект.ИмяПредопределенныхДанных = Свойство.ИмяПредопределенныхДанных; ОбновлениеИнформационнойБазы.ЗаписатьДанные(Объект); @@ -210,6 +203,34 @@ КонецПроцедуры +// Возвращаемое значение: +// Структура: +// * Ссылка - СправочникСсылка.ПравилаПроверкиУчета +// +&НаСервереБезКонтекста +Функция ПравилоПроверкиПоИдентификатору( ИдентификаторПроверки) + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("Идентификатор", ИдентификаторПроверки); + Запрос.Текст = + "ВЫБРАТЬ + | ПравилаПроверкиУчета.Ссылка КАК Ссылка + |ИЗ + | Справочник.ПравилаПроверкиУчета КАК ПравилаПроверкиУчета + |ГДЕ + | ПравилаПроверкиУчета.Идентификатор = &Идентификатор"; + Результат = Запрос.Выполнить().Выбрать(); + Результат.Следующий(); + Возврат Новый Структура("Ссылка", Результат.Ссылка); +КонецФункции + +// Параметры: +// ОбъектМетаданных - ОбъектМетаданных +// ПредопределенныеВДанных - ТаблицаЗначений: +// * Ссылка - ЛюбаяСсылка +// Отсутствующие - Массив из ЛюбаяСсылка +// Возвращаемое значение: +// Массив +// &НаСервереБезКонтекста Функция СвойстваОтсутствующихПредопределенных(ОбъектМетаданных, ПредопределенныеВДанных, Отсутствующие) Свойства = Новый Массив; diff --git a/SSL/src/Reports/РезультатыПроверкиУчета/ManagerModule.bsl b/SSL/src/Reports/РезультатыПроверкиУчета/ManagerModule.bsl index 9bf69a802..739398a09 100644 --- a/SSL/src/Reports/РезультатыПроверкиУчета/ManagerModule.bsl +++ b/SSL/src/Reports/РезультатыПроверкиУчета/ManagerModule.bsl @@ -37,6 +37,12 @@ КонецПроцедуры // См. ВариантыОтчетовПереопределяемый.ПередДобавлениемКомандОтчетов. +// +// Параметры: +// КомандыОтчетов - см. ВариантыОтчетовПереопределяемый.ПередДобавлениемКомандОтчетов.КомандыОтчетов +// НастройкиФормы - см. ВариантыОтчетовПереопределяемый.ПередДобавлениемКомандОтчетов.Параметры +// СтандартнаяОбработка - см. ВариантыОтчетовПереопределяемый.ПередДобавлениемКомандОтчетов.СтандартнаяОбработка +// Процедура ПередДобавлениемКомандОтчетов(КомандыОтчетов, НастройкиФормы, СтандартнаяОбработка) Экспорт Если Не ПравоДоступа("Просмотр", Метаданные.Отчеты.РезультатыПроверкиУчета) Тогда diff --git a/SSL/src/Reports/РезультатыПроверкиУчета/ObjectModule.bsl b/SSL/src/Reports/РезультатыПроверкиУчета/ObjectModule.bsl index 66ae6e0af..c7e2eb0c4 100644 --- a/SSL/src/Reports/РезультатыПроверкиУчета/ObjectModule.bsl +++ b/SSL/src/Reports/РезультатыПроверкиУчета/ObjectModule.bsl @@ -17,8 +17,10 @@ // Задать настройки формы отчета. // // Параметры: -// Форма - ФормаКлиентскогоПриложения, Неопределено - -// КлючВарианта - Строка, Неопределено - +// Форма - ФормаКлиентскогоПриложения +// - Неопределено +// КлючВарианта - Строка +// - Неопределено // Настройки - см. ОтчетыКлиентСервер.НастройкиОтчетаПоУмолчанию // Процедура ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки) Экспорт @@ -151,13 +153,16 @@ // По умолчанию не заполнен (это означает что компоновщик инициализирован на основании основной схемы). // Используется для оптимизации, чтобы переинициализировать компоновщик как можно реже. // Может не использоваться если переинициализация выполняется безусловно. -// КлючВарианта - Строка, Неопределено - +// КлючВарианта - Строка +// - Неопределено - // Имя предопределенного или уникальный идентификатор пользовательского варианта отчета. // Неопределено когда вызов для варианта расшифровки или без контекста. -// НовыеНастройкиКД - НастройкиКомпоновкиДанных, Неопределено - +// НовыеНастройкиКД - НастройкиКомпоновкиДанных +// - Неопределено - // Настройки варианта отчета, которые будут загружены в компоновщик настроек после его инициализации. // Неопределено когда настройки варианта не надо загружать (уже загружены ранее). -// НовыеПользовательскиеНастройкиКД - ПользовательскиеНастройкиКомпоновкиДанных, Неопределено - +// НовыеПользовательскиеНастройкиКД - ПользовательскиеНастройкиКомпоновкиДанных +// - Неопределено - // Пользовательские настройки, которые будут загружены в компоновщик настроек после его инициализации. // Неопределено когда пользовательские настройки не надо загружать (уже загружены ранее). // @@ -203,8 +208,9 @@ Продолжить; КонецЕсли; - Отбор.ПравоеЗначение.Добавить(Пользователи.ТекущийПользователь()); - Отбор.ПравоеЗначение.Добавить(Справочники.Пользователи.ПустаяСсылка()); + ПравоеЗначениеОтбора = Отбор.ПравоеЗначение;// СписокЗначений + ПравоеЗначениеОтбора.Добавить(Пользователи.ТекущийПользователь()); + ПравоеЗначениеОтбора.Добавить(Справочники.Пользователи.ПустаяСсылка()); Отбор.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ; Если Пользователи.ЭтоПолноправныйПользователь() Тогда Отбор.ИдентификаторПользовательскойНастройки = Новый УникальныйИдентификатор; @@ -320,7 +326,7 @@ ТипСмещенияТабличногоДокумента.ПоВертикали); ДокументРезультат.ФиксацияСверху = 0; - ДокументРезультат.ФиксацияСлева = 0; + ДокументРезультат.ФиксацияСлева = 0; Иначе @@ -496,36 +502,45 @@ КонецПроцедуры Функция ПодготовитьСписокПроверок(МассивПроверок) - СписокПроверок = Новый СписокЗначений; ПервыйЭлемент = МассивПроверок.Получить(0); Если Не ОбщегоНазначения.ЗначениеСсылочногоТипа(ПервыйЭлемент) Тогда СписокПроверок.ЗагрузитьЗначения(МассивПроверок); Иначе - ТекстЗапроса = - "ВЫБРАТЬ - | Таблица.Ссылка КАК Ссылка, - | ПРЕДСТАВЛЕНИЕ(Таблица.Ссылка) КАК ПредставлениеСсылки - |ИЗ - | &Таблица КАК Таблица - |ГДЕ - | Таблица.Ссылка В(&МассивСсылок)"; - - ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&Таблица", ПервыйЭлемент.Метаданные().ПолноеИмя()); - Запрос = Новый Запрос(ТекстЗапроса); - Запрос.УстановитьПараметр("МассивСсылок", МассивПроверок); - - РезультатЗапроса = Запрос.Выполнить().Выгрузить(); + РезультатЗапроса = СписокПроверок(МассивПроверок, ПервыйЭлемент); Для Каждого ЭлементРезультата Из РезультатЗапроса Цикл СписокПроверок.Добавить(ЭлементРезультата.Ссылка, ЭлементРезультата.ПредставлениеСсылки); КонецЦикла; - - Запрос = Неопределено; КонецЕсли; Возврат СписокПроверок; +КонецФункции + +// Параметры: +// МассивПроверок - Массив Из ЛюбаяСсылка +// ПервыйЭлемент - ЛюбаяСсылка +// Возвращаемое значение: +// ТаблицаЗначений: +// *Ссылка - ЛюбаяСсылка +// *ПредставлениеСсылки - Строка +// +Функция СписокПроверок(Знач МассивПроверок, ПервыйЭлемент) + ТекстЗапроса = + "ВЫБРАТЬ + | Таблица.Ссылка КАК Ссылка, + | ПРЕДСТАВЛЕНИЕ(Таблица.Ссылка) КАК ПредставлениеСсылки + |ИЗ + | &Таблица КАК Таблица + |ГДЕ + | Таблица.Ссылка В(&МассивСсылок)"; + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&Таблица", ПервыйЭлемент.Метаданные().ПолноеИмя()); + Запрос = Новый Запрос(ТекстЗапроса); + Запрос.УстановитьПараметр("МассивСсылок", МассивПроверок); + + РезультатЗапроса = Запрос.Выполнить().Выгрузить(); + Возврат РезультатЗапроса КонецФункции Процедура УстановитьПараметрыДанных(НастройкиКД, СтруктураПараметров) @@ -804,6 +819,12 @@ КонецФункции +// Параметры: +// ПервыйУзелКД - НастройкиКомпоновкиДанных +// ВторойУзелКД - НастройкиКомпоновкиДанных +// Возвращаемое значение: +// Булево +// Функция ВыбранныеПоляИдентичны(ПервыйУзелКД, ВторойУзелКД) ВыбранныеПоляПервогоУзла = ПервыйУзелКД.Выбор.Элементы; @@ -908,6 +929,12 @@ КонецФункции +// Параметры: +// ПерваяГруппировка - ГруппировкаТаблицыКомпоновкиДанных +// ВтораяГруппировка - ГруппировкаТаблицыКомпоновкиДанных +// Возвращаемое значение: +// Булево +// Функция ПоляГруппировокКомпоновкиИдентичны(ПерваяГруппировка, ВтораяГруппировка) ПерваяКоллекцияПолей = ПерваяГруппировка.ПоляГруппировки.Элементы; @@ -943,6 +970,12 @@ КонецФункции +// Параметры: +// ПервыеНастройкиКД - НастройкиКомпоновкиДанных +// ВторыеНастройкиКД - НастройкиКомпоновкиДанных +// Возвращаемое значение: +// Булево +// Функция ПользовательскиеПоляИдентичны(ПервыеНастройкиКД, ВторыеНастройкиКД) Если ПервыеНастройкиКД.ПользовательскиеПоля.Элементы.Количество() <> ВторыеНастройкиКД.ПользовательскиеПоля.Элементы.Количество() Тогда @@ -999,6 +1032,13 @@ КонецФункции +// Возвращаемое значение: +// ДеревоЗначений: +// * УзелКД - КоллекцияЭлементовСтруктурыНастроекКомпоновкиДанных +// * Тип - Строка +// * Подтип - Строка +// * ЕстьСтруктура - Булево +// Функция ДеревоСтруктуры() ДеревоСтруктуры = Новый ДеревоЗначений; diff --git a/SSL/src/Reports/РезультатыПроверкиУчета/Templates/ОсновнаяСхемаКомпоновкиДанных/Template.dcs b/SSL/src/Reports/РезультатыПроверкиУчета/Templates/ОсновнаяСхемаКомпоновкиДанных/Template.dcs index b2468cfe1..f29ed936f 100644 --- a/SSL/src/Reports/РезультатыПроверкиУчета/Templates/ОсновнаяСхемаКомпоновкиДанных/Template.dcs +++ b/SSL/src/Reports/РезультатыПроверкиУчета/Templates/ОсновнаяСхемаКомпоновкиДанных/Template.dcs @@ -767,12 +767,6 @@ ИнформацияОПоследнейПроверке - - - РастягиватьПоГоризонтали - true - - @@ -1188,6 +1182,10 @@ ТипЗаголовкаПолей Short + + ВыводитьЗаголовок + DontOutput + diff --git a/SSL/src/Reports/УниверсальныйОтчет/ManagerModule.bsl b/SSL/src/Reports/УниверсальныйОтчет/ManagerModule.bsl index d00f6bf27..a702dc891 100644 --- a/SSL/src/Reports/УниверсальныйОтчет/ManagerModule.bsl +++ b/SSL/src/Reports/УниверсальныйОтчет/ManagerModule.bsl @@ -48,17 +48,17 @@ // Возвращает значения специализированных параметров универсального отчета. // // Параметры: -// Настройки - НастройкиКомпоновкиДанных - -// ПользовательскиеНастройки - ПользовательскиеНастройкиКомпоновкиДанных - -// ДоступныеЗначения - Структура - +// Настройки - НастройкиКомпоновкиДанных +// ПользовательскиеНастройки - ПользовательскиеНастройкиКомпоновкиДанных +// ДоступныеЗначения - Структура // // Возвращаемое значение: -// Структура - где: -// * Период - СтандартныйПериод - -// * ТипОбъектаМетаданных - Строка - -// * ИмяОбъектаМетаданных - Строка - -// * ИмяТаблицы - Строка - -// * ИсточникДанных - СправочникСсылка.ИдентификаторыОбъектовМетаданных - +// Структура: +// * Период - СтандартныйПериод +// * ТипОбъектаМетаданных - Строка +// * ИмяОбъектаМетаданных - Строка +// * ИмяТаблицы - Строка +// * ИсточникДанных - СправочникСсылка.ИдентификаторыОбъектовМетаданных // Функция ФиксированныеПараметры(Настройки, ПользовательскиеНастройки, ДоступныеЗначения) Экспорт ФиксированныеПараметры = Новый Структура("Период, ИсточникДанных, ТипОбъектаМетаданных, ИмяОбъектаМетаданных, ИмяТаблицы"); @@ -165,10 +165,10 @@ // Устанавливает значения специализированных параметров универсального отчета. // // Параметры: -// Отчет - +// Отчет // ФиксированныеПараметры - см. ФиксированныеПараметры -// Настройки - НастройкиКомпоновкиДанных - -// ПользовательскиеНастройки - ПользовательскиеНастройкиКомпоновкиДанных - +// Настройки - НастройкиКомпоновкиДанных +// ПользовательскиеНастройки - ПользовательскиеНастройкиКомпоновкиДанных // Процедура УстановитьФиксированныеПараметры(Отчет, ФиксированныеПараметры, Настройки, ПользовательскиеНастройки) Экспорт ПараметрыДанных = Настройки.ПараметрыДанных; @@ -257,17 +257,20 @@ | ПериодРегистрации МЕЖДУ &НачалоПериода И &КонецПериода}"; КонецЕсли; - ТекстЗапроса = " - |ВЫБРАТЬ РАЗРЕШЕННЫЕ + ТекстЗапроса = + "ВЫБРАТЬ РАЗРЕШЕННЫЕ | * |ИЗ - | [ИмяИсточника] [ОтборИсточника] - |"; - ВыраженияТекстаЗапроса = Новый Структура; - ВыраженияТекстаЗапроса.Вставить("ИмяИсточника", ИмяИсточника); - ВыраженияТекстаЗапроса.Вставить("ОтборИсточника", ОтборИсточника); + | &ИмяИсточника КАК Таблица"; - Возврат СтроковыеФункцииКлиентСервер.ВставитьПараметрыВСтроку(ТекстЗапроса, ВыраженияТекстаЗапроса); + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "КАК Таблица", ""); + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ИмяИсточника", ИмяИсточника); + + Если ЗначениеЗаполнено(ОтборИсточника) Тогда + ТекстЗапроса = ТекстЗапроса + ОтборИсточника; + КонецЕсли; + + Возврат ТекстЗапроса; КонецФункции Функция ДоступныеТипыОбъектовМетаданных() @@ -435,6 +438,8 @@ ДобавитьИтогиОбъекта(ПараметрыОтчета, СхемаКомпоновкиДанных); КонецЕсли; + ДобавитьИтогиКоличестваПодчиненныхЗаписей(СхемаКомпоновкиДанных); + КонецПроцедуры Процедура ДобавитьИтогиОбъекта(Знач ПараметрыОтчета, Знач СхемаКомпоновкиДанных) @@ -717,13 +722,34 @@ КонецПроцедуры +Процедура ДобавитьИтогиКоличестваПодчиненныхЗаписей(СхемаКомпоновкиДанных) + + ВычисляемоеПоле = СхемаКомпоновкиДанных.ВычисляемыеПоля.Добавить(); + ВычисляемоеПоле.ПутьКДанным = "КоличествоПодчиненныхЗаписей"; + ВычисляемоеПоле.Заголовок = НСтр("ru = 'Количество записей'"); + ВычисляемоеПоле.Выражение = "1"; + ВычисляемоеПоле.ТипЗначения = Новый ОписаниеТипов("Число"); + + ОформлениеПоля = ВычисляемоеПоле.Оформление.Элементы; + ИдентификаторыПараметров = СтрРазделить("МинимальнаяШирина, МаксимальнаяШирина", ", ", Ложь); + + Для Каждого Идентификатор Из ИдентификаторыПараметров Цикл + Параметр = ОформлениеПоля.Найти(Идентификатор); + Параметр.Значение = 12; + Параметр.Использование = Истина; + КонецЦикла; + + ДобавитьПолеИтога(СхемаКомпоновкиДанных, "КоличествоПодчиненныхЗаписей"); + +КонецПроцедуры + // Добавляет период в поля набора данных. // // Параметры: -// НаборДанных - НаборДанныхЗапросСхемыКомпоновкиДанных - +// НаборДанных - НаборДанныхЗапросСхемыКомпоновкиДанных // // Возвращаемое значение: -// СписокЗначений - Описание +// СписокЗначений // Функция ДобавитьПоляПериодаВНаборДанных(НаборДанных) @@ -765,16 +791,16 @@ // Добавить поле в набор данных. // // Параметры: -// НаборДанных - НаборДанныхЗапросСхемыКомпоновкиДанных - -// Поле - Строка - -// Заголовок - Строка - -// ПутьКДанным - Неопределено - -// - Строка - +// НаборДанных - НаборДанныхЗапросСхемыКомпоновкиДанных +// Поле - Строка +// Заголовок - Строка +// ПутьКДанным - Неопределено +// - Строка // // Возвращаемое значение: -// ПолеНабораДанныхСхемыКомпоновкиДанных - +// ПолеНабораДанныхСхемыКомпоновкиДанных // -Функция ДобавитьПолеНабораДанных(НаборДанных, Поле, Заголовок, ПутьКДанным = Неопределено) +Функция ДобавитьПолеНабораДанных(НаборДанных, Поле, Заголовок = "", ПутьКДанным = Неопределено) Если ПутьКДанным = Неопределено Тогда ПутьКДанным = Поле; @@ -798,6 +824,7 @@ ПолеИтога = СхемаКомпоновкиДанных.ПоляИтога.Добавить(); ПолеИтога.ПутьКДанным = ПутьКДанным; ПолеИтога.Выражение = Выражение; + Возврат ПолеИтога; КонецФункции @@ -806,7 +833,7 @@ // // Параметры: // ПараметрыОтчета - см. ФиксированныеПараметры -// НастройкиКД - НастройкиКомпоновкиДанных - +// НастройкиКД - НастройкиКомпоновкиДанных // Процедура ДобавитьПоказатели(ПараметрыОтчета, НастройкиКД) @@ -1075,10 +1102,10 @@ // Устанавливает настройки по умолчанию. // // Параметры: -// Отчет - ОтчетОбъект - +// Отчет - ОтчетОбъект // ФиксированныеПараметры - см. ФиксированныеПараметры -// Настройки - НастройкиКомпоновкиДанных - -// ПользовательскиеНастройки - ПользовательскиеНастройкиКомпоновкиДанных - +// Настройки - НастройкиКомпоновкиДанных +// ПользовательскиеНастройки - ПользовательскиеНастройкиКомпоновкиДанных // Процедура УстановитьСтандартныеНастройки(Отчет, ФиксированныеПараметры, Настройки, ПользовательскиеНастройки) Экспорт ОтчетИнициализирован = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры( @@ -1108,10 +1135,10 @@ // Возвращает загружаемую схему компоновки данных. // // Параметры: -// ЗагруженнаяСхема - ДвоичныеДанные - +// ЗагруженнаяСхема - ДвоичныеДанные // // Возвращаемое значение: -// СхемаКомпоновкиДанных - +// СхемаКомпоновкиДанных // Функция ИзвлечьСхемуИзДвоичныхДанных(ЗагруженнаяСхема) Экспорт @@ -1267,7 +1294,7 @@ // например, "Валюты" или "КурсыВалют" и т.д. // // Возвращаемое значение: -// СправочникСсылка.ИдентификаторыОбъектовМетаданных, Неопределено - +// СправочникСсылка.ИдентификаторыОбъектовМетаданных, Неопределено // ссылка на найденный элемент справочника, иначе - Неопределено. // Функция ИсточникДанных(ТипМенеджера, ИмяОбъекта) @@ -1318,6 +1345,339 @@ Возврат ?(Типы[ТипМенеджера] = Неопределено, "", Типы[ТипМенеджера]); КонецФункции +//////////////////////////////////////////////////////////////////////////////// +// Стандартный заголовок. + +Процедура УстановитьСтандартныйЗаголовокОтчета(Контекст, Настройки, ФиксированныеПараметры, ДоступныеЗначения) Экспорт + + ЗначенияПараметров = ЗначенияПараметровСтандартногоЗаголовка(Контекст, ФиксированныеПараметры, ДоступныеЗначения); + + ПредставлениеПериода = ""; + Если ЗначенияПараметров.Период <> Неопределено Тогда + + Период = ЗначенияПараметров.Период; + ПредставлениеПериода = СтроковыеФункции.ПредставлениеПериодаВТексте(Период.ДатаНачала, Период.ДатаОкончания); + + КонецЕсли; + + Если ЗначенияПараметров.ТипОбъектаМетаданных = Неопределено + И ЗначенияПараметров.ИмяОбъектаМетаданных = Неопределено + И ЗначенияПараметров.ИмяТаблицы = Неопределено Тогда + + Заголовок = Метаданные.Отчеты.УниверсальныйОтчет.Представление(); + + ИначеЕсли ЗначенияПараметров.ИмяТаблицы = Неопределено + И ЗначенияПараметров.Период = Неопределено Тогда + + Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Универсальный отчет: %1 ""%2""'"), + ЗначенияПараметров.ТипОбъектаМетаданных, + ЗначенияПараметров.ИмяОбъектаМетаданных); + + ИначеЕсли ЗначенияПараметров.ИмяТаблицы <> Неопределено + И ЗначенияПараметров.Период = Неопределено Тогда + + Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Универсальный отчет: %1 ""%2"" - таблица ""%3""'"), + ЗначенияПараметров.ТипОбъектаМетаданных, + ЗначенияПараметров.ИмяОбъектаМетаданных, + ЗначенияПараметров.ИмяТаблицы); + + ИначеЕсли ЗначенияПараметров.ИмяТаблицы = Неопределено + И ЗначенияПараметров.Период <> Неопределено Тогда + + Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Универсальный отчет: %1 ""%2"" за %3'"), + ЗначенияПараметров.ТипОбъектаМетаданных, + ЗначенияПараметров.ИмяОбъектаМетаданных, + ПредставлениеПериода); + Иначе + Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Универсальный отчет: %1 ""%2"" - таблица ""%3"" за %4'"), + ЗначенияПараметров.ТипОбъектаМетаданных, + ЗначенияПараметров.ИмяОбъектаМетаданных, + ЗначенияПараметров.ИмяТаблицы, + ПредставлениеПериода); + КонецЕсли; + + ЗаголовокУстановленИнтерактивно = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры( + Настройки.ДополнительныеСвойства, "ЗаголовокУстановленИнтерактивно", Ложь); + + Если Не ЗаголовокУстановленИнтерактивно Тогда + ПараметрЗаголовка = Настройки.ПараметрыВывода.Элементы.Найти("Заголовок"); + ПараметрЗаголовка.Значение = Заголовок; + КонецЕсли; + + Если ТипЗнч(Контекст) = Тип("ФормаКлиентскогоПриложения") + И Контекст.ТипФормыОтчета = ТипФормыОтчета.Основная Тогда + + Контекст.Заголовок = Заголовок; + Контекст.ОтчетНаименованиеТекущегоВарианта = Заголовок; + КонецЕсли; + +КонецПроцедуры + +Функция ЗначенияПараметровСтандартногоЗаголовка(Контекст, ФиксированныеПараметры, ДоступныеЗначения) + + ЗначенияПараметров = Новый Структура("ТипОбъектаМетаданных, ИмяОбъектаМетаданных, ИмяТаблицы, Период"); + + Если ТипЗнч(Контекст) = Тип("ФормаКлиентскогоПриложения") Тогда + АдресСхемы = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Контекст.НастройкиОтчета, "АдресСхемы"); + Иначе + АдресСхемы = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Контекст, "АдресСхемы"); + КонецЕсли; + + Схема = ПолучитьИзВременногоХранилища(АдресСхемы); + + Для Каждого Элемент Из ЗначенияПараметров Цикл + + НайденныйПараметр = Схема.Параметры.Найти(Элемент.Ключ); + Если НайденныйПараметр = Неопределено + Или НайденныйПараметр.ОграничениеИспользования Тогда + + Продолжить; + КонецЕсли; + + ЗначениеПараметра = ФиксированныеПараметры[Элемент.Ключ]; + + ДоступныеЗначенияПараметра = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры( + ДоступныеЗначения, Элемент.Ключ); + + Если ЗначениеЗаполнено(ЗначениеПараметра) + И ТипЗнч(ДоступныеЗначенияПараметра) = Тип("СписокЗначений") Тогда + + НайденноеЗначение = ДоступныеЗначенияПараметра.НайтиПоЗначению(ЗначениеПараметра); + ЗначенияПараметров[Элемент.Ключ] = НайденноеЗначение.Представление; + Иначе + ЗначенияПараметров[Элемент.Ключ] = ?(ЗначениеЗаполнено(ЗначениеПараметра), ЗначениеПараметра, Неопределено); + КонецЕсли; + КонецЦикла; + + Возврат ЗначенияПараметров; + +КонецФункции + +//////////////////////////////////////////////////////////////////////////////// +// Количество подчиненных записей в группировках. + +Процедура ВывестиКоличествоПодчиненныхЗаписей(Настройки, Схема, СтандартнаяОбработка) Экспорт + + Если Схема.ВычисляемыеПоля.Найти("КоличествоПодчиненныхЗаписей") = Неопределено Тогда + Возврат; + КонецЕсли; + + СтандартнаяОбработка = Ложь; + + ВыводитьКоличествоЗаписей = ВыводитьКоличествоЗаписей(Настройки); + + Для Каждого ЭлементСтруктуры Из Настройки.Структура Цикл + + Если Не ЭлементСтруктуры.Использование Тогда + Продолжить; + КонецЕсли; + + Если ТипЗнч(ЭлементСтруктуры) = Тип("ГруппировкаКомпоновкиДанных") Тогда + + ВывестиКоличествоПодчиненныхЗаписейГруппировки(ЭлементСтруктуры, ВыводитьКоличествоЗаписей); + + ИначеЕсли ТипЗнч(ЭлементСтруктуры) = Тип("ТаблицаКомпоновкиДанных") Тогда + + ВывестиКоличествоПодчиненныхЗаписейТаблицы(ЭлементСтруктуры, ВыводитьКоличествоЗаписей); + + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +Функция ВыводитьКоличествоЗаписей(Настройки) + + ВыводитьКоличествоЗаписей = Настройки.ПараметрыДанных.Элементы.Найти("ВыводитьКоличествоПодчиненныхЗаписей"); + + Возврат ВыводитьКоличествоЗаписей <> Неопределено + И ВыводитьКоличествоЗаписей.Значение; + +КонецФункции + +Процедура ВывестиКоличествоПодчиненныхЗаписейГруппировки(Группировка, Выводить) + + ПоляГруппировки = Группировка.ПоляГруппировки.Элементы; + + Если ПоляГруппировки.Количество() > 0 Тогда + + ВыбранныПоля = Группировка.Выбор; + ПолеКоличестваЗаписей = ПолеКоличестваПодчиненныхЗаписей(ВыбранныПоля, ВыбранныПоля.Элементы); + ПолеКоличестваЗаписей.Использование = Выводить; + + Иначе + СкрытьКоличествоЗаписейВДетальныхЗаписях(Группировка); + КонецЕсли; + + Для Каждого ЭлементСтруктуры Из Группировка.Структура Цикл + + Если Не ЭлементСтруктуры.Использование Тогда + Продолжить; + КонецЕсли; + + Если ТипЗнч(ЭлементСтруктуры) = Тип("ГруппировкаКомпоновкиДанных") Тогда + + ВывестиКоличествоПодчиненныхЗаписейГруппировки(ЭлементСтруктуры, Выводить); + + ИначеЕсли ТипЗнч(ЭлементСтруктуры) = Тип("ТаблицаКомпоновкиДанных") Тогда + + ВывестиКоличествоПодчиненныхЗаписейТаблицы(ЭлементСтруктуры, Выводить); + + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +Процедура ВывестиКоличествоПодчиненныхЗаписейТаблицы(Таблица, Выводить) + + КолонкаКоличестваЗаписей = Неопределено; + + Для Каждого Колонка Из Таблица.Колонки Цикл + + ПоляГруппировки = Колонка.ПоляГруппировки.Элементы; + + Если ПоляГруппировки.Количество() = 0 Тогда + + КолонкаКоличестваЗаписей = Колонка; + Прервать; + + КонецЕсли; + + КонецЦикла; + + Если КолонкаКоличестваЗаписей <> Неопределено Тогда + Возврат; + КонецЕсли; + + КолонкаКоличестваЗаписей = Таблица.Колонки.Добавить(); + + ВыбранныПоля = КолонкаКоличестваЗаписей.Выбор; + ПолеКоличестваЗаписей = ПолеКоличестваПодчиненныхЗаписей(ВыбранныПоля, ВыбранныПоля.Элементы); + ПолеКоличестваЗаписей.Использование = Выводить; + + СкрытьКоличествоЗаписейВДетальныхЗаписяхТаблицы(Таблица.Строки); + +КонецПроцедуры + +Функция ПолеКоличестваПодчиненныхЗаписей(ВыбранныПоля, Элементы) + + ПолеКоличестваЗаписей = Неопределено; + ИскомоеЗначение = Новый ПолеКомпоновкиДанных("КоличествоПодчиненныхЗаписей"); + + Для Каждого Элемент Из Элементы Цикл + + Если ТипЗнч(Элемент) = Тип("ВыбранноеПолеКомпоновкиДанных") Тогда + + Если Элемент.Поле = ИскомоеЗначение Тогда + + ПолеКоличестваЗаписей = Элемент; + Прервать; + + КонецЕсли; + + ИначеЕсли ТипЗнч(Элемент) = Тип("ГруппаВыбранныхПолейКомпоновкиДанных") Тогда + + Если Элемент.Использование Тогда + ПолеКоличестваПодчиненныхЗаписей(ВыбранныПоля, Элемент.Элементы); + КонецЕсли; + + КонецЕсли; + + КонецЦикла; + + Если ПолеКоличестваЗаписей = Неопределено Тогда + + ПолеКоличестваЗаписей = ВыбранныПоля.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных")); + ПолеКоличестваЗаписей.Поле = ИскомоеЗначение; + + КонецЕсли; + + Возврат ПолеКоличестваЗаписей; + +КонецФункции + +Процедура СкрытьКоличествоЗаписейВДетальныхЗаписяхТаблицы(Строки) + + Для Каждого Строка Из Строки Цикл + + ПоляГруппировки = Строка.ПоляГруппировки.Элементы; + + Если ПоляГруппировки.Количество() = 0 Тогда + СкрытьКоличествоЗаписейВДетальныхЗаписях(Строка); + Иначе + СкрытьКоличествоЗаписейВДетальныхЗаписяхТаблицы(Строка.Структура); + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +Процедура СкрытьКоличествоЗаписейВДетальныхЗаписях(ДетальныеЗаписи) + + Поле = Новый ПолеКомпоновкиДанных("КоличествоПодчиненныхЗаписей"); + + ОформлениеКоличестваЗаписей = ОформлениеКоличестваЗаписей(ДетальныеЗаписи, Поле); + + ОформляемоеПоле = ОформлениеКоличестваЗаписей.Поля.Элементы.Добавить(); + ОформляемоеПоле.Поле = Поле; + + УсловиеОформления = ОформлениеКоличестваЗаписей.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + УсловиеОформления.ЛевоеЗначение = Поле; + УсловиеОформления.ВидСРавнения = ВидСравненияКомпоновкиДанных.НеРавно; + УсловиеОформления.ПравоеЗначение = 0; + УсловиеОформления.Использование = Истина; + + ОформлениеКоличестваЗаписей.Оформление.УстановитьЗначениеПараметра("Текст", ""); + + ВариантыИспользования = Новый Структура("ВЗаголовке, ВЗаголовкеОбщегоИтога, + |ВЗаголовкеПолей, ВЗаголовкеПолейРесурсов, ВЗаголовкеПолейРесурсовОбщегоИтога, + |ВОбщемИтоге, ВОтборе, ВПараметрах"); + + Для Каждого Элемент Из ВариантыИспользования Цикл + + ВариантИспользования = "Использовать" + Элемент.Ключ; + ОформлениеКоличестваЗаписей[ВариантИспользования] = ИспользованиеУсловногоОформленияКомпоновкиДанных.НеИспользовать; + + КонецЦикла; + +КонецПроцедуры + +Функция ОформлениеКоличестваЗаписей(ДетальныеЗаписи, ИскомоеЗначение) + + ОформлениеКоличестваЗаписей = Неопределено; + + ЭлементыОформления = ДетальныеЗаписи.УсловноеОформление.Элементы; + + Для Каждого ЭлементОформления Из ЭлементыОформления Цикл + + ПоляОформления = ЭлементОформления.Поля.Элементы; + + Если ПоляОформления.Количество() > 0 + И ПоляОформления[0].Поле = ИскомоеЗначение Тогда + + ОформлениеКоличестваЗаписей = ЭлементОформления; + Прервать; + + КонецЕсли; + + КонецЦикла; + + Если ОформлениеКоличестваЗаписей = Неопределено Тогда + ОформлениеКоличестваЗаписей = ЭлементыОформления.Добавить(); + КонецЕсли; + + ОформлениеКоличестваЗаписей.Поля.Элементы.Очистить(); + ОформлениеКоличестваЗаписей.Отбор.Элементы.Очистить(); + + Возврат ОформлениеКоличестваЗаписей; + +КонецФункции + #КонецОбласти #КонецЕсли \ No newline at end of file diff --git a/SSL/src/Reports/УниверсальныйОтчет/ObjectModule.bsl b/SSL/src/Reports/УниверсальныйОтчет/ObjectModule.bsl index 66379190d..128efaca0 100644 --- a/SSL/src/Reports/УниверсальныйОтчет/ObjectModule.bsl +++ b/SSL/src/Reports/УниверсальныйОтчет/ObjectModule.bsl @@ -17,8 +17,10 @@ // Задать настройки формы отчета. // // Параметры: -// Форма - ФормаКлиентскогоПриложения, Неопределено - -// КлючВарианта - Строка, Неопределено - +// Форма - ФормаКлиентскогоПриложения +// - Неопределено +// КлючВарианта - Строка +// - Неопределено // Настройки - см. ОтчетыКлиентСервер.НастройкиОтчетаПоУмолчанию // Процедура ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки) Экспорт @@ -38,9 +40,9 @@ // См. ОтчетыПереопределяемый.ПриСозданииНаСервере. // // Параметры: -// Форма - ФормаКлиентскогоПриложения - -// Отказ - Булево - -// СтандартнаяОбработка - Булево - +// Форма - ФормаКлиентскогоПриложения +// Отказ - Булево +// СтандартнаяОбработка - Булево // Процедура ПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка) Экспорт РазрешеноИзменятьВарианты = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры( @@ -77,8 +79,8 @@ // См. "Расширение управляемой формы для отчета.ПередЗагрузкойВариантаНаСервере" в синтакс-помощнике. // // Параметры: -// Форма - ФормаКлиентскогоПриложения - Форма отчета. -// Настройки - НастройкиКомпоновкиДанных - Настройки для загрузки в компоновщик настроек. +// Форма - ФормаКлиентскогоПриложения - форма отчета. +// Настройки - НастройкиКомпоновкиДанных - настройки для загрузки в компоновщик настроек. // Процедура ПередЗагрузкойВариантаНаСервере(Форма, Настройки) Экспорт ТекущийКлючСхемы = Неопределено; @@ -130,13 +132,16 @@ // По умолчанию не заполнен (это означает что компоновщик инициализирован на основании основной схемы). // Используется для оптимизации, чтобы переинициализировать компоновщик как можно реже). // Может не использоваться если переинициализация выполняется безусловно. -// КлючВарианта - Строка, Неопределено - +// КлючВарианта - Строка +// - Неопределено - // Имя предопределенного или уникальный идентификатор пользовательского варианта отчета. // Неопределено когда вызов для варианта расшифровки или без контекста. -// Настройки - НастройкиКомпоновкиДанных, Неопределено - +// Настройки - НастройкиКомпоновкиДанных +// - Неопределено - // Настройки варианта отчета, которые будут загружены в компоновщик настроек после его инициализации. // Неопределено когда настройки варианта не надо загружать (уже загружены ранее). -// ПользовательскиеНастройки - ПользовательскиеНастройкиКомпоновкиДанных, Неопределено - +// ПользовательскиеНастройки - ПользовательскиеНастройкиКомпоновкиДанных +// - Неопределено - // Пользовательские настройки, которые будут загружены в компоновщик настроек после его инициализации. // Неопределено когда пользовательские настройки не надо загружать (уже загружены ранее). // @@ -226,6 +231,9 @@ КонецЕсли; КомпоновщикНастроек.Настройки.ДополнительныеСвойства.Вставить("ДоступныеЗначения", ДоступныеЗначения); + + Отчеты.УниверсальныйОтчет.УстановитьСтандартныйЗаголовокОтчета( + Контекст, Настройки, ФиксированныеПараметры, ДоступныеЗначения); КонецПроцедуры // Вызывается после определения свойств элементов формы, связанных с пользовательскими настройками. @@ -234,7 +242,7 @@ // // Параметры: // ТипФормы - ТипФормыОтчета - см. Синтакс-помощник -// СвойстваЭлементов - см. ОтчетыСервер.СвойстваЭлементовФормыНастроек() +// СвойстваЭлементов - см. ОтчетыСервер.СвойстваЭлементовФормыНастроек // ПользовательскиеНастройки - КоллекцияЭлементовПользовательскихНастроекКомпоновкиДанных - элементы актуальных // пользовательских настроек, влияющих на создание связанных элементов формы. // @@ -280,12 +288,38 @@ #КонецОбласти +#Область ОбработчикиСобытий + +Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) + + Настройки = КомпоновщикНастроек.ПолучитьНастройки(); + + Отчеты.УниверсальныйОтчет.ВывестиКоличествоПодчиненныхЗаписей(Настройки, СхемаКомпоновкиДанных, СтандартнаяОбработка); + + Если СтандартнаяОбработка Тогда + Возврат; + КонецЕсли; + + КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; + МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки); + + ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; + ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,, ДанныеРасшифровки); + + ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; + ПроцессорВывода.УстановитьДокумент(ДокументРезультат); + ПроцессорВывода.Вывести(ПроцессорКомпоновки); + +КонецПроцедуры + +#КонецОбласти + #Область СлужебныеПроцедурыИФункции // Возвращает хеш-сумму двоичных данных. // // Параметры: -// ДвоичныеДанные - ДвоичныеДанные - Данные, от которых считается хеш-сумма. +// ДвоичныеДанные - ДвоичныеДанные - данные, от которых считается хеш-сумма. // Функция ХешДвоичныхДанных(ДвоичныеДанные) ХешированиеДанных = Новый ХешированиеДанных(ХешФункция.MD5); diff --git a/SSL/src/Reports/УниверсальныйОтчет/Templates/ОсновнаяСхемаКомпоновкиДанных/Template.dcs b/SSL/src/Reports/УниверсальныйОтчет/Templates/ОсновнаяСхемаКомпоновкиДанных/Template.dcs index cf72cbf8e..7e57bcdc3 100644 --- a/SSL/src/Reports/УниверсальныйОтчет/Templates/ОсновнаяСхемаКомпоновкиДанных/Template.dcs +++ b/SSL/src/Reports/УниверсальныйОтчет/Templates/ОсновнаяСхемаКомпоновкиДанных/Template.dcs @@ -127,6 +127,21 @@ false Always + + ВыводитьКоличествоПодчиненныхЗаписей + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Выводить количество подчиненных записей</v8:content> + </v8:item> + + + xs:boolean + + true + false + Always + Основной @@ -144,11 +159,6 @@ 60febb46-2215-4d7a-ac48-eac4758847c6 - - false - ИсточникДанных - - false ТипОбъектаМетаданных @@ -166,6 +176,12 @@ 733b31cf-f43e-49be-a7f5-4ddb8ff9ecd5 + + ВыводитьКоличествоПодчиненныхЗаписей + true + Normal + a3a6ec07-fa61-401b-9a36-84b845f2f021 + diff --git a/SSL/src/Roles/АдминистраторСистемы/Rights.rights b/SSL/src/Roles/АдминистраторСистемы/Rights.rights index 60256c6c7..05d5927e4 100644 --- a/SSL/src/Roles/АдминистраторСистемы/Rights.rights +++ b/SSL/src/Roles/АдминистраторСистемы/Rights.rights @@ -2435,93 +2435,6 @@ true - - Configuration.БиблиотекаСтандартныхПодсистем - - Administration - true - - - DataAdministration - true - - - UpdateDataBaseConfiguration - true - - - ExclusiveMode - true - - - ActiveUsers - true - - - EventLog - true - - - ThinClient - true - - - WebClient - true - - - ThickClient - true - - - ExternalConnection - true - - - Automation - true - - - TechnicalSpecialistMode - true - - - MainWindowModeNormal - true - - - MainWindowModeWorkplace - true - - - MainWindowModeEmbeddedWorkplace - true - - - MainWindowModeFullscreenWorkplace - true - - - MainWindowModeKiosk - true - - - AnalyticsSystemClient - true - - - SaveUserData - true - - - ConfigurationExtensionsAdministration - true - - - Output - true - - Catalog.ПроизводственныеКалендари @@ -3342,6 +3255,93 @@ true + + Configuration.БиблиотекаСтандартныхПодсистем + + Administration + true + + + DataAdministration + true + + + UpdateDataBaseConfiguration + true + + + ExclusiveMode + true + + + ActiveUsers + true + + + EventLog + true + + + ThinClient + true + + + WebClient + true + + + ThickClient + true + + + ExternalConnection + true + + + Automation + true + + + TechnicalSpecialistMode + true + + + MainWindowModeNormal + true + + + MainWindowModeWorkplace + true + + + MainWindowModeEmbeddedWorkplace + true + + + MainWindowModeFullscreenWorkplace + true + + + MainWindowModeKiosk + true + + + AnalyticsSystemClient + true + + + SaveUserData + true + + + ConfigurationExtensionsAdministration + true + + + Output + true + + InformationRegister.АдресныеОбъекты.Command.ЗагрузитьАдресныйКлассификатор @@ -4955,6 +4955,65 @@ true + + InformationRegister.ОбработчикиОбновленияОбщихДанных + + Read + true + + + Update + true + + + View + true + + + Edit + true + + + TotalsControl + true + + + ReadDataHistory + true + + + ReadDataHistoryOfMissingData + true + + + UpdateDataHistory + true + + + UpdateDataHistoryOfMissingData + true + + + UpdateDataHistorySettings + true + + + UpdateDataHistoryVersionComment + true + + + ViewDataHistory + true + + + EditDataHistoryVersionComment + true + + + SwitchToDataHistoryVersion + true + + Constant.ПовторитьЗагрузкуСообщенияОбменаДаннымиПередЗапуском diff --git a/SSL/src/Roles/БазовыеПраваБСП/Rights.rights b/SSL/src/Roles/БазовыеПраваБСП/Rights.rights index 677f39d09..d3793a401 100644 --- a/SSL/src/Roles/БазовыеПраваБСП/Rights.rights +++ b/SSL/src/Roles/БазовыеПраваБСП/Rights.rights @@ -553,6 +553,17 @@ true + + InformationRegister.ОбработчикиОбновления + + Read + true + + + View + true + + CommonForm.ВходВПрограммуЗапрещен @@ -717,6 +728,17 @@ true + + SessionParameter.ВыполняетсяУдалениеОбъектов + + Get + true + + + Set + true + + DataProcessor.ИнформацияПриЗапуске.Command.ИнформацияПриЗапуске diff --git a/SSL/src/Roles/БазовыеПраваВнешнихПользователейБСП/Rights.rights b/SSL/src/Roles/БазовыеПраваВнешнихПользователейБСП/Rights.rights index 1e641777e..768ae1de3 100644 --- a/SSL/src/Roles/БазовыеПраваВнешнихПользователейБСП/Rights.rights +++ b/SSL/src/Roles/БазовыеПраваВнешнихПользователейБСП/Rights.rights @@ -484,6 +484,17 @@ true + + InformationRegister.ОбработчикиОбновления + + Read + true + + + View + true + + CommonForm.ВходВПрограммуЗапрещен @@ -641,6 +652,17 @@ true + + SessionParameter.ВыполняетсяУдалениеОбъектов + + Get + true + + + Set + true + + DataProcessor.ИнформацияПриЗапуске.Command.ИнформацияПриЗапуске diff --git a/SSL/src/Roles/ДобавлениеИзменениеВзаимодействий/Rights.rights b/SSL/src/Roles/ДобавлениеИзменениеВзаимодействий/Rights.rights index 25dc808b2..7200adc6f 100644 --- a/SSL/src/Roles/ДобавлениеИзменениеВзаимодействий/Rights.rights +++ b/SSL/src/Roles/ДобавлениеИзменениеВзаимодействий/Rights.rights @@ -294,7 +294,7 @@ - InformationRegister.НастройкиУчетныхЗаписейЭлектроннойПочты.Command.Настройки + InformationRegister.НастройкиУчетныхЗаписейЭлектроннойПочты.Command.ДополнительныеНастройки View true diff --git a/SSL/src/Roles/ДобавлениеИзменениеРассылокОтчетов/Rights.rights b/SSL/src/Roles/ДобавлениеИзменениеРассылокОтчетов/Rights.rights index b74346c26..ec7c76e14 100644 --- a/SSL/src/Roles/ДобавлениеИзменениеРассылокОтчетов/Rights.rights +++ b/SSL/src/Roles/ДобавлениеИзменениеРассылокОтчетов/Rights.rights @@ -21,37 +21,6 @@ true - - Configuration.БиблиотекаСтандартныхПодсистем - - MainWindowModeNormal - true - - - MainWindowModeWorkplace - true - - - MainWindowModeEmbeddedWorkplace - true - - - MainWindowModeFullscreenWorkplace - true - - - MainWindowModeKiosk - true - - - AnalyticsSystemClient - true - - - Output - true - - Catalog.РассылкиОтчетов.Command.ВыполнитьСейчас @@ -107,6 +76,37 @@ true + + Configuration.БиблиотекаСтандартныхПодсистем + + MainWindowModeNormal + true + + + MainWindowModeWorkplace + true + + + MainWindowModeEmbeddedWorkplace + true + + + MainWindowModeFullscreenWorkplace + true + + + MainWindowModeKiosk + true + + + AnalyticsSystemClient + true + + + Output + true + + ДляОбъекта(ПолеОбъекта) // ДляОбъекта(ПолеОбъекта = "") diff --git a/SSL/src/Roles/ДобавлениеИзменениеСостоянийОригиналовПервичныхДокументов/Rights.rights b/SSL/src/Roles/ДобавлениеИзменениеСостоянийОригиналовПервичныхДокументов/Rights.rights new file mode 100644 index 000000000..e8b67e1d3 --- /dev/null +++ b/SSL/src/Roles/ДобавлениеИзменениеСостоянийОригиналовПервичныхДокументов/Rights.rights @@ -0,0 +1,81 @@ + + + false + true + false + + Catalog.СостоянияОригиналовПервичныхДокументов + + Read + true + + + Insert + true + + + Update + true + + + View + true + + + InteractiveInsert + true + + + Edit + true + + + InteractiveSetDeletionMark + true + + + InteractiveClearDeletionMark + true + + + InputByString + true + + + ReadDataHistory + true + + + ReadDataHistoryOfMissingData + true + + + UpdateDataHistory + true + + + UpdateDataHistoryOfMissingData + true + + + UpdateDataHistorySettings + true + + + UpdateDataHistoryVersionComment + true + + + ViewDataHistory + true + + + EditDataHistoryVersionComment + true + + + SwitchToDataHistoryVersion + true + + + diff --git a/SSL/src/Roles/ДобавлениеИзменениеСостоянийОригиналовПервичныхДокументов/ДобавлениеИзменениеСостоянийОригиналовПервичныхДокументов.mdo b/SSL/src/Roles/ДобавлениеИзменениеСостоянийОригиналовПервичныхДокументов/ДобавлениеИзменениеСостоянийОригиналовПервичныхДокументов.mdo new file mode 100644 index 000000000..aea13d988 --- /dev/null +++ b/SSL/src/Roles/ДобавлениеИзменениеСостоянийОригиналовПервичныхДокументов/ДобавлениеИзменениеСостоянийОригиналовПервичныхДокументов.mdo @@ -0,0 +1,8 @@ + + + ДобавлениеИзменениеСостоянийОригиналовПервичныхДокументов + + ru + Добавление изменение состояний оригиналов первичных документов + + diff --git a/SSL/src/Roles/ИзменениеСостоянийОригиналовПервичныхДокументов/Rights.rights b/SSL/src/Roles/ИзменениеСостоянийОригиналовПервичныхДокументов/Rights.rights new file mode 100644 index 000000000..f64de792b --- /dev/null +++ b/SSL/src/Roles/ИзменениеСостоянийОригиналовПервичныхДокументов/Rights.rights @@ -0,0 +1,47 @@ + + + false + true + false + + InformationRegister.СостоянияОригиналовПервичныхДокументов + + Read + true + + + Update + true + + + View + true + + + Edit + true + + + + Catalog.СостоянияОригиналовПервичныхДокументов + + Read + true + + + View + true + + + InputByString + true + + + + CommonCommand.ЖурналУчетаОригиналовПервичныхДокументов + + View + true + + + diff --git a/SSL/src/Roles/ИзменениеСостоянийОригиналовПервичныхДокументов/ИзменениеСостоянийОригиналовПервичныхДокументов.mdo b/SSL/src/Roles/ИзменениеСостоянийОригиналовПервичныхДокументов/ИзменениеСостоянийОригиналовПервичныхДокументов.mdo new file mode 100644 index 000000000..c2843a2a7 --- /dev/null +++ b/SSL/src/Roles/ИзменениеСостоянийОригиналовПервичныхДокументов/ИзменениеСостоянийОригиналовПервичныхДокументов.mdo @@ -0,0 +1,8 @@ + + + ИзменениеСостоянийОригиналовПервичныхДокументов + + ru + Изменение состояний оригиналов первичных документов + + diff --git a/SSL/src/Roles/ПолныеПрава/Rights.rights b/SSL/src/Roles/ПолныеПрава/Rights.rights index 1076500fc..37a51de43 100644 --- a/SSL/src/Roles/ПолныеПрава/Rights.rights +++ b/SSL/src/Roles/ПолныеПрава/Rights.rights @@ -3354,45 +3354,6 @@ false - - Configuration.БиблиотекаСтандартныхПодсистем - - Administration - false - - - UpdateDataBaseConfiguration - false - - - ThickClient - false - - - ExternalConnection - false - - - Automation - false - - - TechnicalSpecialistMode - false - - - ConfigurationExtensionsAdministration - false - - - InteractiveOpenExtDataProcessors - false - - - InteractiveOpenExtReports - false - - Catalog.ПроизводственныеКалендари @@ -3890,6 +3851,29 @@ false + + Catalog.СостоянияОригиналовПервичныхДокументов + + InteractiveDelete + false + + + InteractiveDeletePredefinedData + false + + + InteractiveSetDeletionMarkPredefinedData + false + + + InteractiveClearDeletionMarkPredefinedData + false + + + InteractiveDeleteMarkedPredefinedData + false + + Catalog.РассылкиОтчетов @@ -4606,6 +4590,45 @@ false + + Configuration.БиблиотекаСтандартныхПодсистем + + Administration + false + + + UpdateDataBaseConfiguration + false + + + ThickClient + false + + + ExternalConnection + false + + + Automation + false + + + TechnicalSpecialistMode + false + + + ConfigurationExtensionsAdministration + false + + + InteractiveOpenExtDataProcessors + false + + + InteractiveOpenExtReports + false + + Catalog.ЗначенияСвойствОбъектовИерархия @@ -6642,6 +6665,65 @@ false + + InformationRegister.ОбработчикиОбновленияОбщихДанных + + Read + false + + + Update + false + + + View + false + + + Edit + false + + + TotalsControl + false + + + ReadDataHistory + false + + + ReadDataHistoryOfMissingData + false + + + UpdateDataHistory + false + + + UpdateDataHistoryOfMissingData + false + + + UpdateDataHistorySettings + false + + + UpdateDataHistoryVersionComment + false + + + ViewDataHistory + false + + + EditDataHistoryVersionComment + false + + + SwitchToDataHistoryVersion + false + + Constant.ПовторитьЗагрузкуСообщенияОбменаДаннымиПередЗапуском diff --git a/SSL/src/Roles/УдалениеДанныхOData/Rights.rights b/SSL/src/Roles/УдалениеДанныхOData/Rights.rights index 5081e140b..0de499b56 100644 --- a/SSL/src/Roles/УдалениеДанныхOData/Rights.rights +++ b/SSL/src/Roles/УдалениеДанныхOData/Rights.rights @@ -237,6 +237,17 @@ true + + InformationRegister.НеудаленныеОбъекты + + Read + true + + + Update + true + + InformationRegister.НепринятыеКОбработкеПочтовымСерверомИсходящиеПисьма @@ -487,6 +498,17 @@ true + + InformationRegister.СостоянияОригиналовПервичныхДокументов + + Read + true + + + Update + true + + Constant.ДнейДоСкрытияПерсональныхДанныхСубъектов @@ -1593,6 +1615,25 @@ true + + Catalog.СостоянияОригиналовПервичныхДокументов + + Read + true + + + Insert + true + + + Update + true + + + Delete + true + + InformationRegister.ОбновлениеКлючейДоступаПользователей @@ -1813,6 +1854,17 @@ true + + Constant.ПроверятьИспользованиеУдаляемыхОбъектов + + Read + true + + + Update + true + + Constant.ЗаголовокСистемы @@ -2290,6 +2342,17 @@ true + + InformationRegister.УдаляемыеОбъекты + + Read + true + + + Update + true + + Catalog.ВстречаПрисоединенныеФайлы @@ -2574,6 +2637,17 @@ true + + Constant.ИспользоватьУчетОригиналовПервичныхДокументов + + Read + true + + + Update + true + + Document.ЭлектронноеПисьмоВходящее diff --git a/SSL/src/Roles/ЧтениеСостоянийОригиналовПервичныхДокументов/Rights.rights b/SSL/src/Roles/ЧтениеСостоянийОригиналовПервичныхДокументов/Rights.rights new file mode 100644 index 000000000..15b530747 --- /dev/null +++ b/SSL/src/Roles/ЧтениеСостоянийОригиналовПервичныхДокументов/Rights.rights @@ -0,0 +1,32 @@ + + + false + true + false + + InformationRegister.СостоянияОригиналовПервичныхДокументов + + Read + true + + + View + true + + + + Catalog.СостоянияОригиналовПервичныхДокументов + + Read + true + + + View + true + + + InputByString + true + + + diff --git a/SSL/src/Roles/ЧтениеСостоянийОригиналовПервичныхДокументов/ЧтениеСостоянийОригиналовПервичныхДокументов.mdo b/SSL/src/Roles/ЧтениеСостоянийОригиналовПервичныхДокументов/ЧтениеСостоянийОригиналовПервичныхДокументов.mdo new file mode 100644 index 000000000..4cb001936 --- /dev/null +++ b/SSL/src/Roles/ЧтениеСостоянийОригиналовПервичныхДокументов/ЧтениеСостоянийОригиналовПервичныхДокументов.mdo @@ -0,0 +1,8 @@ + + + ЧтениеСостоянийОригиналовПервичныхДокументов + + ru + Чтение состояний оригиналов первичных документов + + diff --git a/SSL/src/ScheduledJobs/ИсправлениеУстаревшихАдресов/Schedule.schedule b/SSL/src/ScheduledJobs/ИсправлениеУстаревшихАдресов/Schedule.schedule new file mode 100644 index 000000000..09a29cf19 --- /dev/null +++ b/SSL/src/ScheduledJobs/ИсправлениеУстаревшихАдресов/Schedule.schedule @@ -0,0 +1,16 @@ + + + Sun + Jan + Feb + Mar + Apr + May + Jun + Jul + Aug + Sep + Oct + Nov + Dec + diff --git a/SSL/src/ScheduledJobs/ИсправлениеУстаревшихАдресов/ИсправлениеУстаревшихАдресов.mdo b/SSL/src/ScheduledJobs/ИсправлениеУстаревшихАдресов/ИсправлениеУстаревшихАдресов.mdo new file mode 100644 index 000000000..2dcca2739 --- /dev/null +++ b/SSL/src/ScheduledJobs/ИсправлениеУстаревшихАдресов/ИсправлениеУстаревшихАдресов.mdo @@ -0,0 +1,12 @@ + + + ИсправлениеУстаревшихАдресов + + ru + Исправление устаревших адресов + + CommonModule.УправлениеКонтактнойИнформациейСлужебный.ИсправлениеУстаревшихАдресов + true + 3 + 10 + diff --git a/SSL/src/ScheduledJobs/ОтключениеПроверкиИспользованияУдаляемыхОбъектов/Schedule.schedule b/SSL/src/ScheduledJobs/ОтключениеПроверкиИспользованияУдаляемыхОбъектов/Schedule.schedule new file mode 100644 index 000000000..653ff621a --- /dev/null +++ b/SSL/src/ScheduledJobs/ОтключениеПроверкиИспользованияУдаляемыхОбъектов/Schedule.schedule @@ -0,0 +1,22 @@ + + + Mon + Tue + Wed + Thu + Fri + Sat + Sun + Jan + Feb + Mar + Apr + May + Jun + Jul + Aug + Sep + Oct + Nov + Dec + diff --git a/SSL/src/ScheduledJobs/ОтключениеПроверкиИспользованияУдаляемыхОбъектов/ОтключениеПроверкиИспользованияУдаляемыхОбъектов.mdo b/SSL/src/ScheduledJobs/ОтключениеПроверкиИспользованияУдаляемыхОбъектов/ОтключениеПроверкиИспользованияУдаляемыхОбъектов.mdo new file mode 100644 index 000000000..7faf25fc0 --- /dev/null +++ b/SSL/src/ScheduledJobs/ОтключениеПроверкиИспользованияУдаляемыхОбъектов/ОтключениеПроверкиИспользованияУдаляемыхОбъектов.mdo @@ -0,0 +1,13 @@ + + + ОтключениеПроверкиИспользованияУдаляемыхОбъектов + + ru + Отключение проверки использования удаляемых объектов + + CommonModule.УдалениеПомеченныхОбъектовСлужебный.ПроверкаАктивностиСеансаУдаленияОбъектов + ПроверкаАктивностиСеансаУдаленияОбъектов + true + 3 + 25 + diff --git a/SSL/src/SessionParameters/ВыполняетсяУдалениеОбъектов/ВыполняетсяУдалениеОбъектов.mdo b/SSL/src/SessionParameters/ВыполняетсяУдалениеОбъектов/ВыполняетсяУдалениеОбъектов.mdo new file mode 100644 index 000000000..a9fd842bc --- /dev/null +++ b/SSL/src/SessionParameters/ВыполняетсяУдалениеОбъектов/ВыполняетсяУдалениеОбъектов.mdo @@ -0,0 +1,11 @@ + + + ВыполняетсяУдалениеОбъектов + + ru + Выполняется удаление объектов + + + Boolean + + diff --git a/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/ВыборВариантаОтчета/Module.bsl b/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/ВыборВариантаОтчета/Module.bsl index 00e25870d..737fb28a6 100644 --- a/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/ВыборВариантаОтчета/Module.bsl +++ b/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/ВыборВариантаОтчета/Module.bsl @@ -262,11 +262,11 @@ // Обработчик оповещения вопроса. // // Параметры: -// Ответ - КодВозвратаДиалога - -// ДополнительныеПараметры - Структура - где: -// * Вариант - ДанныеФормыЭлементДерева - где: -// ** Ссылка - СправочникСсылка.ВариантыОтчетов - -// ** ИндексКартинки - Число - +// Ответ - КодВозвратаДиалога +// ДополнительныеПараметры - Структура: +// * Вариант - ДанныеФормыЭлементДерева: +// ** Ссылка - СправочникСсылка.ВариантыОтчетов +// ** ИндексКартинки - Число // &НаКлиенте Процедура ДеревоВариантовОтчетаПередУдалениемЗавершение(Ответ, ДополнительныеПараметры) Экспорт diff --git a/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/ВыборПоляОтчета/Module.bsl b/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/ВыборПоляОтчета/Module.bsl index aae622b0c..f2aa2227e 100644 --- a/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/ВыборПоляОтчета/Module.bsl +++ b/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/ВыборПоляОтчета/Module.bsl @@ -63,7 +63,8 @@ ТаблицаКД = ТаблицаКД(ЭтотОбъект); ДоступноеПолеКД = ТаблицаКД.НайтиПоле(ПолеКД); Если ДоступноеПолеКД <> Неопределено Тогда - Элементы[ИмяТаблицы + "Таблица"].ТекущаяСтрока = ТаблицаКД.ПолучитьИдентификаторПоОбъекту(ДоступноеПолеКД); + СписокПолей = Элементы[ИмяТаблицы + "Таблица"]; // ТаблицаФормы + СписокПолей.ТекущаяСтрока = ТаблицаКД.ПолучитьИдентификаторПоОбъекту(ДоступноеПолеКД); КонецЕсли; КонецЕсли; diff --git a/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/ПанельДругихОтчетов/Module.bsl b/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/ПанельДругихОтчетов/Module.bsl index 42face747..f587f3b6b 100644 --- a/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/ПанельДругихОтчетов/Module.bsl +++ b/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/ПанельДругихОтчетов/Module.bsl @@ -33,7 +33,7 @@ // Обработчик нажатия на гиперссылку. // // Параметры: -// Элемент - ДекорацияФормы - +// Элемент - ДекорацияФормы // &НаКлиенте Процедура Подключаемый_ВариантНажатие(Элемент) @@ -95,52 +95,10 @@ ТаблицаВывода.Колонки.Добавить("ЭлементНадоОставить", Новый ОписаниеТипов("Булево")); ТаблицаВывода.Колонки.Добавить("Группа"); - ТекстЗапроса = - "ВЫБРАТЬ РАЗРЕШЕННЫЕ - | ВариантыОтчетов.Ссылка, - | ВариантыОтчетов.Отчет, - | ВариантыОтчетов.КлючВарианта, - | ВариантыОтчетов.Наименование КАК Наименование, - | ВЫБОР - | КОГДА ПОДСТРОКА(ВариантыОтчетов.Описание, 1, 1) = """" - | ТОГДА ВЫРАЗИТЬ(ВариантыОтчетов.ПредопределенныйВариант.Описание КАК СТРОКА(1000)) - | ИНАЧЕ ВЫРАЗИТЬ(ВариантыОтчетов.Описание КАК СТРОКА(1000)) - | КОНЕЦ КАК Описание, - | ВариантыОтчетов.Автор, - | ВариантыОтчетов.Пользовательский, - | ВариантыОтчетов.ТипОтчета, - | ВЫБОР - | КОГДА ТИПЗНАЧЕНИЯ(ВариантыОтчетов.Отчет) = ТИП(Справочник.ИдентификаторыОбъектовМетаданных) - | ТОГДА ВЫРАЗИТЬ(ВариантыОтчетов.Отчет КАК Справочник.ИдентификаторыОбъектовМетаданных).Имя - | КОГДА ТИПЗНАЧЕНИЯ(ВариантыОтчетов.Отчет) = ТИП(Справочник.ИдентификаторыОбъектовРасширений) - | ТОГДА ВЫРАЗИТЬ(ВариантыОтчетов.Отчет КАК Справочник.ИдентификаторыОбъектовРасширений).Имя - | КОГДА ТИПЗНАЧЕНИЯ(ВариантыОтчетов.Отчет) = ТИП(Справочник.ДополнительныеОтчетыИОбработки) - | ТОГДА ВЫРАЗИТЬ(ВариантыОтчетов.Отчет КАК Справочник.ДополнительныеОтчетыИОбработки).ИмяОбъекта - | ИНАЧЕ ВЫРАЗИТЬ(ВариантыОтчетов.Отчет КАК СТРОКА(150)) - | КОНЕЦ КАК ИмяОтчета - |ИЗ - | Справочник.ВариантыОтчетов КАК ВариантыОтчетов - |ГДЕ - | ВариантыОтчетов.Отчет = &Отчет - | И ВариантыОтчетов.ПометкаУдаления = ЛОЖЬ - | И (ВариантыОтчетов.ТолькоДляАвтора = ЛОЖЬ - | ИЛИ ВариантыОтчетов.Автор = &ТекущийПользователь) - | И НЕ ВариантыОтчетов.ПредопределенныйВариант В (&ОтключенныеВариантыПрограммы) - | И ВариантыОтчетов.КлючВарианта <> """" - | - |УПОРЯДОЧИТЬ ПО - | Наименование"; - - Запрос = Новый Запрос; - Запрос.УстановитьПараметр("Отчет", ОтчетСсылка); - Запрос.УстановитьПараметр("ТекущийПользователь", Пользователи.АвторизованныйПользователь()); - Запрос.УстановитьПараметр("ОтключенныеВариантыПрограммы", ВариантыОтчетовПовтИсп.ОтключенныеВариантыПрограммы()); - Запрос.Текст = ТекстЗапроса; - ОбщиеНастройки = ВариантыОтчетов.ОбщиеНастройкиПанели(); ПоказыватьПодсказки = ОбщиеНастройки.ПоказыватьПодсказки = 1; - ТаблицаВариантов = Запрос.Выполнить().Выгрузить(); + ТаблицаВариантов = ДоступныеВариантыОтчетов(); Для Каждого СтрокаТаблицы Из ТаблицаВариантов Цикл // Только другие варианты. Если СтрокаТаблицы.Ссылка = ВариантСсылка Тогда @@ -158,8 +116,10 @@ ПараметрыПоиска.Вставить("Подсистемы", Подсистемы); ПараметрыПоиска.Вставить("ТолькоВидимыеВПанелиОтчетов", Истина); ТаблицаВариантов = ВариантыОтчетов.ТаблицаВариантовОтчетов(ПараметрыПоиска); - - ТаблицаВариантов.Колонки.НаименованиеВарианта.Имя = "Наименование"; + + НайденнаяКолонка = ТаблицаВариантов.Колонки.Найти("НаименованиеВарианта"); + НайденнаяКолонка.Имя = "Наименование"; + ТаблицаВариантов.Сортировать("Наименование"); // Удаление строк, соответствующих текущему (открытому сейчас) варианту. @@ -198,20 +158,106 @@ ЗначениеВРеквизитФормы(ТаблицаВывода, "ВариантыПанели"); КонецПроцедуры +// Возвращаемое значение: +// ТаблицаЗначений: +// * Ссылка - СправочникСсылка.ВариантыОтчетов +// * Отчет - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// - СправочникСсылка.ИдентификаторыОбъектовРасширений +// - СправочникСсылка.ДополнительныеОтчетыИОбработки +// - Строка +// * КлючВарианта - Строка +// * Наименование - Строка +// * Описание - Строка +// * Автор - СправочникСсылка.ВнешниеПользователи +// - СправочникСсылка.Пользователи +// * Пользовательский - Булево +// * ТипОтчета - ПеречислениеСсылка.ТипыОтчетов +// * ИмяОтчета - Строка +// +&НаСервере +Функция ДоступныеВариантыОтчетов() + + Запрос = Новый Запрос( + "ВЫБРАТЬ РАЗРЕШЕННЫЕ + | ВариантыОтчетов.Ссылка, + | ВариантыОтчетов.Отчет, + | ВариантыОтчетов.КлючВарианта, + | ВариантыОтчетов.Наименование КАК Наименование, + | ВЫБОР + | КОГДА ПОДСТРОКА(ВариантыОтчетов.Описание, 1, 1) = """" + | ТОГДА ВЫРАЗИТЬ(ВариантыОтчетов.ПредопределенныйВариант.Описание КАК СТРОКА(1000)) + | ИНАЧЕ ВЫРАЗИТЬ(ВариантыОтчетов.Описание КАК СТРОКА(1000)) + | КОНЕЦ КАК Описание, + | ВариантыОтчетов.Автор, + | ВариантыОтчетов.Пользовательский, + | ВариантыОтчетов.ТипОтчета, + | &ИмяОтчета КАК ИмяОтчета + |ИЗ + | Справочник.ВариантыОтчетов КАК ВариантыОтчетов + |ГДЕ + | ВариантыОтчетов.Отчет = &Отчет + | И НЕ ВариантыОтчетов.ПометкаУдаления + | И (НЕ ВариантыОтчетов.ТолькоДляАвтора + | ИЛИ ВариантыОтчетов.Автор = &ТекущийПользователь) + | И НЕ ВариантыОтчетов.ПредопределенныйВариант В (&ОтключенныеВариантыПрограммы) + | И ВариантыОтчетов.КлючВарианта <> """" + | И ВариантыОтчетов.Контекст = """" + | + |УПОРЯДОЧИТЬ ПО + | Наименование"); + + ИмяОтчета = "ВЫБОР + | КОГДА ТИПЗНАЧЕНИЯ(ВариантыОтчетов.Отчет) = ТИП(Справочник.ИдентификаторыОбъектовМетаданных) + | ТОГДА ВЫРАЗИТЬ(ВариантыОтчетов.Отчет КАК Справочник.ИдентификаторыОбъектовМетаданных).Имя + | КОГДА ТИПЗНАЧЕНИЯ(ВариантыОтчетов.Отчет) = ТИП(Справочник.ИдентификаторыОбъектовРасширений) + | ТОГДА ВЫРАЗИТЬ(ВариантыОтчетов.Отчет КАК Справочник.ИдентификаторыОбъектовРасширений).Имя + | ИНАЧЕ ВЫРАЗИТЬ(ВариантыОтчетов.Отчет КАК СТРОКА(150)) + | КОНЕЦ"; + + Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки") Тогда + + ИмяОтчета = "ВЫБОР + | КОГДА ТИПЗНАЧЕНИЯ(ВариантыОтчетов.Отчет) = ТИП(Справочник.ИдентификаторыОбъектовМетаданных) + | ТОГДА ВЫРАЗИТЬ(ВариантыОтчетов.Отчет КАК Справочник.ИдентификаторыОбъектовМетаданных).Имя + | КОГДА ТИПЗНАЧЕНИЯ(ВариантыОтчетов.Отчет) = ТИП(Справочник.ИдентификаторыОбъектовРасширений) + | ТОГДА ВЫРАЗИТЬ(ВариантыОтчетов.Отчет КАК Справочник.ИдентификаторыОбъектовРасширений).Имя + | КОГДА ТИПЗНАЧЕНИЯ(ВариантыОтчетов.Отчет) = ТИП(Справочник.ДополнительныеОтчетыИОбработки) + | ТОГДА ВЫРАЗИТЬ(ВариантыОтчетов.Отчет КАК Справочник.ДополнительныеОтчетыИОбработки).ИмяОбъекта + | ИНАЧЕ ВЫРАЗИТЬ(ВариантыОтчетов.Отчет КАК СТРОКА(150)) + | КОНЕЦ"; + + КонецЕсли; + + Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ИмяОтчета", ИмяОтчета); + + Запрос.УстановитьПараметр("Отчет", ОтчетСсылка); + Запрос.УстановитьПараметр("ТекущийПользователь", Пользователи.АвторизованныйПользователь()); + Запрос.УстановитьПараметр("ОтключенныеВариантыПрограммы", ВариантыОтчетовПовтИсп.ОтключенныеВариантыПрограммы()); + + Возврат Запрос.Выполнить().Выгрузить(); + +КонецФункции + // Создает элементы формы, ссылающиеся на вариант отчета. // // Параметры: -// ТаблицаВывода - ТаблицаЗначений - где: -// * ЭлементНадоДобавить - Булево - -// * ЭлементНадоОставить - Булево - -// * Группа - ГруппаФормы - -// Вариант - СтрокаТаблицыЗначений - где: -// * Ссылка - СправочникСсылка.ВариантыОтчетов - -// * ТипОтчета - ПеречислениеСсылка.ТипыОтчетов - -// * Описание - Строка - -// * Автор - СправочникСсылка.ВнешниеПользователи, СправочникСсылка.Пользователи - -// Группа - ГруппаФормы, Неопределено, ПолеФормы, ТаблицаФормы, КнопкаФормы, ДекорацияФормы - -// ПоказыватьПодсказки - Булево - +// ТаблицаВывода - ТаблицаЗначений: +// * ЭлементНадоДобавить - Булево +// * ЭлементНадоОставить - Булево +// * Группа - ГруппаФормы +// Вариант - СтрокаТаблицыЗначений: +// * Ссылка - СправочникСсылка.ВариантыОтчетов +// * ТипОтчета - ПеречислениеСсылка.ТипыОтчетов +// * Описание - Строка +// * Автор - СправочникСсылка.ВнешниеПользователи +// - СправочникСсылка.Пользователи +// Группа - ГруппаФормы +// - Неопределено +// - ПолеФормы +// - ТаблицаФормы +// - КнопкаФормы +// - ДекорацияФормы +// ПоказыватьПодсказки - Булево // &НаСервере Процедура ВывестиГиперссылкуВПанель(ТаблицаВывода, Вариант, Группа, ПоказыватьПодсказки) @@ -235,7 +281,7 @@ ЭлементыСтиля = Метаданные.ЭлементыСтиля; // Добавление надписи-гиперссылки варианта отчета. - Надпись = Элементы.Вставить(СтрокаВывода.НадписьИмя, Тип("ДекорацияФормы"), СтрокаВывода.Группа); + Надпись = Элементы.Вставить(СтрокаВывода.НадписьИмя, Тип("ДекорацияФормы"), СтрокаВывода.Группа); // ДекорацияФормы, РасширениеДекорацииФормыДляНадписи Надпись.Вид = ВидДекорацииФормы.Надпись; Надпись.Гиперссылка = Истина; Надпись.РастягиватьПоГоризонтали = Истина; diff --git a/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/СохранениеВариантаОтчета/Form.form b/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/СохранениеВариантаОтчета/Form.form index 3f95a78ad..c303f4140 100644 --- a/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/СохранениеВариантаОтчета/Form.form +++ b/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/СохранениеВариантаОтчета/Form.form @@ -2103,6 +2103,40 @@ true + + ЭтоКонтекстныйВариантОтчета + 4 + + Boolean + + + true + + + true + + + + ВариантыКонтекста + 8 + + ValueList + + + true + + + true + + + + String + + 256 + + + + Далее diff --git a/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/СохранениеВариантаОтчета/Module.bsl b/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/СохранениеВариантаОтчета/Module.bsl index a1128c5ef..4c62a71f6 100644 --- a/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/СохранениеВариантаОтчета/Module.bsl +++ b/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/СохранениеВариантаОтчета/Module.bsl @@ -15,18 +15,16 @@ ОпределитьПоведениеВМобильномКлиенте(); + ПрототипКлюч = Параметры.КлючТекущихНастроек; + ОтчетИнформация = ВариантыОтчетов.ИнформацияОбОтчете(Параметры.КлючОбъекта, Истина); + Контекст = Новый Структура; Контекст.Вставить("ТекущийПользователь", Пользователи.АвторизованныйПользователь()); Контекст.Вставить("ПолныеПраваНаВарианты", ВариантыОтчетов.ПолныеПраваНаВарианты()); - - ПрототипКлюч = Параметры.КлючТекущихНастроек; - - ОтчетИнформация = ВариантыОтчетов.ИнформацияОбОтчете(Параметры.КлючОбъекта, Истина); - Контекст.Вставить("ОтчетСсылка", ОтчетИнформация.Отчет); - Контекст.Вставить("ОтчетИмя", ОтчетИнформация.ОтчетИмя); - Контекст.Вставить("ТипОтчета", ОтчетИнформация.ТипОтчета); - Контекст.Вставить("ЭтоВнешний", ОтчетИнформация.ТипОтчета = Перечисления.ТипыОтчетов.Внешний); + Контекст.Вставить("ОтчетИмя", ОтчетИнформация.ОтчетИмя); + Контекст.Вставить("ТипОтчета", ОтчетИнформация.ТипОтчета); + Контекст.Вставить("ЭтоВнешний", ОтчетИнформация.ТипОтчета = Перечисления.ТипыОтчетов.Внешний); Контекст.Вставить("ПоискПоНаименованию", Новый Соответствие); ЗаполнитьСписокВариантов(); @@ -59,6 +57,16 @@ ТекущийЭлемент = Элементы.Наименование; ВариантыОтчетовКлиент.ОформитьПользователейВариантаОтчета(ЭтотОбъект, Ложь); + ЭтоКонтекстныйВариантОтчета = ЗначениеЗаполнено(ВладелецФормы.КонтекстВарианта); + + Если ЭтоКонтекстныйВариантОтчета Тогда + Элементы.Назад.Видимость = Ложь; + Элементы.Далее.Видимость = Ложь; + + ВариантыКонтекста = ВладелецФормы.ВариантыКонтекста; + ПодключитьОбработчикОжидания("ЗаполнитьСписокВариантовОтложенно", 0.1, Истина); + КонецЕсли; + КонецПроцедуры &НаСервере @@ -105,7 +113,7 @@ НаименованиеМодифицировано = Истина; УстановитьСценарийСохраненияВарианта(); - ВариантыОтчетовКлиент.ОформитьПользователейВариантаОтчета(ЭтотОбъект); + ВариантыОтчетовКлиент.ОформитьПользователейВариантаОтчета(ЭтотОбъект, Ложь); КонецПроцедуры @@ -209,14 +217,16 @@ &НаКлиенте Процедура ПодобратьПользователей(Команда) - ВариантыОтчетовКлиент.ПодобратьПользователейВариантаОтчета(ЭтотОбъект); + ВариантыОтчетовКлиент.ПодобратьПользователейВариантаОтчета( + ЭтотОбъект, Элементы.ПользователиВариантаГруппаПодобрать.Видимость); КонецПроцедуры &НаКлиенте Процедура ПодобратьГруппыВнешнихПользователей(Команда) - ВариантыОтчетовКлиент.ПодобратьПользователейВариантаОтчета(ЭтотОбъект, Истина); + ВариантыОтчетовКлиент.ПодобратьПользователейВариантаОтчета( + ЭтотОбъект, Элементы.ПользователиВариантаГруппаПодобрать.Видимость, Истина); КонецПроцедуры @@ -392,123 +402,15 @@ //////////////////////////////////////////////////////////////////////////////// // Клиент и сервер -&НаСервере -Процедура УстановитьСценарийСохраненияВарианта() - - БудетЗаписанНовый = Ложь; - БудетПерезаписанСуществующий = Ложь; - ПерезаписьНевозможна = Ложь; - - Если НаименованиеМодифицировано Тогда - Поиск = Новый Структура("Наименование", Объект.Наименование); - Иначе - Поиск = Новый Структура("КлючВарианта", ПрототипКлюч); - КонецЕсли; - - НайденныеВарианты = ВариантыОтчета.НайтиСтроки(Поиск); - - Если НайденныеВарианты.Количество() = 0 Тогда - - БудетЗаписанНовый = Истина; - ВариантСсылка = Неопределено; - - Если Не ОписаниеМодифицировано Тогда - Объект.Описание = ""; - КонецЕсли; - - Если Не Контекст.ПолныеПраваНаВарианты Тогда - Объект.ТолькоДляАвтора = Истина; - КонецЕсли; - - Иначе - - Вариант = НайденныеВарианты[0]; // ДанныеФормыЭлементКоллекции - ПравоЗаписиВарианта = ПравоЗаписиВарианта(Вариант, Контекст.ПолныеПраваНаВарианты); - - ЗаполнитьПредставления(Вариант.Ссылка); - - Если ПравоЗаписиВарианта Тогда - - БудетПерезаписанСуществующий = Истина; - НаименованиеМодифицировано = Ложь; - Объект.Наименование = Вариант.Наименование; - - ВариантСсылка = Вариант.Ссылка; - Если Контекст.ПолныеПраваНаВарианты Тогда - Объект.ТолькоДляАвтора = Вариант.ТолькоДляАвтора; - Иначе - Объект.ТолькоДляАвтора = Истина; - КонецЕсли; - - Если Не ОписаниеМодифицировано Тогда - Объект.Описание = Вариант.Описание; - КонецЕсли; - - Иначе - - Если НаименованиеМодифицировано Тогда - ПерезаписьНевозможна = Истина; - Иначе - БудетЗаписанНовый = Истина; - Объект.Наименование = СформироватьСвободноеНаименование(Вариант, ВариантыОтчета); - КонецЕсли; - - ВариантСсылка = Неопределено; - Объект.ТолькоДляАвтора = Истина; - - Если Не ОписаниеМодифицировано Тогда - Объект.Описание = ""; - КонецЕсли; - - КонецЕсли; - - КонецЕсли; - - Если НаименованиеМодифицировано Тогда - Поиск = Новый Структура("КодЯзыка", ТекущийЯзык().КодЯзыка); - НайденныеПредставления = Объект.Представления.НайтиСтроки(Поиск); - - Если НайденныеПредставления.Количество() > 0 Тогда - НайденныеПредставления[0].Наименование = Объект.Наименование; - КонецЕсли; - КонецЕсли; - - Доступен = ?(Объект.ТолькоДляАвтора, "ТолькоДляАвтора", "УказаннымПользователям"); - - Если БудетЗаписанНовый Тогда - - Элементы.ЧтоБудетДальше.ТекущаяСтраница = Элементы.Новый; - Элементы.СброситьНастройки.Видимость = Ложь; - Элементы.Далее.Доступность = Истина; - Элементы.Сохранить.Доступность = Истина; - - ИначеЕсли БудетПерезаписанСуществующий Тогда - - Элементы.ЧтоБудетДальше.ТекущаяСтраница = Элементы.Перезапись; - Элементы.СброситьНастройки.Видимость = Истина; - Элементы.Далее.Доступность = Истина; - Элементы.Сохранить.Доступность = Истина; - - ИначеЕсли ПерезаписьНевозможна Тогда - - Элементы.ЧтоБудетДальше.ТекущаяСтраница = Элементы.ПерезаписьНевозможна; - Элементы.СброситьНастройки.Видимость = Ложь; - Элементы.Далее.Доступность = Ложь; - Элементы.Сохранить.Доступность = Ложь; - - КонецЕсли; - -КонецПроцедуры - // Возвращает признак наличия права изменения варианта отчета. // // Параметры: -// Вариант - ДанныеФормыКоллекция - где: -// * Ссылка - СправочникСсылка.ВариантыОтчетов - -// ПолныеПраваНаВарианты - Булево - +// Вариант - ДанныеФормыКоллекция: +// * Ссылка - СправочникСсылка.ВариантыОтчетов +// ПолныеПраваНаВарианты - Булево // // Возвращаемое значение: -// Булево - +// Булево // &НаКлиентеНаСервереБезКонтекста Функция ПравоНастройкиВарианта(Вариант, ПолныеПраваНаВарианты) @@ -527,13 +429,13 @@ // Возвращает уникальное наименование варианта отчета. // // Параметры: -// Вариант - ДанныеФормыКоллекция - где: -// * Ссылка - СправочникСсылка.ВариантыОтчетов - -// * Наименование - Строка - -// ВариантыОтчета - ДанныеФормыКоллекция - +// Вариант - ДанныеФормыКоллекция: +// * Ссылка - СправочникСсылка.ВариантыОтчетов +// * Наименование - Строка +// ВариантыОтчета - ДанныеФормыКоллекция // // Возвращаемое значение: -// Строка - +// Строка // &НаКлиентеНаСервереБезКонтекста Функция СформироватьСвободноеНаименование(Вариант, ВариантыОтчета) @@ -558,6 +460,15 @@ КонецФункции +&НаКлиенте +Процедура ЗаполнитьСписокВариантовОтложенно() + + Если ВариантыКонтекста.Количество() > 0 Тогда + ЗаполнитьСписокВариантов(); + КонецЕсли; + +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // Вызов сервера @@ -732,6 +643,8 @@ ПараметрыПоиска = Новый Структура("Отчеты, ТолькоЛичные", ОтборОтчеты, Истина); ТаблицаВариантов = ВариантыОтчетов.ТаблицаВариантовОтчетов(ПараметрыПоиска); + ОтчетыСервер.ДобавитьВариантыКонтекста(Контекст.ОтчетСсылка, ТаблицаВариантов, ВариантыКонтекста); + // Заполнить автовычисляемые колонки. ВариантыОтчета.Загрузить(ТаблицаВариантов); Для Каждого Вариант Из ВариантыОтчета Цикл @@ -753,6 +666,114 @@ КонецПроцедуры +&НаСервере +Процедура УстановитьСценарийСохраненияВарианта() + + БудетЗаписанНовый = Ложь; + БудетПерезаписанСуществующий = Ложь; + ПерезаписьНевозможна = Ложь; + + Если НаименованиеМодифицировано Тогда + Поиск = Новый Структура("Наименование", Объект.Наименование); + Иначе + Поиск = Новый Структура("КлючВарианта", ПрототипКлюч); + КонецЕсли; + + НайденныеВарианты = ВариантыОтчета.НайтиСтроки(Поиск); + + Если НайденныеВарианты.Количество() = 0 Тогда + + БудетЗаписанНовый = Истина; + ВариантСсылка = Неопределено; + + Если Не ОписаниеМодифицировано Тогда + Объект.Описание = ""; + КонецЕсли; + + Если Не Контекст.ПолныеПраваНаВарианты Тогда + Объект.ТолькоДляАвтора = Истина; + КонецЕсли; + + Иначе + + Вариант = НайденныеВарианты[0]; // ДанныеФормыЭлементКоллекции + ПравоЗаписиВарианта = ПравоЗаписиВарианта(Вариант, Контекст.ПолныеПраваНаВарианты); + + ЗаполнитьПредставления(Вариант.Ссылка); + + Если ПравоЗаписиВарианта Тогда + + БудетПерезаписанСуществующий = Истина; + НаименованиеМодифицировано = Ложь; + Объект.Наименование = Вариант.Наименование; + + ВариантСсылка = Вариант.Ссылка; + Если Контекст.ПолныеПраваНаВарианты Тогда + Объект.ТолькоДляАвтора = Вариант.ТолькоДляАвтора; + Иначе + Объект.ТолькоДляАвтора = Истина; + КонецЕсли; + + Если Не ОписаниеМодифицировано Тогда + Объект.Описание = Вариант.Описание; + КонецЕсли; + + Иначе + + Если НаименованиеМодифицировано Тогда + ПерезаписьНевозможна = Истина; + Иначе + БудетЗаписанНовый = Истина; + Объект.Наименование = СформироватьСвободноеНаименование(Вариант, ВариантыОтчета); + КонецЕсли; + + ВариантСсылка = Неопределено; + Объект.ТолькоДляАвтора = Истина; + + Если Не ОписаниеМодифицировано Тогда + Объект.Описание = ""; + КонецЕсли; + + КонецЕсли; + + КонецЕсли; + + Если НаименованиеМодифицировано Тогда + Поиск = Новый Структура("КодЯзыка", ТекущийЯзык().КодЯзыка); + НайденныеПредставления = Объект.Представления.НайтиСтроки(Поиск); + + Если НайденныеПредставления.Количество() > 0 Тогда + НайденныеПредставления[0].Наименование = Объект.Наименование; + КонецЕсли; + КонецЕсли; + + Доступен = ?(Объект.ТолькоДляАвтора, "ТолькоДляАвтора", "УказаннымПользователям"); + + Если БудетЗаписанНовый Тогда + + Элементы.ЧтоБудетДальше.ТекущаяСтраница = Элементы.Новый; + Элементы.СброситьНастройки.Видимость = Ложь; + Элементы.Далее.Доступность = Истина; + Элементы.Сохранить.Доступность = Истина; + + ИначеЕсли БудетПерезаписанСуществующий Тогда + + Элементы.ЧтоБудетДальше.ТекущаяСтраница = Элементы.Перезапись; + Элементы.СброситьНастройки.Видимость = Истина; + Элементы.Далее.Доступность = Истина; + Элементы.Сохранить.Доступность = Истина; + + ИначеЕсли ПерезаписьНевозможна Тогда + + Элементы.ЧтоБудетДальше.ТекущаяСтраница = Элементы.ПерезаписьНевозможна; + Элементы.СброситьНастройки.Видимость = Ложь; + Элементы.Далее.Доступность = Ложь; + Элементы.Сохранить.Доступность = Ложь; + + КонецЕсли; + +КонецПроцедуры + &НаСервере Процедура ЗаполнитьПредставления(Вариант) diff --git a/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/ЭлементУсловногоОформленияОтчета/Module.bsl b/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/ЭлементУсловногоОформленияОтчета/Module.bsl index 735d654ad..4096fe303 100644 --- a/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/ЭлементУсловногоОформленияОтчета/Module.bsl +++ b/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/ЭлементУсловногоОформленияОтчета/Module.bsl @@ -43,11 +43,11 @@ Иначе УзелКДИсточник = УзелКД(ЭтотОбъект); Если УзелКДИсточник = Неопределено Тогда - ВызватьИсключение НСтр("ru = 'Не найден узел отчета.'"); + ВызватьИсключение НСтр("ru = 'Не существует узел отчета.'"); КонецЕсли; ЭлементКДИсточник = УзелКДИсточник.ПолучитьОбъектПоИдентификатору(ИдентификаторКД); Если ЭлементКДИсточник = Неопределено Тогда - ВызватьИсключение НСтр("ru = 'Не найден элемент условного оформления.'"); + ВызватьИсключение НСтр("ru = 'Не существует элемент условного оформления.'"); КонецЕсли; ЭлементКД = ОтчетыКлиентСервер.СкопироватьРекурсивно(УзелКД, ЭлементКДИсточник, УзелКД.Элементы, 0, Новый Соответствие); diff --git a/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/ManagerModule.bsl b/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/ManagerModule.bsl index a06d28d9b..faa1382c1 100644 --- a/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/ManagerModule.bsl +++ b/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/ManagerModule.bsl @@ -13,11 +13,11 @@ // Обработчик чтения настроек варианта отчета. // // Параметры: -// КлючОтчета - Строка - Полное имя отчета с точкой. -// КлючВарианта - Строка - Ключ варианта отчета. -// Настройки - Произвольный - Настройки варианта отчета. -// ОписаниеНастроек - ОписаниеНастроек - Дополнительное описание настроек. -// Пользователь - Строка - Имя пользователя ИБ. +// КлючОтчета - Строка - полное имя отчета с точкой. +// КлючВарианта - Строка - ключ варианта отчета. +// Настройки - Произвольный - настройки варианта отчета. +// ОписаниеНастроек - ОписаниеНастроек - дополнительное описание настроек. +// Пользователь - Строка - имя пользователя ИБ. // Не используется, так как подсистема "Варианты отчетов" не разделяет варианты по авторам. // Уникальность хранения и выборки гарантируется уникальностью пар ключей отчетов и вариантов. // @@ -65,11 +65,12 @@ // Обработчик записи настроек варианта отчета. // // Параметры: -// КлючОтчета - Строка - Полное имя отчета с точкой. -// КлючВарианта - Строка - Ключ варианта отчета. -// Настройки - Произвольный - Настройки варианта отчета. -// ОписаниеНастроек - ОписаниеНастроек - Дополнительное описание настроек. -// Пользователь - Строка, Неопределено - Имя пользователя ИБ. +// КлючОтчета - Строка - полное имя отчета с точкой. +// КлючВарианта - Строка - ключ варианта отчета. +// Настройки - Произвольный - настройки варианта отчета. +// ОписаниеНастроек - ОписаниеНастроек - дополнительное описание настроек. +// Пользователь - Строка +// - Неопределено - имя пользователя ИБ. // Не используется, так как подсистема "Варианты отчетов" не разделяет варианты по авторам. // Уникальность хранения и выборки гарантируется уникальностью пар ключей отчетов и вариантов. // @@ -109,16 +110,25 @@ Блокировка.Заблокировать(); ВариантОбъект = СсылкаВарианта.ПолучитьОбъект(); - Если ТипЗнч(Настройки) = Тип("НастройкиКомпоновкиДанных") Тогда // Для платформы. + + Если ТипЗнч(Настройки) = Тип("НастройкиКомпоновкиДанных") Тогда Адрес = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Настройки.ДополнительныеСвойства, "Адрес"); Если ТипЗнч(Адрес) = Тип("Строка") И ЭтоАдресВременногоХранилища(Адрес) Тогда Настройки = ПолучитьИзВременногоХранилища(Адрес); КонецЕсли; + + Контекст = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Настройки.ДополнительныеСвойства, "КонтекстВарианта"); + Если ЗначениеЗаполнено(Контекст) Тогда + ВариантОбъект.Контекст = Контекст; + КонецЕсли; КонецЕсли; + ВариантОбъект.Настройки = Новый ХранилищеЗначения(Настройки); + Если ОписаниеНастроек <> Неопределено Тогда ВариантОбъект.Наименование = ОписаниеНастроек.Представление; КонецЕсли; + ВариантОбъект.Записать(); ЗафиксироватьТранзакцию(); @@ -132,10 +142,11 @@ // Обработчик получения описания настроек варианта отчета. // // Параметры: -// КлючОтчета - Строка - Полное имя отчета с точкой. -// КлючВарианта - Строка - Ключ варианта отчета. -// ОписаниеНастроек - ОписаниеНастроек - Дополнительное описание настроек. -// Пользователь - Строка, Неопределено - Имя пользователя ИБ. +// КлючОтчета - Строка - полное имя отчета с точкой. +// КлючВарианта - Строка - ключ варианта отчета. +// ОписаниеНастроек - ОписаниеНастроек - дополнительное описание настроек. +// Пользователь - Строка +// - Неопределено - имя пользователя ИБ. // Не используется, так как подсистема "Варианты отчетов" не разделяет варианты по авторам. // Уникальность хранения и выборки гарантируется уникальностью пар ключей отчетов и вариантов. // @@ -191,10 +202,10 @@ // Обработчик установки описания настроек варианта отчета. // // Параметры: -// КлючОтчета - Строка - Полное имя отчета с точкой. -// КлючВарианта - Строка - Ключ варианта отчета. -// ОписаниеНастроек - ОписаниеНастроек - Дополнительное описание настроек. -// Пользователь - Строка - Имя пользователя ИБ. +// КлючОтчета - Строка - полное имя отчета с точкой. +// КлючВарианта - Строка - ключ варианта отчета. +// ОписаниеНастроек - ОписаниеНастроек - дополнительное описание настроек. +// Пользователь - Строка - имя пользователя ИБ. // Не используется, так как подсистема "Варианты отчетов" не разделяет варианты по авторам. // Уникальность хранения и выборки гарантируется уникальностью пар ключей отчетов и вариантов. // @@ -264,6 +275,42 @@ Список = Новый СписокЗначений; #Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + + ВариантыОтчетовАвтора = ВариантыОтчетовАвтора(КлючОтчета, Пользователь); + + Если ВариантыОтчетовАвтора <> Неопределено Тогда + + Для Каждого Строка Из ВариантыОтчетовАвтора Цикл + Список.Добавить(Строка.КлючВарианта, Строка.Наименование); + КонецЦикла; + + КонецЕсли; + +#КонецЕсли + + Возврат Список; +КонецФункции + +// АПК:361-вкл + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +// Параметры: +// КлючОтчета - СправочникСсылка.ИдентификаторыОбъектовМетаданных +// - СправочникСсылка.ИдентификаторыОбъектовРасширений +// - СправочникСсылка.ДополнительныеОтчетыИОбработки +// - Строка +// Автор - СправочникСсылка.Пользователи +// - СправочникСсылка.ВнешниеПользователи +// - УникальныйИдентификатор +// +// Возвращаемое значение: +// - Неопределено +// - ТаблицаЗначений: +// * КлючВарианта - Строка +// * Наименование - Строка +// +Функция ВариантыОтчетовАвтора(КлючОтчета, Автор) Если ТипЗнч(КлючОтчета) = Тип("Строка") Тогда ОтчетИнформация = ВариантыОтчетов.ИнформацияОбОтчете(КлючОтчета, Истина); @@ -287,47 +334,49 @@ Запрос.УстановитьПараметр("Отчет", Отчет); - Если Пользователь = "" Тогда - Пользователь = Пользователи.СсылкаНеуказанногоПользователя(); - ИначеЕсли Пользователь = Неопределено Тогда - Пользователь = Пользователи.АвторизованныйПользователь(); + Если Автор = "" Тогда + Автор = Пользователи.СсылкаНеуказанногоПользователя(); + ИначеЕсли Автор = Неопределено Тогда + Автор = Пользователи.АвторизованныйПользователь(); КонецЕсли; - Если ТипЗнч(Пользователь) = Тип("СправочникСсылка.Пользователи") Тогда - Запрос.УстановитьПараметр("Автор", Пользователь); + Если ТипЗнч(Автор) = Тип("СправочникСсылка.Пользователи") Тогда + + Запрос.УстановитьПараметр("Автор", Автор); Запрос.Текст = СтрЗаменить(Запрос.Текст, "И Варианты.Автор.ИдентификаторПользователяИБ = &GUID", ""); Иначе - Если ТипЗнч(Пользователь) = Тип("УникальныйИдентификатор") Тогда - ИдентификаторПользователя = Пользователь; + Если ТипЗнч(Автор) = Тип("УникальныйИдентификатор") Тогда + ИдентификаторПользователя = Автор; Иначе - Если ТипЗнч(Пользователь) = Тип("Строка") Тогда + Если ТипЗнч(Автор) = Тип("Строка") Тогда + УстановитьПривилегированныйРежим(Истина); - ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоИмени(Пользователь); + ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоИмени(Автор); УстановитьПривилегированныйРежим(Ложь); + Если ПользовательИБ = Неопределено Тогда - Возврат Список; + Возврат Неопределено; КонецЕсли; - ИначеЕсли ТипЗнч(Пользователь) = Тип("ПользовательИнформационнойБазы") Тогда - ПользовательИБ = Пользователь; + + ИначеЕсли ТипЗнч(Автор) = Тип("ПользовательИнформационнойБазы") Тогда + + ПользовательИБ = Автор; Иначе - Возврат Список; + Возврат Неопределено; КонецЕсли; + ИдентификаторПользователя = ПользовательИБ.УникальныйИдентификатор; КонецЕсли; + Запрос.УстановитьПараметр("GUID", ИдентификаторПользователя); Запрос.Текст = СтрЗаменить(Запрос.Текст, "И Варианты.Автор = &Автор", ""); КонецЕсли; - ТаблицаВариантов = Запрос.Выполнить().Выгрузить(); - Для Каждого СтрокаТаблицы Из ТаблицаВариантов Цикл - Список.Добавить(СтрокаТаблицы.КлючВарианта, СтрокаТаблицы.Наименование); - КонецЦикла; -#КонецЕсли - - Возврат Список; + Возврат Запрос.Выполнить().Выгрузить(); + КонецФункции -// АПК:361-вкл +#КонецЕсли Процедура Удалить(КлючОтчета, КлючВарианта, Знач Пользователь) Экспорт #Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда @@ -407,6 +456,14 @@ #Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда +// Параметры: +// ВариантыОтчета - см. ВариантыОтчетов.ТаблицаВариантовОтчетов +// ПолноеИмяОтчета - Строка +// ИмяОтчета - Строка +// +// Возвращаемое значение: +// Булево +// Функция ДобавитьВариантыВнешнегоОтчета(ВариантыОтчета, ПолноеИмяОтчета, ИмяОтчета) Экспорт Попытка ОтчетОбъект = ОтчетыСервер.ОтчетОбъект(ПолноеИмяОтчета); diff --git a/SSL/src/StyleItems/ДействиеВКолонкеСпискаШрифт/ДействиеВКолонкеСпискаШрифт.mdo b/SSL/src/StyleItems/ДействиеВКолонкеСпискаШрифт/ДействиеВКолонкеСпискаШрифт.mdo new file mode 100644 index 000000000..b09550c26 --- /dev/null +++ b/SSL/src/StyleItems/ДействиеВКолонкеСпискаШрифт/ДействиеВКолонкеСпискаШрифт.mdo @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:StyleItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="75561d71-4b06-40fc-8a46-ed5d33c80dea"> + <name>ДействиеВКолонкеСпискаШрифт</name> + <synonym> + <key>ru</key> + <value>Действие в колонке списка шрифт</value> + </synonym> + <type>Font</type> + <value xsi:type="core:FontValue"> + <value xsi:type="core:FontRef"> + <font>Style.NormalTextFont</font> + <bold>false</bold> + <italic>false</italic> + <underline>true</underline> + <strikeout>false</strikeout> + </value> + </value> +</mdclass:StyleItem> diff --git a/SSL/src/StyleItems/ОбразецНастройкиКолонтитуловШрифт/ОбразецНастройкиКолонтитуловШрифт.mdo b/SSL/src/StyleItems/ОбразецНастройкиКолонтитуловШрифт/ОбразецНастройкиКолонтитуловШрифт.mdo new file mode 100644 index 000000000..497248885 --- /dev/null +++ b/SSL/src/StyleItems/ОбразецНастройкиКолонтитуловШрифт/ОбразецНастройкиКолонтитуловШрифт.mdo @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:StyleItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="3cf15377-a5bb-4c37-9780-0dbff8d3d5bb"> + <name>ОбразецНастройкиКолонтитуловШрифт</name> + <synonym> + <key>ru</key> + <value>Образец настройки колонтитулов шрифт</value> + </synonym> + <type>Font</type> + <value xsi:type="core:FontValue"> + <value xsi:type="core:FontDef"> + <faceName>Arial</faceName> + <height>20.0</height> + </value> + </value> +</mdclass:StyleItem> diff --git a/SSL/src/StyleItems/ПравоНедействительногоПользователяФон/ПравоНедействительногоПользователяФон.mdo b/SSL/src/StyleItems/ПравоНедействительногоПользователяФон/ПравоНедействительногоПользователяФон.mdo new file mode 100644 index 000000000..5779fc629 --- /dev/null +++ b/SSL/src/StyleItems/ПравоНедействительногоПользователяФон/ПравоНедействительногоПользователяФон.mdo @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:StyleItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="46692974-34aa-45e1-8fec-9b36064073cd"> + <name>ПравоНедействительногоПользователяФон</name> + <synonym> + <key>ru</key> + <value>Право недействительного пользователя фон</value> + </synonym> + <value xsi:type="core:ColorValue"> + <value xsi:type="core:ColorRef"> + <color>Web.WhiteSmoke</color> + </value> + </value> +</mdclass:StyleItem> diff --git a/SSL/src/StyleItems/ПравоПросмотраФон/ПравоПросмотраФон.mdo b/SSL/src/StyleItems/ПравоПросмотраФон/ПравоПросмотраФон.mdo new file mode 100644 index 000000000..1d1e2c5ab --- /dev/null +++ b/SSL/src/StyleItems/ПравоПросмотраФон/ПравоПросмотраФон.mdo @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:StyleItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="a6308250-2b1b-40ef-bd20-589d519e3c38"> + <name>ПравоПросмотраФон</name> + <synonym> + <key>ru</key> + <value>Право просмотра фон</value> + </synonym> + <value xsi:type="core:ColorValue"> + <value xsi:type="core:ColorRef"> + <color>Web.HoneyDew</color> + </value> + </value> +</mdclass:StyleItem> diff --git a/SSL/src/StyleItems/ПравоРедактированияФон/ПравоРедактированияФон.mdo b/SSL/src/StyleItems/ПравоРедактированияФон/ПравоРедактированияФон.mdo new file mode 100644 index 000000000..ac9ccc0ce --- /dev/null +++ b/SSL/src/StyleItems/ПравоРедактированияФон/ПравоРедактированияФон.mdo @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:StyleItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="22eafd3b-dc42-4a99-89af-3cd5311dc29f"> + <name>ПравоРедактированияФон</name> + <synonym> + <key>ru</key> + <value>Право редактирования фон</value> + </synonym> + <value xsi:type="core:ColorValue"> + <value xsi:type="core:ColorRef"> + <color>Web.LightYellow</color> + </value> + </value> +</mdclass:StyleItem> diff --git a/SSL/src/StyleItems/ПравоСозданияФон/ПравоСозданияФон.mdo b/SSL/src/StyleItems/ПравоСозданияФон/ПравоСозданияФон.mdo new file mode 100644 index 000000000..068930420 --- /dev/null +++ b/SSL/src/StyleItems/ПравоСозданияФон/ПравоСозданияФон.mdo @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:StyleItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="c67f671a-3c83-44f4-9c6a-e06667ac8da6"> + <name>ПравоСозданияФон</name> + <synonym> + <key>ru</key> + <value>Право создания фон</value> + </synonym> + <value xsi:type="core:ColorValue"> + <value xsi:type="core:ColorRef"> + <color>Web.MistyRose</color> + </value> + </value> +</mdclass:StyleItem> diff --git a/SSL/src/Subsystems/Администрирование/Администрирование.mdo b/SSL/src/Subsystems/Администрирование/Администрирование.mdo index 8ccf62e8b..c35b7ad24 100644 --- a/SSL/src/Subsystems/Администрирование/Администрирование.mdo +++ b/SSL/src/Subsystems/Администрирование/Администрирование.mdo @@ -104,4 +104,5 @@ <content>DataProcessor.НастройкаСтандартногоИнтерфейсаOData</content> <content>Catalog.ВнешниеКомпоненты</content> <content>Catalog.ШаблоныСообщений</content> + <content>Report.АнализПравДоступа</content> </mdclass:Subsystem> diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/БазоваяФункциональность/БазоваяФункциональность.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/БазоваяФункциональность/БазоваяФункциональность.mdo index f38a58c81..82c1f079b 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/БазоваяФункциональность/БазоваяФункциональность.mdo +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/БазоваяФункциональность/БазоваяФункциональность.mdo @@ -267,6 +267,7 @@ <content>CommonModule.МультиязычностьПереопределяемый</content> <content>SessionParameter.ОсновнойЯзык</content> <content>CommonModule.МультиязычностьПовтИсп</content> + <content>CommonPicture.ПодменюСервис</content> <content>CommonForm.КонтрольДинамическогоОбновления</content> <parentSubsystem>Subsystem.СтандартныеПодсистемы</parentSubsystem> </mdclass:Subsystem> diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Валюты/Валюты.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Валюты/Валюты.mdo index fb54ae0c3..cbb346ffe 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Валюты/Валюты.mdo +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Валюты/Валюты.mdo @@ -29,5 +29,6 @@ <content>CommonModule.РаботаСКурсамиВалютСлужебный</content> <content>CommonCommand.ЗагрузитьКурсыВалют</content> <content>XDTOPackage.CurrencyRates</content> + <content>DefinedType.КурсВалюты</content> <parentSubsystem>Subsystem.СтандартныеПодсистемы</parentSubsystem> </mdclass:Subsystem> diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ВариантыОтчетов/ВариантыОтчетов.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ВариантыОтчетов/ВариантыОтчетов.mdo index 4b315aeb1..58c7fd339 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ВариантыОтчетов/ВариантыОтчетов.mdo +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ВариантыОтчетов/ВариантыОтчетов.mdo @@ -82,5 +82,6 @@ <content>StyleItem.РазделВариантовОтчетовШрифт</content> <content>StyleItem.ФонРезультатовПоиска</content> <content>StyleItem.ОбразецНастройкиКолонтитуловЦвет</content> + <content>StyleItem.ОбразецНастройкиКолонтитуловШрифт</content> <parentSubsystem>Subsystem.СтандартныеПодсистемы</parentSubsystem> </mdclass:Subsystem> diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ГрупповоеИзменениеОбъектов/ГрупповоеИзменениеОбъектов.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ГрупповоеИзменениеОбъектов/ГрупповоеИзменениеОбъектов.mdo index 10f9ca14e..1f3085dd4 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ГрупповоеИзменениеОбъектов/ГрупповоеИзменениеОбъектов.mdo +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ГрупповоеИзменениеОбъектов/ГрупповоеИзменениеОбъектов.mdo @@ -13,5 +13,6 @@ <content>DataProcessor.ГрупповоеИзменениеРеквизитов</content> <content>CommonModule.ГрупповоеИзменениеОбъектовКлиент</content> <content>CommonModule.ГрупповоеИзменениеОбъектовПереопределяемый</content> + <content>CommonModule.ГрупповоеИзменениеОбъектов</content> <parentSubsystem>Subsystem.СтандартныеПодсистемы</parentSubsystem> </mdclass:Subsystem> diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/КонтактнаяИнформация/КонтактнаяИнформация.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/КонтактнаяИнформация/КонтактнаяИнформация.mdo index f0dc8d6e8..636b3a30b 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/КонтактнаяИнформация/КонтактнаяИнформация.mdo +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/КонтактнаяИнформация/КонтактнаяИнформация.mdo @@ -49,5 +49,6 @@ <content>CommonModule.УправлениеКонтактнойИнформациейПереопределяемый</content> <content>SessionParameter.ИнтерактивнаяПроверкаЗаполненияКонтактнойИнформации</content> <content>EventSubscription.КонтактнаяИнформацияОбработкаПроверкиЗаполнения</content> + <content>ScheduledJob.ИсправлениеУстаревшихАдресов</content> <parentSubsystem>Subsystem.СтандартныеПодсистемы</parentSubsystem> </mdclass:Subsystem> diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ОбновлениеВерсииИБ/ОбновлениеВерсииИБ.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ОбновлениеВерсииИБ/ОбновлениеВерсииИБ.mdo index e0cab1b55..dacbde08c 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ОбновлениеВерсииИБ/ОбновлениеВерсииИБ.mdo +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ОбновлениеВерсииИБ/ОбновлениеВерсииИБ.mdo @@ -35,5 +35,12 @@ <content>CommonModule.ОбновлениеИнформационнойБазыБСП</content> <content>Constant.КоличествоПотоковОбновленияИнформационнойБазы</content> <content>EventSubscription.ОбновлениеВерсииИБПередУдалениемСсылочногоОбъекта</content> + <content>InformationRegister.ОбработчикиОбновления</content> + <content>InformationRegister.ПотокиОбновления</content> + <content>InformationRegister.ОбработчикиОбновленияОбщихДанных</content> + <content>Enum.СтатусыОбработчиковОбновления</content> + <content>Enum.РежимыВыполненияОбработчиков</content> + <content>Enum.РежимыВыполненияОтложенныхОбработчиков</content> + <content>DataProcessor.ОписаниеОбработчиковОбновления</content> <parentSubsystem>Subsystem.СтандартныеПодсистемы</parentSubsystem> </mdclass:Subsystem> diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Обсуждения/Обсуждения.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Обсуждения/Обсуждения.mdo index 7d9bf7f65..fcbfb8b27 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Обсуждения/Обсуждения.mdo +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Обсуждения/Обсуждения.mdo @@ -11,5 +11,12 @@ <content>CommonModule.ОбсужденияСлужебныйВызовСервера</content> <content>CommonModule.ОбсужденияСлужебный</content> <content>CommonCommand.Обсуждения</content> + <content>CommonModule.ОбсужденияСлужебныйКлиентСервер</content> + <content>CommonModule.Обсуждения</content> + <content>CommonPicture.Телеграм16х16</content> + <content>CommonPicture.ВКонтакте16х16</content> + <content>CommonPicture.BotFather</content> + <content>CommonPicture.BotFatherВконтакте</content> + <content>CommonModule.ОбсужденияКлиент</content> <parentSubsystem>Subsystem.СтандартныеПодсистемы</parentSubsystem> </mdclass:Subsystem> diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Пользователи/Пользователи.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Пользователи/Пользователи.mdo index 6cb664906..1589dfbcf 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Пользователи/Пользователи.mdo +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Пользователи/Пользователи.mdo @@ -35,7 +35,7 @@ <content>Catalog.ГруппыВнешнихПользователей</content> <content>Catalog.ВнешниеПользователи</content> <content>Constant.ИспользоватьВнешнихПользователей</content> - <content>EventSubscription.ОбновитьПредставлениеВнешнегоПользователя</content> + <content>EventSubscription.ОбновитьВнешнегоПользователя</content> <content>Role.ЧтениеВнешнихПользователей</content> <content>Role.ДобавлениеИзменениеВнешнихПользователей</content> <content>SessionParameter.ТекущийВнешнийПользователь</content> diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/ОбновлениеВерсииИБВМоделиСервиса/ОбновлениеВерсииИБВМоделиСервиса.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/ОбновлениеВерсииИБВМоделиСервиса/ОбновлениеВерсииИБВМоделиСервиса.mdo index a87bb8323..13a9fd518 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/ОбновлениеВерсииИБВМоделиСервиса/ОбновлениеВерсииИБВМоделиСервиса.mdo +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/ОбновлениеВерсииИБВМоделиСервиса/ОбновлениеВерсииИБВМоделиСервиса.mdo @@ -9,5 +9,6 @@ <content>InformationRegister.ВерсииПодсистемОбластейДанных</content> <content>CommonForm.ПриоритетОбновленияВОбластяхДанных</content> <content>Constant.ПриоритетОбновленияВОбластяхДанных</content> + <content>Report.ПрогрессОбновленияОбластейДанных</content> <parentSubsystem>Subsystem.СтандартныеПодсистемы.Subsystem.РаботаВМоделиСервиса</parentSubsystem> </mdclass:Subsystem> diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаСПочтовымиСообщениями/РаботаСПочтовымиСообщениями.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаСПочтовымиСообщениями/РаботаСПочтовымиСообщениями.mdo index 419c06494..a446fca9e 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаСПочтовымиСообщениями/РаботаСПочтовымиСообщениями.mdo +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаСПочтовымиСообщениями/РаботаСПочтовымиСообщениями.mdo @@ -23,7 +23,7 @@ <content>CommonModule.РаботаСПочтовымиСообщениямиПереопределяемый</content> <content>CommonModule.РаботаСПочтовымиСообщениямиКлиентПереопределяемый</content> <content>Role.ЧтениеУчетныхЗаписейЭлектроннойПочты</content> - <content>CommonPicture.ВводимыеСимволыВидны</content> <content>CommonPicture.ВводимыеСимволыСкрыты</content> + <content>CommonPicture.ВводимыеСимволыВидны</content> <parentSubsystem>Subsystem.СтандартныеПодсистемы</parentSubsystem> </mdclass:Subsystem> diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/СтруктураПодчиненности/СтруктураПодчиненности.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/СтруктураПодчиненности/СтруктураПодчиненности.mdo index 4857ca9a2..05fbe4b2e 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/СтруктураПодчиненности/СтруктураПодчиненности.mdo +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/СтруктураПодчиненности/СтруктураПодчиненности.mdo @@ -48,5 +48,6 @@ <content>CommonPicture.СправочникПВХПомеченНаУдалениеКоннекторЛевоВерх</content> <content>CommonPicture.СправочникПВХПомеченНаУдалениеКоннекторЛевоНиз</content> <content>CommonPicture.СправочникПВХПомеченНаУдалениеКоннекторНиз</content> + <content>CommonPicture.СтруктураПодчиненности</content> <parentSubsystem>Subsystem.СтандартныеПодсистемы</parentSubsystem> </mdclass:Subsystem> diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/УдалениеПомеченныхОбъектов/УдалениеПомеченныхОбъектов.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/УдалениеПомеченныхОбъектов/УдалениеПомеченныхОбъектов.mdo index e62d334a3..40d376e07 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/УдалениеПомеченныхОбъектов/УдалениеПомеченныхОбъектов.mdo +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/УдалениеПомеченныхОбъектов/УдалениеПомеченныхОбъектов.mdo @@ -14,5 +14,17 @@ <content>CommonModule.УдалениеПомеченныхОбъектов</content> <content>CommonModule.УдалениеПомеченныхОбъектовКлиент</content> <content>CommonModule.УдалениеПомеченныхОбъектовСлужебныйВызовСервера</content> + <content>Constant.ПроверятьИспользованиеУдаляемыхОбъектов</content> + <content>InformationRegister.УдаляемыеОбъекты</content> + <content>EventSubscription.ЗапретитьИспользованиеУдаляемыхОбъектовВОбъектах</content> + <content>EventSubscription.ЗапретитьИспользованиеУдаляемыхОбъектовВНаборахЗаписей</content> + <content>EventSubscription.ЗапретитьИспользованиеУдаляемыхОбъектовВНаборахРегистровРасчета</content> + <content>EventSubscription.ЗапретитьИспользованиеУдаляемыхОбъектовВКонстантах</content> + <content>ScheduledJob.ОтключениеПроверкиИспользованияУдаляемыхОбъектов</content> + <content>InformationRegister.НеудаленныеОбъекты</content> + <content>CommonModule.УдалениеПомеченныхОбъектовСлужебныйКлиентСервер</content> + <content>CommonModule.УдалениеПомеченныхПовтИсп</content> + <content>StyleItem.ДействиеВКолонкеСпискаШрифт</content> + <content>SessionParameter.ВыполняетсяУдалениеОбъектов</content> <parentSubsystem>Subsystem.СтандартныеПодсистемы</parentSubsystem> </mdclass:Subsystem> diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/УправлениеДоступом/УправлениеДоступом.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/УправлениеДоступом/УправлениеДоступом.mdo index 5df9aac4c..3d49bfa08 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/УправлениеДоступом/УправлениеДоступом.mdo +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/УправлениеДоступом/УправлениеДоступом.mdo @@ -112,5 +112,13 @@ <content>EventSubscription.ПроверитьДоступПередУдалением</content> <content>Constant.ПервоеОбновлениеДоступаЗавершилось</content> <content>EventSubscription.ОбновитьЗначенияГруппДоступа</content> + <content>Report.АнализПравДоступа</content> + <content>CommonPicture.Создание</content> + <content>CommonPicture.Редактирование</content> + <content>CommonPicture.Просмотр</content> + <content>StyleItem.ПравоПросмотраФон</content> + <content>StyleItem.ПравоРедактированияФон</content> + <content>StyleItem.ПравоСозданияФон</content> + <content>StyleItem.ПравоНедействительногоПользователяФон</content> <parentSubsystem>Subsystem.СтандартныеПодсистемы</parentSubsystem> </mdclass:Subsystem> diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/УчетОригиналовПервичныхДокументов/CommandInterface.cmi b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/УчетОригиналовПервичныхДокументов/CommandInterface.cmi new file mode 100644 index 000000000..9ab0c789e --- /dev/null +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/УчетОригиналовПервичныхДокументов/CommandInterface.cmi @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="UTF-8"?> +<cmi:CommandInterface xmlns:cmi="http://g5.1c.ru/v8/dt/cmi"> + <commandsVisibility> + <visibilityFragments> + <command>Catalog.СостоянияОригиналовПервичныхДокументов.StandardCommand.OpenList</command> + <visible> + <common>true</common> + </visible> + </visibilityFragments> + <visibilityFragments> + <command>Catalog.СостоянияОригиналовПервичныхДокументов.StandardCommand.Create</command> + <visible> + <common>true</common> + </visible> + </visibilityFragments> + </commandsVisibility> + <commandsPlacement> + <placementFragments> + <group>NavigationPanelOrdinary</group> + <commands>Catalog.СостоянияОригиналовПервичныхДокументов.StandardCommand.OpenList</commands> + </placementFragments> + </commandsPlacement> + <commandsOrder> + <orderFragments> + <group>NavigationPanelOrdinary</group> + <commands>Catalog.СостоянияОригиналовПервичныхДокументов.StandardCommand.OpenList</commands> + </orderFragments> + </commandsOrder> +</cmi:CommandInterface> diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/УчетОригиналовПервичныхДокументов/УчетОригиналовПервичныхДокументов.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/УчетОригиналовПервичныхДокументов/УчетОригиналовПервичныхДокументов.mdo new file mode 100644 index 000000000..ae60aedf3 --- /dev/null +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/УчетОригиналовПервичныхДокументов/УчетОригиналовПервичныхДокументов.mdo @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:Subsystem xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="bc89af7a-1971-4245-8d88-1a5a50c50a8b"> + <name>УчетОригиналовПервичныхДокументов</name> + <synonym> + <key>ru</key> + <value>Учет оригиналов первичных документов</value> + </synonym> + <content>InformationRegister.СостоянияОригиналовПервичныхДокументов</content> + <content>Catalog.СостоянияОригиналовПервичныхДокументов</content> + <content>FunctionalOption.ИспользоватьУчетОригиналовПервичныхДокументов</content> + <content>Constant.ИспользоватьУчетОригиналовПервичныхДокументов</content> + <content>CommonModule.УчетОригиналовПервичныхДокументовВызовСервера</content> + <content>CommonModule.УчетОригиналовПервичныхДокументовКлиентПереопределяемый</content> + <content>CommonModule.УчетОригиналовПервичныхДокументов</content> + <content>CommonModule.УчетОригиналовПервичныхДокументовКлиент</content> + <content>Role.ИзменениеСостоянийОригиналовПервичныхДокументов</content> + <content>Role.ДобавлениеИзменениеСостоянийОригиналовПервичныхДокументов</content> + <content>CommonCommand.ЖурналУчетаОригиналовПервичныхДокументов</content> + <content>CommonPicture.УстановитьСостояниеОригиналаПервичногоДокумента</content> + <content>CommonPicture.УточнитьСостояниеОригиналаПервичногоДокументаПоПечатнымФормам</content> + <content>CommonPicture.СостояниеОригиналаПервичногоДокументаОригиналПолучен</content> + <content>CommonPicture.СостояниеОригиналаПервичногоДокументаОригиналНеПолучен</content> + <content>CommonPicture.НастроитьСостоянияОригиналаПервичногоДокумента</content> + <content>CommonPicture.КоллекцияПиктограммПечатныеФормыОригиналаПервичногоДокумента</content> + <content>CommonPicture.КоллекцияПиктограммНаличиеОригиналаПервичногоДокумента</content> + <content>CommonPicture.ПиктограммыЭлементовСправочникаСостоянияОригиналовПервичныхДокументов</content> + <content>DefinedType.ОбъектСУчетомОригиналовПервичныхДокументов</content> + <content>Role.ЧтениеСостоянийОригиналовПервичныхДокументов</content> + <content>CommonModule.УчетОригиналовПервичныхДокументовПереопределяемый</content> + <parentSubsystem>Subsystem.СтандартныеПодсистемы</parentSubsystem> +</mdclass:Subsystem> diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ЭлектроннаяПодпись/ЭлектроннаяПодпись.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ЭлектроннаяПодпись/ЭлектроннаяПодпись.mdo index 790d51afb..8a6541b1b 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ЭлектроннаяПодпись/ЭлектроннаяПодпись.mdo +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ЭлектроннаяПодпись/ЭлектроннаяПодпись.mdo @@ -46,7 +46,7 @@ <content>DataProcessor.ПрограммыЭлектроннойПодписиИШифрования</content> <content>DataProcessor.ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата</content> <content>CommonForm.РезультатПроверки</content> - <content>CommonModule.ЭлектроннаяПодписьЛокализацияКлиентСервер</content> + <content>CommonModule.ЭлектроннаяПодписьКлиентСерверЛокализация</content> <content>CommonModule.ЗаявлениеНаСертификатПереопределяемый</content> <content>StyleItem.ЗаявлениеНаВыпускСертификатаЗаголовокКлючевогоПоляШрифт</content> <content>Constant.КлассификаторОшибокКриптографии</content> diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/СтандартныеПодсистемы.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/СтандартныеПодсистемы.mdo index 7bd914600..24e4ad4ea 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/СтандартныеПодсистемы.mdo +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/СтандартныеПодсистемы.mdo @@ -64,6 +64,7 @@ <subsystems>УдалениеПомеченныхОбъектов</subsystems> <subsystems>УправлениеДоступом</subsystems> <subsystems>УправлениеИтогамиИАгрегатами</subsystems> + <subsystems>УчетОригиналовПервичныхДокументов</subsystems> <subsystems>ЦентрМониторинга</subsystems> <subsystems>ШаблоныСообщений</subsystems> <subsystems>ЭлектроннаяПодпись</subsystems> diff --git a/SSL/src/Tasks/ЗадачаИсполнителя/Forms/МоиЗадачи/Module.bsl b/SSL/src/Tasks/ЗадачаИсполнителя/Forms/МоиЗадачи/Module.bsl index 3462b0ab1..3196b50a4 100644 --- a/SSL/src/Tasks/ЗадачаИсполнителя/Forms/МоиЗадачи/Module.bsl +++ b/SSL/src/Tasks/ЗадачаИсполнителя/Forms/МоиЗадачи/Module.bsl @@ -111,13 +111,15 @@ &НаКлиенте Процедура СписокПриАктивизацииСтроки(Элемент) + Если Элемент.ТекущиеДанные <> Неопределено И Элемент.ТекущиеДанные.Свойство("ПринятаКИсполнению") И НЕ Элемент.ТекущиеДанные.ПринятаКИсполнению Тогда - Элементы.ПринятьКИсполнению.Доступность= Истина; + ДоступностьПунктаПринятьКИсполнению(Истина); Иначе - Элементы.ПринятьКИсполнению.Доступность= Ложь; + ДоступностьПунктаПринятьКИсполнению(Ложь); КонецЕсли; + КонецПроцедуры #КонецОбласти @@ -128,13 +130,15 @@ Процедура ПринятьКИсполнению(Команда) БизнесПроцессыИЗадачиКлиент.ПринятьЗадачиКИсполнению(Элементы.Список.ВыделенныеСтроки); - + ДоступностьПунктаПринятьКИсполнению(Ложь); + КонецПроцедуры &НаКлиенте Процедура ОтменитьПринятиеКИсполнению(Команда) БизнесПроцессыИЗадачиКлиент.ОтменитьПринятиеЗадачКИсполнению(Элементы.Список.ВыделенныеСтроки); + ДоступностьПунктаПринятьКИсполнению(Истина); КонецПроцедуры @@ -229,4 +233,13 @@ КонецПроцедуры +&НаКлиенте +Процедура ДоступностьПунктаПринятьКИсполнению(ЗначениеФлага) + + Элементы.ПринятьКИсполнению.Доступность = ЗначениеФлага; + Элементы.СписокКонтекстноеМенюПринятьКИсполнению.Доступность = ЗначениеФлага; + Элементы.СписокКонтекстноеМенюОтменитьПринятиеКИсполнению.Доступность = Не ЗначениеФлага; + +КонецПроцедуры + #КонецОбласти \ No newline at end of file diff --git a/SSL/src/Tasks/ЗадачаИсполнителя/Forms/МоиЗадачиДляРабочегоСтола/Module.bsl b/SSL/src/Tasks/ЗадачаИсполнителя/Forms/МоиЗадачиДляРабочегоСтола/Module.bsl index 8fcedce8d..8191de026 100644 --- a/SSL/src/Tasks/ЗадачаИсполнителя/Forms/МоиЗадачиДляРабочегоСтола/Module.bsl +++ b/SSL/src/Tasks/ЗадачаИсполнителя/Forms/МоиЗадачиДляРабочегоСтола/Module.bsl @@ -55,9 +55,9 @@ Если Элемент.ТекущиеДанные <> Неопределено И Элемент.ТекущиеДанные.Свойство("ПринятаКИсполнению") И НЕ Элемент.ТекущиеДанные.ПринятаКИсполнению Тогда - Элементы.ПринятьКИсполнению.Доступность= Истина; + ДоступностьПунктаПринятьКИсполнению(Истина); Иначе - Элементы.ПринятьКИсполнению.Доступность= Ложь; + ДоступностьПунктаПринятьКИсполнению(Ложь); КонецЕсли; КонецПроцедуры @@ -109,6 +109,7 @@ Процедура ПринятьКИсполнению(Команда) БизнесПроцессыИЗадачиКлиент.ПринятьЗадачиКИсполнению(Элементы.Список.ВыделенныеСтроки); + ДоступностьПунктаПринятьКИсполнению(Ложь); КонецПроцедуры @@ -116,6 +117,7 @@ Процедура ОтменитьПринятиеКИсполнению(Команда) БизнесПроцессыИЗадачиКлиент.ОтменитьПринятиеЗадачКИсполнению(Элементы.Список.ВыделенныеСтроки); + ДоступностьПунктаПринятьКИсполнению(Истина); КонецПроцедуры @@ -207,4 +209,13 @@ КонецПроцедуры +&НаКлиенте +Процедура ДоступностьПунктаПринятьКИсполнению(ЗначениеФлага) + + Элементы.ПринятьКИсполнению.Доступность = ЗначениеФлага; + Элементы.СписокКонтекстноеМенюПринятьКИсполнению.Доступность = ЗначениеФлага; + Элементы.СписокКонтекстноеМенюОтменитьПринятиеКИсполнению.Доступность = Не ЗначениеФлага; + +КонецПроцедуры + #КонецОбласти diff --git a/SSL/src/Tasks/ЗадачаИсполнителя/Forms/ПеренаправитьЗадачи/Form.form b/SSL/src/Tasks/ЗадачаИсполнителя/Forms/ПеренаправитьЗадачи/Form.form index c8eae800c..2275bcb8d 100644 --- a/SSL/src/Tasks/ЗадачаИсполнителя/Forms/ПеренаправитьЗадачи/Form.form +++ b/SSL/src/Tasks/ЗадачаИсполнителя/Forms/ПеренаправитьЗадачи/Form.form @@ -1039,7 +1039,7 @@ </use> <action xsi:type="form:FormCommandHandlerContainer"> <handler> - <name>OK</name> + <name>Перенаправить</name> </handler> </action> <currentRowUse>DontUse</currentRowUse> diff --git a/SSL/src/Tasks/ЗадачаИсполнителя/Forms/ПеренаправитьЗадачи/Module.bsl b/SSL/src/Tasks/ЗадачаИсполнителя/Forms/ПеренаправитьЗадачи/Module.bsl index a8bac2bd9..1a9752b14 100644 --- a/SSL/src/Tasks/ЗадачаИсполнителя/Forms/ПеренаправитьЗадачи/Module.bsl +++ b/SSL/src/Tasks/ЗадачаИсполнителя/Forms/ПеренаправитьЗадачи/Module.bsl @@ -125,7 +125,7 @@ #Область ОбработчикиКомандФормы &НаКлиенте -Процедура OK(Команда) +Процедура Перенаправить(Команда) ОчиститьСообщения(); Если НЕ ПроверитьЗаполнение() Тогда diff --git a/SSL/src/Tasks/ЗадачаИсполнителя/Forms/ФормаСписка/Module.bsl b/SSL/src/Tasks/ЗадачаИсполнителя/Forms/ФормаСписка/Module.bsl index 430e4af03..c3dc962b1 100644 --- a/SSL/src/Tasks/ЗадачаИсполнителя/Forms/ФормаСписка/Module.bsl +++ b/SSL/src/Tasks/ЗадачаИсполнителя/Forms/ФормаСписка/Module.bsl @@ -136,9 +136,9 @@ Если Элемент.ТекущиеДанные <> Неопределено И Элемент.ТекущиеДанные.Свойство("ПринятаКИсполнению") И НЕ Элемент.ТекущиеДанные.ПринятаКИсполнению Тогда - Элементы.ПринятьКИсполнению.Доступность= Истина; + ДоступностьПунктаПринятьКИсполнению(Истина); Иначе - Элементы.ПринятьКИсполнению.Доступность= Ложь; + ДоступностьПунктаПринятьКИсполнению(Ложь); КонецЕсли; КонецПроцедуры @@ -150,6 +150,7 @@ Процедура ПринятьКИсполнению(Команда) БизнесПроцессыИЗадачиКлиент.ПринятьЗадачиКИсполнению(Элементы.Список.ВыделенныеСтроки); + ДоступностьПунктаПринятьКИсполнению(Ложь); КонецПроцедуры @@ -157,6 +158,7 @@ Процедура ОтменитьПринятиеКИсполнению(Команда) БизнесПроцессыИЗадачиКлиент.ОтменитьПринятиеЗадачКИсполнению(Элементы.Список.ВыделенныеСтроки); + ДоступностьПунктаПринятьКИсполнению(Истина); КонецПроцедуры @@ -251,4 +253,13 @@ КонецПроцедуры +&НаКлиенте +Процедура ДоступностьПунктаПринятьКИсполнению(ЗначениеФлага) + + Элементы.ПринятьКИсполнению.Доступность = ЗначениеФлага; + Элементы.СписокКонтекстноеМенюПринятьКИсполнению.Доступность = ЗначениеФлага; + Элементы.СписокКонтекстноеМенюОтменитьПринятиеКИсполнению.Доступность = Не ЗначениеФлага; + +КонецПроцедуры + #КонецОбласти diff --git a/SSL/src/Tasks/ЗадачаИсполнителя/ManagerModule.bsl b/SSL/src/Tasks/ЗадачаИсполнителя/ManagerModule.bsl index bda3ab757..01b4b9c30 100644 --- a/SSL/src/Tasks/ЗадачаИсполнителя/ManagerModule.bsl +++ b/SSL/src/Tasks/ЗадачаИсполнителя/ManagerModule.bsl @@ -18,7 +18,8 @@ // с помощью обработки группового изменения реквизитов. // // Возвращаемое значение: -// Массив Из Строка - +// Массив Из Строка +// Функция РеквизитыРедактируемыеВГрупповойОбработке() Экспорт Результат = Новый Массив; diff --git a/SSL/src/Tasks/ЗадачаИсполнителя/ObjectModule.bsl b/SSL/src/Tasks/ЗадачаИсполнителя/ObjectModule.bsl index 5d486453a..5618ba824 100644 --- a/SSL/src/Tasks/ЗадачаИсполнителя/ObjectModule.bsl +++ b/SSL/src/Tasks/ЗадачаИсполнителя/ObjectModule.bsl @@ -150,7 +150,7 @@ // Определяет, заполнены ли реквизиты адресации: исполнитель или роль исполнителя // // Возвращаемое значение: -// Булево - Возвращает Истина, если в задаче указан исполнитель или роль исполнителя. +// Булево - возвращает Истина, если в задаче указан исполнитель или роль исполнителя. // Функция РеквизитыАдресацииЗаполнены() diff --git a/SSL/src/WebServices/EnterpriseDataExchange_1_0_1_1/Module.bsl b/SSL/src/WebServices/EnterpriseDataExchange_1_0_1_1/Module.bsl index de2057eeb..1f5450383 100644 --- a/SSL/src/WebServices/EnterpriseDataExchange_1_0_1_1/Module.bsl +++ b/SSL/src/WebServices/EnterpriseDataExchange_1_0_1_1/Module.bsl @@ -114,7 +114,8 @@ ПараметрыВыполнения.НаименованиеФоновогоЗадания = НСтр("ru = 'Загрузка данных в информационную базу через web-сервис ""Enterprise Data Exchange""'"); ПараметрыВыполнения.КлючФоновогоЗадания = Строка(Новый УникальныйИдентификатор); - ПараметрыВыполнения.ЗапуститьВФоне = Истина; + ПараметрыВыполнения.ОжидатьЗавершение = 0; + ПараметрыВыполнения.ЗапуститьВФоне = Истина; ФоновоеЗадание = ДлительныеОперации.ВыполнитьВФоне( "ОбменДаннымиСлужебный.ЗагрузитьДанныеXDTOВИнформационнуюБазу", @@ -148,7 +149,8 @@ ПараметрыВыполнения.НаименованиеФоновогоЗадания = НСтр("ru = 'Подготовка к выгрузке данных из информационной базы через web-сервис ""Enterprise Data Exchange""'"); ПараметрыВыполнения.КлючФоновогоЗадания = Строка(Новый УникальныйИдентификатор); - ПараметрыВыполнения.ЗапуститьВФоне = Истина; + ПараметрыВыполнения.ОжидатьЗавершение = 0; + ПараметрыВыполнения.ЗапуститьВФоне = Истина; ФоновоеЗадание = ДлительныеОперации.ВыполнитьВФоне( "ОбменДаннымиСлужебный.ПодготовитьДанныеДляВыгрузкиИзИнформационнойБазы", diff --git a/SSL/src/WebServices/EnterpriseDataUpload_1_0_1_1/Module.bsl b/SSL/src/WebServices/EnterpriseDataUpload_1_0_1_1/Module.bsl index 998fb4cf3..adfcbcbeb 100644 --- a/SSL/src/WebServices/EnterpriseDataUpload_1_0_1_1/Module.bsl +++ b/SSL/src/WebServices/EnterpriseDataUpload_1_0_1_1/Module.bsl @@ -71,7 +71,8 @@ ПараметрыВыполнения.НаименованиеФоновогоЗадания = НСтр("ru = 'Загрузка данных в информационную базу через web-сервис ""Enterprise Data Upload""'"); ПараметрыВыполнения.КлючФоновогоЗадания = Строка(Новый УникальныйИдентификатор); - ПараметрыВыполнения.ЗапуститьВФоне = Истина; + ПараметрыВыполнения.ОжидатьЗавершение = 0; + ПараметрыВыполнения.ЗапуститьВФоне = Истина; ФоновоеЗадание = ДлительныеОперации.ВыполнитьВФоне( "ОбменДаннымиСлужебный.ЗагрузитьДанныеXDTOВИнформационнуюБазу", diff --git a/SSL/src/WebServices/Exchange_3_0_1_1/Module.bsl b/SSL/src/WebServices/Exchange_3_0_1_1/Module.bsl index f03a21dc8..471404909 100644 --- a/SSL/src/WebServices/Exchange_3_0_1_1/Module.bsl +++ b/SSL/src/WebServices/Exchange_3_0_1_1/Module.bsl @@ -100,7 +100,6 @@ Параметры = СериализаторXDTO.ПрочитатьXDTO(ПараметрыXDTO); НастройкиПодключения = Параметры.НастройкиПодключения; - СтрокаПараметровXML = Параметры.СтрокаПараметровXML; МодульПомощникНастройки = ОбменДаннымиСервер.МодульПомощникСозданияОбменаДанными(); Попытка diff --git a/SSL/src/WebServices/InterfaceVersion/Module.bsl b/SSL/src/WebServices/InterfaceVersion/Module.bsl index f7badc69d..7689e128c 100644 --- a/SSL/src/WebServices/InterfaceVersion/Module.bsl +++ b/SSL/src/WebServices/InterfaceVersion/Module.bsl @@ -11,7 +11,7 @@ // Возвращает массив поддерживаемых подсистемой InterfaceName названий номеров версий. // // Параметры: -// InterfaceName - Строка - Имя подсистемы. +// InterfaceName - Строка - имя подсистемы. // // Возвращаемое значение: // Массив строк. diff --git a/SSL/src/WebServices/RemoteAdministrationOfExchange_2_1_6_1/Module.bsl b/SSL/src/WebServices/RemoteAdministrationOfExchange_2_1_6_1/Module.bsl index 81c458fff..3f1888875 100644 --- a/SSL/src/WebServices/RemoteAdministrationOfExchange_2_1_6_1/Module.bsl +++ b/SSL/src/WebServices/RemoteAdministrationOfExchange_2_1_6_1/Module.bsl @@ -215,8 +215,7 @@ // Соответствует операции Ping Функция Ping() - // Заглушка. Необходима, чтобы не выдавалась ошибка проверки конфигурации. - Заглушка = Истина; + Возврат ""; КонецФункции diff --git a/SSL/src/WebServices/RemoteAdministrationOfExchange_2_4_5_1/Module.bsl b/SSL/src/WebServices/RemoteAdministrationOfExchange_2_4_5_1/Module.bsl index 1ec98fb22..937ee0426 100644 --- a/SSL/src/WebServices/RemoteAdministrationOfExchange_2_4_5_1/Module.bsl +++ b/SSL/src/WebServices/RemoteAdministrationOfExchange_2_4_5_1/Module.bsl @@ -244,8 +244,7 @@ // Соответствует операции Ping Функция Ping() - // Заглушка. Необходима, чтобы не выдавалась ошибка проверки конфигурации. - Заглушка = Истина; + Возврат ""; КонецФункции diff --git a/SSL/src/XDTOPackages/ExchangeMessage/Package.xdto b/SSL/src/XDTOPackages/ExchangeMessage/Package.xdto index 618916d41..6ecf541ae 100644 --- a/SSL/src/XDTOPackages/ExchangeMessage/Package.xdto +++ b/SSL/src/XDTOPackages/ExchangeMessage/Package.xdto @@ -15,6 +15,7 @@ <property name="NewFrom" type="xs:string" lowerBound="0"/> <property xmlns:d3p1="http://www.1c.ru/SSL/Exchange/Message" name="AvailableObjectTypes" type="d3p1:AvailableObjectTypes" lowerBound="0" nillable="true"/> <property name="Prefix" type="xs:string" lowerBound="0"/> + <property xmlns:d3p1="http://www.1c.ru/SSL/Exchange/Message" name="AvailableExtensions" type="d3p1:AvailableExtensions" lowerBound="0"/> </objectType> <objectType name="Object" open="false" abstract="true"> <property name="AdditionalInfo" type="xs:anyType" lowerBound="0"/> @@ -27,4 +28,11 @@ <property name="Sending" type="xs:string" lowerBound="0"/> <property name="Receiving" type="xs:string" lowerBound="0"/> </objectType> + <objectType name="AvailableExtensions"> + <property xmlns:d3p1="http://www.1c.ru/SSL/Exchange/Message" name="Extension" type="d3p1:Extension" lowerBound="0" upperBound="-1"/> + </objectType> + <objectType name="Extension" open="true"> + <property name="Namespace" type="xs:string"/> + <property name="BaseVersion" type="xs:string"/> + </objectType> </package> \ No newline at end of file