1
0
mirror of https://github.com/firstBitSportivnaya/PSSL.git synced 2025-08-10 22:21:34 +02:00

added plug in commands for forms (#273)

* Добавлено программное создание команд для заполнения предопределенных значений
* Обновлена документация подсистемы предопределенных значений
This commit is contained in:
Denis Ushakov
2025-06-05 14:54:55 +03:00
committed by GitHub
parent a90c6a7e13
commit 9611b01321
24 changed files with 371 additions and 206 deletions

View File

@@ -25,7 +25,7 @@
// Конец пбп_ПредопределенныеЗначения
КонецПроцедуры
```
4. В модуле объекта в обработчике `ПриЗаписи` добавить вызов функции `пбп_ПредопределенныеЗначения.ПриЗаписи`.
4. В модуле объекта в обработчике `ПриЗаписи` добавить вызов функции `пбп_ПредопределенныеЗначения.ПриЗаписи`.
Пример:
```bsl
@@ -35,10 +35,41 @@
// Конец пбп_ПредопределенныеЗначения
КонецПроцедуры
```
5. Подключить кнопку заполнения в форме списке.
5.1. *Будет добавлено в следующем релизе*. См. подробнее в [#272](https://github.com/firstBitSportivnaya/PSSL/issues/272)
5. Подключить кнопку заполнения в форме списке.
- 5.1. В обработчике `ПриСозданииНаСервере` модуля формы списка вызвать `пбп_ПредопределенныеЗначения.ПриСозданииНаСервере(<Форма>)`
Пример:
```bsl
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// пбп_ПредопределенныеЗначения
пбп_ПредопределенныеЗначения.ПриСозданииНаСервере(ЭтотОбъект);
// Конец пбп_ПредопределенныеЗначения
КонецПроцедуры
```
- 5.2 В обработчике `ОбработкаОповещения` модуля формы списка вызвать `пбп_ПредопределенныеЗначения.ОбработкаОповещения(<ИмяСобытия>, <Элементы.ИмяСписка>)`
Пример:
```bsl
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
// пбп_ПредопределенныеЗначения
пбп_ПредопределенныеЗначенияКлиент.ОбработкаОповещения(ИмяСобытия, Элементы.Список);
// Конец пбп_ПредопределенныеЗначения
КонецПроцедуры
```
- 5.3 Добавить в область ОбработчикиКомандФормы следующий код:
```bsl
// пбп_ПредопределенныеЗначения
&НаКлиенте
Процедура Подключаемый_ПредопределенныеВыполнитьКоманду(Команда)
пбп_ПредопределенныеЗначенияКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, <Элементы.ИмяСписка>);
КонецПроцедуры
// Конец пбп_ПредопределенныеЗначения
```
6. В модуле `пбп_ПредопределенныеЗначенияПереопределяемый` добавить процедуру заполнения предопределенных значений `Процедура ПредопределенныеЗначения<ИмяОбъекта>(Таблица) Экспорт`
6.1 Указать имя процедуры в модуле `пбп_ПредопределенныеЗначенияПовтИсп.ФункцииСозданияТаблицПредопределенныхЭлементов`
- 6.1 Указать имя процедуры в модуле `пбп_ПредопределенныеЗначенияПовтИсп.ФункцииСозданияТаблицПредопределенныхЭлементов`
Пример:
```bsl
@@ -51,7 +82,7 @@
КонецПроцедуры
```
7. В модуле `пбп_ПредопределенныеЗначенияПереопределяемый` добавить функцию получения структуры колонок `Функция Колонки<ИмяОбъекта>() Экспорт`
7.1 Указать имя процедуры в модуле `пбп_ПредопределенныеЗначенияПовтИсп.ФункцииПолученияКолонокПредопределенныхЭлементов`
- 7.1 Указать имя процедуры в модуле `пбп_ПредопределенныеЗначенияПовтИсп.ФункцииПолученияКолонокПредопределенныхЭлементов`
Пример:
```bsl
@@ -67,7 +98,7 @@
КонецФункции
```
8. При необходимости расширения ключей хеширования в модуле `пбп_ПредопределенныеЗначенияПереопределяемый` добавить функцию получения структуры колонок `Функция ДобавляемыеПоляДляРасчетаХеша<ИмяОбъекта>() Экспорт`
8.1 Указать имя процедуры в модуле `пбп_ПредопределенныеЗначенияПовтИсп.ФункцииПолученияДобавляемыхПолейДляРасчетаХеша`
- 8.1 Указать имя процедуры в модуле `пбп_ПредопределенныеЗначенияПовтИсп.ФункцииПолученияДобавляемыхПолейДляРасчетаХеша`
Пример:
```bsl

