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

added new collections to the parameters (#56)

Добавлена возможность указания коллекций в параметрах пользовательских функций
This commit is contained in:
DenisUshakov 2024-04-27 11:26:55 +03:00 committed by GitHub
parent 6c2833f03a
commit 6333e32935
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
30 changed files with 2052 additions and 692 deletions

View File

@ -590,38 +590,35 @@
<Use>ForItem</Use>
</Properties>
<ChildObjects>
<Attribute uuid="ed036b65-226b-42e4-ae09-bf1436fa0120">
<Attribute uuid="bc0eb7c0-0bee-4659-9678-97931036a3f3">
<Properties>
<Name>Наименование</Name>
<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>Name</v8:content>
<v8:content>Идентификатор</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Comment>Идентификатор</Comment>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>200</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
<v8:Type>v8:UUID</v8:Type>
</Type>
<PasswordMode>false</PasswordMode>
<Format/>
<EditFormat/>
<ToolTip/>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Идентификатор параметра</v8:content>
</v8:item>
</ToolTip>
<MarkNegatives>false</MarkNegatives>
<Mask/>
<MultiLine>false</MultiLine>
<ExtendedEdit>false</ExtendedEdit>
<MinValue xsi:nil="true"/>
<MaxValue xsi:nil="true"/>
<FillChecking>ShowError</FillChecking>
<FillChecking>DontCheck</FillChecking>
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
<ChoiceParameterLinks/>
<ChoiceParameters/>
@ -676,22 +673,26 @@
<DataHistory>Use</DataHistory>
</Properties>
</Attribute>
<Attribute uuid="aaefaa01-2704-426d-b247-0dfbeaa84deb">
<Attribute uuid="ed036b65-226b-42e4-ae09-bf1436fa0120">
<Properties>
<Name>НеОбязательныйДляЗаполнения</Name>
<Name>Наименование</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Не обязательный</v8:content>
<v8:content>Наименование</v8:content>
</v8:item>
<v8:item>
<v8:lang>en</v8:lang>
<v8:content>Not Required</v8:content>
<v8:content>Name</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Type>
<v8:Type>xs:boolean</v8:Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>200</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
<PasswordMode>false</PasswordMode>
<Format/>
@ -703,7 +704,7 @@
<ExtendedEdit>false</ExtendedEdit>
<MinValue xsi:nil="true"/>
<MaxValue xsi:nil="true"/>
<FillChecking>DontCheck</FillChecking>
<FillChecking>ShowError</FillChecking>
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
<ChoiceParameterLinks/>
<ChoiceParameters/>
@ -774,6 +775,93 @@
<DataHistory>Use</DataHistory>
</Properties>
</Attribute>
<Attribute uuid="aaefaa01-2704-426d-b247-0dfbeaa84deb">
<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>Not Required</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Type>
<v8:Type>xs:boolean</v8:Type>
</Type>
<PasswordMode>false</PasswordMode>
<Format/>
<EditFormat/>
<ToolTip/>
<MarkNegatives>false</MarkNegatives>
<Mask/>
<MultiLine>false</MultiLine>
<ExtendedEdit>false</ExtendedEdit>
<MinValue xsi:nil="true"/>
<MaxValue xsi:nil="true"/>
<FillChecking>DontCheck</FillChecking>
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
<ChoiceParameterLinks/>
<ChoiceParameters/>
<QuickChoice>Auto</QuickChoice>
<CreateOnInput>Auto</CreateOnInput>
<ChoiceForm/>
<LinkByType/>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
<Indexing>DontIndex</Indexing>
<FullTextSearch>Use</FullTextSearch>
<DataHistory>Use</DataHistory>
</Properties>
</Attribute>
<Attribute uuid="50282414-75c3-4d5b-a39b-1afa2cca73c3">
<Properties>
<Name>Тип</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Тип</v8:content>
</v8:item>
</Synonym>
<Comment>Тип</Comment>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
<PasswordMode>false</PasswordMode>
<Format/>
<EditFormat/>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Тип параметра</v8:content>
</v8:item>
</ToolTip>
<MarkNegatives>false</MarkNegatives>
<Mask/>
<MultiLine>false</MultiLine>
<ExtendedEdit>false</ExtendedEdit>
<MinValue xsi:nil="true"/>
<MaxValue xsi:nil="true"/>
<FillChecking>DontCheck</FillChecking>
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
<ChoiceParameterLinks/>
<ChoiceParameters/>
<QuickChoice>Auto</QuickChoice>
<CreateOnInput>Auto</CreateOnInput>
<ChoiceForm/>
<LinkByType/>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
<Indexing>DontIndex</Indexing>
<FullTextSearch>Use</FullTextSearch>
<DataHistory>Use</DataHistory>
</Properties>
</Attribute>
</ChildObjects>
</TabularSection>
<TabularSection uuid="ad25fde7-2eab-4cf5-a3b9-174008de7522">
@ -940,9 +1028,11 @@
<Form>ФормаЭлемента</Form>
<Form>ФормаСписка</Form>
<Form>ФормаВыбора</Form>
<Form>ФормаПараметров</Form>
<Form>ФормаГруппы</Form>
<Form>УсловныйОператор</Form>
<Form>ФормаТаблицыЗначений</Form>
<Form>ФормаСтруктуры</Form>
<Form>ФормаМассива</Form>
<Template>НастройкиПоУмолчанию</Template>
</ChildObjects>
</Catalog>

View File

@ -20,6 +20,66 @@
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
// Формирует список возможных типов конфигурации.
//
// Параметры:
// СписокДобавленныхТипов - СписокЗначений - список типов, добавленных "вручную".
//
// Возвращаемое значение:
// СписокЗначений
//
Функция СформироватьСписокТипов(СписокДобавленныхТипов = Неопределено) Экспорт
СписокТипов = Новый СписокЗначений;
Если СписокДобавленныхТипов <> Неопределено Тогда
СписокТипов.ЗагрузитьЗначения(СписокДобавленныхТипов.ВыгрузитьЗначения());
КонецЕсли;
ОписаниеТипаВсеСсылки = __СтандартныеПодсистемыПовтИсп.ОписаниеТипаВсеСсылки();
ДоступныеТипыДанных = Новый ОписаниеТипов(ОписаниеТипаВсеСсылки, "ОписаниеТипов");
МассивТипов = ДоступныеТипыДанных.Типы();
НеПримитивныеТипы = Новый СписокЗначений;
НеПримитивныеТипы.ЗагрузитьЗначения(МассивТипов);
НеПримитивныеТипы.СортироватьПоЗначению(НаправлениеСортировки.Возр);
СписокТипов.Добавить("Число", НСтр("ru = 'Число'"));
СписокТипов.Добавить("Строка", НСтр("ru = 'Строка'"));
СписокТипов.Добавить("Дата", НСтр("ru = 'Дата'"));
СписокТипов.Добавить("Булево", НСтр("ru = 'Булево'"));
СписокТипов.Добавить("ТаблицаЗначений", НСтр("ru = 'Таблица значений'"));
СписокТипов.Добавить("СписокЗначений", НСтр("ru = 'Список значений'"));
СписокТипов.Добавить("Массив", НСтр("ru = 'Массив'"));
СписокТипов.Добавить("Структура", НСтр("ru = 'Структура'"));
Для каждого Стр Из НеПримитивныеТипы Цикл
ЗначениеТипа = XMLТип(Стр.Значение).ИмяТипа;
ПредставлениеТипа = Строка(Стр.Значение);
СписокТипов.Добавить(ЗначениеТипа, ПредставлениеТипа);
КонецЦикла;
Возврат СписокТипов;
КонецФункции
// Фильтрует список типов для данного контекста.
//
// Параметры:
// СписокТипов - СписокЗначений - передаваемые типы.
// Контекст - Строка
//
Процедура ФильтрацияСпискаТипов(СписокТипов, Контекст) Экспорт
Элемент = СписокТипов.НайтиПоЗначению("TypeDescription"); // Тип "Описание типов" удаляется всегда.
СписокТипов.Удалить(Элемент);
КонецПроцедуры
#КонецОбласти
#Область СлужебныйПрограммныйИнтерфейс
// Обновляет тексты предопределенных элементов справочника пользовательские функции.
@ -97,49 +157,220 @@
// Формирует структуру заголовков для элемента справочника.
//
Функция ПолучитьНазваниеПодпрограммыСПараметрами(Ссылка) Экспорт
// Параметры:
// Ссылка - СправочникСсылка.__ПользовательскиеФункции
// - Массив - Если передается группа, множественный выбор недоступен.
// ЭтоГруппа - Булево - Зависит выполняемый запрос для получения данных.
// ВыводитьТелоФункции - Булево - Если установлено Ложь, возможно сформировать описание функции и имя с параметрами.
//
// Возвращаемое значение:
// Массив - коллекция параметров в виде структур,
// гарантировано возвращает массив размером равным количеству переданных ссылок.
// *Структура -
// ** Ключ - Строка - НазваниеСПараметрами, ОписаниеПараметров;
// ** Значение - Строка - Содержит описание параметров.
//
Функция ПолучитьНазваниеПодпрограммыСПараметрами(Ссылка, ЭтоГруппа = Ложь, ВыводитьТелоФункции = Ложь) Экспорт
// Значения элементов структуры:
//
// - ЗаголовокФункции: Функция МояФункция(Параметр1, Параметр2).
// - НазваниеСПараметрами: МояФункция(Параметр1, Параметр2).
// - ОписаниеПараметров: // Типы входных параметров:
// // Параметр1 - 'Число'.
// // Параметр2 - 'Строка'.
СтруктураПараметров = Новый Структура("ЗаголовокФункции, НазваниеСПараметрами, ОписаниеПараметров");
ТекстНазвания = СтрШаблон("%1(", СокрЛП(Ссылка.Наименование));
ТекстКомментария = "// Типы входных параметров: ";
Результат = Новый Массив();
Для Каждого Параметр Из Ссылка.ПараметрыФункции Цикл
Запрос = Новый Запрос;
Запрос.Текст = ТекстЗапросаИменИТелФункции(ЭтоГруппа, ВыводитьТелоФункции);
Запрос.УстановитьПараметр("Ссылка", Ссылка);
РезультатыЗапроса = Запрос.ВыполнитьПакет();
ВыборкаЭлемент = РезультатыЗапроса[1].Выбрать();
ВыборкаСсылка = РезультатыЗапроса[2].Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаЭлемент.Следующий() Цикл
ТекстНазвания = ТекстНазвания + СокрЛП(Параметр.Наименование);
СтруктураПараметров = Новый Структура("ЗаголовокФункции, НазваниеСПараметрами, ОписаниеПараметров");
Если Параметр.НеОбязательныйДляЗаполнения Тогда
ТекстНазвания = СтрШаблон("%1 = Неопределено", ТекстНазвания);
ТипыВходПарам = Новый Массив();
ТипыВходПарам.Добавить("// Типы входных параметров:");
ЧастиИмени = Новый Массив();
ЧастиИмени.Добавить(ВыборкаЭлемент.Представление);
ЧастиИмени.Добавить("(");
Если ВыборкаСсылка.НайтиСледующий(ВыборкаЭлемент.Ссылка, "Ссылка") Тогда
ВыборкаТЧ = ВыборкаСсылка.Выбрать();
Пока ВыборкаТЧ.Следующий() Цикл
ТипВходПарам = СтрШаблон("// %1 - '%2'", ВыборкаТЧ.ИмяПараметра, ВыборкаТЧ.ТипПараметра);
ТипыВходПарам.Добавить(ТипВходПарам);
Параметр = СокрЛП(ВыборкаТЧ.ИмяПараметра) + ?(ВыборкаТЧ.Необязательный, " = Неопределено", "") +
?(ВыборкаТЧ.НомерСтроки <> ВыборкаСсылка.НомерСтроки, ", ", "");
ЧастиИмени.Добавить(Параметр);
КонецЦикла;
КонецЕсли;
Если ТипЗнч(Ссылка) = Тип("ДанныеФормыСтруктура") Тогда
ОписаниеТипаПараметра = "";
Иначе
ОписаниеТипаПараметра = СокрЛП(Параметр.ТипПараметра.Получить());
ТипыВходПарам.Добавить("//");
Если ВыводитьТелоФункции Тогда
КодПодпрограммы = ПересобратьТелоФункции(ВыборкаЭлемент.КодПодпрограммы);
ТипыВходПарам.Добавить(КодПодпрограммы);
КонецЕсли;
ТекстКомментария = СтрСоединить(ТипыВходПарам, Символы.ПС);
ТекстКомментария = СтрШаблон("%1%2// %3 - '%4'",
ТекстКомментария, Символы.ПС, СокрЛП(Параметр.Наименование), ОписаниеТипаПараметра);
ЧастиИмени.Добавить(")");
ТекстНазвания = СтрСоединить(ЧастиИмени, "");
Если Не Параметр.НомерСтроки = Ссылка.ПараметрыФункции.Количество() Тогда
ТекстНазвания = СтрШаблон("%1, ", ТекстНазвания);
КонецЕсли;
СтруктураПараметров.НазваниеСПараметрами = ТекстНазвания;
СтруктураПараметров.ОписаниеПараметров = ТекстКомментария;
Результат.Добавить(СтруктураПараметров);
КонецЦикла;
ТекстНазвания = СтрШаблон("%1)", ТекстНазвания);
Возврат Результат;
СтруктураПараметров.ЗаголовокФункции = СтрШаблон("Функция %1", ТекстНазвания);
СтруктураПараметров.НазваниеСПараметрами = ТекстНазвания;
СтруктураПараметров.ОписаниеПараметров = ТекстКомментария;
КонецФункции
// Формирует строку, содержащую описание функций.
//
// Параметры:
// Ссылка - СправочникСсылка.__ПользовательскиеФункции
// - Массив - Если передается группа, множественный выбор недоступен.
// ЭтоГруппа - Булево - Зависит выполняемый запрос для получения данных.
// ВыводитьТелоФункции - Булево - Если установлено Ложь, возможно сформировать описание функции и имя с параметрами.
//
// Возвращаемое значение:
// Строка - Сформированное описание Функций, с выводом имени функции, ее параметров и описание типов параметров
//
Функция СформироватьОписаниеФункций(Ссылка, ЭтоГруппа = Ложь, ВыводитьТелоФункции = Ложь) Экспорт
Возврат СтруктураПараметров;
Результат = Новый Массив();
Результат.Добавить(СтрШаблон(НСтр("ru='#В группе: %1';en='#In Group: %1'"), Ссылка));
Результат.Добавить(Символы.ВК);
Запрос = Новый Запрос;
Запрос.Текст = ТекстЗапросаИменИТелФункции(ЭтоГруппа, ВыводитьТелоФункции);
Запрос.УстановитьПараметр("Ссылка", Ссылка);
РезультатыЗапроса = Запрос.ВыполнитьПакет();
ВыборкаЭлемент = РезультатыЗапроса[1].Выбрать();
ВыборкаСсылка = РезультатыЗапроса[2].Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаЭлемент.Следующий() Цикл
Если ВыборкаЭлемент.ЭтоГруппа Тогда
Результат.Добавить(СтрШаблон("Группа: %1", ВыборкаЭлемент.Представление));
Результат.Добавить(Символы.ВК);
Продолжить;
КонецЕсли;
ТипыВходПарам = Новый Массив();
ЧастиИмени = Новый Массив();
ТипыВходПарам.Добавить("// Типы входных параметров:");
ЧастиИмени.Добавить(СтрШаблон("Функция %1(", ВыборкаЭлемент.Представление));
Если ВыборкаСсылка.НайтиСледующий(ВыборкаЭлемент.Ссылка, "Ссылка") Тогда
ВыборкаТЧ = ВыборкаСсылка.Выбрать();
Пока ВыборкаТЧ.Следующий() Цикл
ТипВходПарам = СтрШаблон("// %1 - '%2'", ВыборкаТЧ.ИмяПараметра, ВыборкаТЧ.ТипПараметра);
ТипыВходПарам.Добавить(ТипВходПарам);
Параметр = СокрЛП(ВыборкаТЧ.ИмяПараметра) + ?(ВыборкаТЧ.Необязательный, " = Неопределено", "") +
?(ВыборкаТЧ.НомерСтроки = ВыборкаСсылка.НомерСтроки, "", ", ");
ЧастиИмени.Добавить(Параметр);
КонецЦикла;
КонецЕсли;
ЧастиИмени.Добавить(")");
ТипыВходПарам.Добавить("//");
ИмяПараметрыФункции = СтрСоединить(ЧастиИмени, "");
ТипыВходПарам.Добавить(ИмяПараметрыФункции);
ОсновнойТекст = СтрСоединить(ТипыВходПарам, Символы.ПС);
Результат.Добавить(ОсновнойТекст);
Если ВыводитьТелоФункции Тогда
КодПодпрограммы = ПересобратьТелоФункции(ВыборкаЭлемент.КодПодпрограммы);
Результат.Добавить(КодПодпрограммы);
КонецЕсли;
Результат.Добавить(Символы.ВК);
КонецЦикла;
Возврат СтрСоединить(Результат, Символы.ПС);
КонецФункции
Функция ТекстЗапросаИменИТелФункции(ЭтоГруппа = Ложь, ВыводитьТелоФункции = Ложь)
ТекстЗапроса = "ВЫБРАТЬ
| __ПользовательскиеФункции.Ссылка КАК Ссылка,
| __ПользовательскиеФункции.Представление КАК Представление,
| __ПользовательскиеФункции.ЭтоГруппа КАК ЭтоГруппа
|ПОМЕСТИТЬ ДанныеЭлемента
|ИЗ
| Справочник.__ПользовательскиеФункции КАК __ПользовательскиеФункции
|ГДЕ
| __ПользовательскиеФункции.Ссылка В (&Ссылка)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ДанныеЭлемента.Ссылка КАК Ссылка,
| ДанныеЭлемента.Представление КАК Представление,
| ДанныеЭлемента.ЭтоГруппа КАК ЭтоГруппа
|ИЗ
| ДанныеЭлемента КАК ДанныеЭлемента
|
|УПОРЯДОЧИТЬ ПО
| ЭтоГруппа
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ТаблицаПараметров.Ссылка КАК Ссылка,
| ТаблицаПараметров.НомерСтроки КАК НомерСтроки,
| ТаблицаПараметров.Наименование КАК ИмяПараметра,
| ТаблицаПараметров.Необязательный КАК Необязательный,
| ТаблицаПараметров.Тип КАК ТипПараметра
|ИЗ
| ДанныеЭлемента КАК ДанныеЭлемента
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.__ПользовательскиеФункции.ПараметрыФункции КАК ТаблицаПараметров
| ПО ДанныеЭлемента.Ссылка = ТаблицаПараметров.Ссылка
|ИТОГИ
| МАКСИМУМ(НомерСтроки)
|ПО
| Ссылка";
Если ЭтоГруппа Тогда
СхемаЗапроса = Новый СхемаЗапроса;
СхемаЗапроса.УстановитьТекстЗапроса(ТекстЗапроса);
Пакет = __СхемыЗапросов.ЗапросПакетаЗапросов(СхемаЗапроса, 0);
Пакет.Операторы[0].Отбор.Установить(0, Новый ВыражениеСхемыЗапроса("__ПользовательскиеФункции.Родитель = &Ссылка"));
ТекстЗапроса = СхемаЗапроса.ПолучитьТекстЗапроса();
КонецЕсли;
Если ВыводитьТелоФункции Тогда
ТекстЗапроса = __СхемыЗапросов.ДобавитьПолеВыборкиВЗапрос(
ТекстЗапроса,
"__ПользовательскиеФункции.КодПодпрограммы",
"КодПодпрограммы",
0);
ТекстЗапроса = __СхемыЗапросов.ДобавитьПолеВыборкиВЗапрос(
ТекстЗапроса,
"ДанныеЭлемента.КодПодпрограммы",
"КодПодпрограммы",
1);
КонецЕсли;
Возврат ТекстЗапроса;
КонецФункции
@ -188,6 +419,19 @@
КонецПроцедуры
Функция ПересобратьТелоФункции(ТелоФункции)
РазобранныйКод = СтрРазделить(ТелоФункции, Символы.ПС, Ложь);
Части = Новый Массив();
Для Сч = 0 По РазобранныйКод.ВГраница() Цикл
Если ЗначениеЗаполнено(РазобранныйКод[Сч]) Тогда
Части.Добавить(РазобранныйКод[Сч]);
КонецЕсли;
КонецЦикла;
Возврат СтрСоединить(Части, Символы.ПС);
КонецФункции
#КонецОбласти
#КонецЕсли

View File

@ -120,14 +120,6 @@
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="ГруппаОписаниеФункцииРасширеннаяПодсказка" id="45"/>
<ChildItems>
<InputField name="Описание" id="30">
<DataPath>Items.Список.CurrentData.Описание</DataPath>
<ReadOnly>true</ReadOnly>
<TitleLocation>None</TitleLocation>
<MultiLine>true</MultiLine>
<ContextMenu name="ОписаниеКонтекстноеМеню" id="31"/>
<ExtendedTooltip name="ОписаниеРасширеннаяПодсказка" id="46"/>
</InputField>
<UsualGroup name="ГруппаШапкаФункции" id="13">
<Title>
<v8:item>
@ -306,6 +298,7 @@
</Type>
<MainAttribute>true</MainAttribute>
<UseAlways>
<Field>Список.IsFolder</Field>
<Field>Список.Ref</Field>
</UseAlways>
<Settings xsi:type="DynamicList">

View File

@ -50,42 +50,18 @@
// Ссылка - СправочникСсылка.__ПользовательскиеФункции.
//
&НаСервере
Процедура ПоказатьОписаниеФункцииСервер(Ссылка)
Процедура ПоказатьОписаниеФункцииСервер(Ссылка, ЭтоГруппа)
Если Ссылка.ЭтоГруппа Тогда
ТекстОписания = СтрШаблон(НСтр("ru='#В группе: %1';en='#In Group: %1'"), Символы.ПС);
Выборка = Справочники.__ПользовательскиеФункции.Выбрать(Ссылка);
Пока Выборка.Следующий() Цикл
Если Выборка.ЭтоГруппа Тогда
Продолжить;
КонецЕсли;
ОписаниеСКомментариями = СтрЗаменить(СокрЛП(Выборка.Описание), Символы.ПС, СтрШаблон("%1// ", Символы.ПС));
Если СокрЛП(Выборка.Описание) = "" Тогда
ОписаниеФункции = НСтр("ru='// <нет описания>';en='// <No description>'");
Иначе
ОписаниеФункции = СтрШаблон("// %1", ОписаниеСКомментариями);
КонецЕсли;
__ОбщегоНазначенияСервер.ДобавитьСтрокуКТексту(ТекстОписания, ОписаниеФункции);
СтруктураЗаголовка = Справочники.__ПользовательскиеФункции.ПолучитьНазваниеПодпрограммыСПараметрами(Выборка.Ссылка);
__ОбщегоНазначенияСервер.ДобавитьСтрокуКТексту(ТекстОписания, СтруктураЗаголовка.ЗаголовокФункции + Символы.ПС);
КонецЦикла;
ПолеОписания = ТекстОписания;
Если ЭтоГруппа Тогда
ПолеОписания = Справочники.__ПользовательскиеФункции.СформироватьОписаниеФункций(Ссылка, ЭтоГруппа);
Иначе
СтруктураЗаголовка = Справочники.__ПользовательскиеФункции.ПолучитьНазваниеПодпрограммыСПараметрами(Ссылка);
Элементы.ДекорацияНазваниеСПараметрами.Заголовок = СтруктураЗаголовка.НазваниеСПараметрами;
ПолеОписания = СтрШаблон("%1%2%3", СтруктураЗаголовка.ОписаниеПараметров, Символы.ПС, СокрЛП(Ссылка.КодПодпрограммы));
Результат = Справочники.__ПользовательскиеФункции.ПолучитьНазваниеПодпрограммыСПараметрами(Ссылка, ЭтоГруппа, Истина);
Элементы.ДекорацияНазваниеСПараметрами.Заголовок = Результат[0].НазваниеСПараметрами;
ПолеОписания = Результат[0].ОписаниеПараметров;
КонецЕсли;
Элементы.Описание.Видимость = Не Ссылка.ЭтоГруппа;
Элементы.ГруппаШапкаФункции.Видимость = Не Ссылка.ЭтоГруппа;
Элементы.ГруппаПодвалФункции.Видимость = Не Ссылка.ЭтоГруппа;
Элементы.ГруппаШапкаФункции.Видимость = Не ЭтоГруппа;
Элементы.ГруппаПодвалФункции.Видимость = Не ЭтоГруппа;
КонецПроцедуры
@ -94,12 +70,12 @@
&НаКлиенте
Процедура ПоказатьОписаниеФункции()
ТекущиеДанные = Элементы.Список.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
ТекДанные = Элементы.Список.ТекущиеДанные;
Если ТекДанные = Неопределено Тогда
Возврат;
КонецЕсли;
ПоказатьОписаниеФункцииСервер(ТекущиеДанные.Ссылка);
ПоказатьОписаниеФункцииСервер(ТекДанные.Ссылка, ТекДанные.ЭтоГруппа);
КонецПроцедуры

View File

@ -1,16 +1,12 @@
<?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">
<Form uuid="98e5b51d-5174-455c-b517-05c96721ba7e">
<Form uuid="0456b3fd-91ed-4b7b-becb-06315f20d3b7">
<Properties>
<Name>ФормаПараметров</Name>
<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>The form of the parameters</v8:content>
<v8:content>Форма массива</v8:content>
</v8:item>
</Synonym>
<Comment/>

View File

@ -0,0 +1,186 @@
<?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">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Конструктор "массива"</v8:content>
</v8:item>
</Title>
<WindowOpeningMode>LockOwnerWindow</WindowOpeningMode>
<AutoTitle>false</AutoTitle>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1">
<ChildItems>
<Button name="ФормаСохранитьРезультат" id="20">
<Type>CommandBarButton</Type>
<DefaultButton>true</DefaultButton>
<CommandName>Form.Command.СохранитьРезультат</CommandName>
<ExtendedTooltip name="ФормаСохранитьРезультатРасширеннаяПодсказка" id="21"/>
</Button>
</ChildItems>
</AutoCommandBar>
<Events>
<Event name="OnCreateAtServer">ПриСозданииНаСервере</Event>
<Event name="OnClose">ПриЗакрытии</Event>
</Events>
<ChildItems>
<Table name="Массив" id="22">
<Representation>List</Representation>
<Header>false</Header>
<HorizontalLines>false</HorizontalLines>
<VerticalLines>false</VerticalLines>
<AutoInsertNewRow>true</AutoInsertNewRow>
<DataPath>Массив</DataPath>
<RowPictureDataPath>Массив.Picture</RowPictureDataPath>
<CommandSet>
<ExcludedCommand>Pickup</ExcludedCommand>
</CommandSet>
<ContextMenu name="МассивКонтекстноеМеню" id="23"/>
<AutoCommandBar name="МассивКоманднаяПанель" id="24"/>
<ExtendedTooltip name="МассивРасширеннаяПодсказка" id="25"/>
<SearchStringAddition name="МассивСтрокаПоиска" id="26">
<AdditionSource>
<Item>Массив</Item>
<Type>SearchStringRepresentation</Type>
</AdditionSource>
<ContextMenu name="МассивСтрокаПоискаКонтекстноеМеню" id="27"/>
<ExtendedTooltip name="МассивСтрокаПоискаРасширеннаяПодсказка" id="28"/>
</SearchStringAddition>
<ViewStatusAddition name="МассивСостояниеПросмотра" id="29">
<AdditionSource>
<Item>Массив</Item>
<Type>ViewStatusRepresentation</Type>
</AdditionSource>
<ContextMenu name="МассивСостояниеПросмотраКонтекстноеМеню" id="30"/>
<ExtendedTooltip name="МассивСостояниеПросмотраРасширеннаяПодсказка" id="31"/>
</ViewStatusAddition>
<SearchControlAddition name="МассивУправлениеПоиском" id="32">
<AdditionSource>
<Item>Массив</Item>
<Type>SearchControl</Type>
</AdditionSource>
<ContextMenu name="МассивУправлениеПоискомКонтекстноеМеню" id="33"/>
<ExtendedTooltip name="МассивУправлениеПоискомРасширеннаяПодсказка" id="34"/>
</SearchControlAddition>
<ChildItems>
<InputField name="ЗначениеЭлемента" id="35">
<DataPath>Массив.Value</DataPath>
<EditMode>EnterOnInput</EditMode>
<ExtendedEditMultipleValues>true</ExtendedEditMultipleValues>
<ContextMenu name="ЗначениеЭлементаКонтекстноеМеню" id="36"/>
<ExtendedTooltip name="ЗначениеЭлементаРасширеннаяПодсказка" id="37"/>
</InputField>
</ChildItems>
</Table>
</ChildItems>
<Attributes>
<Attribute name="Структура" id="1">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Структура</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>v8:ValueTable</v8:Type>
</Type>
<Columns>
<Column name="Ключ" id="1">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Ключ</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Column>
<Column name="Значение" id="2">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Значение</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:boolean</v8:Type>
<v8:Type>xs:string</v8:Type>
<v8:Type>xs:dateTime</v8:Type>
<v8:Type>xs:decimal</v8:Type>
<v8:TypeSet>cfg:AnyRef</v8:TypeSet>
<v8:NumberQualifiers>
<v8:Digits>10</v8:Digits>
<v8:FractionDigits>0</v8:FractionDigits>
<v8:AllowedSign>Any</v8:AllowedSign>
</v8:NumberQualifiers>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
<v8:DateQualifiers>
<v8:DateFractions>Date</v8:DateFractions>
</v8:DateQualifiers>
</Type>
</Column>
</Columns>
</Attribute>
<Attribute name="АдресЗначения" id="2">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Адрес значения</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Attribute>
<Attribute name="СохранитьРезультат" id="3">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Сохранить результат</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:boolean</v8:Type>
</Type>
</Attribute>
<Attribute name="Массив" id="4">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Массив</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>v8:ValueListType</v8:Type>
</Type>
</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

@ -0,0 +1,85 @@
// Библиотека проектных подсистем для упрощения разработки архитектуры на 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,210 +0,0 @@
<?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">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Форма заполнения параметров</v8:content>
</v8:item>
<v8:item>
<v8:lang>en</v8:lang>
<v8:content>Form of filling-in the parameters</v8:content>
</v8:item>
</Title>
<AutoTitle>false</AutoTitle>
<CommandBarLocation>Bottom</CommandBarLocation>
<VerticalScroll>useIfNecessary</VerticalScroll>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1">
<HorizontalAlign>Right</HorizontalAlign>
<Autofill>false</Autofill>
<ChildItems>
<Button name="ФормаОК" id="8">
<Type>CommandBarButton</Type>
<DefaultButton>true</DefaultButton>
<CommandName>Form.Command.ОК</CommandName>
<ExtendedTooltip name="ФормаОКРасширеннаяПодсказка" id="10"/>
</Button>
<Button name="ФормаЗакрыть" id="9">
<Type>CommandBarButton</Type>
<Representation>PictureAndText</Representation>
<CommandName>Form.StandardCommand.Close</CommandName>
<ExtendedTooltip name="ФормаЗакрытьРасширеннаяПодсказка" id="11"/>
</Button>
</ChildItems>
</AutoCommandBar>
<Events>
<Event name="OnCreateAtServer">ПриСозданииНаСервере</Event>
</Events>
<ChildItems>
<Table name="ТаблицаПараметров" id="1">
<Representation>List</Representation>
<CommandBarLocation>None</CommandBarLocation>
<ChangeRowSet>false</ChangeRowSet>
<ChangeRowOrder>false</ChangeRowOrder>
<AutoInsertNewRow>true</AutoInsertNewRow>
<EnableStartDrag>true</EnableStartDrag>
<EnableDrag>true</EnableDrag>
<FileDragMode>AsFile</FileDragMode>
<DataPath>ТаблицаПараметров</DataPath>
<SearchStringLocation>None</SearchStringLocation>
<ViewStatusLocation>None</ViewStatusLocation>
<SearchControlLocation>None</SearchControlLocation>
<RowFilter xsi:nil="true"/>
<ContextMenu name="ТаблицаПараметровКонтекстноеМеню" id="2"/>
<AutoCommandBar name="ТаблицаПараметровКоманднаяПанель" id="3"/>
<ExtendedTooltip name="ТаблицаПараметровРасширеннаяПодсказка" id="12"/>
<SearchStringAddition name="ТаблицаПараметровСтрокаПоиска" id="13">
<AdditionSource>
<Item>ТаблицаПараметров</Item>
<Type>SearchStringRepresentation</Type>
</AdditionSource>
<ContextMenu name="ТаблицаПараметровСтрокаПоискаКонтекстноеМеню" id="14"/>
<ExtendedTooltip name="ТаблицаПараметровСтрокаПоискаРасширеннаяПодсказка" id="15"/>
</SearchStringAddition>
<ViewStatusAddition name="ТаблицаПараметровСостояниеПросмотра" id="16">
<AdditionSource>
<Item>ТаблицаПараметров</Item>
<Type>ViewStatusRepresentation</Type>
</AdditionSource>
<ContextMenu name="ТаблицаПараметровСостояниеПросмотраКонтекстноеМеню" id="17"/>
<ExtendedTooltip name="ТаблицаПараметровСостояниеПросмотраРасширеннаяПодсказка" id="18"/>
</ViewStatusAddition>
<SearchControlAddition name="ТаблицаПараметровУправлениеПоиском" id="19">
<AdditionSource>
<Item>ТаблицаПараметров</Item>
<Type>SearchControl</Type>
</AdditionSource>
<ContextMenu name="ТаблицаПараметровУправлениеПоискомКонтекстноеМеню" id="20"/>
<ExtendedTooltip name="ТаблицаПараметровУправлениеПоискомРасширеннаяПодсказка" id="21"/>
</SearchControlAddition>
<ChildItems>
<InputField name="ТаблицаПараметровПараметр" id="4">
<DataPath>ТаблицаПараметров.Параметр</DataPath>
<ReadOnly>true</ReadOnly>
<EditMode>EnterOnInput</EditMode>
<Width>24</Width>
<ContextMenu name="ТаблицаПараметровПараметрКонтекстноеМеню" id="5"/>
<ExtendedTooltip name="ТаблицаПараметровПараметрРасширеннаяПодсказка" id="22"/>
</InputField>
<InputField name="ТаблицаПараметровЗначение" id="6">
<DataPath>ТаблицаПараметров.Значение</DataPath>
<EditMode>EnterOnInput</EditMode>
<ClearButton>true</ClearButton>
<ContextMenu name="ТаблицаПараметровЗначениеКонтекстноеМеню" id="7"/>
<ExtendedTooltip name="ТаблицаПараметровЗначениеРасширеннаяПодсказка" id="23"/>
<Events>
<Event name="StartChoice">ТаблицаПараметровЗначениеНачалоВыбора</Event>
<Event name="Clearing">ТаблицаПараметровЗначениеОчистка</Event>
</Events>
</InputField>
</ChildItems>
</Table>
</ChildItems>
<Attributes>
<Attribute 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>Parameters Table</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>v8:ValueTable</v8:Type>
</Type>
<Columns>
<Column 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>Parameter</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>50</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Column>
<Column name="Значение" id="2">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Значение</v8:content>
</v8:item>
<v8:item>
<v8:lang>en</v8:lang>
<v8:content>Value</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:boolean</v8:Type>
<v8:Type>xs:string</v8:Type>
<v8:Type>xs:dateTime</v8:Type>
<v8:Type>xs:decimal</v8:Type>
<v8:TypeSet>cfg:AnyRef</v8:TypeSet>
<v8:NumberQualifiers>
<v8:Digits>10</v8:Digits>
<v8:FractionDigits>0</v8:FractionDigits>
<v8:AllowedSign>Any</v8:AllowedSign>
</v8:NumberQualifiers>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
<v8:DateQualifiers>
<v8:DateFractions>Date</v8:DateFractions>
</v8:DateQualifiers>
</Type>
</Column>
</Columns>
</Attribute>
<Attribute name="фКэшЗначений" id="2">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Ф кэш значений</v8:content>
</v8:item>
<v8:item>
<v8:lang>en</v8:lang>
<v8:content>F values cache</v8:content>
</v8:item>
</Title>
<Type/>
</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>OK</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>ОК</v8:content>
</v8:item>
<v8:item>
<v8:lang>en</v8:lang>
<v8:content>OK</v8:content>
</v8:item>
</ToolTip>
<Action>ОК</Action>
<CurrentRowUse>DontUse</CurrentRowUse>
</Command>
</Commands>
</Form>

View File

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

@ -133,14 +133,6 @@
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="ГруппаОписаниеФункцииРасширеннаяПодсказка" id="43"/>
<ChildItems>
<InputField name="Описание" id="28">
<DataPath>Items.Список.CurrentData.Описание</DataPath>
<ReadOnly>true</ReadOnly>
<TitleLocation>None</TitleLocation>
<MultiLine>true</MultiLine>
<ContextMenu name="ОписаниеКонтекстноеМеню" id="29"/>
<ExtendedTooltip name="ОписаниеРасширеннаяПодсказка" id="44"/>
</InputField>
<UsualGroup name="ГруппаШапкаФункции" id="16">
<Title>
<v8:item>
@ -318,6 +310,7 @@
</Type>
<MainAttribute>true</MainAttribute>
<UseAlways>
<Field>Список.IsFolder</Field>
<Field>Список.Ref</Field>
</UseAlways>
<Settings xsi:type="DynamicList">

View File

@ -50,42 +50,18 @@
// Ссылка - СправочникСсылка.__ПользовательскиеФункции.
//
&НаСервере
Процедура ПоказатьОписаниеФункцииСервер(Ссылка)
Процедура ПоказатьОписаниеФункцииСервер(Ссылка, ЭтоГруппа)
Если Ссылка.ЭтоГруппа Тогда
ТекстОписания = СтрШаблон(НСтр("ru='#В группе: %1';en='#In Group: %1'"), Символы.ПС);
Выборка = Справочники.__ПользовательскиеФункции.Выбрать(Ссылка);
Пока Выборка.Следующий() Цикл
Если Выборка.ЭтоГруппа Тогда
Продолжить;
КонецЕсли;
ОписаниеСКомментариями = СтрЗаменить(СокрЛП(Выборка.Описание), Символы.ПС, СтрШаблон("%1// ", Символы.ПС));
Если СокрЛП(Выборка.Описание) = "" Тогда
ОписаниеФункции = НСтр("ru='// <нет описания>';en='// <No description>'");
Иначе
ОписаниеФункции = СтрШаблон("// %1", ОписаниеСКомментариями);
КонецЕсли;
__ОбщегоНазначенияСервер.ДобавитьСтрокуКТексту(ТекстОписания, ОписаниеФункции);
СтруктураЗаголовка = Справочники.__ПользовательскиеФункции.ПолучитьНазваниеПодпрограммыСПараметрами(Выборка.Ссылка);
__ОбщегоНазначенияСервер.ДобавитьСтрокуКТексту(ТекстОписания, СтруктураЗаголовка.ЗаголовокФункции + Символы.ПС);
КонецЦикла;
ПолеОписания = ТекстОписания;
Если ЭтоГруппа Тогда
ПолеОписания = Справочники.__ПользовательскиеФункции.СформироватьОписаниеФункций(Ссылка, ЭтоГруппа);
Иначе
СтруктураЗаголовка = Справочники.__ПользовательскиеФункции.ПолучитьНазваниеПодпрограммыСПараметрами(Ссылка);
Элементы.ДекорацияНазваниеСПараметрами.Заголовок = СтруктураЗаголовка.НазваниеСПараметрами;
ПолеОписания = СтрШаблон("%1%2%3", СтруктураЗаголовка.ОписаниеПараметров, Символы.ПС, СокрЛП(Ссылка.КодПодпрограммы));
Результат = Справочники.__ПользовательскиеФункции.ПолучитьНазваниеПодпрограммыСПараметрами(Ссылка, ЭтоГруппа, Истина);
Элементы.ДекорацияНазваниеСПараметрами.Заголовок = Результат[0].НазваниеСПараметрами;
ПолеОписания = Результат[0].ОписаниеПараметров;
КонецЕсли;
Элементы.Описание.Видимость = Не Ссылка.ЭтоГруппа;
Элементы.ГруппаШапкаФункции.Видимость = Не Ссылка.ЭтоГруппа;
Элементы.ГруппаПодвалФункции.Видимость = Не Ссылка.ЭтоГруппа;
Элементы.ГруппаШапкаФункции.Видимость = Не ЭтоГруппа;
Элементы.ГруппаПодвалФункции.Видимость = Не ЭтоГруппа;
КонецПроцедуры
@ -99,7 +75,7 @@
Возврат;
КонецЕсли;
ПоказатьОписаниеФункцииСервер(ТекущиеДанные.Ссылка);
ПоказатьОписаниеФункцииСервер(ТекущиеДанные.Ссылка, ТекущиеДанные.ЭтоГруппа);
КонецПроцедуры

View File

@ -0,0 +1,21 @@
<?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">
<Form uuid="5a53935f-59f2-4d7e-88af-48f30e135e8f">
<Properties>
<Name>ФормаСтруктуры</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Форма структуры</v8:content>
</v8:item>
</Synonym>
<Comment/>
<FormType>Managed</FormType>
<IncludeHelpInContents>false</IncludeHelpInContents>
<UsePurposes>
<v8:Value xsi:type="app:ApplicationUsePurpose">PlatformApplication</v8:Value>
<v8:Value xsi:type="app:ApplicationUsePurpose">MobilePlatformApplication</v8:Value>
</UsePurposes>
</Properties>
</Form>
</MetaDataObject>

View File

@ -0,0 +1,181 @@
<?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">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Конструктор "структуры"</v8:content>
</v8:item>
</Title>
<WindowOpeningMode>LockOwnerWindow</WindowOpeningMode>
<AutoTitle>false</AutoTitle>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1">
<ChildItems>
<Button name="ФормаСохранитьРезультат" id="20">
<Type>CommandBarButton</Type>
<DefaultButton>true</DefaultButton>
<CommandName>Form.Command.СохранитьРезультат</CommandName>
<ExtendedTooltip name="ФормаСохранитьРезультатРасширеннаяПодсказка" id="21"/>
</Button>
</ChildItems>
</AutoCommandBar>
<Events>
<Event name="OnCreateAtServer">ПриСозданииНаСервере</Event>
<Event name="OnClose">ПриЗакрытии</Event>
</Events>
<ChildItems>
<Table name="Структура" id="1">
<Representation>List</Representation>
<AutoInsertNewRow>true</AutoInsertNewRow>
<EnableStartDrag>true</EnableStartDrag>
<EnableDrag>true</EnableDrag>
<DataPath>Структура</DataPath>
<RowFilter xsi:nil="true"/>
<ContextMenu name="СтруктураКонтекстноеМеню" id="2"/>
<AutoCommandBar name="СтруктураКоманднаяПанель" id="3"/>
<ExtendedTooltip name="СтруктураРасширеннаяПодсказка" id="4"/>
<SearchStringAddition name="СтруктураСтрокаПоиска" id="5">
<AdditionSource>
<Item>Структура</Item>
<Type>SearchStringRepresentation</Type>
</AdditionSource>
<ContextMenu name="СтруктураСтрокаПоискаКонтекстноеМеню" id="6"/>
<ExtendedTooltip name="СтруктураСтрокаПоискаРасширеннаяПодсказка" id="7"/>
</SearchStringAddition>
<ViewStatusAddition name="СтруктураСостояниеПросмотра" id="8">
<AdditionSource>
<Item>Структура</Item>
<Type>ViewStatusRepresentation</Type>
</AdditionSource>
<ContextMenu name="СтруктураСостояниеПросмотраКонтекстноеМеню" id="9"/>
<ExtendedTooltip name="СтруктураСостояниеПросмотраРасширеннаяПодсказка" id="10"/>
</ViewStatusAddition>
<SearchControlAddition name="СтруктураУправлениеПоиском" id="11">
<AdditionSource>
<Item>Структура</Item>
<Type>SearchControl</Type>
</AdditionSource>
<ContextMenu name="СтруктураУправлениеПоискомКонтекстноеМеню" id="12"/>
<ExtendedTooltip name="СтруктураУправлениеПоискомРасширеннаяПодсказка" id="13"/>
</SearchControlAddition>
<ChildItems>
<InputField name="СтруктураКлюч" id="14">
<DataPath>Структура.Ключ</DataPath>
<EditMode>EnterOnInput</EditMode>
<ExtendedEditMultipleValues>true</ExtendedEditMultipleValues>
<ContextMenu name="СтруктураКлючКонтекстноеМеню" id="15"/>
<ExtendedTooltip name="СтруктураКлючРасширеннаяПодсказка" id="16"/>
<Events>
<Event name="OnChange">СтруктураКлючПриИзменении</Event>
</Events>
</InputField>
<InputField name="СтруктураЗначение" id="17">
<DataPath>Структура.Значение</DataPath>
<EditMode>EnterOnInput</EditMode>
<ExtendedEditMultipleValues>true</ExtendedEditMultipleValues>
<ContextMenu name="СтруктураЗначениеКонтекстноеМеню" id="18"/>
<ExtendedTooltip name="СтруктураЗначениеРасширеннаяПодсказка" id="19"/>
</InputField>
</ChildItems>
</Table>
</ChildItems>
<Attributes>
<Attribute name="Структура" id="1">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Структура</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>v8:ValueTable</v8:Type>
</Type>
<Columns>
<Column name="Ключ" id="1">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Ключ</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Column>
<Column name="Значение" id="2">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Значение</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:boolean</v8:Type>
<v8:Type>xs:string</v8:Type>
<v8:Type>xs:dateTime</v8:Type>
<v8:Type>xs:decimal</v8:Type>
<v8:TypeSet>cfg:AnyRef</v8:TypeSet>
<v8:NumberQualifiers>
<v8:Digits>10</v8:Digits>
<v8:FractionDigits>0</v8:FractionDigits>
<v8:AllowedSign>Any</v8:AllowedSign>
</v8:NumberQualifiers>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
<v8:DateQualifiers>
<v8:DateFractions>Date</v8:DateFractions>
</v8:DateQualifiers>
</Type>
</Column>
</Columns>
</Attribute>
<Attribute name="АдресЗначения" id="2">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Адрес значения</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Attribute>
<Attribute name="СохранитьРезультат" id="3">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Сохранить результат</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:boolean</v8:Type>
</Type>
</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

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

View File

@ -0,0 +1,21 @@
<?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">
<Form uuid="16043b2f-cf1a-43cb-8e07-64499c1d5992">
<Properties>
<Name>ФормаТаблицыЗначений</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Форма таблицы значений</v8:content>
</v8:item>
</Synonym>
<Comment/>
<FormType>Managed</FormType>
<IncludeHelpInContents>false</IncludeHelpInContents>
<UsePurposes>
<v8:Value xsi:type="app:ApplicationUsePurpose">PlatformApplication</v8:Value>
<v8:Value xsi:type="app:ApplicationUsePurpose">MobilePlatformApplication</v8:Value>
</UsePurposes>
</Properties>
</Form>
</MetaDataObject>

View File

@ -0,0 +1,257 @@
<?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">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Конструктор "таблицы значений"</v8:content>
</v8:item>
</Title>
<WindowOpeningMode>LockOwnerWindow</WindowOpeningMode>
<AutoTitle>false</AutoTitle>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1">
<ChildItems>
<Button name="ФормаСохранитьРезультат" id="37">
<Type>CommandBarButton</Type>
<DefaultButton>true</DefaultButton>
<CommandName>Form.Command.СохранитьРезультат</CommandName>
<ExtendedTooltip name="ФормаСохранитьРезультатРасширеннаяПодсказка" id="38"/>
</Button>
</ChildItems>
</AutoCommandBar>
<Events>
<Event name="OnCreateAtServer">ПриСозданииНаСервере</Event>
<Event name="OnClose">ПриЗакрытии</Event>
</Events>
<ChildItems>
<Button name="ФормаПоказатьКолонкиСтроки" id="33">
<Type>UsualButton</Type>
<CommandName>Form.Command.ПоказатьКолонкиСтроки</CommandName>
<ExtendedTooltip name="ФормаПоказатьКолонкиСтрокиРасширеннаяПодсказка" id="34"/>
</Button>
<Table name="КолонкиТаблицыЗначений" id="1">
<Representation>List</Representation>
<AutoInsertNewRow>true</AutoInsertNewRow>
<EnableStartDrag>true</EnableStartDrag>
<EnableDrag>true</EnableDrag>
<DataPath>КолонкиТаблицыЗначений</DataPath>
<RowFilter xsi:nil="true"/>
<ContextMenu name="КолонкиТаблицыЗначенийКонтекстноеМеню" id="2"/>
<AutoCommandBar name="КолонкиТаблицыЗначенийКоманднаяПанель" id="3"/>
<ExtendedTooltip name="КолонкиТаблицыЗначенийРасширеннаяПодсказка" id="4"/>
<SearchStringAddition name="КолонкиТаблицыЗначенийСтрокаПоиска" id="5">
<AdditionSource>
<Item>КолонкиТаблицыЗначений</Item>
<Type>SearchStringRepresentation</Type>
</AdditionSource>
<ContextMenu name="КолонкиТаблицыЗначенийСтрокаПоискаКонтекстноеМеню" id="6"/>
<ExtendedTooltip name="КолонкиТаблицыЗначенийСтрокаПоискаРасширеннаяПодсказка" id="7"/>
</SearchStringAddition>
<ViewStatusAddition name="КолонкиТаблицыЗначенийСостояниеПросмотра" id="8">
<AdditionSource>
<Item>КолонкиТаблицыЗначений</Item>
<Type>ViewStatusRepresentation</Type>
</AdditionSource>
<ContextMenu name="КолонкиТаблицыЗначенийСостояниеПросмотраКонтекстноеМеню" id="9"/>
<ExtendedTooltip name="КолонкиТаблицыЗначенийСостояниеПросмотраРасширеннаяПодсказка" id="10"/>
</ViewStatusAddition>
<SearchControlAddition name="КолонкиТаблицыЗначенийУправлениеПоиском" id="11">
<AdditionSource>
<Item>КолонкиТаблицыЗначений</Item>
<Type>SearchControl</Type>
</AdditionSource>
<ContextMenu name="КолонкиТаблицыЗначенийУправлениеПоискомКонтекстноеМеню" id="12"/>
<ExtendedTooltip name="КолонкиТаблицыЗначенийУправлениеПоискомРасширеннаяПодсказка" id="13"/>
</SearchControlAddition>
<Events>
<Event name="OnStartEdit">КолонкиТаблицыЗначенийПриНачалеРедактирования</Event>
</Events>
<ChildItems>
<InputField name="Имя" id="14">
<DataPath>КолонкиТаблицыЗначений.Имя</DataPath>
<EditMode>EnterOnInput</EditMode>
<ExtendedEditMultipleValues>true</ExtendedEditMultipleValues>
<ContextMenu name="ИмяКонтекстноеМеню" id="15"/>
<ExtendedTooltip name="ИмяРасширеннаяПодсказка" id="16"/>
<Events>
<Event name="OnChange">КолонкиТаблицыЗначенийИмяПриИзменении</Event>
</Events>
</InputField>
<InputField name="ТипЗначения" id="17">
<DataPath>КолонкиТаблицыЗначений.ТипЗначения</DataPath>
<EditMode>EnterOnInput</EditMode>
<ExtendedEditMultipleValues>true</ExtendedEditMultipleValues>
<AutoChoiceIncomplete>true</AutoChoiceIncomplete>
<ContextMenu name="ТипЗначенияКонтекстноеМеню" id="18"/>
<ExtendedTooltip name="ТипЗначенияРасширеннаяПодсказка" id="19"/>
</InputField>
</ChildItems>
</Table>
<Table name="СтрокиТаблицыЗначений" id="20">
<Representation>List</Representation>
<AutoInsertNewRow>true</AutoInsertNewRow>
<EnableStartDrag>true</EnableStartDrag>
<EnableDrag>true</EnableDrag>
<DataPath>СтрокиТаблицыЗначений</DataPath>
<RowFilter xsi:nil="true"/>
<ContextMenu name="СтрокиТаблицыЗначенийКонтекстноеМеню" id="21"/>
<AutoCommandBar name="СтрокиТаблицыЗначенийКоманднаяПанель" id="22"/>
<ExtendedTooltip name="СтрокиТаблицыЗначенийРасширеннаяПодсказка" id="23"/>
<SearchStringAddition name="СтрокиТаблицыЗначенийСтрокаПоиска" id="24">
<AdditionSource>
<Item>СтрокиТаблицыЗначений</Item>
<Type>SearchStringRepresentation</Type>
</AdditionSource>
<ContextMenu name="СтрокиТаблицыЗначенийСтрокаПоискаКонтекстноеМеню" id="25"/>
<ExtendedTooltip name="СтрокиТаблицыЗначенийСтрокаПоискаРасширеннаяПодсказка" id="26"/>
</SearchStringAddition>
<ViewStatusAddition name="СтрокиТаблицыЗначенийСостояниеПросмотра" id="27">
<AdditionSource>
<Item>СтрокиТаблицыЗначений</Item>
<Type>ViewStatusRepresentation</Type>
</AdditionSource>
<ContextMenu name="СтрокиТаблицыЗначенийСостояниеПросмотраКонтекстноеМеню" id="28"/>
<ExtendedTooltip name="СтрокиТаблицыЗначенийСостояниеПросмотраРасширеннаяПодсказка" id="29"/>
</ViewStatusAddition>
<SearchControlAddition name="СтрокиТаблицыЗначенийУправлениеПоиском" id="30">
<AdditionSource>
<Item>СтрокиТаблицыЗначений</Item>
<Type>SearchControl</Type>
</AdditionSource>
<ContextMenu name="СтрокиТаблицыЗначенийУправлениеПоискомКонтекстноеМеню" id="31"/>
<ExtendedTooltip name="СтрокиТаблицыЗначенийУправлениеПоискомРасширеннаяПодсказка" id="32"/>
</SearchControlAddition>
</Table>
</ChildItems>
<Attributes>
<Attribute name="КолонкиТаблицыЗначений" id="1">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Колонки таблицы значений</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>v8:ValueTable</v8:Type>
</Type>
<Columns>
<Column name="Имя" id="1">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Имя</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Column>
<Column name="ТипЗначения" id="2">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Тип значения</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>v8:TypeDescription</v8:Type>
</Type>
</Column>
<Column name="Идентификатор" id="3">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Идентификатор</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>v8:UUID</v8:Type>
</Type>
</Column>
</Columns>
</Attribute>
<Attribute name="СтрокиТаблицыЗначений" id="2">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Строки таблицы значений</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>v8:ValueTable</v8:Type>
</Type>
</Attribute>
<Attribute name="ПоказатьТаблицу" id="3">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Показать таблицу</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:boolean</v8:Type>
</Type>
</Attribute>
<Attribute name="СохранитьРезультат" id="4">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Сохранить результат</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:boolean</v8:Type>
</Type>
</Attribute>
<Attribute name="АдресЗначения" id="5">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Адрес значения</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</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>
<Command name="СохранитьРезультат" id="2">
<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

@ -0,0 +1,206 @@
// Библиотека проектных подсистем для упрощения разработки архитектуры на 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/
//
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АдресЗначения", АдресЗначения) Тогда
Таблица = ПолучитьИзВременногоХранилища(АдресЗначения);
Если Таблица <> Неопределено Тогда
Для Каждого Колонка Из Таблица.Колонки Цикл
// Заполняем таблицу колонок
нСтрока = КолонкиТаблицыЗначений.Добавить();
ЗаполнитьЗначенияСвойств(нСтрока, Колонка);
КонецЦикла;
// Создаем реквизиты формы, выводим таблицу формы
ПоказатьТаблицу = Истина;
ОбновитьТаблицуСтрок();
// Заполняем таблицу строк
Для Каждого Стр Из Таблица Цикл
нСтрока = СтрокиТаблицыЗначений.Добавить();
ЗаполнитьЗначенияСвойств(нСтрока, Стр);
КонецЦикла;
КонецЕсли;
КонецЕсли;
УстановитьВидимостьЭлементов();
КонецПроцедуры
&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
Если ЗавершениеРаботы Тогда
Возврат;
КонецЕсли;
Если СохранитьРезультат Тогда
Адрес = АдресТаблицыВХранилище();
ОповеститьОВыборе(Новый Структура("Адрес", Адрес));
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыКолонкиТаблицыЗначений
&НаКлиенте
Процедура КолонкиТаблицыЗначенийИмяПриИзменении(Элемент)
ТекДанные = Элементы.КолонкиТаблицыЗначений.ТекущиеДанные;
Если ЗначениеЗаполнено(ТекДанные.Имя) Тогда
Результат = СтрЗаменить(ТекДанные.Имя, " ", "");
__ОбщегоНазначенияКлиентСервер.УдалитьНедопустимыеСимволы(Результат);
ТекДанные.Имя = Результат;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КолонкиТаблицыЗначенийПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
Если Не НоваяСтрока Тогда
Возврат;
КонецЕсли;
ТекДанные = Элементы.КолонкиТаблицыЗначений.ТекущиеДанные;
ТекДанные.Имя = "Колонка_";
// Установим тип по умолчанию "Строка"
ТекДанные.ТипЗначения = Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(10));
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура КолонкиСтроки(Команда)
УстановитьВидимостьЭлементов();
КонецПроцедуры
&НаКлиенте
Процедура СохранитьРезультат(Команда)
СохранитьРезультат = Истина;
Закрыть();
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервереБезКонтекста
Процедура ОчиститьНеиспользуемыеНастройки(Адрес)
УдалитьИзВременногоХранилища(Адрес);
КонецПроцедуры
&НаСервере
Функция АдресТаблицыВХранилище()
Адрес = "";
Если ЗначениеЗаполнено(СтрокиТаблицыЗначений) Тогда
УИД = ?(ПустаяСтрока(АдресЗначения), Новый УникальныйИдентификатор, АдресЗначения);
ТаблицаЗначений = СтрокиТаблицыЗначений.Выгрузить();
Адрес = ПоместитьВоВременноеХранилище(ТаблицаЗначений, УИД);
Иначе
ОчиститьНеиспользуемыеНастройки(АдресЗначения);
КонецЕсли;
Возврат Адрес;
КонецФункции
&НаСервере
Процедура ОбновитьТаблицуСтрок()
ИменаКолонок = Новый Массив;
Для Каждого Реквизит Из КолонкиТаблицыЗначений Цикл
ИменаКолонок.Добавить(Реквизит.Имя);
КонецЦикла;
ИмяТаблицы = "СтрокиТаблицыЗначений";
РеквизитыТаблицы = ПолучитьРеквизиты(ИмяТаблицы);
ИменаРеквизитов = Новый Массив();
УдаляемыеРеквизиты = Новый Массив;
Для Каждого Реквизит Из РеквизитыТаблицы Цикл
ИменаРеквизитов.Добавить(Реквизит.Имя);
Если ИменаКолонок.Найти(Реквизит.Имя) = Неопределено Тогда
УдаляемыеРеквизиты.Добавить(ИмяТаблицы + "." + Реквизит.Имя);
__РаботаСФормами.УдалитьЭлемент(ЭтотОбъект, ИмяТаблицы + Реквизит.Имя);
КонецЕсли;
КонецЦикла;
ДобавляемыеРеквизиты = Новый Массив;
Для Каждого Колонка Из КолонкиТаблицыЗначений Цикл
Если ИменаРеквизитов.Найти(Колонка.Имя) = Неопределено Тогда
НовыйРеквизит = Новый РеквизитФормы(Колонка.Имя, Колонка.ТипЗначения, ИмяТаблицы);
ДобавляемыеРеквизиты.Добавить(НовыйРеквизит);
КонецЕсли;
КонецЦикла;
Если Не ЗначениеЗаполнено(УдаляемыеРеквизиты) И Не ЗначениеЗаполнено(ДобавляемыеРеквизиты) Тогда
Возврат;
КонецЕсли;
НачатьТранзакцию();
Попытка
ИзменитьРеквизиты(, УдаляемыеРеквизиты);
ИзменитьРеквизиты(ДобавляемыеРеквизиты);
Для Каждого Реквизит Из ДобавляемыеРеквизиты Цикл
Если Элементы.Найти(ИмяТаблицы + Реквизит.Имя) = Неопределено Тогда
__РаботаСФормами.СоздатьКолонкаТаблицыФормы(
ЭтотОбъект,
ИмяТаблицы + Реквизит.Имя,
Элементы.СтрокиТаблицыЗначений,
,
,
ИмяТаблицы + "." + Реквизит.Имя);
КонецЕсли;
КонецЦикла;
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьЭлементов()
Если ПоказатьТаблицу Тогда
ОбновитьТаблицуСтрок();
КонецЕсли;
ОбновитьЗаголовокКнопки();
Элементы.КолонкиТаблицыЗначений.Видимость = Не ПоказатьТаблицу;
Элементы.СтрокиТаблицыЗначений.Видимость = ПоказатьТаблицу;
ПоказатьТаблицу = Не ПоказатьТаблицу;
КонецПроцедуры
&НаСервере
Процедура ОбновитьЗаголовокКнопки()
Элементы.ФормаПоказатьКолонкиСтроки.Заголовок = ?(ПоказатьТаблицу, "Показать колонки", "Показать строки");
КонецПроцедуры
#КонецОбласти

