+ доп функции
This commit is contained in:
parent
29d5d1769f
commit
bb635b5074
@ -1,11 +1,11 @@
|
||||
|
||||
&НаСервере
|
||||
Перем Кеш;
|
||||
|
||||
&НаСервере
|
||||
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
|
||||
//УИ_ОбщегоНазначения.ФормаИнструментаПриСозданииНаСервере(ЭтотОбъект, Отказ, СтандартнаяОбработка);
|
||||
КонецПроцедуры
|
||||
|
||||
|
||||
&НаСервере
|
||||
Функция СтрокуВДату(СтрокаДата)
|
||||
Попытка
|
||||
@ -447,10 +447,225 @@
|
||||
ОткрытьФорму("ВнешняяОбработка.ИнформацияОЛицензиях1С.Форма.ФормаАктивацииЛицензии", ПараметрыОткрытия);
|
||||
КонецПроцедуры
|
||||
|
||||
#Область Кеш
|
||||
Функция Кеш_Установить(Ключ, Значение)
|
||||
Если Неопределено = Кеш Тогда
|
||||
Кеш = Новый Соответствие;
|
||||
КонецЕсли;
|
||||
Кеш[Ключ] = Значение;
|
||||
Возврат Значение;
|
||||
КонецФункции
|
||||
|
||||
Функция Кеш_Получить(Ключ)
|
||||
Результат = Неопределено;
|
||||
Если НЕ Неопределено = Кеш Тогда
|
||||
Результат = Кеш.Получить(Ключ);
|
||||
КонецЕсли;
|
||||
Возврат Результат;
|
||||
КонецФункции
|
||||
#КонецОбласти
|
||||
|
||||
#Область Функциональщина
|
||||
&НаКлиентеНаСервереБезКонтекста
|
||||
Функция ВыполнитьФрагмент(Знач Код, Вход, ИмяВход = "Вход", ИмяВыход = "Выход", Инициализировать = Ложь, _ = Неопределено)
|
||||
Выход = ?(Инициализировать, Вход, Неопределено);
|
||||
|
||||
Если НЕ "Вход" = ИмяВход Тогда
|
||||
Код = СтрШаблон("%1=Вход;%2", ИмяВход, Код);
|
||||
КонецЕсли;
|
||||
Если НЕ "Выход" = ИмяВыход Тогда
|
||||
Код = СтрШаблон("%1;Выход=%2", Код, ИмяВыход);
|
||||
КонецЕсли;
|
||||
|
||||
Выполнить(Код);
|
||||
|
||||
Возврат Выход;
|
||||
КонецФункции
|
||||
&НаКлиентеНаСервереБезКонтекста
|
||||
Функция Мап(Код, Коллекция, _ = Неопределено)
|
||||
Результат = Новый Массив;
|
||||
|
||||
Для Каждого Элемент Из Коллекция Цикл
|
||||
НовыйЭлемент = ВыполнитьФрагмент(Код, Элемент, "Элемент", "Результат", Истина, _);
|
||||
Результат.Добавить(НовыйЭлемент);
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Результат;
|
||||
КонецФункции
|
||||
&НаКлиентеНаСервереБезКонтекста
|
||||
Функция Фильтр(КодУсловия, Коллекция, _ = Неопределено)
|
||||
Результат = Новый Массив;
|
||||
|
||||
Для Каждого Элемент Из Коллекция Цикл
|
||||
Условие = ВыполнитьФрагмент(КодУсловия, Элемент, "Элемент", "Условие", , _);
|
||||
Если Условие Тогда
|
||||
Результат.Добавить(Элемент);
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Результат;
|
||||
КонецФункции
|
||||
&НаКлиентеНаСервереБезКонтекста
|
||||
Функция ВыполнитьФрагмент_ДляСвертки(Знач Код, Элемент, Знач Результат, _ = Неопределено)
|
||||
Выполнить(Код);
|
||||
Возврат Результат;
|
||||
КонецФункции
|
||||
&НаКлиентеНаСервереБезКонтекста
|
||||
Функция Свернуть(Код, Коллекция, Знач Результат = Неопределено, _ = Неопределено)
|
||||
Для Каждого Элемент Из Коллекция Цикл
|
||||
Результат = ВыполнитьФрагмент_ДляСвертки(Код, Элемент, Результат, _);
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Результат;
|
||||
КонецФункции
|
||||
&НаКлиентеНаСервереБезКонтекста
|
||||
Функция ВзятьНеБольше(Коллекция, Знач Количество)
|
||||
Результат = Новый Массив;
|
||||
Для Каждого ТекСтр Из Коллекция Цикл
|
||||
Если 1 > Количество Тогда
|
||||
Прервать;
|
||||
КонецЕсли;
|
||||
|
||||
Результат.Добавить(ТекСтр);
|
||||
|
||||
Количество = Количество - 1;
|
||||
КонецЦикла;
|
||||
Возврат Результат;
|
||||
КонецФункции
|
||||
&НаКлиентеНаСервереБезКонтекста
|
||||
Функция Пропустить(Коллекция, Знач Количество)
|
||||
Результат = Новый Массив;
|
||||
Для Каждого ТекСтр Из Коллекция Цикл
|
||||
Если 0 < Количество Тогда
|
||||
Количество = Количество - 1;
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
Результат.Добавить(ТекСтр);
|
||||
КонецЦикла;
|
||||
Возврат Результат;
|
||||
КонецФункции
|
||||
&НаКлиентеНаСервереБезКонтекста
|
||||
Функция Обратить(Знач Коллекция)
|
||||
Если 0 = Коллекция.Количество() Тогда
|
||||
Возврат Коллекция;
|
||||
КонецЕсли;
|
||||
Результат = Новый Массив;
|
||||
Для Смещение = 1 По Коллекция.Количество() Цикл
|
||||
ТекИндекс = Коллекция.Количество() - Смещение;
|
||||
Результат.Добавить(Коллекция[ТекИндекс]);
|
||||
КонецЦикла;
|
||||
Возврат Результат;
|
||||
КонецФункции
|
||||
&НаКлиентеНаСервереБезКонтекста
|
||||
Функция Ключи(Знач КоллекцияКЗ)
|
||||
Возврат Мап("Результат = Элемент.Ключ", КоллекцияКЗ);
|
||||
КонецФункции
|
||||
&НаКлиентеНаСервереБезКонтекста
|
||||
Функция Значения(Знач КоллекцияКЗ)
|
||||
Возврат Мап("Результат = Элемент.Значение", КоллекцияКЗ);
|
||||
КонецФункции
|
||||
&НаКлиентеНаСервереБезКонтекста
|
||||
Функция СимволыВСтроке(Знач Стр)
|
||||
Результат = Новый Массив;
|
||||
Для Сч = 1 По СтрДлина(Стр) Цикл
|
||||
Результат.Добавить(Сред(Стр, Сч, 1));
|
||||
КонецЦикла;
|
||||
Возврат Результат;
|
||||
КонецФункции
|
||||
&НаКлиентеНаСервереБезКонтекста
|
||||
Функция МассивПоДиапазонуЧисел(Число_С, Число_По)
|
||||
Результат = Новый Массив;
|
||||
Для ТекЧисло = Число_С По Число_По Цикл
|
||||
Результат.Добавить(ТекЧисло);
|
||||
КонецЦикла;
|
||||
Возврат Результат;
|
||||
КонецФункции
|
||||
&НаКлиентеНаСервереБезКонтекста
|
||||
Функция ЭтоКоллекция(ЧтоТо)
|
||||
Результат = Ложь;
|
||||
Если Неопределено = ЧтоТо Тогда
|
||||
Возврат Результат;
|
||||
КонецЕсли;
|
||||
|
||||
Попытка
|
||||
Для Каждого ТекСтр Из ЧтоТо Цикл
|
||||
Прервать;
|
||||
КонецЦикла;
|
||||
Результат = Истина;
|
||||
Исключение
|
||||
;
|
||||
КонецПопытки;
|
||||
Возврат Результат;
|
||||
КонецФункции
|
||||
&НаКлиентеНаСервереБезКонтекста
|
||||
Функция Транспонировать(МассивМассивов)
|
||||
// аналог zip || транспонирует двумерный массив
|
||||
Результат = Новый Массив;
|
||||
МинКоличество = Неопределено;
|
||||
|
||||
Для Каждого ТекМассив Из МассивМассивов Цикл
|
||||
Если Неопределено = МинКоличество Тогда
|
||||
МинКоличество = ТекМассив.Количество();
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
МинКоличество = Мин(МинКоличество, ТекМассив.Количество());
|
||||
КонецЦикла;
|
||||
|
||||
Если 0 = МинКоличество Тогда
|
||||
Возврат Результат;
|
||||
КонецЕсли;
|
||||
|
||||
Для Индекс = 0 По МинКоличество - 1 Цикл
|
||||
Элемент = Новый Массив;
|
||||
|
||||
Для Каждого ТекМассив Из МассивМассивов Цикл
|
||||
Элемент.Добавить(ТекМассив[Индекс]);
|
||||
КонецЦикла;
|
||||
|
||||
Результат.Добавить(Элемент);
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Результат;
|
||||
КонецФункции
|
||||
&НаКлиентеНаСервереБезКонтекста
|
||||
Функция ОбходДерева(Дерево, Знач КодСтроки = "", Знач ВШирину = Ложь)
|
||||
Результат = Новый Массив;
|
||||
|
||||
Очередь = Новый Массив;
|
||||
Очередь.Добавить(Дерево);
|
||||
Пока Очередь.Количество() > 0 Цикл
|
||||
Индекс_Следующий = ?(ВШирину, 0, Очередь.ВГраница());
|
||||
Узел = Очередь.Получить(Индекс_Следующий);
|
||||
Очередь.Удалить(Индекс_Следующий);
|
||||
|
||||
Результат.Добавить(Узел);
|
||||
|
||||
Строки = Неопределено;
|
||||
// для массива массивов не нужно определять свойство где лежат строки
|
||||
Если ПустаяСтрока(КодСтроки) Тогда
|
||||
Строки = Узел;
|
||||
Иначе
|
||||
Строки = Вычислить(КодСтроки);
|
||||
КонецЕсли;
|
||||
|
||||
Если НЕ ЭтоКоллекция(Строки) Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
Для Каждого ТекСтр Из Строки Цикл
|
||||
Очередь.Добавить(ТекСтр);
|
||||
КонецЦикла;
|
||||
КонецЦикла;
|
||||
Возврат Результат;
|
||||
КонецФункции
|
||||
#КонецОбласти
|
||||
|
||||
|
||||
&НаКлиентеНаСервереБезКонтекста
|
||||
Функция SPS_ЭтоWindows()
|
||||
СистемнаяИнформация = Новый СистемнаяИнформация;
|
||||
Возврат СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Windows_x86
|
||||
Возврат СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Windows_x86
|
||||
Или СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Windows_x86_64;
|
||||
КонецФункции
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user