View File

@@ -11,7 +11,7 @@
* Заполнение предопределенных из кода
Дано Я открываю основную форму списка плана видов характеристик 'пбп_ПредопределенныеЗначения'
Тогда открылось окно 'Предопределенные значения'
И я нажимаю на кнопку с именем 'ФормаЗаполнитьПредопределенные'
И я нажимаю на кнопку с заголовком 'Заполнить предопределенные'
* Проверка наличия предопределенного элемента
И в таблице "Список" я перехожу на один уровень вниз
И в таблице "Список" я перехожу к строке:

View File

@@ -11,13 +11,13 @@
* Заполнение предопределенных из кода
И В командном интерфейсе я выбираю 'Управление интеграциями' 'Интегрируемые системы'
Тогда открылось окно 'Интегрируемые системы'
И я нажимаю на кнопку с именем 'ФормаЗаполнитьПредопределенные'
И я нажимаю на кнопку с заголовком 'Заполнить предопределенные'
И В командном интерфейсе я выбираю 'Управление интеграциями' 'Интеграционные потоки'
Тогда открылось окно 'Интеграционные потоки'
И я нажимаю на кнопку с именем 'ФормаЗаполнитьПредопределенные'
И я нажимаю на кнопку с заголовком 'Заполнить предопределенные'
И В командном интерфейсе я выбираю 'Управление интеграциями' 'Настройки интеграции'
Тогда открылось окно 'Настройки интеграции'
И я нажимаю на кнопку с именем 'ФормаЗаполнитьПредопределенные'
И я нажимаю на кнопку с заголовком 'Заполнить предопределенные'
* Дозаполнение настройки интеграции
И в таблице "Список" я перехожу к строке:
| 'Код' | 'Наименование' |

View File

@@ -3,17 +3,10 @@
<CommandSet>
<ExcludedCommand>Delete</ExcludedCommand>
</CommandSet>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1">
<ChildItems>
<Button name="ФормаЗаполнитьПредопределенные" id="25">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.ЗаполнитьПредопределенные</CommandName>
<ExtendedTooltip name="ФормаЗаполнитьПредопределенныеРасширеннаяПодсказка" id="26"/>
</Button>
</ChildItems>
</AutoCommandBar>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1"/>
<Events>
<Event name="NotificationProcessing">ОбработкаОповещения</Event>
<Event name="OnCreateAtServer">ПриСозданииНаСервере</Event>
</Events>
<ChildItems>
<UsualGroup name="СписокКомпоновщикНастроекПользовательскиеНастройки" id="1">
@@ -134,21 +127,4 @@
</Settings>
</Attribute>
</Attributes>
<Commands>
<Command name="ЗаполнитьПредопределенные" id="1">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Заполнить предопределенные</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Заполнить предопределенные</v8:content>
</v8:item>
</ToolTip>
<Action>ЗаполнитьПредопределенные</Action>
</Command>
</Commands>
</Form>

View File

@@ -20,12 +20,21 @@
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// пбп_ПредопределенныеЗначения
пбп_ПредопределенныеЗначения.ПриСозданииНаСервере(ЭтотОбъект);
// Конец пбп_ПредопределенныеЗначения
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = "ОбновитьСписокПредопределенных" Тогда
Элементы.Список.Обновить();
КонецЕсли;
// пбп_ПредопределенныеЗначения
пбп_ПредопределенныеЗначенияКлиент.ОбработкаОповещения(ИмяСобытия, Элементы.Список);
// Конец пбп_ПредопределенныеЗначения
КонецПроцедуры
@@ -33,13 +42,11 @@
#Область ОбработчикиКомандФормы
// пбп_ПредопределенныеЗначения
&НаКлиенте
Процедура ЗаполнитьПредопределенные(Команда)
пбп_ПредопределенныеЗначенияКлиент.СоздатьОбновитьПредопределенныеЗначения(ЭтотОбъект);
Элементы.Список.Обновить();
КонецПроцедуры
Процедура Подключаемый_ПредопределенныеВыполнитьКоманду(Команда)
пбп_ПредопределенныеЗначенияКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Элементы.Список);
КонецПроцедуры
// Конец пбп_ПредопределенныеЗначения
#КонецОбласти