View File

@ -4,13 +4,14 @@
<UseForFoldersAndItems>Items</UseForFoldersAndItems>
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1"/>
<Events>
<Event name="ChoiceProcessing">ОбработкаВыбора</Event>
<Event name="AfterWriteAtServer">ПослеЗаписиНаСервере</Event>
<Event name="OnReadAtServer">ПриЧтенииНаСервере</Event>
<Event name="OnOpen">ПриОткрытии</Event>
<Event name="BeforeWrite">ПередЗаписью</Event>
<Event name="OnCreateAtServer">ПриСозданииНаСервере</Event>
<Event name="BeforeWriteAtServer">ПередЗаписьюНаСервере</Event>
<Event name="OnWriteAtServer">ПриЗаписиНаСервере</Event>
<Event name="OnClose">ПриЗакрытии</Event>
</Events>
<ChildItems>
<InputField name="Родитель" id="5">
@ -202,17 +203,42 @@
<ExtendedTooltip name="ПараметрыФункцииНаименованиеExtendedTooltip" id="83"/>
</InputField>
<CheckBoxField name="ПараметрыФункцииНеОбязательныйДляЗаполнения" id="26">
<DataPath>Объект.ПараметрыФункции.НеОбязательныйДляЗаполнения</DataPath>
<DataPath>Объект.ПараметрыФункции.Необязательный</DataPath>
<EditMode>EnterOnInput</EditMode>
<CheckBoxType>Auto</CheckBoxType>
<ContextMenu name="ПараметрыФункцииНеОбязательныйДляЗаполненияКонтекстноеМеню" id="27"/>
<ExtendedTooltip name="ПараметрыФункцииНеОбязательныйДляЗаполненияExtendedTooltip" id="84"/>
</CheckBoxField>
<InputField name="ПараметрыФункцииТипПараметра" id="69">
<DataPath>Объект.ПараметрыФункции.фТипПараметра</DataPath>
<InputField name="ПараметрыФункцииТипВФорме" id="148">
<DataPath>Объект.ПараметрыФункции.ТипВФорме</DataPath>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="ПараметрыФункцииТипПараметраКонтекстноеМеню" id="70"/>
<ExtendedTooltip name="ПараметрыФункцииТипПараметраРасширеннаяПодсказка" id="85"/>
<ChoiceButton>true</ChoiceButton>
<ExtendedEditMultipleValues>true</ExtendedEditMultipleValues>
<TextEdit>false</TextEdit>
<ContextMenu name="ПараметрыФункцииТипВФормеКонтекстноеМеню" id="149"/>
<ExtendedTooltip name="ПараметрыФункцииТипВФормеРасширеннаяПодсказка" id="150"/>
<Events>
<Event name="StartChoice">ПараметрыФункцииТипВФормеНачалоВыбора</Event>
</Events>
</InputField>
<InputField name="ПараметрыФункцииЗначениеВФорме" id="154">
<DataPath>Объект.ПараметрыФункции.ЗначениеВФорме</DataPath>
<EditMode>EnterOnInput</EditMode>
<ChoiceButton>true</ChoiceButton>
<ChooseType>false</ChooseType>
<ContextMenu name="ПараметрыФункцииЗначениеВФормеКонтекстноеМеню" id="155"/>
<ExtendedTooltip name="ПараметрыФункцииЗначениеВФормеРасширеннаяПодсказка" id="156"/>
<Events>
<Event name="StartChoice">ПараметрыФункцииЗначениеВФормеНачалоВыбора</Event>
</Events>
</InputField>
<InputField name="ПараметрыФункцииАдресЗначения" id="157">
<DataPath>Объект.ПараметрыФункции.АдресЗначения</DataPath>
<Visible>false</Visible>
<EditMode>EnterOnInput</EditMode>
<ExtendedEditMultipleValues>true</ExtendedEditMultipleValues>
<ContextMenu name="ПараметрыФункцииАдресЗначенияКонтекстноеМеню" id="158"/>
<ExtendedTooltip name="ПараметрыФункцииАдресЗначенияРасширеннаяПодсказка" id="159"/>
</InputField>
</ChildItems>
</Table>
@ -376,16 +402,6 @@
<CommandName>Form.Command.ВставитьЗапрос</CommandName>
<ExtendedTooltip name="ВставитьЗапросExtendedTooltip" id="95"/>
</Button>
<Button name="ДобавитьОписание" id="64">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.ДобавитьОписание</CommandName>
<ExtendedTooltip name="ДобавитьОписаниеExtendedTooltip" id="96"/>
</Button>
<Button name="ЗадатьПараметры" id="65">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.ЗадатьПараметры</CommandName>
<ExtendedTooltip name="ЗадатьПараметрыExtendedTooltip" id="97"/>
</Button>
</ChildItems>
</ButtonGroup>
<ButtonGroup name="ГруппаНастройкиОтображения" id="139">
@ -625,19 +641,63 @@
<SavedData>true</SavedData>
<Columns>
<AdditionalColumns table="Объект.ПараметрыФункции">
<Column name="фТипПараметра" id="1">
<Column name="ТипВФорме" id="2">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Тип параметра</v8:content>
</v8:item>
<v8:item>
<v8:lang>en</v8:lang>
<v8:content>Parameter Type</v8:content>
<v8:content>Тип</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>v8:TypeDescription</v8:Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Column>
<Column name="ЗначениеВФорме" id="4">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Значение</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>v8:ValueListType</v8:Type>
<v8:Type>xs:boolean</v8:Type>
<v8:Type>xs:string</v8:Type>
<v8:Type>xs:dateTime</v8:Type>
<v8:Type>xs:decimal</v8:Type>
<v8:Type>v8:UUID</v8:Type>
<v8:TypeSet>cfg:AnyRef</v8:TypeSet>
<v8:NumberQualifiers>
<v8:Digits>10</v8:Digits>
<v8:FractionDigits>0</v8:FractionDigits>
<v8:AllowedSign>Any</v8:AllowedSign>
</v8:NumberQualifiers>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
<v8:DateQualifiers>
<v8:DateFractions>Date</v8:DateFractions>
</v8:DateQualifiers>
</Type>
</Column>
<Column name="АдресЗначения" id="5">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Адрес значения (техн)</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Column>
</AdditionalColumns>
@ -893,6 +953,17 @@
</Type>
<SavedData>true</SavedData>
</Attribute>
<Attribute name="СписокТипов" id="21">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Список типов</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>v8:ValueListType</v8:Type>
</Type>
</Attribute>
</Attributes>
<Commands>
<Command name="ВвестиУсловноеВыражение" id="1">
@ -979,64 +1050,6 @@
<ModifiesSavedData>true</ModifiesSavedData>
<CurrentRowUse>DontUse</CurrentRowUse>
</Command>
<Command name="ДобавитьОписание" id="5">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Добавить описание</v8:content>
</v8:item>
<v8:item>
<v8:lang>en</v8:lang>
<v8:content>Add Description</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Добавить описание подпрограммы</v8:content>
</v8:item>
<v8:item>
<v8:lang>en</v8:lang>
<v8:content>Add the subroutine description</v8:content>
</v8:item>
</ToolTip>
<Picture>
<xr:Ref>StdPicture.Task</xr:Ref>
<xr:LoadTransparent>true</xr:LoadTransparent>
</Picture>
<Action>ДобавитьОписание</Action>
<ModifiesSavedData>true</ModifiesSavedData>
<CurrentRowUse>DontUse</CurrentRowUse>
</Command>
<Command name="ЗадатьПараметры" id="6">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Задать параметры</v8:content>
</v8:item>
<v8:item>
<v8:lang>en</v8:lang>
<v8:content>Set Parameters</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Задать параметры для отладки кода</v8:content>
</v8:item>
<v8:item>
<v8:lang>en</v8:lang>
<v8:content>Set parameters for code debugging</v8:content>
</v8:item>
</ToolTip>
<Picture>
<xr:Ref>StdPicture.Enum</xr:Ref>
<xr:LoadTransparent>true</xr:LoadTransparent>
</Picture>
<Action>ЗадатьПараметры</Action>
<ModifiesSavedData>true</ModifiesSavedData>
<CurrentRowUse>DontUse</CurrentRowUse>
</Command>
<Command name="ВыполнитьКод" id="7">
<Title>
<v8:item>

