├── LICENSE ├── README.MD ├── bsl-language-server.json ├── docs └── img │ ├── 01.png │ ├── 02.png │ ├── 03.png │ ├── 04.png │ ├── 05.png │ └── 06.png ├── gitignore ├── sonar-project.properties ├── ИТМ_АдминистрированиеДинамическихСписков ├── .project ├── .settings │ └── org.eclipse.core.resources.prefs ├── DT-INF │ └── PROJECT.PMF └── src │ ├── Catalogs │ ├── КлючевыеОперации │ │ └── КлючевыеОперации.mdo │ └── Пользователи │ │ └── Пользователи.mdo │ ├── CommonModules │ ├── ИТМ_АдминистрированиеДинамическихСписков │ │ ├── Module.bsl │ │ └── ИТМ_АдминистрированиеДинамическихСписков.mdo │ ├── ИТМ_АдминистрированиеДинамическихСписковВызовСервера │ │ ├── Module.bsl │ │ └── ИТМ_АдминистрированиеДинамическихСписковВызовСервера.mdo │ ├── ИТМ_АдминистрированиеДинамическихСписковКлиент │ │ ├── Module.bsl │ │ └── ИТМ_АдминистрированиеДинамическихСписковКлиент.mdo │ ├── ИТМ_АдминистрированиеДинамическихСписковКлиентПереопределяемый │ │ ├── Module.bsl │ │ └── ИТМ_АдминистрированиеДинамическихСписковКлиентПереопределяемый.mdo │ ├── ИТМ_АдминистрированиеДинамическихСписковКлиентСервер │ │ ├── Module.bsl │ │ └── ИТМ_АдминистрированиеДинамическихСписковКлиентСервер.mdo │ ├── ИТМ_АдминистрированиеДинамическихСписковПереопределяемый │ │ ├── Module.bsl │ │ └── ИТМ_АдминистрированиеДинамическихСписковПереопределяемый.mdo │ └── ИТМ_АдминистрированиеДинамическихСписковПовтИсп │ │ ├── Module.bsl │ │ └── ИТМ_АдминистрированиеДинамическихСписковПовтИсп.mdo │ ├── Configuration │ └── Configuration.mdo │ ├── InformationRegisters │ ├── ИТМ_ИсторияОбновленияДинамическихСписков │ │ ├── Forms │ │ │ ├── ФормаЗаписи │ │ │ │ ├── Form.form │ │ │ │ └── Module.bsl │ │ │ └── ФормаСписка │ │ │ │ ├── Attributes │ │ │ │ └── Список │ │ │ │ │ └── ExtInfo │ │ │ │ │ └── ListSettings.dcss │ │ │ │ ├── Form.form │ │ │ │ └── Module.bsl │ │ ├── ManagerModule.bsl │ │ ├── RecordSetModule.bsl │ │ └── ИТМ_ИсторияОбновленияДинамическихСписков.mdo │ └── ИТМ_НастройкиДинамическихСписков │ │ ├── Forms │ │ ├── ФормаВыбораКлюча │ │ │ ├── Attributes │ │ │ │ └── Список │ │ │ │ │ └── ExtInfo │ │ │ │ │ └── ListSettings.dcss │ │ │ ├── Form.form │ │ │ └── Module.bsl │ │ ├── ФормаВыбораФормы │ │ │ ├── Form.form │ │ │ ├── Items │ │ │ │ └── ДоступныеФормы │ │ │ │ │ └── RowsPicture.png │ │ │ └── Module.bsl │ │ ├── ФормаЗаписи │ │ │ ├── Form.form │ │ │ └── Module.bsl │ │ ├── ФормаСозданияКлюча │ │ │ ├── Form.form │ │ │ └── Module.bsl │ │ └── ФормаСписка │ │ │ ├── Attributes │ │ │ └── Список │ │ │ │ └── ExtInfo │ │ │ │ └── ListSettings.dcss │ │ │ ├── Form.form │ │ │ └── Module.bsl │ │ ├── ManagerModule.bsl │ │ ├── RecordSetModule.bsl │ │ └── ИТМ_НастройкиДинамическихСписков.mdo │ ├── Roles │ ├── ИТМ_ИзменениеИсторияОбновленияДинамическихСписков │ │ ├── Rights.rights │ │ └── ИТМ_ИзменениеИсторияОбновленияДинамическихСписков.mdo │ ├── ИТМ_ИзменениеНастройкиДинамическихСписков │ │ ├── Rights.rights │ │ └── ИТМ_ИзменениеНастройкиДинамическихСписков.mdo │ ├── ИТМ_ЧтениеИсторияОбновленияДинамическихСписков │ │ ├── Rights.rights │ │ └── ИТМ_ЧтениеИсторияОбновленияДинамическихСписков.mdo │ └── ИТМ_ЧтениеНастройкиДинамическихСписков │ │ ├── Rights.rights │ │ └── ИТМ_ЧтениеНастройкиДинамическихСписков.mdo │ └── Subsystems │ └── ИТМ_АдминистрированиеДинамическихСписков │ ├── CommandInterface.cmi │ └── ИТМ_АдминистрированиеДинамическихСписков.mdo └── ИТМ_АдминистрированиеДинамическихСписков_Демо ├── .project ├── .settings └── org.eclipse.core.resources.prefs ├── DT-INF └── PROJECT.PMF └── src ├── Catalogs └── ИТМ_ТестовыйСправочник │ ├── Forms │ └── ФормаСписка │ │ ├── Attributes │ │ └── Список │ │ │ └── ExtInfo │ │ │ └── ListSettings.dcss │ │ ├── Form.form │ │ └── Module.bsl │ └── ИТМ_ТестовыйСправочник.mdo ├── Configuration └── Configuration.mdo ├── Documents └── ИТМ_ТестовыйДокумент │ ├── Forms │ └── ФормаСписка │ │ ├── Attributes │ │ └── Список │ │ │ └── ExtInfo │ │ │ └── ListSettings.dcss │ │ ├── Form.form │ │ └── Module.bsl │ └── ИТМ_ТестовыйДокумент.mdo └── Subsystems └── ИТМ_АдминистрированиеДинамическихСписков_Демо ├── CommandInterface.cmi └── ИТМ_АдминистрированиеДинамическихСписков_Демо.mdo /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright 2024 chernenko_vv 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /README.MD: -------------------------------------------------------------------------------- 1 | # Администрирование динамических списков 2 | 3 | Расширение "Администрирование динамических списков" предназначено для настройки подключенных форм списка в режиме предприятия. 4 | 5 | - [О подсистеме](#о-подсистеме) 6 | - [Установка](#установка) 7 | - [Требования к конфигурации](#требования-к-конфигурации) 8 | - [Демонстрационное расширение](#демонстрационное-расширение) 9 | - [Внедрение](#внедрение) 10 | - [Использование](#использование) 11 | - [Добавление настройки](#добавление-настройки) 12 | - [Перечень настроек](#перечень-настроек) 13 | - [Настройки ограничения полей](#настройки-ограничения-полей) 14 | - [История обновления списка](#история-обновления-списка) 15 | - [Запреты открытия](#запреты-открытия) 16 | - [Подмена источника](#подмена-источника) 17 | - [Переопределения](#переопределения) 18 | - [Нюансы работы](#нюансы-работы) 19 | - [В планах](#в-планах) 20 | - [Заключение](#заключение) 21 | 22 | ## О подсистеме 23 | 24 | Что даёт подсистема? Предположим, есть в системе некий тип документов. Их много, форма списка содержит сложный запрос, а пользователи любят применять неоптимальные настройки. Отбирать, сортировать и даже группировать по полям "через точку". И ответственный за подсистему решает, что пора ограничить возможности пользователей. Это и позволяет сделать подсистема прямо в режиме предприятия и без необходимости обновлять информационную базу. 25 | 26 | Среди возможностей есть: 27 | 28 | - Гибкая настройка ограничений использования полей в Отбора, Группировках и Сортировках 29 | - Отключение возможности настройки Отборов, Группировок, Сортировок и Условного оформления 30 | - Автоматическое отключение пользовательских настроек при открытии формы списка 31 | - Установка периода при открытии формы списка 32 | - Подмена свойств динамического списка (запрос, параметры, обязательные отборы и так далее) 33 | - Запрет открытия формы по условиям 34 | - Логирование пользовательских настроек в списках в истории для последующего анализа 35 | 36 | Все изменения применяются в момент открытия формы с динамическим списком и не требует перезапуска сеанса. 37 | 38 | ## Установка 39 | 40 | Актуальную версию можно скачать на странице релизов 41 | 42 | Расширение универсальное и создано на основе БСП. Однако, в зависимости от целевой конфигурации, может потребоваться установка в режиме конфигуратора (с решением некоторых конфликтов свойств). Снимаются все галочки кроме "Активно". 43 | 44 | ### Требования к конфигурации 45 | 46 | Подсистема требует наличие БСП в конфигурации 47 | 48 | \+ На данный момент подсистема использует справочник Ключевые операции, поэтому хотя бы во время настройки необходимо включить подсистему БСП "Оценка производительности". Далее её можно отключить. Это необходимо, чтобы была активна функциональная опция, которая активирует справочник ключевых операций. Со временем от этого откажемся и перенесемм на независимый справочник. 49 | 50 | ### Демонстрационное расширение 51 | 52 | Демо расширение содержит подключенный к подсистеме документ и справочник, на которых можно провести эксперименты настроек 53 | 54 | ### Внедрение 55 | 56 | Для внедрения подсистемы необходимо в подключаемые формы списка внести вызовы методов подсистемы. 57 | 58 | Это можно делать: 59 | 60 | 1. В самом расширении подсистемы 61 | 2. Непосредственно в конфигурации 62 | 3. В отдельном расширении 63 | 64 | Первый способ самый удобный в использовании, но обновлять расширение придется далее вручную. 65 | При способах 2 и 3 лучше обращаться к модулям не напрямую, а через методы БСП `ОбщегоНазначения.ОбщийМодуль(ИмяМодуля)` и `ОбщегоНазначенияКлиент.ОбщийМодуль(ИмяМодуля)` 66 | 67 | Пример можно увидеть в демо расширении 68 | 69 | Для подключения формы списка необходимо доработать: 70 | 71 | - В событии формы `ПриСозданииНаСервере` вызвать метод: 72 | 73 | ```bsl 74 | ИТМ_АдминистрированиеДинамическихСписков.ПриСозданииНаСервере(ЭтотОбъект); 75 | ``` 76 | 77 | - В событии элемента спика `ПередЗагрузкойПользовательскихНастроекНаСервере` вызвать метод: 78 | 79 | ```bsl 80 | ИТМ_АдминистрированиеДинамическихСписков.ПередЗагрузкойПользовательскихНастроекНаСервере(ЭтотОбъект, Элемент, Настройки, ИспользуютсяСтандартныеНастройки); 81 | ``` 82 | 83 | - В событии формы `ПриОткрытии` вызвать метод: 84 | 85 | ```bsl 86 | ИТМ_АдминистрированиеДинамическихСписковКлиент.ПриОткрытии(ЭтотОбъект, Отказ); 87 | ``` 88 | 89 | - Для оптимизации рекомендуется добавить на форму реквизит `НастройкиДинамическихСписков` с типом `Произвольный` 90 | ⠀ 91 | - Чтобы работал механизм истории обновлений (его использовать не обязательно), необходимо дополнительно: 92 | - В событии элемента списка `ПриПолученииДанныхНаСервере` вызвать: 93 | 94 | ```bsl 95 | ИТМ_АдминистрированиеДинамическихСписков.ПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки); 96 | ``` 97 | 98 | - В событии формы `ПриЗакрытии` вызвать метод: 99 | 100 | ```bsl 101 | ИТМ_АдминистрированиеДинамическихСписковКлиент.ПриЗакрытии(ЭтотОбъект, ЗавершениеРаботы); 102 | ``` 103 | 104 | - Добавить экспортный метод для обработчика ожидания: 105 | 106 | ```bsl 107 | &НаКлиенте 108 | Процедура ИТМ_ОбработатьНакопленныеСобытияОбновления() Экспорт 109 | ИТМ_АдминистрированиеДинамическихСписковКлиент.ОбработатьНакопленныеСобытияОбновления(ЭтотОбъект); 110 | КонецПроцедуры 111 | ``` 112 | 113 | ## Использование 114 | 115 | Все настройки подсистемы находятся в регистре сведений `Настройки динамических списков`. 116 | `e1cib/list/РегистрСведений.ИТМ_НастройкиДинамическихСписков` 117 | 118 | ### Добавление настройки 119 | 120 | Для добавления новой настройки: 121 | 122 | - В списке нажимаем `Создать` 123 | 124 | ![image](docs/img/01.png)\ 125 | 126 | - Появляется форма списка с доступными ключевыми операциями. Этот справочник используется как ключ для настроек динамических списков. Поэтому, необходимо либо добавить новую ключевую операцию, либо выбрать существующую. 127 | 128 | ![image](docs/img/02.png) 129 | ⠀⠀ 130 | - Для добавления ключевой операции нажимаем в списке `Создать` 131 | 132 | ![image](docs/img/03.png) 133 | ⠀⠀ 134 | - Вводим полное имя формы (или выбираем из доступных) 135 | 136 | ![image](docs/img/04.png) 137 | ⠀⠀ 138 | - Вводим имя элемента списка (или выбираем из доступных) 139 | 140 | ![image](docs/img/05.png) 141 | ⠀⠀ 142 | - Нажимаем `Создать элемент` 143 | ⠀⠀ 144 | ![image](docs/img/06.png) 145 | ⠀⠀ 146 | - Выбираем нужную ключевую операцию. В форме списка настроек появляется добавленная нами строка 147 | 148 | ### Перечень настроек 149 | 150 | - **Применять настройки к списку** - Используются ли введенные ниже настройки 151 | - **Основные** 152 | - **Отключать пользовательские настройки при открытии** - При открытии формы списка будут отключены пользовательские настройки 153 | - **...кроме** - Имена полей, которые не будут отключены при открытии 154 | - **Удалять недоступные поля настроек** - Стоит ли дополнительно удалять все недоступные элементы пользовательских настроек. 155 | - Например, изменились ограничения отборов. Но у пользователя в настройках остались отборы по теперь запрещенному полю. Такие отборы будут удалены. Или удалили какой-то реквизит документа. Но у пользователя в настройках остался отбор по нему. Такой отборы так же будет удален. 156 | - **Динамическое считывание данных** - Одноименное свойство динамического списка 157 | - **Автоматическое сохранение пользовательских настроек** - Одноименное свойство динамического списка 158 | - **Устанавливать период при открытии** - При открытии формы списка будет установлен указанный в настройке период 159 | - **Источник** 160 | - **Использовать настройки источника** - Применяются ли настройки источника данных 161 | - **Основная таблица** - Одноименное свойство динамического списка 162 | - **Авто заполнение доступных полей** - Одноименное свойство динамического списка 163 | - **Получение представлений для невидимых полей** - Одноименное свойство динамического списка 164 | - **Текст запроса** - Одноименное свойство динамического списка 165 | - **Параметры** - Параметры динамического списка 166 | - **Отбор** - Отбор динамического списка 167 | - **Сортировка** - Сортировка динамического списка 168 | - **Отбор** 169 | - **Использование настроек отбора** - Применяются ли настройки ограничений списка 170 | - **...кроме ролей** - Для этих ролей настройки применятся не будут 171 | - **Отключать пользовательские настройки при открытии** - При открытии формы списка будут отключены пользовательские настройки 172 | - **...кроме** - Имена полей, которые не будут отключены при открытии 173 | - **Исключить из меню "Настроить список"** - Исключить пункт "Отборы" из меню "Настроить список" 174 | - **Полный запрет по всем полям** - Полный запрет отборов по всем полям 175 | - **Запрещать по:** 176 | - **Ссылочным** - Запрещать по полям ссылочного типа 177 | - **Не индексируемым** - Запрещать по НЕ индексируемым полям 178 | - **Таблицам** - Запрещать по табличным частям 179 | - **Составным** - Запрещать по полям составного типа 180 | - **Подчиненным** - Запрещать по подчиненным полям 181 | - **Подчиненным не индексируемых** - Запрещать по подчиненным НЕ индексируемых полей 182 | - **Таблицам подчиненных** - Запрещать по табличным частям подчиненных полей 183 | - **Подчиненным составных** - Запрещать по подчиненным полям составных 184 | - **Исключения:** 185 | - **Запрещенные** - дополнительно запрещенные поля 186 | - **Разрешенные** - дополнительно разрешенные поля 187 | - **Группировки** 188 | - **Использование настроек группировки** - Применяются ли настройки ограничений списка 189 | - **...кроме ролей** - Для этих ролей настройки применятся не будут 190 | - **Отключать пользовательские настройки при открытии** - При открытии формы списка будут отключены пользовательские настройки 191 | - **...кроме** - Имена полей, которые не будут отключены при открытии 192 | - **Исключить из меню "Настроить список"** - Исключить пункт "Группировка" из меню "Настроить список" 193 | - **Полный запрет по всем полям** - Полный запрет группировки по всем полям 194 | - **Запрещать по:** 195 | - **Ссылочным** - Запрещать по полям ссылочного типа 196 | - **Не индексируемым** - Запрещать по НЕ индексируемым полям 197 | - **Таблицам** - Запрещать по табличным частям 198 | - **Составным** - Запрещать по полям составного типа 199 | - **Подчиненным** - Запрещать по подчиненным полям 200 | - **Подчиненным не индексируемых** - Запрещать по подчиненным НЕ индексируемых полей 201 | - **Таблицам подчиненных** - Запрещать по табличным частям подчиненных полей 202 | - **Подчиненным составных** - Запрещать по подчиненным полям составных 203 | - **Исключения:** 204 | - **Запрещенные** - дополнительно запрещенные поля 205 | - **Разрешенные** - дополнительно разрешенные поля 206 | - **Сортировка** 207 | - **Использование настроек сортировки** - Применяются ли настройки ограничений списка 208 | - **...кроме ролей** - Для этих ролей настройки применятся не будут 209 | - **Отключать пользовательские настройки при открытии** - При открытии формы списка будут отключены пользовательские настройки 210 | - **...кроме** - Имена полей, которые не будут отключены при открытии 211 | - **Исключить из меню "Настроить список"** - Исключить пункт "Сортировка" из меню "Настроить список" 212 | - **Полный запрет по всем полям** - Полный запрет сортировки по всем полям 213 | - **Запрещать по:** 214 | - **Ссылочным** - Запрещать по полям ссылочного типа 215 | - **Не индексируемым** - Запрещать по НЕ индексируемым полям 216 | - **Таблицам** - Запрещать по табличным частям 217 | - **Составным** - Запрещать по полям составного типа 218 | - **Подчиненным** - Запрещать по подчиненным полям 219 | - **Подчиненным не индексируемых** - Запрещать по подчиненным НЕ индексируемых полей 220 | - **Таблицам подчиненных** - Запрещать по табличным частям подчиненных полей 221 | - **Подчиненным составных** - Запрещать по подчиненным полям составных 222 | - **Исключения:** 223 | - **Запрещенные** - дополнительно запрещенные поля 224 | - **Разрешенные** - дополнительно разрешенные поля 225 | - **Условное оформление** 226 | - **Использование настроек условного оформления** - Применяются ли настройки ограничений списка 227 | - **Отключать пользовательские настройки при открытии** - При открытии формы списка будут отключены пользовательские настройки 228 | - **...кроме** - Имена полей, которые не будут отключены при открытии 229 | - **Исключить из меню "Настроить список"** - Исключить пункт "Условного оформление" из меню "Настроить список" 230 | - **История обновления** 231 | - **Фиксировать историю обновления** - Нужно ли фиксировать историю обновления динамического списка 232 | - **Частота записи (с.)** - Часто записи накопленной истории. Если 0, то история будет писаться сразу в событии получения данных ДС. 233 | - **Только при изменении настроек** - Стоит ли проверять настройки на изменение \ 234 | _Ложь_ - записываться будет каждое событие обмена списка\ 235 | _Истина_ - записываться будет только если настройки отличаются от прошлого события обновления списка в этой форме 236 | - **Фиксировать:** 237 | - **Все события** - Все события обновления списка 238 | - **Если есть группировки** - Фиксировать, если в настройках есть группировки 239 | - **Если есть сортировки** - Фиксировать, если в настройках есть сортировки 240 | - **Если есть отборы** - Фиксировать, если в настройках есть отборы 241 | - **Запреты открытия** 242 | - **Использовать запреты открытия формы** - Позволяет установить запрет открытия формы в зависимости от условий 243 | - **...кроме ролей** - Запреты не будут распространяться на обладателей ролей 244 | - **Условия запрета** - Таблица с условиями, при которых должен происходить запрет открытия формы 245 | - **Дополнительно** - Дополнительные значения, доступные в коде. Хранятся в соответствии. 246 | 247 | ### Настройки ограничения полей 248 | 249 | Ограничения полей (на отборы, группировки, сортировки) можно устанавливать несколькими способами: 250 | 251 | 1. Полное ограничение. Таким образом можно, например, запретить полностью использование Группировок 252 | 2. Ограничение по признакам. Это, например, ограничение на НЕ индексируемые поля. Или подчиненные поля. Или табличные части. Все варианты можно комбинировать и использовать вместе. 253 | 3. Точечная настройка. Позволяет самостоятельно прописать те поля-исключения которые запрещены (или же наоборот разрешены в противовес остальных настроек). Для точечной настройки используется формат: 254 | - `ИмяПоля.*` - поле и его подчиненные 255 | - `ИмяПоля` - само поле (без подчиненных) 256 | - `ИмяПоля.ИмяПодчиненногоПоля` - конкретное подчиненное поле 257 | - `[Имя поля]` - доп. поле (доп. реквизит или свойство), подключаемое через Характеристики платформы 258 | 4. Изменение текста запроса. В подсистеме есть возможность полностью подменить текст запроса динамического списка. При помощи этого так же можно установить ограничения полей, используя конструкции расширения языка запросов СКД. 259 | 260 | ### История обновления списка 261 | 262 | В подсистеме есть возможность фиксирования истории обновления динамических списков. \ 263 | К сожалению, ограничения платформы не позволяют определять скорость обновления ДС. \ 264 | Но подсистема дает возможность собрать сведения о самих выполняемых настройках пользователей. 265 | 266 | История хранится в регистре сведений `История обновления динамических списков`. 267 | `e1cib/list/РегистрСведений.ИТМ_ИсторияОбновленияДинамическихСписков` 268 | 269 | Как это работает: в событии `ПриПолученииДанныхНаСервере()` у динамического списка происходит фиксация текущих настроек. 270 | 271 | Если в настройках установлена частота записи, то с заданной частотой происходит анализ открытых форм и сбор накопленных в них настройках, чтобы поместить в регистр сведений. 272 | 273 | Если же в настройках частота записи пустая, то при каждом обновлении динамического списка будет происходить запись в регистр сведений. 274 | 275 | ### Запреты открытия 276 | 277 | В подсистеме есть возможность установить запрет открытия формы. 278 | При этом задается текст запрета и условия, при которых форму нельзя открыть. 279 | На данный момент в условиях можно опираться на значения констант и параметров сеанса. 280 | 281 | ### Подмена источника 282 | 283 | В подсистеме есть возможность подмены всех свойств динамического списка. 284 | Например, если в запросе списка обнаружена ошибка или неоптимальность и её срочно нужно исправить, то для этого можно воспользоваться данным функционалом и переопределить текст запроса динамического списка. 285 | 286 | ### Переопределения 287 | 288 | Подсистема имеет преопределяемые модули. В сочитаниям с возможностью в настройка списка указывать произвольные дополнительные значения, это позволяет добавлять свои ограничения и параметры работы списков 289 | 290 | ## Нюансы работы 291 | 292 | Подсистема была разработана ещё до версии 8.3.19, в которой добавили расширенные возможности настройки полей динамического списка. Расширение использует методы `УстановитьОграниченияИспользования...()` 293 | 294 | Помимо поддержки "прошлых" платформ и режимов совместимости, мы продолжаем использовать эти методы потому, что они позволяют точечно отключить доступность не только основных полей, но и конкретных подчиненных. Например, запретить отборы на подчиненные поля полей составного типа в таблице, но в исключениях добавить их Код. 295 | 296 | ## В планах 297 | 298 | Все планы можно посмотреть на странице issues, но общие планируемые доработки: 299 | 300 | - Отказаться от использование справочника КлючевыеОперации. Это позволит не включить подсистему Оценка производительности. 301 | - Переделать периодическую фиксацию истории со своих методов на методы БСП. Это упростит подключение формы списка к подсистеме. 302 | - Добавить возможности 303 | 304 | Если у вас есть идеи, предложения или информация об ошибке, то мы будем рады вашему ишуизу. 305 | 306 | ## Заключение 307 | 308 | По всем вопросам можете обращаться к разработчику [@Черненко Виталий](https://github.com/SeiOkami) -------------------------------------------------------------------------------- /bsl-language-server.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://1c-syntax.github.io/bsl-language-server/configuration/schema.json", 3 | "language": "ru", 4 | "diagnostics": { 5 | "computeTrigger": "onType", 6 | "parameters": { 7 | "LineLength": { 8 | "maxLineLength": 140 9 | }, 10 | "SpaceAtStartComment": { 11 | "commentsAnnotation": "//@,//(c),//©,//<<,//>>" 12 | }, 13 | "MissingSpace": { 14 | "allowMultipleCommas": true 15 | }, 16 | "Typo": { 17 | "minWordLength": 4, 18 | "userWordsToIgnore": "SVOD" 19 | }, 20 | "allowParensInComparisons": true 21 | } 22 | } 23 | } -------------------------------------------------------------------------------- /docs/img/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/magnit-tech/one-s-dynamic-list-administration/ae34c37e301ff63cc506e0b7f22ed5e2efbca583/docs/img/01.png -------------------------------------------------------------------------------- /docs/img/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/magnit-tech/one-s-dynamic-list-administration/ae34c37e301ff63cc506e0b7f22ed5e2efbca583/docs/img/02.png -------------------------------------------------------------------------------- /docs/img/03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/magnit-tech/one-s-dynamic-list-administration/ae34c37e301ff63cc506e0b7f22ed5e2efbca583/docs/img/03.png -------------------------------------------------------------------------------- /docs/img/04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/magnit-tech/one-s-dynamic-list-administration/ae34c37e301ff63cc506e0b7f22ed5e2efbca583/docs/img/04.png -------------------------------------------------------------------------------- /docs/img/05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/magnit-tech/one-s-dynamic-list-administration/ae34c37e301ff63cc506e0b7f22ed5e2efbca583/docs/img/05.png -------------------------------------------------------------------------------- /docs/img/06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/magnit-tech/one-s-dynamic-list-administration/ae34c37e301ff63cc506e0b7f22ed5e2efbca583/docs/img/06.png -------------------------------------------------------------------------------- /gitignore: -------------------------------------------------------------------------------- 1 | .vscode 2 | .scannerwork -------------------------------------------------------------------------------- /sonar-project.properties: -------------------------------------------------------------------------------- 1 | sonar.projectKey=BSPM_one-s-dynamic-list-administration 2 | sonar.projectVersion=1.0.1 3 | 4 | #Используйте https://native2ascii.net/ для вставки русских наименований проектов, не используйте английский если ваша команда русскоязычная и кодите вы на русском 5 | sonar.projectName=\u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0441\u043f\u0438\u0441\u043a\u043e\u0432 (\u0411\u0421\u041f\u041c) 6 | 7 | sonar.sources=./\u0418\u0422\u041c_\u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u0414\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0445\u0421\u043f\u0438\u0441\u043a\u043e\u0432 8 | 9 | sonar.sourceEncoding=UTF-8 10 | 11 | sonar.dbcleaner.branchesToKeepWhenInactive=main,develop,release-.* 12 | sonar.inclusions=**/*.bsl,**/*.os,**/*.xml 13 | sonar.lang.patterns.xml=**/*.xsd,**/*.xsl 14 | 15 | sonar.bsl.platformEdition=8.3.23 16 | sonar.bsl.maxDepthSearchConfiguration=6 17 | sonar.bsl.skipAbsorptionComments=false -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | ИТМ_АдминистрированиеДинамическихСписков 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.xtext.ui.shared.xtextBuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.xtext.ui.shared.xtextNature 16 | com._1c.g5.v8.dt.core.V8ExtensionNature 17 | 18 | 19 | -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков/.settings/org.eclipse.core.resources.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | encoding/=UTF-8 3 | -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков/DT-INF/PROJECT.PMF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Runtime-Version: 8.3.24 3 | Base-Project: configuration 4 | -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков/src/Catalogs/КлючевыеОперации/КлючевыеОперации.mdo: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | КлючевыеОперации 11 | Adopted 12 | 13 | 14 | Имя 15 | Adopted 16 | 17 | 18 | 19 | Checked 20 | String 21 | 22 | 23 | 1000 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков/src/Catalogs/Пользователи/Пользователи.mdo: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | Пользователи 11 | Adopted 12 | 13 | 14 | -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков/src/CommonModules/ИТМ_АдминистрированиеДинамическихСписков/ИТМ_АдминистрированиеДинамическихСписков.mdo: -------------------------------------------------------------------------------- 1 | 2 | 3 | ИТМ_АдминистрированиеДинамическихСписков 4 | 5 | ru 6 | Администрирование динамических списков (ИТМ) 7 | 8 | true 9 | true 10 | true 11 | 12 | -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков/src/CommonModules/ИТМ_АдминистрированиеДинамическихСписковВызовСервера/Module.bsl: -------------------------------------------------------------------------------- 1 | // @strict-types 2 | 3 | #Область СлужебныйПрограммныйИнтерфейс 4 | 5 | // см. ИТМ_АдминистрированиеДинамическихСписков.ОбработатьНакопленныеСобытияОбновления 6 | Процедура ОбработатьНакопленныеСобытияОбновления(ИсторияОбновления) Экспорт 7 | 8 | ИТМ_АдминистрированиеДинамическихСписков.ОбработатьНакопленныеСобытияОбновления(ИсторияОбновления); 9 | 10 | КонецПроцедуры 11 | 12 | // Данные из ключа списка. 13 | // 14 | // Параметры: 15 | // КлючСписка - СправочникСсылка.КлючевыеОперации - Ключ списка 16 | // 17 | // Возвращаемое значение: 18 | // Структура - Данные из ключа списка: 19 | // * ПолноеИмяФормы - Строка - Полное имя формы 20 | // * ИмяЭлемента - Строка - Имя элемента ДС 21 | Функция ДанныеИзКлючаСписка(КлючСписка) Экспорт 22 | 23 | ПолноеИмяКлюча = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(КлючСписка, "Имя"); 24 | Разделитель = ИТМ_АдминистрированиеДинамическихСписковКлиентСервер.РазделительФормыИЭлемента(); 25 | ЧастиИмениКлюча = СтрЗаменить(ПолноеИмяКлюча, Разделитель, Символы.ПС); 26 | 27 | Результат = Новый Структура; 28 | Результат.Вставить("ПолноеИмяФормы", СтрПолучитьСтроку(ЧастиИмениКлюча, 1)); 29 | Результат.Вставить("ИмяЭлемента" , СтрПолучитьСтроку(ЧастиИмениКлюча, 2)); 30 | 31 | Возврат Результат; 32 | 33 | КонецФункции 34 | 35 | #КонецОбласти 36 | -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков/src/CommonModules/ИТМ_АдминистрированиеДинамическихСписковВызовСервера/ИТМ_АдминистрированиеДинамическихСписковВызовСервера.mdo: -------------------------------------------------------------------------------- 1 | 2 | 3 | ИТМ_АдминистрированиеДинамическихСписковВызовСервера 4 | 5 | ru 6 | Администрирование динамических списков вызов сервера (ИТМ) 7 | 8 | true 9 | true 10 | 11 | -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков/src/CommonModules/ИТМ_АдминистрированиеДинамическихСписковКлиент/Module.bsl: -------------------------------------------------------------------------------- 1 | // @strict-types 2 | 3 | #Область СлужебныйПрограммныйИнтерфейс 4 | 5 | // Событие подключенной формы списка "ПриОткрытии" 6 | // 7 | // Параметры: 8 | // Форма - ФормаКлиентскогоПриложения - Управляемое форма 9 | // Отказ - Булево - Признак отказа 10 | // 11 | Процедура ПриОткрытии(Форма, Отказ = Ложь) Экспорт 12 | 13 | НастройкиНаФорме = ИТМ_АдминистрированиеДинамическихСписковКлиентСервер.НастройкиНаФорме(Форма); 14 | НастройкиНаФорме.ФормаОткрыта = Истина; 15 | 16 | СтандартнаяОбработка = Истина; 17 | ИТМ_АдминистрированиеДинамическихСписковКлиентПереопределяемый.ПередВыполнениемПриОткрытии( 18 | Форма, Отказ, НастройкиНаФорме, СтандартнаяОбработка); 19 | Если НЕ СтандартнаяОбработка Тогда 20 | Возврат; 21 | КонецЕсли; 22 | 23 | Если ЗначениеЗаполнено(НастройкиНаФорме.ТекстЗапретаОткрытия) Тогда 24 | ПоказатьПредупреждение(Неопределено, НастройкиНаФорме.ТекстЗапретаОткрытия); 25 | Отказ = Истина; 26 | КонецЕсли; 27 | 28 | Для Каждого КлючИЗначение Из НастройкиНаФорме.Настройки Цикл 29 | 30 | ТекущиеНастройки = КлючИЗначение.Значение; //см. ИТМ_АдминистрированиеДинамическихСписковКлиентСервер.ШаблонПараметровДинамическогоСписка 31 | ИсторияОбновления = ТекущиеНастройки.ИсторияОбновления; 32 | 33 | Если ИсторияОбновления.Использование 34 | И УспешноОбработаныНакопленныеСобытияОбновления(Форма) Тогда //Проверка на наличие метода 35 | 36 | ПодключитьОбработчикОжиданияОбновленияНакопленныхСобытий(Форма, ИсторияОбновления.ЧастотаЗаписи); 37 | 38 | КонецЕсли; 39 | 40 | КонецЦикла; 41 | 42 | ИТМ_АдминистрированиеДинамическихСписковКлиентПереопределяемый.ПослеВыполненияПриОткрытии(Форма, Отказ); 43 | 44 | КонецПроцедуры 45 | 46 | // Событие подключенной формы списка "ПриЗакрытии" 47 | // 48 | // Параметры: 49 | // Форма - ФормаКлиентскогоПриложения - Управляемое форма 50 | // ЗавершениеРаботы - Булево - Признак того, что форма закрывается в процессе завершения работы приложения 51 | // 52 | Процедура ПриЗакрытии(Форма, ЗавершениеРаботы) Экспорт 53 | 54 | СтандартнаяОбработка = Истина; 55 | ИТМ_АдминистрированиеДинамическихСписковКлиентПереопределяемый.ПередВыполнениемПриЗакрытии( 56 | Форма, ЗавершениеРаботы, СтандартнаяОбработка); 57 | Если НЕ СтандартнаяОбработка Тогда 58 | Возврат; 59 | КонецЕсли; 60 | 61 | Если НЕ ЗавершениеРаботы Тогда 62 | Попытка 63 | ВыполнитьМетодОбработатьНакопленныеСобытияОбновления(Форма); 64 | Исключение 65 | Возврат; 66 | КонецПопытки; 67 | КонецЕсли; 68 | 69 | КонецПроцедуры 70 | 71 | // Процедура - Обработать накопленные события обновления 72 | // 73 | // Параметры: 74 | // Форма - ФормаКлиентскогоПриложения - Форма 75 | // 76 | Процедура ОбработатьНакопленныеСобытияОбновления(Форма) Экспорт 77 | 78 | ПовторитьЧерез = Неопределено; 79 | 80 | НастройкиСписков = ИТМ_АдминистрированиеДинамическихСписковКлиентСервер.НастройкиНаФорме(Форма); 81 | Если НастройкиСписков = Неопределено Тогда 82 | Возврат; 83 | КонецЕсли; 84 | 85 | Для Каждого КлючИЗначение Из НастройкиСписков.Настройки Цикл 86 | НастройкиСписка = КлючИЗначение.Значение; //см. ИТМ_АдминистрированиеДинамическихСписковКлиентСервер.ШаблонПараметровДинамическогоСписка 87 | ЗафиксироватьНакопленныеОбновленияДинамическихСписковПоНастройкеСписка(НастройкиСписка, ПовторитьЧерез); 88 | КонецЦикла; 89 | 90 | ПодключитьОбработчикОжиданияОбновленияНакопленныхСобытий(Форма, ПовторитьЧерез); 91 | 92 | КонецПроцедуры 93 | 94 | // Параметры открытия формы выбора ключа списка. 95 | // 96 | // Возвращаемое значение: 97 | // Структура - Параметры открытия формы выбора ключа списка: 98 | // * Владелец - Неопределено, Произвольный - Владелец формы 99 | // * ТолькоПросмотр - Неопределено, Булево - Только просмотр 100 | // * ОписаниеОповещения - Неопределено, ОписаниеОповещения - Описание оповещения об закрытии 101 | // * Отбор - Структура -: 102 | // ** ЕстьНастройка - Неопределено, Булево - Значение отбора (если задано) 103 | Функция ПараметрыОткрытияФормыВыбораКлючаСписка() Экспорт 104 | 105 | ПараметрыОткрытия = Новый Структура; 106 | ПараметрыОткрытия.Вставить("Владелец", Неопределено); 107 | ПараметрыОткрытия.Вставить("ТолькоПросмотр", Неопределено); 108 | ПараметрыОткрытия.Вставить("ОписаниеОповещения", Неопределено); 109 | 110 | ПараметрыОткрытия.Вставить("Отбор", Новый Структура("ЕстьНастройка", Неопределено)); 111 | 112 | Возврат ПараметрыОткрытия; 113 | 114 | КонецФункции 115 | 116 | // Открыть форму выбора ключа списка. 117 | // 118 | // Параметры: 119 | // ПараметрыОткрытия - см. ПараметрыОткрытияФормыВыбораКлючаСписка 120 | Процедура ОткрытьФормуВыбораКлючаСписка(ПараметрыОткрытия) Экспорт 121 | 122 | ПараметрыФормы = Новый Структура; 123 | 124 | ОтборФормы = Новый Структура; 125 | Для Каждого КлючИЗначение Из ПараметрыОткрытия.Отбор Цикл 126 | Если НЕ КлючИЗначение.Значение = Неопределено Тогда 127 | ТекущийКлюч = КлючИЗначение.Ключ; //Строка 128 | ОтборФормы.Вставить(ТекущийКлюч, КлючИЗначение.Значение); 129 | КонецЕсли; 130 | КонецЦикла; 131 | 132 | Если ЗначениеЗаполнено(ОтборФормы) Тогда 133 | ПараметрыФормы.Вставить("Отбор", ОтборФормы); 134 | КонецЕсли; 135 | 136 | Если ПараметрыОткрытия.ТолькоПросмотр <> Неопределено Тогда 137 | ПараметрыФормы.Вставить("ТолькоПросмотр", ПараметрыОткрытия.ТолькоПросмотр); 138 | КонецЕсли; 139 | 140 | //@skip-check invocation-parameter-type-intersect - Баг ЕДТ 141 | ОткрытьФорму("РегистрСведений.ИТМ_НастройкиДинамическихСписков.Форма.ФормаВыбораКлюча", 142 | ПараметрыФормы, ПараметрыОткрытия.Владелец, , , , 143 | ПараметрыОткрытия.ОписаниеОповещения, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца); 144 | 145 | КонецПроцедуры 146 | 147 | #КонецОбласти 148 | 149 | #Область СлужебныеПроцедурыИФункции 150 | 151 | // Подключить обработчик ожидания обновления накопленных событий. 152 | // 153 | // Параметры: 154 | // Форма - ФормаКлиентскогоПриложения - Форма 155 | // Интервал - Неопределено - Интервал 156 | Процедура ПодключитьОбработчикОжиданияОбновленияНакопленныхСобытий(Форма, Интервал) 157 | 158 | Если ТипЗнч(Интервал) = Тип("Число") И Интервал > 0 Тогда 159 | Форма.ПодключитьОбработчикОжидания("ИТМ_ОбработатьНакопленныеСобытияОбновления", Интервал, Истина); 160 | КонецЕсли; 161 | 162 | КонецПроцедуры 163 | 164 | // Выполняет метод формы по обработке накопленных событий обновления. 165 | // Если не удалось выполнить, то считаем, что либо метода нет, либо он содержит ошибку. 166 | // Если есть ошибка, то метод нельзя подключать в качестве обработчика ожидания. 167 | // 168 | // Параметры: 169 | // Форма - ФормаКлиентскогоПриложения - Форма 170 | // 171 | // Возвращаемое значение: 172 | // Булево - Признак успеха 173 | // 174 | Функция УспешноОбработаныНакопленныеСобытияОбновления(Форма) 175 | 176 | Попытка 177 | ВыполнитьМетодОбработатьНакопленныеСобытияОбновления(Форма); 178 | Возврат Истина; 179 | Исключение 180 | Возврат Ложь; //На случай, если метода нет 181 | КонецПопытки; 182 | 183 | КонецФункции 184 | 185 | // Зафиксировать накопленные обновления динамических списков по настройке списка. 186 | // 187 | // Параметры: 188 | // НастройкиСписка - см. ИТМ_АдминистрированиеДинамическихСписковКлиентСервер.ШаблонПараметровДинамическогоСписка 189 | // ПовторитьЧерез - Число, Неопределено - Повторить через указанное число секунд 190 | Процедура ЗафиксироватьНакопленныеОбновленияДинамическихСписковПоНастройкеСписка(НастройкиСписка, ПовторитьЧерез) 191 | 192 | ИсторияОбновления = НастройкиСписка.ИсторияОбновления; 193 | ЧастотаЗаписи = ИсторияОбновления.ЧастотаЗаписи; 194 | 195 | Если НЕ НастройкиСписка.Использование ИЛИ НЕ ИсторияОбновления.Использование ИЛИ ЧастотаЗаписи = 0 Тогда 196 | Возврат; 197 | КонецЕсли; 198 | 199 | Если ПовторитьЧерез = Неопределено Тогда 200 | ПовторитьЧерез = ЧастотаЗаписи; 201 | Иначе 202 | ПовторитьЧерез = Мин(ПовторитьЧерез, ЧастотаЗаписи); 203 | КонецЕсли; 204 | 205 | ИТМ_АдминистрированиеДинамическихСписковВызовСервера.ОбработатьНакопленныеСобытияОбновления(ИсторияОбновления); 206 | 207 | КонецПроцедуры 208 | 209 | // Выполнить метод обработать накопленные события обновления. 210 | // 211 | // Параметры: 212 | // Форма - ФормаКлиентскогоПриложения 213 | Процедура ВыполнитьМетодОбработатьНакопленныеСобытияОбновления(Форма) 214 | 215 | //@skip-check dynamic-access-method-not-found 216 | Форма.ИТМ_ОбработатьНакопленныеСобытияОбновления(); 217 | 218 | КонецПроцедуры 219 | 220 | #КонецОбласти 221 | -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков/src/CommonModules/ИТМ_АдминистрированиеДинамическихСписковКлиент/ИТМ_АдминистрированиеДинамическихСписковКлиент.mdo: -------------------------------------------------------------------------------- 1 | 2 | 3 | ИТМ_АдминистрированиеДинамическихСписковКлиент 4 | 5 | ru 6 | Администрирование динамических списков клиент (ИТМ) 7 | 8 | true 9 | true 10 | 11 | -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков/src/CommonModules/ИТМ_АдминистрированиеДинамическихСписковКлиентПереопределяемый/Module.bsl: -------------------------------------------------------------------------------- 1 | // @strict-types 2 | // @skip-check module-empty-method 3 | 4 | #Область СлужебныйПрограммныйИнтерфейс 5 | 6 | // Выполняется перед событием подключенной формы списка "ПриОткрытии" 7 | // 8 | // Параметры: 9 | // Форма - ФормаКлиентскогоПриложения - Управляемое форма 10 | // Отказ - Булево - Признак отказа 11 | // НастройкиНаФорме - см. ИТМ_АдминистрированиеДинамическихСписковКлиентСервер.НастройкиНаФорме 12 | // СтандартнаяОбработка - Булево - Признак стандартной обработки для основной процедуры 13 | // 14 | Процедура ПередВыполнениемПриОткрытии(Форма, Отказ, НастройкиНаФорме, СтандартнаяОбработка) Экспорт 15 | 16 | 17 | 18 | КонецПроцедуры 19 | 20 | // Выполняется после события подключенной формы списка "ПриОткрытии" 21 | // 22 | // Параметры: 23 | // Форма - ФормаКлиентскогоПриложения - Управляемое форма 24 | // Отказ - Булево - Признак отказа 25 | Процедура ПослеВыполненияПриОткрытии(Форма, Отказ) Экспорт 26 | 27 | 28 | 29 | КонецПроцедуры 30 | 31 | // Выполняется перед событием подключенной формы списка "ПриЗакрытии" 32 | // 33 | // Параметры: 34 | // Форма - ФормаКлиентскогоПриложения - Управляемое форма 35 | // ЗавершениеРаботы - Булево - Признак того, что форма закрывается в процессе завершения работы приложения 36 | // СтандартнаяОбработка - Булево - Признак стандартной обработки для основной процедуры 37 | Процедура ПередВыполнениемПриЗакрытии(Форма, ЗавершениеРаботы, СтандартнаяОбработка) Экспорт 38 | 39 | 40 | 41 | КонецПроцедуры 42 | 43 | #КонецОбласти 44 | -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков/src/CommonModules/ИТМ_АдминистрированиеДинамическихСписковКлиентПереопределяемый/ИТМ_АдминистрированиеДинамическихСписковКлиентПереопределяемый.mdo: -------------------------------------------------------------------------------- 1 | 2 | 3 | ИТМ_АдминистрированиеДинамическихСписковКлиентПереопределяемый 4 | 5 | ru 6 | ИТМ администрирование динамических списков клиент переопределяемый 7 | 8 | true 9 | true 10 | 11 | -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков/src/CommonModules/ИТМ_АдминистрированиеДинамическихСписковКлиентСервер/ИТМ_АдминистрированиеДинамическихСписковКлиентСервер.mdo: -------------------------------------------------------------------------------- 1 | 2 | 3 | ИТМ_АдминистрированиеДинамическихСписковКлиентСервер 4 | 5 | ru 6 | Администрирование динамических списков клиент сервер (ИТМ) 7 | 8 | true 9 | true 10 | true 11 | true 12 | 13 | -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков/src/CommonModules/ИТМ_АдминистрированиеДинамическихСписковПереопределяемый/Module.bsl: -------------------------------------------------------------------------------- 1 | // @strict-types 2 | // @skip-check module-empty-method 3 | 4 | #Область СлужебныйПрограммныйИнтерфейс 5 | 6 | #Область СобытияФорм 7 | 8 | // Событие подключенной формы списка "ПриСозданииНаСервере" 9 | // 10 | // Параметры: 11 | // Форма - ФормаКлиентскогоПриложения - Управляемая форма 12 | // ДополнительныеПараметры - Структура, Неопределено - Дополнительные параметры 13 | // 14 | Процедура ПриСозданииНаСервере(Форма, Знач ДополнительныеПараметры = Неопределено) Экспорт 15 | 16 | 17 | 18 | КонецПроцедуры 19 | 20 | #КонецОбласти 21 | 22 | #Область ПрименениеНастроек 23 | 24 | // Выполняется перед применением настройки подсистемы к списку. 25 | // 26 | // Параметры: 27 | // Форма - ФормаКлиентскогоПриложения - Форма 28 | // ОбщиеНастройки - см. ИТМ_АдминистрированиеДинамическихСписковКлиентСервер.НастройкиНаФорме 29 | // НастройкиСписка - см. ИТМ_АдминистрированиеДинамическихСписковКлиентСервер.ШаблонПараметровДинамическогоСписка 30 | // СтандартнаяОбработка - Булево - Признак стандартной обработки для основной процедуры 31 | // 32 | Процедура ПередПрименениемНастройкиПодсистемыКСписку(Форма, ОбщиеНастройки, НастройкиСписка, СтандартнаяОбработка) Экспорт 33 | 34 | 35 | 36 | КонецПроцедуры 37 | 38 | // Выполняется после применением настройки подсистемы к списку. 39 | // 40 | // Параметры: 41 | // Форма - ФормаКлиентскогоПриложения - Форма 42 | // ОбщиеНастройки - см. ИТМ_АдминистрированиеДинамическихСписковКлиентСервер.НастройкиНаФорме 43 | // НастройкиСписка - см. ИТМ_АдминистрированиеДинамическихСписковКлиентСервер.ШаблонПараметровДинамическогоСписка 44 | // 45 | Процедура ПослеПримененияНастройкиПодсистемыКСписку(Форма, ОбщиеНастройки, НастройкиСписка) Экспорт 46 | 47 | 48 | 49 | КонецПроцедуры 50 | 51 | #КонецОбласти 52 | 53 | #КонецОбласти 54 | -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков/src/CommonModules/ИТМ_АдминистрированиеДинамическихСписковПереопределяемый/ИТМ_АдминистрированиеДинамическихСписковПереопределяемый.mdo: -------------------------------------------------------------------------------- 1 | 2 | 3 | ИТМ_АдминистрированиеДинамическихСписковПереопределяемый 4 | 5 | ru 6 | Администрирование динамических списков переопределяемый 7 | 8 | true 9 | true 10 | true 11 | 12 | -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков/src/CommonModules/ИТМ_АдминистрированиеДинамическихСписковПовтИсп/Module.bsl: -------------------------------------------------------------------------------- 1 | // @strict-types 2 | 3 | #Область СлужебныйПрограммныйИнтерфейс 4 | 5 | // Возвращает массив полей таблицы, которые входят в состав одного из индексов 6 | // 7 | // Параметры: 8 | // ПолноеИмяМетаданных - Строка - Полное имя таблицы. Например, "Справочник.Валюты" 9 | // ПриводитьКВерхнемуРегистру - Булево - Нужно ли приводить имена полей к верхнему регистру 10 | // 11 | // Возвращаемое значение: 12 | // ФиксированныйМассив из Строка - индексируемые поля 13 | // 14 | Функция ИндексируемыеПоляМетаданных(ПолноеИмяМетаданных, ПриводитьКВерхнемуРегистру = Истина) Экспорт 15 | 16 | ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ПолноеИмяМетаданных); 17 | Если ОбъектМетаданных = Неопределено Тогда 18 | Возврат Новый ФиксированныйМассив(Новый Массив); 19 | КонецЕсли; 20 | 21 | ИндексируемыеПоля = Новый Массив; 22 | ИскомыеОбъекты = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ОбъектМетаданных); 23 | СтруктураХранения = ПолучитьСтруктуруХраненияБазыДанных(ИскомыеОбъекты); 24 | ТекущаяСтруктура = СтруктураХранения.НайтиСтроки(Новый Структура("Назначение", "Основная")); 25 | 26 | Для Каждого ОписаниеТаблицы Из ТекущаяСтруктура Цикл 27 | //@skip-check property-return-type, variable-value-type - Баг ЕДТ 28 | Для Каждого ОписаниеИндекса Из ОписаниеТаблицы.Индексы Цикл 29 | //@skip-check property-return-type - баг ЕДТ 30 | Для Каждого ОписаниеПоля Из ОписаниеИндекса.Поля Цикл 31 | //@skip-check invocation-parameter-type-intersect - баг ЕДТ 32 | ИндексируемыеПоляМетаданных_ДобавитьВМассив(ОписаниеПоля, ПриводитьКВерхнемуРегистру, ИндексируемыеПоля); 33 | КонецЦикла; 34 | КонецЦикла; 35 | КонецЦикла; 36 | 37 | Возврат Новый ФиксированныйМассив(ИндексируемыеПоля); 38 | 39 | КонецФункции 40 | 41 | // Функция возвращает текущего пользователя 42 | // 43 | // Возвращаемое значение: 44 | // СправочникСсылка.Пользователи, Строка - Пользователь или его имя 45 | // 46 | Функция ТекущийПользователь() Экспорт 47 | 48 | Попытка 49 | ТекущийПользователь = Пользователи.ТекущийПользователь(); 50 | Исключение 51 | ТекущийПользователь = Неопределено; 52 | КонецПопытки; 53 | 54 | Если НЕ ЗначениеЗаполнено(ТекущийПользователь) Тогда 55 | ТекущийПользователь = ПользователиИнформационнойБазы.ТекущийПользователь().ПолноеИмя; 56 | КонецЕсли; 57 | 58 | Возврат ТекущийПользователь; 59 | 60 | КонецФункции 61 | 62 | // Функция возвращает ключевую операцию по полному имени ключа 63 | // 64 | // Параметры: 65 | // ИмяКлючевойОперации - Строка, СправочникСсылка.КлючевыеОперации - Полное имя ключа 66 | // 67 | // Возвращаемое значение: 68 | // СправочникСсылка.КлючевыеОперации - Ключевая операция 69 | // 70 | Функция ПолучитьКлючевуюОперацию(ИмяКлючевойОперации) Экспорт 71 | 72 | Если ТипЗнч(ИмяКлючевойОперации) = Тип("СправочникСсылка.КлючевыеОперации") Тогда 73 | Возврат ИмяКлючевойОперации; 74 | КонецЕсли; 75 | 76 | УстановитьПривилегированныйРежим(Истина); 77 | 78 | Запрос = Новый Запрос; 79 | Запрос.Текст = 80 | "ВЫБРАТЬ ПЕРВЫЕ 1 81 | | КлючевыеОперации.Ссылка КАК Ссылка 82 | |ИЗ 83 | | Справочник.КлючевыеОперации КАК КлючевыеОперации 84 | |ГДЕ 85 | | КлючевыеОперации.ИмяХеш = &ИмяХеш 86 | | 87 | |УПОРЯДОЧИТЬ ПО 88 | | Ссылка"; 89 | 90 | ХешMD5 = Новый ХешированиеДанных(ХешФункция.MD5); 91 | ХешMD5.Добавить(ИмяКлючевойОперации); 92 | ИмяХеш = СтрЗаменить(Строка(ХешMD5.ХешСумма), " ", ""); 93 | 94 | Запрос.УстановитьПараметр("ИмяХеш", ИмяХеш); 95 | РезультатЗапроса = Запрос.Выполнить(); 96 | Если РезультатЗапроса.Пустой() Тогда 97 | 98 | КлючеваяОперацияСсылка = ОценкаПроизводительности.СоздатьКлючевуюОперацию(ИмяКлючевойОперации, 1, Ложь); 99 | ИТМ_АдминистрированиеДинамическихСписков.НормализоватьНаименованияКлючевойОперации(КлючеваяОперацияСсылка); 100 | 101 | Иначе 102 | 103 | Выборка = РезультатЗапроса.Выбрать(); 104 | Выборка.Следующий(); 105 | КлючеваяОперацияСсылка = Выборка.Получить(0); //СправочникСсылка.КлючевыеОперации 106 | 107 | КонецЕсли; 108 | 109 | Возврат КлючеваяОперацияСсылка; 110 | 111 | КонецФункции 112 | 113 | #КонецОбласти 114 | 115 | #Область СлужебныеПроцедурыИФункции 116 | 117 | // Индексируемые поля метаданных добавить в массив. 118 | // 119 | // Параметры: 120 | // ОписаниеПоля - СтрокаТаблицыЗначений: 121 | // * ИмяПоля - Строка 122 | // ПриводитьКВерхнемуРегистру - Булево - Приводить к верхнему регистру 123 | // ИндексируемыеПоля - Массив из Строка - Индексируемые поля 124 | Процедура ИндексируемыеПоляМетаданных_ДобавитьВМассив(ОписаниеПоля, ПриводитьКВерхнемуРегистру, ИндексируемыеПоля) 125 | 126 | ИмяПоля = ОписаниеПоля.ИмяПоля; 127 | Если ЗначениеЗаполнено(ИмяПоля) Тогда 128 | 129 | Если ПриводитьКВерхнемуРегистру Тогда 130 | ИмяПоля = ВРег(ИмяПоля); 131 | КонецЕсли; 132 | 133 | ИТМ_АдминистрированиеДинамическихСписковКлиентСервер.ДобавитьВМассивСПроверкой(ИндексируемыеПоля, ИмяПоля); 134 | 135 | КонецЕсли; 136 | 137 | КонецПроцедуры 138 | 139 | #КонецОбласти 140 | -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков/src/CommonModules/ИТМ_АдминистрированиеДинамическихСписковПовтИсп/ИТМ_АдминистрированиеДинамическихСписковПовтИсп.mdo: -------------------------------------------------------------------------------- 1 | 2 | 3 | ИТМ_АдминистрированиеДинамическихСписковПовтИсп 4 | 5 | ru 6 | Администрирование динамических списков повт исп (ИТМ) 7 | 8 | true 9 | true 10 | true 11 | DuringSession 12 | 13 | -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков/src/Configuration/Configuration.mdo: -------------------------------------------------------------------------------- 1 | 2 | 3 | ИТМ_АдминистрированиеДинамическихСписков 4 | 5 | ru 6 | Администрирование динамических списков (ИТМ) 7 | 8 | Adopted 9 | 10 | Checked 11 | Checked 12 | Checked 13 | Checked 14 | Notify 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | true 24 | ИТМ_ 25 | 8.3.21 26 | AddOn 27 | ManagedApplication 28 | PersonalComputer 29 | Russian 30 | 1.0.1 31 | Language.Русский 32 | TaxiEnableVersion8_2 33 | 8.3.21 34 | 35 | Русский 36 | Adopted 37 | 38 | Checked 39 | 40 | ru 41 | 42 | Subsystem.ИТМ_АдминистрированиеДинамическихСписков 43 | Role.ИТМ_ИзменениеИсторияОбновленияДинамическихСписков 44 | Role.ИТМ_ИзменениеНастройкиДинамическихСписков 45 | Role.ИТМ_ЧтениеИсторияОбновленияДинамическихСписков 46 | Role.ИТМ_ЧтениеНастройкиДинамическихСписков 47 | CommonModule.ИТМ_АдминистрированиеДинамическихСписков 48 | CommonModule.ИТМ_АдминистрированиеДинамическихСписковВызовСервера 49 | CommonModule.ИТМ_АдминистрированиеДинамическихСписковКлиент 50 | CommonModule.ИТМ_АдминистрированиеДинамическихСписковКлиентПереопределяемый 51 | CommonModule.ИТМ_АдминистрированиеДинамическихСписковКлиентСервер 52 | CommonModule.ИТМ_АдминистрированиеДинамическихСписковПереопределяемый 53 | CommonModule.ИТМ_АдминистрированиеДинамическихСписковПовтИсп 54 | Catalog.КлючевыеОперации 55 | Catalog.Пользователи 56 | InformationRegister.ИТМ_ИсторияОбновленияДинамическихСписков 57 | InformationRegister.ИТМ_НастройкиДинамическихСписков 58 | 59 | -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков/src/InformationRegisters/ИТМ_ИсторияОбновленияДинамическихСписков/Forms/ФормаЗаписи/Module.bsl: -------------------------------------------------------------------------------- 1 | // @strict-types 2 | 3 | #Область ОбработчикиСобытийФормы 4 | 5 | &НаСервере 6 | Процедура ПриЧтенииНаСервере(ТекущийОбъект) 7 | 8 | Настройки = НастройкиИзЗаписи(); 9 | Если НЕ ТипЗнч(Настройки) = Тип("НастройкиКомпоновкиДанных") Тогда 10 | Возврат; 11 | КонецЕсли; 12 | 13 | КомпоновщикНастроек.ЗагрузитьНастройки(Настройки); 14 | 15 | НастройкиXML = ОбщегоНазначения.ЗначениеВСтрокуXML(Настройки); 16 | 17 | КонецПроцедуры 18 | 19 | #КонецОбласти 20 | 21 | #Область ОбработчикиСобытийЭлементовТаблицыФормыКомпоновщикНастроекНастройкиОтбор 22 | 23 | // Компоновщик настроек настройки отбор выбор. 24 | // 25 | // Параметры: 26 | // Элемент - ТаблицаФормы - Элемент 27 | // ВыбраннаяСтрока - Число - Выбранная строка 28 | // Поле - ПолеФормы - Поле 29 | // СтандартнаяОбработка - Булево - Стандартная обработка 30 | &НаКлиенте 31 | Процедура КомпоновщикНастроекНастройкиОтборВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) 32 | 33 | ПоказатьЗначениеВыбраннойЯчейки(Элемент, ВыбраннаяСтрока, Поле); 34 | 35 | КонецПроцедуры 36 | 37 | #КонецОбласти 38 | 39 | #Область ОбработчикиСобытийЭлементовТаблицыФормыКомпоновщикНастроекНастройкиПараметрыДанных 40 | 41 | // Компоновщик настроек настройки параметры данных выбор. 42 | // 43 | // Параметры: 44 | // Элемент - ТаблицаФормы - Элемент 45 | // ВыбраннаяСтрока - Число - Выбранная строка 46 | // Поле - ПолеФормы - Поле 47 | // СтандартнаяОбработка - Булево - Стандартная обработка 48 | &НаКлиенте 49 | Процедура КомпоновщикНастроекНастройкиПараметрыДанныхВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) 50 | 51 | ПоказатьЗначениеВыбраннойЯчейки(Элемент, ВыбраннаяСтрока, Поле); 52 | 53 | КонецПроцедуры 54 | 55 | #КонецОбласти 56 | 57 | #Область ОбработчикиКомандФормы 58 | 59 | &НаКлиенте 60 | Процедура Команда_ОткрытьФормуСписка(Команда) 61 | 62 | ОткрытьФормуСписка(Ложь); 63 | 64 | КонецПроцедуры 65 | 66 | &НаКлиенте 67 | Асинх Процедура Команда_ОткрытьФормуСпискаСНастройками(Команда) 68 | 69 | ТекстВопроса = "Будет открыта форма списка с передачей текущих настроек. 70 | |Все настройки можно увидеть в 'Настроить список'. 71 | |При этом ограничения применяться не будут. 72 | |Продолжить?"; 73 | Ответ = Ждать ВопросАсинх(ТекстВопроса, РежимДиалогаВопрос.ДаНет); //КодВозвратаДиалога 74 | Если Ответ = КодВозвратаДиалога.Да Тогда 75 | ОткрытьФормуСписка(Истина); 76 | КонецЕсли; 77 | 78 | КонецПроцедуры 79 | 80 | #КонецОбласти 81 | 82 | #Область СлужебныеПроцедурыИФункции 83 | 84 | // Показать значение выбранной ячейки. 85 | // 86 | // Параметры: 87 | // Элемент - ТаблицаФормы - Элемент 88 | // ВыбраннаяСтрока - Число - Выбранная строка 89 | // Поле - ПолеФормы - Поле 90 | &НаКлиенте 91 | Процедура ПоказатьЗначениеВыбраннойЯчейки(Элемент, ВыбраннаяСтрока, Поле) 92 | 93 | ТекущиеДанные = Элемент.ТекущиеДанные; 94 | Если ТекущиеДанные = Неопределено Тогда 95 | Возврат; 96 | КонецЕсли; 97 | 98 | ИмяТаблицы = Элемент.Имя; 99 | ИмяКолонки = СтрЗаменить(Поле.Имя, ИмяТаблицы, ""); 100 | 101 | Если ПустаяСтрока(ИмяКолонки) Тогда 102 | Возврат; 103 | КонецЕсли; 104 | 105 | ТекущееЗначение = Неопределено; 106 | Если ТекущиеДанные.Свойство(ИмяКолонки, ТекущееЗначение) Тогда 107 | ПоказатьЗначение(, ТекущееЗначение); 108 | КонецЕсли; 109 | 110 | КонецПроцедуры 111 | 112 | // Открыть форму списка. 113 | // 114 | // Параметры: 115 | // СПередачейНастроек - Булево - С передачей настроек 116 | &НаКлиенте 117 | Процедура ОткрытьФормуСписка(СПередачейНастроек) 118 | 119 | ПараметрыОткрытия = ПараметрыОткрытияФормыСписка(СПередачейНастроек); 120 | 121 | ОткрытьФорму(ПараметрыОткрытия.ИмяФормы, ПараметрыОткрытия.Параметры, ЭтотОбъект); 122 | 123 | КонецПроцедуры 124 | 125 | // Параметры открытия формы списка. 126 | // 127 | // Параметры: 128 | // СПередачейНастроек - Булево - С передачей настроек 129 | // 130 | // Возвращаемое значение: 131 | // Структура - Параметры открытия формы списка: 132 | // * ИмяФормы - Строка - Имя формы 133 | // * Параметры - Структура - Параметры открытия формы 134 | &НаСервере 135 | Функция ПараметрыОткрытияФормыСписка(СПередачейНастроек) 136 | 137 | ДанныеКлючаСписка = ИТМ_АдминистрированиеДинамическихСписковВызовСервера.ДанныеИзКлючаСписка(Запись.КлючСписка); 138 | 139 | ПараметрыОткрытия = Новый Структура; 140 | ПараметрыОткрытия.Вставить("ИмяФормы" , ДанныеКлючаСписка.ПолноеИмяФормы); 141 | ПараметрыОткрытия.Вставить("Параметры", Новый Структура); 142 | 143 | Если СПередачейНастроек Тогда 144 | 145 | ПараметрыОтладки = ИТМ_АдминистрированиеДинамическихСписковКлиентСервер.ШаблонПараметровОтладки(); 146 | ПараметрыОтладки.РежимОткрытияНастроек = Истина; 147 | ПараметрыОтладки.Настройки = НастройкиИзЗаписи(); 148 | 149 | Если ТипЗнч(ПараметрыОтладки.Настройки) <> Тип("НастройкиКомпоновкиДанных") Тогда 150 | ВызватьИсключение "В записи истории не содержатся настройки!"; 151 | КонецЕсли; 152 | 153 | ПараметрыОтладки = Новый Структура(ДанныеКлючаСписка.ИмяЭлемента, ПараметрыОтладки); 154 | 155 | ПараметрыОткрытия.Параметры.Вставить( 156 | ИТМ_АдминистрированиеДинамическихСписковКлиентСервер.ИмяПараметровОтладкиНаФорме(), ПараметрыОтладки); 157 | 158 | КонецЕсли; 159 | 160 | Возврат ПараметрыОткрытия; 161 | 162 | КонецФункции 163 | 164 | // Настройки из записи. 165 | // 166 | // Возвращаемое значение: 167 | // НастройкиКомпоновкиДанных 168 | &НаСервере 169 | Функция НастройкиИзЗаписи() 170 | 171 | МетаданныеРегистра = Метаданные.РегистрыСведений.ИТМ_ИсторияОбновленияДинамическихСписков; 172 | 173 | ЗначенияКлюча = Новый Структура(); 174 | Для Каждого ОписаниеИзмерения Из МетаданныеРегистра.Измерения Цикл 175 | ЗначенияКлюча.Вставить(ОписаниеИзмерения.Имя); 176 | КонецЦикла; 177 | 178 | ЗаполнитьЗначенияСвойств(ЗначенияКлюча, Запись.ИсходныйКлючЗаписи); 179 | 180 | ДанныеЗаписи = РегистрыСведений.ИТМ_ИсторияОбновленияДинамическихСписков.Получить(ЗначенияКлюча); 181 | 182 | Настройки = Неопределено; //ХранилищеЗначения 183 | ДанныеЗаписи.Свойство("Настройки", Настройки); 184 | 185 | Если ТипЗнч(Настройки) = Тип("ХранилищеЗначения") Тогда 186 | Возврат Настройки.Получить(); 187 | Иначе 188 | Возврат Неопределено; 189 | КонецЕсли; 190 | 191 | КонецФункции 192 | 193 | #КонецОбласти 194 | -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков/src/InformationRegisters/ИТМ_ИсторияОбновленияДинамическихСписков/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Normal 5 | dfcece9d-5077-440b-b6b3-45a5cb4538eb 6 | 7 | 8 | Normal 9 | 88619765-ccb3-46c6-ac52-38e9c992ebd4 10 | 11 | 12 | Normal 13 | b75fecce-942b-4aed-abc9-e6a02e460fb3 14 | 15 | Normal 16 | 911b6018-f537-43e8-a417-da56b22f9aec 17 | 18 | -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков/src/InformationRegisters/ИТМ_ИсторияОбновленияДинамическихСписков/Forms/ФормаСписка/Module.bsl: -------------------------------------------------------------------------------- 1 | // @strict-types 2 | 3 | #Область ОбработчикиСобытийФормы 4 | 5 | &НаСервере 6 | Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) 7 | 8 | ОтборКлючСписка = Параметры.ОтборКлючСписка; 9 | ОбновитьОтборКлючаСписка(); 10 | 11 | КонецПроцедуры 12 | 13 | &НаСервере 14 | Процедура ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки) 15 | 16 | ОбновитьОтборКлючаСписка(); 17 | 18 | КонецПроцедуры 19 | 20 | #КонецОбласти 21 | 22 | #Область ОбработчикиСобытийЭлементовШапкиФормы 23 | 24 | &НаКлиенте 25 | Процедура ОтборКлючСпискаПриИзменении(Элемент) 26 | 27 | ОбновитьОтборКлючаСписка(); 28 | 29 | КонецПроцедуры 30 | 31 | &НаКлиенте 32 | Процедура ОтборКлючСпискаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) 33 | 34 | СтандартнаяОбработка = Ложь; 35 | 36 | ПараметрыОткрытия = ИТМ_АдминистрированиеДинамическихСписковКлиент.ПараметрыОткрытияФормыВыбораКлючаСписка(); 37 | ПараметрыОткрытия.Отбор.ЕстьНастройка = Истина; 38 | ПараметрыОткрытия.ТолькоПросмотр = Истина; 39 | ПараметрыОткрытия.Владелец = Элемент; 40 | 41 | ИТМ_АдминистрированиеДинамическихСписковКлиент.ОткрытьФормуВыбораКлючаСписка(ПараметрыОткрытия); 42 | 43 | КонецПроцедуры 44 | 45 | #КонецОбласти 46 | 47 | #Область СлужебныеПроцедурыИФункции 48 | 49 | &НаСервере 50 | Процедура ОбновитьОтборКлючаСписка() 51 | 52 | ПараметрКлючСписка = Список.Параметры.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("КлючСписка")); 53 | 54 | Если ПараметрКлючСписка <> Неопределено Тогда 55 | 56 | НовыеСвойства = Новый Структура; 57 | НовыеСвойства.Вставить("Значение" , ОтборКлючСписка); 58 | НовыеСвойства.Вставить("Использование", ЗначениеЗаполнено(НовыеСвойства.Значение)); 59 | 60 | Для Каждого КлючИЗначение Из НовыеСвойства Цикл 61 | Если ПараметрКлючСписка[КлючИЗначение.Ключ] <> КлючИЗначение.Значение Тогда 62 | ПараметрКлючСписка[КлючИЗначение.Ключ] = КлючИЗначение.Значение; 63 | КонецЕсли; 64 | КонецЦикла; 65 | 66 | КонецЕсли; 67 | 68 | КонецПроцедуры 69 | 70 | #КонецОбласти 71 | -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков/src/InformationRegisters/ИТМ_ИсторияОбновленияДинамическихСписков/ManagerModule.bsl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/magnit-tech/one-s-dynamic-list-administration/ae34c37e301ff63cc506e0b7f22ed5e2efbca583/ИТМ_АдминистрированиеДинамическихСписков/src/InformationRegisters/ИТМ_ИсторияОбновленияДинамическихСписков/ManagerModule.bsl -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков/src/InformationRegisters/ИТМ_ИсторияОбновленияДинамическихСписков/RecordSetModule.bsl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/magnit-tech/one-s-dynamic-list-administration/ae34c37e301ff63cc506e0b7f22ed5e2efbca583/ИТМ_АдминистрированиеДинамическихСписков/src/InformationRegisters/ИТМ_ИсторияОбновленияДинамическихСписков/RecordSetModule.bsl -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков/src/InformationRegisters/ИТМ_ИсторияОбновленияДинамическихСписков/ИТМ_ИсторияОбновленияДинамическихСписков.mdo: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | ИТМ_ИсторияОбновленияДинамическихСписков 13 | 14 | ru 15 | История обновления динамических списков (ИТМ) 16 | 17 | true 18 | InDialog 19 | InformationRegister.ИТМ_ИсторияОбновленияДинамическихСписков.Form.ФормаЗаписи 20 | InformationRegister.ИТМ_ИсторияОбновленияДинамическихСписков.Form.ФормаСписка 21 | 22 | Use 23 | Active 24 | 25 | Use 26 | 27 | 28 | 29 | 30 | Use 31 | LineNumber 32 | 33 | Use 34 | 35 | 36 | 37 | 38 | Use 39 | Recorder 40 | 41 | Use 42 | 43 | 44 | 45 | 46 | Use 47 | Period 48 | 49 | ShowError 50 | Use 51 | 52 | 53 | 54 | 55 | ru 56 | Запись истории обновления динамического списка (ИТМ) 57 | 58 | 59 | ru 60 | Журнал истории обновления динамических списков 61 | 62 | 63 | Настройки 64 | 65 | ru 66 | Настройки 67 | 68 | 69 | ValueStorage 70 | 71 | 72 | 73 | Use 74 | Use 75 | 76 | 77 | 78 | НастройкиПредставление 79 | 80 | ru 81 | Настройки представление 82 | 83 | 84 | String 85 | 86 | 87 | 88 | 89 | Use 90 | Use 91 | 92 | 93 | 94 | 95 | 96 | ПредставлениеГруппировки 97 | 98 | ru 99 | Представление группировки 100 | 101 | 102 | String 103 | 104 | 1000 105 | 106 | 107 | 108 | 109 | Use 110 | Use 111 | 112 | 113 | 114 | ПредставлениеОтборов 115 | 116 | ru 117 | Представление отборов 118 | 119 | 120 | String 121 | 122 | 1000 123 | 124 | 125 | true 126 | 127 | 128 | Use 129 | Use 130 | 131 | 132 | 133 | 134 | 135 | ПредставлениеСортировки 136 | 137 | ru 138 | Представление сортировки 139 | 140 | 141 | String 142 | 143 | 1000 144 | 145 | 146 | 147 | 148 | Use 149 | Use 150 | 151 | 152 | 153 | 154 | 155 | ПредставлениеПараметры 156 | 157 | ru 158 | Представление параметры 159 | 160 | 161 | String 162 | 163 | 1000 164 | 165 | 166 | 167 | 168 | Use 169 | Use 170 | 171 | 172 | 173 | 174 | 175 | Комментарий 176 | 177 | ru 178 | Комментарий 179 | 180 | 181 | String 182 | 183 | 1024 184 | 185 | 186 | 187 | 188 | Use 189 | Use 190 | 191 | 192 | 193 | КлючСписка 194 | 195 | ru 196 | Ключ списка 197 | 198 | 199 | CatalogRef.КлючевыеОперации 200 | 201 | 202 | 203 | true 204 | Use 205 | Use 206 | true 207 | 208 | true 209 | true 210 | 211 | 212 | Дата 213 | 214 | ru 215 | Дата 216 | 217 | 218 | Date 219 | 220 | 221 | 222 | 223 | Index 224 | Use 225 | 226 | 227 | 228 | Пользователь 229 | 230 | ru 231 | Пользователь 232 | 233 | 234 | CatalogRef.Пользователи 235 | String 236 | 237 | 128 238 | 239 | 240 | 241 | 242 | Use 243 | Use 244 | 245 | true 246 | 247 | 248 | НомерСеанса 249 | 250 | ru 251 | Номер сеанса 252 | 253 | 254 | Number 255 | 256 | 15 257 | true 258 | 259 | 260 | 261 | 262 | Use 263 | 264 | true 265 | 266 | 267 | ДатаМиллисекунды 268 | 269 | ru 270 | Дата миллисекунды 271 | 272 | 273 | Number 274 | 275 | 14 276 | true 277 | 278 | 279 | 280 | 281 | true 282 | Index 283 | Use 284 | true 285 | 286 | true 287 | 288 | 289 | ФормаСписка 290 | 291 | ru 292 | Форма списка 293 | 294 | PersonalComputer 295 | MobileDevice 296 | 297 | 298 | ФормаЗаписи 299 | 300 | ru 301 | Форма записи 302 | 303 | PersonalComputer 304 | MobileDevice 305 | 306 | 307 | -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков/src/InformationRegisters/ИТМ_НастройкиДинамическихСписков/Forms/ФормаВыбораКлюча/Attributes/Список/ExtInfo/ListSettings.dcss: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Normal 5 | dfcece9d-5077-440b-b6b3-45a5cb4538eb 6 | 7 | 8 | Normal 9 | 88619765-ccb3-46c6-ac52-38e9c992ebd4 10 | 11 | 12 | Normal 13 | b75fecce-942b-4aed-abc9-e6a02e460fb3 14 | 15 | Normal 16 | 911b6018-f537-43e8-a417-da56b22f9aec 17 | 18 | -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков/src/InformationRegisters/ИТМ_НастройкиДинамическихСписков/Forms/ФормаВыбораКлюча/Form.form: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | СписокКомпоновщикНастроекПользовательскиеНастройки 5 | 1 6 | true 7 | true 8 | 9 | true 10 | 11 | 12 | <key>ru</key> 13 | <value>Группа пользовательских настроек</value> 14 | 15 | false 16 | 17 | СписокКомпоновщикНастроекПользовательскиеНастройкиРасширеннаяПодсказка 18 | 2 19 | true 20 | true 21 | 22 | true 23 | 24 | Label 25 | true 26 | true 27 | 28 | Left 29 | 30 | 31 | UsualGroup 32 | 33 | Vertical 34 | WeakSeparation 35 | true 36 | true 37 | Auto 38 | Auto 39 | 40 | 41 | 42 | Список 43 | 3 44 | true 45 | true 46 | 47 | true 48 | 49 | 50 | Список 51 | 52 | 53 | Имя 54 | 19 55 | true 56 | true 57 | 58 | true 59 | 60 | 61 | Список.Имя 62 | 63 | 64 | ИмяРасширеннаяПодсказка 65 | 21 66 | true 67 | true 68 | 69 | true 70 | 71 | Label 72 | true 73 | true 74 | 75 | Left 76 | 77 | 78 | 79 | ИмяКонтекстноеМеню 80 | 20 81 | true 82 | true 83 | 84 | true 85 | 86 | true 87 | 88 | LabelField 89 | Enter 90 | true 91 | Left 92 | true 93 | 94 | true 95 | true 96 | 97 | 98 | 99 | Ссылка 100 | 22 101 | true 102 | true 103 | 104 | 105 | Список.Ref 106 | 107 | 108 | СсылкаРасширеннаяПодсказка 109 | 24 110 | true 111 | true 112 | 113 | true 114 | 115 | Label 116 | true 117 | true 118 | 119 | Left 120 | 121 | 122 | 123 | СсылкаКонтекстноеМеню 124 | 23 125 | true 126 | true 127 | 128 | true 129 | 130 | true 131 | 132 | LabelField 133 | Enter 134 | true 135 | Left 136 | true 137 | 138 | true 139 | true 140 | 141 | 142 | None 143 | 144 | СписокКоманднаяПанель 145 | 5 146 | 147 | СписокВыбрать 148 | 37 149 | true 150 | true 151 | 152 | true 153 | 154 | 155 | СписокВыбратьРасширеннаяПодсказка 156 | 38 157 | true 158 | true 159 | 160 | true 161 | 162 | Label 163 | true 164 | true 165 | 166 | Left 167 | 168 | 169 | Form.Item.Список.StandardCommand.Choose 170 | Auto 171 | true 172 | true 173 | UserCmds 174 | Auto 175 | 176 | true 177 | true 178 | 179 | true 180 | 181 | Left 182 | 183 | 184 | BeforeAddRow 185 | СписокПередНачаломДобавления 186 | 187 | 188 | ChoiceProcessing 189 | СписокОбработкаВыбора 190 | 191 | 192 | true 193 | true 194 | 195 | true 196 | 197 | СписокСтрокаПоиска 198 | 7 199 | 200 | СписокСтрокаПоискаРасширеннаяПодсказка 201 | 9 202 | true 203 | true 204 | 205 | true 206 | 207 | Label 208 | true 209 | true 210 | 211 | Left 212 | 213 | 214 | 215 | СписокСтрокаПоискаКонтекстноеМеню 216 | 8 217 | true 218 | true 219 | 220 | true 221 | 222 | true 223 | 224 | СписокСтрокаПоиска 225 | 226 | true 227 | 228 | 229 | 230 | true 231 | true 232 | 233 | true 234 | 235 | СписокСостояниеПросмотра 236 | 10 237 | 238 | СписокСостояниеПросмотраРасширеннаяПодсказка 239 | 12 240 | true 241 | true 242 | 243 | true 244 | 245 | Label 246 | true 247 | true 248 | 249 | Left 250 | 251 | 252 | 253 | СписокСостояниеПросмотраКонтекстноеМеню 254 | 11 255 | true 256 | true 257 | 258 | true 259 | 260 | true 261 | 262 | ViewStatusAddition 263 | СписокСостояниеПросмотра 264 | 265 | true 266 | 267 | 268 | 269 | true 270 | true 271 | 272 | true 273 | 274 | СписокУправлениеПоиском 275 | 13 276 | 277 | СписокУправлениеПоискомРасширеннаяПодсказка 278 | 15 279 | true 280 | true 281 | 282 | true 283 | 284 | Label 285 | true 286 | true 287 | 288 | Left 289 | 290 | 291 | 292 | СписокУправлениеПоискомКонтекстноеМеню 293 | 14 294 | true 295 | true 296 | 297 | true 298 | 299 | true 300 | 301 | SearchControlAddition 302 | СписокУправлениеПоиском 303 | 304 | true 305 | 306 | 307 | 308 | СписокРасширеннаяПодсказка 309 | 6 310 | true 311 | true 312 | 313 | true 314 | 315 | Label 316 | true 317 | true 318 | 319 | Left 320 | 321 | 322 | 323 | СписокКонтекстноеМеню 324 | 4 325 | true 326 | true 327 | 328 | true 329 | 330 | true 331 | 332 | true 333 | true 334 | true 335 | true 336 | true 337 | true 338 | MultiRow 339 |
true
340 | 1 341 | 1 342 | AutoUse 343 | AutoUse 344 | true 345 | true 346 | true 347 | Auto 348 | Auto 349 | ExpandTopLevel 350 | true 351 | true 352 | true 353 | true 354 | AsFileRef 355 | 356 | Список.DefaultPicture 357 | 358 | 359 | 60 360 | 361 | 0001-01-01T00:00:00 362 | 0001-01-01T00:00:00 363 | 364 | 365 | true 366 | true 367 | СписокКомпоновщикНастроекПользовательскиеНастройки 368 | 369 |
370 | 371 | ФормаКоманднаяПанель 372 | -1 373 | true 374 | true 375 | 376 | true 377 | 378 | Left 379 | true 380 | 381 | 382 | OnCreateAtServer 383 | ПриСозданииНаСервере 384 | 385 | Copy 386 | LockOwnerWindow 387 | true 388 | true 389 | true 390 | Vertical 391 | true 392 | true 393 | true 394 | true 395 | true 396 | 397 | Список 398 | 1 399 | 400 | DynamicList 401 | 402 | 403 | true 404 | 405 | 406 | true 407 | 408 | 409 | Список.Ref 410 | 411 |
true
412 | 413 | ВЫБРАТЬ 414 | *, 415 | ИТМ_НастройкиДинамическихСписков.КлючСписка ЕСТЬ НЕ NULL КАК ЕстьНастройка 416 | ИЗ 417 | Справочник.КлючевыеОперации КАК КлючевыеОперации 418 | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИТМ_НастройкиДинамическихСписков КАК ИТМ_НастройкиДинамическихСписков 419 | ПО КлючевыеОперации.Ссылка = ИТМ_НастройкиДинамическихСписков.КлючСписка 420 | 421 | ГДЕ 422 | КлючевыеОперации.Имя ПОДОБНО &ШаблонПоискаРазделителя 423 | И КлючевыеОперации.ПометкаУдаления = Ложь 424 | Catalog.КлючевыеОперации 425 | true 426 | true 427 | true 428 | 429 |
430 | 431 | 432 | 433 | 434 | 0 435 | FormCommandBarImportant 436 | 0 437 | 438 | 439 | 440 | 441 | 442 |
443 | -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков/src/InformationRegisters/ИТМ_НастройкиДинамическихСписков/Forms/ФормаВыбораКлюча/Module.bsl: -------------------------------------------------------------------------------- 1 | // @strict-types 2 | 3 | #Область ОбработчикиСобытийФормы 4 | 5 | &НаСервере 6 | Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) 7 | 8 | ШаблонПоискаРазделителя = ИТМ_АдминистрированиеДинамическихСписковКлиентСервер.РазделительФормыИЭлемента(); 9 | ШаблонПоискаРазделителя = СтрШаблон("%1%2%1", "%", ШаблонПоискаРазделителя); 10 | Список.Параметры.УстановитьЗначениеПараметра("ШаблонПоискаРазделителя", ШаблонПоискаРазделителя); 11 | 12 | КонецПроцедуры 13 | 14 | #КонецОбласти 15 | 16 | #Область ОбработчикиСобытийЭлементовТаблицыФормыСписок 17 | 18 | &НаКлиенте 19 | Процедура СписокПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр) 20 | 21 | Отказ = Истина; 22 | ОткрытьФорму("РегистрСведений.ИТМ_НастройкиДинамическихСписков.Форма.ФормаСозданияКлюча",,Элементы.Список); 23 | 24 | КонецПроцедуры 25 | 26 | // Список обработка выбора. 27 | // 28 | // Параметры: 29 | // Элемент - ТаблицаФормы - Элемент 30 | // ВыбранноеЗначение - Число - Выбранное значение 31 | // СтандартнаяОбработка - Булево - Стандартная обработка 32 | &НаКлиенте 33 | Процедура СписокОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) 34 | 35 | СтандартнаяОбработка = Ложь; 36 | Элементы.Список.ТекущаяСтрока = ВыбранноеЗначение; 37 | 38 | КонецПроцедуры 39 | 40 | #КонецОбласти 41 | -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков/src/InformationRegisters/ИТМ_НастройкиДинамическихСписков/Forms/ФормаВыбораФормы/Items/ДоступныеФормы/RowsPicture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/magnit-tech/one-s-dynamic-list-administration/ae34c37e301ff63cc506e0b7f22ed5e2efbca583/ИТМ_АдминистрированиеДинамическихСписков/src/InformationRegisters/ИТМ_НастройкиДинамическихСписков/Forms/ФормаВыбораФормы/Items/ДоступныеФормы/RowsPicture.png -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков/src/InformationRegisters/ИТМ_НастройкиДинамическихСписков/Forms/ФормаВыбораФормы/Module.bsl: -------------------------------------------------------------------------------- 1 | // @strict-types 2 | 3 | #Область ОбработчикиСобытийФормы 4 | 5 | &НаСервере 6 | Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) 7 | 8 | ЗаполнитьВспомогательныеЗначения(); 9 | 10 | ЗаполнитьДеревоДоступныхФорм(); 11 | 12 | КонецПроцедуры 13 | 14 | #КонецОбласти 15 | 16 | #Область ОбработчикиСобытийЭлементовТаблицыФормыДоступныеФормы 17 | 18 | // Доступные формы выбор. 19 | // 20 | // Параметры: 21 | // Элемент - ТаблицаФормы - Элемент 22 | // ВыбраннаяСтрока - Число - Выбранная строка 23 | // Поле - ПолеФормы - Поле 24 | // СтандартнаяОбработка - Булево - Стандартная обработка 25 | &НаКлиенте 26 | Процедура ДоступныеФормыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) 27 | 28 | ВыбратьФорму(); 29 | 30 | КонецПроцедуры 31 | 32 | #КонецОбласти 33 | 34 | #Область ОбработчикиКомандФормы 35 | 36 | &НаКлиенте 37 | Процедура КомандаВыбратьФорму(Команда) 38 | 39 | ВыбратьФорму(); 40 | 41 | КонецПроцедуры 42 | 43 | #КонецОбласти 44 | 45 | #Область СлужебныеПроцедурыИФункции 46 | 47 | &НаКлиенте 48 | Процедура ВыбратьФорму() 49 | 50 | ТекущиеДанные = Элементы.ДоступныеФормы.ТекущиеДанные; 51 | Если ТекущиеДанные = Неопределено Тогда 52 | ПолноеИмя = ""; 53 | Иначе 54 | ПолноеИмя = ТекущиеДанные.ПолноеИмя; 55 | КонецЕсли; 56 | 57 | ОповеститьОВыборе(ПолноеИмя); 58 | 59 | КонецПроцедуры 60 | 61 | &НаСервере 62 | Процедура ЗаполнитьВспомогательныеЗначения() 63 | 64 | ВспомогательныеЗначения = ШаблонВспомогательныхЗначений(); 65 | 66 | КонецПроцедуры 67 | 68 | // Шаблон вспомогательных данных. 69 | // 70 | // Возвращаемое значение: 71 | // Структура - Шаблон вспомогательных данных: 72 | // * ИндексыКартинкиСтрокФорм - Структура - 73 | &НаСервереБезКонтекста 74 | Функция ШаблонВспомогательныхЗначений() 75 | 76 | ИндексыКартинкиСтрокФорм = Новый Структура; 77 | 78 | ИменаОбъектов = "Константа,Справочник,Документ,ПланВидовХарактеристик,ПланСчетов, 79 | |ПланВидовРасчета,РегистрСведений,РегистрНакопления,РегистрБухгалтерии,РегистрРасчета, 80 | |БизнесПроцесс,Задача,Отчет,Обработка,ВнешнийИсточникДанных,ЖурналДокументов,ПланОбмена"; 81 | 82 | КоллекцияИмен = СтрРазделить(ИменаОбъектов, "," + Символы.ПС, Ложь); 83 | 84 | Для ИндексКартинки = 1 По КоллекцияИмен.Количество() Цикл 85 | ИндексыКартинкиСтрокФорм.Вставить(КоллекцияИмен[ИндексКартинки-1], ИндексКартинки); 86 | КонецЦикла; 87 | 88 | Результат = Новый Структура; 89 | Результат.Вставить("ИндексыКартинкиСтрокФорм", ИндексыКартинкиСтрокФорм); 90 | 91 | Возврат Результат; 92 | 93 | КонецФункции 94 | 95 | // Вспомогательные значения. 96 | // 97 | // Возвращаемое значение: 98 | // см. ШаблонВспомогательныхЗначений 99 | &НаСервере 100 | Функция ВспомогательныеЗначения() 101 | 102 | Возврат ВспомогательныеЗначения; 103 | 104 | КонецФункции 105 | 106 | &НаСервере 107 | Процедура ЗаполнитьДеревоДоступныхФорм() 108 | 109 | КорневыеСтроки = ДоступныеФормы.ПолучитьЭлементы(); 110 | КорневыеСтроки.Очистить(); 111 | 112 | Для Каждого КлючИЗначение Из МетаданныеЕдинственногоИМножественного() Цикл 113 | 114 | КлючМетаданных = КлючИЗначение.Ключ; //Строка 115 | ИмяМетаданных = КлючИЗначение.Значение; 116 | 117 | СтрокаТипаОбъектов = НовоеОписаниеДоступнойФормы(КорневыеСтроки, ИмяМетаданных); 118 | ВспомогательныеЗначения().ИндексыКартинкиСтрокФорм.Свойство(КлючМетаданных, СтрокаТипаОбъектов.Картинка); 119 | 120 | КоллекцияСтрокОбъектов = СтрокаТипаОбъектов.ПолучитьЭлементы(); 121 | 122 | Для Каждого ТекущиеМетаданные Из Метаданные[ИмяМетаданных] Цикл //ОбъектМетаданных 123 | 124 | КоллекцияМетаданныхФорм = Новый Массив; 125 | СтрокаТекущегоОбъекта = Неопределено; //ДанныеФормыЭлементДерева 126 | 127 | ЗаполнитьДеревоДоступныхФорм_ОбработатьМетаданные( 128 | ТекущиеМетаданные, КоллекцияСтрокОбъектов, СтрокаТипаОбъектов, 129 | КоллекцияМетаданныхФорм, СтрокаТекущегоОбъекта); 130 | 131 | КоллекцияСтрокФорм = СтрокаТекущегоОбъекта.ПолучитьЭлементы(); 132 | 133 | ЗаполнитьДеревоДоступныхФорм_ОбработатьФормы(КоллекцияМетаданныхФорм, КоллекцияСтрокФорм); 134 | 135 | Если НЕ ЗначениеЗаполнено(КоллекцияСтрокФорм) Тогда 136 | КоллекцияСтрокОбъектов.Удалить(СтрокаТекущегоОбъекта); 137 | КонецЕсли; 138 | 139 | КонецЦикла; 140 | 141 | КонецЦикла; 142 | 143 | КонецПроцедуры 144 | 145 | // Заполнить дерево доступных форм обработать метаданные. 146 | // 147 | // Параметры: 148 | // ТекущиеМетаданные - ОбъектМетаданных - Текущие метаданные 149 | // КоллекцияСтрокОбъектов - ДанныеФормыКоллекцияЭлементовДерева - Коллекция строк объектов 150 | // СтрокаТипаОбъектов - ДанныеФормыЭлементДерева - Строка типа объектов 151 | // КоллекцияМетаданныхФорм - Массив из ОбъектМетаданных - Коллекция метаданных форм 152 | // СтрокаТекущегоОбъекта - ДанныеФормыЭлементДерева, Неопределено - Строка текущего объекта 153 | &НаСервереБезКонтекста 154 | Процедура ЗаполнитьДеревоДоступныхФорм_ОбработатьМетаданные( 155 | ТекущиеМетаданные, КоллекцияСтрокОбъектов, СтрокаТипаОбъектов, 156 | КоллекцияМетаданныхФорм, СтрокаТекущегоОбъекта) 157 | 158 | Если Метаданные.ОбщиеФормы.Содержит(ТекущиеМетаданные) Тогда 159 | КоллекцияМетаданныхФорм.Добавить(ТекущиеМетаданные); 160 | СтрокаТекущегоОбъекта = СтрокаТипаОбъектов; 161 | Иначе 162 | КоллекцияМетаданныхФорм = ИТМ_АдминистрированиеДинамическихСписковКлиентСервер.СвойствоОбъекта( 163 | ТекущиеМетаданные, "Формы"); //Массив из ОбъектМетаданных 164 | Если КоллекцияМетаданныхФорм <> Неопределено Тогда 165 | СтрокаТекущегоОбъекта = НовоеОписаниеДоступнойФормы(КоллекцияСтрокОбъектов, 166 | ТекущиеМетаданные.Имя, ТекущиеМетаданные.Синоним, СтрокаТипаОбъектов.Картинка); 167 | КонецЕсли; 168 | КонецЕсли; 169 | 170 | КонецПроцедуры 171 | 172 | // Заполнить дерево доступных форм обработать формы. 173 | // 174 | // Параметры: 175 | // КоллекцияМетаданныхФорм - Массив из ОбъектМетаданных - Коллекция метаданных форм 176 | // КоллекцияСтрокФорм - ДанныеФормыКоллекцияЭлементовДерева - Коллекция строк форм 177 | &НаСервере 178 | Процедура ЗаполнитьДеревоДоступныхФорм_ОбработатьФормы(КоллекцияМетаданныхФорм, КоллекцияСтрокФорм) 179 | 180 | Для Каждого МетаданныеФормы Из КоллекцияМетаданныхФорм Цикл //ОбъектМетаданныхФорма 181 | 182 | Если НЕ МетаданныеФормы.ТипФормы = Метаданные.СвойстваОбъектов.ТипФормы.Управляемая Тогда 183 | Продолжить; 184 | КонецЕсли; 185 | 186 | ОписаниеФормы = НовоеОписаниеДоступнойФормы(КоллекцияСтрокФорм); 187 | ЗаполнитьЗначенияСвойств(ОписаниеФормы, МетаданныеФормы); 188 | ОписаниеФормы.ПолноеИмя = МетаданныеФормы.ПолноеИмя(); 189 | ОписаниеФормы.ЭтоФорма = Истина; 190 | 191 | Если ОписаниеФормы.ПолноеИмя = Параметры.ПолноеИмяФормы Тогда 192 | Элементы.ДоступныеФормы.ТекущаяСтрока = ОписаниеФормы.ПолучитьИдентификатор(); 193 | КонецЕсли; 194 | 195 | КонецЦикла; 196 | 197 | КонецПроцедуры 198 | 199 | // Добавить описание доступной формы. 200 | // 201 | // Параметры: 202 | // КоллекцияСтрок - ДанныеФормыКоллекцияЭлементовДерева - Коллекция строк 203 | // Имя - Произвольный, Строка - Имя 204 | // Синоним - Строка - Синоним 205 | // Картинка - Число - Картинка 206 | // 207 | // Возвращаемое значение: 208 | // ДанныеФормыЭлементДерева - Добавить описание доступной формы 209 | &НаСервереБезКонтекста 210 | Функция НовоеОписаниеДоступнойФормы(КоллекцияСтрок, Имя = "", Синоним = "", Картинка = 0) 211 | 212 | ПолноеИмяФормы = ""; 213 | НавигационнаяСсылка = ""; 214 | 215 | НоваяСтрока = КоллекцияСтрок.Добавить(); 216 | НоваяСтрока.Имя = Имя; 217 | НоваяСтрока.Синоним = ?(ПустаяСтрока(Синоним), Имя, Синоним); 218 | НоваяСтрока.Картинка = Картинка; 219 | НоваяСтрока.ПолноеИмя = ПолноеИмяФормы; 220 | 221 | НоваяСтрока.НавигационнаяСсылка = НавигационнаяСсылка; 222 | 223 | НоваяСтрока.ЭтоФорма = НЕ ПустаяСтрока(НоваяСтрока.ПолноеИмя) 224 | И НЕ ПустаяСтрока(НоваяСтрока.НавигационнаяСсылка); 225 | 226 | Возврат НоваяСтрока; 227 | 228 | КонецФункции 229 | 230 | &НаКлиентеНаСервереБезКонтекста 231 | Функция МетаданныеЕдинственногоИМножественного() 232 | 233 | Результат = Новый Структура; 234 | Результат.Вставить("ОбщаяФорма" , "ОбщиеФормы"); 235 | Результат.Вставить("ПланОбмена" , "ПланыОбмена"); 236 | Результат.Вставить("Справочник" , "Справочники"); 237 | Результат.Вставить("Документ" , "Документы"); 238 | Результат.Вставить("ЖурналДокументов" , "ЖурналыДокументов"); 239 | Результат.Вставить("Перечисление" , "Перечисления"); 240 | Результат.Вставить("Отчет" , "Отчеты"); 241 | Результат.Вставить("Обработка" , "Обработки"); 242 | Результат.Вставить("ПланВидовХарактеристик" , "ПланыВидовХарактеристик"); 243 | Результат.Вставить("ПланСчетов" , "ПланыСчетов"); 244 | Результат.Вставить("ПланВидовРасчета" , "ПланыВидовРасчета"); 245 | Результат.Вставить("РегистрСведений" , "РегистрыСведений"); 246 | Результат.Вставить("РегистрНакопления" , "РегистрыНакопления"); 247 | Результат.Вставить("РегистрБухгалтерии" , "РегистрыБухгалтерии"); 248 | Результат.Вставить("РегистрРасчета" , "РегистрыРасчета"); 249 | Результат.Вставить("БизнесПроцесс" , "БизнесПроцессы"); 250 | Результат.Вставить("Задача" , "Задачи"); 251 | 252 | Возврат Результат; 253 | 254 | КонецФункции 255 | 256 | #КонецОбласти 257 | -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков/src/InformationRegisters/ИТМ_НастройкиДинамическихСписков/Forms/ФормаСозданияКлюча/Form.form: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ПолноеИмяФормы 5 | 13 6 | true 7 | true 8 | 9 | true 10 | 11 | 12 | ПолноеИмяФормы 13 | 14 | 15 | OnChange 16 | ПолноеИмяФормыПриИзменении 17 | 18 | 19 | ПолноеИмяФормыРасширеннаяПодсказка 20 | 15 21 | true 22 | true 23 | 24 | true 25 | 26 | Label 27 | true 28 | true 29 | 30 | Left 31 | 32 | 33 | 34 | ПолноеИмяФормыКонтекстноеМеню 35 | 14 36 | true 37 | true 38 | 39 | true 40 | 41 | true 42 | 43 | InputField 44 | Enter 45 | true 46 | Left 47 | true 48 | 49 | 50 | StartChoice 51 | ПолноеИмяФормыНачалоВыбора 52 | 53 | 54 | ChoiceProcessing 55 | ПолноеИмяФормыОбработкаВыбора 56 | 57 | true 58 | true 59 | true 60 | true 61 | true 62 | true 63 | true 64 | 65 | 66 | 67 | ИмяЭлементаСписка 68 | 4 69 | true 70 | true 71 | 72 | true 73 | 74 | 75 | ИмяЭлементаСписка 76 | 77 | 78 | OnChange 79 | ИмяЭлементаСпискаПриИзменении 80 | 81 | 82 | ИмяЭлементаСпискаРасширеннаяПодсказка 83 | 6 84 | true 85 | true 86 | 87 | true 88 | 89 | Label 90 | true 91 | true 92 | 93 | Left 94 | 95 | 96 | 97 | ИмяЭлементаСпискаКонтекстноеМеню 98 | 5 99 | true 100 | true 101 | 102 | true 103 | 104 | true 105 | 106 | InputField 107 | Enter 108 | true 109 | Left 110 | true 111 | 112 | 113 | StartChoice 114 | ИмяЭлементаСпискаНачалоВыбора 115 | 116 | true 117 | true 118 | true 119 | true 120 | true 121 | true 122 | true 123 | 124 | 125 | 126 | КлючеваяСтрока 127 | 7 128 | true 129 | true 130 | 131 | true 132 | 133 | 134 | КлючеваяСтрока 135 | 136 | 137 | КлючеваяСтрокаРасширеннаяПодсказка 138 | 9 139 | true 140 | true 141 | 142 | true 143 | 144 | Label 145 | true 146 | true 147 | 148 | Left 149 | 150 | 151 | 152 | КлючеваяСтрокаКонтекстноеМеню 153 | 8 154 | true 155 | true 156 | 157 | true 158 | 159 | true 160 | 161 | InputField 162 | true 163 | Enter 164 | true 165 | Left 166 | true 167 | 168 | true 169 | true 170 | true 171 | true 172 | true 173 | true 174 | 175 | 176 | 177 | Наименование 178 | 16 179 | true 180 | true 181 | 182 | true 183 | 184 | 185 | Наименование 186 | 187 | 188 | НаименованиеРасширеннаяПодсказка 189 | 18 190 | true 191 | true 192 | 193 | true 194 | 195 | Label 196 | true 197 | true 198 | 199 | Left 200 | 201 | 202 | 203 | НаименованиеКонтекстноеМеню 204 | 17 205 | true 206 | true 207 | 208 | true 209 | 210 | true 211 | 212 | InputField 213 | Enter 214 | true 215 | Left 216 | true 217 | 218 | true 219 | true 220 | true 221 | true 222 | true 223 | true 224 | 225 | 226 | 227 | ФормаКоманднаяПанель 228 | -1 229 | 230 | ФормаСоздатьЭлемент 231 | 19 232 | true 233 | true 234 | 235 | true 236 | 237 | 238 | ФормаСоздатьЭлементРасширеннаяПодсказка 239 | 20 240 | true 241 | true 242 | 243 | true 244 | 245 | Label 246 | true 247 | true 248 | 249 | Left 250 | 251 | 252 | Form.Command.СоздатьЭлемент 253 | Auto 254 | true 255 | true 256 | true 257 | UserCmds 258 | Auto 259 | 260 | true 261 | true 262 | 263 | true 264 | 265 | Left 266 | true 267 | 268 | 269 | OnOpen 270 | ПриОткрытии 271 | 272 | LockOwnerWindow 273 | true 274 | true 275 | true 276 | Vertical 277 | true 278 | true 279 | true 280 | true 281 | true 282 | 283 | ИмяЭлементаСписка 284 | 285 | <key>ru</key> 286 | <value>Имя элемента списка</value> 287 | 288 | 2 289 | 290 | String 291 | 292 | 293 | 294 | true 295 | 296 | 297 | true 298 | 299 | 300 | 301 | КлючеваяСтрока 302 | 303 | <key>ru</key> 304 | <value>Ключевая строка</value> 305 | 306 | 3 307 | 308 | String 309 | 310 | 311 | 312 | true 313 | 314 | 315 | true 316 | 317 | 318 | 319 | Наименование 320 | 321 | <key>ru</key> 322 | <value>Наименование</value> 323 | 324 | 4 325 | 326 | String 327 | 328 | 329 | 330 | true 331 | 332 | 333 | true 334 | 335 | 336 | 337 | ПолноеИмяФормы 338 | 339 | <key>ru</key> 340 | <value>Полное имя формы</value> 341 | 342 | 6 343 | 344 | String 345 | 346 | 347 | 348 | true 349 | 350 | 351 | true 352 | 353 | 354 | 355 | СоздатьЭлемент 356 | 357 | <key>ru</key> 358 | <value>Создать элемент</value> 359 | 360 | 1 361 | 362 | ru 363 | Создать элемент 364 | 365 | 366 | true 367 | 368 | 369 | 370 | Команда_СоздатьЭлемент 371 | 372 | 373 | Auto 374 | 375 | 376 | 377 | 378 | 379 | 380 | -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков/src/InformationRegisters/ИТМ_НастройкиДинамическихСписков/Forms/ФормаСозданияКлюча/Module.bsl: -------------------------------------------------------------------------------- 1 | // @strict-types 2 | 3 | #Область ОбработчикиСобытийФормы 4 | 5 | &НаКлиенте 6 | Процедура ПриОткрытии(Отказ) 7 | 8 | ОбновитьВычисляемыеДанные(ЭтотОбъект); 9 | 10 | КонецПроцедуры 11 | 12 | #КонецОбласти 13 | 14 | #Область ОбработчикиСобытийЭлементовШапкиФормы 15 | 16 | &НаКлиенте 17 | Процедура ПолноеИмяФормыНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) 18 | 19 | СтандартнаяОбработка = Ложь; 20 | 21 | ИмяОткрываемойФормы = "РегистрСведений.ИТМ_НастройкиДинамическихСписков.Форма.ФормаВыбораФормы"; 22 | ПараметрыОткрытия = Новый Структура("ПолноеИмяФормы", ПолноеИмяФормы); 23 | ОткрытьФорму(ИмяОткрываемойФормы,ПараметрыОткрытия,Элементы.ПолноеИмяФормы); 24 | 25 | КонецПроцедуры 26 | 27 | &НаКлиенте 28 | Процедура ПолноеИмяФормыОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) 29 | 30 | СтандартнаяОбработка = Ложь; 31 | 32 | ПолноеИмяФормы = Строка(ВыбранноеЗначение); 33 | ОбновитьВычисляемыеДанные(ЭтотОбъект); 34 | 35 | КонецПроцедуры 36 | 37 | &НаКлиенте 38 | Процедура ИмяЭлементаСпискаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) 39 | 40 | СтандартнаяОбработка = Ложь; 41 | ПоказатьВыборЭлементаСписка(); 42 | 43 | КонецПроцедуры 44 | 45 | &НаКлиенте 46 | Процедура ПолноеИмяФормыПриИзменении(Элемент) 47 | 48 | ОбновитьВычисляемыеДанные(ЭтотОбъект); 49 | 50 | КонецПроцедуры 51 | 52 | &НаКлиенте 53 | Процедура ИмяЭлементаСпискаПриИзменении(Элемент) 54 | 55 | ОбновитьВычисляемыеДанные(ЭтотОбъект); 56 | 57 | КонецПроцедуры 58 | 59 | #КонецОбласти 60 | 61 | #Область ОбработчикиКомандФормы 62 | 63 | &НаКлиенте 64 | Процедура Команда_СоздатьЭлемент(Команда) 65 | 66 | КлючеваяОперация = ЭлементКлючевойОперации(КлючеваяСтрока); 67 | ОповеститьОВыборе(КлючеваяОперация); 68 | 69 | КонецПроцедуры 70 | 71 | #КонецОбласти 72 | 73 | #Область СлужебныеПроцедурыИФункции 74 | 75 | &НаКлиенте 76 | Процедура ПоказатьВыборЭлементаСписка(РезультатВопроса = Неопределено, ДополнительныеПараметры = Неопределено) Экспорт 77 | 78 | Если РезультатВопроса = Неопределено Тогда 79 | 80 | ПоказатьВопрос( 81 | Новый ОписаниеОповещения("ПоказатьВыборЭлементаСписка", ЭтотОбъект, ДополнительныеПараметры), 82 | "Для поиска элементов форма будет программно получена. Продолжить?", РежимДиалогаВопрос.ДаНет); 83 | 84 | ИначеЕсли РезультатВопроса = КодВозвратаДиалога.Да Тогда 85 | 86 | //@skip-check use-non-recommended-method - нет необходимости в открытии формы для получения списка элементов 87 | ВыбраннаяФорма = ПолучитьФорму(ПолноеИмяФормы); //sonar:DeprecatedMethodGetForm 88 | ЭлементыТаблицы = ИТМ_АдминистрированиеДинамическихСписковКлиентСервер.ЭлементыТаблицыНаФорме(ВыбраннаяФорма.Элементы); 89 | ОповещениеВыбора = Новый ОписаниеОповещения("ОбработатьВыборИмениЭлементаСписка", ЭтотОбъект); 90 | 91 | ИменаЭлементов = Новый СписокЗначений; //СписокЗначений из Строка 92 | Для Каждого ЭлементТаблица Из ЭлементыТаблицы Цикл 93 | ИменаЭлементов.Добавить(ЭлементТаблица.Имя, ЭлементТаблица.Имя); 94 | КонецЦикла; 95 | 96 | Если ЗначениеЗаполнено(ИменаЭлементов) Тогда 97 | ИменаЭлементов.ПоказатьВыборЭлемента(ОповещениеВыбора, "Выберите элемент формы"); 98 | КонецЕсли; 99 | 100 | Иначе 101 | 102 | Возврат; 103 | 104 | КонецЕсли; 105 | 106 | КонецПроцедуры 107 | 108 | // Обработать выбор имени элемента списка. 109 | // 110 | // Параметры: 111 | // РезультатВыбора - ЭлементСпискаЗначений - Результат выбора 112 | // ДополнительныеПараметры - Структура - Дополнительные параметры 113 | &НаКлиенте 114 | Процедура ОбработатьВыборИмениЭлементаСписка(РезультатВыбора, ДополнительныеПараметры) Экспорт 115 | 116 | Если РезультатВыбора = Неопределено Тогда 117 | Возврат; 118 | КонецЕсли; 119 | 120 | ИмяЭлементаСписка = Строка(РезультатВыбора.Значение); 121 | 122 | ОбновитьВычисляемыеДанные(ЭтотОбъект); 123 | 124 | КонецПроцедуры 125 | 126 | // Обновить вычисляемые данные. 127 | // 128 | // Параметры: 129 | // Форма - ФормаКлиентскогоПриложения - Форма 130 | &НаКлиентеНаСервереБезКонтекста 131 | Процедура ОбновитьВычисляемыеДанные(Форма) 132 | 133 | Форма.КлючеваяСтрока = ИТМ_АдминистрированиеДинамическихСписковКлиентСервер.ИмяКлючаДинамическогоСписка( 134 | Форма.ПолноеИмяФормы, Форма.ИмяЭлементаСписка); 135 | 136 | Форма.Наименование = ИТМ_АдминистрированиеДинамическихСписковКлиентСервер.НаименованиеКлючевойОперации( 137 | Форма.КлючеваяСтрока); 138 | 139 | КонецПроцедуры 140 | 141 | // Создать элемент ключевой операции. 142 | // 143 | // Параметры: 144 | // КлючеваяСтрока - Строка - Ключевая строка 145 | // 146 | // Возвращаемое значение: 147 | // СправочникСсылка.КлючевыеОперации, Произвольный - Создать элемент ключевой операции 148 | &НаСервереБезКонтекста 149 | Функция ЭлементКлючевойОперации(КлючеваяСтрока) 150 | 151 | Возврат ИТМ_АдминистрированиеДинамическихСписков.ПолучитьКлючевуюОперацию(КлючеваяСтрока); 152 | 153 | КонецФункции 154 | 155 | #КонецОбласти 156 | 157 | -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков/src/InformationRegisters/ИТМ_НастройкиДинамическихСписков/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Normal 5 | dfcece9d-5077-440b-b6b3-45a5cb4538eb 6 | 7 | 8 | 9 | КлючСписка 10 | Asc 11 | 12 | 13 | Владелец 14 | Asc 15 | 16 | Normal 17 | 88619765-ccb3-46c6-ac52-38e9c992ebd4 18 | 19 | 20 | 21 | 22 | 23 | Владелец 24 | 25 | 26 | 27 | 28 | Владелец 29 | NotFilled 30 | 31 | 32 | 33 | 34 | ЦветТекста 35 | #C0C0C0 36 | 37 | 38 | Текст 39 | <Общие настройки> 40 | 41 | 42 | 43 | Normal 44 | b75fecce-942b-4aed-abc9-e6a02e460fb3 45 | 46 | Normal 47 | 911b6018-f537-43e8-a417-da56b22f9aec 48 | 49 | -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков/src/InformationRegisters/ИТМ_НастройкиДинамическихСписков/Forms/ФормаСписка/Form.form: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | СписокКомпоновщикНастроекПользовательскиеНастройки 5 | 1 6 | true 7 | true 8 | 9 | true 10 | 11 | 12 | <key>ru</key> 13 | <value>Группа пользовательских настроек</value> 14 | 15 | false 16 | 17 | СписокКомпоновщикНастроекПользовательскиеНастройкиРасширеннаяПодсказка 18 | 2 19 | true 20 | true 21 | 22 | true 23 | 24 | Label 25 | true 26 | true 27 | 28 | Left 29 | 30 | 31 | UsualGroup 32 | 33 | Vertical 34 | WeakSeparation 35 | true 36 | true 37 | Auto 38 | Auto 39 | 40 | 41 | 42 | Список 43 | 3 44 | true 45 | true 46 | 47 | true 48 | 49 | 50 | Список 51 | 52 | true 53 | None 54 | 55 | КлючСписка 56 | 16 57 | true 58 | true 59 | 60 | true 61 | 62 | 63 | Список.КлючСписка 64 | 65 | true 66 | 67 | КлючСпискаРасширеннаяПодсказка 68 | 18 69 | true 70 | true 71 | 72 | true 73 | 74 | Label 75 | true 76 | true 77 | 78 | Left 79 | 80 | 81 | 82 | КлючСпискаКонтекстноеМеню 83 | 17 84 | true 85 | true 86 | 87 | true 88 | 89 | true 90 | 91 | LabelField 92 | Enter 93 | true 94 | Left 95 | true 96 | 97 | true 98 | true 99 | 100 | 101 | 102 | Использование 103 | 19 104 | true 105 | true 106 | 107 | true 108 | 109 | 110 | Список.Использование 111 | 112 | true 113 | 114 | ИспользованиеРасширеннаяПодсказка 115 | 21 116 | true 117 | true 118 | 119 | true 120 | 121 | Label 122 | true 123 | true 124 | 125 | Left 126 | 127 | 128 | 129 | ИспользованиеКонтекстноеМеню 130 | 20 131 | true 132 | true 133 | 134 | true 135 | 136 | true 137 | 138 | CheckBoxField 139 | Enter 140 | true 141 | Left 142 | true 143 | 144 | 145 | None 146 | 147 | СписокКоманднаяПанель 148 | 5 149 | true 150 | true 151 | 152 | true 153 | 154 | Left 155 | 156 | 157 | BeforeAddRow 158 | СписокПередНачаломДобавления 159 | 160 | 161 | true 162 | true 163 | 164 | true 165 | 166 | СписокСтрокаПоиска 167 | 7 168 | 169 | СписокСтрокаПоискаРасширеннаяПодсказка 170 | 9 171 | true 172 | true 173 | 174 | true 175 | 176 | Label 177 | true 178 | true 179 | 180 | Left 181 | 182 | 183 | 184 | СписокСтрокаПоискаКонтекстноеМеню 185 | 8 186 | true 187 | true 188 | 189 | true 190 | 191 | true 192 | 193 | СписокСтрокаПоиска 194 | 195 | true 196 | 197 | 198 | 199 | true 200 | true 201 | 202 | true 203 | 204 | СписокСостояниеПросмотра 205 | 10 206 | 207 | СписокСостояниеПросмотраРасширеннаяПодсказка 208 | 12 209 | true 210 | true 211 | 212 | true 213 | 214 | Label 215 | true 216 | true 217 | 218 | Left 219 | 220 | 221 | 222 | СписокСостояниеПросмотраКонтекстноеМеню 223 | 11 224 | true 225 | true 226 | 227 | true 228 | 229 | true 230 | 231 | ViewStatusAddition 232 | СписокСостояниеПросмотра 233 | 234 | true 235 | 236 | 237 | 238 | true 239 | true 240 | 241 | true 242 | 243 | СписокУправлениеПоиском 244 | 13 245 | 246 | СписокУправлениеПоискомРасширеннаяПодсказка 247 | 15 248 | true 249 | true 250 | 251 | true 252 | 253 | Label 254 | true 255 | true 256 | 257 | Left 258 | 259 | 260 | 261 | СписокУправлениеПоискомКонтекстноеМеню 262 | 14 263 | true 264 | true 265 | 266 | true 267 | 268 | true 269 | 270 | SearchControlAddition 271 | СписокУправлениеПоиском 272 | 273 | true 274 | 275 | 276 | 277 | СписокРасширеннаяПодсказка 278 | 6 279 | true 280 | true 281 | 282 | true 283 | 284 | Label 285 | true 286 | true 287 | 288 | Left 289 | 290 | 291 | 292 | СписокКонтекстноеМеню 293 | 4 294 | true 295 | true 296 | 297 | true 298 | 299 | true 300 | 301 | true 302 | true 303 | true 304 | true 305 | true 306 | MultiRow 307 |
true
308 | 1 309 | 1 310 | AutoUse 311 | AutoUse 312 | true 313 | true 314 | true 315 | Auto 316 | Auto 317 | ExpandTopLevel 318 | true 319 | true 320 | true 321 | AsFileRef 322 | 323 | Список.DefaultPicture 324 | 325 | 326 | 60 327 | 328 | 0001-01-01T00:00:00 329 | 0001-01-01T00:00:00 330 | 331 | 332 | true 333 | true 334 | СписокКомпоновщикНастроекПользовательскиеНастройки 335 | 336 |
337 | 338 | ФормаКоманднаяПанель 339 | -1 340 | 341 | ФормаНормализоватьНаименованияКлючевыхОпераций 342 | 22 343 | true 344 | true 345 | 346 | true 347 | 348 | 349 | ФормаНормализоватьНаименованияКлючевыхОперацийРасширеннаяПодсказка 350 | 23 351 | true 352 | true 353 | 354 | true 355 | 356 | Label 357 | true 358 | true 359 | 360 | Left 361 | 362 | 363 | Form.Command.НормализоватьНаименованияКлючевыхОпераций 364 | Auto 365 | true 366 | true 367 | UserCmds 368 | Auto 369 | InAdditionalSubmenu 370 | 371 | true 372 | true 373 | 374 | true 375 | 376 | Left 377 | true 378 | 379 | true 380 | true 381 | true 382 | Vertical 383 | true 384 | true 385 | true 386 | true 387 | true 388 | 389 | Список 390 | 1 391 | 392 | DynamicList 393 | 394 | 395 | true 396 | 397 | 398 | true 399 | 400 | 401 | Список.КлючСписка 402 | 403 |
true
404 | 405 | InformationRegister.ИТМ_НастройкиДинамическихСписков 406 | true 407 | true 408 | true 409 | true 410 | 411 |
412 | 413 | НормализоватьНаименованияКлючевыхОпераций 414 | 415 | <key>ru</key> 416 | <value>Нормализовать наименования</value> 417 | 418 | 1 419 | 420 | ru 421 | Нормализовать наименования ключевых операций 422 | 423 | 424 | true 425 | 426 | 427 | 428 | НормализоватьНаименованияКлючевыхОпераций 429 | 430 | 431 | Auto 432 | 433 | 434 | 435 | 436 | 437 | 438 |
439 | -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков/src/InformationRegisters/ИТМ_НастройкиДинамическихСписков/Forms/ФормаСписка/Module.bsl: -------------------------------------------------------------------------------- 1 | // @strict-types 2 | 3 | #Область ОбработчикиСобытийЭлементовТаблицыФормыСписок 4 | 5 | &НаКлиенте 6 | Процедура СписокПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр) 7 | 8 | Отказ = Истина; 9 | 10 | ПараметрыОповещения = ПараметрыДобавленияНастройкиПоКлючу(); 11 | Если Копирование Тогда 12 | ПараметрыОповещения.Копирование = Истина; 13 | ПараметрыОповещения.Копируемое = Элемент.ТекущиеДанные.КлючСписка; 14 | КонецЕсли; 15 | 16 | ОписаниеОповещения = Новый ОписаниеОповещения( 17 | "ДобавитьНастройкуКоКлючу", ЭтотОбъект, ПараметрыОповещения); 18 | 19 | ПараметрыОткрытия = ИТМ_АдминистрированиеДинамическихСписковКлиент.ПараметрыОткрытияФормыВыбораКлючаСписка(); 20 | ПараметрыОткрытия.Владелец = ЭтотОбъект; 21 | ПараметрыОткрытия.Отбор.ЕстьНастройка = Ложь; 22 | ПараметрыОткрытия.ОписаниеОповещения = ОписаниеОповещения; 23 | 24 | ИТМ_АдминистрированиеДинамическихСписковКлиент.ОткрытьФормуВыбораКлючаСписка(ПараметрыОткрытия); 25 | 26 | КонецПроцедуры 27 | 28 | #КонецОбласти 29 | 30 | #Область ОбработчикиКомандФормы 31 | 32 | &НаКлиенте 33 | Процедура НормализоватьНаименованияКлючевыхОпераций(Команда) 34 | 35 | НормализоватьНаименованияКлючевыхОперацийНаСервере(); 36 | 37 | КонецПроцедуры 38 | 39 | #КонецОбласти 40 | 41 | #Область СлужебныеПроцедурыИФункции 42 | 43 | // Параметры добавления настройки по ключу. 44 | // 45 | // Возвращаемое значение: 46 | // Структура - Параметры добавления настройки по ключу: 47 | // * Копирование - Булево - Режим копирования 48 | // * Копируемое - Неопределено, СправочникСсылка.КлючевыеОперации - Копируемое значение 49 | &НаКлиенте 50 | Функция ПараметрыДобавленияНастройкиПоКлючу() 51 | 52 | Результат = Новый Структура; 53 | Результат.Вставить("Копирование", Ложь); 54 | Результат.Вставить("Копируемое" , Неопределено); 55 | 56 | Возврат Результат; 57 | 58 | КонецФункции 59 | 60 | // Добавить настройку ко ключу. 61 | // 62 | // Параметры: 63 | // РезультатЗакрытия - СправочникСсылка.КлючевыеОперации - Результат закрытия 64 | // ПараметрыДобавления - см. ПараметрыДобавленияНастройкиПоКлючу 65 | &НаКлиенте 66 | Процедура ДобавитьНастройкуКоКлючу(РезультатЗакрытия, ПараметрыДобавления) Экспорт 67 | 68 | Если ТипЗнч(РезультатЗакрытия) <> Тип("СправочникСсылка.КлючевыеОперации") 69 | ИЛИ РезультатЗакрытия.Пустая() Тогда 70 | Возврат; 71 | КонецЕсли; 72 | 73 | ДобавитьНастройкуКоКлючуНаСервере(РезультатЗакрытия, ПараметрыДобавления); 74 | 75 | КонецПроцедуры 76 | 77 | // Добавить настройку ко ключу на сервере. 78 | // 79 | // Параметры: 80 | // КлючСписка - СправочникСсылка.КлючевыеОперации - Ключ списка 81 | // ПараметрыДобавления - см. ПараметрыДобавленияНастройкиПоКлючу 82 | &НаСервере 83 | Процедура ДобавитьНастройкуКоКлючуНаСервере(КлючСписка, ПараметрыДобавления) 84 | 85 | РегистрыСведений.ИТМ_НастройкиДинамическихСписков.ДобавитьЗапись(КлючСписка); 86 | 87 | Если ПараметрыДобавления.Копирование Тогда 88 | КопируемыеНастройки = РегистрыСведений.ИТМ_НастройкиДинамическихСписков.НастройкиСписка(ПараметрыДобавления.Копируемое); 89 | РегистрыСведений.ИТМ_НастройкиДинамическихСписков.ДобавитьЗапись(КлючСписка, Ложь, КопируемыеНастройки); 90 | КонецЕсли; 91 | 92 | ДанныеКлючаЗаписи = Новый Структура("КлючСписка", КлючСписка); 93 | КлючТекущейЗаписи = РегистрыСведений.ИТМ_НастройкиДинамическихСписков.СоздатьКлючЗаписи(ДанныеКлючаЗаписи); 94 | 95 | Элементы.Список.ТекущаяСтрока = КлючТекущейЗаписи; 96 | 97 | КонецПроцедуры 98 | 99 | &НаСервере 100 | Процедура НормализоватьНаименованияКлючевыхОперацийНаСервере() 101 | 102 | ИТМ_АдминистрированиеДинамическихСписков.НормализоватьНаименованияКлючевыхОпераций(); 103 | Элементы.Список.Обновить(); 104 | 105 | КонецПроцедуры 106 | 107 | #КонецОбласти 108 | -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков/src/InformationRegisters/ИТМ_НастройкиДинамическихСписков/ManagerModule.bsl: -------------------------------------------------------------------------------- 1 | // @strict-types 2 | 3 | #Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда 4 | 5 | #Область ПрограммныйИнтерфейс 6 | 7 | // Возвращает настройки динамического списка из базы 8 | // 9 | // Параметры: 10 | // КлючСписка - Строка, СправочникСсылка.КлючевыеОперации - Ключ списка 11 | // 12 | // Возвращаемое значение: 13 | // см. ИТМ_АдминистрированиеДинамическихСписковКлиентСервер.ШаблонПараметровДинамическогоСписка 14 | Функция НастройкиСписка(Знач КлючСписка) Экспорт 15 | 16 | НастройкиСписка = ИТМ_АдминистрированиеДинамическихСписковКлиентСервер.ШаблонПараметровДинамическогоСписка(); 17 | КлючСписка = ИТМ_АдминистрированиеДинамическихСписков.КлючСписка(КлючСписка); 18 | Если НЕ ЗначениеЗаполнено(КлючСписка) Тогда 19 | Возврат НастройкиСписка; 20 | КонецЕсли; 21 | 22 | Запрос = Новый Запрос; 23 | Запрос.Текст = "ВЫБРАТЬ 24 | | Настройки, 25 | | КлючСписка, 26 | | Использование 27 | |ИЗ 28 | | РегистрСведений.ИТМ_НастройкиДинамическихСписков 29 | |ГДЕ 30 | | КлючСписка = &КлючСписка"; 31 | Запрос.УстановитьПараметр("КлючСписка", КлючСписка); 32 | РезультатЗапроса = Запрос.Выполнить(); 33 | Если НЕ РезультатЗапроса.Пустой() Тогда 34 | 35 | Выборка = РезультатЗапроса.Выбрать(); 36 | Выборка.Следующий(); 37 | 38 | Для Каждого КолонкаРезультата Из РезультатЗапроса.Колонки Цикл 39 | ИмяТекущейКолонки = КолонкаРезультата.Имя; 40 | ТекущееЗначение = Выборка[ИмяТекущейКолонки]; //Произвольный 41 | Если ТипЗнч(ТекущееЗначение) = Тип("ХранилищеЗначения") Тогда 42 | ЗначениеСтруктурой = ТекущееЗначение.Получить(); //Структура 43 | ИТМ_АдминистрированиеДинамическихСписковКлиентСервер.ДополнитьСтруктуруРекурсивно( 44 | НастройкиСписка, ЗначениеСтруктурой, Истина); 45 | Иначе 46 | НастройкиСписка.Вставить(ИмяТекущейКолонки, ТекущееЗначение); 47 | КонецЕсли; 48 | КонецЦикла; 49 | 50 | КонецЕсли; 51 | 52 | //@skip-check constructor-function-return-section - Баг ЕДТ 53 | Возврат НастройкиСписка; 54 | 55 | КонецФункции 56 | 57 | // Добавляет запись в регистр 58 | // 59 | // Параметры: 60 | // КлючСписка - СправочникСсылка.КлючевыеОперации - Ключ списка 61 | // Использование - Булево - Использование настроек 62 | // Настройки - см. ИТМ_АдминистрированиеДинамическихСписковКлиентСервер.ШаблонПараметровДинамическогоСписка 63 | // 64 | Процедура ДобавитьЗапись(КлючСписка, Использование = Ложь, Настройки = Неопределено) Экспорт 65 | 66 | МенеджерЗаписи = НовыйМенеджерЗаписи(КлючСписка, Использование, Настройки); 67 | МенеджерЗаписи.Записать(Истина); 68 | 69 | КонецПроцедуры 70 | 71 | // Возвращает новый менеджер записи по параметрам 72 | // 73 | // Параметры: 74 | // КлючСписка - СправочникСсылка.КлючевыеОперации - Ключ списка 75 | // Использование - Булево - Использование настроек 76 | // Настройки - см. ИТМ_АдминистрированиеДинамическихСписковКлиентСервер.ШаблонПараметровДинамическогоСписка 77 | // 78 | // Возвращаемое значение: 79 | // РегистрСведенийМенеджерЗаписи.ИТМ_НастройкиДинамическихСписков - Менеджер записи 80 | // 81 | Функция НовыйМенеджерЗаписи(КлючСписка, Использование = Ложь, Настройки = Неопределено) Экспорт 82 | 83 | МенеджерЗаписи = СоздатьМенеджерЗаписи(); 84 | МенеджерЗаписи.КлючСписка = КлючСписка; 85 | МенеджерЗаписи.Использование = Использование; 86 | МенеджерЗаписи.Настройки = Новый ХранилищеЗначения(Настройки); 87 | 88 | Возврат МенеджерЗаписи; 89 | 90 | КонецФункции 91 | 92 | #КонецОбласти 93 | 94 | #КонецЕсли 95 | -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков/src/InformationRegisters/ИТМ_НастройкиДинамическихСписков/RecordSetModule.bsl: -------------------------------------------------------------------------------- 1 | // @strict-types 2 | 3 | #Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда 4 | 5 | #Область ОбработчикиСобытий 6 | 7 | Процедура ПередЗаписью(Отказ, Замещение) 8 | 9 | Если ОбменДанными.Загрузка Тогда 10 | Возврат; 11 | КонецЕсли; 12 | 13 | ИменаКоллекций = "Измерения,Ресурсы,Реквизиты"; 14 | УдаляемыеКоллекции = СтрРазделить(ИменаКоллекций, ","); 15 | МетаданныеРегистра = Метаданные.РегистрыСведений.ИТМ_НастройкиДинамическихСписков; 16 | 17 | Для Каждого ТекущаяЗапись Из ЭтотОбъект Цикл 18 | 19 | ТекущиеНастройки = ТекущаяЗапись.Настройки.Получить(); //Структура 20 | Если НЕ ТипЗнч(ТекущиеНастройки) = Тип("Структура") Тогда 21 | Продолжить; 22 | КонецЕсли; 23 | 24 | Для Каждого ТекущаяКоллекция Из УдаляемыеКоллекции Цикл 25 | Для Каждого ОписаниеСвойства Из МетаданныеРегистра[ТекущаяКоллекция] Цикл //ОбъектМетаданных 26 | ТекущиеНастройки.Удалить(ОписаниеСвойства.Имя); 27 | КонецЦикла; 28 | КонецЦикла; 29 | 30 | ТекущаяЗапись.Настройки = Новый ХранилищеЗначения(ТекущиеНастройки); 31 | 32 | КонецЦикла; 33 | 34 | КонецПроцедуры 35 | 36 | #КонецОбласти 37 | 38 | #КонецЕсли -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков/src/InformationRegisters/ИТМ_НастройкиДинамическихСписков/ИТМ_НастройкиДинамическихСписков.mdo: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | ИТМ_НастройкиДинамическихСписков 13 | 14 | ru 15 | Настройки динамических списков (ИТМ) 16 | 17 | true 18 | InDialog 19 | InformationRegister.ИТМ_НастройкиДинамическихСписков.Form.ФормаЗаписи 20 | InformationRegister.ИТМ_НастройкиДинамическихСписков.Form.ФормаСписка 21 | 22 | Use 23 | Active 24 | 25 | Use 26 | 27 | 28 | 29 | 30 | Use 31 | LineNumber 32 | 33 | Use 34 | 35 | 36 | 37 | 38 | Use 39 | Recorder 40 | 41 | Use 42 | 43 | 44 | 45 | 46 | Use 47 | Period 48 | 49 | ShowError 50 | Use 51 | 52 | 53 | 54 | 55 | ru 56 | Настройка динамического списка (ИТМ) 57 | 58 | 59 | ru 60 | Выполнение настроек администрирования динамических списков 61 | 62 | 63 | Использование 64 | 65 | ru 66 | Использование 67 | 68 | 69 | Boolean 70 | 71 | 72 | 73 | Use 74 | Use 75 | 76 | 77 | 78 | Настройки 79 | 80 | ru 81 | Настройки 82 | 83 | 84 | ValueStorage 85 | 86 | 87 | 88 | Use 89 | Use 90 | 91 | 92 | 93 | КлючСписка 94 | 95 | ru 96 | Ключ списка 97 | 98 | 99 | CatalogRef.КлючевыеОперации 100 | 101 | 102 | 103 | true 104 | Use 105 | Use 106 | 107 | true 108 | true 109 | 110 | 111 | ФормаСписка 112 | 113 | ru 114 | Форма списка 115 | 116 | PersonalComputer 117 | MobileDevice 118 | 119 | 120 | ФормаВыбораКлюча 121 | 122 | ru 123 | Форма выбора ключа 124 | 125 | PersonalComputer 126 | MobileDevice 127 | 128 | 129 | ФормаЗаписи 130 | 131 | ru 132 | Форма записи 133 | 134 | PersonalComputer 135 | MobileDevice 136 | 137 | 138 | ФормаВыбораФормы 139 | 140 | ru 141 | Форма выбора формы 142 | 143 | PersonalComputer 144 | MobileDevice 145 | 146 | 147 | ФормаСозданияКлюча 148 | 149 | ru 150 | Форма создания ключа 151 | 152 | PersonalComputer 153 | MobileDevice 154 | 155 | 156 | -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков/src/Roles/ИТМ_ИзменениеИсторияОбновленияДинамическихСписков/Rights.rights: -------------------------------------------------------------------------------- 1 | 2 | 3 | false 4 | true 5 | false 6 | 7 | InformationRegister.ИТМ_ИсторияОбновленияДинамическихСписков 8 | 9 | Read 10 | true 11 | 12 | 13 | Update 14 | true 15 | 16 | 17 | View 18 | true 19 | 20 | 21 | Edit 22 | true 23 | 24 | 25 | ReadDataHistory 26 | true 27 | 28 | 29 | ReadDataHistoryOfMissingData 30 | true 31 | 32 | 33 | UpdateDataHistory 34 | true 35 | 36 | 37 | UpdateDataHistoryOfMissingData 38 | true 39 | 40 | 41 | UpdateDataHistorySettings 42 | true 43 | 44 | 45 | UpdateDataHistoryVersionComment 46 | true 47 | 48 | 49 | EditDataHistoryVersionComment 50 | true 51 | 52 | 53 | 54 | Configuration.ИТМ_АдминистрированиеДинамическихСписков 55 | 56 | MainWindowModeNormal 57 | true 58 | 59 | 60 | MainWindowModeWorkplace 61 | true 62 | 63 | 64 | MainWindowModeEmbeddedWorkplace 65 | true 66 | 67 | 68 | MainWindowModeFullscreenWorkplace 69 | true 70 | 71 | 72 | MainWindowModeKiosk 73 | true 74 | 75 | 76 | AnalyticsSystemClient 77 | true 78 | 79 | 80 | 81 | -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков/src/Roles/ИТМ_ИзменениеИсторияОбновленияДинамическихСписков/ИТМ_ИзменениеИсторияОбновленияДинамическихСписков.mdo: -------------------------------------------------------------------------------- 1 | 2 | 3 | ИТМ_ИзменениеИсторияОбновленияДинамическихСписков 4 | 5 | ru 6 | Изменение история обновления динамических списков (ИТМ) 7 | 8 | 9 | -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков/src/Roles/ИТМ_ИзменениеНастройкиДинамическихСписков/Rights.rights: -------------------------------------------------------------------------------- 1 | 2 | 3 | false 4 | true 5 | false 6 | 7 | Configuration.ИТМ_АдминистрированиеДинамическихСписков 8 | 9 | MainWindowModeNormal 10 | true 11 | 12 | 13 | MainWindowModeWorkplace 14 | true 15 | 16 | 17 | MainWindowModeEmbeddedWorkplace 18 | true 19 | 20 | 21 | MainWindowModeFullscreenWorkplace 22 | true 23 | 24 | 25 | MainWindowModeKiosk 26 | true 27 | 28 | 29 | AnalyticsSystemClient 30 | true 31 | 32 | 33 | 34 | InformationRegister.ИТМ_НастройкиДинамическихСписков 35 | 36 | Read 37 | true 38 | 39 | 40 | Update 41 | true 42 | 43 | 44 | View 45 | true 46 | 47 | 48 | Edit 49 | true 50 | 51 | 52 | ReadDataHistory 53 | true 54 | 55 | 56 | ReadDataHistoryOfMissingData 57 | true 58 | 59 | 60 | UpdateDataHistory 61 | true 62 | 63 | 64 | UpdateDataHistoryOfMissingData 65 | true 66 | 67 | 68 | UpdateDataHistorySettings 69 | true 70 | 71 | 72 | UpdateDataHistoryVersionComment 73 | true 74 | 75 | 76 | EditDataHistoryVersionComment 77 | true 78 | 79 | 80 | 81 | -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков/src/Roles/ИТМ_ИзменениеНастройкиДинамическихСписков/ИТМ_ИзменениеНастройкиДинамическихСписков.mdo: -------------------------------------------------------------------------------- 1 | 2 | 3 | ИТМ_ИзменениеНастройкиДинамическихСписков 4 | 5 | ru 6 | Изменение настройки динамических списков (ИТМ) 7 | 8 | 9 | -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков/src/Roles/ИТМ_ЧтениеИсторияОбновленияДинамическихСписков/Rights.rights: -------------------------------------------------------------------------------- 1 | 2 | 3 | false 4 | true 5 | false 6 | 7 | InformationRegister.ИТМ_ИсторияОбновленияДинамическихСписков 8 | 9 | Read 10 | true 11 | 12 | 13 | View 14 | true 15 | 16 | 17 | ReadDataHistory 18 | true 19 | 20 | 21 | ViewDataHistory 22 | true 23 | 24 | 25 | 26 | Configuration.ИТМ_АдминистрированиеДинамическихСписков 27 | 28 | MainWindowModeNormal 29 | true 30 | 31 | 32 | MainWindowModeWorkplace 33 | true 34 | 35 | 36 | MainWindowModeEmbeddedWorkplace 37 | true 38 | 39 | 40 | MainWindowModeFullscreenWorkplace 41 | true 42 | 43 | 44 | MainWindowModeKiosk 45 | true 46 | 47 | 48 | AnalyticsSystemClient 49 | true 50 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков/src/Roles/ИТМ_ЧтениеИсторияОбновленияДинамическихСписков/ИТМ_ЧтениеИсторияОбновленияДинамическихСписков.mdo: -------------------------------------------------------------------------------- 1 | 2 | 3 | ИТМ_ЧтениеИсторияОбновленияДинамическихСписков 4 | 5 | ru 6 | Чтение история обновления динамических списков (ИТМ) 7 | 8 | 9 | -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков/src/Roles/ИТМ_ЧтениеНастройкиДинамическихСписков/Rights.rights: -------------------------------------------------------------------------------- 1 | 2 | 3 | false 4 | true 5 | false 6 | 7 | Configuration.ИТМ_АдминистрированиеДинамическихСписков 8 | 9 | MainWindowModeNormal 10 | true 11 | 12 | 13 | MainWindowModeWorkplace 14 | true 15 | 16 | 17 | MainWindowModeEmbeddedWorkplace 18 | true 19 | 20 | 21 | MainWindowModeFullscreenWorkplace 22 | true 23 | 24 | 25 | MainWindowModeKiosk 26 | true 27 | 28 | 29 | AnalyticsSystemClient 30 | true 31 | 32 | 33 | 34 | InformationRegister.ИТМ_НастройкиДинамическихСписков 35 | 36 | Read 37 | true 38 | 39 | 40 | View 41 | true 42 | 43 | 44 | ReadDataHistory 45 | true 46 | 47 | 48 | ViewDataHistory 49 | true 50 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков/src/Roles/ИТМ_ЧтениеНастройкиДинамическихСписков/ИТМ_ЧтениеНастройкиДинамическихСписков.mdo: -------------------------------------------------------------------------------- 1 | 2 | 3 | ИТМ_ЧтениеНастройкиДинамическихСписков 4 | 5 | ru 6 | Чтение настройки динамических списков (ИТМ) 7 | 8 | 9 | -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков/src/Subsystems/ИТМ_АдминистрированиеДинамическихСписков/CommandInterface.cmi: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков/src/Subsystems/ИТМ_АдминистрированиеДинамическихСписков/ИТМ_АдминистрированиеДинамическихСписков.mdo: -------------------------------------------------------------------------------- 1 | 2 | 3 | ИТМ_АдминистрированиеДинамическихСписков 4 | 5 | ru 6 | Администрирование динамических списков (ИТМ) 7 | 8 | true 9 | 10 | ru 11 | Подсистема предназначена для настройки подключенных форм списка в режиме предприятия для исключения возможности применения неоптимальных настроек для динамических списков со стороны пользователей 12 | 13 | InformationRegister.ИТМ_ИсторияОбновленияДинамическихСписков 14 | InformationRegister.ИТМ_НастройкиДинамическихСписков 15 | Role.ИТМ_ИзменениеИсторияОбновленияДинамическихСписков 16 | Role.ИТМ_ИзменениеНастройкиДинамическихСписков 17 | Role.ИТМ_ЧтениеИсторияОбновленияДинамическихСписков 18 | Role.ИТМ_ЧтениеНастройкиДинамическихСписков 19 | CommonModule.ИТМ_АдминистрированиеДинамическихСписков 20 | CommonModule.ИТМ_АдминистрированиеДинамическихСписковВызовСервера 21 | CommonModule.ИТМ_АдминистрированиеДинамическихСписковКлиент 22 | CommonModule.ИТМ_АдминистрированиеДинамическихСписковКлиентПереопределяемый 23 | CommonModule.ИТМ_АдминистрированиеДинамическихСписковКлиентСервер 24 | CommonModule.ИТМ_АдминистрированиеДинамическихСписковПереопределяемый 25 | CommonModule.ИТМ_АдминистрированиеДинамическихСписковПовтИсп 26 | 27 | -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков_Демо/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | ИТМ_АдминистрированиеДинамическихСписков_Демо 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.xtext.ui.shared.xtextBuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.xtext.ui.shared.xtextNature 16 | com._1c.g5.v8.dt.core.V8ExtensionNature 17 | 18 | 19 | -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков_Демо/.settings/org.eclipse.core.resources.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | encoding/=UTF-8 3 | -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков_Демо/DT-INF/PROJECT.PMF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Runtime-Version: 8.3.24 3 | Base-Project: configuration 4 | -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков_Демо/src/Catalogs/ИТМ_ТестовыйСправочник/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Normal 5 | dfcece9d-5077-440b-b6b3-45a5cb4538eb 6 | 7 | 8 | Normal 9 | 88619765-ccb3-46c6-ac52-38e9c992ebd4 10 | 11 | 12 | Normal 13 | b75fecce-942b-4aed-abc9-e6a02e460fb3 14 | 15 | Normal 16 | 911b6018-f537-43e8-a417-da56b22f9aec 17 | 18 | -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков_Демо/src/Catalogs/ИТМ_ТестовыйСправочник/Forms/ФормаСписка/Module.bsl: -------------------------------------------------------------------------------- 1 | 2 | &НаСервере 3 | Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) 4 | 5 | МодульАДС = МодульАдминистрированиеДинамическихСписков(); 6 | МодульАДС.ПриСозданииНаСервере(ЭтотОбъект); 7 | 8 | КонецПроцедуры 9 | 10 | &НаКлиенте 11 | Процедура ПриОткрытии(Отказ) 12 | 13 | МодульАДС = МодульАдминистрированиеДинамическихСписковКлиент(); 14 | МодульАДС.ПриОткрытии(ЭтотОбъект, Отказ); 15 | 16 | КонецПроцедуры 17 | 18 | &НаКлиенте 19 | Процедура ПриЗакрытии(ЗавершениеРаботы) 20 | 21 | МодульАДС = МодульАдминистрированиеДинамическихСписковКлиент(); 22 | МодульАДС.ПриЗакрытии(ЭтотОбъект, ЗавершениеРаботы); 23 | 24 | КонецПроцедуры 25 | 26 | &НаСервере 27 | Процедура СписокПередЗагрузкойПользовательскихНастроекНаСервере( 28 | Элемент, Настройки, ИспользуютсяСтандартныеНастройки) 29 | 30 | МодульАДС = МодульАдминистрированиеДинамическихСписков(); 31 | МодульАДС.ПередЗагрузкойПользовательскихНастроекНаСервере( 32 | ЭтотОбъект, Элемент, Настройки, ИспользуютсяСтандартныеНастройки); 33 | 34 | КонецПроцедуры 35 | 36 | &НаСервереБезКонтекста 37 | Процедура СписокПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки) 38 | 39 | МодульАДС = МодульАдминистрированиеДинамическихСписков(); 40 | МодульАДС.ПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки); 41 | 42 | КонецПроцедуры 43 | 44 | &НаКлиенте 45 | Процедура ИТМ_ОбработатьНакопленныеСобытияОбновления() Экспорт 46 | 47 | МодульАДС = МодульАдминистрированиеДинамическихСписковКлиент(); 48 | МодульАДС.ОбработатьНакопленныеСобытияОбновления(ЭтотОбъект); 49 | 50 | КонецПроцедуры 51 | 52 | &НаСервереБезКонтекста 53 | Функция МодульАдминистрированиеДинамическихСписков() 54 | 55 | Возврат ОбщегоНазначения.ОбщийМодуль("ИТМ_АдминистрированиеДинамическихСписков"); 56 | 57 | КонецФункции 58 | 59 | &НаКлиенте 60 | Функция МодульАдминистрированиеДинамическихСписковКлиент() 61 | 62 | Возврат ОбщегоНазначенияКлиент.ОбщийМодуль("ИТМ_АдминистрированиеДинамическихСписковКлиент"); 63 | 64 | КонецФункции 65 | 66 | -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков_Демо/src/Catalogs/ИТМ_ТестовыйСправочник/ИТМ_ТестовыйСправочник.mdo: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | ИТМ_ТестовыйСправочник 11 | 12 | ru 13 | ИТМ тестовый справочник 14 | 15 | true 16 | Catalog.ИТМ_ТестовыйСправочник.StandardAttribute.Description 17 | Catalog.ИТМ_ТестовыйСправочник.StandardAttribute.Code 18 | DontUse 19 | Use 20 | Managed 21 | Use 22 | 2 23 | true 24 | 9 25 | 25 26 | String 27 | Variable 28 | true 29 | true 30 | AsDescription 31 | InDialog 32 | BothWays 33 | Catalog.ИТМ_ТестовыйСправочник.Form.ФормаСписка 34 | 35 | Строка 36 | 37 | ru 38 | Строка 39 | 40 | 41 | String 42 | 43 | 10 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | Use 52 | Use 53 | 54 | 55 | Число 56 | 57 | ru 58 | Число 59 | 60 | 61 | String 62 | 63 | 10 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | Use 72 | Use 73 | 74 | 75 | ПростаяСсылка 76 | 77 | ru 78 | Простая ссылка 79 | 80 | 81 | DocumentRef.ИТМ_ТестовыйДокумент 82 | 83 | 84 | 85 | 86 | Use 87 | Use 88 | 89 | 90 | Составной 91 | 92 | ru 93 | Составной 94 | 95 | 96 | String 97 | DocumentRef.ИТМ_ТестовыйДокумент 98 | Number 99 | 100 | 10 101 | 102 | 103 | 10 104 | 105 | 106 | 107 | 108 | 109 | Use 110 | Use 111 | 112 | 113 | 114 | 115 | 116 | 117 | ТабличнаяЧасть 118 | 119 | ru 120 | Табличная часть 121 | 122 | 123 | Строка 124 | 125 | ru 126 | Строка 127 | 128 | 129 | String 130 | 131 | 10 132 | 133 | 134 | 135 | 136 | Use 137 | Use 138 | 139 | 140 | Число 141 | 142 | ru 143 | Число 144 | 145 | 146 | String 147 | 148 | 10 149 | 150 | 151 | 152 | 153 | Use 154 | Use 155 | 156 | 157 | ПростаяСсылка 158 | 159 | ru 160 | Простая ссылка 161 | 162 | 163 | DocumentRef.ИТМ_ТестовыйДокумент 164 | 165 | 166 | 167 | Use 168 | Use 169 | 170 | 171 | Составной 172 | 173 | ru 174 | Составной 175 | 176 | 177 | String 178 | DocumentRef.ИТМ_ТестовыйДокумент 179 | Number 180 | 181 | 10 182 | 183 | 184 | 10 185 | 186 | 187 | 188 | 189 | Use 190 | Use 191 | 192 | 193 | 194 | ФормаСписка 195 | 196 | ru 197 | Форма списка 198 | 199 | PersonalComputer 200 | MobileDevice 201 | 202 | 203 | -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков_Демо/src/Configuration/Configuration.mdo: -------------------------------------------------------------------------------- 1 | 2 | 3 | ИТМ_АдминистрированиеДинамическихСписков_Демо 4 | 5 | ru 6 | ИТМ_АдминистрированиеДинамическихСписков_Демо 7 | 8 | Adopted 9 | 10 | Checked 11 | Checked 12 | Checked 13 | Checked 14 | Notify 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | true 24 | ИТМ_ 25 | 8.3.21 26 | AddOn 27 | ManagedApplication 28 | PersonalComputer 29 | Russian 30 | Language.Русский 31 | TaxiEnableVersion8_2 32 | 8.3.21 33 | 34 | Русский 35 | Adopted 36 | 37 | Checked 38 | Checked 39 | 40 | ru 41 | 42 | Subsystem.ИТМ_АдминистрированиеДинамическихСписков_Демо 43 | Catalog.ИТМ_ТестовыйСправочник 44 | Document.ИТМ_ТестовыйДокумент 45 | 46 | -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков_Демо/src/Documents/ИТМ_ТестовыйДокумент/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Normal 5 | dfcece9d-5077-440b-b6b3-45a5cb4538eb 6 | 7 | 8 | Normal 9 | 88619765-ccb3-46c6-ac52-38e9c992ebd4 10 | 11 | 12 | Normal 13 | b75fecce-942b-4aed-abc9-e6a02e460fb3 14 | 15 | Normal 16 | 911b6018-f537-43e8-a417-da56b22f9aec 17 | 18 | -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков_Демо/src/Documents/ИТМ_ТестовыйДокумент/Forms/ФормаСписка/Module.bsl: -------------------------------------------------------------------------------- 1 | 2 | &НаСервере 3 | Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) 4 | 5 | МодульАДС = МодульАдминистрированиеДинамическихСписков(); 6 | МодульАДС.ПриСозданииНаСервере(ЭтотОбъект); 7 | 8 | КонецПроцедуры 9 | 10 | &НаКлиенте 11 | Процедура ПриОткрытии(Отказ) 12 | 13 | МодульАДС = МодульАдминистрированиеДинамическихСписковКлиент(); 14 | МодульАДС.ПриОткрытии(ЭтотОбъект, Отказ); 15 | 16 | КонецПроцедуры 17 | 18 | &НаКлиенте 19 | Процедура ПриЗакрытии(ЗавершениеРаботы) 20 | 21 | МодульАДС = МодульАдминистрированиеДинамическихСписковКлиент(); 22 | МодульАДС.ПриЗакрытии(ЭтотОбъект, ЗавершениеРаботы); 23 | 24 | КонецПроцедуры 25 | 26 | &НаСервере 27 | Процедура СписокПередЗагрузкойПользовательскихНастроекНаСервере( 28 | Элемент, Настройки, ИспользуютсяСтандартныеНастройки) 29 | 30 | МодульАДС = МодульАдминистрированиеДинамическихСписков(); 31 | МодульАДС.ПередЗагрузкойПользовательскихНастроекНаСервере( 32 | ЭтотОбъект, Элемент, Настройки, ИспользуютсяСтандартныеНастройки); 33 | 34 | КонецПроцедуры 35 | 36 | &НаСервереБезКонтекста 37 | Процедура СписокПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки) 38 | 39 | МодульАДС = МодульАдминистрированиеДинамическихСписков(); 40 | МодульАДС.ПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки); 41 | 42 | КонецПроцедуры 43 | 44 | &НаКлиенте 45 | Процедура ИТМ_ОбработатьНакопленныеСобытияОбновления() Экспорт 46 | 47 | МодульАДС = МодульАдминистрированиеДинамическихСписковКлиент(); 48 | МодульАДС.ОбработатьНакопленныеСобытияОбновления(ЭтотОбъект); 49 | 50 | КонецПроцедуры 51 | 52 | &НаСервереБезКонтекста 53 | Функция МодульАдминистрированиеДинамическихСписков() 54 | 55 | Возврат ОбщегоНазначения.ОбщийМодуль("ИТМ_АдминистрированиеДинамическихСписков"); 56 | 57 | КонецФункции 58 | 59 | &НаКлиенте 60 | Функция МодульАдминистрированиеДинамическихСписковКлиент() 61 | 62 | Возврат ОбщегоНазначенияКлиент.ОбщийМодуль("ИТМ_АдминистрированиеДинамическихСписковКлиент"); 63 | 64 | КонецФункции 65 | 66 | 67 | -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков_Демо/src/Documents/ИТМ_ТестовыйДокумент/ИТМ_ТестовыйДокумент.mdo: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | ИТМ_ТестовыйДокумент 11 | 12 | ru 13 | ИТМ тестовый документ 14 | 15 | true 16 | Document.ИТМ_ТестовыйДокумент.StandardAttribute.Number 17 | DontUse 18 | 19 | Use 20 | Posted 21 | 22 | Use 23 | 24 | 25 | 26 | 27 | Use 28 | Ref 29 | 30 | Use 31 | 32 | 33 | 34 | 35 | Use 36 | DeletionMark 37 | 38 | Use 39 | 40 | 41 | 42 | 43 | Use 44 | Date 45 | 46 | ShowError 47 | Use 48 | 49 | 50 | 51 | 52 | Use 53 | Number 54 | 55 | Use 56 | 57 | 58 | 59 | Use 60 | Managed 61 | Use 62 | String 63 | 9 64 | Variable 65 | true 66 | true 67 | Document.ИТМ_ТестовыйДокумент.Form.ФормаСписка 68 | true 69 | true 70 | 71 | Строка 72 | 73 | ru 74 | Строка 75 | 76 | 77 | String 78 | 79 | 10 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | Use 88 | Use 89 | 90 | 91 | Число 92 | 93 | ru 94 | Число 95 | 96 | 97 | String 98 | 99 | 10 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | Use 108 | Use 109 | 110 | 111 | ПростаяСсылка 112 | 113 | ru 114 | Простая ссылка 115 | 116 | 117 | DocumentRef.ИТМ_ТестовыйДокумент 118 | 119 | 120 | 121 | 122 | Use 123 | Use 124 | 125 | 126 | Составной 127 | 128 | ru 129 | Составной 130 | 131 | 132 | String 133 | DocumentRef.ИТМ_ТестовыйДокумент 134 | Number 135 | 136 | 10 137 | 138 | 139 | 10 140 | 141 | 142 | 143 | 144 | 145 | Use 146 | Use 147 | 148 | 149 | ФормаСписка 150 | 151 | ru 152 | Форма списка 153 | 154 | PersonalComputer 155 | MobileDevice 156 | 157 | 158 | 159 | 160 | 161 | 162 | ТабличнаяЧасть 163 | 164 | ru 165 | Табличная часть 166 | 167 | 168 | Use 169 | LineNumber 170 | 171 | Use 172 | 173 | 174 | 175 | 176 | Строка 177 | 178 | ru 179 | Строка 180 | 181 | 182 | String 183 | 184 | 10 185 | 186 | 187 | 188 | 189 | Use 190 | Use 191 | 192 | 193 | Число 194 | 195 | ru 196 | Число 197 | 198 | 199 | String 200 | 201 | 10 202 | 203 | 204 | 205 | 206 | Use 207 | Use 208 | 209 | 210 | ПростаяСсылка 211 | 212 | ru 213 | Простая ссылка 214 | 215 | 216 | DocumentRef.ИТМ_ТестовыйДокумент 217 | 218 | 219 | 220 | Use 221 | Use 222 | 223 | 224 | Составной 225 | 226 | ru 227 | Составной 228 | 229 | 230 | String 231 | DocumentRef.ИТМ_ТестовыйДокумент 232 | Number 233 | 234 | 10 235 | 236 | 237 | 10 238 | 239 | 240 | 241 | 242 | Use 243 | Use 244 | 245 | 246 | 247 | -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков_Демо/src/Subsystems/ИТМ_АдминистрированиеДинамическихСписков_Демо/CommandInterface.cmi: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /ИТМ_АдминистрированиеДинамическихСписков_Демо/src/Subsystems/ИТМ_АдминистрированиеДинамическихСписков_Демо/ИТМ_АдминистрированиеДинамическихСписков_Демо.mdo: -------------------------------------------------------------------------------- 1 | 2 | 3 | ИТМ_АдминистрированиеДинамическихСписков_Демо 4 | 5 | ru 6 | Администрирование динамических списков демо 7 | 8 | true 9 | Document.ИТМ_ТестовыйДокумент 10 | Catalog.ИТМ_ТестовыйСправочник 11 | 12 | --------------------------------------------------------------------------------