View File

@@ -3,17 +3,10 @@
<CommandSet>
<ExcludedCommand>Delete</ExcludedCommand>
</CommandSet>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1">
<ChildItems>
<Button name="ФормаЗаполнитьПредопределенные" id="22">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.ЗаполнитьПредопределенные</CommandName>
<ExtendedTooltip name="ФормаЗаполнитьПредопределенныеРасширеннаяПодсказка" id="23"/>
</Button>
</ChildItems>
</AutoCommandBar>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1"/>
<Events>
<Event name="NotificationProcessing">ОбработкаОповещения</Event>
<Event name="OnCreateAtServer">ПриСозданииНаСервере</Event>
</Events>
<ChildItems>
<UsualGroup name="СписокКомпоновщикНастроекПользовательскиеНастройки" id="1">
@@ -134,21 +127,4 @@
</Settings>
</Attribute>
</Attributes>
<Commands>
<Command name="ЗаполнитьПредопределенные" id="1">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Заполнить предопределенные</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Заполнить предопределенные</v8:content>
</v8:item>
</ToolTip>
<Action>ЗаполнитьПредопределенные</Action>
</Command>
</Commands>
</Form>

View File

@@ -20,12 +20,21 @@
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// пбп_ПредопределенныеЗначения
пбп_ПредопределенныеЗначения.ПриСозданииНаСервере(ЭтотОбъект);
// Конец пбп_ПредопределенныеЗначения
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = "ОбновитьСписокПредопределенных" Тогда
Элементы.Список.Обновить();
КонецЕсли;
// пбп_ПредопределенныеЗначения
пбп_ПредопределенныеЗначенияКлиент.ОбработкаОповещения(ИмяСобытия, Элементы.Список);
// Конец пбп_ПредопределенныеЗначения
КонецПроцедуры
@@ -33,13 +42,11 @@
#Область ОбработчикиКомандФормы
// пбп_ПредопределенныеЗначения
&НаКлиенте
Процедура ЗаполнитьПредопределенные(Команда)
пбп_ПредопределенныеЗначенияКлиент.СоздатьОбновитьПредопределенныеЗначения(ЭтотОбъект);
Элементы.Список.Обновить();
КонецПроцедуры
Процедура Подключаемый_ПредопределенныеВыполнитьКоманду(Команда)
пбп_ПредопределенныеЗначенияКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Элементы.Список);
КонецПроцедуры
// Конец пбп_ПредопределенныеЗначения
#КонецОбласти

View File

@@ -3,17 +3,10 @@
<CommandSet>
<ExcludedCommand>Delete</ExcludedCommand>
</CommandSet>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1">
<ChildItems>
<Button name="ФормаЗаполнитьПредопределенные" id="22">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.ЗаполнитьПредопределенные</CommandName>
<ExtendedTooltip name="ФормаЗаполнитьПредопределенныеРасширеннаяПодсказка" id="23"/>
</Button>
</ChildItems>
</AutoCommandBar>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1"/>
<Events>
<Event name="NotificationProcessing">ОбработкаОповещения</Event>
<Event name="OnCreateAtServer">ПриСозданииНаСервере</Event>
</Events>
<ChildItems>
<UsualGroup name="СписокКомпоновщикНастроекПользовательскиеНастройки" id="1">
@@ -192,21 +185,4 @@
</Settings>
</Attribute>
</Attributes>
<Commands>
<Command name="ЗаполнитьПредопределенные" id="1">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Заполнить предопределенные</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Заполнить предопределенные</v8:content>
</v8:item>
</ToolTip>
<Action>ЗаполнитьПредопределенные</Action>
</Command>
</Commands>
</Form>

View File

