Это обновление публикации от автора rayastar (Марат Настоящий) в двух частях
Обзор полезных методов БСП 3.1.4. Часть 1
Обзор полезных методов БСП 3.1.4. Часть 2
Мега полезная статья, однако была создана несколько лет назад, и с тех пор актуальная версия БСП уже 3.1.10. Автор не отвечает на сообщения, поэтому я решил воспроизвести удачную и понятную структуру его статей. Исследуемая версия БСП 3.1.9, так как 3.1.10 только вышла и есть только в самых последних версиях типовых конфигураций.
Цифра перед строкой означает количество использований в конфигурации и сверху расположены самые используемые разделы. Внутри разделов сортировка иногда нарушена для группировки функций по смыслу.
Часть 1. Базовая функциональность
Разбивает строку на несколько строк по указанному разделителю. Разделитель может иметь любую длину. В случаях, когда разделителем является строка из одного символа, и не используется параметр СокращатьНепечатаемыеСимволы, рекомендуется использовать функцию платформы СтрРазделить.
Поля = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ПоляГруппировкиСтрокой, ",", Истина, Истина);
Проверяет, содержит ли строка только цифры или пустая.
Результат = СтроковыеФункцииКлиентСервер.ТолькоЦифрыВСтроке("0123"); // Истина
ПробелыЗапрещены = Ложь;
Результат = СтроковыеФункцииКлиентСервер.ТолькоЦифрыВСтроке("01 2 3",, ПробелыЗапрещены); // Истина
Преобразует исходную строку в число без вызова исключений.
"10", "+10", "010", вернет 10;
"(10)", "-10", вернет -10;
"10,2", "10.2", вернет 10.2;
"000", " ", "", вернет 0;
"10текст", вернет Неопределено
СтроковыеФункцииКлиентСервер.СтрокаВЧисло("1234,12"); // 1234.12
Дополняет строку символами слева или справа до заданной длины и возвращает ее.
При этом удаляются незначащие символы слева и справа (подробнее про незначащие символы
см. синтакс-помощник к методу платформы СокрЛП).
По умолчанию функция дополняет строку символами "0" (ноль) слева.
Результат = СтроковыеФункцииКлиентСервер.ДополнитьСтроку("1234", 10, "0", "Слева");
// Возвращает: "0000001234".
Результат = СтроковыеФункцииКлиентСервер.ДополнитьСтроку(" 1234 ", 10, "#", "Справа");
// Строка = " 1234 "; ДлинаСтроки = 10; Символ = "#"; Режим = "Справа"
// Возвращает: "1234######".
Формирует представление числа для определенного языка и параметров числа.
Строка = СтроковыеФункцииКлиентСервер.СтрокаСЧисломДляЛюбогоЯзыка(
НСтр("ru=';остался %1 день;;осталось %1 дня;осталось %1 дней;осталось %1 дня';
|en=';%1 day left;;;;%1 days left'"),
0.05,, "ЧДЦ=1");
Заменяет в шаблоне строки имена параметров на их значения. Параметры в строке выделяются с двух сторон квадратными скобками.
Значения = Новый Структура("Фамилия, Имя", "Петров", "Иван");
Результат = СтроковыеФункцииКлиентСервер.ВставитьПараметрыВСтроку("Привет, [Имя] [Фамилия].", Значения);
// - возвращает: "Привет, Иван Петров".
Форматирует строку в соответствии с заданным шаблоном с использованием html-тегов. Возвращает объект типа ФорматированнаяСтрока, которая используется для хранения и отображения строк с оформлением.
В качестве оформления могут использоваться:
- цвет текста,
- цвет фона,
- шрифт текста,
- картинки,
- гиперссылки.
Предусмотрено две одноименных функции: СтроковыеФункции.ФорматированнаяСтрока для вызова с сервера СтроковыеФункцииКлиент.ФорматированнаяСтрока для вызова с клиента
СтроковыеФункцииКлиент.ФорматированнаяСтрока(НСтр("ru='
<span style=""color: ЗаблокированныйРеквизитЦвет; font: ВажнаяНадписьШрифт"">Минимальная</span> версия программы <b>1.1</b>.
<a href = ""Обновление"">Обновите</a> программу.'"));
СтроковыеФункцииКлиент.ФорматированнаяСтрока(НСтр("ru='Режим: <img src="?_=1720191071"РедактироватьВДиалоге"">
<a style=""color: ИзмененноеЗначениеРеквизитаЦвет; background-color: ИзмененноеЗначениеРеквизитаФон""
href=""e1cib/command/Обработка.Редактор"">Редактирование</a>'"));
СтроковыеФункции.ФорматированнаяСтрока(НСтр("ru='Текущая дата <img src="?_=1720191071"Календарь"">
<span style=""font:ВажнаяНадписьШрифт"">%1</span>'"), ТекущаяДатаСеанса());
Преобразует исходную строку в дату.
Если дату не удалось распознать, то возвращается пустая дата (01.01.01 00:00:00).
Формат даты должен быть в виде "ДД.ММ.ГГГГ" или "ДД/ММ/ГГ" или "ДД-ММ-ГГ ЧЧ:ММ:CC",
Например, "23.02.1980" или "23/02/80 09:15:45"
ДатаНачала = СтроковыеФункцииКлиентСервер.СтрокаВДату(ДатаСтрокой);
Удаляет из строки указанное количество символов справа.
ГодыПредставление = "2024 г";
СтроковыеФункцииКлиентСервер.УдалитьПоследнийСимволВСтроке(ГодыПредставление, 2);
Проверяет, является ли строка уникальным идентификатором.
В качестве уникального идентификатора предполагается строка вида
"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", где X = [0..9,a..f].
ЭтоУИД = СтроковыеФункцииКлиентСервер.ЭтоУникальныйИдентификатор(ЗначениеИдентификатора);
Преобразует исходную строку в транслит.
Может использоваться для отправки SMS-сообщений латиницей или для сохранения файлов и папок, чтобы обеспечить возможность их переноса между разными операционными системами.
Обратное преобразование из латинских символов не предусмотрено.
Предусмотрено две одноименных функции: СтроковыеФункции.СтрокаЛатиницей для вызова с сервера СтроковыеФункцииКлиент.СтрокаЛатиницей для вызова с клиента
Результат = СтроковыеФункции.СтрокаЛатиницей(Значение);
Результат = СтроковыеФункцииКлиент.СтрокаЛатиницей(Значение)
Выполняет замену символов в строке.
Предназначена для простых случаев - например, для замены латиницы на похожие кириллические символы.
НовСтрока = СтроковыеФункцииКлиентСервер.ЗаменитьОдниСимволыДругими("ё", НаименованиеДляСловаря, "е");
Разбивает строку на несколько строк, используя заданный набор разделителей. Если параметр РазделителиСлов не задан, то разделителем слов считается любой из символов, не относящихся к символам латиницы, кириллицы, цифры, подчеркивания.
// возвратит массив значений: "один", "два2_", "три"
СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивСлов("один-@#два2_!три");
// возвратит массив значений: "один-", "два2", "три"
СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивСлов("один-@#два2_!три", "#@!_");
// возвратит массив значений: "один-", "#два2", "три"
СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивСлов("один-@#два2_!три", "@!_");
Проверяет, содержит ли строка только символы латинского алфавита и указанные допустимые символы
ТолькоНациональныеСимволы = Ложь;
РезультатПроверки = СтроковыеФункцииКлиентСервер.ТолькоЛатиницаВСтроке(ФИО, ТолькоНациональныеСимволы, ДопустимыеСимволы);
Проверяет, содержит ли строка только символы кириллического алфавита и указанные допустимые символы
ДопустимоКромеКириллицы = ".";
Регион = "Мурманская обл.";
АдресКорректный = СтроковыеФункцииКлиентСервер.ТолькоКириллицаВСтроке(
Регион,
Ложь,
ДопустимоКромеКириллицы);
Формирует строку повторяющихся символов заданной длины
Отступ = СтроковыеФункцииКлиентСервер.СформироватьСтрокуСимволов(" ", Уровень);
Получает значения параметров из строки
Результат = СтроковыеФункцииКлиентСервер.ПараметрыИзСтроки("File=""c:\InfoBases\Trade""; Usr=""Director"";""", ";");
// - вернет структуру:
// ключ "File" и значение "c:\InfoBases\Trade"
// ключ "Usr" и значение "Director".
ПутьККонфигурации = СтрокаСоединенияИнформационнойБазы();
Структура = СтроковыеФункцииКлиентСервер.ПараметрыИзСтроки(ПутьККонфигурации);
// Вернет структуру:
//Ref "base"
//Srvr "server:1860"
Удаляет крайние повторяющиеся символы слева или справа в строке.
СтроковыеФункцииКлиентСервер.УдалитьПовторяющиесяСимволы(ПрефиксОрганизации, "0");
Определяет, является ли символ разделителем. Разделителем считаются все символы, не являющиеся цифрами, латинскими и кириллическими буквами, а также знаком подчеркивания. Можно определить дополнительные символы.
// - В строке не должно быть разделителей.
ЕстьРазделители = Ложь;
Для Позиция = 1 По СтрДлина(Идентификатор) Цикл
Если СтроковыеФункцииКлиентСервер.ЭтоРазделительСлов(КодСимвола(Идентификатор, Позиция)) Тогда
ОбщегоНазначения.СообщитьПользователю("Идентификатор содержит недопустимые символы");
Прервать;
КонецЕсли;
КонецЦикла;
Выполняет преобразование арабского числа в римское.
Результат = СтроковыеФункцииКлиентСервер.ПреобразоватьЧислоВРимскуюНотацию(17); // = "XVII".
Выполняет преобразование арабского числа в римское.
Результат = СтроковыеФункцииКлиентСервер.ПреобразоватьЧислоВРимскуюНотацию(17); // = "XVII".
Выполняет преобразование римского числа в арабское.
Результат = СтроковыеФункцииКлиентСервер.ПреобразоватьЧислоВАрабскуюНотацию("XVII"); // = 17
Очищает текст в формате HTML от тегов и возвращает неформатированный текст. Также убирает скрипты и заголовки.
ТекстСодержания = СтроковыеФункцииКлиентСервер.ИзвлечьТекстИзHTML(ТекстHTML);
Подставляет параметры в строку. Число параметров в строке не ограничено. Параметры в строке задаются как %<номер параметра>. Нумерация параметров начинается с единицы.
ЗначенияПараметров = Новый Массив;
ЗначенияПараметров.Добавить("Вася");
ЗначенияПараметров.Добавить("Зоопарк");
Результат = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтрокуИзМассива("%1 пошел в %2", ЗначенияПараметров);
// - вернет строку "Вася пошел в Зоопарк".
Удаляет двойные кавычки с начала и конца строки, если они есть.
НовСтрока = СтроковыеФункцииКлиентСервер.СократитьДвойныеКавычки(Строка);
Возвращает представление периода в нижнем регистре или с заглавной буквы, если с него начинается фраза (предложение).
Например, если требуется вывести представление периода в заголовке отчета в формате "Продажи за [ДатаНачала] - [ДатаОкончания]", то ожидается, что результат будет выглядеть так: "Продажи за февраль 2020 г. - март 2020 г.". Т.е. - со строчной буквы, т.к. "февраль 2020 г. - март 2020 г." не является началом предложения.
КнопкаВыбораПериода.Заголовок = СтроковыеФункцииКлиент.ПредставлениеПериодаВТексте(
Период.ДатаНачала, Период.ДатаОкончания);
Возвращает ссылку на общий модуль или модуль менеджера по имени. Из БСП могут быть подключены не все подсистемы, и прямое указание на несуществующий общий модуль в коде приведет к ошибке компиляции.
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ОбновлениеКонфигурации") Тогда
МодульОбновлениеКонфигурации = ОбщегоНазначения.ОбщийМодуль("ОбновлениеКонфигурации");
МодульОбновлениеКонфигурации.КаталогСкрипта();
КонецЕсли;
Рекомендуется указывать имя переменной в виде Модуль<ИмяОбщегоМодуля> для облегчения поиска вызовов функций таких модулей в дальнейшем при рекфакторинге и анализе кода.
Правильно:
МодульУправлениеПечатью = ОбщегоНазначения.ОбщийМодуль("УправлениеПечатью");
Неправильно:
Модуль = ОбщегоНазначения.ОбщийМодуль("УправлениеПечатью");
Возвращает Истина, если функциональная подсистема существует в конфигурации. Предназначена для реализации вызова необязательной подсистемы (условного вызова). Если функциональная подсистема существует, но снят флажок "Включать в командный интерфейс", то вернет ложь (см. ОбщегоНазначенияПереопределяемый.ПриОпределенииОтключенныхПодсистем)
Предусмотрено две одноименных функции:
ОбщегоНазначения.ПодсистемаСуществует для вызова с сервера
ОбщегоНазначенияКлиент.ПодсистемаСуществует для вызова с клиента
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда
МодульРаботаСФайлами = ОбщегоНазначения.ОбщийМодуль("РаботаСФайлами");
МодульРаботаСФайлами.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыГиперссылки);
КонецЕсли;
Возвращает ссылку на справочник ИдентификаторыОбъектовМетаданных, соответствующую объекту метаданных.
Идентификатор = ОбщегоНазначения.ИдентификаторОбъектаМетаданных(ТипЗнч(Ссылка));
Идентификатор = ОбщегоНазначения.ИдентификаторОбъектаМетаданных(ОбъектМетаданных);
Идентификатор = ОбщегоНазначения.ИдентификаторОбъектаМетаданных("Справочник.Организации");
Возвращает коллекцию типа соответствие ссылок на элементы справочника ИдентификаторыОбъектовМетаданных для массива объектов метаданных
ПолныеИмена = Новый Массив;
ПолныеИмена.Добавить(Метаданные.Справочники.Валюты.ПолноеИмя());
ПолныеИмена.Добавить(Метаданные.РегистрыСведений.КурсыВалют.ПолноеИмя());
Идентификаторы = ОбщегоНазначения.ИдентификаторыОбъектовМетаданных(ПолныеИмена);
Возвращает объект метаданных по переданному идентификатору - ссылке на справочник ИдентификаторыОбъектовМетаданных или ИдентификаторыОбъектовРасширений.
МетаданныеОтчета = ОбщегоНазначения.ОбъектМетаданныхПоИдентификатору(ПараметрыОткрытия.Отчет, Ложь);
Создает объект ОписаниеТипов, содержащий тип Строка
ОписаниеТипаСтрока = ОбщегоНазначения.ОписаниеТипаСтрока;
ОписаниеТипаСтрока50 = ОбщегоНазначения.ОписаниеТипаСтрока(50);
Создает объект ОписаниеТипов, содержащий тип Число
ТипИдентификатора = ОбщегоНазначения.ОписаниеТипаЧисло(15, 0);
Создает объект ОписаниеТипов, содержащий тип Дата
ОписаниеТипаДата = ОбщегоНазначения.ОписаниеТипаДата(ЧастиДаты.Дата);
Возвращает менеджер объекта по полному имени объекта метаданных.
Ограничение: не обрабатываются точки маршрутов бизнес-процессов.
ОбъектМетаданных = Метаданные.Документы.Найти(ВидДокумента);
ПолноеИмя = ОбъектМетаданных.ПолноеИмя(); // "Справочник.Товары"
МенеджерПечати = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ПолноеИмя);
МенеджерПечати.ДобавитьКомандыПечати(МассивКоманд);
Возвращает менеджер объекта по ссылке на объект.
Ограничение: не обрабатываются точки маршрутов бизнес-процессов.
МенеджерСправочника = ОбщегоНазначения.МенеджерОбъектаПоСсылке(СсылкаНаОрганизацию);
ПустаяСсылка = МенеджерСправочника.ПустаяСсылка();
Позволяет определить, есть ли среди реквизитов объекта реквизит с переданным именем.
МетаданныеСправочник = Метаданные.Справочники[ИмяСправочника];
ЕстьРеквизит = ОбщегоНазначения.ЕстьРеквизитОбъекта("Статус", МетаданныеСправочник);
Проверка того, что переданный тип является ссылочным типом данных.
Для типа Неопределено возвращается Ложь.
ПроверяемыйТип = ТипЗнч(Ссылка);
Результат = ОбщегоНазначения.ЭтоСсылка(ПроверяемыйТип);
Проверяет, что переданное значение имеет ссылочный тип данных.
Если ОбщегоНазначения.ЗначениеСсылочногоТипа(Организация) Тогда
Организация = Организация.ПолучитьОбъект();
КонецЕсли;
Определяет принадлежность объекта метаданных к ссылочному типу
ОбъектМетаданных = Ссылка.Метаданные();
Результат = ОбщегоНазначения.ЭтоОбъектСсылочногоТипа(ОбъектМетаданных);
Возвращает признак того, что реквизит входит в подмножество стандартных реквизитов.
МетаданныеОбъекта = Ссылка.Метаданные();
Результат = ОбщегоНазначения.ЭтоСтандартныйРеквизит(МетаданныеОбъекта.СтандартныеРеквизиты, "ПометкаУдаления");
Определяет принадлежность объекта метаданных к общему типу "Документ", "Справочник" и т.д.
МетаданныеОбъекта = Ссылка.Метаданные();
ЭтоДокумент = ОбщегоНазначения.ЭтоДокумент(МетаданныеОбъекта);
ЭтоСправочник = ОбщегоНазначения.ЭтоСправочник(МетаданныеОбъекта);
ЭтоРегистр = ОбщегоНазначения.ЭтоРегистр(МетаданныеОбъекта);
ЭтоПланВидовХарактеристик = ОбщегоНазначения.ЭтоПланВидовХарактеристик(МетаданныеОбъекта);
ЭтоРегистрСведений = ОбщегоНазначения.ЭтоРегистрСведений(МетаданныеОбъекта);
ЭтоПеречисление = ОбщегоНазначения.ЭтоПеречисление(МетаданныеОбъекта);
ЭтоПланОбмена = ОбщегоНазначения.ЭтоПланОбмена(МетаданныеОбъекта);
ЭтоБизнесПроцесс = ОбщегоНазначения.ЭтоБизнесПроцесс(МетаданныеОбъекта);
ЭтоЗадача = ОбщегоНазначения.ЭтоЗадача(МетаданныеОбъекта);
ЭтоПланСчетов = ОбщегоНазначения.ЭтоПланСчетов(МетаданныеОбъекта);
ЭтоПланВидовРасчета = ОбщегоНазначения.ЭтоПланВидовРасчета(МетаданныеОбъекта);
ЭтоРегистрНакопления = ОбщегоНазначения.ЭтоРегистрНакопления(МетаданныеОбъекта);
ЭтоРегистрБухгалтерии = ОбщегоНазначения.ЭтоРегистрБухгалтерии(МетаданныеОбъекта);
ЭтоРегистрРасчета = ОбщегоНазначения.ЭтоРегистрРасчета(МетаданныеОбъекта);
ЭтоКонстанта = ОбщегоНазначения.ЭтоКонстанта(МетаданныеОбъекта);
ЭтоЖурналДокументов = ОбщегоНазначения.ЭтоЖурналДокументов(МетаданныеОбъекта);
ЭтоПоследовательность = ОбщегоНазначения.ЭтоПоследовательность(МетаданныеОбъекта);
ЭтоРегламентноеЗадание = ОбщегоНазначения.ЭтоРегламентноеЗадание(МетаданныеОбъекта);
Проверяет физическое наличие записи в информационной базе данных о переданном значении ссылки.
Если ЗначениеЗаполнено(Ссылка) И ОбщегоНазначения.СсылкаСуществует(Ссылка) Тогда
Объект = Ссылка.ПолучитьОбъект();
КонецЕсли;
Добавляет описание переименования объекта метаданных при переходе на указанную версию конфигурации.
Добавление выполняется в структуру Итог, которая передается в процедуру ОбщегоНазначенияПереопределяемый.ПриДобавленииПереименованийОбъектовМетаданных.
ОбщегоНазначения.ДобавитьПереименование(Итог, "2.1.2.14",
"Подсистема._ДемоПодсистемы",
"Подсистема._ДемоСервисныеПодсистемы");
Возвращает полное имя объекта метаданных по переданному значению ссылки.
Результат = ОбщегоНазначения.ИмяТаблицыПоСсылке(Ссылка) // "Справочник.Номенклатура"
Часто используется в механизме блокировок
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить(ОбщегоНазначения.ИмяТаблицыПоСсылке(ДокументСсылка));
ЭлементБлокировки.УстановитьЗначение("Ссылка", ДокументСсылка);
Блокировка.Заблокировать();
Или для получения соответствующих макетов, открытия форм, динамического изменения запросов.
Возвращает имя базового типа по переданному значению объекта метаданных.
ОбъектМетаданных = Ссылка.Метаданные();
ИмяБазовогоТипа = ОбщегоНазначения.ИмяБазовогоТипаПоОбъектуМетаданных(ОбъектМетаданных);
//"Справочники".
Возвращает строковое представление типа, например, "СправочникСсылка.ИмяОбъекта", "ДокументСсылка.ИмяОбъекта".
Для остальных типов приводит тип к строке, например "Число".
Результат = ОбщегоНазначения.СтроковоеПредставлениеТипа(Тип)
Возвращает имя вида объектов метаданных по ссылке на объект.
Ограничение: не обрабатываются точки маршрутов бизнес-процессов.
ВидОбъекта = ОбщегоНазначения.ВидОбъектаПоСсылке(НоменклатураСсылка); // "Справочник"
Возвращает имя вида объектов метаданных по типу объекта.
Ограничение: не обрабатываются точки маршрутов бизнес-процессов.
ВидОбъекта = ОбщегоНазначения.ВидОбъектаПоТипу(ТипЗнч(Ссылка)); // "Документ"
Определяет доступность объекта метаданных по функциональным опциям.
ДоступенПоФункциональнымОпциям = ОбщегоНазначения.ОбъектМетаданныхДоступенПоФункциональнымОпциям(ОбъектМетаданных);
Возвращает описание типа, включающего в себя все возможные ссылочные типы конфигурации.
ОписаниеТипаВсеСсылки = ОбщегоНазначения.ОписаниеТипаВсеСсылки();
Проверяет, является ли элемент справочника или плана видов характеристик группой элементов.
ВидимостьЭлементаСклад = ОбщегоНазначения.ОбъектЯвляетсяГруппой(Форма.Склад);
Проверить, что описание типа состоит из единственного типа значения и
совпадает с нужным типом.
Результат = ОбщегоНазначения.ОписаниеТипаСостоитИзТипа(ОписаниеТипа, Тип("Массив"));
Возвращает таблицу значений с описанием требуемых свойств всех реквизитов объекта метаданных.
Получает значения свойств стандартных реквизитов и пользовательских реквизитов (созданных в режиме конфигуратора).
ОбъектМетаданных = Метаданные.Справочники.Номенклатура;
ТаблицаОписанияСвойствОбъекта = ОбщегоНазначения.ОписаниеСвойствОбъекта(ОбъектМетаданных, "Имя, Тип");
Возвращает код основного языка информационной базы, например "ru".
На котором программно записываются автогенерируемые строки в информационную базу.
Например, при начальном заполнении информационной базы данными из макета, автогенерации комментария к проводке или определении значения параметра ИмяСобытия метода ЗаписьЖурналаРегистрации.
Предусмотрено две одноименных функции: ОбщегоНазначения.КодОсновногоЯзыка для вызова с сервера ОбщегоНазначенияКлиент.КодОсновногоЯзыка для вызова с клиента
Результат = ОбщегоНазначения.КодОсновногоЯзыка();
Возвращает значения реквизита, прочитанного из информационной базы по ссылке на объект.
Рекомендуется использовать вместо обращения к реквизитам объекта через точку от ссылки на объект для быстрого чтения отдельных реквизитов объекта из базы данных. При чтении отдельных реквизитов объекта из базы данных нужно помнить, что вызов метода ПолучитьОбъект или обращение к реквизитам объекта через точку от ссылки приводит к загрузке объекта из базы целиком, вместе с его табличными частями.
Если необходимо прочитать реквизит независимо от прав текущего пользователя, то следует использовать предварительный переход в привилегированный режим.
Если передано имя несуществующего реквизита, то вызывается исключение "Поле объекта не существует".
Результат = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ссылка, ИмяРеквизита, ВыбратьРазрешенные, КодЯзыка)
Клиентского варианта функции в БСП нет, но можно поискать в других модулях с суффиксом ВызовСервера или КлиентСервер:
ВидНоменклатуры = ОбщегоНазначенияУТВызовСервера.ЗначениеРеквизитаОбъекта(Владелец, "ВидНоменклатуры");
Код = ОтборыСписковКлиентСервер.ЗначениеРеквизитаОбъекта(ТекСтрока.Балансировка,"Код");
Возвращает структуру, содержащую значения реквизитов, прочитанные из информационной базы по ссылке на объект.
Рекомендуется использовать вместо обращения к реквизитам объекта через точку от ссылки на объект для быстрого чтения отдельных реквизитов объекта из базы данных.
Если необходимо зачитать реквизит независимо от прав текущего пользователя, то следует использовать предварительный переход в привилегированный режим.
Результат = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Ссылка, Реквизиты, ВыбратьРазрешенные, КодЯзыка)
Возвращает значения реквизита, прочитанного из информационной базы для нескольких объектов.
Рекомендуется использовать вместо обращения к реквизитам объекта через точку от ссылки на объект для быстрого чтения отдельных реквизитов объекта из базы данных.
Если необходимо зачитать реквизит независимо от прав текущего пользователя, то следует использовать предварительный переход в привилегированный режим.
Если передано имя несуществующего реквизита, то вызывается исключение "Поле объекта не существует".
Результат = ОбщегоНазначения.ЗначениеРеквизитаОбъектов(МассивСсылок, ИмяРеквизита, ВыбратьРазрешенные, КодЯзыка);
Возвращает значения реквизитов, прочитанные из информационной базы для нескольких объектов.
Рекомендуется использовать вместо обращения к реквизитам объекта через точку от ссылки на объект
для быстрого чтения отдельных реквизитов объекта из базы данных.
Если необходимо зачитать реквизит независимо от прав текущего пользователя,
то следует использовать предварительный переход в привилегированный режим.
Если передано имя несуществующего реквизита, то вызывается исключение "Поле объекта не существует".
Результат = ОбщегоНазначения.ЗначенияРеквизитовОбъектов(Ссылки, Реквизиты, ВыбратьРазрешенные, КодЯзыка);
Возвращает ссылку предопределенного элемента по его полному имени. Повторные вызовы кэшируются.
Для клиентских вызовов есть встроенная функция ПредопределенноеЗначение(<ИмяПредопределенногоЗначения>), которая также кэшируется. Но рекомендуется использовать ОбщегоНазначенияКлиент.ПредопределенноеЗначение, т.к. при удалении предопределенного элемента из БД или очистке реквизита ИмяПредопределенного, встроенная функция выдаст исключение. А функция БСП вернет Неопределено.
Отпуск = ОбщегоНазначения.ПредопределенныйЭлемент("Справочник.ВидыОтпусков." + ВидОтпуска);
Статус = ОбщегоНазначенияКлиент.ПредопределенныйЭлемент("Перечисление.СтатусыЗаказов.Создание");
Возвращает признак того, что для пользователя установлен язык интерфейса соответствующий основному языку информационной базы.
Результат = ОбщегоНазначения.ЭтоОсновнойЯзык();
Выполняет попытку проведения документов. Возвращает массив структур с ключом Ссылка и значением ОписаниеОшибки.
ДанныеОНепроведенныхДокументах = ОбщегоНазначения.ПровестиДокументы(МассивСсылок);
ДанныеОНепроведенныхДокументах = ОбщегоНазначенияВызовСервера.ПровестиДокументы(МассивСсылок);
Проверяет статус проведения переданных документов и возвращает те из них, которые не проведены.
// Сервер
НепроведенныеДокументы = ОбщегоНазначения.ПроверитьПроведенностьДокументов(СписокДокументов);
// Клиент
НепроведенныеДокументы = ОбщегоНазначенияВызовСервера.ПроверитьПроведенностьДокументов(СписокДокументов);
Проверяет наличие ссылок на объект в базе данных. При вызове в неразделенном сеансе не выявляет ссылок в разделенных областях.
// Сервер
СсылкиОбнаружены = ОбщегоНазначения.ЕстьСсылкиНаОбъект(СсылкаНаОбъект);
// Клиент
СсылкиОбнаружены = ОбщегоНазначенияВызовСервера.ЕстьСсылкиНаОбъект(СсылкаНаОбъект);
Получает все места использования ссылок.
Если какая-либо ссылка нигде не используется, то строк для нее в результирующей таблице не будет.
При вызове в неразделенном сеансе не выявляет ссылок в разделенных областях.
ТаблицаПоиска = ОбщегоНазначения.МестаИспользования(НаборСсылок);
Создает массив и помещает в него переданное значение.
СписокФизическихЛиц = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ФизическоеЛицо);
// заменяет две строки кода
СписокФизическихЛиц = Новый Массив;
СписокФизическихЛиц.Добавить(ФизическоеЛицо);
На мой взгляд, данная функция только снижает скорость написания и читаемость кода.
Создает полную копию структуры, соответствия, массива, списка или таблицы значений, рекурсивно, с учетом типов дочерних элементов. При этом содержимое значений объектных типов (СправочникОбъект, ДокументОбъект и т.п.) не копируются, а возвращаются ссылки на исходный объект.
НовыеПараметрыФормирования = ОбщегоНазначения.СкопироватьРекурсивно(ПараметрыЗапроса);
Дополняет массив МассивПриемник значениями из массива МассивИсточник. Есть возможность проверки на уникальные значения.
ТолькоУникальныеЗначения = Ложь;
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(МассивДокументов, ДокументыКОбработке, ТолькоУникальныеЗначения);
Проверяет наличие реквизита или свойства у произвольного объекта без обращения к метаданным.
Результат = ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(СсылкаНаОбъект, "Склад");
Результат = ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(СтрокаТаблицы, "ВидЦен");
Возвращает значение свойства структуры с возможностью задать значение по умолчанию если структура = Неопределено или отсутствует свойство.
Контрагент = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Параметры.ПараметрыВыбора, "Контрагент", Объект.Контрагент);
Создает массив и копирует в него значения, содержащиеся в колонке любой коллекции строк. Есть возможность копировать только уникальные значения.
МассивПоказателей = ОбщегоНазначения.ВыгрузитьКолонку(Объект.Показатели, "Показатель", ТолькоУникальныеЗначения);
Дополняет таблицу значений - приемник данными из таблицы значений - источника. При этом нужно помнить, что типы ТаблицаЗначений, ДеревоЗначений, ТабличнаяЧасть недоступны на клиенте.
ОбщегоНазначенияКлиентСервер.ДополнитьТаблицуИзМассива(Объект.Пользователи, РезультатВыбора.Пользователи, "Пользователь");
Удаляет одно значение из массива.
ОбщегоНазначенияКлиентСервер.УдалитьЗначениеИзМассива(ДоступныеСвойства, "ВидВремени");
Процедура удаляет из массива МассивРеквизитов элементы, соответствующие именам реквизитов объекта из массива МассивНепроверяемыхРеквизитов.
Для использования в обработчиках события ОбработкаПроверкиЗаполнения модулей объектов.
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
МассивНепроверяемыхРеквизитов = Новый Массив;
Если ЭтоКорректировка Тогда
МассивНепроверяемыхРеквизитов.Добавить("Дата");
КонецЕсли;
ОбщегоНазначения.УдалитьНепроверяемыеРеквизитыИзМассива(ПроверяемыеРеквизиты, МассивНепроверяемыхРеквизитов);
КонецПроцедуры
Возвращает копию исходного массива с уникальными значениями.
Организации = ОбщегоНазначенияКлиентСервер.СвернутьМассив(Организации);
Преобразует строку таблицы значений в структуру.
Свойства структуры и их значения совпадают с колонками переданной строки.
СтруктураСтроки = ОбщегоНазначения.СтрокаТаблицыЗначенийВСтруктуру(НайденнаяСтрока);
Возвращает разность массивов. Разностью двух массивов является массив, содержащий
все элементы первого массива, не существующие во втором массиве.
Результат = ОбщегоНазначенияКлиентСервер.РазностьМассивов(МассивОбъектов, НапечатанныеОбъекты);
Дополняет структуру значениями из другой структуры. При пересечении возможен выбор заменять, пропускать или вызывать исключение.
Заменять = Ложь;
ОбщегоНазначенияКлиентСервер.ДополнитьСтруктуру(ОсновныеПараметры, СлужебныеПараметры, Заменять);
Вызывает исключение, если тип значения параметра процедуры или функции отличается от ожидаемого. Для быстрой диагностики типов параметров, передаваемых в процедуры и функции программного интерфейса.
В связи с особенностью реализации ОписанияТипов всегда включает в себя тип <Неопределено>. Если требуется жесткая проверка типа, используйте в параметре ОжидаемыеТипы конкретный тип, массив или соответствие типов.
ОбщегоНазначенияКлиентСервер.ПроверитьПараметр("РаботаСФайлами.ДвоичныеДанныеФайла",
"ПрисоединенныйФайл",
ПрисоединенныйФайл,
Метаданные.ОпределяемыеТипы.ПрисоединенныйФайл.Тип);
Возвращает строковое имя значения перечисления по его ссылке.
Вызывает исключение, если передано несуществующее значение перечисления
(например, удаленное в конфигурации или от отключенного расширения конфигурации).
Результат = ОбщегоНазначения.ИмяЗначенияПеречисления(Перечисления.ЮридическоеФизическоеЛицо.ФизическоеЛицо);
// Результат = "ФизическоеЛицо";
Преобразует таблицу значений в массив структур.
Может использоваться для передачи на клиент данных в том случае, если таблица значений содержит только такие значения, которые могут быть переданы с сервера на клиент.
Полученный массив содержит структуры, каждая из которых повторяет структуру колонок таблицы значений.
Не рекомендуется использовать для преобразования таблиц значений с большим количеством строк.
МассивРезультат = ОбщегоНазначения.ТаблицаЗначенийВМассив(ТЗ);
Вызывает исключение с текстом Сообщение, если Условие не равно Истина. Применяется для самодиагностики кода.
Процедура СократитьСтрокуКонтрольнойСуммой(Строка, МаксимальнаяДлина) Экспорт
ОбщегоНазначенияКлиентСервер.Проверить(МаксимальнаяДлина >= 32, НСтр("ru = 'Параметр МаксимальнаяДлина не может быть меньше 32'"),
"ОбщегоНазначения.СократитьСтрокуКонтрольнойСуммой");
// выдаст исключение с текстом
// "Параметр МаксимальнаяДлина не может быть меньше 32 в ОбщегоНазначения.СократитьСтрокуКонтрольнойСуммой"
КонецПроцедуры
Удаляет все вхождения переданного значения из массива.
ОбщегоНазначенияКлиентСервер.УдалитьВсеВхожденияЗначенияИзМассива(
Организации,
Справочники.Организации.ПустаяСсылка());
Сравнивает две коллекции строк (ТаблицаЗначений, ДеревоЗначений и т.д.), для которых доступен обход посредством оператора Для каждого … Из … Цикл.
Сравниваемые коллекции должны отвечать следующим требованиям:
- доступен обход посредством оператора Для каждого … Из … Цикл,
- наличие в обеих коллекциях всех колонок, перечисленных в параметре ИменаКолонок
(если ИменаКолонок не заполнен - все колонки первой коллекции должны существовать во второй коллекции).
Также позволяет сравнивать массивы.
Если Не ОбщегоНазначения.КоллекцииИдентичны(Настройки, ТекущиеНастройки) Тогда
ОбновитьНастройки();
КонецЕсли;
Возвращает пустой уникальный идентификатор.
ПустойИдентификатор = ОбщегоНазначенияКлиентСервер.ПустойУникальныйИдентификатор();
// УникальныйИдентификатор - 00000000-0000-0000-0000-000000000000
Дополняет соответствие значениями из другого соответствия.
ОбщегоНазначенияКлиентСервер.ДополнитьСоответствие(Заголовки, ДопЗаголовки);
Вычисляет контрольную сумму для произвольных данных по указанному алгоритму.
НовыйДанныеКорзиныХэшСумма = ОбщегоНазначения.КонтрольнаяСуммаСтрокой(ДанныеКорзины);
Если НовыйДанныеКорзиныХэшСумма <> ДанныеКорзиныХэшСумма Тогда
ДанныеКорзиныХэшСумма = НовыйДанныеКорзиныХэшСумма;
ПеречитатьКорзину(ДанныеКорзины);
КонецЕсли;
Создает структуру, содержащую имена и значения измерений, ресурсов и реквизитов переданного менеджера записи регистра сведений.
Настройки = РегистрыСведений.НастройкиЗаявленийНаОтпуск.СоздатьМенеджерЗаписи();
Настройки.Прочитать();
СтруктураНастроек = ОбщегоНазначения.СтруктураПоМенеджеруЗаписи(
Настройки, Метаданные.РегистрыСведений.НастройкиЗаявленийНаОтпуск);
Возвращает описание предмета в виде текстовой строки.
Для документов возвращается представление, для остальных ссылочных типов возвращается представление и тип в скобках, например, "Ножницы (Номенклатура)".
Для пустых ссылок, Неопределено или незаполненных значений примитивных типов возвращается "не задан".
// Возвращаемое значение:
// Строка - например, "Ножницы (Номенклатура)", "Заказ клиента № 0001 от 01.01.2001" или "не задан".
Форма.ПредметСтрокой = ОбщегоНазначения.ПредметСтрокой(Форма.Объект.Предмет);
Преобразует текст указанного формата XML в таблицу значений, при этом колонки таблицы формируются на основе описания в XML.
КлассификаторXML = Обработки.ЗагрузкаКурсовВалют.ПолучитьМакет("ОбщероссийскийКлассификаторВалют").ПолучитьТекст();
КлассификаторТаблица = ОбщегоНазначения.ПрочитатьXMLВТаблицу(КлассификаторXML).Данные;
Дополняет таблицу значений Таблица значениями из массива Массив. Строки добавляются безусловно, другие колонки при наличии остаются незаполненными.
ОбщегоНазначенияКлиентСервер.ДополнитьТаблицуИзМассива(Таблица, МассивПодчиненныеПодразделения, "Подразделение");
Фиксирует данные типов Структура, Соответствие, Массив с учетом вложенности. Если это массив структур, возвращается фиксированный массив фиксированных структур.
Параметры = ОбщегоНазначения.ФиксированныеДанные(РассчитанныеПараметры);
Дополняет список значений СписокПриемник значениями списка СписокИсточник. При этом если в списке-приемнике уже есть элемент с добавляемым значением, то у него заменяется представление на новое из списка-источника.
Дополнение = ОбщегоНазначенияКлиентСервер.ДополнитьСписок(Список, Выбранные, Истина, Истина);
Сравнивает данные сложной структуры с учетом вложенности. Отличие от КоллекцииИдентичны в том, что может сравнивать не только коллекции, но и ХранилищеЗначения, Строка и т.д.
ДанныеСовпадают = ОбщегоНазначения.ДанныеСовпадают(ТаблицаДоОбновления, ТаблицаПослеОбновления);
Сравнивает элементы списков значений или массивов по значениям.
Результат = ОбщегоНазначенияКлиентСервер.СпискиЗначенийИдентичны(ИдентификаторыДоЗаполнения, ИдентификаторыПослеЗаполнения);
Получает строку, содержащую ключи структуры, разделенные символом разделителя.
ИсключаемыеПоляСтрокой = ОбщегоНазначенияКлиентСервер.КлючиСтруктурыВСтроку(ИсключаемыеПоля, ",");
Сокращает строку до нужной длины, при этом обрезанная часть хешируется, обеспечивая уникальность строки. Проверяет длину строки на входе и, в случае превышения максимальной длины, преобразует ее конец по алгоритму MD5 в уникальную строку из 32 символов.
КлючНазначенияИспользования = ОбщегоНазначения.СократитьСтрокуКонтрольнойСуммой(ВыбранныеТипы, 128);
Удаляет все вхождения значений указанного типа.
ОбщегоНазначенияКлиентСервер.УдалитьВсеВхожденияТипаИзМассива(СписокСотрудников, Тип("СправочникСсылка.ФизическиеЛица"));
Формирует и выводит сообщение, которое может быть связано с элементом управления формы.
Ограничение на использование метода Сообщить
Стандарты формирования сообщений
Предусмотрено две одноименных функции: ОбщегоНазначения.СообщитьПользователю для вызова с сервера ОбщегоНазначенияКлиент.СообщитьПользователю для вызова с клиента
// 1. Для вывода сообщения у поля управляемой формы, связанного с реквизитом объекта:
// ОбщегоНазначения.СообщитьПользователю(
// НСтр("ru = 'Сообщение об ошибке.'"), ,
// "ПолеВРеквизитеФормыОбъект",
// "Объект");
//
// Альтернативный вариант использования в форме объекта:
// ОбщегоНазначения.СообщитьПользователю(
// НСтр("ru = 'Сообщение об ошибке.'"), ,
// "Объект.ПолеВРеквизитеФормыОбъект");
//
// 2. Для вывода сообщения рядом с полем управляемой формы, связанным с реквизитом формы:
// ОбщегоНазначения.СообщитьПользователю(
// НСтр("ru = 'Сообщение об ошибке.'"), ,
// "ИмяРеквизитаФормы");
//
// 3. Для вывода сообщения связанного с объектом информационной базы:
// ОбщегоНазначения.СообщитьПользователю(
// НСтр("ru = 'Сообщение об ошибке.'"), ОбъектИнформационнойБазы, "Ответственный",,Отказ);
//
// 4. Для вывода сообщения по ссылке на объект информационной базы:
// ОбщегоНазначения.СообщитьПользователю(
// НСтр("ru = 'Сообщение об ошибке.'"), Ссылка, , , Отказ);
Случаи некорректного использования: 1. Передача одновременно параметров КлючДанных и ПутьКДанным. 2. Передача в параметре КлючДанных значения типа отличного от допустимого. 3. Установка ссылки без установки поля (и/или пути к данным).
Формирует путь к заданной строке НомерСтроки и колонке ИмяРеквизита табличной части ИмяТабличнойЧасти для выдачи сообщений в форме.
Для совместного использования с процедурой СообщитьПользователю (для передачи в параметры Поле или ПутьКДанным).
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = Текст;
Сообщение.Поле = ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("Товары", ТекущаяСтрокаТовары.НомерСтроки, "ВидЦены");
Сообщение.Сообщить();
// Сообщение.Поле = "Товары[3].ВидЦены"
Добавляет в список ошибок новую ошибку пользователя для дальнейшей отправки с помощью процедуры СообщитьОшибкиПользователю().
Предназначена для накопления списка ошибок с последующей обработкой этого списка, перед тем как вывести пользователю. Полученный список ошибок можно, например, отсортировать по важности, очистить от дублей, а также вывести пользователю в ином виде, чем выводит метод СообщитьПользователю, например в табличный документ.
ТекстОшибки = "Редактируемое значение";
ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки,
"Объект.НаименованиеДляПечати",
ТекстОшибки, "");
ОбщегоНазначенияКлиентСервер.СообщитьОшибкиПользователю(Ошибки, Отказ);
Выводит накопленные методом ДобавитьОшибкуПользователю ошибки, при этом использует нужные шаблоны текстов ошибок в зависимости от количества однотипных ошибок. Не подходит для отправки сообщений из фонового заданий длительной операции.
ОбщегоНазначенияКлиентСервер.СообщитьОшибкиПользователю(Ошибки, Отказ);
Формирует текст ошибок заполнения полей и списков.
Результат = ОбщегоНазначенияКлиентСервер.ТекстОшибкиЗаполнения(ВидПоля, ВидСообщения, ИмяПоля, НомерСтроки, ИмяСписка, ТекстСообщения);
Текст = ОбщегоНазначенияКлиентСервер.ТекстОшибкиЗаполнения("Поле", "Заполнение", "Номенклатура");
// Текст = "Поле Номенклатура не заполнено"
Текст = ОбщегоНазначенияКлиентСервер.ТекстОшибкиЗаполнения("Колонка", "Корректность", "Товары");
// Текст = "Некорректно заполнена колонка Артикул в строке 10 списка "Товары".
Открыть стандартную форму ожидания завершения длительной операции или использовать собственную форму и подключить обработчик оповещения о завершении и прогрессе выполнения процедуры длительной операции.
Если приложение запущено в режиме отладки (параметр /C РежимОтладки), форма прогресса не отобразится.
Применяется совместно с функцией ДлительныеОперации.ВыполнитьВФоне для повышения отзывчивости пользовательского интерфейса, заменяя длительный серверный вызов на запуск фонового задания.
Оповещение = Новый ОписаниеОповещения("ПослеОбновленияКомпонентСПортала", ЭтотОбъект);
ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, Оповещение, ПараметрыОжидания);
Возвращает инициализированную структуру для параметра ПараметрыОжидания процедуры ДлительныеОперацииКлиент.ОжидатьЗавершение.
&НаКлиенте
Процедура УдалитьДубли()
ФоновоеЗадание = УдалитьДублиСервер();
НастройкиОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
НастройкиОжидания.ВыводитьОкноОжидания = Истина;
Обработчик = Новый ОписаниеОповещения("ПослеУдаленияДублей", ЭтотОбъект);
ДлительныеОперацииКлиент.ОжидатьЗавершение(ФоновоеЗадание, Обработчик, НастройкиОжидания);
КонецПроцедуры
Возвращает новую структуру для параметра ПараметрыВыполнения функции ВыполнитьВФоне.
Если ЗапуститьВФоне = Ложь и ЗапуститьНеВФоне = Ложь, то задание будет выполнено в фоне по возможности.
Запуск выполняется сразу в основном потоке при выполнении любого из следующих условий:
- если вызов выполняется в файловой базе во внешнем соединении (в этом режиме фоновые задания не поддерживаются);
- если приложение запущено в режиме отладки (параметр /C РежимОтладки) - для упрощения отладки конфигурации;
- если в файловой ИБ имеются активные фоновые задания - для снижения времени ожидания пользователя;
- если выполняется функция модуля внешней обработки или внешнего отчета, но есть способ обхода
ПараметрыПроцедуры = Новый Структура("ДополнительнаяОбработкаСсылка, ИдентификаторКоманды, ОбъектыНазначения");
ПараметрыПроцедуры.ДополнительнаяОбработкаСсылка = ВыполняемаяКоманда.Ссылка;
ПараметрыПроцедуры.ИдентификаторКоманды = ВыполняемаяКоманда.Идентификатор;
ПараметрыПроцедуры.ОбъектыНазначения = ВыполняемаяКоманда.ОбъектыНазначения;
НастройкиЗапуска = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор);
НастройкиЗапуска.НаименованиеФоновогоЗадания = "Дополнительные отчеты и обработки: Выполнение серверного метода обработки");
ДлительнаяОперация = ДлительныеОперации.ВыполнитьВФоне(ИмяПроцедуры, ПараметрыПроцедуры, НастройкиЗапуска);
Вместо этой функции рекомендуется использовать функции ВыполнитьФункцию и ВыполнитьПроцедуру.
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор);
ДлительнаяОперация = ДлительныеОперации.ВыполнитьВФоне("Обработка.МояОбработка.ВыполнитьДействие",
ПараметрыПроцедуры, ПараметрыВыполнения);
Отменяет выполнение фонового задания по переданному идентификатору. При этом если в длительной операции открывались транзакции, то будет произведен откат последней открытой транзакции.
Таким образом, если длительная операция выполняет обработку (запись) данных, то для полной отмены всей операции следует выполнять запись в одной транзакции (в таком случае, будет отменена вся транзакция целиком). Если же достаточно, чтобы длительная операция была не отменена целиком, а прервана на достигнутом этапе, то, напротив, открывать одну длинную транзакцию не требуется.
Если ЗначениеЗаполнено(ФоновоеЗаданиеИдентификатор) Тогда
ДлительныеОперации.ОтменитьВыполнениеЗадания(ФоновоеЗаданиеИдентификатор);
ФоновоеЗаданиеИдентификатор = Неопределено;
КонецЕсли;
Запустить выполнение функции в фоновом задании, если это возможно.
Вызываемая функция может быть с произвольным числом параметров, но не более 7.
Значения передаваемых параметров функции, а также возвращаемое значение должны быть сериализуемыми.
Параметры функции не должны быть возвращаемыми.
Не следует использовать эту функцию, если необходимо безусловно запускать фоновое задание.
Рекомендуется применять совместно с функцией ДлительныеОперацииКлиент.ОжидатьЗавершение, если невозможно, тогда для проверки завершения операции использовать функцию ЗаданиеВыполнено.
В общем виде процесс запуска и обработки результата длительной операции в модуле формы выглядит следующим образом:
// 1) Функция, которая будет исполняться в фоне, располагается в модуле менеджера объекта или в серверном общем модуле:
Функция РассчитатьЗначение(Знач МойПараметр1, Знач МойПараметр2) Экспорт
...
Возврат Результат;
КонецФункции
// 2) Запуск операции на сервере и подключение обработчика ожидания:
&НаКлиенте
Процедура РассчитатьЗначение()
ДлительнаяОперация = НачатьВыполнениеНаСервере();
ОповещениеОЗавершении = Новый ОписаниеОповещения("ОбработатьРезультат", ЭтотОбъект);
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, ОповещениеОЗавершении, ПараметрыОжидания);
КонецПроцедуры
&НаСервере
Функция НачатьВыполнениеНаСервере()
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияФункции(УникальныйИдентификатор);
Возврат ДлительныеОперации.ВыполнитьФункцию(ПараметрыВыполнения, "Обработка.МояОбработка.РассчитатьЗначение",
МойПараметр1, МойПараметр2);
КонецФункции
// 3) Обработка результата длительной операции:
&НаКлиенте
Процедура ОбработатьРезультат(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
ВывестиРезультат(Результат.АдресРезультата);
КонецПроцедуры
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор);
ПараметрыВыполнения.НаименованиеФоновогоЗадания = "Формирование идентификатора оплаты.";
РезультатВыполнения = ДлительныеОперации.ВыполнитьФункцию(
ПараметрыВыполнения,
"ИнтеграцияСПлатежнымиСистемами.ИдентификаторОплаты",
ОснованиеПлатежа,
ТорговаяТочка);
Проверяет состояние фонового задания по переданному идентификатору. При аварийном завершении задания вызывает исключение с текстом ошибки, возникшем в нем, и уточнением вида "См. также журнал регистрации".
ЗаданиеВыполнено = ДлительныеОперации.ЗаданиеВыполнено(ИдентификаторЗадания);
Регистрирует информацию о ходе выполнения длительной операции.
Не следует использовать для передачи результата работы длительной операции по частям.
Во избежание избыточного потребления памяти и ее утечек при выполнении одной длительной операции
не следует сообщать прогресс более 100 раз.
Если прогресс сообщается менее чем через 3 сек после предыдущего вызова, то последнее сообщение
удаляется и заменяется на новое (если используется система взаимодействия, то отправка нового
сообщения не выполняется, а будет выполнена спустя некоторое время - не быстрее 3 сек).
После отправки прогресса отправляются все сообщения, накопленные в очереди сообщений фонового задания.
Для того чтобы выводить ход выполнения длительной операции для пользователя, следует установить
свойство ВыводитьПрогрессВыполнения в Истина (см. ДлительныеОперацииКлиент.ПараметрыОжидания).
Его также можно получать отдельно при помощи функции ДлительныеОперации.ПрочитатьПрогресс.
НовыйПроцент = Цел(Контекст.ИндексТекущейТаблицы / Контекст.ОчищаемыеТаблицы.Количество() * 100);
Если НовыйПроцент > ПоследнийПроцент Тогда
ДлительныеОперации.СообщитьПрогресс(НовыйПроцент);
ПоследнийПроцент = НовыйПроцент;
КонецЕсли;
Конструктор коллекции ПараметрыВыполненияФункции для функции ВыполнитьФункцию.
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияФункции(Новый УникальныйИдентификатор);
ПараметрыВыполнения.ЗапуститьВФоне = Истина;
ДлительнаяОперация = ДлительныеОперации.ВыполнитьФункцию(ПараметрыВыполнения, "УправлениеПечатью.НапечататьВФайл",
Результат, СписокОбъектов, УправлениеПечатью.НастройкиСохранения());
Запустить выполнение процедуры в фоновом задании, если это возможно.
Асинхронное выполнение длительных операций
Вызываемая процедура может быть с произвольным числом параметров, но не более 7.
Значения передаваемых параметров процедуры, а также возвращаемое значение должны быть сериализуемыми.
Параметры процедуры не должны быть возвращаемыми.
Не следует использовать эту функцию, если необходимо безусловно запускать фоновое задание.
Рекомендуется применять совместно с функцией ДлительныеОперацииКлиент.ОжидатьЗавершение,
если невозможно, тогда для проверки завершения операции использовать функцию ЗаданиеВыполнено.
&НаСервереБезКонтекста
Функция УстановитьСтатусЗагруженВФоне(Организация, Идентификатор, ДокументСсылка)
НаименованиеЗадания = НСтр("ru = 'Установка статуса ""Загружен"" для документа 1С:Бизнес-сеть';
|en = 'Set the ""Imported"" status for 1C:Business Network document'",
ОбщегоНазначения.КодОсновногоЯзыка());
ИмяМетода = "БизнесСеть.УстановитьСтатусЗагружен";
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияПроцедуры();
ПараметрыВыполнения.НаименованиеФоновогоЗадания = НаименованиеЗадания;
ПараметрыВыполнения.ЗапуститьВФоне = Истина;
Возврат ДлительныеОперации.ВыполнитьПроцедуру(ПараметрыВыполнения, ИмяМетода, Организация, Идентификатор,
ДокументСсылка);
КонецФункции
Конструктор коллекции ПараметрыВыполненияПроцедуры для функции ВыполнитьПроцедуру.
Если ЗапуститьВФоне = Ложь и ЗапуститьНеВФоне = Ложь, то задание будет выполнено в фоне по возможности.
Запуск выполняется сразу в основном потоке при выполнении любого из следующих условий:
- если вызов выполняется в файловой базе во внешнем соединении (в этом режиме фоновые задания не поддерживаются);
- если приложение запущено в режиме отладки (параметр /C РежимОтладки) - для упрощения отладки конфигурации;
- если в файловой ИБ имеются активные фоновые задания - для снижения времени ожидания пользователя;
- если выполняется функция модуля внешней обработки или внешнего отчета.
НаименованиеЗадания = "Установка статуса ""Загружен"" для документа 1С:Бизнес-сеть";
ИмяМетода = "БизнесСеть.УстановитьСтатусЗагружен";
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияПроцедуры();
ПараметрыВыполнения.НаименованиеФоновогоЗадания = НаименованиеЗадания;
ПараметрыВыполнения.ЗапуститьВФоне = Истина;
ДлительнаяОперация = ДлительныеОперации.ВыполнитьПроцедуру(ПараметрыВыполнения, ИмяМетода, Организация, Идентификатор, ДокументСсылка);
Считывает информацию о ходе выполнения длительной операции, записанную процедурой ДлительныеОперации.СообщитьПрогресс.
Рекомендуется получать прогресс через обработчик оповещения, который подключается с помощью ДлительныеОперацииКлиент.ОжидатьЗавершение.
Прогресс = ДлительныеОперации.ПрочитатьПрогресс(ИдентификаторЗаданияФормированиеБюджетов);
Если Прогресс <> Неопределено Тогда
ФоновоеЗаданиеПроцент = Прогресс.Процент;
КонецЕсли;
Получает сообщения пользователю, отфильтровывает служебные сообщения о состоянии длительной операции.
Операция = ДлительныеОперации.ВыполнитьВФоне(...);
...
Сообщения = ДлительныеОперации.СообщенияПользователю(Истина, Операция.ИдентификаторЗадания);
Запускает выполнение процедуры в многопоточном фоновом задании, если это возможно.
Вызываемая процедура может быть с произвольным числом параметров, но не более 7.
Значения передаваемых параметров процедуры, а также возвращаемое значение должны быть сериализуемыми.
Параметры процедуры не должны быть возвращаемыми.
Многопоточные длительные операции в неразделенном сеансе не поддерживаются.
Не следует использовать эту функцию, если необходимо безусловно запускать фоновое задание. Рекомендуется применять совместно с функцией ДлительныеОперацииКлиент.ОжидатьЗавершение, если невозможно, тогда для проверки завершения операции использовать функцию ЗаданиеВыполнено.
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор);
ПараметрыВыполнения.НаименованиеФоновогоЗадания = НСтр("ru = 'Загрузка адресного классификатора с сайта';
|en = 'Import address classifier from site'");
ПараметрыЗагрузки = АдресныйКлассификаторСлужебный.ПараметрыЗагрузкиКлассификатораАдресов();
ПараметрыЗагрузки.ЗагружатьИсториюАдресов = ЗагружатьИсторию;
ПараметрыЗагрузки.КаталогФайлов = ВременныйКаталог;
ПараметрыМетода = Новый Соответствие();
Для Каждого КодРегиона Из КодыРегионов Цикл
ПараметрыВызоваСервера = Новый Массив;
ПараметрыВызоваСервера.Добавить(КодРегиона);
ПараметрыВызоваСервера.Добавить(ПараметрыЗагрузки);
ПараметрыМетода.Вставить(КодРегиона.Представление, ПараметрыВызоваСервера);
КонецЦикла;
ФоновоеЗадание = ДлительныеОперации.ВыполнитьПроцедуруВНесколькоПотоков("АдресныйКлассификаторСлужебный.ЗагрузкаРегионаАдресногоКлассификатораССайта",
ПараметрыВыполнения, ПараметрыМетода);
Запустить выполнение функции в многопоточном фоновом задании, если это возможно.
Вызываемая процедура может быть с произвольным числом параметров, но не более 7.
Значения передаваемых параметров процедуры, а также возвращаемое значение должны быть сериализуемыми.
Параметры процедуры не должны быть возвращаемыми.
Многопоточные длительные операции в неразделенном сеансе не поддерживаются.
Не следует использовать эту функцию, если необходимо безусловно запускать фоновое задание.
Рекомендуется применять совместно с функцией ДлительныеОперацииКлиент.ОжидатьЗавершение,
если невозможно, тогда для проверки завершения операции использовать функцию ЗаданиеВыполнено.
ПараметрыВыполнения = МодульДлительныеОперации.ПараметрыВыполненияВФоне(ИдентификаторФормы);
ПараметрыВыполнения.НаименованиеФоновогоЗадания = НСтр("ru = 'Групповое изменение реквизитов';
|en = 'Bulk attribute edit'");
ПараметрыВыполнения.ВнешнийОтчетОбработка = Параметры.ВнешнийОтчетОбработка;
НастройкиИзменения = НастройкиИзменения(Параметры, ВыполнятьКодАлгоритмаВБезопасномРежиме);
Для ИндексПорции = 0 По ВерхняяГраницаПорций Цикл
МассивПараметров = Новый Массив;
МассивПараметров.Добавить(МассивПорций[ИндексПорции]);
МассивПараметров.Добавить(РезультатИзменения);
МассивПараметров.Добавить(НастройкиИзменения);
ПараметрыМетода.Вставить(ИндексПорции, МассивПараметров);
КонецЦикла;
ИмяФункции = "ВнешняяОбработка.ГрупповоеИзменениеРеквизитов.МодульОбъекта.РезультатИзмененияПорцииОбъектов";
РезультатВыполнения = МодульДлительныеОперации.ВыполнитьФункциюВНесколькоПотоков(ИмяФункции,
ПараметрыВыполнения, ПараметрыМетода);
Добавить или заменить существующий элемент отбора динамического списка.
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(ДинамическийСписок, ИмяПоля, ПравоеЗначение, ВидСравнения, Представление, Использование, РежимОтображения, ИдентификаторПользовательскойНастройки)
Установить или обновить значение параметра ИмяПараметра динамического списка Список.
ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(Список, "Номенклатура", Параметры.Номенклатура, Истина);
Добавить или заменить существующий элемент отбора. В отличие от УстановитьЭлементОтбораДинамическогоСписка в параметры передается не ДинамическийСписок, а ОтборКомпоновкиДанных или ГруппаЭлементовОтбораКомпоновкиДанных.
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(ОбластьПоискаДобавления, ИмяПоля, ПравоеЗначение, ВидСравнения, Представление, Использование, РежимОтображения, ИдентификаторПользовательскойНастройки)
Добавить элемент компоновки в контейнер элементов компоновки.
ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(
ГруппаЭлементов,
"ДатаРегистрации",
ВидСравненияКомпоновкиДанных.БольшеИлиРавно,
Форма.ОтборПериод.ДатаНачала);
Установить текст запроса, основную таблицу или динамическое считывание в динамическом списке.
Устанавливать эти свойства следует за один вызов этой процедуры, чтобы не снижалась производительность.
СвойстваСписка = ОбщегоНазначения.СтруктураСвойствДинамическогоСписка();
СвойстваСписка.ТекстЗапроса = "ВЫБРАТЬ Ссылка, Код Из Справочник.Номенклатура";
ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.Список, СвойстваСписка);
Создает структуру для второго параметра СвойстваСписка процедуры УстановитьСвойстваДинамическогоСписка.
СвойстваСписка = ОбщегоНазначения.СтруктураСвойствДинамическогоСписка();
СвойстваСписка.ТекстЗапроса = ТекстЗапроса;
СвойстваСписка.ОсновнаяТаблица = "Справочник.ВидыНоменклатуры";
СвойстваСписка.ДинамическоеСчитываниеДанных = Истина;
ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.Список, СвойстваСписка);
Добавить группу отбора в ОтборКомпоновкиДанных или в ГруппаЭлементовОтбораКомпоновкиДанных
ГруппаИли = ОбщегоНазначенияКлиентСервер.СоздатьГруппуЭлементовОтбора(
Список.КомпоновщикНастроек.ФиксированныеНастройки.Отбор.Элементы, "ДатаОкончанияДействия",
ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли);
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(
ГруппаИли,
"ДатаОкончанияДействия",
ТекущаяДатаСеанса(),
ВидСравненияКомпоновкиДанных.Больше);
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(
ГруппаИли,
"ДатаОкончанияДействия",
Дата(1, 1, 1),
ВидСравненияКомпоновкиДанных.Равно);
Удалить элемент группы отбора динамического списка.
ОбщегоНазначенияКлиентСервер.УдалитьЭлементыГруппыОтбораДинамическогоСписка(Список, "Владелец");
Найти элемент или группу отбора по заданному имени поля или представлению. В качестве области поиска передается ОтборКомпоновкиДанных или ГруппаЭлементовОтбораКомпоновкиДанных.
ЭлементыОтбора = ОбщегоНазначенияКлиентСервер.НайтиЭлементыИГруппыОтбора(
ОбщегоНазначенияУТКлиентСервер.ПолучитьОтборДинамическогоСписка(Список), "Владелец");
Удалить элементы отбора с заданным именем поля или представлением. В качестве параметра передается Отбор или ГруппаЭлементовОтбораКомпоновкиДанных
ОбщегоНазначенияКлиентСервер.УдалитьЭлементыГруппыОтбора(ГруппаОтбора, "ВАрхиве");
Изменить элемент отбора с заданным именем поля или представлением.
ОбщегоНазначенияКлиентСервер.ИзменитьЭлементыОтбора(Список.Отбор, "Идентификатор",,,,ИспользуетсяОтбор);
Устанавливает свойство ИмяСвойства элемента формы с именем ИмяЭлемента в значение Значение.
Применяется в тех случаях, когда элемента формы может не быть на форме из-за отсутствия прав у пользователя на объект, реквизит объекта или команду.
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ВыбратьФайлОтвета",
"Видимость",
Истина);
Получает значение реквизита формы по пути к нему
ПутьКРеквизиту = "Объект.СтатусДокумента";
Значение = ОбщегоНазначенияКлиентСервер.ПолучитьРеквизитФормыПоПути(Форма, ПутьКРеквизиту);
Задает вопрос о продолжении действия, которое приведет к потере изменений:
"Данные были изменены. Сохранить изменения?"
Для использования в обработчиках события ПередЗакрытием модулей форм объектов, которые возможно записать в информационную базу.
Отображение вопроса зависит свойства модифицированности формы.
&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
Оповещение = Новый ОписаниеОповещения("ЗаписатьИЗакрытьНаКлиенте", ЭтотОбъект);
ОбщегоНазначенияКлиент.ПоказатьПодтверждениеЗакрытияФормы(Оповещение, Отказ, ЗавершениеРаботы, ТекстПредупреждения);
КонецПроцедуры
Устанавливает реквизит формы по пути.
Позволяет не устанавливать значение реквизита, если у него уже установлено какое-то значение.
ПутьКЗначению = "МаксимальноеЗначение" + НомерПоказателя;
ОбщегоНазначенияКлиентСервер.УстановитьРеквизитФормыПоПути(ДокументОбъект, ПутьКЗначению, НовоеЗначение);
Получает картинку для вывода на странице с комментарием в зависимости от наличия текста в комментарии.
Элементы.СтраницаКомментарий.Картинка = ОбщегоНазначенияКлиентСервер.КартинкаКомментария(Объект.Комментарий);
// Объект.Комментарий не пустой, поэтому возвращает картинку БиблиотекаКартинок.Комментарий
Обновляет интерфейс программы сохраняя текущее активное окно.
ОбщегоНазначенияКлиент.ОбновитьИнтерфейсПрограммы();
Оповещает открытые формы и динамические списки об изменении одного объекта.
ОбщегоНазначенияКлиент.ОповеститьОбИзмененииОбъекта(Объект.Ссылка);
Выполняет поиск элемента отбора в коллекции по заданному представлению.
ГруппаОтборПоРазделам = ОбщегоНазначенияКлиентСервер.НайтиЭлементОтбораПоПредставлению(Список.Отбор.Элементы, "ОтборПоРазделам");
Задает вопрос о продолжении действия, которое приведет к закрытию формы.
Для использования в обработчиках события ПередЗакрытием модулей форм.
См. также процедуру ОбщегоНазначенияКлиент.ПоказатьПодтверждениеЗакрытияФормы.
ТекстПредупреждения = НСтр("ru = 'Закрыть помощник?'");
ОбщегоНазначенияКлиент.ПоказатьПодтверждениеЗакрытияПроизвольнойФормы(
ЭтотОбъект, Отказ, ЗавершениеРаботы, ТекстПредупреждения, "ЗакрытьФормуБезПодтверждения");
Возвращает значение свойства ИмяСвойства элемента формы с именем ИмяЭлемента.
Применяется в тех случаях, когда элемент формы может не быть на форме из-за отсутствия прав у пользователя на объект, реквизит объекта или команду.
УдержаниеВидимость = ОбщегоНазначенияКлиентСервер.ЗначениеСвойстваЭлементаФормы(Форма.Элементы, "Удержание", "Видимость");
Оповещает открытые формы и динамические списки об изменении сразу нескольких объектов.
ОбщегоНазначенияКлиент.ОповеститьОбИзмененииОбъектов(ИзмененныеДокументы);
Возвращает признак работы в режиме разделения данных по областям (технически это признак условного разделения).
Возвращает Ложь, если конфигурация не может работать в режиме разделения данных (не содержит общих реквизитов, предназначенных для разделения данных).
РазделениеВключено = ОбщегоНазначения.РазделениеВключено();
Возвращает признак возможности обращения к разделенным данным (которые входят в состав разделителей).
Признак относится к сеансу, но может меняться во время работы сеанса, если разделение было включено в самом сеансе, поэтому проверку следует делать непосредственно перед обращением к разделенным данным.
Возвращает Истина, если конфигурация не может работать в режиме разделения данных (не содержит общих реквизитов, предназначенных для разделения данных).
ДоступноИспользованиеРазделенныхДанных = ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных();
Определяет режим эксплуатации информационной базы файловый (Истина) или серверный (Ложь).
При проверке используется СтрокаСоединенияИнформационнойБазы, которую можно указать явно.
// Сервер
ИБФайловая = ОбщегоНазначения.ИнформационнаяБазаФайловая();
//Клиент
ИБФайловая = ОбщегоНазначенияКлиент.ИнформационнаяБазаФайловая();
Возвращает Истина, если клиентское приложение является мобильным клиентом.
Результат = ОбщегоНазначения.ЭтоМобильныйКлиент();
Возвращает истина, если включен режим отладки - режим, в котором отключено выполнение в фоне, и фоновые задания выполняются последовательно в рамках одного сеанса.
// Сервер
Результат = ОбщегоНазначения.РежимОтладки();
// Клиент
Результат = ОбщегоНазначенияКлиент.РежимОтладки();
Возвращает Истина, если клиентское приложение является Веб-клиентом.
Результат = ОбщегоНазначения.ЭтоВебКлиент();
Определяет, что эта информационная база является подчиненным узлом распределенной информационной базы (РИБ).
ЭтоПодчиненныйУзелРИБ = ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ();
Возвращает Истина, если эта информационная база подключена к 1С:Fresh.
Результат = ОбщегоНазначения.ЭтоАвтономноеРабочееМесто();
Возвращает Истина, если клиентское приложение запущено под управлением ОС Windows.
// Сервер
Результат = ОбщегоНазначения.ЭтоWindowsКлиент();
// Клиент
Результат = ОбщегоНазначенияКлиент.ЭтоWindowsКлиент();
Возвращает Истина, если клиентское приложение запущено под управлением ОС Linux.
// Сервер
Результат = ОбщегоНазначения.ЭтоLinuxКлиент();
// Клиент
Результат = ОбщегоНазначенияКлиент.ЭтоLinuxКлиент();
Возвращает Истина, если текущий сеанс выполняется на сервере, работающем под управлением ОС Windows.
Результат = ОбщегоНазначения.ЭтоWindowsСервер();
Возвращает Истина, если текущий сеанс выполняется на сервере, работающем под управлением ОС Linux.
Результат = ОбщегоНазначения.ЭтоLinuxСервер();
Возвращает Истина, если клиентское приложение запущено под управлением macOS.
// Сервер
Результат = ОбщегоНазначения.ЭтоMacOSКлиент();
// Клиент
Результат = ОбщегоНазначенияКлиент.ЭтоMacOSКлиент();
Возвращает Истина, если клиентское приложение подключено к базе через веб-сервер.
// Сервер
Результат = ОбщегоНазначения.КлиентПодключенЧерезВебСервер();
// Клиент
Результат = ОбщегоНазначенияКлиент.КлиентПодключенЧерезВебСервер();
Возвращает структуру
Структура:
- ИмяФормыПерсональныхНастроек - Строка - имя формы для редактирования персональных настроек.
- ЗапрашиватьПодтверждениеПриЗавершенииПрограммы - Булево - по умолчанию Истина. Если установить в Ложь, то подтверждение при завершении работы программы не будет запрашиваться, если явно не разрешить в персональных настройках программы.
- МинимальнаяВерсияПлатформы - Строка - минимальная версии платформы, требуемая для запуска программы. Запуск программы на версии платформы ниже указанной будет невозможен. Например, "8.3.6.1650".
- РекомендуемаяВерсияПлатформы - Строка - рекомендуемая версия платформы для запуска программы. Например, "8.3.8.2137".
- ОтключитьИдентификаторыОбъектовМетаданных - Булево - отключает заполнение справочников ИдентификаторыОбъектовМетаданных и ИдентификаторыОбъектовРасширений, процедуру выгрузки и загрузки в узлах РИБ. Для частичного встраивания отдельных функций библиотеки в конфигурации без постановки на поддержку.
- РекомендуемыйОбъемОперативнойПамяти - Число - объем памяти в гигабайтах, рекомендуемый для комфортной работы в программе.
ПараметрыБазовойФункциональности = ОбщегоНазначения.ОбщиеПараметрыБазовойФункциональности();
Для вызова из обработчика ПриНачальномЗаполненииЭлементов.
Заполняет колонки с именами ИмяРеквизита_<КодЯзыка> текстовыми значениями для указанных кодов языков.
МультиязычностьСервер.ЗаполнитьМультиязычныйРеквизит(Элемент, "Наименование", "ru = 'Сообщение на русском'; en =
'English message'", КодыЯзыков);
Добавляет к имени поля в тексте запроса языковой суффикс текущего языка.
Примеры конвертации полей:
- если параметр ИмяПоля равно "Свойства.Заголовок", то поле преобразует в "Свойства.ЗаголовокЯзык1";
- если параметр ИмяПоля равно "Свойства.Заголовок КАК Заголовок",
то поле преобразует в "Свойства.ЗаголовокЯзык1 КАК Заголовок".
МультиязычностьСервер.ИзменитьПолеЗапросаПодТекущийЯзык(ТекстЗапроса, ИмяПоля);
Загружает настройку из хранилища общих настроек, как метод платформы Загрузить,
объектов СтандартноеХранилищеНастроекМенеджер или ХранилищеНастроекМенеджер.<Имя хранилища>,
но с поддержкой длины ключа настроек более 128 символов путем хеширования части,
которая превышает 96 символов.
Кроме того, возвращает указанное значение по умолчанию, если настройки не существуют.
Если нет права СохранениеДанныхПользователя, возвращается значение по умолчанию без ошибки.
В возвращаемом значении очищаются ссылки на несуществующий объект в базе данных, а именно
- возвращаемая ссылка заменяется на указанное значение по умолчанию;
- из данных типа Массив ссылки удаляются;
- у данных типа Структура и Соответствие ключ не меняется, а значение устанавливается Неопределено;
- анализ значений в данных типа Массив, Структура, Соответствие выполняется рекурсивно.
// Сервер
Настройки = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(Параметры.КлючОбщихНастроек,
"НастройкиФоновогоЗадания_" + Параметры.УникальныйИдентификатор);
// Клиент
Результат = ОбщегоНазначенияВызовСервера.ХранилищеОбщихНастроекЗагрузить(
КлючОбъекта,
КлючНастроек,
ЗначениеПоУмолчанию,
ОписаниеНастроек,
ИмяПользователя);
Сохраняет настройку в хранилище общих настроек, как метод платформы Сохранить, объектов СтандартноеХранилищеНастроекМенеджер или ХранилищеНастроекМенеджер.<Имя хранилища>, но с поддержкой длины ключа настроек более 128 символов путем хеширования части, которая превышает 96 символов.
Если нет права СохранениеДанныхПользователя, сохранение пропускается без ошибки.
ОбщегоНазначения.ХранилищеОбщихНастроекСохранить("Справочники.Контрагенты", КлючНастроек, Настройки);
// Клиент
ОбщегоНазначенияВызовСервера.ХранилищеОбщихНастроекСохранить(
КлючОбъекта,
КлючНастроек,
Настройки,
ОписаниеНастроек,
ИмяПользователя,
ОбновитьПовторноИспользуемыеЗначения);
Загружает настройку из хранилища настроек данных форм, как метод платформы Загрузить,
объектов СтандартноеХранилищеНастроекМенеджер или ХранилищеНастроекМенеджер.<Имя хранилища>,
но с поддержкой длины ключа настроек более 128 символов путем хеширования части,
которая превышает 96 символов.
Кроме того, возвращает указанное значение по умолчанию, если настройки не существуют.
Если нет права СохранениеДанныхПользователя, возвращается значение по умолчанию без ошибки.
В возвращаемом значении очищаются ссылки на несуществующий объект в базе данных, а именно
- возвращаемая ссылка заменяется на указанное значение по умолчанию;
- из данных типа Массив ссылки удаляются;
- у данных типа Структура и Соответствие ключ не меняется, а значение устанавливается Неопределено;
- анализ значений в данных типа Массив, Структура, Соответствие выполняется рекурсивно.
// Сервер
Результат = ОбщегоНазначения.ХранилищеНастроекДанныхФормЗагрузить(
КлючОбъекта,
КлючНастроек,
ЗначениеПоУмолчанию,
ОписаниеНастроек,
ИмяПользователя);
// Клиент
Результат = ОбщегоНазначенияВызовСервера.ХранилищеНастроекДанныхФормЗагрузить(
КлючОбъекта,
КлючНастроек,
ЗначениеПоУмолчанию,
ОписаниеНастроек,
ИмяПользователя);
Сохраняет настройку в хранилище настроек данных форм, как метод платформы Сохранить,
объектов СтандартноеХранилищеНастроекМенеджер или ХранилищеНастроекМенеджер.<Имя хранилища>,
но с поддержкой длины ключа настроек более 128 символов путем хеширования части,
которая превышает 96 символов.
Если нет права СохранениеДанныхПользователя, сохранение пропускается без ошибки.
См. ОбщегоНазначения.ХранилищеНастроекДанныхФормСохранить
// Сервер
ОбщегоНазначения.ХранилищеНастроекДанныхФормСохранить(КлючОбъекта, КлючНастроек, Настройки, ОписаниеНастроек, ИмяПользователя, ОбновитьПовторноИспользуемыеЗначения)
// Клиент
ОбщегоНазначенияВызовСервера.ХранилищеНастроекДанныхФормСохранить(КлючОбъекта, КлючНастроек, Настройки, ОписаниеНастроек, ИмяПользователя, ОбновитьПовторноИспользуемыеЗначения)
Удаляет настройку из хранилища общих настроек, как метод платформы Удалить,
объектов СтандартноеХранилищеНастроекМенеджер или ХранилищеНастроекМенеджер.<Имя хранилища>,
но с поддержкой длины ключа настроек более 128 символов путем хеширования части,
которая превышает 96 символов.
Если нет права СохранениеДанныхПользователя, удаление пропускается без ошибки.
// Сервер
ОбщегоНазначения.ХранилищеОбщихНастроекУдалить(
КлючОбъекта,
КлючНастроек,
ИмяПользователя);
// Клиент
ОбщегоНазначенияВызовСервера.ХранилищеОбщихНастроекУдалить(
КлючОбъекта,
КлючНастроек,
ИмяПользователя);
Сохраняет настройку в хранилище системных настроек, как метод платформы Сохранить
объекта СтандартноеХранилищеНастроекМенеджер, но с поддержкой длины ключа настроек
более 128 символов путем хеширования части, которая превышает 96 символов.
Если нет права СохранениеДанныхПользователя, сохранение пропускается без ошибки.
// Сервер
ОбщегоНазначения.ХранилищеСистемныхНастроекСохранить(КлючОбъекта, КлючНастроек, Настройки, ОписаниеНастроек, ИмяПользователя, ОбновитьПовторноИспользуемыеЗначения)
// Клиент
ОбщегоНазначенияВызовСервера.ХранилищеСистемныхНастроекСохранить(КлючОбъекта, КлючНастроек, Настройки, ОписаниеНастроек, ИмяПользователя, ОбновитьПовторноИспользуемыеЗначения)
Загружает настройку из хранилища системных настроек, как метод платформы Загрузить,
объекта СтандартноеХранилищеНастроекМенеджер, но с поддержкой длины ключа настроек
более 128 символов путем хеширования части, которая превышает 96 символов.
Кроме того, возвращает указанное значение по умолчанию, если настройки не существуют.
Если нет права СохранениеДанныхПользователя, возвращается значение по умолчанию без ошибки.
В возвращаемом значении очищаются ссылки на несуществующий объект в базе данных, а именно:
- возвращаемая ссылка заменяется на указанное значение по умолчанию;
- из данных типа Массив ссылки удаляются;
- у данных типа Структура и Соответствие ключ не меняется, а значение устанавливается Неопределено;
- анализ значений в данных типа Массив, Структура, Соответствие выполняется рекурсивно
// Сервер
Результат = ОбщегоНазначения.ХранилищеСистемныхНастроекЗагрузить(КлючОбъекта, КлючНастроек, ЗначениеПоУмолчанию, ОписаниеНастроек, ИмяПользователя)
// Клиент
Результат = ОбщегоНазначенияВызовСервера.ХранилищеСистемныхНастроекЗагрузить(КлючОбъекта, КлючНастроек, ЗначениеПоУмолчанию, ОписаниеНастроек, ИмяПользователя)
Сохраняет несколько настроек в хранилище общих настроек, как метод платформы Сохранить,
объектов СтандартноеХранилищеНастроекМенеджер или ХранилищеНастроекМенеджер.<Имя хранилища>,
но с поддержкой длины ключа настроек более 128 символов путем хеширования части,
которая превышает 96 символов.
Если нет права СохранениеДанныхПользователя, сохранение пропускается без ошибки.
// Сервер
ОбщегоНазначения.ХранилищеОбщихНастроекСохранитьМассив(НесколькоНастроек, ОбновитьПовторноИспользуемыеЗначения)
// Клиент
ОбщегоНазначенияВызовСервера.ХранилищеОбщихНастроекСохранитьМассив(НесколькоНастроек, ОбновитьПовторноИспользуемыеЗначения)
Удаляет настройку из хранилища системных настроек, как метод платформы Удалить,
объекта СтандартноеХранилищеНастроекМенеджер, но с поддержкой длины ключа настроек
более 128 символов путем хеширования части, которая превышает 96 символов.
Если нет права СохранениеДанныхПользователя, удаление пропускается без ошибки.
// Сервер
ОбщегоНазначения.ХранилищеСистемныхНастроекУдалить(КлючОбъекта, КлючНастроек, ИмяПользователя)
// Клиент
ОбщегоНазначенияВызовСервера.ХранилищеСистемныхНастроекУдалить(КлючОбъекта, КлючНастроек, ИмяПользователя)
Удаляет настройку из хранилища настроек данных форм, как метод платформы Удалить,
объектов СтандартноеХранилищеНастроекМенеджер или ХранилищеНастроекМенеджер.<Имя хранилища>,
но с поддержкой длины ключа настроек более 128 символов путем хеширования части,
которая превышает 96 символов.
Если нет права СохранениеДанныхПользователя, удаление пропускается без ошибки.
ОбщегоНазначенияВызовСервера.ХранилищеНастроекДанныхФормУдалить(КлючОбъекта, КлючНастроек, ИмяПользователя)
Управляет состоянием поля табличного документа - выводит в поле табличного документа статус "НеИспользовать", "Неактуальность", "ФормированиеОтчета"
ОбщегоНазначенияКлиентСервер.УстановитьСостояниеПоляТабличногоДокумента(ПолеТабличногоДокумента, Состояние)
Раскладывает полное имя файла на составляющие.
ПолноеИмяФайла = "c:\temp\test.txt";
ЧастиИмениФайла = ОбщегоНазначенияКлиентСервер.РазложитьПолноеИмяФайла(ПолноеИмяФайла);
// В результате структура полей будет заполнена следующим образом:
// ПолноеИмя: "c:\temp\test.txt",
// Путь: "c:\temp\",
// Имя: "test.txt",
// Расширение: ".txt",
// ИмяБезРасширения: "test".
Добавляет к переданному пути каталога конечный символ-разделитель, если он отсутствует.
КаталогФайлов = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути("C:\Temp");
// КаталогФайлов = "C:\Temp\"
Составляет полное имя файла из имени каталога и имени файла.
ИмяАрхива = ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла(КаталогСборки, "data.zip");
Заменяет недопустимые символы в имени файла.
Результат = ОбщегоНазначенияКлиентСервер.ЗаменитьНедопустимыеСимволыВИмениФайла(ИмяФайла, НаЧтоМенять)
Выделяет из имени файла его расширение (набор символов после последней точки).
Результат = ОбщегоНазначенияКлиентСервер.ПолучитьРасширениеИмениФайла("C:\Архив\data.zip");
// Результат = "zip"
Преобразует расширение файла в нижний регистр и убирает точку. Имя файла или полный путь файла передавать нельзя
ПутьКФайлу = "c:\Arh\1.zip";
СтруктураПути = ОбщегоНазначенияКлиентСервер.РазложитьПолноеИмяФайла(ПутьКФайлу);
// СтруктураПути.Расширение = ".zip"
РасширениеБезТочки = ОбщегоНазначенияКлиентСервер.РасширениеБезТочки(СтруктураПути.Расширение);
// РасширениеБезТочки = "zip"
Возвращает имя файла с расширением.
Если расширение пустое, тогда точка не добавляется.
Имя = ОбщегоНазначенияКлиентСервер.ПолучитьИмяСРасширением(Файл.Наименование, Файл.Расширение);
Возвращает строку недопустимых символов из имени файла.
Согласно http://en.wikipedia.org/wiki/Filename - в разделе "Reserved characters and words".
СтрИсключения = ОбщегоНазначенияКлиентСервер.ПолучитьНедопустимыеСимволыВИмениФайла();
Проверяет наличие недопустимых символов в имени файла.
МассивНайденныхНедопустимыхСимволов = ОбщегоНазначенияКлиентСервер.НайтиНедопустимыеСимволыВИмениФайла(ИмяФайла);
Если МассивНайденныхНедопустимыхСимволов.Количество() <> 0 Тогда
ИмяФайла = ОбщегоНазначенияКлиентСервер.ЗаменитьНедопустимыеСимволыВИмениФайла(ИмяФайла, "");
КонецЕсли;
Возвращает путь к общему сетевому каталогу временных файлов.
Для корректной работы программы в клиент-серверном варианте временные файлы следует размещать в общем сетевом каталоге, одинаково доступном с любого сервера в кластере.
Это обеспечит доступ со всех серверов кластера к временному файлу, например, для его обработки в фоновых заданиях, работающих параллельно
Путь к каталогу определяется в общих настройках администрирования.
Если путь не заполнен или информационная база развернута в файловом варианте, то каталог создается во временном каталоге пользователя.
Следует удалять временные файлы в каталоге самостоятельно после их использования, т.к. при активном создании файлов временные файлы могут занять значительную часть дискового пространства.
КаталогФайлов = ФайловаяСистема.ОбщийКаталогВременныхФайлов("Exchange");
Раскладывает строку в массив строк, используя "./\" как разделитель.
МассивРеквизитов = ОбщегоНазначенияКлиентСервер.РазложитьСтрокуПоТочкамИСлэшам(ПриведенныйПуть);
Генерирует полное имя временного файла во временном каталоге.
В случае если передан путь каталога, используется переданное значение.
В случае если передано имя файла, используется переданное имя (вычленяется в общем случае короткое имя без пути).
В случае передачи некорректных значений имен каталога и/или имени файла - заменяются на сгенерированные.
Имеет смысл использовать в случае когда требуется временный файл во временном каталоге с определенным коротким именем. Например при формировании архива ZIP.
В случаях когда короткое имя файла значения не имеет, нужно использовать ИмяФайла = ПолучитьИмяВременногоФайла().
В этом случае формируемое имя будет короче на длину имени временного каталога, что иногда имеет значение в силу ограничений на максимальную длину полного пути файла.
ОписаниеОповещения = Новый ОписаниеОповещения("ПолучитьИмяВременногоФайлаЗавершение", ЭтотОбъект, Параметры);
ФайловаяСистемаКлиент.ПолучитьПолноеИмяВременногоФайла(ОписаниеОповещения);
&НаКлиенте
Процедура ПолучитьИмяВременногоФайлаЗавершение(ИмяВременногоФайла, Параметры) Экспорт
//...
КонецПроцедуры
Устанавливает представление поля Дата в списках, содержащих реквизит с составом даты Дата и время.
Подробнее см. Стандарт "Поле "Дата" в списках".
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
СтандартныеПодсистемыСервер.УстановитьУсловноеОформлениеПоляДата(ЭтотОбъект);
Показать форму вопроса
СтандартныеПодсистемыКлиент.ПоказатьВопросПользователю(ОписаниеОповещенияОЗавершении, ТекстВопроса, Кнопки, ДополнительныеПараметры)
Возвращает признак того, является ли конфигурация базовой.
Базовые версии конфигураций могут иметь программные ограничения, действие которых можно предусмотреть с помощью этой функции.
Конфигурация считается базовой, если в ее имени есть термин "Базовая", например, "УправлениеТорговлейБазовая".
Если СтандартныеПодсистемыСервер.ЭтоБазоваяВерсияКонфигурации()
ОбщегоНазначенияКлиентСервер.УдалитьЗначениеИзМассива(Обмены, Перечисления.ВидыТранспортаСообщенийОбмена.COM);
КонецЕсли;
Предусмотрено две одноименных функции: СтандартныеПодсистемыСервер.ЭтоБазоваяВерсияКонфигурации для вызова с сервера СтандартныеПодсистемыКлиент.ЭтоБазоваяВерсияКонфигурации для вызова с клиента
Возвращает новую структуру дополнительных параметров для процедуры ПоказатьВопросПользователю.
ПараметрыВопросаПользователю = СтандартныеПодсистемыКлиент.ПараметрыВопросаПользователю();
ПараметрыВопросаПользователю.Заголовок = ТекстЗаголовка;
ПараметрыВопросаПользователю.ПредлагатьБольшеНеЗадаватьЭтотВопрос = Ложь;
ПараметрыВопросаПользователю.Картинка = БиблиотекаКартинок.Информация32;
Кнопки = Новый СписокЗначений;
Кнопки.Добавить("ОК", НСтр("ru = 'ОК';
|en = 'OK'"));
СтандартныеПодсистемыКлиент.ПоказатьВопросПользователю(
Неопределено,
Строка.Подсказка,
Кнопки,
ПараметрыВопросаПользователю);
Возвращает номер версии "Библиотеки стандартных подсистем" (БСП), встроенной в конфигурацию.
Результат = СтандартныеПодсистемыСервер.ВерсияБиблиотеки();
Получает уникальный идентификатор информационной базы, с помощью которого можно различать различные экземпляры информационных баз, например, при сборе статистики или в механизмах внешнего управления базами.
Если идентификатор не заполнен, то его значение автоматически устанавливается и возвращается.
Идентификатор хранится в константе ИдентификаторИнформационнойБазы.
Константа ИдентификаторИнформационнойБазы не должна входить в составы планов обмена, чтобы иметь
различные значения в каждой информационной базе (узле РИБ).
Результат = СтандартныеПодсистемыСервер.ИдентификаторИнформационнойБазы()
Возвращает описания форматов сохранения табличного документа.
Возвращаемое значение:
ТаблицаЗначений: * ТипФайлаТабличногоДокумента - ТипФайлаТабличногоДокумента - значение, соответствующее формату; * Ссылка - ПеречислениеСсылка.ФорматыСохраненияОтчетов - ссылка на метаданные, где хранится представление; * Представление - Строка - представление типа файла (заполняется из перечисления); * Расширение - Строка - тип файла для операционной системы; * Картинка - Картинка - картинка формата.
Результат = СтандартныеПодсистемыСервер.НастройкиФорматовСохраненияТабличногоДокумента()
Вызывается при необходимости открыть форму списка активных пользователей, которые в данный момент времени работают с системой.
&НаКлиенте
Процедура СписокАктивныхПользователейНажатие(Элемент)
СтандартныеПодсистемыКлиент.ОткрытьСписокАктивныхПользователей();
КонецПроцедуры
Устанавливает заголовок главного окна приложения, используя значение константы ЗаголовокПриложения и заголовок приложения по умолчанию.
СтандартныеПодсистемыКлиент.УстановитьРасширенныйЗаголовокПриложения();
Возвращает сохраненные в информационной базы параметры администрирования.
Предназначена для использования в механизмах, требующих для свой работы
ввода параметров администрирования информационной базы и/или кластера серверов.
Например, блокировка установки соединений с информационной базой.
См. так же УстановитьПараметрыАдминистрирования.
Возвращаемое значение:
Структура - содержит свойства двух структур АдминистрированиеКластераКлиентСервер.ПараметрыАдминистрированияКластера и АдминистрированиеКластераКлиентСервер.ПараметрыАдминистрированияИнформационнойБазыКластера. При этом поля, содержащие пароли, возвращаются пустыми. Если параметры администрирования не были ранее сохранены при помощи функции УстановитьПараметрыАдминистрирования, то будут возвращены автоматически вычисленные параметры администрирования по умолчанию.
Результат = СтандартныеПодсистемыСервер.ПараметрыАдминистрирования()
Возвращает признак того, что выполнение происходит на учебной платформе.
Используется, когда нужно поддержать работу кода, который зависит
от ограничений учебной версии платформы.
// Сервер
Результат = СтандартныеПодсистемыСервер.ЭтоУчебнаяПлатформа()
// Клиент
Результат = СтандартныеПодсистемыКлиент.ЭтоУчебнаяПлатформа()
Выполняет действия перед продолжением выполнения обработчика регламентного задания.
Например, проверяет возможность выполнения обработчика регламентного задания.
Если администратор не заблокировал выполнение регламентных заданий до окончания обновления ИБ, тогда требуется прекратить выполнение обработчика.
ОбщегоНазначения.ПриНачалеВыполненияРегламентногоЗадания(РегламентноеЗадание)
Проверяет, умещаются ли переданные табличные документы на страницу при печати.
Результат = ОбщегоНазначения.ПроверитьВыводТабличногоДокумента(ТабДокумент, ВыводимыеОбласти, РезультатПриОшибке)
Выполняет пропорциональное распределение суммы в соответствиис заданными коэффициентами распределения.
Возвращаемое значение:
Массив из Число - массив размерностью равный массиву коэффициентов, содержит суммы в соответствии с весом коэффициента (из массива коэффициентов). В случае, если распределить невозможно (кол-во коэффициентов = 0 есть коэффициенты с отрицательным значением или суммарный вес коэффициентов = 0), тогда будет возвращено Неопределено.
Коэффициенты = Новый Массив;
Коэффициенты.Добавить(1);
Коэффициенты.Добавить(2);
Результат = ОбщегоНазначенияКлиентСервер.РаспределитьСуммуПропорциональноКоэффициентам(1, Коэффициенты);
// Результат = [0.33, 0.67]
Предлагает пользователю установить расширение для работы с 1С:Предприятием в веб-клиенте.
Предназначена для использования в начале участков кода, в которых ведется работа с файлами.
Оповещение = Новый ОписаниеОповещения("ПечатьДокументаЗавершение", ЭтотОбъект);
ТекстСообщения = НСтр("ru = 'Для печати документа необходимо установить расширение для работы с 1С:Предприятием.'");
ФайловаяСистемаКлиент.ПодключитьРасширениеДляРаботыСФайлами(Оповещение, ТекстСообщения);
Процедура ПечатьДокументаЗавершение(РасширениеПодключено, ДополнительныеПараметры) Экспорт
Если РасширениеПодключено Тогда
// код печати документа, рассчитывающий на то, что расширение подключено.
// ...
Иначе
// код печати документа, который работает без подключенного расширения.
// ...
КонецЕсли;
Асинхронное получение имени временного каталога.
ОписаниеОповещения = Новый ОписаниеОповещения("ПродолжитьОткрытиеФайлаMXLПослеСозданияКаталога", ЭтотОбъект, ВыбранноеВложение);
ФайловаяСистемаКлиент.СоздатьВременныйКаталог(ОписаниеОповещения);
Получает массив значений из отмеченных элементов списка значений.
ОрганизацииДляНастройки = ОбщегоНазначенияКлиентСервер.ОтмеченныеЭлементы(СписокОрганизаций);
Показывает диалог выбора файла.
При работе в веб-клиенте пользователю будет показан диалог установки расширения для работы с файлами, если требуется.
ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
ДиалогОткрытияФайла.Фильтр = НСтр("ru = 'Данные загрузки (*.xml)|*.xml';
|en = 'Import data (*.xml)|*.xml'");
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ДляЗагрузки", Истина);
ДополнительныеПараметры.Вставить("ЗагружатьПослеВыбора", ЗагружатьПослеВыбора);
ОповещениеВыбора = Новый ОписаниеОповещения("ВыбранФайл", ЭтотОбъект, ДополнительныеПараметры);
ФайловаяСистемаКлиент.ПоказатьДиалогВыбора(ОповещениеВыбора, ДиалогОткрытияФайла);
Показывает диалог выбора каталога.
Оповещение = Новый ОписаниеОповещения("ПослеВыбораКаталога", ЭтотОбъект, РезультатВыгрузки);
ФайловаяСистемаКлиент.ВыбратьКаталог(Оповещение);
Подключает внешнюю компоненту, выполненную по технологии Native API или COM, из макета конфигурации (хранится в виде ZIP-архива).
ПодключаемыйМодуль = ОбщегоНазначения.ПодключитьКомпонентуИзМакета(
"QRCodeExtension",
"ОбщийМакет.КомпонентаПечатиQRКода");
Если ПодключаемыйМодуль <> Неопределено Тогда
// ПодключаемыйМодуль содержит созданный экземпляр подключенной компоненты.
КонецЕсли;
ПодключаемыйМодуль = Неопределено;
Формирует уникальное имя файла в указанной папке, при необходимости добавляя к имени файла порядковый номер, например: "файл (2).txt", "файл (3).txt" и т.п.
Результат = ФайловаяСистемаКлиент.УникальноеИмяФайла(ИмяФайла)
Процедура предназначена для заполнения реквизита формы типа ДанныеФормыДерево из объекта ДеревоЗначений
ОбщегоНазначения.ЗаполнитьКоллекциюЭлементовДереваДанныхФормы(КоллекцияЭлементовДерева, ДеревоЗначений)
Получает идентификатор (метод ПолучитьИдентификатор()) строки дерева значений для заданного значения поля строки дерева. Используется для позиционирования курсора в иерархических списках.
ОбщегоНазначенияКлиентСервер.ПолучитьИдентификаторСтрокиДереваПоЗначениюПоля(ИмяПоля, ИдентификаторСтроки, КоллекцияЭлементовДерева, КлючСтроки, ПрекратитьПоиск)
Переводит параметры сеанса в состояние "Не установлено".
ОбщегоНазначения.ОчиститьПараметрыСеанса(ПараметрыДляОчистки, Исключения)
Сохраняет персональные настройки пользователя, относящиеся к подсистеме БазоваяФункциональность.
Для получения настроек предусмотрены следующие функции:
- ОбщегоНазначенияКлиент.ПредлагатьУстановкуРасширенияРаботыСФайлами(),
- СтандартныеПодсистемыСервер.ЗапрашиватьПодтверждениеПриЗавершенииПрограммы(),
- СтандартныеПодсистемыСервер.ПоказыватьПредупреждениеОбУстановленныхОбновленияхПрограммы().
ОбщегоНазначения.СохранитьПерсональныеНастройки(Настройки)
Снимает один элемент условного оформления, если это список значений.
ОбщегоНазначенияКлиентСервер.СнятьУсловноеОформлениеСпискаЗначений(УсловноеОформление, ИдентификаторПользовательскойНастройки, Значение)
В локальном режиме работы возвращает регламентные задания, соответствующие отбору. В модели сервиса - таблицу значений, в которой содержится описание найденных заданий в справочнике ОчередьЗаданий.
Отбор = Новый Структура();
Отбор.Вставить("Метаданные", "ОтправкаОтчетностиВБанк");
Задания = РегламентныеЗаданияСервер.НайтиЗадания(Отбор);
Изменяет задание очереди или регламентное.
В модели сервиса (разделение включено):
- в случае вызова в транзакции на задание устанавливается объектная блокировка,
- если задание создано на основе шаблона или предопределенное, может быть указано
только свойство Использование в параметре Параметры. Расписание в этом случае,
изменять нельзя, т.к. оно хранится централизованно в неразделенном Шаблоне задания,
отдельно для каждой области оно не сохраняется.
ПараметрыЗадания = Новый Структура;
ПараметрыЗадания.Вставить("Расписание", Расписание);
РегламентныеЗаданияСервер.ИзменитьЗадание(РегламентноеЗадание, ПараметрыЗадания);
Добавляет новое регламентное задание или новое задание в очередь при работе в модели сервиса.
ПараметрыЗадания = Новый Структура;
ПараметрыЗадания.Вставить("Расписание", Расписание);
ПараметрыЗадания.Вставить("Использование", Истина);
ПараметрыЗадания.Вставить("Метаданные", Метаданные.РегламентныеЗадания.ПроверкаВеденияУчета);
РегламентноеЗадание = РегламентныеЗаданияСервер.ДобавитьЗадание(ПараметрыЗадания);
Возвращает регламентное задание или задание из очереди при работе в модели сервиса.
Задание = РегламентныеЗаданияСервер.Задание(ИдентификаторЗадания);
Если Задание <> Неопределено Тогда
Форма.Расписание = Задание.Расписание;
Форма.РегламентноеЗаданиеИспользуется = Задание.Использование;
Форма.РасписаниеСтрокой = Строка(Форма.Расписание);
КонецЕсли;
Удаляет регламентное задание или задание из очереди при работе в модели сервиса.
Если ЗначениеЗаполнено(РегламентноеЗадание) Тогда
УстановитьПривилегированныйРежим(Истина);
РегламентныеЗаданияСервер.УдалитьЗадание(РегламентноеЗадание);
УстановитьПривилегированныйРежим(Ложь);
КонецЕсли;
Возвращает уникальный идентификатор задания из очереди или регламентного.
Для вызова требуются права администрирования или УстановитьПривилегированныйРежим.
УстановитьПривилегированныйРежим(Истина);
ИдентификаторЗадания = РегламентныеЗаданияСервер.УникальныйИдентификатор(Метаданные.РегламентныеЗадания.РассылкаОтчетов);
Возвращает РегламентноеЗадание из информационной базы.
В модели сервиса работает с регламентными заданиями платформы, а не с заданиями очереди, одинаково как в разделенном, так и в неразделенном режимах.
Результат = РегламентныеЗаданияСервер.ПолучитьРегламентноеЗадание(Идентификатор);
Устанавливает использование регламентного задания.
Перед вызовом требуется иметь право администрирования или УстановитьПривилегированныйРежим.
В модели сервиса работает с регламентными заданиями платформы, а не с заданиями очереди,
одинаково как в разделенном, так и в неразделенном режимах.
УстановитьПривилегированныйРежим(Истина);
РегламентныеЗаданияСервер.УстановитьИспользованиеРегламентногоЗадания(
Метаданные.РегламентныеЗадания.СинхронизацияДанныхСПриложениемВИнтернете, Ложь);
Устанавливает расписание регламентного задания.
Перед вызовом требуется иметь право администрирования или УстановитьПривилегированныйРежим.
В модели сервиса работает с регламентными заданиями платформы, а не с заданиями очереди,
одинаково как в разделенном, так и в неразделенном режимах.
УстановитьПривилегированныйРежим();
РасписаниеЗадания = Новый РасписаниеРегламентногоЗадания;
РасписаниеЗадания.ПериодПовтораДней = 1;
РасписаниеЗадания.ПериодПовтораВТечениеДня = 43200; // Каждые 12 часов.
РегламентныеЗаданияСервер.УстановитьРасписаниеРегламентногоЗадания(
ИдентификаторЗадания,
РасписаниеЗадания);
Возвращает признак установленной блокировки работы с внешними ресурсами. Такая блокировка устанавливается, например, при работе в копии БД.
Элементы.ГруппаРаботаСВнешнимиРесурсами.Видимость = Не РегламентныеЗаданияСервер.РаботаСВнешнимиРесурсамиЗаблокирована();
Преобразует структуру в РасписаниеРегламентногоЗадания.
РасписаниеЗначение = ОбщегоНазначенияКлиентСервер.СтруктураВРасписание(Расписание);
Преобразует РасписаниеРегламентногоЗадания в структуру.
Результат = ОбщегоНазначенияКлиентСервер.РасписаниеВСтруктуру(Новое РасписаниеРегламентногоЗадания)
Описание
Расписание = РегламентныеЗаданияСервер.РасписаниеРегламентногоЗадания(Задания.УникальныйИдентификатор, Истина);
Разрешает работу с внешними ресурсами
РегламентныеЗаданияСервер.РазблокироватьРаботуСВнешнимиРесурсами()
Возвращает использование регламентного задания.
Перед вызовом требуется иметь право администрирования или УстановитьПривилегированныйРежим.
В модели сервиса работает с регламентными заданиями платформы, а не с заданиями очереди,
одинаково как в разделенном, так и в неразделенном режимах.
УстановитьПривилегированныйРежим(Истина);
СинхронизироватьДанныеПоРасписанию = РегламентныеЗаданияСервер.РегламентноеЗаданиеИспользуется(
Метаданные.РегламентныеЗадания.СинхронизацияДанныхСПриложениемВИнтернете);
Возвращает текущую дату, приведенную к часовому поясу сеанса. Предназначена для использования вместо функции ТекущаяДата() в клиентском кодев тех случаях, когда нет возможности перевести выполнение алгоритма в серверный код. Функция возвращает время, близкое к результату функции ТекущаяДатаСеанса в серверном коде. Погрешность обусловлена временем выполнения серверного вызова. Кроме того, если на клиентском компьютере перевести время, то функция учтет это изменение не сразу, а только после следующего сброса кеша повторно используемых значений(см. также метод ОбновитьПовторноИспользуемыеЗначения). Поэтому алгоритмы, для которых точное время критически важно, следует размещать в серверном коде,а не в клиентском.
Результат = ОбщегоНазначенияКлиент.ДатаСеанса()
Возвращает значение настройки рабочей даты для пользователя или текущей даты сеанса, если рабочая дата пользователя не задана.
Результат = ОбщегоНазначения.ТекущаяДатаПользователя(ИмяПользователя)
Возвращает универсальную дату сеанса, получаемую из текущей даты сеанса. Функция возвращает время, близкое к результату функции УниверсальноеВремя() в серверном контексте. Погрешность обусловлена временем выполнения серверного вызова. Предназначена для использования вместо функции УниверсальноеВремя().
Результат = ОбщегоНазначенияКлиент.ДатаУниверсальная()
Преобразует локальную дату к формату "YYYY-MM-DDThh:mm:ssTZD" согласно ISO 8601.
// Сервер
Результат = ОбщегоНазначения.ПредставлениеЛокальнойДатыСоСмещением(ЛокальнаяДата)
// Клиент
Результат = ОбщегоНазначенияКлиент.ПредставлениеЛокальнойДатыСоСмещением(ЛокальнаяДата)
Возвращает значение настройки рабочей даты для пользователя.
Результат = ОбщегоНазначения.РабочаяДатаПользователя(ИмяПользователя)
Возвращает строковое представление интервала между переданными датами или относительно переданной даты и текущей даты сеанса.
Результат = ОбщегоНазначения.ИнтервалВремениСтрокой(ВремяНачала, ВремяОкончания);
// Результат = "менее одного дня"
// Результат = "3 дня"
// Результат = "более месяца"
// Результат = "более года"
Записывает конфиденциальные данные в безопасное хранилище. Вызывающий код должен самостоятельно устанавливать привилегированный режим. Безопасное хранилище недоступно для чтения пользователям (кроме администраторов), а доступно только коду, который делает обращения только к своей части данных и в том контексте, который предполагает чтение или запись конфиденциальных данных.
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
Если ТекущийПользовательМожетИзменятьПароль Тогда
УстановитьПривилегированныйРежим(Истина);
ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище(ТекущийОбъект.Ссылка, Логин, "Логин");
ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище(ТекущийОбъект.Ссылка, Пароль);
УстановитьПривилегированныйРежим(Ложь);
КонецЕсли;
КонецПроцедуры
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
Если ТекущийПользовательМожетИзменятьПароль Тогда
ЛогинИПароль = Новый Структура;
ЛогинИПароль.Вставить("Логин", Логин);
ЛогинИПароль.Вставить("Пароль", Пароль);
УстановитьПривилегированныйРежим(Истина);
ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище(ТекущийОбъект.Ссылка, ЛогинИПароль, Неопределено);
УстановитьПривилегированныйРежим(Ложь);
КонецЕсли;
КонецПроцедуры
Возвращает данные из безопасного хранилища. Вызывающий код должен самостоятельно устанавливать привилегированный режим. Безопасное хранилище недоступно для чтения пользователям (кроме администраторов), а доступно только коду, который делает обращения только к своей части данных и в том контексте, который предполагает чтение или запись конфиденциальных данных.
Если ТекущийПользовательМожетИзменятьПароль Тогда
УстановитьПривилегированныйРежим(Истина);
Логин = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(ТекущийОбъект.Ссылка, "Логин");
Пароль = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(ТекущийОбъект.Ссылка);
УстановитьПривилегированныйРежим(Ложь);
Иначе
Элементы.ГруппаЛогинИПароль.Видимость = Ложь;
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
ЛогинИПароль = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(ТекущийОбъект.Ссылка, Неопределено);
Удаляет конфиденциальные данные в безопасное хранилище. Вызывающий код должен самостоятельно устанавливать привилегированный режим. Безопасное хранилище недоступно для чтения пользователям (кроме администраторов), а доступно только коду, который делает обращения только к своей части данных и в том контексте, который предполагает чтение или запись конфиденциальных данных.
Процедура ПередУдалением(Отказ)
// Проверка значения свойства ОбменДанными.Загрузка отсутствует, так как удалять данные
// из безопасного хранилища нужно даже при удалении объекта при обмене данными.
УстановитьПривилегированныйРежим(Истина);
ОбщегоНазначения.УдалитьДанныеИзБезопасногоХранилища(Ссылка);
УстановитьПривилегированныйРежим(Ложь);
КонецПроцедуры
Преобразует (сериализует) любое значение в XML-строку. Преобразованы в могут быть только те объекты, для которых в синтакс-помощнике указано, что они сериализуются. //infostart.ru/1c/tools/311011/
// тест
Результат = ОбщегоНазначения.ЗначениеВСтрокуXML("тест")
//
// f93e113e-c83a-11e2-8026-0015e9b8c48d
//
Результат = ОбщегоНазначения.ЗначениеВСтрокуXML(Номенклатура)
// Метод в основном используется для сохранения/загрузки настроек
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
СтрокаXML = ПолучитьИзВременногоХранилища(Параметры.АдресВоВременномХранилище);
Ведомость = ОбщегоНазначения.ЗначениеИзСтрокиXML(СтрокаXML); // ТЗ из XML строки
Обработка = РеквизитФормыВЗначение("Объект");
Обработка.Зарплата.Загрузить(Ведомость.Зарплата.Выгрузить());
КонецПроцедуры
&НаСервере
Процедура ЗаписатьНаСервере()
СтрокаXML = ПолучитьИзВременногоХранилища(АдресВоВременномХранилище);
Ведомость = ОбщегоНазначения.ЗначениеИзСтрокиXML(СтрокаXML); // ТЗ из XML строки
Обработка = РеквизитФормыВЗначение("Объект");
Ведомость.Зарплата.Загрузить(Обработка.Зарплата.Выгрузить());
СтрокаXML = ОбщегоНазначения.ЗначениеВСтрокуXML(Ведомость); // ТЗ в XML строку
ПоместитьВоВременноеХранилище(СтрокаXML, АдресВоВременномХранилище);
КонецПроцедуры
Выполняет преобразование (десериализацию) XML-строки в значение.
Результат = ОбщегоНазначения.ЗначениеИзСтрокиXML(СтрокаXML)
Заменяет недопустимые символы в XML-строке на заданные символы.
Результат = ОбщегоНазначенияКлиентСервер.ЗаменитьНедопустимыеСимволыXML(Текст, СимволЗамены)
Формирует XDTO-объект по XML-представлению.
Результат = ОбщегоНазначения.ОбъектXDTOИзСтрокиXML(СтрокаXML, Фабрика)
Возвращает XML-представление XDTO-объекта.
Результат = ОбщегоНазначения.ОбъектXDTOВСтрокуXML(ОбъектXDTO, Фабрика)
Удаляет недопустимые символы в XML-строке.
Результат = ОбщегоНазначенияКлиентСервер.УдалитьНедопустимыеСимволыXML(Текст)
Преобразует строку в формате JSON в значение при помощи метода глобального контекста ПрочитатьJSON. См. ограничения в синтакс-помощнике. Объекты JSON по умолчанию преобразует в значения типа Соответствие. Имена свойств со значением типа Дата необходимо явно указывать, чтобы было выполнено преобразование. Ожидаемый формат дат - ISO (YYYY-MM-DDThh:mm:ssZ).
Результат = ОбщегоНазначения.JSONВЗначение(Строка, ИменаСвойствСоЗначениямиДата, ПрочитатьВСоответствие)
Преобразует значение в строку JSON при помощи метода глобального контекста ЗаписатьJSON. Допускаются не все типы значений, подробности см. в синтакс-помощнике. Даты преобразуются в формат ISO (YYYY-MM-DDThh:mm:ssZ).
Результат = ОбщегоНазначения.ЗначениеВJSON(Значение)
Открывает навигационную ссылку в программе, которая ассоциирована с протоколом навигационной ссылки. Допустимые протоколы: http, https, e1c, v8help, mailto, tel, skype. Для открытия проводника или файла в программе просмотра не следует формировать ссылку по протоколу file:// - для открытия проводника см. ОткрытьПроводник. - для открытия файла по расширению см. ОткрытьФайлВПрограммеПросмотра.
ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку("e1cib/navigationpoint/startpage"); // начальная страница.
ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку("v8help://1cv8/QueryLanguageFullTextSearchInData");
ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку("https://1c.ru");
ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку("mailto:help@1c.ru");
ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку("skype:echo123?call");
Открывает файл для просмотра или редактирования. Если файл открывается из двоичных данных во временном хранилище, предварительно сохраняет его во временный каталог.
ФайловаяСистемаКлиент.ОткрытьФайл(РасположениеФайла, ОбработчикЗавершения, ИмяФайла, ПараметрыОткрытия)
Запускает внешнюю программу на исполнение (например, *.exe, *bat), или системную команду (например, ping, tracert или traceroute, обращаться к rac-клиенту). Позволяет также получать код возврата и значения потоков вывода (stdout) и ошибок (stderr) При запуске внешней программы в пакетном режиме поток вывода и поток ошибок может возвращаться на не ожидаемом языке. Для того чтобы передать внешней программе язык, на котором ожидается результат следует: - указать язык в параметре запуска этой программы (если такой параметр предусмотрен). Например, в пакетном режиме платформы 1С:Предприятие предусмотрен ключ "/L en"; - в других случаях явно установить кодировку исполнения пакетной команды. См. свойство КодировкаИсполнения возвращаемого значения ФайловаяСистема.ПараметрыЗапускаПрограммы.
// Сервер
// Простой запуск
ФайловаяСистема.ЗапуститьПрограмму("calc");
// Запуск с ожиданием завершения
ПараметрыЗапускаПрограммы = ФайловаяСистема.ПараметрыЗапускаПрограммы();
ПараметрыЗапускаПрограммы.ДождатьсяЗавершения = Истина;
ФайловаяСистема.ЗапуститьПрограмму("C:\Program Files\1cv8\common\1cestart.exe",
ПараметрыЗапускаПрограммы);
// Запуск с ожиданием завершения и получением потока вывода
ПараметрыЗапускаПрограммы = ФайловаяСистема.ПараметрыЗапускаПрограммы();
ПараметрыЗапускаПрограммы.ДождатьсяЗавершения = Истина;
ПараметрыЗапускаПрограммы.ПолучитьПотокВывода = Истина;
Результат = ФайловаяСистема("ping 127.0.0.1 -n 5", ПараметрыЗапускаПрограммы);
ОбщегоНазначений.СообщитьПользователю(Результат.ПотокВывода);
// Запуск с ожиданием завершения и получением потока вывода и с конкатенацией команды запуска
ПараметрыЗапускаПрограммы = ФайловаяСистема.ПараметрыЗапускаПрограммы();
ПараметрыЗапускаПрограммы.ДождатьсяЗавершения = Истина;
ПараметрыЗапускаПрограммы.ПолучитьПотокВывода = Истина;
КомандаЗапуска = Новый Массив;
КомандаЗапуска.Добавить("ping");
КомандаЗапуска.Добавить("127.0.0.1");
КомандаЗапуска.Добавить("-n");
КомандаЗапуска.Добавить(5);
Результат = ФайловаяСистема.ЗапуститьПрограмму(КомандаЗапуска, ПараметрыЗапускаПрограммы);
ОбщегоНазначений.СообщитьПользователю(Результат.ПотокВывода);
// Клиент
// Простой запуск
ФайловаяСистемаКлиент.ЗапуститьПрограмму("calc");
// Запуск с ожиданием завершения и получения кода возврата:
ПараметрыЗапускаПрограммы = ФайловаяСистемаКлиент.ПараметрыЗапускаПрограммы();
ПараметрыЗапускаПрограммы.ДождатьсяЗавершения = Истина;
ПараметрыЗапускаПрограммы.ПолучитьПотокВывода = Истина;
ПараметрыЗапускаПрограммы.ПолучитьПотокОшибок = Истина;
Результат = ФайловаяСистемаКлиент.ЗапуститьПрограмму("ping 127.0.0.1 -n 5", ПараметрыЗапускаПрограммы);
КодВозврата = Результат.КодВозврата;
ПотокВывода = Результат.ПотокВывода;
Конструктор параметров для ФайловаяСистемаКлиент.ЗапуститьПрограмму.
Результат = ФайловаяСистемаКлиент.ПараметрыЗапускаПрограммы()
Открывает проводник с указанным путем. Если передан путь к файлу, то выполняет позиционирование курсора в проводнике на этом файле.
// Для Windows
ФайловаяСистемаКлиент.ОткрытьПроводник("C:\Users");
ФайловаяСистемаКлиент.ОткрытьПроводник("C:\Program Files\1cv8\common\1cestart.exe");
// Для Linux
ФайловаяСистемаКлиент.ОткрытьПроводник("/home/");
ФайловаяСистемаКлиент.ОткрытьПроводник("/opt/1C/v8.3/x86_64/1cv8c");
Открывает форму редактирования многострочного комментария.
ОбщегоНазначенияКлиент.ПоказатьФормуРедактированияКомментария(
Элемент.ТекстРедактирования, ЭтотОбъект, "Объект.Комментарий");
Открывает форму редактирования произвольного многострочного текста.
Оповещение = Новый ОписаниеОповещения("КомментарийЗавершениеВвода", ЭтотОбъект);
ОбщегоНазначенияКлиент.ПоказатьФормуРедактированияМногострочногоТекста(Оповещение, Элемент.ТекстРедактирования);
&НаКлиенте
Процедура КомментарийЗавершениеВвода(Знач ВведенныйТекст, Знач ДополнительныеПараметры) Экспорт
Если ВведенныйТекст = Неопределено Тогда
Возврат;
КонецЕсли;
Объект.МногострочныйКомментарий = ВведенныйТекст;
Модифицированность = Истина;
КонецПроцедуры
Сравнить две строки версий.
Результат = ОбщегоНазначенияКлиентСервер.СравнитьВерсии(СтрокаВерсии1, СтрокаВерсии2)
Получает номер версии конфигурации без номера сборки.
Результат = ОбщегоНазначенияКлиентСервер.ВерсияКонфигурацииБезНомераСборки(Версия)
Сравнить две строки версий.
Результат = ОбщегоНазначенияКлиентСервер.СравнитьВерсииБезНомераСборки(СтрокаВерсии1, СтрокаВерсии2)
Разбирает строку URI на составные части и возвращает в виде структуры. На основе RFC 3986.
Результат = ОбщегоНазначенияКлиентСервер.СтруктураURI(СтрокаURI)
Создает объект описания защищенного соединения OpenSSL. См. также описание объекта ЗащищенноеСоединениеOpenSSL в синтаксис-помощнике.
Результат = ОбщегоНазначенияКлиентСервер.НовоеЗащищенноеСоединение(СертификатКлиента, СертификатыУдостоверяющихЦентров)
Возвращает значения параметров, необходимых для работы клиентского кода конфигурации без дополнительных серверных вызовов.
Результат = СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиента()
Возвращает значения параметров, необходимых для работы клиентского кода при запуске конфигурации за один серверный вызов (для минимизации клиент-серверного взаимодействия и снижения времени запуска). С помощью этой функции можно обращаться к параметрам в клиентском коде, вызываемым из обработчиков событий: - ПередНачаломРаботыСистемы, - ПриНачалеРаботыСистемы. В этих обработчиках при запуске недопустимо использовать команды сброса кэша повторно используемых модулей, иначе запуск может привести к непредсказуемым ошибкам и лишним серверным вызовам.
Результат = СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиентаПриЗапуске()
Возвращает новую структуру параметров для вывода предупреждения перед завершением работы программы. Для использования в ОбщегоНазначенияКлиентПереопределяемый.ПередЗавершениемРаботыСистемы.
Результат = СтандартныеПодсистемыКлиент.ПредупреждениеПриЗавершенииРаботы()
Выполняет пропорциональное распределение суммы в соответствии с заданными коэффициентами распределения.
Коэффициенты = Новый Массив;
Коэффициенты.Добавить(1);
Коэффициенты.Добавить(2);
Результат = ОбщегоНазначенияКлиентСервер.РаспределитьСуммуПропорциональноКоэффициентам(1, Коэффициенты);
// Результат = [0.33, 0.67]
Вычисляет переданное выражение, предварительно устанавливая безопасный режим выполнения кода и безопасный режим разделения данных для всех разделителей, присутствующих в составе конфигурации.
// Пример 1
Параметры = Новый Структура;
Параметры.Вставить("Значение1", 1);
Параметры.Вставить("Значение2", 10);
Результат = ОбщегоНазначения.ВычислитьВБезопасномРежиме("Параметры.Значение1 = Параметры.Значение2", Параметры);
// Пример 2
Результат = ОбщегоНазначения.ВычислитьВБезопасномРежиме("СтандартныеПодсистемыСервер.ВерсияБиблиотеки()");
Выполнить экспортную процедуру объекта встроенного языка по имени. При включении профилей безопасности для вызова оператора Выполнить() используется переход в безопасный режим с профилем безопасности, используемым для информационной базы (если выше по стеку не был установлен другой безопасный режим).
ОбщегоНазначения.ВыполнитьМетодОбъекта(Объект, ИмяМетода, Параметры)
Вычисляет переданное выражение, предварительно устанавливая безопасный режим выполнения кода и безопасный режим разделения данных для всех разделителей, присутствующих в составе конфигурации.
// Пример 1
Параметры = Новый Структура;
Параметры.Вставить("Значение1", 1);
Параметры.Вставить("Значение2", 10);
Результат = ОбщегоНазначения.ВычислитьВБезопасномРежиме("Параметры.Значение1 = Параметры.Значение2", Параметры);
// Пример 2
Результат = ОбщегоНазначения.ВычислитьВБезопасномРежиме("СтандартныеПодсистемыСервер.ВерсияБиблиотеки()");
Выполнить экспортную процедуру по имени с уровнем привилегий конфигурации. При включении профилей безопасности для вызова оператора Выполнить() используется переход в безопасный режим с профилем безопасности, используемым для информационной базы (если выше по стеку не был установлен другой безопасный режим).
Параметры = Новый Массив();
Параметры.Добавить("1");
ОбщегоНазначения.ВыполнитьМетодКонфигурации("МойОбщийМодуль.МояПроцедура", Параметры);
Возвращает описание защиты от опасных действий с отключенными предупреждениями.
Результат = ОбщегоНазначения.ОписаниеЗащитыБезПредупреждений()
Проверяет соответствие ИНН требованиям.
Результат = РегламентированныеДанныеКлиентСервер.ИННСоответствуетТребованиям(ИНН, ЭтоЮридическоеЛицо, ТекстСообщения)
Проверяет соответствие КПП требованиям. Согласно приложению к приказу ФНС России от 29.06.2012 N ММВ-7-6/435@ "Об утверждении Порядка и условий присвоения, применения, а также изменения идентификационного номера налогоплательщика".
Результат = РегламентированныеДанныеКлиентСервер.КППСоответствуетТребованиям(КПП, ТекстСообщения)
Проверяет соответствие ОГРН требованиям.
Результат = РегламентированныеДанныеКлиентСервер.ОГРНСоответствуетТребованиям(ОГРН, ЭтоЮридическоеЛицо, ТекстСообщения)
Проверяет номер страхового свидетельства на соответствие требованиям ПФР.
Результат = РегламентированныеДанныеКлиентСервер.СтраховойНомерПФРСоответствуетТребованиям(СтраховойНомер, ТекстСообщения)
Проверяет соответствие кода ОКПО требованиям стандартов.
Результат = РегламентированныеДанныеКлиентСервер.КодПоОКПОСоответствуетТребованиям(ПроверяемыйКод, ЭтоЮридическоеЛицо, ТекстСообщения)
Проверка контрольного ключа в номере лицевого счета (9-й разряд номера счета), алгоритм установлен документом: "ПОРЯДОК РАСЧЕТА КОНТРОЛЬНОГО КЛЮЧА В НОМЕРЕ ЛИЦЕВОГО СЧЕТА" (утвержден ЦБ РФ 08.09.1997 N 515).
Результат = РегламентированныеДанныеКлиентСервер.КонтрольныйКлючЛицевогоСчетаСоответствуетТребованиям(НомерСчета, БИК, ЭтоБанк)
Формирует краткое представление из полного имени физического лица.
Результат = ФизическиеЛицаКлиентСервер.ФамилияИнициалы("Петров Василий Иванович");
- возвращает "Петров В. И.".
Раскладывает полное имя физического лица на составные части - фамилию, имя и отчество. Если в конце полного имени встречаются "оглы", "улы", "уулу", "кызы" или "гызы", то они также считаются частью отчества.
1. ФизическиеЛицаКлиентСервер.ЧастиИмени("Иванов Иван Иванович")
//вернет структуру со значениями свойств: "Иванов", "Иван", "Иванович".
2. ФизическиеЛицаКлиентСервер.ЧастиИмени("Смит Джон")
//вернет структуру со значениями свойств: "Смит", "Джон", "".
3. ФизическиеЛицаКлиентСервер.ЧастиИмени("Алиев Ахмед Октай оглы")
//вернет структуру со значениями свойств: "Алиев", "Ахмед", "Октай оглы".
Проверяет, верно ли написано ФИО физического лица. ФИО считается верным, если содержит только кириллицу, либо только латиницу.
Результат = ФизическиеЛицаКлиентСервер.ФИОНаписаноВерно(ФИО, ТолькоКириллица)
Проверяет email-адрес на соответствие требованиям стандартов RFC 5321, RFC 5322, а также RFC 5335, RFC 5336 и RFC 3696. Кроме того, функция ограничивает использование спецсимволов.
Результат = ОбщегоНазначенияКлиентСервер.АдресЭлектроннойПочтыСоответствуетТребованиям(Адрес, РазрешитьЛокальныеАдреса)
Проверяет, что введенная строка с email-адресами введена правильно. Формат строки: Z = ИмяПользователя|[Имя Пользователя] [<]пользователь@почтовый_сервер[>], Строка = Z[<разделитель*>Z]. Прим.: разделитель* - имеется ввиду любой разделитель адресов.
Результат = ОбщегоНазначенияКлиентСервер.РазобратьСтрокуСПочтовымиАдресами(Адреса, ВызыватьИсключение)
Разбирает строку с адресами электронной почты. При разборе проверяет корректность адресов.
Результат = ОбщегоНазначенияКлиентСервер.АдресаЭлектроннойПочтыИзСтроки(СписокАдресов)
Открывает форму журнала регистрации с установленным отбором.
ЖурналРегистрацииКлиент.ОткрытьЖурналРегистрации(Отбор, Владелец)
Записывает сообщение в журнал регистрации. Если параметр ЗаписатьСобытия = Истина, то запись выполняется сразу (обращение к серверу). Если ЗаписатьСобытия = Ложь (по умолчанию), то сообщение помещается в очередь, которая может быть записана позднее, при следующем вызове этой или другой процедуры, в которую передается в качестве параметра очередь СообщенияДляЖурналаРегистрации.
ЖурналРегистрацииКлиент.ДобавитьСообщениеДляЖурналаРегистрации(СобытиеЖурналаРегистрации(), "Предупреждение",
НСтр("ru = 'Невозможно подключиться к сети Интернет для проверки обновлений.'"));
Процедура пакетной записи сообщений в журнал регистрации. После записи переменная СобытияДляЖурналаРегистрации очищается.
// Сервер
ЖурналРегистрации.ЗаписатьСобытияВЖурналРегистрации(СобытияДляЖурналаРегистрации)
// Клиент
ЖурналРегистрацииВызовСервера.ЗаписатьСобытияВЖурналРегистрации(СобытияДляЖурналаРегистрации)
Конструктор объекта WSПрокси с дополнительными возможностями по сравнению с конструктором Новый WSПрокси: - создает WSОпределения; - кэширует файл WSDL для ускорения работы с веб-сервисом; - не требуется указание ИнтернетПрокси (используется автоматически, если настроен); - позволяет делать быструю проверку доступности сервиса с помощью операции Ping.
ПараметрыПодключения = ОбщегоНазначения.ПараметрыПодключенияWSПрокси();
ПараметрыПодключения.АдресWSDL = "http://webservice.net/webservice.asmx?wsdl";
ПараметрыПодключения.URIПространстваИмен = "http://www.webservice.net/WebService/1.0.0.1";
ПараметрыПодключения.ИмяСервиса = "WebService_1_0_0_1";
ПараметрыПодключения.Таймаут = 20;
Прокси = ОбщегоНазначения.СоздатьWSПрокси(ПараметрыПодключения);
Возвращает номера версий программных интерфейсов удаленной системы, доступной через веб-сервис. Позволяет обеспечивать полную обратную совместимость при изменениях в программных интерфейсах с помощью их явного версионирования. Например, если программный интерфейс выше определенной версии, то только в этом случае допустимо вызывать у него новую функцию. В целях экономии трафика при интенсивном взаимодействии между вызывающей и вызываемой сторонами сведения о версиях кэшируются на одни сутки. Если для целей отладки требуется сбросить кэш раньше этого времени, следует удалить соответствующие записи из регистра сведений КэшПрограммныхИнтерфейсов.
Версии = ПолучитьВерсииИнтерфейса("http://vsrvx/sm", "ivanov",, "СервисПередачиФайлов");
Возвращает номера версий программных интерфейсов удаленной системы, подключенной через внешнее соединение. Позволяет обеспечивать полную обратную совместимость при изменениях в программных интерфейсах с помощью их явного версионирования. Например, если программный интерфейс выше определенной версии, то только в этом случае допустимо вызывать у него новую функцию.
Версии = ОбщегоНазначения.ПолучитьВерсииИнтерфейсаЧерезВнешнееСоединение(ВнешнееСоединение, "СервисПередачиФайлов");
Добавляет серверное оповещение в очередь для доставки на клиент. Оповещение доставляется через систему взаимодействия, либо забирается в рамках общего серверного вызова.
СерверныеОповещения.ОтправитьСерверноеОповещение(ИмяОповещения, Результат, Адресаты, ОтправитьСразу)
Для процедуры ПриДобавленииСерверныхОповещений общего модуля ОбщегоНазначенияПереопределяемый.
Результат = СерверныеОповещения.НовоеСерверноеОповещение(Имя)
Регистрирует ошибку в журнале регистрации, пойманную в обработчиках события //сервер ПриПериодическомПолученииДанныхКлиентаНаСервере //клиент ПередПериодическойОтправкойДанныхКлиентаНаСервер и ПослеПериодическогоПолученияДанныхКлиентаНаСервере.
// Сервер
МоментНачала = ТекущаяУниверсальнаяДатаВМиллисекундах();
Попытка
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЦентрМониторинга") Тогда
МодульЦентрМониторингаСлужебный = ОбщегоНазначения.ОбщийМодуль("ЦентрМониторингаСлужебный");
МодульЦентрМониторингаСлужебный.ПриПериодическомПолученииДанныхКлиентаНаСервере(Параметры, Результаты);
КонецЕсли;
Исключение
СерверныеОповещения.ОбработатьОшибку(ИнформацияОбОшибке());
КонецПопытки;
СерверныеОповещения.ДобавитьПоказатель(Результаты, МоментНачала,
"ЦентрМониторингаСлужебный.ПриПериодическомПолученииДанныхКлиентаНаСервере");
// Клиент
МоментНачала = ТекущаяУниверсальнаяДатаВМиллисекундах();
Попытка
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ЦентрМониторинга") Тогда
МодульЦентрМониторингаКлиентСлужебный = ОбщегоНазначенияКлиент.ОбщийМодуль("ЦентрМониторингаКлиентСлужебный");
МодульЦентрМониторингаКлиентСлужебный.ПередПериодическойОтправкойДанныхКлиентаНаСервер(Параметры);
КонецЕсли;
Исключение
СерверныеОповещенияКлиент.ОбработатьОшибку(ИнформацияОбОшибке());
КонецПопытки;
СерверныеОповещенияКлиент.ДобавитьПоказатель(МоментНачала,
"ЦентрМониторингаКлиентСлужебный.ПередПериодическойОтправкойДанныхКлиентаНаСервер");
Проверка завершения периодического ожидания для обработчиков события ПередПериодическойОтправкойДанныхКлиентаНаСервер.
ИмяСчетчика = "СтандартныеПодсистемы.ЦентрМониторинга";
Если Не СерверныеОповещенияКлиент.ЗакончилосьВремяОжидания(ИмяСчетчика) Тогда
Возврат;
КонецЕсли;
Добавляет показатель производительности в обработчиках событий // сервер ПриПериодическомПолученииДанныхКлиентаНаСервере // клиент ПередПериодическойОтправкойДанныхКлиентаНаСервер и ПослеПериодическогоПолученияДанныхКлиентаНаСервере.
// Сервер
МоментНачала = ТекущаяУниверсальнаяДатаВМиллисекундах();
Попытка
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЦентрМониторинга") Тогда
МодульЦентрМониторингаСлужебный = ОбщегоНазначения.ОбщийМодуль("ЦентрМониторингаСлужебный");
МодульЦентрМониторингаСлужебный.ПриПериодическомПолученииДанныхКлиентаНаСервере(Параметры, Результаты);
КонецЕсли;
Исключение
СерверныеОповещения.ОбработатьОшибку(ИнформацияОбОшибке());
КонецПопытки;
СерверныеОповещения.ДобавитьПоказатель(Результаты, МоментНачала,
"ЦентрМониторингаСлужебный.ПриПериодическомПолученииДанныхКлиентаНаСервере");
// Клиент
МоментНачала = ТекущаяУниверсальнаяДатаВМиллисекундах();
Попытка
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ЦентрМониторинга") Тогда
МодульЦентрМониторингаКлиентСлужебный = ОбщегоНазначенияКлиент.ОбщийМодуль("ЦентрМониторингаКлиентСлужебный");
МодульЦентрМониторингаКлиентСлужебный.ПередПериодическойОтправкойДанныхКлиентаНаСервер(Параметры);
КонецЕсли;
Исключение
СерверныеОповещенияКлиент.ОбработатьОшибку(ИнформацияОбОшибке());
КонецПопытки;
СерверныеОповещенияКлиент.ДобавитьПоказатель(МоментНачала,
"ЦентрМониторингаКлиентСлужебный.ПередПериодическойОтправкойДанныхКлиентаНаСервер");
Получает цвет стиля по имени элемента стиля.
Результат = ОбщегоНазначенияКлиент.ЦветСтиля("ЦветОсобогоТекста")
Получает шрифт стиля по имени элемента стиля.
Результат = ОбщегоНазначенияКлиент.ШрифтСтиля("ВажнаяНадписьШрифт")
Подключает компоненту, выполненную по технологии Native API и COM, в асинхронном режиме. Компонента должна храниться в макете конфигурации в виде ZIP-архива. Для веб-клиента предлагается диалог, подсказывающий пользователю действия по установке.
Оповещение = Новый ОписаниеОповещения("ПодключитьКомпонентуЗавершение", ЭтотОбъект);
ПараметрыПодключения = ОбщегоНазначенияКлиент.ПараметрыПодключенияКомпоненты();
ПараметрыПодключения.ТекстПояснения = НСтр("ru = 'Для оформления заявления на выпуск сертификата требуется
|внешняя компонента ""Криптография (CryptS)"".'");
ОбщегоНазначенияКлиент.ПодключитьКомпонентуИзМакета(Оповещение,
"CryptS",
"Обработка.ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.Макет.КомпонентаОбмена",
ПараметрыПодключения);
&НаКлиенте
Процедура ПодключитьКомпонентуЗавершение(Результат, ДополнительныеПараметры) Экспорт
ПодключаемыйМодуль = Неопределено;
Если Результат.Подключено Тогда
ПодключаемыйМодуль = Результат.ПодключаемыйМодуль;
Иначе
Если Не ПустаяСтрока(Результат.ОписаниеОшибки) Тогда
ПоказатьПредупреждение(, Результат.ОписаниеОшибки);
КонецЕсли;
КонецЕсли;
Если ПодключаемыйМодуль <> Неопределено Тогда
// ПодключаемыйМодуль содержит созданный экземпляр подключенной компоненты.
КонецЕсли;
ПодключаемыйМодуль = Неопределено;
КонецПроцедуры
Возвращает структуру параметров для процедуры ПодключитьКомпонентуИзМакета.
ПараметрыПодключения = ОбщегоНазначенияКлиент.ПараметрыПодключенияКомпоненты();
ПараметрыПодключения.ТекстПояснения = НСтр("ru = 'Для использования сканера штрихкодов требуется
|внешняя компонента ""1С:Сканеры штрихкода (NativeApi)"".'");
Устанавливает компоненту, выполненную по технологии Native API и COM асинхронном режиме. Компонента должна храниться в макете конфигурации в виде ZIP-архива.
Оповещение = Новый ОписаниеОповещения("УстановитьКомпонентуЗавершение", ЭтотОбъект);
ПараметрыУстановки = ОбщегоНазначенияКлиент.ПараметрыУстановкиКомпоненты();
ПараметрыУстановки.ТекстПояснения = НСтр("ru = 'Для оформления заявления на выпуск сертификата требуется
|внешняя компонента ""Криптография (CryptS)"".'");
ОбщегоНазначенияКлиент.УстановитьКомпонентуИзМакета(Оповещение,
"Обработка.ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.Макет.КомпонентаОбмена",
ПараметрыУстановки);
&НаКлиенте
Процедура УстановитьКомпонентуЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Не Результат.Установлено И Не ПустаяСтрока(Результат.ОписаниеОшибки) Тогда
ПоказатьПредупреждение(, Результат.ОписаниеОшибки);
КонецЕсли;
КонецПроцедуры
Возвращает структуру параметров для процедуры УстановитьКомпонентуИзМакета.
ПараметрыУстановки = ОбщегоНазначенияКлиент.ПараметрыУстановкиКомпоненты();
ПараметрыУстановки.ТекстПояснения = НСтр("ru = 'Для использования сканера штрихкодов требуется
|внешняя компонента ""1С:Сканеры штрихкода (NativeApi)"".'");
Возвращает имя COM-класса для работы с 1С:Предприятием 8 через COM-соединение.
Результат = ОбщегоНазначенияКлиентСервер.ИмяCOMСоединителя()
Выполняет регистрацию компоненты "comcntr.dll" для текущей версии платформы. В случае успешной регистрации, предлагает пользователю перезапустить клиентский сеанс для того чтобы регистрация вступила в силу. Вызывается перед клиентским кодом, который использует менеджер COM-соединений (V83.COMConnector) и инициируется интерактивными действиями пользователя.
ОбщегоНазначенияКлиент.ЗарегистрироватьCOMСоединитель(Ложь);
Извлекает из строки соединения с информационной базой параметры подключения и передает параметры в структуру для установки внешнего соединения.
Результат = ОбщегоНазначенияКлиентСервер.ПолучитьПараметрыПодключенияИзСтрокиСоединенияИнформационнойБазы(СтрокаСоединения)
Конструктор параметра Параметры функций ОбщегоНазначения.УстановитьВнешнееСоединениеСБазой и ОбщегоНазначенияКлиент.УстановитьВнешнееСоединениеСБазой.
Результат = ОбщегоНазначенияКлиентСервер.СтруктураПараметровДляУстановкиВнешнегоСоединения()
Устанавливает внешнее соединение с информационной базой по переданным параметрам подключения и возвращает указатель на это соединение.
Результат = ОбщегоНазначения.УстановитьВнешнееСоединениеСБазой(Параметры)
Возвращает CLSID COM-класса для работы с "1С:Предприятием 8" через COM-соединение.
Результат = ОбщегоНазначения.ИдентификаторCOMСоединителя(ИмяCOMСоединителя)
Свойства виртуального каталога, к которому предоставляется доступ.
Результат = АдминистрированиеКластера.СвойстваВиртуальногоКаталога()
Свойства профиля безопасности.
Результат = АдминистрированиеКластера.СвойстваПрофиляБезопасности()
Свойства COM-класса, к которому предоставляется доступ.
Результат = АдминистрированиеКластера.СвойстваCOMКласса()
Свойства внешнего модуля, к которому предоставляется доступ.
Результат = АдминистрированиеКластера.СвойстваВнешнегоМодуля()
Свойства внешней компоненты, к которой предоставляется доступ.
Результат = АдминистрированиеКластера.СвойстваВнешнейКомпоненты()
Свойства Интернет-ресурса, к которому предоставляется доступ.
Результат = АдминистрированиеКластера.СвойстваИнтернетРесурса()
Свойства приложения операционной системы, к которому предоставляется доступ.
Результат = АдминистрированиеКластера.СвойстваПриложенияОС()
Проверяет существование в кластере серверов профиля безопасности.
Результат = АдминистрированиеКластера.ПрофильБезопасностиСуществует(ПараметрыАдминистрированияКластера, ИмяПрофиля)
Устанавливает свойства для существующего профиля безопасности по переданному описанию.
АдминистрированиеКластера.УстановитьСвойстваПрофиляБезопасности(ПараметрыАдминистрированияКластера, СвойстваПрофиляБезопасности)
Создает профиль безопасности по переданному описанию.
АдминистрированиеКластера.СоздатьПрофильБезопасности(ПараметрыАдминистрированияКластера, СвойстваПрофиляБезопасности)
Удаляет профиль безопасности.
АдминистрированиеКластера.УдалитьПрофильБезопасности(ПараметрыАдминистрированияКластера, ИмяПрофиля)
Проверяет наличие сохраненных данных во внутреннем буфере обмена.
Результат = ОбщегоНазначения.ПустойБуферОбмена(Источник)
Получает строки табличной части, помещенные во внутренний буфер обмена с помощью СкопироватьСтрокиВБуферОбмена.
Результат = ОбщегоНазначения.СтрокиИзБуфераОбмена()
Помещает произвольные данные во внутренний буфер обмена, откуда их можно получить с помощью СтрокиИзБуфераОбмена.
ОбщегоНазначения.СкопироватьВБуферОбмена(Данные, Источник)
Помещает выделенные строки табличной части во внутренний буфер обмена откуда их можно получить с помощью СтрокиИзБуфераОбмена.
ОбщегоНазначения.СкопироватьСтрокиВБуферОбмена(ТабличнаяЧасть, ВыделенныеСтроки, Источник)
Возвращает признак того, что переданное значение является, либо не является, числом.
Результат = ОбщегоНазначенияКлиентСервер.ЭтоЧисло(ПроверяемоеЗначение)
Свойства лицензии.
Результат = АдминистрированиеКластера.СвойстваЛицензии()
Свойства описания соединения.
Результат = АдминистрированиеКластера.СвойстваОписанияСоединения()
Свойства рабочего процесса.
* ДоступнаяПроизводительность - Число - средняя за последние 5 минут доступная производительность. Определяется по времени реакции рабочего процесса на эталонный запрос. В соответствии с доступной производительностью кластер серверов принимает решение о распределении клиентов между рабочими процессами.
* ЗатраченоКлиентом - Число - показывает среднее время, затрачиваемое рабочим процессом на обратные вызовы методов клиентского приложения при выполнении одного клиентского обращения
* РеакцияСервера - Число - показывает среднее время обслуживания рабочим процессом одного клиентского обращения. Оно складывается из: значений свойств ЗатраченоСервером, ЗатраченоСУБД, ЗатраченоМенеджеромБлокировок, ЗатраченоКлиентом.
* ЗатраченоСУБД - Число - показывает среднее время, затрачиваемое рабочим процессом на обращения к серверу баз данных при выполнении одного клиентского обращения.
* ЗатраченоМенеджеромБлокировок - Число - показывает среднее время обращения к менеджеру блокировок.
* ЗатраченоСервером - Число - показывает среднее время, затрачиваемое самим рабочим процессом на выполнение одного клиентского обращения.
* КлиентскихПотоков - Число - показывает среднее количество клиентских потоков, исполняемых рабочим процессом кластера.
* ОтносительнаяПроизводительность - Число - относительная производительность процесса. Может находиться в диапазоне от 1 до 1000. Используется в процессе выбора рабочего процесса, к которому будет подсоединен очередной клиент. Клиенты распределяются между рабочими процессами пропорционально производительности рабочих процессов.
* Соединений - Число - количество соединений рабочего процесса с пользовательскими приложениями.
* ИмяКомпьютера - Строка - содержит имя или IP-адрес компьютера, на котором должен быть запущен рабочий процесс.
* Включен - Булево - устанавливается кластером при необходимости запустить или остановить рабочий процесс.
Истина - процесс должен быть запущен и будет запущен при возможности.
Ложь - процесс должен быть остановлен и будет остановлен после отсоединения всех пользователей или после истечения времени, заданного настройками кластера.
* Порт - Число - содержит номер основного IP-порта рабочего процесса. Этот порт выделяется динамически при старте рабочего процесса из диапазонов портов, определенных для соответствующего рабочего сервера.
* ПревышениеНадКритическимЗначением - Число - содержит время, в течение которого объем виртуальной памяти рабочего процесса превышает критическое значение, установленное для кластера, в секундах.
* ЗанятоПамяти - Число - содержит объем виртуальной памяти, занимаемой рабочим процессом, в килобайтах.
* Идентификатор - Строка - идентификатор активного рабочего процесса в терминах операционной системы.
* Запущен - Число - состояние рабочего процесса.
0 - процесс неактивен (либо не загружен в память, либо не может выполнять клиентские запросы);
1 - процесс активен (работает).
* КоличествоВызововПоКоторымПосчитанаСтатистика - Число - количество вызовов, по которым посчитана статистика.
* МоментЗапуска - Дата - содержит момент запуска рабочего процесса. Если процесс не запущен, то пустая дата.
* Использование - Число - определяет использование рабочего процесса кластером. Устанавливается администратором.
Возможные значения:
0 - не использовать, процесс не должен быть запущен;
1 - использовать, процесс должен быть запущен;
2 - использовать как резервный, процесс должен быть запущен только при невозможности запуска
процесса со значением 1 этого свойства.
* Лицензия - Структура
- Неопределено - содержит информацию о серверной лицензии, используемой рабочим процессом.
Неопределено - рабочий процесс не использует серверную лицензию.
Результат = АдминистрированиеКластера.СвойстваРабочегоПроцесса()
Свойства сеанса информационной базы.
* Номер - Число - номер сеанса. Уникален среди всех сеансов информационной базы,
* ИмяПользователя - Строка - имя аутентифицированного пользователя информационной базы,
* ИмяКлиентскогоКомпьютера - Строка - имя или сетевой адрес компьютера, установившего
сеанс с информационной базой,
* ИдентификаторКлиентскогоПриложения - Строка - идентификатор приложения, установившего сеанс.
Возможные значения - см. описание к функции глобального контекста ПредставлениеПриложения(),
* ИдентификаторЯзыка - Строка - идентификатор языка интерфейса,
* МоментСозданияСеанса - Дата - момент установки сеанса,
* МоментПоследнейАктивностиСеанса - Дата - момент последней активности сеанса,
* Блокировка - Число - номер сеанса, который является причиной ожидания управляемой транзакционной
блокировки в том случае, если сеанс выполняет установку управляемых транзакционных блокировок
и ожидает снятия блокировок, установленных другим сеансом (иначе - значение равно 0),
* БлокировкаСУБД - Число - номер сеанса, который является причиной ожидания транзакционной
блокировки в том случае, если сеанс исполняет запрос к СУБД и ожидает транзакционную
блокировку, установленную другим сеансом (иначе - значение равно 0),
* Передано - Число - объем данных, переданных меду сервером "1С:Предприятия" и клиентским приложением
данного сеанса с момента начала сеанса (в байтах),
* ПереданоЗа5Минут - Число - объем данных, переданных между сервером "1С:Предприятия" и клиентским
приложением данного сеанса за последние 5 минут (в байтах),
* СерверныхВызовов - Число - количество вызовов сервера "1С:Предприятия" от имена данного сеанса с
момента начала сеанса,
* СерверныхВызововЗа5Минут - Число - количество вызовов сервера "1С:Предприятия" от имени данного сеанса
за последние 5 минут,
* ДлительностьСерверныхВызовов - Число - время исполнения вызовов сервера "1С:Предприятия" от имени
данного сеанса с момента начала сеанса (в секундах),
* ДлительностьТекущегоСерверногоВызова - Число - интервал времени в миллисекундах, прошедший с момента начала
обращения, в случае, если сеанс выполняется вызов сервера "1С:Предприятия" (иначе - значение равно 0),
* ДлительностьСерверныхВызововЗа5Минут - Число - время исполнения вызовов сервера 1С:Предприятия от имени
данного сеанса за последние 5 минут (в миллисекундах),
* ПереданоСУБД - Число - количество данных, переданных и полученных от СУБД от имени данного сеанса с
момента начала сеанса (в байтах),
* ПереданоСУБДЗа5Минут - Число - количество данных, переданных и полученных от СУБД от имени данного сеанса
за последние 5 минут (в байтах),
* ДлительностьВызововСУБД - Число - время исполнения запросов к СУБД от имени данного сеанса с момента начала
сеанса (в миллисекундах),
* ДлительностьТекущегоВызоваСУБД - Число - интервал времени в миллисекундах, прошедший с начала выполнения
запроса в случае, если сеанс выполняет запрос к СУБД (иначе - значение равно 0),
* ДлительностьВызововСУБДЗа5Минут - Число - суммарное время исполнения запросов к СУБД от имени данного сеанса
за последние 5 минут (в миллисекундах).
* СоединениеСУБД - Строка - номер соединения с СУБД в терминах СУБД в том случае, если в момент получения списка
сеансов выполняется запрос к СУБД, открыта транзакция или определены временные таблицы (т.е. захвачено
соединение с СУБД). Если соединение с СУБД не захвачено - значение равно пустой строке,
* ВремяСоединенияСУБД - Число - время соединения с СУБД с момента захвата (в миллисекундах). Если соединение с.
СУБД не захвачено - значение равно 0,
* МоментЗахватаСоединенияСУБД - Дата - момент времени, когда соединение с СУБД было последний раз
захвачено другим сеансом.
* ОписаниеСоединения - Структура
- Неопределено - содержит описание соединения, которому назначен сеанс,
описание полей см. АдминистрированиеКластера.СвойстваОписанияСоединения(). Иначе - Неопределено.
* Спящий - Булево - сеанс находится в спящем режиме.
* ЗавершитьЧерез - Число - интервал времени в секундах, по истечении которого спящий сеанс завершается.
* ЗаснутьЧерез - Число - интервал времени в секундах, по истечении которого неактивный сеанс переводится в спящий
режим.
* ПрочитаноСДиска - Число - содержит количество данных в байтах, прочитанных с диска сеансом с момента начала сеанса.
* ПрочитаноСДискаВТекущемВызове - Число - содержит количество данных в байтах, прочитанных с диска с начала
выполнения текущего вызова.
* ПрочитаноСДискаЗа5Минут - Число - содержит количество данных в байтах, прочитанных с диска сеансом за последние
5 минут.
* Лицензия - Структура
- Неопределено - содержит информацию о клиентской лицензии, используемой этим сеансом,
описание полей см. АдминистрированиеКластера.СвойстваЛицензии().
Неопределено, если сеанс не использует лицензию.
* ЗанятоПамяти - Число - содержит объем памяти в байтах, занятый в процессе вызовов с момента начала сеанса.
* ЗанятоПамятиВТекущемВызове - Число - содержит объем памяти в байтах, занятый с начала выполнения текущего вызова.
Если в данный момент вызов не выполняется, содержит 0.
* ЗанятоПамятиЗа5Минут - Число - содержит объем памяти в байтах, занятый в процессе вызовов за последние 5 минут.
* ЗаписаноНаДиск - Число - содержит количество данных в байтах, записанных на диск сеансом с момента начала сеанса.
* ЗаписаноНаДискВТекущемВызове - Число - содержит количество данных в байтах, записанных на диск с начала
выполнения текущего вызова.
* ЗаписаноНаДискЗа5Минут - Число - содержит количество данных в байтах, записанных на диск сеансом за последние 5
минут.
* РабочийПроцесс - Структура
- Неопределено - содержит рабочий процесс, с которым установлено соединение, если
сеанс назначен соединению, описание полей см. АдминистрированиеКластера.СвойстваРабочегоПроцесса().
Иначе - Неопределено.
Результат = АдминистрированиеКластера.СвойстваСеанса()
Удаляет сеансы с информационной базой по фильтру. Параметр ПараметрыАдминистрированияИБ может быть опущен в том случае, если аналогичные поля указаны в параметре ПараметрыАдминистрированияКластера. Если в параметре Фильтр задана структура (см. АдминистрированиеКластера.ФильтрСеансов), то сравнение всегда выполняется на равенство.
АдминистрированиеКластера.УдалитьСеансыИнформационнойБазы(ПараметрыАдминистрированияКластера, ПараметрыАдминистрированияИБ, Фильтр)
Возвращает описания сеансов информационной базы. Если в параметре Фильтр задана структура (см. АдминистрированиеКластера.ФильтрСеансов), то сравнение всегда выполняется на равенство.
Результат = АдминистрированиеКластера.СвойстваСеансов(ИдентификаторКластера, ПараметрыАдминистрированияКластера, ИдентификаторИнформационнойБазы, Фильтр, ИспользоватьСловарь)
Возвращает описания соединений с информационной базой.
Результат = АдминистрированиеКластера.СвойстваСоединений(ИдентификаторКластера, ПараметрыАдминистрированияКластера, ИдентификаторИнформационнойБазы, ПараметрыАдминистрированияИнформационнойБазы, Фильтр, ИспользоватьСловарь)
Возвращает путь к консольному клиенту сервера администрирования.
Результат = АдминистрированиеКластера.ПутьККлиентуСервераАдминистрирования(ПараметрыАдминистрированияКластера)
Анализ производился на конфигурации ERP 2.5. Часть 2 пока в разработке.