diff --git "a/docs/\320\234\320\276\320\264\320\270\321\204\320\270\320\272\320\260\321\206\320\270\321\217\320\244\320\276\321\200\320\274.md" "b/docs/\320\234\320\276\320\264\320\270\321\204\320\270\320\272\320\260\321\206\320\270\321\217\320\244\320\276\321\200\320\274.md" index d6f0e154..a4eab975 100644 --- "a/docs/\320\234\320\276\320\264\320\270\321\204\320\270\320\272\320\260\321\206\320\270\321\217\320\244\320\276\321\200\320\274.md" +++ "b/docs/\320\234\320\276\320\264\320\270\321\204\320\270\320\272\320\260\321\206\320\270\321\217\320\244\320\276\321\200\320\274.md" @@ -1,5 +1,8 @@ # Подсистема "модификация форм" +## Описание + +Предназначена для динамического формирования интерфейса. Также используется в случае изменения типовых форм. Предназначена для динамического формирования интерфейса. Также использовать в случае изменения типовых форма. - Общий модуль **__МодификацияКонфигурацииПереопределяемый** используется для маршрутизации из серверных процедур (напр. **ПриСозданииНаСервере**) по дополнительным модулям разбитым по объектам (напр. **__МодификацияКонфигурацииПереопределяемыйДокумент**). В сам модуль **__МодификацияКонфигурацииПереопределяемый** могут добавляться обработчики событий которых нет изначально. @@ -10,6 +13,71 @@ - Использовать функции и процедуры общего модуля **__РаботаСФормами** для уменьшения объема текста при добавлении элементов (напр. **__РаботаСФормами.СоздатьПоле(Форма, "_ДемоДата", ГруппаНомерДата, "от", 1, "_ДемоДата")**) - В случае если для нужного типа объекта ещё не был создан общий модуль, создать его и добавить в подсистему **__МодификацияФорм** +## Расширение модификации формы + +Проверка сущетсвует ли обработчик события в форме из которой была вызвана функция. + +Порядок действий: +- Если в общем модуле **__МодификацияКонфигурации<директива>Переопределяемый** нет функции **СуществуетОбработчикСобытия**, необходимо добавить согласно примеру ниже + +```1C (BSL) +Функция СуществуетОбработчикСобытия(ИмяФормы, Обработчик = "") + + Если Обработчик = <ИмяПроверяемогоОбработчика> Тогда + Список = __МодификацияКонфигурации<директива>ПовтИсп.СписокФорм<ИмяПроверяемогоОбработчика>(); + КонецЕсли; + + Возврат Список.Получить(ИмяФормы) <> Неопределено; + +КонецФункции +``` + +- Создать в общем модуле **__МодификацияКонфигурации<директива>ПовтИсп** функцию с именем **СписокФорм<ИмяПроверяемогоОбработчика>**. Дополнить соответствие строковым представлением формы (Форма.ИмяФормы) в области // Добавление + +```1C (BSL) +Функция СписокФорм<ИмяОбработчика>() Экспорт + + СписокФорм = Новый Соответствие; + + // Добавление + СписокФорм.Вставить("Документ.ДемоРаботаСФормами.Форма.ФормаДокумента", Истина); + СписокФорм.Вставить("ПланВидовХарактеристик.__ПредопределенныеЗначения.Форма.ФормаСписка", Истина); + // КонецДобавления + + Возврат Новый ФиксированноеСоответствие(СписокФорм); + +КонецФункции +``` + +Пример вызова проверки из типового модуля конфигурации **МодификацияКонфигурацииПереопределяемый**: + +```1C (BSL) +Процедура ПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка) Экспорт + Если __МодификацияКонфигурацииПереопределяемый.СуществуетОбработчикСобытия(Форма.ИмяФормы, "ПриСозданииНаСервере") = Ложь Тогда + Возврат; + КонецЕсли; + __МодификацияКонфигурацииПереопределяемый.ПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка); +КонецПроцедуры +``` + +Пример вызова проверки в расширении, когда в типовой форме отсутствует вызов типового модуля **МодификацияКонфигурацииПереопределяемый**: + +```1C (BSL) +&После("ПриСозданииНаСервере") +Процедура __ПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка) + + Если Отказ Тогда + Возврат; + КонецЕсли; + + //Проверяем необходимо ли модифицировать данную форму + Если __МодификацияКонфигурацииПереопределяемый.СуществуетОбработчикСобытия(Форма.ИмяФормы, "ПриСозданииНаСервере") Тогда + __МодификацияКонфигурацииПереопределяемый.ПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка); + КонецЕсли; + +КонецПроцедуры +``` + Демо-пример использования методов общего модуля ```1C (BSL) diff --git "a/src/cf/CommonModules/__\320\234\320\276\320\264\320\270\321\204\320\270\320\272\320\260\321\206\320\270\321\217\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\232\320\273\320\270\320\265\320\275\321\202\320\237\320\265\321\200\320\265\320\276\320\277\321\200\320\265\320\264\320\265\320\273\321\217\320\265\320\274\321\213\320\271/Ext/Module.bsl" "b/src/cf/CommonModules/__\320\234\320\276\320\264\320\270\321\204\320\270\320\272\320\260\321\206\320\270\321\217\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\232\320\273\320\270\320\265\320\275\321\202\320\237\320\265\321\200\320\265\320\276\320\277\321\200\320\265\320\264\320\265\320\273\321\217\320\265\320\274\321\213\320\271/Ext/Module.bsl" index d152a495..7c1c4d54 100644 --- "a/src/cf/CommonModules/__\320\234\320\276\320\264\320\270\321\204\320\270\320\272\320\260\321\206\320\270\321\217\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\232\320\273\320\270\320\265\320\275\321\202\320\237\320\265\321\200\320\265\320\276\320\277\321\200\320\265\320\264\320\265\320\273\321\217\320\265\320\274\321\213\320\271/Ext/Module.bsl" +++ "b/src/cf/CommonModules/__\320\234\320\276\320\264\320\270\321\204\320\270\320\272\320\260\321\206\320\270\321\217\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\232\320\273\320\270\320\265\320\275\321\202\320\237\320\265\321\200\320\265\320\276\320\277\321\200\320\265\320\264\320\265\320\273\321\217\320\265\320\274\321\213\320\271/Ext/Module.bsl" @@ -52,4 +52,29 @@ КонецПроцедуры +// Функция - Существует обработчик события +// +// Параметры: +// ИмяФормы - Строка - Форма.ИмяФормы +// Обработчик - Строка - Имя проверяемого обработчика +// +// Возвращаемое значение: +// Булево - Возвращает истину, если в списке форм найдена форма +// +Функция СуществуетОбработчикСобытия(ИмяФормы, Обработчик = "") Экспорт + + Если Обработчик = "ПриОткрытии" Тогда + Список = __МодификацияКонфигурацииКлиентПовтИсп.СписокФормПриОткрытии(); + ИначеЕсли Обработчик = "ПередЗаписью" Тогда + Список = __МодификацияКонфигурацииКлиентПовтИсп.СписокФормПередЗаписью(); + ИначеЕсли Обработчик = "ПослеЗаписи" Тогда + Список = __МодификацияКонфигурацииКлиентПовтИсп.СписокФормПослеЗаписи(); + Иначе + Возврат Ложь; + КонецЕсли; + + Возврат Список.Получить(ИмяФормы) <> Неопределено; + +КонецФункции + #КонецОбласти // ПрограммныйИнтерфейс \ No newline at end of file diff --git "a/src/cf/CommonModules/__\320\234\320\276\320\264\320\270\321\204\320\270\320\272\320\260\321\206\320\270\321\217\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\232\320\273\320\270\320\265\320\275\321\202\320\237\320\276\320\262\321\202\320\230\321\201\320\277.xml" "b/src/cf/CommonModules/__\320\234\320\276\320\264\320\270\321\204\320\270\320\272\320\260\321\206\320\270\321\217\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\232\320\273\320\270\320\265\320\275\321\202\320\237\320\276\320\262\321\202\320\230\321\201\320\277.xml" new file mode 100644 index 00000000..9cd4556a --- /dev/null +++ "b/src/cf/CommonModules/__\320\234\320\276\320\264\320\270\321\204\320\270\320\272\320\260\321\206\320\270\321\217\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\232\320\273\320\270\320\265\320\275\321\202\320\237\320\276\320\262\321\202\320\230\321\201\320\277.xml" @@ -0,0 +1,23 @@ + + + + + __МодификацияКонфигурацииКлиентПовтИсп + + + ru + Модификация конфигурации клиент повт исп + + + + false + true + false + false + false + false + false + DuringSession + + + \ No newline at end of file diff --git "a/src/cf/CommonModules/__\320\234\320\276\320\264\320\270\321\204\320\270\320\272\320\260\321\206\320\270\321\217\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\232\320\273\320\270\320\265\320\275\321\202\320\237\320\276\320\262\321\202\320\230\321\201\320\277/Ext/Module.bsl" "b/src/cf/CommonModules/__\320\234\320\276\320\264\320\270\321\204\320\270\320\272\320\260\321\206\320\270\321\217\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\232\320\273\320\270\320\265\320\275\321\202\320\237\320\276\320\262\321\202\320\230\321\201\320\277/Ext/Module.bsl" new file mode 100644 index 00000000..91d9d0e1 --- /dev/null +++ "b/src/cf/CommonModules/__\320\234\320\276\320\264\320\270\321\204\320\270\320\272\320\260\321\206\320\270\321\217\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\232\320\273\320\270\320\265\320\275\321\202\320\237\320\276\320\262\321\202\320\230\321\201\320\277/Ext/Module.bsl" @@ -0,0 +1,59 @@ +// Библиотека проектных подсистем для упрощения разработки архитектуры на 1С: Предприятие 8, +// включая доработку типовых конфигураций. +// +// Copyright First BIT company +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// URL: https://github.com/firstBitSportivnaya/PSSL/ +// + +#Область СлужебныйПрограммныйИнтерфейс + +Функция СписокФормПриОткрытии() Экспорт + + СписокФорм = Новый Соответствие; + + // Добавление + + // КонецДобавления + + Возврат Новый ФиксированноеСоответствие(СписокФорм); + +КонецФункции + +Функция СписокФормПередЗаписью() Экспорт + + СписокФорм = Новый Соответствие; + + // Добавление + + // КонецДобавления + + Возврат Новый ФиксированноеСоответствие(СписокФорм); + +КонецФункции + +Функция СписокФормПослеЗаписи() Экспорт + + СписокФорм = Новый Соответствие; + + // Добавление + + // КонецДобавления + + Возврат Новый ФиксированноеСоответствие(СписокФорм); + +КонецФункции + +#КонецОбласти diff --git "a/src/cf/CommonModules/__\320\234\320\276\320\264\320\270\321\204\320\270\320\272\320\260\321\206\320\270\321\217\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\237\320\265\321\200\320\265\320\276\320\277\321\200\320\265\320\264\320\265\320\273\321\217\320\265\320\274\321\213\320\271/Ext/Module.bsl" "b/src/cf/CommonModules/__\320\234\320\276\320\264\320\270\321\204\320\270\320\272\320\260\321\206\320\270\321\217\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\237\320\265\321\200\320\265\320\276\320\277\321\200\320\265\320\264\320\265\320\273\321\217\320\265\320\274\321\213\320\271/Ext/Module.bsl" index 7a6ea3e3..6fed9ffd 100644 --- "a/src/cf/CommonModules/__\320\234\320\276\320\264\320\270\321\204\320\270\320\272\320\260\321\206\320\270\321\217\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\237\320\265\321\200\320\265\320\276\320\277\321\200\320\265\320\264\320\265\320\273\321\217\320\265\320\274\321\213\320\271/Ext/Module.bsl" +++ "b/src/cf/CommonModules/__\320\234\320\276\320\264\320\270\321\204\320\270\320\272\320\260\321\206\320\270\321\217\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\237\320\265\321\200\320\265\320\276\320\277\321\200\320\265\320\264\320\265\320\273\321\217\320\265\320\274\321\213\320\271/Ext/Module.bsl" @@ -528,6 +528,35 @@ #КонецОбласти // ПроцедурыИФункцииРаботыСУсловнымОформлением +// Функция - Существует обработчик события +// +// Параметры: +// ИмяФормы - Строка - Форма.ИмяФормы +// Обработчик - Строка - Имя проверяемого обработчика +// +// Возвращаемое значение: +// Булево - Возвращает истину, если в списке форм найдена форма +// +Функция СуществуетОбработчикСобытия(ИмяФормы, Обработчик = "") Экспорт + + // Добавление + Если Обработчик = "ПриЧтенииНаСервере" Тогда + Список = __МодификацияКонфигурацииПовтИсп.СписокФормПриЧтенииНаСервере(); + ИначеЕсли Обработчик = "ПриСозданииНаСервере" Тогда + Список = __МодификацияКонфигурацииПовтИсп.СписокФормПриСозданииНаСервере(); + ИначеЕсли Обработчик = "ПередЗаписьюНаСервере" Тогда + Список = __МодификацияКонфигурацииПовтИсп.СписокФормПередЗаписьюНаСервере(); + ИначеЕсли Обработчик = "ПослеЗаписиНаСервере" Тогда + Список = __МодификацияКонфигурацииПовтИсп.СписокФормПослеЗаписиНаСервере(); + Иначе + Возврат Ложь; + КонецЕсли; + // КонецДобавления + + Возврат Список.Получить(ИмяФормы) <> Неопределено; + +КонецФункции + #КонецОбласти // ПрограммныйИнтерфейс #Область СлужебныеПроцедурыИФункции diff --git "a/src/cf/CommonModules/__\320\234\320\276\320\264\320\270\321\204\320\270\320\272\320\260\321\206\320\270\321\217\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\237\320\276\320\262\321\202\320\230\321\201\320\277.xml" "b/src/cf/CommonModules/__\320\234\320\276\320\264\320\270\321\204\320\270\320\272\320\260\321\206\320\270\321\217\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\237\320\276\320\262\321\202\320\230\321\201\320\277.xml" new file mode 100644 index 00000000..385912b2 --- /dev/null +++ "b/src/cf/CommonModules/__\320\234\320\276\320\264\320\270\321\204\320\270\320\272\320\260\321\206\320\270\321\217\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\237\320\276\320\262\321\202\320\230\321\201\320\277.xml" @@ -0,0 +1,23 @@ + + + + + __МодификацияКонфигурацииПовтИсп + + + ru + Модификация конфигурации повт исп + + + + false + false + true + true + false + false + false + DuringSession + + + \ No newline at end of file diff --git "a/src/cf/CommonModules/__\320\234\320\276\320\264\320\270\321\204\320\270\320\272\320\260\321\206\320\270\321\217\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\237\320\276\320\262\321\202\320\230\321\201\320\277/Ext/Module.bsl" "b/src/cf/CommonModules/__\320\234\320\276\320\264\320\270\321\204\320\270\320\272\320\260\321\206\320\270\321\217\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\237\320\276\320\262\321\202\320\230\321\201\320\277/Ext/Module.bsl" new file mode 100644 index 00000000..9daa0e11 --- /dev/null +++ "b/src/cf/CommonModules/__\320\234\320\276\320\264\320\270\321\204\320\270\320\272\320\260\321\206\320\270\321\217\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\237\320\276\320\262\321\202\320\230\321\201\320\277/Ext/Module.bsl" @@ -0,0 +1,72 @@ +// Библиотека проектных подсистем для упрощения разработки архитектуры на 1С: Предприятие 8, +// включая доработку типовых конфигураций. +// +// Copyright First BIT company +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// URL: https://github.com/firstBitSportivnaya/PSSL/ +// + +#Область СлужебныйПрограммныйИнтерфейс + +Функция СписокФормПриЧтенииНаСервере() Экспорт + + СписокФорм = Новый Соответствие; + + // Добавление + + // КонецДобавления + + Возврат Новый ФиксированноеСоответствие(СписокФорм); + +КонецФункции + +Функция СписокФормПриСозданииНаСервере() Экспорт + + СписокФорм = Новый Соответствие; + + // Добавление + СписокФорм.Вставить("Документ.ДемоРаботаСФормами.Форма.ФормаДокумента", Истина); + СписокФорм.Вставить("ПланВидовХарактеристик.__ПредопределенныеЗначения.Форма.ФормаСписка", Истина); + // КонецДобавления + + Возврат Новый ФиксированноеСоответствие(СписокФорм); + +КонецФункции + +Функция СписокФормПередЗаписьюНаСервере() Экспорт + + СписокФорм = Новый Соответствие; + + // Добавление + + // КонецДобавления + + Возврат Новый ФиксированноеСоответствие(СписокФорм); + +КонецФункции + +Функция СписокФормПослеЗаписиНаСервере() Экспорт + + СписокФорм = Новый Соответствие; + + // Добавление + + // КонецДобавления + + Возврат Новый ФиксированноеСоответствие(СписокФорм); + +КонецФункции + +#КонецОбласти diff --git a/src/cf/Configuration.xml b/src/cf/Configuration.xml index ed6a8524..8b3ef14f 100644 --- a/src/cf/Configuration.xml +++ b/src/cf/Configuration.xml @@ -280,10 +280,12 @@ __КоннекторHTTP __МетодыРегламентныхЗаданийСервер __МодификацияКонфигурацииКлиентПереопределяемый + __МодификацияКонфигурацииКлиентПовтИсп __МодификацияКонфигурацииКлиентСерверПереопределяемый __МодификацияКонфигурацииПереопределяемый __МодификацияКонфигурацииПереопределяемыйДокумент __МодификацияКонфигурацииПереопределяемыйПланВидовХарактеристик + __МодификацияКонфигурацииПовтИсп __ОбновлениеИнформационнойБазыПБП __ОбщегоНазначенияВызовСервера __ОбщегоНазначенияКлиент