@@ -20,12 +20,21 @@
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// пбп_ПредопределенныеЗначения
пбп_ПредопределенныеЗначения.ПриСозданииНаСервере(ЭтотОбъект);
// Конец пбп_ПредопределенныеЗначения
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = "ОбновитьСписокПредопределенных" Тогда
Элементы.Список.Обновить();
КонецЕсли;
// пбп_ПредопределенныеЗначения
пбп_ПредопределенныеЗначенияКлиент.ОбработкаОповещения(ИмяСобытия, Элементы.Список);
// Конец пбп_ПредопределенныеЗначения
КонецПроцедуры
@@ -33,13 +42,11 @@
#Область ОбработчикиКомандФормы
// пбп_ПредопределенныеЗначения
&НаКлиенте
Процедура ЗаполнитьПредопределенные(Команда)
пбп_ПредопределенныеЗначенияКлиент.СоздатьОбновитьПредопределенныеЗначения(ЭтотОбъект);
Элементы.Список.Обновить();
КонецПроцедуры
Процедура Подключаемый_ПредопределенныеВыполнитьКоманду(Команда)
пбп_ПредопределенныеЗначенияКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Элементы.Список);
КонецПроцедуры
// Конец пбп_ПредопределенныеЗначения
#КонецОбласти

View File

@@ -1,16 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<Form xmlns="http://v8.1c.ru/8.3/xcf/logform" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core" xmlns:dcsset="http://v8.1c.ru/8.1/data-composition-system/settings" 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: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">
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1">
<ChildItems>
<Button name="ФормаЗаполнитьПредопределенные" id="25">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.ЗаполнитьПредопределенные</CommandName>
<ExtendedTooltip name="ФормаЗаполнитьПредопределенныеРасширеннаяПодсказка" id="26"/>
</Button>
</ChildItems>
</AutoCommandBar>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1"/>
<Events>
<Event name="NotificationProcessing">ОбработкаОповещения</Event>
<Event name="OnCreateAtServer">ПриСозданииНаСервере</Event>
</Events>
<ChildItems>
<UsualGroup name="СписокКомпоновщикНастроекПользовательскиеНастройки" id="1">
@@ -128,25 +121,4 @@
</Settings>
</Attribute>
</Attributes>
<Commands>
<Command name="ЗаполнитьПредопределенные" id="1">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Заполнить предопределенные</v8:content>
</v8:item>
<v8:item>
<v8:lang>en</v8:lang>
<v8:content>Fill in the predefined</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Заполнить предопределенные</v8:content>
</v8:item>
</ToolTip>
<Action>ЗаполнитьПредопределенные</Action>
</Command>
</Commands>
</Form>

View File

@@ -20,12 +20,21 @@
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// пбп_ПредопределенныеЗначения
пбп_ПредопределенныеЗначения.ПриСозданииНаСервере(ЭтотОбъект);
// Конец пбп_ПредопределенныеЗначения
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = "ОбновитьСписокПредопределенных" Тогда
Элементы.Список.Обновить();
КонецЕсли;
// пбп_ПредопределенныеЗначения
пбп_ПредопределенныеЗначенияКлиент.ОбработкаОповещения(ИмяСобытия, Элементы.Список);
// Конец пбп_ПредопределенныеЗначения
КонецПроцедуры
@@ -33,13 +42,11 @@
#Область ОбработчикиКомандФормы
// пбп_ПредопределенныеЗначения
&НаКлиенте
Процедура ЗаполнитьПредопределенные(Команда)
пбп_ПредопределенныеЗначенияКлиент.СоздатьОбновитьПредопределенныеЗначения(ЭтотОбъект);
Элементы.Список.Обновить();
КонецПроцедуры
Процедура Подключаемый_ПредопределенныеВыполнитьКоманду(Команда)
пбп_ПредопределенныеЗначенияКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Элементы.Список);
КонецПроцедуры
// Конец пбп_ПредопределенныеЗначения
#КонецОбласти

View File

@@ -8,15 +8,7 @@
<ExcludedCommand>MoveItem</ExcludedCommand>
<ExcludedCommand>SetDeletionMark</ExcludedCommand>
</CommandSet>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1">
<ChildItems>
<Button name="ФормаЗаполнитьПредопределенные" id="31">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.ЗаполнитьПредопределенные</CommandName>
<ExtendedTooltip name="ФормаЗаполнитьПредопределенныеРасширеннаяПодсказка" id="32"/>
</Button>
</ChildItems>
</AutoCommandBar>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1"/>
<Events>
<Event name="NotificationProcessing">ОбработкаОповещения</Event>
<Event name="OnCreateAtServer">ПриСозданииНаСервере</Event>
@@ -178,25 +170,4 @@
</Settings>
</Attribute>
</Attributes>
<Commands>
<Command name="ЗаполнитьПредопределенные" id="1">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Заполнить предопределенные</v8:content>
</v8:item>
<v8:item>
<v8:lang>en</v8:lang>
<v8:content>Fill in the predefined</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Заполнить предопределенные</v8:content>
</v8:item>
</ToolTip>
<Action>ЗаполнитьПредопределенные</Action>
</Command>
</Commands>
</Form>