View File

@ -27,9 +27,6 @@
&НаКлиенте
Перем мПредИмя; // Хранит имя переменной до его изменения
&НаКлиенте
Перем мЗначенияПараметров; // Хранит соответствие параметров и их значений для отладки.
#КонецОбласти
#Область ОбработчикиСобытийФормы
@ -37,7 +34,7 @@
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
ПрочитатьТипыПараметров(ТекущийОбъект);
ПрочитатьТипыИЗначенияПараметров(ТекущийОбъект, Истина);
КонецПроцедуры
@ -60,7 +57,7 @@
КонецЦикла;
ЗначениеВДанныеФормы(СправочникОбъект, Объект);
ПрочитатьТипыПараметров(СправочникОбъект);
ПрочитатьТипыИЗначенияПараметров(СправочникОбъект);
Иначе
ДобавитьПараметры();
КонецЕсли;
@ -75,7 +72,7 @@
КаталогИсходногоКодаКонфигурации = Каталог;
КонецЕсли;
ПолучитьНазваниеПодпрограммыСПараметрамиСервер();
ПолучитьНазваниеПодпрограммыСПараметрамиСервер(Истина);
УправлениеЭлементамиФормы();
@ -89,13 +86,14 @@
ВидимостьКартыКода = Истина;
ПодсвечиватьЗапросы = Истина;
СписокТипов = Справочники.__ПользовательскиеФункции.СформироватьСписокТипов();
Справочники.__ПользовательскиеФункции.ФильтрацияСпискаТипов(СписокТипов, "");
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
мЗначенияПараметров = Новый Соответствие;
Оповещение = Новый ОписаниеОповещения("ПослеПодключенияРасширенияДляРаботыСФайлами", ЭтотОбъект);
НачатьПодключениеРасширенияРаботыСФайлами(Оповещение);
ОпределитьРазделительПути();
@ -109,26 +107,10 @@
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
Для Каждого ТекущийПараметр Из Объект.ПараметрыФункции Цикл
СтруктураОтбора = Новый Структура;
СтруктураОтбора.Вставить("Наименование", ТекущийПараметр.Наименование);
ДанныеПоиска = ТекущийОбъект.ПараметрыФункции.НайтиСтроки(СтруктураОтбора);
Если ДанныеПоиска.Количество() Тогда
ДанныеПоиска.Получить(0).ТипПараметра = Новый ХранилищеЗначения(ТекущийПараметр.фТипПараметра);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
ПрочитатьТипыПараметров(ТекущийОбъект);
ПрочитатьТипыИЗначенияПараметров(ТекущийОбъект, Истина);
КонецПроцедуры
@ -146,6 +128,31 @@
СохранитьКаталогИсходногоКодаКонфигурации(КаталогИсходногоКодаКонфигурации);
КонецЕсли;
СохранитьПараметрыФункции();
КонецПроцедуры
&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
Если ЗавершениеРаботы Тогда
Возврат;
КонецЕсли;
УдалениеДанныхИзВременногоХранилища();
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
Если ИсточникВыбора.ИмяФормы = "Справочник.__ПользовательскиеФункции.Форма.ФормаТаблицыЗначений"
Или ИсточникВыбора.ИмяФормы = "Справочник.__ПользовательскиеФункции.Форма.ФормаСтруктуры"
Или ИсточникВыбора.ИмяФормы = "Справочник.__ПользовательскиеФункции.Форма.ФормаМассива" Тогда
текДанные = Элементы.ПараметрыФункции.ТекущиеДанные;
текДанные.АдресЗначения = ВыбранноеЗначение.Адрес;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
@ -196,6 +203,7 @@
Если НоваяСтрока Тогда
ТекущиеДанные.Наименование = СтрШаблон("П%1", Строка(ТекущиеДанные.НомерСтроки));
ТекущиеДанные.Идентификатор = Новый УникальныйИдентификатор;
КонецЕсли;
КонецПроцедуры
@ -203,14 +211,69 @@
&НаКлиенте
Процедура ПараметрыФункцииПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
ПолучитьНазваниеПодпрограммыСПараметрамиСервер();
ПолучитьНазваниеПодпрограммыСПараметрамиСервер(Истина);
КонецПроцедуры
&НаКлиенте
Процедура ПараметрыФункцииПослеУдаления(Элемент)
ПолучитьНазваниеПодпрограммыСПараметрамиСервер();
ПолучитьНазваниеПодпрограммыСПараметрамиСервер(Истина);
КонецПроцедуры
&НаКлиенте
Асинх Процедура ПараметрыФункцииТипВФормеНачалоВыбора(Элемент, ДанныеВыбора, ВыборДобавлением, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ЗаголовокЭлемента = НСтр("ru = 'Редактирование типа данных'");
ВыбранныйЭлемент = Ждать СписокТипов.ВыбратьЭлементАсинх(ЗаголовокЭлемента);
Если ВыбранныйЭлемент = Неопределено Тогда
Возврат;
КонецЕсли;
ТекДанные = Элементы.ПараметрыФункции.ТекущиеДанные;
Если ВыбранныйЭлемент.Значение = "ТаблицаЗначений"
Или ВыбранныйЭлемент.Значение = "Массив"
Или ВыбранныйЭлемент.Значение = "Структура" Тогда
ТекДанные.Тип = ВыбранныйЭлемент.Значение;
ТекДанные.ТипВФорме = ВыбранныйЭлемент.Представление;
// Доработать, отражение количество элементов в коллекции, условное оформление - цвет текста, запрет изменения
ТекДанные.ЗначениеВФорме = ВыбранныйЭлемент.Представление;
Иначе
ИнициализацияТипаИЗначенияПараметра(ТекДанные, ВыбранныйЭлемент);
КонецЕсли;
Модифицированность = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ПараметрыФункцииЗначениеВФормеНачалоВыбора(Элемент, ДанныеВыбора, ВыборДобавлением, СтандартнаяОбработка)
ТекДанные = Элементы.ПараметрыФункции.ТекущиеДанные;
Тип = ТекДанные.Тип;
Если Тип = "ТаблицаЗначений" Тогда
Путь = КлючОбъекта("ФормаТаблицыЗначений");
ИначеЕсли Тип = "Структура" Тогда
Путь = КлючОбъекта("ФормаСтруктуры");
ИначеЕсли Тип = "Массив" Тогда
Путь = КлючОбъекта("ФормаМассива");
Иначе
Возврат;
КонецЕсли;
ПараметрыФормы = Новый Структура;
Если ЗначениеЗаполнено(текДанные.АдресЗначения) Тогда
ПараметрыФормы.Вставить("АдресЗначения", текДанные.АдресЗначения);
КонецЕсли;
ОткрытьФорму(Путь, ПараметрыФормы, ЭтотОбъект);
КонецПроцедуры
@ -286,29 +349,6 @@
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьОписание(Команда)
Обработчик = Новый ОписаниеОповещения("ДобавитьОписаниеЗавершение", ЭтотОбъект);
ПоказатьВводСтроки(Обработчик, Объект.Описание, НСтр("ru='Описание подпрограммы';en='description of routines'"),, Истина);
КонецПроцедуры
//Обработчик оповещения "ДобавитьОписаниеЗавершение".
//
// Параметры:
// Текст - Строка.
// ПараметрыИсточника - Структура.
//
&НаКлиенте
Процедура ДобавитьОписаниеЗавершение(Текст, ПараметрыИсточника) Экспорт
Если Текст <> Неопределено Тогда
Объект.Описание = Текст;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВставитьЗапрос(Команда)
@ -316,41 +356,11 @@
КонецПроцедуры
&НаКлиенте
Процедура ЗадатьПараметры(Команда)
СтруктураТаблиц = Новый Структура;
УпаковатьТаблицу("ПараметрыФункции",СтруктураТаблиц);
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ПараметрыФункции", СтруктураТаблиц.ПараметрыФункции);
ПараметрыФормы.Вставить("ЗначенияПараметров", мЗначенияПараметров);
ОткрытьФорму("Справочник.__ПользовательскиеФункции.Форма.ФормаПараметров", ПараметрыФормы, ЭтотОбъект,,,,
Новый ОписаниеОповещения("ЗадатьПараметрыЗавершение", ЭтотОбъект), РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс);
КонецПроцедуры
// Обработчик оповещения "ЗадатьПараметрыЗавершение".
//
// Параметры:
// НаборПараметров - Структура.
// Параметры - Структура.
//
&НаКлиенте
Процедура ЗадатьПараметрыЗавершение(НаборПараметров, Параметры) Экспорт
Если Не НаборПараметров = Неопределено Тогда
мЗначенияПараметров = НаборПараметров;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыполнитьКод(Команда)
ОбновитьИсполняемыйКод();
ВыполнитьКодСервер(мЗначенияПараметров);
ВыполнитьКодСервер();
КонецПроцедуры
@ -406,7 +416,6 @@
// При загрузке из Эксель контекст зависит от того в каком правиле пытаемся выполнить загрузку,
// в общем случае проверка невозможна.
Элементы.ВыполнитьКод.Доступность = Не флКонтекстЗагрузкаЭксель;
Элементы.ЗадатьПараметры.Доступность = Не флКонтекстЗагрузкаЭксель;
КонецПроцедуры
@ -414,57 +423,84 @@
Процедура ДобавитьПараметры()
Справочники.__ПользовательскиеФункции.ЗаполнитьПараметры(Объект);
ПолучитьНазваниеПодпрограммыСПараметрамиСервер();
ПолучитьНазваниеПодпрограммыСПараметрамиСервер(Истина);
КонецПроцедуры // ДобавитьПараметры()
&НаСервере
Процедура ПолучитьНазваниеПодпрограммыСПараметрамиСервер()
Процедура ПолучитьНазваниеПодпрограммыСПараметрамиСервер(ПараметрыИзменены = Ложь)
СтруктураЗаголовка = Справочники.__ПользовательскиеФункции.ПолучитьНазваниеПодпрограммыСПараметрами(Объект);
НазваниеПодпрограммы = СтруктураЗаголовка.НазваниеСПараметрами;
Если Не ПараметрыИзменены Тогда
Позиция = СтрНайти(НазваниеПодпрограммы, "(");
НазваниеПодпрограммы = Объект.Наименование + ?(Позиция > 0, Сред(НазваниеПодпрограммы, Позиция), "()");
Возврат;
КонецЕсли;
ЧастиИмени = Новый Массив();
ЧастиИмени.Добавить(Объект.Наименование);
ЧастиИмени.Добавить("(");
Предел = Объект.ПараметрыФункции.Количество();
Для Каждого СтрПараметр Из Объект.ПараметрыФункции Цикл
Параметр = СокрЛП(СтрПараметр.Наименование) +
?(СтрПараметр.Необязательный, " = Неопределено", "") +
?(СтрПараметр.НомерСтроки <> Предел, ", ", "");
ЧастиИмени.Добавить(Параметр);
КонецЦикла;
ЧастиИмени.Добавить(")");
НазваниеПодпрограммы = СтрСоединить(ЧастиИмени, "");
КонецПроцедуры
&НаСервере
Процедура ПрочитатьТипыПараметров(СпрОбъект)
Процедура ПрочитатьТипыИЗначенияПараметров(СпрОбъект, ПрочитатьЗначения = Ложь)
Если ПрочитатьЗначения Тогда
НастройкиПараметров = ПолучитьПараметрыФункции();
КонецЕсли;
Для Каждого ТекущийПараметр Из СпрОбъект.ПараметрыФункции Цикл
ОписаниеТипаПараметра = ТекущийПараметр.ТипПараметра.Получить();
Если ОписаниеТипаПараметра = Неопределено Тогда
Продолжить;
КонецЕсли;
СтруктураОтбора = Новый Структура;
СтруктураОтбора.Вставить("Наименование", ТекущийПараметр.Наименование);
СтруктураОтбора.Вставить("Идентификатор", ТекущийПараметр.Идентификатор);
АктивныеСтроки = Объект.ПараметрыФункции.НайтиСтроки(СтруктураОтбора);
ДанныеПоиска = Объект.ПараметрыФункции.НайтиСтроки(СтруктураОтбора);
Если Не ДанныеПоиска.Количество() = 0 Тогда
ДанныеПоиска.Получить(0).фТипПараметра = ОписаниеТипаПараметра;
Если ЗначениеЗаполнено(АктивныеСтроки) Тогда
Представление = Строка(Тип(ТекущийПараметр.Тип));
АктивныеСтроки[0].ТипВФорме = Представление;
// Доработать, отражение количество элементов в коллекции, условное оформление - цвет текста, запрет изменения
АктивныеСтроки[0].ЗначениеВФорме = Представление;
Если ПрочитатьЗначения Тогда
НастройкаПараметра = НастройкиПараметров.Получить(ТекущийПараметр.Идентификатор);
ЗначениеПараметраФункции(АктивныеСтроки[0], НастройкаПараметра);
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура УпаковатьТаблицу(ИмяТаблицы, СтрТаблиц)
Процедура ЗначениеПараметраФункции(СтрокаТаблицы, Настройка)
МассивРеквизитов = Объект[ИмяТаблицы].Выгрузить().Колонки;
ИменаРеквизитов = Новый Структура;
Для каждого Реквизит Из МассивРеквизитов Цикл
ИменаРеквизитов.Вставить(Реквизит.Имя,Реквизит.ТипЗначения);
КонецЦикла;
СтрТаблиц.Вставить(ИмяТаблицы, __ОбщегоНазначенияКлиентСервер.УпаковатьДанныеФормыКоллекция(
Объект[ИмяТаблицы], ИменаРеквизитов));
СтрТаблиц.Вставить(ИмяТаблицы + "_Колонки", ИменаРеквизитов);
Если Настройка = Неопределено Тогда
Возврат;
КонецЕсли;
Если СтрокаТаблицы.Тип = "ТаблицаЗначений"
Или СтрокаТаблицы.Тип = "Структура"
Или СтрокаТаблицы.Тип = "Массив" Тогда
Если ТипЗнч(Настройка.Значение) <> Тип("Строка") Тогда
СтрокаТаблицы.АдресЗначения = ПоместитьВоВременноеХранилище(Настройка.Значение, Новый УникальныйИдентификатор);
КонецЕсли;
СтрокаТаблицы.ЗначениеВФорме = СтрокаТаблицы.ТипВФорме;
Иначе
СтрокаТаблицы.ЗначениеВФорме = Настройка.Значение;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ВыполнитьКодСервер(ЗначенияПараметров)
Процедура ВыполнитьКодСервер()
СтрПеременные = Новый Структура;
@ -479,13 +515,15 @@
ТабПараметров.Колонки.Добавить("Параметр");
ТабПараметров.Колонки.Добавить("Значение");
Ном = 1;
Для Каждого КлючЗначение Из ЗначенияПараметров Цикл
ЗначенияПараметровФункции = ПолучитьПараметрыФункции();
Для Каждого Стр Из Объект.ПараметрыФункции Цикл
НоваяСтрока = ТабПараметров.Добавить();
НоваяСтрока.Номер = Ном;
НоваяСтрока.Параметр = КлючЗначение.Ключ;
НоваяСтрока.Значение = КлючЗначение.Значение;
Ном = Ном + 1;
НоваяСтрока.Номер = Стр.НомерСтроки;
НоваяСтрока.Параметр = Стр.Наименование;
Значение = ЗначенияПараметровФункции.Получить(Стр.Идентификатор);
Если ЗначениеЗаполнено(Значение) Тогда
НоваяСтрока.Значение = Значение.Значение;
КонецЕсли;
КонецЦикла;
// Чтобы текст функции не изменился сформируем его копию.
@ -565,7 +603,7 @@
ПараметрыФормы.Вставить("Переменные", СписокПеременных);
ОткрытьФорму("Справочник.__ПользовательскиеФункции.Форма.УсловныйОператор", ПараметрыФормы, ЭтотОбъект,,,,
ОткрытьФорму(КлючОбъекта("УсловныйОператор"), ПараметрыФормы, ЭтотОбъект,,,,
Новый ОписаниеОповещения("ОткрытьКонструкторУсловногоВыраженияЗавершение", ЭтотОбъект));
КонецПроцедуры
@ -600,13 +638,13 @@
Процедура СохранитьКаталогИсходногоКодаКонфигурации(Каталог)
__ОбщегоНазначенияСлужебный.ХранилищеОбщихНастроекСохранить(КлючОбъекта(),
"__ПользовательскиеФункции_КаталогИсхКода", Каталог);
"__ПользовательскиеФункции_КаталогИсхКода", Каталог);
КонецПроцедуры
&НаСервере
Функция КлючОбъекта()
Возврат "Справочник.__ПользовательскиеФункции.Форма.ФормаЭлемента";
&НаСервереБезКонтекста
Функция КлючОбъекта(Знач ИмяФормы = "ФормаЭлемента")
Возврат "Справочник.__ПользовательскиеФункции.Форма." + ИмяФормы;
КонецФункции
#Область ОбработчикиСобытийПоляРедактора
@ -1956,4 +1994,99 @@
#КонецОбласти
#Область РаботаСПараметрами
&НаКлиенте
Процедура ИнициализацияТипаИЗначенияПараметра(ТекущийПараметр, ТекущийТип)
// Тип в табличной части.
ТекущийПараметр.Тип = ТипСтрока(ТекущийТип.Значение);
// Тип в форме.
Массив = Новый Массив;
Массив.Добавить(Тип(ТекущийПараметр.Тип));
Описание = Новый ОписаниеТипов(Массив);
ТекущийПараметр.ТипВФорме = ТекущийТип.Представление;
// Значение в форме.
Значение = Описание.ПривестиЗначение(Тип(ТекущийТип.Значение));
ТекущийПараметр.ЗначениеВФорме = Значение;
КонецПроцедуры
// Возвращает строковое представление типа.
// Например, для ссылки справочника возвращает "CatalogRef.ИмяСправочника".
//
&НаСервереБезКонтекста
Функция ТипСтрока(Знач Значение)
СписокДобавленныхТипов = Справочники.__ПользовательскиеФункции.СформироватьСписокТипов();
ТипСтрока = Строка(Тип(Значение));
Если Значение = "СписокЗначений" Тогда
Возврат "СписокЗначений";
КонецЕсли;
ТипНайден = Ложь;
Для Каждого ЭлементСписка Из СписокДобавленныхТипов Цикл
Если ЭлементСписка.Представление = ТипСтрока Тогда
ТипНайден = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
Если Не ТипНайден Тогда
ТипСтрока = XMLТип(Тип(Значение)).ИмяТипа;
КонецЕсли;
Возврат ТипСтрока;
КонецФункции
&НаСервере
Процедура УдалениеДанныхИзВременногоХранилища()
Для Каждого Параметр Из Объект.ПараметрыФункции Цикл
Если ЗначениеЗаполнено(Параметр.АдресЗначения) Тогда
УдалитьИзВременногоХранилища(Параметр.АдресЗначения);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура СохранитьПараметрыФункции()
НастройкиПараметров = ПолучитьПараметрыФункции();
// ключ - Идентификатор параметра, значение - Структура("Тип,Значение")
Данные = Новый Соответствие;
Для Каждого Параметр Из Объект.ПараметрыФункции Цикл
ОписаниеПараметра = Новый Структура;
ОписаниеПараметра.Вставить("Имя", Параметр.Наименование);
ОписаниеПараметра.Вставить("Тип", Параметр.Тип);
// Берем значение с формы только для типов не требующих преобразования
Значение = Параметр.ЗначениеВФорме;
Если ЗначениеЗаполнено(Параметр.АдресЗначения) Тогда
Значение = ПолучитьИзВременногоХранилища(Параметр.АдресЗначения);
УдалитьИзВременногоХранилища(Параметр.АдресЗначения);
КонецЕсли;
ОписаниеПараметра.Вставить("Значение", Значение);
Данные.Вставить(Параметр.Идентификатор, ОписаниеПараметра);
КонецЦикла;
__ОбщегоНазначенияСлужебный.ХранилищеОбщихНастроекСохранить(КлючОбъекта(),
"__ПользовательскиеФункции_ПараметрыФункции", Данные);
КонецПроцедуры
&НаСервере
Функция ПолучитьПараметрыФункции()
Возврат __ОбщегоНазначенияСлужебный.ХранилищеОбщихНастроекЗагрузить(КлючОбъекта(),
"__ПользовательскиеФункции_ПараметрыФункции", Новый Соответствие);
КонецФункции
#КонецОбласти
#КонецОбласти

View File

@ -294,6 +294,35 @@
КонецПроцедуры
// Аналог метода БСП. Возвращает признак того, что переданное значение является, либо не является, числом.
//
// Параметры:
// ПроверяемоеЗначение - Строка - значение, которое проверяется на соответствие числу.
//
// Возвращаемое значение:
// Булево - признак того, что переданное значение является, либо не является, числом.
//
Функция ЭтоЧисло(Знач ПроверяемоеЗначение) Экспорт
Если ПроверяемоеЗначение = "0" Тогда
Возврат Истина;
КонецЕсли;
ОписаниеЧисла = Новый ОписаниеТипов("Число");
Возврат ОписаниеЧисла.ПривестиЗначение(ПроверяемоеЗначение) <> 0;
КонецФункции
#КонецОбласти
#Область СлужебныйПрограммныйИнтерфейс
Процедура УдалитьНедопустимыеСимволы(Строка) Экспорт
НедопустимыеСимволы = """'`/\[]{}:;|-=?*<>,.()+#№@!%^&~«»";
Строка = СтрСоединить(СтрРазделить(Строка, НедопустимыеСимволы, Истина));
КонецПроцедуры
#КонецОбласти
#КонецОбласти

View File

@ -1215,6 +1215,29 @@
КонецПроцедуры
// Аналог метода БСП. Удаляет настройку из хранилища общих настроек, как метод платформы Удалить,
// объектов СтандартноеХранилищеНастроекМенеджер или ХранилищеНастроекМенеджер.<Имя хранилища>,
// но с поддержкой длины ключа настроек более 128 символов путем хеширования части,
// которая превышает 96 символов.
// Если нет права СохранениеДанныхПользователя, удаление пропускается без ошибки.
//
// Параметры:
// КлючОбъекта - Строка
// - Неопределено - см. синтакс-помощник платформы.
// КлючНастроек - Строка
// - Неопределено - см. синтакс-помощник платформы.
// ИмяПользователя - Строка
// - Неопределено - см. синтакс-помощник платформы.
//
Процедура ХранилищеОбщихНастроекУдалить(КлючОбъекта, КлючНастроек, ИмяПользователя) Экспорт
ХранилищеУдалить(ХранилищеОбщихНастроек,
КлючОбъекта,
КлючНастроек,
ИмяПользователя);
КонецПроцедуры
#КонецОбласти
// Аналог метода БСП. Пока заглушка, см. ОбщегоНазначения.ПриНачалеВыполненияРегламентногоЗадания
@ -2211,6 +2234,16 @@
КонецФункции
// Аналог метода БСП.
//
Процедура ХранилищеУдалить(МенеджерХранилища, КлючОбъекта, КлючНастроек, ИмяПользователя)
Если ПравоДоступа("СохранениеДанныхПользователя", Метаданные) Тогда
МенеджерХранилища.Удалить(КлючОбъекта, КлючНастроек(КлючНастроек), ИмяПользователя);
КонецЕсли;
КонецПроцедуры
// Аналог метода БСП. Возвращает строку ключа настроек, не превышающую допустимую длину 128 символов.
// Если указанная строка превышает 128, тогда вместо символов сверх 96 символов
// добавляется их хеш-сумма по алгоритму MD5 размером 32 символа.

View File

@ -80,6 +80,14 @@
КонецФункции
// См. __ОбщегоНазначенияСервер.ХранилищеОбщихНастроекУдалить.
Процедура ХранилищеОбщихНастроекУдалить(КлючОбъекта, КлючНастроек, ИмяПользователя = Неопределено) Экспорт
Модуль = ПолучитьМодуль();
Модуль.ХранилищеОбщихНастроекУдалить(КлючОбъекта, КлючНастроек, ИмяПользователя);
КонецПроцедуры
// См. __ОбщегоНазначенияСервер.ПриНачалеВыполненияРегламентногоЗадания.
Процедура ПриНачалеВыполненияРегламентногоЗадания(РегламентноеЗадание = Неопределено) Экспорт

View File

@ -97,6 +97,14 @@
КонецПроцедуры
// См. __ОбщегоНазначенияСлужебныйКлиентСервер.ЭтоЧисло.
Функция ЭтоЧисло(Знач ПроверяемоеЗначение) Экспорт
Модуль = ПолучитьМодуль();
Возврат Модуль.ЭтоЧисло(ПроверяемоеЗначение);
КонецФункции
#КонецОбласти
#КонецОбласти
@ -138,9 +146,17 @@
#КонецОбласти
Функция ПолучитьМодуль()
Возврат __ОбщегоНазначенияВызовСервера.ОбщийМодуль(
"ОбщегоНазначенияКлиентСервер",
"__ОбщегоНазначенияКлиентСервер");
#Если Клиент Тогда
Возврат __ОбщегоНазначенияКлиент.ОбщийМодуль(
"ОбщегоНазначенияКлиентСервер",
"__ОбщегоНазначенияКлиентСервер");
#Иначе
Возврат __ОбщегоНазначенияВызовСервера.ОбщийМодуль(
"ОбщегоНазначенияКлиентСервер",
"__ОбщегоНазначенияКлиентСервер");
#КонецЕсли
КонецФункции
#КонецОбласти

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="6980971c-f5f9-4e8c-9e7f-05a6cf21ab7c">
<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>true</ClientOrdinaryApplication>
<ServerCall>false</ServerCall>
<Privileged>false</Privileged>
<ReturnValuesReuse>DuringSession</ReturnValuesReuse>
</Properties>
</CommonModule>
</MetaDataObject>

View File

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

@ -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="c724f4aa-23a0-42b1-99fb-4cfc23ecd5af">
<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,43 @@
// Библиотека проектных подсистем для упрощения разработки архитектуры на 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

@ -54,9 +54,17 @@
#Область СлужебныеПроцедурыИФункции
Функция ПолучитьМодуль()
Возврат __ОбщегоНазначенияВызовСервера.ОбщийМодуль(
"СтроковыеФункцииКлиентСервер",
"__СтроковыеФункцииКлиентСервер");
#Если Клиент Тогда
Возврат __ОбщегоНазначенияКлиент.ОбщийМодуль(
"СтроковыеФункцииКлиентСервер",
"__СтроковыеФункцииКлиентСервер");
#Иначе
Возврат __ОбщегоНазначенияВызовСервера.ОбщийМодуль(
"СтроковыеФункцииКлиентСервер",
"__СтроковыеФункцииКлиентСервер");
#КонецЕсли
КонецФункции
#КонецОбласти

View File

@ -310,6 +310,8 @@
<CommonModule>__СправочникиПередЗаписью</CommonModule>
<CommonModule>__СправочникиПриЗаписи</CommonModule>
<CommonModule>__СправочникиПриКопировании</CommonModule>
<CommonModule>__СтандартныеПодсистемыПовтИсп</CommonModule>
<CommonModule>__СтандартныеПодсистемыСлужебныйПовтИсп</CommonModule>
<CommonModule>__СтроковыеФункцииКлиентСервер</CommonModule>
<CommonModule>__СтроковыеФункцииСлужебныйКлиентСервер</CommonModule>
<CommonModule>__СхемыЗапросов</CommonModule>

View File

@ -32,7 +32,6 @@
<xr:Item xsi:type="xr:MDObjectRef">CommonModule.__СтроковыеФункцииКлиентСервер</xr:Item>
<xr:Item xsi:type="xr:MDObjectRef">CommonModule.__ОбщегоНазначенияКлиентСервер</xr:Item>
<xr:Item xsi:type="xr:MDObjectRef">CommonForm.__ФормаВыбораПоля</xr:Item>
<xr:Item xsi:type="xr:MDObjectRef">Catalog.__НастройкиОтбораОбъектов</xr:Item>
</Content>
</Properties>
<ChildObjects/>