1
0
mirror of https://github.com/firstBitSportivnaya/PSSL.git synced 2024-11-21 17:56:47 +02:00

Modification of forms (#69)

Доработана подсистема модификации форм
This commit is contained in:
DenisUshakov 2024-05-08 17:03:12 +03:00 committed by GitHub
parent f5b9f0d42e
commit 2f3422b05d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 301 additions and 0 deletions

View File

@ -1,5 +1,8 @@
# Подсистема "модификация форм"
## Описание
Предназначена для динамического формирования интерфейса. Также используется в случае изменения типовых форм.
Предназначена для динамического формирования интерфейса. Также использовать в случае изменения типовых форма.
- Общий модуль **__МодификацияКонфигурацииПереопределяемый** используется для маршрутизации из серверных процедур (напр. **ПриСозданииНаСервере**) по дополнительным модулям разбитым по объектам (напр. **__МодификацияКонфигурацииПереопределяемыйДокумент**). В сам модуль **__МодификацияКонфигурацииПереопределяемый** могут добавляться обработчики событий которых нет изначально.
@ -10,6 +13,71 @@
- Использовать функции и процедуры общего модуля **__РаботаСФормами** для уменьшения объема текста при добавлении элементов (напр. **__РаботаСФормами.СоздатьПоле(Форма, "_ДемоДата", ГруппаНомерДата, "от", 1, "_ДемоДата")**)
- В случае если для нужного типа объекта ещё не был создан общий модуль, создать его и добавить в подсистему **__МодификацияФорм**
## Расширение модификации формы
Проверка сущетсвует ли обработчик события в форме из которой была вызвана функция.
Порядок действий:
- Если в общем модуле **__МодификацияКонфигурации<директива>Переопределяемый** нет функции **СуществуетОбработчикСобытия**, необходимо добавить согласно примеру ниже
```1C (BSL)
Функция СуществуетОбработчикСобытия(ИмяФормы, Обработчик = "")
Если Обработчик = <ИмяПроверяемогоОбработчика> Тогда
Список = __МодификацияКонфигурации<директива>ПовтИсп.СписокФорм<ИмяПроверяемогоОбработчика>();
КонецЕсли;
Возврат Список.Получить(ИмяФормы) <> Неопределено;
КонецФункции
```
- Создать в общем модуле **__МодификацияКонфигурации<директива>ПовтИсп** функцию с именем **СписокФорм<ИмяПроверяемогоОбработчика>**. Дополнить соответствие строковым представлением формы (Форма.ИмяФормы) в области // Добавление
```1C (BSL)
Функция СписокФорм<ИмяОбработчика>() Экспорт
СписокФорм = Новый Соответствие;
// Добавление
СписокФорм.Вставить("Документ.ДемоРаботаСФормами.Форма.ФормаДокумента", Истина);
СписокФорм.Вставить("ПланВидовХарактеристик.__ПредопределенныеЗначения.Форма.ФормаСписка", Истина);
// КонецДобавления
Возврат Новый ФиксированноеСоответствие(СписокФорм);
КонецФункции
```
Пример вызова проверки из типового модуля конфигурации **МодификацияКонфигурацииПереопределяемый**:
```1C (BSL)
Процедура ПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка) Экспорт
Если __МодификацияКонфигурацииПереопределяемый.СуществуетОбработчикСобытия(Форма.ИмяФормы, "ПриСозданииНаСервере") = Ложь Тогда
Возврат;
КонецЕсли;
__МодификацияКонфигурацииПереопределяемый.ПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка);
КонецПроцедуры
```
Пример вызова проверки в расширении, когда в типовой форме отсутствует вызов типового модуля **МодификацияКонфигурацииПереопределяемый**:
```1C (BSL)
&После("ПриСозданииНаСервере")
Процедура __ПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка)
Если Отказ Тогда
Возврат;
КонецЕсли;
//Проверяем необходимо ли модифицировать данную форму
Если __МодификацияКонфигурацииПереопределяемый.СуществуетОбработчикСобытия(Форма.ИмяФормы, "ПриСозданииНаСервере") Тогда
__МодификацияКонфигурацииПереопределяемый.ПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка);
КонецЕсли;
КонецПроцедуры
```
Демо-пример использования методов общего модуля
```1C (BSL)

View File

@ -52,4 +52,29 @@
КонецПроцедуры
// Функция - Существует обработчик события
//
// Параметры:
// ИмяФормы - Строка - Форма.ИмяФормы
// Обработчик - Строка - Имя проверяемого обработчика
//
// Возвращаемое значение:
// Булево - Возвращает истину, если в списке форм найдена форма
//
Функция СуществуетОбработчикСобытия(ИмяФормы, Обработчик = "") Экспорт
Если Обработчик = "ПриОткрытии" Тогда
Список = __МодификацияКонфигурацииКлиентПовтИсп.СписокФормПриОткрытии();
ИначеЕсли Обработчик = "ПередЗаписью" Тогда
Список = __МодификацияКонфигурацииКлиентПовтИсп.СписокФормПередЗаписью();
ИначеЕсли Обработчик = "ПослеЗаписи" Тогда
Список = __МодификацияКонфигурацииКлиентПовтИсп.СписокФормПослеЗаписи();
Иначе
Возврат Ложь;
КонецЕсли;
Возврат Список.Получить(ИмяФормы) <> Неопределено;
КонецФункции
#КонецОбласти // ПрограммныйИнтерфейс

View File

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.16">
<CommonModule uuid="32daac53-ed05-4afe-8150-74737c34ea47">
<Properties>
<Name>__МодификацияКонфигурацииКлиентПовтИсп</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Модификация конфигурации клиент повт исп</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Global>false</Global>
<ClientManagedApplication>true</ClientManagedApplication>
<Server>false</Server>
<ExternalConnection>false</ExternalConnection>
<ClientOrdinaryApplication>false</ClientOrdinaryApplication>
<ServerCall>false</ServerCall>
<Privileged>false</Privileged>
<ReturnValuesReuse>DuringSession</ReturnValuesReuse>
</Properties>
</CommonModule>
</MetaDataObject>

View File

@ -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/
//
#Область СлужебныйПрограммныйИнтерфейс
Функция СписокФормПриОткрытии() Экспорт
СписокФорм = Новый Соответствие;
// Добавление
// КонецДобавления
Возврат Новый ФиксированноеСоответствие(СписокФорм);
КонецФункции
Функция СписокФормПередЗаписью() Экспорт
СписокФорм = Новый Соответствие;
// Добавление
// КонецДобавления
Возврат Новый ФиксированноеСоответствие(СписокФорм);
КонецФункции
Функция СписокФормПослеЗаписи() Экспорт
СписокФорм = Новый Соответствие;
// Добавление
// КонецДобавления
Возврат Новый ФиксированноеСоответствие(СписокФорм);
КонецФункции
#КонецОбласти

View File

@ -528,6 +528,35 @@
#КонецОбласти // ПроцедурыИФункцииРаботыСУсловнымОформлением
// Функция - Существует обработчик события
//
// Параметры:
// ИмяФормы - Строка - Форма.ИмяФормы
// Обработчик - Строка - Имя проверяемого обработчика
//
// Возвращаемое значение:
// Булево - Возвращает истину, если в списке форм найдена форма
//
Функция СуществуетОбработчикСобытия(ИмяФормы, Обработчик = "") Экспорт
// Добавление
Если Обработчик = "ПриЧтенииНаСервере" Тогда
Список = __МодификацияКонфигурацииПовтИсп.СписокФормПриЧтенииНаСервере();
ИначеЕсли Обработчик = "ПриСозданииНаСервере" Тогда
Список = __МодификацияКонфигурацииПовтИсп.СписокФормПриСозданииНаСервере();
ИначеЕсли Обработчик = "ПередЗаписьюНаСервере" Тогда
Список = __МодификацияКонфигурацииПовтИсп.СписокФормПередЗаписьюНаСервере();
ИначеЕсли Обработчик = "ПослеЗаписиНаСервере" Тогда
Список = __МодификацияКонфигурацииПовтИсп.СписокФормПослеЗаписиНаСервере();
Иначе
Возврат Ложь;
КонецЕсли;
// КонецДобавления
Возврат Список.Получить(ИмяФормы) <> Неопределено;
КонецФункции
#КонецОбласти // ПрограммныйИнтерфейс
#Область СлужебныеПроцедурыИФункции

View File

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.16">
<CommonModule uuid="c3483359-a1ee-41b1-b99e-9e475429c847">
<Properties>
<Name>__МодификацияКонфигурацииПовтИсп</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Модификация конфигурации повт исп</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Global>false</Global>
<ClientManagedApplication>false</ClientManagedApplication>
<Server>true</Server>
<ExternalConnection>true</ExternalConnection>
<ClientOrdinaryApplication>false</ClientOrdinaryApplication>
<ServerCall>false</ServerCall>
<Privileged>false</Privileged>
<ReturnValuesReuse>DuringSession</ReturnValuesReuse>
</Properties>
</CommonModule>
</MetaDataObject>

View File

@ -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/
//
#Область СлужебныйПрограммныйИнтерфейс
Функция СписокФормПриЧтенииНаСервере() Экспорт
СписокФорм = Новый Соответствие;
// Добавление
// КонецДобавления
Возврат Новый ФиксированноеСоответствие(СписокФорм);
КонецФункции
Функция СписокФормПриСозданииНаСервере() Экспорт
СписокФорм = Новый Соответствие;
// Добавление
СписокФорм.Вставить("Документ.ДемоРаботаСФормами.Форма.ФормаДокумента", Истина);
СписокФорм.Вставить("ПланВидовХарактеристик.__ПредопределенныеЗначения.Форма.ФормаСписка", Истина);
// КонецДобавления
Возврат Новый ФиксированноеСоответствие(СписокФорм);
КонецФункции
Функция СписокФормПередЗаписьюНаСервере() Экспорт
СписокФорм = Новый Соответствие;
// Добавление
// КонецДобавления
Возврат Новый ФиксированноеСоответствие(СписокФорм);
КонецФункции
Функция СписокФормПослеЗаписиНаСервере() Экспорт
СписокФорм = Новый Соответствие;
// Добавление
// КонецДобавления
Возврат Новый ФиксированноеСоответствие(СписокФорм);
КонецФункции
#КонецОбласти

View File

@ -280,10 +280,12 @@
<CommonModule>__КоннекторHTTP</CommonModule>
<CommonModule>__МетодыРегламентныхЗаданийСервер</CommonModule>
<CommonModule>__МодификацияКонфигурацииКлиентПереопределяемый</CommonModule>
<CommonModule>__МодификацияКонфигурацииКлиентПовтИсп</CommonModule>
<CommonModule>__МодификацияКонфигурацииКлиентСерверПереопределяемый</CommonModule>
<CommonModule>__МодификацияКонфигурацииПереопределяемый</CommonModule>
<CommonModule>__МодификацияКонфигурацииПереопределяемыйДокумент</CommonModule>
<CommonModule>__МодификацияКонфигурацииПереопределяемыйПланВидовХарактеристик</CommonModule>
<CommonModule>__МодификацияКонфигурацииПовтИсп</CommonModule>
<CommonModule>__ОбновлениеИнформационнойБазыПБП</CommonModule>
<CommonModule>__ОбщегоНазначенияВызовСервера</CommonModule>
<CommonModule>__ОбщегоНазначенияКлиент</CommonModule>