View File

@@ -23,6 +23,10 @@
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// пбп_ПредопределенныеЗначения
пбп_ПредопределенныеЗначения.ПриСозданииНаСервере(ЭтотОбъект);
// Конец пбп_ПредопределенныеЗначения
пбп_МодификацияКонфигурацииПереопределяемый.ПриСозданииНаСервере(ЭтотОбъект, Отказ, СтандартнаяОбработка);
КонецПроцедуры
@@ -30,9 +34,9 @@
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = "ОбновитьСписокПредопределенных" Тогда
Элементы.Список.Обновить();
КонецЕсли;
// пбп_ПредопределенныеЗначения
пбп_ПредопределенныеЗначенияКлиент.ОбработкаОповещения(ИмяСобытия, Элементы.Список);
// Конец пбп_ПредопределенныеЗначения
КонецПроцедуры
@@ -40,13 +44,11 @@
#Область ОбработчикиКомандФормы
// пбп_ПредопределенныеЗначения
&НаКлиенте
Процедура ЗаполнитьПредопределенные(Команда)
пбп_ПредопределенныеЗначенияКлиент.СоздатьОбновитьПредопределенныеЗначения(ЭтотОбъект);
Элементы.Список.Обновить();
Процедура Подключаемый_ПредопределенныеВыполнитьКоманду(Команда)
пбп_ПредопределенныеЗначенияКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Элементы.Список);
КонецПроцедуры
// Конец пбп_ПредопределенныеЗначения
#КонецОбласти

View File

@@ -46,7 +46,8 @@
Если ОбработатьЭлементы Тогда
ОбработатьПредопределенныеЭлементы();
Оповестить("ОбновитьСписокПредопределенных");
ИмяСобытия = пбп_ПредопределенныеЗначенияКлиент.ИмяСобытияОповещенияОбновления();
Оповестить(ИмяСобытия);
КонецЕсли;
КонецПроцедуры

View File

@@ -74,7 +74,7 @@
Процедура ПриДобавленииПодсистемы(Описание) Экспорт
Описание.Имя = "ПроектнаяБиблиотекаПодсистем";
Описание.Версия = "1.0.9.0";
Описание.Версия = "1.0.9.1";
// Требуется библиотека стандартных подсистем.
Описание.ТребуемыеПодсистемы.Добавить("СтандартныеПодсистемы");

View File

@@ -188,6 +188,8 @@
КонецПроцедуры
#Область Обработчики
// Вызывается из одноименного обработчика ПередЗаписью.
//
// Параметры:
@@ -216,6 +218,63 @@
КонецПроцедуры
// Выводит подключенные команды в форме.
// Для вызова из обработчика формы ПриСозданииНаСервере.
//
// Если в форме несколько списков, то в обработчике формы ПриСозданииНаСервере
// следует разместить несколько вызовов этой процедуры с указанием параметра ПараметрыРазмещения.
// Параметр ПараметрыРазмещения также применяется, когда типы источников зависят от параметров открытия формы.
//
// Параметры:
// Форма - ФормаКлиентскогоПриложения - форма, в которой необходимо разместить команды.
// ПараметрыРазмещения - см. пбп_ПредопределенныеЗначения.ПараметрыРазмещения
// - Неопределено
//
Процедура ПриСозданииНаСервере(Форма, Знач ПараметрыРазмещения = Неопределено) Экспорт
ПереданныеПараметрыРазмещения = ПараметрыРазмещения;
ПараметрыРазмещения = ПараметрыРазмещения();
Если ПереданныеПараметрыРазмещения <> Неопределено Тогда
ЗаполнитьЗначенияСвойств(ПараметрыРазмещения, ПереданныеПараметрыРазмещения);
КонецЕсли;
СоздатьКомандуЗаполнения(Форма);
КонецПроцедуры
#КонецОбласти
// Конструктор одноименного параметра процедуры пбп_ПредопределенныеЗначения.ПриСозданииНаСервере.
//
// Возвращаемое значение:
// Структура - параметры размещения подключаемых команд:
// * Источники - ОписаниеТипов
// - Массив из ОбъектМетаданных - источники команд.
// Используется для второстепенных списков, а также в формах объектов, не являющихся поставщиками
// команд (обработки, общие формы).
// * КоманднаяПанель - ГруппаФормы - командная панель или группа команд, в которой выводятся подменю.
// Используется как родитель для создания подменю в случае их отсутствия.
// Если не указан то в первую очередь ищется группа "ПодключаемыеКоманды".
// * ПрефиксГрупп - Строка - добавка к именам подменю и имени командной панели.
// Используется при необходимости префиксации групп с командами (в частности, когда в форме несколько таблиц).
// В качестве префикса рекомендуется использовать имя таблицы формы, для которой выводятся команды.
// Например, если ПрефиксГрупп = "СкладскиеДокументы" (имя второстепенной таблицы формы),
// то используются подменю с именами "СкладскиеДокументыПодменюПечать", "СкладскиеДокументыПодменюОтчеты" и т.д.
// * ВладелецКоманд - ДанныеФормыСтруктура, ТаблицаФормы - объект или элемент формы, для которого выводятся команды.
//
Функция ПараметрыРазмещения() Экспорт
Результат = Новый Структура;
Результат.Вставить("Источники");
Результат.Вставить("КоманднаяПанель");
Результат.Вставить("ПрефиксГрупп", "");
Результат.Вставить("ВладелецКоманд");
Возврат Результат;
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
@@ -231,4 +290,61 @@
КонецПроцедуры
Функция КоманднаяПанельФормы(Форма, ПрефиксГрупп, ЭтоФормаОбъекта)
Элементы = Форма.Элементы;
Результат = Элементы.Найти(ПрефиксГрупп + "ПодключаемыеКоманды");
Если Результат = Неопределено Тогда
Результат = Элементы.Найти(ПрефиксГрупп + "КоманднаяПанель");
Если Результат = Неопределено Тогда
Результат = Элементы.Найти(ПрефиксГрупп + "ОсновнаяКоманднаяПанель");
Если Результат = Неопределено И ЗначениеЗаполнено(ПрефиксГрупп) Тогда
ТаблицаФормы = Элементы.Найти(ПрефиксГрупп);
Если ТипЗнч(ТаблицаФормы) = Тип("ТаблицаФормы") Тогда
Результат = ТаблицаФормы.КоманднаяПанель;
КонецЕсли;
КонецЕсли;
Если Не ЭтоФормаОбъекта
И Результат = Неопределено
И Не ЗначениеЗаполнено(ПрефиксГрупп) Тогда
ТаблицаФормы = Элементы.Найти("Список");
Если ТипЗнч(ТаблицаФормы) = Тип("ТаблицаФормы")
И ТаблицаФормы.ПоложениеКоманднойПанели <> ПоложениеКоманднойПанелиЭлементаФормы.Нет Тогда
Результат = ТаблицаФормы.КоманднаяПанель;
КонецЕсли;
КонецЕсли;
Если Результат = Неопределено Тогда
Результат = Форма.КоманднаяПанель;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Возврат Результат;
КонецФункции
Процедура СоздатьКомандуЗаполнения(Форма)
Идентификатор = "_" + СтрЗаменить(Новый УникальныйИдентификатор, "-", "");
ИмяКоманды = пбп_ПредопределенныеЗначенияКлиентСервер.ИмяКомандыЗаполненияПредопределенных() + Идентификатор;
ИмяДействия = "Подключаемый_ПредопределенныеВыполнитьКоманду";
Представление = НСтр("ru = 'Заполнить предопределенные!'; en = 'Fill in the predefined!'");
пбп_РаботаСФормами.СоздатьКоманду(Форма, ИмяКоманды, Представление, ИмяДействия);
КомандаФормы = Форма.Команды.Найти(ИмяКоманды);
КомандаФормы.Отображение = ОтображениеКнопки.КартинкаИТекст;
КомандаФормы.Картинка = БиблиотекаКартинок.ВосстановитьЗначения;
КоманднаяПанель = КоманднаяПанельФормы(Форма, "", Ложь);
пбп_РаботаСФормами.СоздатьКнопка(Форма, ИмяКоманды, КоманднаяПанель, , ИмяКоманды, 3);
КонецПроцедуры
#КонецОбласти

View File

@@ -20,6 +20,29 @@
#Область ПрограммныйИнтерфейс
// Обработчик команды формы.
//
// Параметры:
// Форма - ФормаКлиентскогоПриложения - форма, в которой выполняется команда.
// Команда - КомандаФормы - выполняемая команда.
// Источник - ТаблицаФормы
// - ДанныеФормыСтруктура - объект или список формы с полем "Ссылка".
//
Процедура НачатьВыполнениеКоманды(Форма, Команда, Источник) Экспорт
ИмяКоманды = Команда.Имя;
Имя = ЧистоеИмяКоманды(ИмяКоманды);
Если Имя = пбп_ПредопределенныеЗначенияКлиентСервер.ИмяКомандыЗаполненияПредопределенных() Тогда
СоздатьОбновитьПредопределенныеЗначения(Форма);
КонецЕсли;
Если ТипЗнч(Источник) = Тип("ТаблицаФормы") Тогда
Источник.Обновить();
КонецЕсли;
КонецПроцедуры
// Создание предопределенных значений на основании заполненной таблицы
//
// Параметры:
@@ -43,4 +66,37 @@
КонецПроцедуры
Процедура ОбработкаОповещения(ИмяСобытия, Элемент) Экспорт
Если ИмяСобытия = ИмяСобытияОповещенияОбновления() Тогда
Если ТипЗнч(Элемент) = Тип("ТаблицаФормы") Тогда
Элемент.Обновить();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Функция ИмяСобытияОповещенияОбновления() Экспорт
Возврат "ОбновитьСписокПредопределенных";
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Функция ЧистоеИмяКоманды(ИмяКоманды)
Если Не ЗначениеЗаполнено(ИмяКоманды) Тогда
Возврат "";
КонецЕсли;
ЧастиСтроки = СтрРазделить(ИмяКоманды, "_", Истина);
Если ЗначениеЗаполнено(ЧастиСтроки) Тогда
Возврат ЧастиСтроки[0];
КонецЕсли;
Возврат "";
КонецФункции
#КонецОбласти

View File

@@ -0,0 +1,27 @@
<?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="63ae1d8d-f943-4bd9-be0a-2913fd196350">
<Properties>
<Name>пбп_ПредопределенныеЗначенияКлиентСервер</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Предопределенные значения клиент сервер</v8:content>
</v8:item>
<v8:item>
<v8:lang>en</v8:lang>
<v8:content>Working with collections client-server</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Global>false</Global>
<ClientManagedApplication>true</ClientManagedApplication>
<Server>true</Server>
<ExternalConnection>true</ExternalConnection>
<ClientOrdinaryApplication>true</ClientOrdinaryApplication>
<ServerCall>false</ServerCall>
<Privileged>false</Privileged>
<ReturnValuesReuse>DontUse</ReturnValuesReuse>
</Properties>
</CommonModule>
</MetaDataObject>

View File

@@ -0,0 +1,30 @@
// Библиотека проектных подсистем для упрощения разработки архитектуры на 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

@@ -1,6 +1,6 @@
<?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="63ae1d8d-f943-4bd9-be0a-2913fd196350">
<CommonModule uuid="1b30082a-4f38-4a90-a1b5-8a6e53b31d01">
<Properties>
<Name>пбп_РаботаСКоллекциямиКлиентСервер</Name>
<Synonym>

View File

@@ -826,6 +826,7 @@
// ВидКнопки - Число - Принимаемые значения
// 1 - Обычная кнопка
// 2 - Гиперссылка
// 3 - КнопкаКоманднойПанели
// СтруктураСвойств - Структура - Содержит значения свойств, где ключ название свойства и значение
// СтруктураСобытий - Структура - Содержит значения событий, где ключ название события и в значение название процедуры тип "строка"
// ЭлементПеред - Строка - достаточно указать название элемента формы перед которым требуется вставить новый элемент
@@ -848,7 +849,8 @@
Если ВидКнопки <> 0 Тогда
НаборВидов = "ОбычнаяКнопка
|Гиперссылка";
|Гиперссылка
|КнопкаКоманднойПанели";
ВидПоля = СокрЛП(СтрПолучитьСтроку(НаборВидов, ВидКнопки));
НовыйЭлемент.Вид = ВидКнопкиФормы[ВидПоля];

View File

@@ -57,7 +57,7 @@
<xr:Item xsi:type="xr:MDObjectRef">Role.ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок</xr:Item>
</DefaultRoles>
<Vendor>Первый БИТ</Vendor>
<Version>1.0.9.0</Version>
<Version>1.0.9.1</Version>
<UpdateCatalogAddress/>
<IncludeHelpInContents>false</IncludeHelpInContents>
<UseManagedFormInOrdinaryApplication>false</UseManagedFormInOrdinaryApplication>
@@ -318,17 +318,18 @@
<CommonModule>пбп_ПереадресацияКлиентПовтИсп</CommonModule>
<CommonModule>пбп_ПереадресацияКлиентСервер</CommonModule>
<CommonModule>пбп_ПереадресацияПовтИсп</CommonModule>
<CommonModule>пбп_ПодключаемыеКомандыВызовСервера</CommonModule>
<CommonModule>пбп_ПодключаемыеКоманды</CommonModule>
<CommonModule>пбп_ПодключаемыеКомандыВызовСервера</CommonModule>
<CommonModule>пбп_ПодключаемыеКомандыКлиент</CommonModule>
<CommonModule>пбп_ПодключаемыеКомандыСлужебныйКлиентСервер</CommonModule>
<CommonModule>пбп_ПодключаемыеКомандыПереопределяемый</CommonModule>
<CommonModule>пбп_ПодключаемыеКомандыСлужебныйКлиентСервер</CommonModule>
<CommonModule>пбп_ПостроительСпецификацииOpenAPI</CommonModule>
<CommonModule>пбп_ПостроительСпецификацииOpenAPIПереопределяемый</CommonModule>
<CommonModule>пбп_ПостроительСпецификацииOpenAPIПовтИсп</CommonModule>
<CommonModule>пбп_ПредопределенныеЗначения</CommonModule>
<CommonModule>пбп_ПредопределенныеЗначенияВызовСервера</CommonModule>
<CommonModule>пбп_ПредопределенныеЗначенияКлиент</CommonModule>
<CommonModule>пбп_ПредопределенныеЗначенияКлиентСервер</CommonModule>
<CommonModule>пбп_ПредопределенныеЗначенияПереопределяемый</CommonModule>
<CommonModule>пбп_ПредопределенныеЗначенияПовтИсп</CommonModule>
<CommonModule>пбп_ПредопределенныеЗначенияСлужебный</CommonModule>

View File

@@ -29,7 +29,7 @@
<xr:Item xsi:type="xr:MDObjectRef">CommonModule.пбп_ОбщегоНазначенияКлиентСервер</xr:Item>
<xr:Item xsi:type="xr:MDObjectRef">CommonModule.пбп_РаботаСДиалогамиКлиент</xr:Item>
<xr:Item xsi:type="xr:MDObjectRef">CommonModule.пбп_РаботаСДиалогамиСервер</xr:Item>
<xr:Item xsi:type="xr:MDObjectRef">CommonModule.пбп_РаботаСКоллекциямиКлиентСервер</xr:Item>
<xr:Item xsi:type="xr:MDObjectRef">CommonModule.пбп_ПредопределенныеЗначенияКлиентСервер</xr:Item>
<xr:Item xsi:type="xr:MDObjectRef">CommonModule.пбп_СтроковыеФункцииКлиентСервер</xr:Item>
<xr:Item xsi:type="xr:MDObjectRef">CommonModule.пбп_МодификацияКонфигурацииКлиентПовтИсп</xr:Item>
<xr:Item xsi:type="xr:MDObjectRef">CommonModule.пбп_ОбновлениеИнформационнойБазыПБП</xr:Item>

View File

@@ -20,7 +20,7 @@
<Explanation/>
<Picture/>
<Content>
<xr:Item xsi:type="xr:MDObjectRef">CommonModule.пбп_РаботаСКоллекциямиКлиентСервер</xr:Item>
<xr:Item xsi:type="xr:MDObjectRef">CommonModule.пбп_ПредопределенныеЗначенияКлиентСервер</xr:Item>
<xr:Item xsi:type="xr:MDObjectRef">Enum.пбп_КонтекстыВыполненияПользовательскихФункций</xr:Item>
<xr:Item xsi:type="xr:MDObjectRef">Catalog.пбп_ПользовательскиеФункции</xr:Item>
<xr:Item xsi:type="xr:MDObjectRef">Role.пбп_РедактированиеПользовательскихФункций</xr:Item>