Как велась подготовка материала
Официальная документация неплохо структурирована и подробно описывает каждый метод. Единственная трудность, с которой я столкнулся было незнание какие методы наиболее популярны в основных типовых решениях. Что необходимо знать в первую очередь, а какой функционал оставить на потом. Цель статьи - собрать и упорядочить методы по популярности (суммарным количеством вызовов). Что было сделано:
1. Из официальной документации получены все вызовы (за исключением раздела "Предопределенные").
2. Далее, производился поиск и подсчет каждого метода в 5-х типовых конфигурациях: УТ 11.4, РТ 2.3, БП 3.0, ЗУП 3.1 и ERP 2.4.
3. В заключении, собранная статистика вызовов была преобразована в разделы, близкие по структуре с документацией и упорядочена в порядке убывания по количеству вызовов. Тем самым мы сразу можем увидеть методы, которые используются наиболее часто. Для удобства ряд методов в рамках раздела сгруппирован логически. Порядок разделов выполнен в ручном режиме. Цифра перед именем метода это и есть количество вызовов данного метода.
Обзор полезных методов БСП 3.1.4. Часть 2.
Часть 1. Базовая функциональность
49125. ПодставитьПараметрыВСтроку. Подставляет параметры в строку. Максимально возможное число параметров - 9. Параметры в строке задаются как %<номер параметра>. Нумерация параметров начинается с единицы.
С 8.3.6 реализовано функцией платформы "СтрШаблон".
Оптимизация функции ПодставитьПараметрыВСтроку
ШаблонСообщения = НСтр("ru='Внимание! Будут очищены все показатели отчета.%1Продолжить операцию?'")
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщения, Символы.ПС);
ШаблонСообщения = НСтр("ru = 'У регистра сведений ""%1"" в записях с номерами %2 по регистратору ""%3"" указаны ссылки на несуществующие данные.'")
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщения, ОбъектМетаданных.Представление(), НомераПроблемныхЗаписей, РегистраторСсылка);
ШаблонСообщения = НСтр("ru = 'Только пользователь %1 может выполнять синхронизацию данных!'");
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщения, СтрОтветственный);
3341. РазложитьСтрокуВМассивПодстрок. Разбивает строку на несколько строк по указанному разделителю. Разделитель может иметь любую длину. Если разделителем является строка из одного символа, и не используется параметр СокращатьНепечатаемыеСимволы, рекомендуется использовать функцию платформы СтрРазделить.
Чем расщепить или "СтрРазделить() VS РазложитьСтрокуВМассивПодстрок()" ?
// возвратит массив из двух элементов: "один", "два";
СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок("один,два");
// возвратит массив из двух элементов: "один", "два";
СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок("один, два",,,Истина);
// возвратит массив из двух элементов: "один", "два";
СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок("один два", " ");
// возвратит массив из 5 элементов, три из которых // пустые: "", "один", "", "два", "";
СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(";один;;два;", ";")
2156. ТолькоЦифрыВСтроке. Проверяет, содержит ли строка только цифры.
Результат = СтроковыеФункцииКлиентСервер.ТолькоЦифрыВСтроке("0123"); // Истина
Результат = СтроковыеФункцииКлиентСервер.ТолькоЦифрыВСтроке("0123abc"); // Ложь
Результат = СтроковыеФункцииКлиентСервер.ТолькоЦифрыВСтроке("01 2 3",, Ложь); // Истина
Если НЕ СтроковыеФункцииКлиентСервер.ТолькоЦифрыВСтроке(Значение) Тогда
Возврат НСтр("ru = 'БИК должен состоять только из цифр.'");
КонецЕсли;
541. СтрокаВЧисло. Преобразует исходную строку в число без вызова исключений.
СтроковыеФункцииКлиентСервер.СтрокаВЧисло("1234 3"); //12343
СтроковыеФункцииКлиентСервер.СтрокаВЧисло("1234.12"); // 1234.12
СтроковыеФункцииКлиентСервер.СтрокаВЧисло("-100,12"); // -100.12
СтроковыеФункцииКлиентСервер.СтрокаВЧисло("буквы1234.12"); //Неопределено
69. СтрокаВДату. Преобразует исходную строку в дату. Если дату не удалось распознать, то возвращается пустая дата (01.01.01 00:00:00).
Функция преобразования СТРОКИ в ДАТУ.
// Формат даты должен быть в виде "ДД.ММ.ГГГГ" или "ДД/ММ/ГГ" или "ДД-ММ-ГГ ЧЧ:ММ:CC"
// Результат 23.02.1980 0:00:00 тип Дата
Результат = СтроковыеФункцииКлиентСервер.СтрокаВДату("23.02.1980");
296. СтрокаСЧисломДляЛюбогоЯзыка. Формирует представление числа для определенного языка и параметров числа.
Дней = 10;
Результат = СтроковыеФункцииКлиентСервер.СтрокаСЧисломДляЛюбогоЯзыка(НСтр("ru = ';%1 день;;%1 дня;%1 дней;';
|en = ';%1 day;;%1 days;%1 days;'"), Дней); // 10 дней
246. ВставитьПараметрыВСтроку. Заменяет в шаблоне строки имена параметров на их значения. Параметры в строке выделяются с двух сторон квадратными скобками.
Значения = Новый Структура("Фамилия,Имя", "Иванов", "Петр");
// "Здравствуй, Петр Иванов".
Результат = СтроковыеФункцииКлиентСервер.ВставитьПараметрыВСтроку("Здравствуй, [Имя] [Фамилия].", Значения);
200. УдалитьПоследнийСимволВСтроке. Удаляет из строки указанное количество символов справа.
Строка = "абв_абв_абв_абв_абв_";
ЧислоСимволов = 1;
СтроковыеФункцииКлиентСервер.УдалитьПоследнийСимволВСтроке(Строка, ЧислоСимволов); // абв_абв_абв_абв_абв
//
ИменаПолей = "";
Для Каждого ИмяПоля Из ИменаПолейВТ Цикл
ИменаПолей = ИменаПолей + ПсевдонимТаблицы + "." + ИмяПоля + ", ";
КонецЦикла;
СтроковыеФункцииКлиентСервер.УдалитьПоследнийСимволВСтроке(ИменаПолей, 2);
28. УдалитьПовторяющиесяСимволы. Удаляет крайние повторяющиеся символы слева или справа в строке.
// Удаляем лидирующие нули слева в номере.
НомерОбъекта = "0000000123";
НомерОбъекта = СтроковыеФункцииКлиентСервер.УдалитьПовторяющиесяСимволы(НомерОбъекта, "0");// 123
237. СформироватьСтрокуСимволов. Формирует строку повторяющихся символов заданной длины.
Символ = "абв_";
ДлинаСтроки = 5;
Результат = СтроковыеФункцииКлиентСервер.СформироватьСтрокуСимволов(Символ, ДлинаСтроки); // абв_абв_абв_абв_абв_
148. РазложитьСтрокуВМассивСлов. Разбивает строку на несколько строк, используя заданный набор разделителей. Если параметр РазделителиСлов не задан, то разделителем слов считается любой из символов, не относящихся к символам латиницы, кириллицы, цифры, подчеркивания.
// возвратит массив значений: "один", "два2_", "три"
СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивСлов("один-@#два2_!три");
// возвратит массив значений: "один-", "два2", "три"
СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивСлов("один-@#два2_!три", "#@!_");
// возвратит массив значений: "один-", "#два2", "три"
СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивСлов("один-@#два2_!три", "@!_");
109. ЗаменитьОдниСимволыДругими. Выполняет замену символов в строке. Предназначена для простых случаев - например, для замены латиницы на похожие кириллические символы.
Значение = "абв_абв_";
ЗаменяемыеСимволы = "_";
СимволыЗамены = "#";
Результат = СтроковыеФункцииКлиентСервер.ЗаменитьОдниСимволыДругими(ЗаменяемыеСимволы, Значение, СимволыЗамены); // абв#абв#
Номер = "!?1234567(')";
Результат = СтроковыеФункцииКлиентСервер.ЗаменитьОдниСимволыДругими(":;!@#$%^&-~`'.,?{}[]+=*/|\ ()_""", Номер, ""); // 1234567
135. ЭтоУникальныйИдентификатор. Проверяет, является ли строка уникальным идентификатором.
Значение = Новый УникальныйИдентификатор("b0d4ce5d-2757-4699-948c-cfa72ba94f86");
Результат = СтроковыеФункцииКлиентСервер.ЭтоУникальныйИдентификатор(Значение); // Истина
Результат = СтроковыеФункцииКлиентСервер.ЭтоУникальныйИдентификатор("b0d4ce5d-2757-4699-948c-cfa72ba94f86"); // Истина
Результат = СтроковыеФункцииКлиентСервер.ЭтоУникальныйИдентификатор("b0d4ce5d"); // Ложь
58. ПараметрыИзСтроки. Получает значения параметров из строки.
// Вернет структуру:
// ключ "File" и значение "c:\InfoBases\Trade"
// ключ "Usr" и значение "Director".
Результат = СтроковыеФункцииКлиентСервер.ПараметрыИзСтроки("File=""c:\InfoBases\Trade""; Usr=""Director"";""", ";");
ПутьККонфигурации = СтрокаСоединенияИнформационнойБазы();
// Вернет структуру:
//Ref "base"
//Srvr "server:1860"
СтроковыеФункцииКлиентСервер.ПараметрыИзСтроки(ПутьККонфигурации);
186. СтрокаЛатиницей. Преобразует исходную строку в транслит. Обратное преобразование из латинских символов не предусмотрено.
Значение = "Тестовое сообщение";
Результат = СтроковыеФункцииКлиент.СтрокаЛатиницей(Значение); //Testovoe soobshchenie
50. ТолькоКириллицаВСтроке. Проверяет, содержит ли строка только символы кириллического алфавита.
Если НЕ СтроковыеФункцииКлиентСерверРФ.ТолькоКириллицаВСтроке(ФИО, Ложь) Тогда
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Сотрудник %1: ФИО физического лица должно быть введено русскими буквами'"),
ДанныеФизическогоЛица.Наименование);
КонецЕсли;
43. ТолькоЛатиницаВСтроке. Проверяет, содержит ли строка только символы латинского алфавита.
Если Не СтроковыеФункцииКлиентСервер.ТолькоЛатиницаВСтроке(Значение, Ложь, "1234567890,") Тогда
ТекстОшибки = НСтр("ru = 'Адрес в международном формате должен быть набран латиницей.'");
Результат.Добавить(ПоляОшибки(ТекстОшибки, Истина));
КонецЕсли;
41. ЭтоРазделительСлов. Определяет, является ли символ разделителем.
Результат = СтроковыеФункцииКлиентСервер.ЭтоРазделительСлов(КодСимвола, РазделителиСлов)
20. ИзвлечьТекстИзHTML. Очищает текст в формате HTML от тегов и возвращает неформатированный текст.
ИсходныйТекст = "";
Результат = СтроковыеФункцииКлиентСервер.ИзвлечьТекстИзHTML(ИсходныйТекст); // Hello World
16. ПреобразоватьЧислоВРимскуюНотацию. Выполняет преобразование арабского числа в римское.
СтроковыеФункцииКлиентСервер.ПреобразоватьЧислоВРимскуюНотацию(16); // "ХVI"
0. ПреобразоватьЧислоВАрабскуюНотацию. Выполняет преобразование римского числа в арабское.
СтроковыеФункцииКлиентСервер.ПреобразоватьЧислоВАрабскуюНотацию("ХVI") // 16
15. СократитьДвойныеКавычки. Удаляет двойные кавычки с начала и конца строки, если они есть.
Результат = СтроковыеФункцииКлиентСервер.СократитьДвойныеКавычки(Значение)
8. ПодставитьПараметрыВСтрокуИзМассива. Подставляет параметры в строку. Число параметров в строке не ограничено. Параметры в строке задаются как %<номер параметра>. Нумерация параметров начинается с единицы.
ЗначенияПараметров = Новый Массив;
ЗначенияПараметров.Добавить("Я");
ЗначенияПараметров.Добавить("обновление");
// Результат - "Я установил обновление".
Результат = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтрокуИзМассива(НСтр("ru='%1 установил %2'"), ЗначенияПараметров);
5. ПредставлениеПериодаВТексте. Возвращает представление периода в нижнем регистре или с заглавной буквы, если с него начинается фраза (предложение).
ДатаНачала = НачалоМесяца(ТекущаяДата());
ДатаОкончания = КонецМесяца(ТекущаяДата());
Результат = СтроковыеФункции.ПредставлениеПериодаВТексте(ДатаНачала, ДатаОкончания,, Истина); // Март 2021 г.
10832. ЗначениеРеквизитаОбъекта. Возвращает значения реквизита, прочитанного из информационной базы по ссылке на объект. Рекомендуется использовать вместо обращения к реквизитам объекта через точку от ссылки на объект для быстрого чтения отдельных реквизитов объекта из базы данных.
Функция доступна только на сервере, но если нужно получить реквизит на клиенте, то я ищу модуль ВызовCервера, например, в БП 3.0 это ОбменСКонтрагентамиСлужебныйВызовСервера.ЗначениеРеквизитаОбъекта.
Чтение отдельных реквизитов объекта из базы данных
&НаКлиенте
Процедура ЗначениеРеквизитаОбъекта(Команда)
// Использование на клиенте.
СтранаПроисхождения = ОбщегоНазначенияРТВызовСервера.ЗначениеРеквизитаОбъекта(Номенклатура,"СтранаПроисхождения");
// Использование на сервере
СтранаПроисхождения = СтранаПроисхождения();
КонецПроцедуры
&НаСервере
Функция СтранаПроисхождения()
Возврат ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Номенклатура, "СтранаПроисхождения");
КонецФункции
6227. ЗначенияРеквизитовОбъекта. Возвращает структуру, содержащую значения реквизитов, прочитанные из информационной базы по ссылке на объект.
&НаКлиенте
Процедура ЗначенияРеквизитовОбъекта(Команда)
// Использование на клиенте.
ЗначениеРеквизитов = ОбщегоНазначенияРТВызовСервера.ЗначенияРеквизитовОбъекта(Номенклатура,
Новый Структура("СтранаПроисхождения, СтавкаНДС, Артикул"));
// Использование на сервере
ЗначенияРеквизитовОбъектаНаСервере();
КонецПроцедуры
&НаСервере
Процедура ЗначенияРеквизитовОбъектаНаСервере()
ЗначенияРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Номенклатура, "СтранаПроисхождения, СтавкаНДС");
КонецПроцедуры
679. ЗначениеРеквизитаОбъектов. Возвращает значения реквизита, прочитанного из информационной базы для нескольких объектов.
ФизическиеЛицаСотрудников = ОбщегоНазначения.ЗначениеРеквизитаОбъектов(Сотрудники, "ФизическоеЛицо");
443. ЗначенияРеквизитовОбъектов. Возвращает значения реквизитов, прочитанные из информационной базы для нескольких объектов.
РеквизитыСотрудников = ОбщегоНазначения.ЗначенияРеквизитовОбъектов(Сотрудники, "ФизическоеЛицо, ГоловнойСотрудник");
91. КодОсновногоЯзыка. Возвращает код основного языка информационной базы, например "ru".
// Вызов с клиента
Результат = ОбщегоНазначенияКлиент.КодОсновногоЯзыка()
// Вызов с сервера
Результат = ОбщегоНазначения.КодОсновногоЯзыка()
91. ПредопределенныйЭлемент. Возвращает ссылку предопределенного элемента по его полному имени.
Получение предопределенных значений на клиенте
// Вызов с клиента
Результат = ОбщегоНазначенияКлиент.ПредопределенныйЭлемент("Справочник.СтраныМира.Россия")
// Вызов с сервера
Результат = ОбщегоНазначения.ПредопределенныйЭлемент("Справочник.СтраныМира.Россия")
27. ПроверитьПроведенностьДокументов. Проверяет статус проведения переданных документов и возвращает те из них, которые не проведены.
// Вызов с клиента
ДокументыТребующиеПроведение = ОбщегоНазначенияВызовСервера.ПроверитьПроведенностьДокументов(ДокументыМассив);
// Вызов с сервера
ДокументыТребующиеПроведение = ОбщегоНазначения.ПроверитьПроведенностьДокументов(ДокументыМассив);
12. ПровестиДокументы. Выполняет попытку проведения документов.
Требования к проведению документов
// Вызов с клиента
ДанныеОНепроведенныхДокументах = ОбщегоНазначенияВызовСервера.ПровестиДокументы(НепроведенныеДокументы);
// Вызов с сервера
ДанныеОНепроведенныхДокументах = ОбщегоНазначения.ПровестиДокументы(НепроведенныеДокументы);
20. ЗаменитьСсылки. Производит замену ссылок во всех данных. После замены неиспользуемые ссылки опционально удаляются.
Результат = ОбщегоНазначения.ЗаменитьСсылки(ПарыЗамен, ПараметрыЗамены)
10. ЕстьСсылкиНаОбъект. Проверяет наличие ссылок на объект в базе данных.
// Вызов с клиента
Результат = ОбщегоНазначенияВызовСервера.ЕстьСсылкиНаОбъект(СсылкаИлиМассивСсылок)
// Вызов с сервера
Результат = ОбщегоНазначения.ЕстьСсылкиНаОбъект(СсылкаИлиМассивСсылок)
30. МестаИспользования. Получает все места использования ссылок. Если какая-либо ссылка нигде не используется, то строк для нее в результирующей таблице не будет.
ТаблицаПоиска = ОбщегоНазначения.МестаИспользования(НаборСсылок);
28. ИсключенияПоискаСсылок. Возвращает исключения при поиске мест использования объектов.
Результат = ОбщегоНазначения.ИсключенияПоискаСсылок()
15. ПараметрыЗаменыСсылок. Конструктор структуры для параметра ПараметрыЗамены функции ОбщегоНазначения.ЗаменитьСсылки.
Результат = ОбщегоНазначения.ПараметрыЗаменыСсылок()
15. ПодчиненныеОбъекты. Возвращает связи подчиненных объектов и перечень реквизитов, по которым осуществляется связь. Есть возможность переопределить процедуру поиска подчиненных объектов.
Результат = ОбщегоНазначения.ПодчиненныеОбъекты()
0. УстановитьЗначениеРеквизита. Добавляет или изменяет значение реквизита в объекте.
ОбщегоНазначения.УстановитьЗначениеРеквизита(Объект, ИмяРеквизита, Значение, КодЯзыка)
5. УстановитьЗначенияРеквизитов. Добавляет или изменяет значения реквизитов в объекте.
ОбщегоНазначения.УстановитьЗначенияРеквизитов(Объект, Значения, КодЯзыка)
0. ЭтоОсновнойЯзык. Возвращает признак того, что для пользователя установлен язык интерфейса соответствующий основному языку информационной базы.
Результат = ОбщегоНазначения.ЭтоОсновнойЯзык()
2165. ЕстьРеквизитИлиСвойствоОбъекта. Проверяет наличие реквизита или свойства у произвольного объекта без обращения к метаданным.
Результат = ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(Объект, ИмяРеквизита)
//
Если ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(Форма, "ВидимостьПодключаемыхКоманд") Тогда
ПодключаемыеКомандыИСКлиентСервер.УправлениеВидимостьюКомандПодключенныхКОбъекту(Форма);
КонецЕсли;
3673. ЗначениеВМассиве. Создает массив и помещает в него переданное значение.
Результат = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Значение)
2841. ДополнитьМассив. Дополняет массив МассивПриемник значениями из массива МассивИсточник.
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(МассивПриемник, МассивИсточник, ТолькоУникальныеЗначения);
789. СвернутьМассив. Возвращает копию исходного массива с уникальными значениями.
Результат = ОбщегоНазначенияКлиентСервер.СвернутьМассив(Массив)
386. РазностьМассивов. Возвращает разность массивов. Разностью двух массивов является массив, содержащий все элементы первого массива, не существующие во втором массиве.
//А = [1, 3, 5, 7];
//В = [3, 7, 9];
Результат = ОбщегоНазначенияКлиентСервер.РазностьМассивов(А, В); //Результат = [1, 5];
1336. УдалитьЗначениеИзМассива. Удаляет одно значение из массива.
ОбщегоНазначенияКлиентСервер.УдалитьЗначениеИзМассива(Массив, Значение)
1223. УдалитьНепроверяемыеРеквизитыИзМассива. Процедура удаляет из массива МассивРеквизитов элементы, соответствующие именам реквизитов объекта из массива МассивНепроверяемыхРеквизитов. Для использования в обработчиках события ОбработкаПроверкиЗаполнения.
ОбщегоНазначения.УдалитьНепроверяемыеРеквизитыИзМассива(МассивРеквизитов, МассивНепроверяемыхРеквизитов)
191. УдалитьВсеВхожденияЗначенияИзМассива. Удаляет все вхождения переданного значения из массива.
ОбщегоНазначенияКлиентСервер.УдалитьВсеВхожденияЗначенияИзМассива(Массив, Значение)
18. УдалитьВсеВхожденияТипаИзМассива. Удаляет все вхождения значений указанного типа.
Тип = Тип("Null");
ОбщегоНазначенияКлиентСервер.УдалитьВсеВхожденияТипаИзМассива(Массив, Тип);
258. ТаблицаЗначенийВМассив. Преобразует таблицу значений в массив структур. Может использоваться для передачи на клиент данных в том случае, если таблица значений содержит только такие значения, которые могут быть переданы с сервера на клиент.
Результат = ОбщегоНазначения.ТаблицаЗначенийВМассив(ТаблицаЗначений)
126. ПрочитатьXMLВТаблицу. Преобразует текст указанного формата XML в таблицу значений, при этом колонки таблицы формируются на основе описания в XML.
КлассификаторТаблица = ОбщегоНазначения.ПрочитатьXMLВТаблицу(ПолучитьОбщийМакет("КлассификаторВалют").ПолучитьТекст()).Данные;
//
РеквизитыXML = Справочники.НастройкиХозяйственныхОпераций.ПолучитьМакет("НастройкиПредопределенныхЭлементов").ПолучитьТекст();
РеквизитыТаблица = ОбщегоНазначения.ПрочитатьXMLВТаблицу(РеквизитыXML).Данные;
500. СтрокаТаблицыЗначенийВСтруктуру. Преобразует строку таблицы значений в структуру. Свойства структуры и их значения совпадают с колонками переданной строки.
Результат = ОбщегоНазначения.СтрокаТаблицыЗначенийВСтруктуру(СтрокаТаблицыЗначений)
1449. ДополнитьТаблицу. Дополняет таблицу значений - приемник данными из таблицы значений - источника.
ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(ТаблицаИсточник, ТаблицаПриемник)
1622. ВыгрузитьКолонку. Создает массив и копирует в него значения, содержащиеся в колонке объекта, для которого доступен обход посредством оператора Для каждого … Из.
Результат = ОбщегоНазначения.ВыгрузитьКолонку(КоллекцияСтрок, ИмяКолонки, ТолькоУникальныеЗначения)
Номенклатура = ОбщегоНазначения.ВыгрузитьКолонку(Объект.Товары, "Номенклатура"), Истина);
96. ДополнитьТаблицуИзМассива. Дополняет таблицу значений Таблица значениями из массива Массив.
ОбщегоНазначенияКлиентСервер.ДополнитьТаблицуИзМассива(Таблица, Массив, ИмяПоля)
//Пример
МассивТиповСтруктурнойЕдиницы = Новый Массив;
МассивТиповСтруктурнойЕдиницы.Добавить(Тип("СправочникСсылка.Организации"));
ТаблицаСтруктурныхЕдиниц = Новый ТаблицаЗначений;
ТаблицаСтруктурныхЕдиниц.Колонки.Добавить("СтруктурнаяЕдиница", Новый ОписаниеТипов(МассивТиповСтруктурнойЕдиницы));
ОбщегоНазначенияКлиентСервер.ДополнитьТаблицуИзМассива(ТаблицаСтруктурныхЕдиниц, МассивПодразделений, "СтруктурнаяЕдиница");
1791. СвойствоСтруктуры. Возвращает значение свойства структуры.
Результат = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Структура, Ключ, ЗначениеПоУмолчанию)
СохраненнаяДатаОкончания = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(ДанныеЗаявления, "ДатаОкончания", '00010101');
464. ДополнитьСтруктуру. Дополняет структуру значениями из другой структуры.
ОбщегоНазначенияКлиентСервер.ДополнитьСтруктуру(Приемник, Источник, Заменять)
//Пример
СохраненнаяСтруктураУчетнойПолитики = ДанныеПомощникаРегистрации.СтруктураУчетнойПолитики;
ОбщегоНазначенияКлиентСервер.ДополнитьСтруктуру(СтруктураУчетнойПолитики, СохраненнаяСтруктураУчетнойПолитики, Истина);
162. СтруктураПоМенеджеруЗаписи. Создает структуру, содержащую имена и значения измерений, ресурсов и реквизитов переданного менеджера записи регистра сведений. Режимом записи "Независимый"
Результат = ОбщегоНазначения.СтруктураПоМенеджеруЗаписи(МенеджерЗаписи, МетаданныеРегистра)
МетаданныеРегистра = Метаданные.РегистрыСведений[ИмяРегистра];
МенеджерЗаписи = РегистрыСведений[ИмяРегистра].СоздатьМенеджерЗаписи();
// Структура с ключами "Фамилия" "Имя" "Отчество" "Период" "Физическое лицо"
СтруктураПоМенеджеруЗаписи = ОбщегоНазначения.СтруктураПоМенеджеруЗаписи(МенеджерЗаписи, МетаданныеРегистра);
8. КлючиСтруктурыВСтроку. Получает строку, содержащую ключи структуры, разделенные символом разделителя, по умолчанию ",".
Результат = ОбщегоНазначенияКлиентСервер.КлючиСтруктурыВСтроку(Структура, Разделитель)
//
ИменаПолей = ОбщегоНазначенияКлиентСервер.КлючиСтруктурыВСтроку(ПоляРегистрацииНаФорме);
ЗначенияРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(РегистрацияВНалоговомОргане, ИменаПолей);
110. ДанныеСовпадают. Сравнивает данные сложной структуры с учетом вложенности.
Результат = ОбщегоНазначения.ДанныеСовпадают(Данные1, Данные2)
88. КоллекцииИдентичны. Сравнивает две коллекции строк (ТаблицаЗначений, ДеревоЗначений и т.д.), для которых доступен обход посредством оператора Для каждого … Из … Цикл.
Результат = ОбщегоНазначения.КоллекцииИдентичны(КоллекцияСтрок1, КоллекцияСтрок2, ИменаКолонок, ИсключаяКолонки, УчитыватьПоследовательностьСтрок)
42. СпискиЗначенийИдентичны. Сравнивает элементы списков значений или массивов по значениям.
Результат = ОбщегоНазначенияКлиентСервер.СпискиЗначенийИдентичны(Список1, Список2)
351. СкопироватьРекурсивно. Создает полную копию структуры, соответствия, массива, списка или таблицы значений, рекурсивно, с учетом типов дочерних элементов.
// Вызов с клиента
Результат = ОбщегоНазначения.ОбщегоНазначенияКлиент(Источник)
// Вызов с сервера
Результат = ОбщегоНазначения.СкопироватьРекурсивно(Источник)
273. ИмяЗначенияПеречисления. Возвращает строковое имя значения перечисления по его ссылке. Вызывает исключение, если передано несуществующее значение перечисления (например, удаленное в конфигурации или от отключенного расширения конфигурации).
// "ФизическоеЛицо"
Результат = ОбщегоНазначения.ИмяЗначенияПеречисления(Перечисления.ЮридическоеФизическоеЛицо.ФизическоеЛицо);
233. ПустойУникальныйИдентификатор. Возвращает пустой уникальный идентификатор.
// 00000000-0000-0000-0000-000000000000 УникальныйИдентификатор
Результат = ОбщегоНазначенияКлиентСервер.ПустойУникальныйИдентификатор()
698. ПроверитьПараметр. Вызывает исключение, если тип значения параметра ИмяПараметра процедуры или функции ИмяПроцедурыИлиФункции отличается от ожидаемого.
ОбщегоНазначенияКлиентСервер.ПроверитьПараметр(ИмяПроцедурыИлиФункции, ИмяПараметра, ЗначениеПараметра, ОжидаемыеТипы, ОжидаемыеТипыСвойств)
//
ОбщегоНазначенияКлиентСервер.ПроверитьПараметр("АнализАдресовПоКлассификатору", "Адреса", Адреса, Тип("Соответствие"));
289. Проверить. Вызывает исключение с текстом Сообщение, если Условие не равно Истина. Применяется для самодиагностики кода.
ОбщегоНазначенияКлиентСервер.Проверить(Условие, Сообщение, КонтекстПроверки)
//
ОбщегоНазначенияКлиентСервер.Проверить(МаксимальнаяДлина >= 32,
НСтр("ru = 'Параметр МаксимальнаяДлина не может быть меньше 32'"),
"ОбщегоНазначения.СократитьСтрокуКонтрольнойСуммой");
160. КонтрольнаяСуммаСтрокой. Вычисляет контрольную сумму для произвольных данных по указанному алгоритму. Алгоритм по умолчанию MD5.
Результат = ОбщегоНазначения.КонтрольнаяСуммаСтрокой(Данные, Алгоритм)
// 16497FA0C8E13CE8FAB874D959DB91B9
ХешСтроки = ОбщегоНазначения.КонтрольнаяСуммаСтрокой("Тест", ХешФункция.MD5);
ХешПароль = ОбщегоНазначения.КонтрольнаяСуммаСтрокой(Пароль);
183. ПредметСтрокой. Возвращает описание предмета в виде текстовой строки.
Результат = ОбщегоНазначения.ПредметСтрокой(СсылкаНаПредмет)
ОрганизацияСтрокой = ОбщегоНазначения.ПредметСтрокой(Организация); // "ИП "Предприниматель" (Организация)"
НоменклатураСтрокой = ОбщегоНазначения.ПредметСтрокой(Номенклатура); // "Лимонад (Номенклатура)"
110. ДополнитьСоответствие. Дополняет соответствие значениями из другого соответствия.
ОбщегоНазначенияКлиентСервер.ДополнитьСоответствие(Приемник, Источник, Заменять)
68. ФиксированныеДанные. Фиксирует данные типов Структура, Соответствие, Массив с учетом вложенности.
Результат = ОбщегоНазначения.ФиксированныеДанные(Данные, ВызыватьИсключение)
27. СократитьСтрокуКонтрольнойСуммой. Сокращает строку до нужной длины, при этом обрезанная часть хешируется, обеспечивая уникальность строки. Проверяет длину строки на входе и, в случае превышения максимальной длины, преобразует ее конец по алгоритму MD5 в уникальную строку из 32 символов.
Результат = ОбщегоНазначения.СократитьСтрокуКонтрольнойСуммой(Строка, МаксимальнаяДлина)
// Было
ХешСумма = "16497FA0C8E13CE8FAB874D959DB91B916497FA0C8E13CE8FAB874D959DB91B9";
// Резульат "16497FA041ED169C2C86D5FDAD6D05CB1D42CA1C"
ОбщегоНазначения.СократитьСтрокуКонтрольнойСуммой(ХешСумма, 40);
56. ОписаниеТипаВсеСсылки. Функции создания ОписаниеТипов: Строка, Число, Дата, Все ссылки.
Ограничения на использование реквизитов составного типа (ОписаниеТипаВсеСсылки)
// Часто используется при типиации колонок таблицы значений, дерева значений или соответствия
ТаблицаЗначений = Новый ТаблицаЗначений;
ТаблицаЗначений.Колонки.Добавить("Наименование", ОбщегоНазначения.ОписаниеТипаСтрока(150));
ТаблицаЗначений.Колонки.Добавить("СтавкаНалога", ОбщегоНазначения.ОписаниеТипаЧисло(5, 2, ДопустимыйЗнак.Неотрицательный));
ТаблицаЗначений.Колонки.Добавить("Период", ОбщегоНазначения.ОписаниеТипаДата(ЧастиДаты.ДатаВремя));
ТаблицаЗначений.Колонки.Добавить("Ссылка", ОбщегоНазначения.ОписаниеТипаВсеСсылки());
// Реже при типизации реквизитов на форме
ДобавляемыеРеквизиты = Новый Массив;
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Подпись", ОбщегоНазначения.ОписаниеТипаСтрока(150));
Форма.ИзменитьРеквизиты(ДобавляемыеРеквизиты);
18. ОписаниеТипаСостоитИзТипа. Проверить, что описание типа состоит из единственного типа значения и совпадает с нужным типом.
Если ОбщегоНазначения.ОписаниеТипаСостоитИзТипа(Строка.ТипЗначения, Тип("Булево")) Тогда
НоваяСтрока.Значение = Ложь;
КонецЕсли;
26. ВидОбъектаПоСсылке. Возвращает имя вида объектов метаданных по ссылке на объект.
Результат = ОбщегоНазначения.ВидОбъектаПоСсылке(Ссылка) // "Справочник"
34. ВидОбъектаПоТипу. Возвращает имя вида объектов метаданных по типу объекта.
ИмяТипаОбъекта = ОбщегоНазначения.ВидОбъектаПоТипу(ТипЗнч(Ссылка)); // "Справочник"
52. ИмяБазовогоТипаПоОбъектуМетаданных. Возвращает имя базового типа по переданному значению объекта метаданных.
ИмяБазовогоТипа = ОбщегоНазначения.ИмяБазовогоТипаПоОбъектуМетаданных(Метаданные.Справочники.Номенклатура); // "Справочники".
// Пример использования
ИмяОбъектаМетаданных = ОбщегоНазначения.ИмяБазовогоТипаПоОбъектуМетаданных(Документ) + "." + Документ.Имя;
145. ИмяТаблицыПоСсылке. Возвращает полное имя объекта метаданных по переданному значению ссылки.
Результат = ОбщегоНазначения.ИмяТаблицыПоСсылке(Ссылка) // "Справочник.Номенклатура"
// В основном используется в механизме блокировок
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить(ОбщегоНазначения.ИмяТаблицыПоСсылке(ДокументСсылка));
ЭлементБлокировки.УстановитьЗначение("Ссылка", ДокументСсылка);
Блокировка.Заблокировать();
// Или при составлении запросов, когда запрос должен выполниться для разных таблиц
ТекстЗапроса =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Ссылка КАК Ссылка,
| &Реквизиты
|ИЗ
| &ИмяСправочника КАК ТаблицаИсточник";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&Реквизиты", Реквизиты);
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ИмяСправочника",
ОбщегоНазначения.ИмяТаблицыПоСсылке(КонтрагентСсылка));
27. СтроковоеПредставлениеТипа. Возвращает строковое представление типа.
Тип = ТипЗнч(Номенклатура);
// "СправочникСсылка.Номенклатура"
СтроковоеПредставлениеТипа = ОбщегоНазначения.СтроковоеПредставлениеТипа(Тип);
// Пример создания описания типа и пустой ссылки на основе строкового представления типа
ОписаниеТипов = Новый ОписаниеТипов(СтроковоеПредставлениеТипа);
ПустаяСсылка = ОписаниеТипов.ПривестиЗначение();
Если ОбщегоНазначения.СсылкаСуществует(ПустаяСсылка) Тогда // Ложь
Сообщить(НСтр("ru = 'Ссылка не существует'"));
Иначе
ВызватьИсключение НСтр("ru = 'Ссылка не существует'");
КонецЕсли
126. ЭтоОбъектСсылочногоТипа. Определяет принадлежность объекта метаданных к ссылочному типу.
ИмяТаблицыПоСсылке = ОбщегоНазначения.ИмяТаблицыПоСсылке(Ссылка) // "Справочник.Номенклатура"
МетаданныеОбъекта = Метаданные.НайтиПоПолномуИмени(ИмяТаблицыПоСсылке);
Результат = ОбщегоНазначения.ЭтоОбъектСсылочногоТипа(МетаданныеОбъекта) // Истина
541. ЭтоСсылка. Проверка того, что переданный тип является ссылочным типом данных. Для типа "Неопределено" возвращается Ложь.
ТипОбъекта = ТипЗнч(Номенклатура);
Если ОбщегоНазначения.ЭтоСсылка(ТипОбъекта) Тогда
Сообщить("Это ссылочный объект");
КонецЕсли;
156. ЗначениеСсылочногоТипа. Проверяет, что переданное значение имеет ссылочный тип данных.
Если ОбщегоНазначения.ЗначениеСсылочногоТипа(Организация) Тогда
Организация = Организация.ПолучитьОбъект();
КонецЕсли;
404. СсылкаСуществует. Проверяет физическое наличие записи в информационной базе данных о переданном значении ссылки.
// Битая ссылка на номенклатуру вида <Объект не найден> (6778:8414001e67079e6011e2219d259f469d)
Если Не ОбщегоНазначения.СсылкаСуществует(Ссылка) Тогда // Истина
ВызватьИсключение НСтр("ru = '<Объект не найден>'");
КонецЕсли
// Номенклатура физически есть в базе
Если ОбщегоНазначения.СсылкаСуществует(Номенклатура) Тогда // Истина
ВызватьИсключение НСтр("ru = 'Ссылка существует'");
КонецЕсли
721. ЕстьРеквизитОбъекта. Позволяет определить, есть ли среди реквизитов объекта реквизит с переданным именем.
МетаданныеДокумента = ДокументОбъект.Ссылка.Метаданные();
Если ОбщегоНазначения.ЕстьРеквизитОбъекта("КратностьВзаиморасчетов", МетаданныеДокумента) Тогда
ДокументОбъект.КратностьВзаиморасчетов = Кратность;
КонецЕсли;
77. ПредставлениеОбъекта. Возвращает строковое представление объекта, заданное в свойствах объекта метаданных.
// "Страна мира"
ПредставлениеОбъектаКлассификатора = ОбщегоНазначения.ПредставлениеОбъекта(Метаданные.Справочники.СтраныМира);
102. ПредставлениеСписка. Возвращает строковое представление списка, заданное в свойствах объекта метаданных. В зависимости от того, какие свойства объекта метаданных заполнены, функция возвращают одно из них в указанном порядке: Расширенное представление списка, Представление списка, Синоним или Имя.
// "Страны мира"
ОбщегоНазначения.ПредставлениеСписка(Метаданные.Справочники.СтраныМира)
15. ОписаниеСвойствОбъекта. Возвращает таблицу значений с описанием требуемых свойств всех реквизитов объекта метаданных.
ТаблицаДанныхСообщенияОбмена = Новый ТаблицаЗначений;
Колонки = ТаблицаДанныхСообщенияОбмена.Колонки;
// обязательные поля
Колонки.Добавить("УникальныйИдентификатор", Новый ОписаниеТипов("Строка",, Новый КвалификаторыСтроки(36)));
Колонки.Добавить("ТипСтрокой", Новый ОписаниеТипов("Строка",, Новый КвалификаторыСтроки(255)));
ОбъектМетаданных = Метаданные.НайтиПоТипу(Тип("СправочникОбъект.Номенклатура"));
// Получаем описание всех полей объекта метаданного из конфигурации.
ТаблицаОписанияСвойствОбъекта = ОбщегоНазначения.ОписаниеСвойствОбъекта(ОбъектМетаданных, "Имя, Тип");
Для Каждого ОписаниеСвойства Из ТаблицаОписанияСвойствОбъекта Цикл
Колонки.Добавить(ОписаниеСвойства.Имя, ОписаниеСвойства.Тип);
КонецЦикла;
48. ОбъектЯвляетсяГруппой. Проверяет, является ли элемент справочника или плана видов характеристик группой элементов.
Если ОбщегоНазначения.ОбъектЯвляетсяГруппой(Склад) Тогда
ОбщегоНазначения.СообщитьПользователю(НСтр("ru = 'Форма не поддерживает работу с группой складов.'"),,,,Отказ);
КонецЕсли;
1263. МенеджерОбъектаПоПолномуИмени. Возвращает менеджер объекта по полному имени объекта метаданных.
МенеджерСправочника = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени("Справочник.Организации");
ПустаяСсылка = МенеджерСправочника.ПустаяСсылка();
554. МенеджерОбъектаПоСсылке. Возвращает менеджер объекта по ссылке на объект.
МенеджерСправочника = ОбщегоНазначения.МенеджерОбъектаПоСсылке(СсылкаНаОрганизацию);
ПустаяСсылка = МенеджерСправочника.ПустаяСсылка();
22. ИменаРеквизитовПоТипу. Возвращает имена реквизитов объекта заданного типа.
// ГоловнаяОрганизация
Данные = ОбщегоНазначения.ИменаРеквизитовПоТипу(Организация.Ссылка, Тип("СправочникСсылка.Организации"));
// ВидНоменклатуры, ВладелецСерий, ВладелецХарактеристик, ВладелецТоварныхКатегорий
Данные = ОбщегоНазначения.ИменаРеквизитовПоТипу(Номенклатура.Ссылка, Тип("СправочникСсылка.ВидыНоменклатуры"));
61. ЭтоСтандартныйРеквизит. Возвращает признак того, что реквизит входит в подмножество стандартных реквизитов.
Результат = ОбщегоНазначения.ЭтоСтандартныйРеквизит(СтандартныеРеквизиты, ИмяРеквизита)
70. ЭтоКонстанта. Определяет принадлежность объекта метаданных к общему типу "Константа".
МетаданныеОбъекта = Метаданные.Константы.ВалютаРегламентированногоУчета;
Результат = ОбщегоНазначения.ЭтоКонстанта(МетаданныеОбъекта); // Истина
Ссылка = Номенклатура;
ТипОбъекта = Тип(ОбщегоНазначения.ВидОбъектаПоСсылке(Ссылка) + "Объект." + Ссылка.Метаданные().Имя);
МетаданныеОбъекта = Метаданные.НайтиПоТипу(ТипОбъекта);
Результат = ОбщегоНазначения.ЭтоСправочник(МетаданныеОбъекта); // Истина
Результат = ОбщегоНазначения.ЭтоДокумент(МетаданныеОбъекта); // Ложь
// Остальные примеры:
Результат = ОбщегоНазначения.ЭтоСправочник(ОбъектМетаданных)
Результат = ОбщегоНазначения.ЭтоДокумент(ОбъектМетаданных)
Результат = ОбщегоНазначения.ЭтоПеречисление(ОбъектМетаданных)
Результат = ОбщегоНазначения.ЭтоПланВидовХарактеристик(ОбъектМетаданных)
Результат = ОбщегоНазначения.ЭтоРегистр(ОбъектМетаданных)
Результат = ОбщегоНазначения.ЭтоРегистрСведений(ОбъектМетаданных)
Результат = ОбщегоНазначения.ЭтоРегистрНакопления(ОбъектМетаданных)
Результат = ОбщегоНазначения.ЭтоРегистрБухгалтерии(ОбъектМетаданных)
Результат = ОбщегоНазначения.ЭтоРегистрРасчета(ОбъектМетаданных)
Результат = ОбщегоНазначения.ЭтоБизнесПроцесс(ОбъектМетаданных)
Результат = ОбщегоНазначения.ЭтоЗадача(ОбъектМетаданных)
Результат = ОбщегоНазначения.ЭтоПоследовательность(ОбъектМетаданных)
Результат = ОбщегоНазначения.ЭтоЖурналДокументов(ОбъектМетаданных)
Результат = ОбщегоНазначения.ЭтоРегламентноеЗадание(ОбъектМетаданных)
1165. ИдентификаторОбъектаМетаданных. Возвращает ссылку, соответствующую объекту метаданных, для использования в базе данных.
Метаданные и их идентификаторы
Идентификатор = ОбщегоНазначения.ИдентификаторОбъектаМетаданных(ТипЗнч(Ссылка));
Идентификатор = ОбщегоНазначения.ИдентификаторОбъектаМетаданных(ОбъектМетаданных);
Идентификатор = ОбщегоНазначения.ИдентификаторОбъектаМетаданных("Справочник.Организации");
110. ИдентификаторыОбъектовМетаданных. Возвращает ссылки, соответствующие объектам метаданных, для использования в базе данных..
ПолныеИмена = Новый Массив;
ПолныеИмена.Добавить(Метаданные.Справочники.Валюты.ПолноеИмя());
ПолныеИмена.Добавить(Метаданные.РегистрыСведений.КурсыВалют.ПолноеИмя());
Идентификаторы = ОбщегоНазначения.ИдентификаторыОбъектовМетаданных(ПолныеИмена);
303. ОбъектМетаданныхДоступенПоФункциональнымОпциям. Определяет доступность объекта метаданных по функциональным опциям.
Результат = ОбщегоНазначения.ОбъектМетаданныхДоступенПоФункциональнымОпциям(ОбъектМетаданных)
166. ОбъектМетаданныхПоИдентификатору. Возвращает объект метаданных по переданному идентификатору.
Если ТипЗнч(Объект) = Тип("СправочникСсылка.ИдентификаторыОбъектовМетаданных") Тогда
ОбъектМетаданных = ОбщегоНазначения.ОбъектМетаданныхПоИдентификатору(Объект, Ложь);
Если ТипЗнч(ОбъектМетаданных) <> Тип("ОбъектМетаданных") Тогда
Возврат НСтр("ru = '<Не существует>'");
КонецЕсли;
КонецЕсли;
59. ОбъектыМетаданныхПоИдентификаторам. Возвращает объекты метаданных по переданным идентификаторам.
ОбъектыМетаданныхПоИдентификаторам = ОбщегоНазначения.ОбъектыМетаданныхПоИдентификаторам(ИдентификаторыСписков, Ложь);
299. ДобавитьПереименование. Добавляет описание переименования объекта метаданных при переходе на указанную версию конфигурации. Добавление выполняется в структуру Итог, которая передается в процедуру ОбщегоНазначенияПереопределяемый.ПриДобавленииПереименованийОбъектовМетаданных.
ОбщегоНазначения.ДобавитьПереименование(Итог, "2.1.2.14",
"Подсистема._ДемоПодсистемы",
"Подсистема._ДемоСервисныеПодсистемы");
3287. ОжидатьЗавершение. Ожидать завершения выполнения процедуры в фоновом задании и открыть форму ожидания длительной операции.
ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, ОповещениеОЗавершении, ПараметрыОжидания)
//
Процедура НачатьОжиданиеФормированияОтчета(Форма, ДлительнаяОперация, ОповещениеЗавершитьФормированиеОтчета) Экспорт
Если ДлительнаяОперация = Неопределено Тогда
Возврат;
КонецЕсли;
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(Форма);
ПараметрыОжидания.ВыводитьОкноОжидания = Ложь;
ОбщегоНазначенияКлиентСервер.УстановитьСостояниеПоляТабличногоДокумента(Форма.Элементы.Результат, "ФормированиеОтчета");
ОповещениеОЗавершении = Новый ОписаниеОповещения(
"ЗакончитьОжиданиеФормированияОтчета",
ЭтотОбъект,
ОповещениеЗавершитьФормированиеОтчета);
ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, ОповещениеОЗавершении, ПараметрыОжидания);
// См. далее ЗакончитьОжиданиеФормированияОтчета
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьСписокДокументовНаЭкспортЗавершение(ДлительнаяОперация, ДополнительныеПараметры) Экспорт
Если ДлительнаяОперация = Неопределено Тогда // задание было отменено
Возврат;
КонецЕсли;
Если ДлительнаяОперация.Статус = "Ошибка" Тогда
ПоказатьОшибкуОбновленияДокументовНаЭкспортВФоне(ДлительнаяОперация);
Иначе
ЗагрузитьПлатежныеДокументыПослеОбновленияВФоне(ДлительнаяОперация);
КонецЕсли;
УправлениеФормой();
КонецПроцедуры
3251. ПараметрыОжидания. Возвращает пустую структуру для параметра ПараметрыОжидания процедуры ДлительныеОперацииКлиент.ОжидатьЗавершение.
Результат = ДлительныеОперацииКлиент.ПараметрыОжидания(ФормаВладелец)
//
&НаКлиенте
Процедура ЗаписатьНачало()
РезультатВыполнения = ЗаписатьНаСервере();
Если РезультатВыполнения.Статус = "Выполнено" Тогда
ОткрытьСвойство = ПолучитьИзВременногоХранилища(РезультатВыполнения.АдресРезультата);
ЗаписатьЗавершение(ОткрытьСвойство);
Иначе
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
ОповещениеОЗавершении = Новый ОписаниеОповещения("ЗаписатьПродолжение", ЭтотОбъект);
ДлительныеОперацииКлиент.ОжидатьЗавершение(РезультатВыполнения, ОповещениеОЗавершении, ПараметрыОжидания);
КонецЕсли;
КонецПроцедуры
2502. ПараметрыВыполненияВФоне. Возвращает новую структуру для параметра ПараметрыВыполнения функции ВыполнитьВФоне.
Результат = ДлительныеОперации.ПараметрыВыполненияВФоне(ИдентификаторФормы)
//
Процедура ПоказатьОповещенияВФоне(ПараметрыЧата, РезультатЗапроса) Экспорт
ПараметрыМетода = Новый Структура;
ПараметрыМетода.Вставить("РезультатЗапроса", ПолучитьИзВременногоХранилища(РезультатЗапроса.Результат.АдресВременногоХранилища));
ПараметрыМетода.Вставить("ПараметрыЧата", ПараметрыЧата);
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(Новый УникальныйИдентификатор);
ПараметрыВыполнения.НаименованиеФоновогоЗадания = НСтр("ru = 'Получение сообщений из сервиса Мой налог.'");
ПараметрыВыполнения.ОжидатьЗавершение = 0;
ДлительныеОперации.ВыполнитьВФоне(
"ОповещенияПлатформыСамозанятые.ПоказатьОповещения",
ПараметрыМетода,
ПараметрыВыполнения);
КонецПроцедуры
2390. ВыполнитьВФоне. Вместо этой функции рекомендуется использовать функции ВыполнитьФункцию и ВыполнитьПроцедуру.
//В общем виде процесс запуска и обработки результата длительной операции выглядит следующим образом:
//1) Процедура, которая будет исполняться в фоне, располагается в модуле менеджера объекта или в серверном общем модуле:
Процедура ВыполнитьДействие(Параметры, АдресРезультата) Экспорт
...
ПоместитьВоВременноеХранилище(Результат, АдресРезультата);
КонецПроцедуры
//2) Запуск операции на сервере и подключение обработчика ожидания:
&НаКлиенте
Процедура ВыполнитьДействие()
ДлительнаяОперация = НачатьВыполнениеНаСервере();
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
...
ОповещениеОЗавершении = Новый ОписаниеОповещения("ВыполнитьДействиеЗавершение", ЭтотОбъект);
ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, ОповещениеОЗавершении, ПараметрыОжидания);
КонецПроцедуры
&НаСервере
Функция НачатьВыполнениеНаСервере()
ПараметрыПроцедуры = Новый Структура;
...
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор);
...
Возврат ДлительныеОперации.ВыполнитьВФоне("Обработки.МояОбработка.ВыполнитьДействие",
ПараметрыПроцедуры, ПараметрыВыполнения);
КонецФункции
//3) Обработка результата выполнения операции:
&НаКлиенте
Процедура ВыполнитьДействиеЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
ВывестиРезультат(Результат);
КонецПроцедуры
//
&НаСервере
Функция ОбновитьКоличествоСервер()
ПараметрыЗадания = Новый Структура;
ПараметрыЗадания.Вставить("СтруктураОбработки", ЭтотОбъект().ЭтотОбъектВСтруктуруДляФонового());
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор);
ПараметрыВыполнения.НаименованиеФоновогоЗадания =
НСтр("ru = 'Расчет количества объектов для отправки при синхронизации';
|en = 'Calculate the number of objects to send during synchronization'");
РезультатЗапускаФоновогоЗадания = ДлительныеОперации.ВыполнитьВФоне(
"ОбменДаннымиСервер.ИнтерактивноеИзменениеВыгрузки_СформироватьДеревоЗначений",
ПараметрыЗадания,
ПараметрыВыполнения);
ИдентификаторФоновогоЗадания = РезультатЗапускаФоновогоЗадания.ИдентификаторЗадания;
АдресРезультатаФоновогоЗадания = РезультатЗапускаФоновогоЗадания.АдресРезультата;
Возврат РезультатЗапускаФоновогоЗадания;
КонецФункции
582. ОтменитьВыполнениеЗадания. Отменяет выполнение фонового задания по переданному идентификатору.
ДлительныеОперации.ОтменитьВыполнениеЗадания(ИдентификаторЗадания)
//
&НаСервереБезКонтекста
Процедура ПриЗакрытииНаСервере(Знач ИдентификаторЗадания)
ДлительныеОперации.ОтменитьВыполнениеЗадания(ИдентификаторЗадания);
КонецПроцедуры
541. ЗаданиеВыполнено. Проверяет состояние фонового задания по переданному идентификатору.
Результат = ДлительныеОперации.ЗаданиеВыполнено(ИдентификаторЗадания)
//
Функция ПроверитьВыполнениеЗадания(ИдентификаторЗадания, СообщениеОбОшибке)
Если ИдентификаторЗадания = Неопределено Тогда
Возврат Истина;
КонецЕсли;
Попытка
Выполнено = ДлительныеОперации.ЗаданиеВыполнено(ИдентификаторЗадания);
СообщениеОбОшибке = "";
Исключение
// что-то произошло, нужно сообщить
СообщениеОбОшибке = НСтр("ru = 'Не удалось выполнить данную операцию.
|Подробности см. в Журнале регистрации.
|" + ОписаниеОшибки() + "'");
Выполнено = Истина;
КонецПопытки;
Возврат Выполнено;
КонецФункции
313. СообщитьПрогресс. Регистрирует информацию о ходе выполнения длительной операции. Во избежание избыточного потребления памяти и ее утечек при выполнении одной длительной операции не следует сообщать прогресс более 100 раз.
ДлительныеОперации.СообщитьПрогресс(Процент, Текст, ДополнительныеПараметры)
//
Процедура РассчитатьПроцентВыгрузки(КоличествоВыгруженных, КоличествоОбъектовКВыгрузке) Экспорт
// Сообщение о проценте выгрузки выдаем через каждые 100 объектов.
Если КоличествоВыгруженных = 0 ИЛИ КоличествоВыгруженных / 100 <> Цел(КоличествоВыгруженных / 100) Тогда
Возврат;
КонецЕсли;
Если КоличествоОбъектовКВыгрузке = 0 Или КоличествоВыгруженных > КоличествоОбъектовКВыгрузке Тогда
ПроцентВыполнения = 95;
Шаблон = НСтр("ru = 'Обработано: %1 объектов.'");
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Шаблон, Формат(КоличествоВыгруженных, "ЧН=0; ЧГ="));
Иначе
// 5% полосы резервируем под выгрузку по ссылкам, проценты по количеству считаем от 95.
ПроцентВыполнения = Окр(Мин(КоличествоВыгруженных * 95 / КоличествоОбъектовКВыгрузке, 95));
Шаблон = НСтр("ru = 'Обработано: %1 из %2 объектов.'");
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
Шаблон,
Формат(КоличествоВыгруженных, "ЧН=0; ЧГ="),
Формат(КоличествоОбъектовКВыгрузке, "ЧН=0; ЧГ="));
КонецЕсли;
// Регистрация сообщения для чтения из клиентского сеанса.
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ОбменДанными", Истина);
ДлительныеОперации.СообщитьПрогресс(ПроцентВыполнения, Текст, ДополнительныеПараметры);
КонецПроцедуры
149. ВыполнитьФункцию. Запустить выполнение функции в фоновом задании, если это возможно. При выполнении любого из следующих условий запуск выполняется не в фоне, а сразу в основном потоке.
//В общем виде процесс запуска и обработки результата длительной операции в модуле формы выглядит следующим образом:
//1) Функция, которая будет исполняться в фоне, располагается в модуле менеджера объекта или в серверном общем модуле:
Функция РассчитатьЗначение(Знач МойПараметр1, Знач МойПараметр2) Экспорт
...
Возврат Результат;
КонецФункции
//2) Запуск операции на сервере и подключение обработчика ожидания:
&НаКлиенте
Процедура РассчитатьЗначение()
ДлительнаяОперация = НачатьВыполнениеНаСервере();
ОповещениеОЗавершении = Новый ОписаниеОповещения("ОбработатьРезультат", ЭтотОбъект);
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, ОповещениеОЗавершении, ПараметрыОжидания);
КонецПроцедуры
&НаСервере
Функция НачатьВыполнениеНаСервере()
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияФункции(УникальныйИдентификатор);
Возврат ДлительныеОперации.ВыполнитьФункцию(ПараметрыВыполнения, "Обработки.МояОбработка.РассчитатьЗначение",
МойПараметр1, МойПараметр2);
КонецФункции
//3) Обработка результата длительной операции:
&НаКлиенте
Процедура ОбработатьРезультат(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
ВывестиРезультат(Результат.АдресРезультата);
КонецПроцедуры
//
&НаСервере
Функция ВыполнитьПоискУстаревшихВерсий()
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор);
ПараметрыВыполнения.НаименованиеФоновогоЗадания = НСтр("ru = 'Поиск устаревших версий объектов'");
ДлительнаяОперация = ДлительныеОперации.ВыполнитьФункцию(ПараметрыВыполнения,
"ВерсионированиеОбъектов.ИнформацияОбУстаревшихВерсиях");
ТекущееФоновоеЗадание = "Подсчет";
ИдентификаторФоновогоЗадания = ДлительнаяОперация.ИдентификаторЗадания;
АдресРезультата = ДлительнаяОперация.АдресРезультата;
Возврат ДлительнаяОперация;
КонецФункции
63. ПрочитатьПрогресс. Считывает информацию о ходе выполнения длительной операции, записанную процедурой ДлительныеОперации.СообщитьПрогресс.
Результат = ДлительныеОперации.ПрочитатьПрогресс(ИдентификаторЗадания)
//
&НаСервереБезКонтекста
Функция ПроверитьВыполнениеИПрогрессЗадания(Знач ИдентификаторЗадания)
РезультатВыполнения = Новый Структура();
РезультатВыполнения.Вставить("ЗаданиеВыполнено", Ложь);
РезультатВыполнения.Вставить("Процент", 0);
Если НЕ ЗначениеЗаполнено(ИдентификаторЗадания) Тогда
РезультатВыполнения.ЗаданиеВыполнено = Истина;
РезультатВыполнения.Процент = 100;
Иначе
Если ДлительныеОперации.ЗаданиеВыполнено(ИдентификаторЗадания) Тогда
РезультатВыполнения.ЗаданиеВыполнено= Истина;
РезультатВыполнения.Процент = 100;
Иначе
ПередаваемоеЗначение = ДлительныеОперации.ПрочитатьПрогресс(ИдентификаторЗадания); // ПрочитатьПрогресс
Если ТипЗнч(ПередаваемоеЗначение) = Тип("Структура")
И ПередаваемоеЗначение.Свойство("Процент") Тогда
РезультатВыполнения.Процент = ПередаваемоеЗначение.Процент;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Возврат РезультатВыполнения;
КонецФункции
52. ВыполнитьПроцедуру. Запустить выполнение процедуры в фоновом задании, если это возможно.
Асинхронное выполнение длительных операций
//В общем виде процесс запуска и обработки результата длительной операции в модуле формы выглядит следующим образом:
//1) Процедура, которая будет исполняться в фоне, располагается в модуле менеджера объекта или в серверном общем модуле:
Процедура ВыполнитьРасчет(Знач МойПараметр1, Знач МойПараметр2) Экспорт
...
КонецПроцедуры
//2) Запуск операции на сервере и подключение обработчика ожидания (при необходимости):
&НаКлиенте
Процедура ВыполнитьРасчет()
ДлительнаяОперация = НачатьВыполнениеНаСервере();
ОповещениеОЗавершении = Новый ОписаниеОповещения("ОбработатьРезультат", ЭтотОбъект);
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, ОповещениеОЗавершении, ПараметрыОжидания);
КонецПроцедуры
&НаСервере
Функция НачатьВыполнениеНаСервере()
Возврат ДлительныеОперации.ВыполнитьПроцедуру(, "Обработки.МояОбработка.ВыполнитьРасчет",
МойПараметр1, МойПараметр2);
КонецФункции
//3) Обработка результата длительной операции:
&НаКлиенте
Процедура ОбработатьРезультат(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
ПриЗавершенииРасчета();
КонецПроцедуры
//
&НаСервере
Функция ЗапуститьФоновуюОтправкуФайлов()
ОтправляемыеФайлы = Новый Массив;
Для Каждого Файл Из Файлы.ПолучитьЭлементы() Цикл
ОписаниеФайла = Новый Структура;
ОписаниеФайла.Вставить("ИмяФайла", Файл.Наименование);
ОписаниеФайла.Вставить("ДатаИзменения");
ОписаниеФайла.Вставить("Каталог");
ОписаниеФайла.Вставить("ДвоичныеДанные", ПолучитьИзВременногоХранилища(Файл.Адрес));
ОтправляемыеФайлы.Добавить(ОписаниеФайла);
КонецЦикла;
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияПроцедуры();
ПараметрыВыполнения.НаименованиеФоновогоЗадания = НСтр("ru = 'Отправка файлов в сервиса распознавания документов'");
ФоновоеЗадание = ДлительныеОперации.ВыполнитьПроцедуру(
ПараметрыВыполнения,
"Обработки.РаспознаваниеДокументов.ОтправитьФайлыНаРаспознавание",
ОтправляемыеФайлы
);
Возврат ФоновоеЗадание;
КонецФункции
49. ПараметрыВыполненияФункции. Конструктор коллекции ПараметрыВыполненияФункции для функции ВыполнитьФункцию.
Результат = ДлительныеОперации.ПараметрыВыполненияФункции(ИдентификаторФормы)
//
Функция СоздатьНоменклатуруПоДаннымКонтрагента(ДанныеНоменклатурыКонтрагента) Экспорт
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияФункции(Новый УникальныйИдентификатор);
ПараметрыВыполнения.НаименованиеФоновогоЗадания = НСтр("ru = 'Создание номенклатуры по данным контрагентов'");
ПараметрыПроцедуры = Новый Структура;
ПараметрыПроцедуры.Вставить("ДанныеНоменклатурыКонтрагента", ДанныеНоменклатурыКонтрагента);
Возврат ДлительныеОперации.ВыполнитьВФоне("ЭлектронноеВзаимодействиеБП.СоздатьНоменклатуруПоДаннымКонтрагентаВФоне",
ПараметрыПроцедуры, ПараметрыВыполнения);
КонецФункции
21. СообщенияПользователю. Получает сообщения пользователю, отфильтровывает служебные сообщения о состоянии длительной операции.
Операция = ДлительныеОперации.ВыполнитьВФоне(...);
...
Сообщения = ДлительныеОперации.СообщенияПользователю(Истина, Операция.ИдентификаторЗадания);
//
&НаСервере
Функция ПроверитьВыполнениеФоновогоЗаданияНаСервере()
Попытка
ЗаданиеВыполнено = ДлительныеОперации.ЗаданиеВыполнено(ИдентификаторФоновогоЗадания);
СообщенияОбОшибках = ДлительныеОперации.СообщенияПользователю(Ложь, ИдентификаторФоновогоЗадания);
Для Каждого СообщениеОбОшибке Из СообщенияОбОшибках Цикл
ТекстОшибки = ТекстОшибки + ?(ПустаяСтрока(ТекстОшибки), "", Символы.ПС) + СообщениеОбОшибке.Текст;
КонецЦикла;
Исключение
ЗаголовокОшибки = НСтр("ru='Не удалось получить сведения хозяйствующего субъекта'");
ТекстОшибки = СформироватьТекстОшибки(ЗаголовокОшибки, КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
ЗаданиеВыполнено = Ложь;
КонецПопытки;
Если ПустаяСтрока(ТекстОшибки) Тогда
Если ЗаданиеВыполнено Тогда
ОбработатьРезультатВыполненияФоновогоЗадания();
Иначе
ОбработатьПрогрессВыполненияФоновогоЗадания();
КонецЕсли;
КонецЕсли;
Возврат ЗаданиеВыполнено;
КонецФункции
17. ПараметрыВыполненияПроцедуры. Конструктор коллекции ПараметрыВыполненияПроцедуры для функции ВыполнитьПроцедуру.
Результат = ДлительныеОперации.ПараметрыВыполненияПроцедуры()
//
Процедура НачатьПроверкуСообщенийПоАктивностиПользователя(Приложение) Экспорт
Если РегламентныеЗаданияСервер.РаботаСВнешнимиРесурсамиЗаблокирована() Тогда
Возврат;
КонецЕсли;
Если Не РегистрыСведений.ОпросШиныМобильныхПриложений.ЗаписатьПотребность(Приложение, Ложь) Тогда
Возврат;
КонецЕсли;
ПараметрыФоновогоВыполнения = ДлительныеОперации.ПараметрыВыполненияПроцедуры();
ПараметрыФоновогоВыполнения.ОжидатьЗавершение = 0;
ПараметрыФоновогоВыполнения.ЗапуститьВФоне = Истина;
ПараметрыФоновогоВыполнения.КлючФоновогоЗадания = Приложение;
ПараметрыФоновогоВыполнения.НаименованиеФоновогоЗадания = СтрШаблон(
НСтр("ru = 'Обработка сообщений мобильного приложения %1'", ОбщегоНазначения.КодОсновногоЯзыка()),
Приложение);
ДлительныеОперации.ВыполнитьПроцедуру(
ПараметрыФоновогоВыполнения,
"ШинаМобильныхПриложений.ПроверитьСообщенияПриложения",
Приложение);
КонецПроцедуры
7642. СообщитьПользователю. Формирует и выводит сообщение, которое может быть связано с элементом управления формы.
Ограничение на использование метода Сообщить
// 1. Для вывода сообщения у поля управляемой формы, связанного с реквизитом объекта:
ОбщегоНазначенияКлиент.СообщитьПользователю(
НСтр("ru = 'Сообщение об ошибке.'"),,"ПолеВРеквизитеФормыОбъект", "Объект");
// Альтернативный вариант использования в форме объекта:
ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Сообщение об ошибке.'"), , "Объект.ПолеВРеквизитеФормыОбъект");
// 2. Для вывода сообщения рядом с полем управляемой формы, связанным с реквизитом формы:
ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Сообщение об ошибке.'"), ,"ИмяРеквизитаФормы"));
// 3. Для вывода сообщения связанного с объектом информационной базы:
ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Сообщение об ошибке.'"), ОбъектИнформационнойБазы, "Ответственный",,Отказ);
// 4. Для вывода сообщения по ссылке на объект информационной базы:
ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Сообщение об ошибке.'"), Ссылка, , , Отказ);
// 5. Пример вызова на сервере:
ОбщегоНазначения.СообщитьПользователю(НСтр("ru = 'Объект с таким представлением уже существует.'",, Поле,, Отказ));
1955. ПутьКТабличнойЧасти. Формирует путь к заданной строке НомерСтроки и колонке ИмяРеквизита табличной части ИмяТабличнойЧасти для выдачи сообщений в форме. Для совместного использования с процедурой СообщитьПользователю (для передачи в параметры Поле или ПутьКДанным).
Результат = ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти(ИмяТабличнойЧасти, НомерСтроки, ИмяРеквизита)
ОбщегоНазначенияКлиент.СообщитьПользователю(
НСтр("ru = 'Не заполнено поле ""Количество вложенных потребительских упаковок""'"),,
ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("ОписаниеGTIN", Индекс, "Коэффициент"),,
Отказ);
1101. ТекстОшибкиЗаполнения. Формирует текст ошибок заполнения полей и списков.
Результат = ОбщегоНазначенияКлиентСервер.ТекстОшибкиЗаполнения(ВидПоля, ВидСообщения, ИмяПоля, НомерСтроки, ИмяСписка, ТекстСообщения)
Если НЕ ЗначениеЗаполнено(ФизическоеЛицо.Имя) Тогда
ТекстСообщения = ОбщегоНазначенияКлиентСервер.ТекстОшибкиЗаполнения(, , НСтр("ru = 'Имя'"));
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения, , "ФизическоеЛицо.Имя", , Отказ);
ИначеЕсли НЕ СтроковыеФункцииКлиентСервер.ТолькоКириллицаВСтроке(
ФизическоеЛицо.Имя, Истина, ДопустимоКромеКириллицы) Тогда
ТекстСообщения = НСтр("ru = 'Имя заполняется на русском языке'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения, , "ФизическоеЛицо.Имя", , Отказ);
КонецЕсли;
806. ДобавитьОшибкуПользователю. Добавляет в список ошибок новую ошибку пользователя для дальнейшей отправки с помощью процедуры СообщитьОшибкиПользователю().
ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки, ПолеОшибки, ТекстДляОднойОшибки, ГруппаОшибок, НомерСтроки, ТекстДляНесколькихОшибок, ИндексСтроки)
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
Ошибки = Неопределено;
// Проверка использования родителя.
Если Родитель = Справочники.ГруппыПользователей.ВсеПользователи Тогда
ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки,
"Объект.Родитель",
НСтр("ru = 'Предопределенная группа ""Все пользователи"" не может быть родителем.'"),
"");
КонецЕсли;
// Проверка заполнения значения.
Если НЕ ЗначениеЗаполнено(ТекущаяСтрока.Пользователь) Тогда
ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки,
"Объект.Состав[%1].Пользователь",
НСтр("ru = 'Пользователь не выбран.'"),
"Объект.Состав",
НомерСтроки,
НСтр("ru = 'Пользователь в строке %1 не выбран.'"));
Продолжить;
КонецЕсли;
// Проверка наличия повторяющихся значений.
НайденныеЗначения = Состав.НайтиСтроки(Новый Структура("Пользователь", ТекущаяСтрока.Пользователь));
Если НайденныеЗначения.Количество() > 1 Тогда
ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки,
"Объект.Состав[%1].Пользователь",
НСтр("ru = 'Пользователь повторяется.'"),
"Объект.Состав",
НомерСтроки,
НСтр("ru = 'Пользователь в строке %1 повторяется.'"));
КонецЕсли;
ОбщегоНазначенияКлиентСервер.СообщитьОшибкиПользователю(Ошибки, Отказ);
КонецПроцедуры
382. СообщитьОшибкиПользователю. Выводит накопленные методом ДобавитьОшибкуПользователю ошибки, при этом использует нужные шаблоны текстов ошибок в зависимости от количества однотипных ошибок.
ОбщегоНазначенияКлиентСервер.СообщитьОшибкиПользователю(Ошибки, Отказ)
&НаКлиенте
Функция ПроверитьРеквизитыШапки(ПроверяемыеРеквизиты)
ТекстыОшибок = Новый Соответствие;
ТекстыОшибок.Вставить("Организация", Нстр("ru='Укажите организацию'"));
ТекстыОшибок.Вставить("Дата", Нстр("ru='Укажите дату авансового отчета'"));
ТекстыОшибок.Вставить("ФизЛицо", Нстр("ru='Укажите сотрудника'"));
ТекстыОшибок.Вставить("ДатаНачалаКомандировки", Нстр("ru='Укажите дату начала командировки'"));
ТекстыОшибок.Вставить("ДатаОкончанияКомандировки", Нстр("ru='Укажите дату окончания командировки'"));
Ошибки = Неопределено;
Для Каждого Реквизит Из ПроверяемыеРеквизиты Цикл
ИмяРеквизита = Реквизит;
Если Найти(Реквизит, "Объект.") Тогда
ИмяРеквизита = СтрЗаменить(Реквизит, "Объект.", "");
Если НЕ ЗначениеЗаполнено(Объект[ИмяРеквизита]) Тогда
ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(
Ошибки,
Реквизит,
ТекстыОшибок[ИмяРеквизита],
"");
КонецЕсли;
Иначе
Если НЕ ЗначениеЗаполнено(ЭтотОбъект[ИмяРеквизита]) Тогда
ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(
Ошибки,
ИмяРеквизита,
ТекстыОшибок[ИмяРеквизита],
"");
КонецЕсли;
КонецЕсли;
КонецЦикла;
ОбщегоНазначенияКлиентСервер.СообщитьОшибкиПользователю(Ошибки);
Возврат (Ошибки = Неопределено);
КонецФункции
561. НайтиЗадания. В локальном режиме работы возвращает регламентные задания, соответствующие отбору.
Результат = РегламентныеЗаданияСервер.НайтиЗадания(Отбор)
//
Процедура ВыключитьЗадание(Организация)
УстановитьПривилегированныйРежим(Истина);
Отбор = Новый Структура();
Отбор.Вставить("Метаданные", "ОтправкаОтчетностиВБанк");
Задания = РегламентныеЗаданияСервер.НайтиЗадания(Отбор); // НайтиЗадания
Для Каждого РегЗадание Из Задания Цикл
Если РегЗадание.Параметры.Количество() > 0 И РегЗадание.Параметры[0] = Организация Тогда
РегламентныеЗаданияСервер.УдалитьЗадание(РегЗадание);
КонецЕсли;
КонецЦикла;
УстановитьПривилегированныйРежим(Ложь);
КонецПроцедуры
330. ИзменитьЗадание. Изменяет задание с указанным идентификатором.
РегламентныеЗаданияСервер.ИзменитьЗадание(Идентификатор, Параметры)
//
&НаСервереБезКонтекста
Процедура ЗарегистрироватьАвтоматическоеПолучениеВыписки(Знач НастройкаОбмена, Знач Пароль)
// Ищем задание по наименованию.
Отбор = Новый Структура();
Отбор.Вставить("Метаданные", "ПолучениеВыпискиОбменСБанками");
Задания = РегламентныеЗаданияСервер.НайтиЗадания(Отбор);
// Проверяем, что задание найдено.
Если Задания.Количество() <> 1 Тогда
// Запись в журнал ошибки опущена.
Возврат;
КонецЕсли;
// Включаем найденное задание.
НашеЗадание = Задания[0];
ПараметрыРегламентногоЗадания = Новый Структура();
ПараметрыРегламентногоЗадания.Вставить("Использование", Истина);
РегламентныеЗаданияСервер.ИзменитьЗадание(НашеЗадание.УникальныйИдентификатор, ПараметрыРегламентногоЗадания); // ИзменитьЗадание
КонецПроцедуры
144. УдалитьЗадание. Удаляет регламентное задание из информационной базы.
РегламентныеЗаданияСервер.УдалитьЗадание(Идентификатор)
//
Процедура ОтключитьОбменПоУчетнойЗаписи(УчетнаяЗапись) Экспорт
УстановитьПривилегированныйРежим(Истина);
Отбор = Новый Структура();
Отбор.Вставить("Ключ", Строка(УчетнаяЗапись.УникальныйИдентификатор()));
Отбор.Вставить("Метаданные", Метаданные.РегламентныеЗадания.ОбменСКонтролирующимиОрганами);
НайденныеЗадания = РегламентныеЗаданияСервер.НайтиЗадания(Отбор);
Для Каждого Задание Из НайденныеЗадания Цикл
РегламентныеЗаданияСервер.УдалитьЗадание(Задание.УникальныйИдентификатор);
КонецЦикла;
КонецПроцедуры
139. ДобавитьЗадание. Добавляет новое задание в очередь или как регламентное.
Результат = РегламентныеЗаданияСервер.ДобавитьЗадание(Параметры)
//
&НаСервере
Процедура ВключитьЗадание(Организация)
УстановитьПривилегированныйРежим(Истина);
Отбор = Новый Структура();
Отбор.Вставить("Метаданные", "ОтправкаОтчетностиВБанк");
Задания = РегламентныеЗаданияСервер.НайтиЗадания(Отбор);
ТребуетсяСоздатьЗадание = Истина;
Если Задания.Количество() = 0 Тогда
ТребуетсяСоздатьЗадание = Ложь;
КонецЕсли;
Если ТребуетсяСоздатьЗадание Тогда
ПараметрыЗадания = Новый Структура;
ПараметрыЗадания.Вставить("Метаданные", Метаданные.РегламентныеЗадания.ОтправкаОтчетностиВБанк);
ПараметрыЗадания.Вставить("Параметры", ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Организация));
ПараметрыЗадания.Вставить("Расписание", РасписаниеОтправки());
НаименованиеЗадания = СтрШаблон(НСтр("ru = 'Отправка отчетности в Сбербанк от %1'"), Организация);
ПараметрыЗадания.Вставить("Наименование", НаименованиеЗадания);
ПараметрыЗадания.Вставить("ИнтервалПовтораПриАварийномЗавершении", 1200);
ПараметрыЗадания.Вставить("КоличествоПовторовПриАварийномЗавершении", 3);
ПараметрыЗадания.Вставить("Использование", Истина);
РегламентныеЗаданияСервер.ДобавитьЗадание(ПараметрыЗадания);
КонецЕсли;
УстановитьПривилегированныйРежим(Ложь);
КонецПроцедуры
113. Задание. Возвращает РегламентноеЗадание из информационной базы.
Общие требования к регламентным заданиям
Регламентные задания: требования по локализации
Результат = РегламентныеЗаданияСервер.Задание(Идентификатор)
//
&НаСервереБезКонтекста
Процедура ОбновитьИспользованиеРегламентногоЗадания(Использование)
Задание = РегламентныеЗаданияСервер.Задание(Метаданные.РегламентныеЗадания.ИнтеграцияС1СДокументооборотВыполнитьОбменДанными);
Задание.Использование = Использование;
Задание.Записать();
КонецПроцедуры
102. ПолучитьРегламентноеЗадание. Возвращает РегламентноеЗадание из информационной базы..
Результат = РегламентныеЗаданияСервер.ПолучитьРегламентноеЗадание(Идентификатор)
//
&НаСервере
Процедура УстановитьИспользованиеРегламентногоЗадания(Включено)
Для каждого ВыделеннаяСтрока Из Элементы.ТаблицаРегламентныеЗадания.ВыделенныеСтроки Цикл
ТекущиеДанные = ТаблицаРегламентныеЗадания.НайтиПоИдентификатору(ВыделеннаяСтрока);
Задание = РегламентныеЗаданияСервер.ПолучитьРегламентноеЗадание(ТекущиеДанные.Идентификатор);
Если Задание.Использование <> Включено Тогда
Задание.Использование = Включено;
Задание.Записать();
ТекущиеДанные.Использование = Включено;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
80. УникальныйИдентификатор. Возвращает уникальный идентификатор регламентного задания. Для вызова требуются права администрирования или УстановитьПривилегированныйРежим.
Результат = РегламентныеЗаданияСервер.УникальныйИдентификатор(Идентификатор)
//
ИдентификаторЗадания = РегламентныеЗаданияСервер.УникальныйИдентификатор(Метаданные.РегламентныеЗадания.ПроверкаСостоянияСервисаКабинетСотрудника);
80. УстановитьИспользованиеРегламентногоЗадания. Устанавливает использование регламентного задания.
РегламентныеЗаданияСервер.УстановитьИспользованиеРегламентногоЗадания(Идентификатор, Использование)
//
РегламентныеЗаданияСервер.УстановитьИспользованиеРегламентногоЗадания(Метаданные.РегламентныеЗадания.ЗапросЛицензийУникальныхУслуг, Ложь);
44. УстановитьРасписаниеРегламентногоЗадания. Устанавливает расписание регламентного задания.
РегламентныеЗаданияСервер.УстановитьРасписаниеРегламентногоЗадания(Идентификатор, Расписание)
//
Процедура ПерейтиНаВерсию_2_1_7_11() Экспорт
ОтборЗаданий = Новый Структура;
ОтборЗаданий.Вставить("Метаданные",Метаданные.РегламентныеЗадания.ВсеОбновленияСПАРКРискиРазделенное);
ОтборЗаданий.Вставить("Предопределенное", Истина);
Задания = РегламентныеЗаданияСервер.НайтиЗадания(ОтборЗаданий);
Если ТипЗнч(Задания) = Тип("Массив") Тогда
ИдентификаторЗадания = Задания[0].УникальныйИдентификатор;
РасписаниеЗадания = Новый РасписаниеРегламентногоЗадания;
РасписаниеЗадания.ПериодПовтораДней = 1;
РасписаниеЗадания.ПериодПовтораВТечениеДня = 43200; // Каждые 12 часов.
РегламентныеЗаданияСервер.УстановитьРасписаниеРегламентногоЗадания(ИдентификаторЗадания, РасписаниеЗадания);
КонецЕсли;
КонецПроцедуры
36. РаботаСВнешнимиРесурсамиЗаблокирована. Возвращает признак установленной блокировки работы с внешними ресурсами.
Результат = РегламентныеЗаданияСервер.РаботаСВнешнимиРесурсамиЗаблокирована()
//
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если РегламентныеЗаданияСервер.РаботаСВнешнимиРесурсамиЗаблокирована() Тогда
ВызватьИсключение НСтр("ru = 'Работа со всеми внешними ресурсами (синхронизация данных, отправка почты и т.п.) заблокирована.';");
КонецЕсли;
КонецПроцедуры
16. РасписаниеРегламентногоЗадания. Возвращает расписание регламентного задания.
Результат = РегламентныеЗаданияСервер.РасписаниеРегламентногоЗадания(Идентификатор, ВСтруктуре)
//
РегламентноеЗадание = РегламентныеЗаданияСервер.ПолучитьРегламентноеЗадание(Метаданные.РегламентныеЗадания.ВсеОбновленияНовостей);
РасписаниеРегламентногоЗадания = РегламентныеЗаданияСервер.РасписаниеРегламентногоЗадания(РегламентноеЗадание, Истина);
14. РегламентноеЗаданиеИспользуется. Возвращает использование регламентного задания.
Результат = РегламентныеЗаданияСервер.РегламентноеЗаданиеИспользуется(Идентификатор)
//
Элементы.СписокСостоянияУзловВключитьОтключитьРасписаниеОтправкиИПолученияСообщенийСистемы.Пометка =
РегламентныеЗаданияСервер.РегламентноеЗаданиеИспользуется(
Метаданные.РегламентныеЗадания.ОтправкаИПолучениеСообщенийСистемы);
10. РазблокироватьРаботуСВнешнимиРесурсами. Разрешает работу с внешними ресурсами.
РегламентныеЗаданияСервер.РазблокироватьРаботуСВнешнимиРесурсами()
296. ДобавитьСообщениеДляЖурналаРегистрации. Записывает сообщение в журнал регистрации.
Использование Журнала регистрации
ЖурналРегистрацииКлиент.ДобавитьСообщениеДляЖурналаРегистрации(СобытиеЖурналаРегистрации(), "Предупреждение",
НСтр("ru = 'Невозможно подключиться к сети Интернет для проверки обновлений.'"));
// Вызов на сервере:
ЖурналРегистрации.ДобавитьСообщениеДляЖурналаРегистрации(ИмяСобытия, УровеньЖурналаРегистрации.Ошибка,,, ОписаниеОшибки);
118. ОткрытьЖурналРегистрации. Открывает форму журнала регистрации с установленным отбором.
ЖурналРегистрацииКлиент.ОткрытьЖурналРегистрации(Отбор, Владелец)
ИмяПриложения = Новый Массив;
ИмяПриложения.Добавить("1CV8"); // Толстый клиент
ИмяПриложения.Добавить("1CV8C"); // Тонкий клиент
ИмяПриложения.Добавить("WebClient"); // Веб-клиент
ИмяПриложения.Добавить("Designer"); // Конфигуратор
ИмяПриложения.Добавить("COMConnection"); // COM соединение
ИмяПриложения.Добавить("WSConnection"); // Web-сервис
ИмяПриложения.Добавить("BackgroundJob"); // обработки заданий
ИмяПриложения.Добавить("WebServerExtension"); // Расширение Web-сервера
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ДатаНачала", ДатаНачала);
ПараметрыФормы.Вставить("ДатаОкончания", ДатаОкончания);
ПараметрыФормы.Вставить("Уровень", "Ошибка");
ПараметрыФормы.Вставить("СобытиеЖурналаРегистрации", НСтр("ru = 'Исправления.Установка'"));
ПараметрыФормы.Вставить("ИмяПриложения", ИмяПриложения));
ПараметрыФормы.Вставить("ЗапускатьНеВФоне", Истина);
ЖурналРегистрацииКлиент.ОткрытьЖурналРегистрации(ПараметрыФормы);
11. ЗаписатьСобытияВЖурналРегистрации. Процедура пакетной записи сообщений в журнал регистрации. После записи переменная СобытияДляЖурналаРегистрации очищается.
ЖурналРегистрации.ЗаписатьСобытияВЖурналРегистрации(СобытияДляЖурналаРегистрации)
СтруктураСообщения = Новый Структура;
СтруктураСообщения.Вставить("ИмяСобытия", СобытиеЖурналаРегистрацииПоказыватьПриОткрытии(ПоказыватьПриОткрытии));
СтруктураСообщения.Вставить("ПредставлениеУровня", "");
СтруктураСообщения.Вставить("Комментарий", "");
СтруктураСообщения.Вставить("ДатаСобытия", "");
СобытияЖурнала = Новый СписокЗначений;
СобытияЖурнала.Добавить(СтруктураСообщения);
ЖурналРегистрации.ЗаписатьСобытияВЖурналРегистрации(СобытияЖурнала);
985. УстановитьУсловноеОформлениеПоляДата. Устанавливает представление поля Дата в списках, содержащих реквизит с составом даты Дата и время.
СтандартныеПодсистемыСервер.УстановитьУсловноеОформлениеПоляДата(ЭтотОбъект);
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
СтандартныеПодсистемыСервер.УстановитьУсловноеОформлениеПоляДата(ЭтотОбъект, "Список.Дата", Элементы.Дата.Имя);
КонецПроцедуры
419. ПараметрыРаботыКлиента. Возвращает значения параметров, необходимых для работы клиентского кода конфигурации без дополнительных серверных вызовов.
Результат = СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиента()
362. ПараметрыРаботыКлиентаПриЗапуске. Возвращает значения параметров, необходимых для работы клиентского кода при запуске конфигурации за один серверный вызов.
Результат = СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиентаПриЗапуске()
229. ЭтоБазоваяВерсияКонфигурации. Возвращает признак того, является ли конфигурация базовой.
Результат = СтандартныеПодсистемыСервер.ЭтоБазоваяВерсияКонфигурации()
Если СтандартныеПодсистемыСервер.ЭтоБазоваяВерсияКонфигурации()
И Не СтандартныеПодсистемыСервер.ДоступнаУстановкаПодписанныхРасширенийВБазовойВерсии() Тогда
ВызватьИсключение НСтр("ru = 'Расширения недоступны в базовой версии программы.'");
КонецЕсли;
143. ПоказатьВопросПользователю. Показать форму вопроса.
СтандартныеПодсистемыКлиент.ПоказатьВопросПользователю(ОписаниеОповещенияОЗавершении, ТекстВопроса, Кнопки, ДополнительныеПараметры)
//
Параметры = СтандартныеПодсистемыКлиент.ПараметрыВопросаПользователю();
Параметры.ПредлагатьБольшеНеЗадаватьЭтотВопрос = Ложь;
Параметры.Заголовок = НСтр("ru = 'Записать документ'");
Параметры.КнопкаПоУмолчанию = "Записать";
СтандартныеПодсистемыКлиент.ПоказатьВопросПользователю(
Обработчик,
НСтр("ru = 'Для изменения типа документа требуется его записать.
|Записать?'"),
Кнопки,
Параметры
);
83. ПараметрыВопросаПользователю. Возвращает новую структуру дополнительных параметров для процедуры ПоказатьВопросПользователю.
Результат = СтандартныеПодсистемыКлиент.ПараметрыВопросаПользователю()
//
Обработчик = Новый ОписаниеОповещения("ПослеПодтвержденияИзмененияТипаДокумента", ЭтотОбъект, Форма);
Кнопки = Новый СписокЗначений;
Кнопки.Добавить("Записать", НСтр("ru = 'Записать'"));
Кнопки.Добавить("Отмена", НСтр("ru = 'Отмена'"));
Параметры = СтандартныеПодсистемыКлиент.ПараметрыВопросаПользователю();
Параметры.ПредлагатьБольшеНеЗадаватьЭтотВопрос = Ложь;
Параметры.Заголовок = НСтр("ru = 'Записать документ'");
Параметры.КнопкаПоУмолчанию = "Записать";
СтандартныеПодсистемыКлиент.ПоказатьВопросПользователю(
Обработчик,
НСтр("ru = 'Для изменения типа документа требуется его записать.
|Записать?'"),
Кнопки,
Параметры
);
52. ОткрытьСписокАктивныхПользователей. Вызывается при необходимости открыть форму списка активных пользователей, которые в данный момент времени работают с системой.
СтандартныеПодсистемыКлиент.ОткрытьСписокАктивныхПользователей(ПараметрыФормы, ВладелецФормы)
//
ПараметрыФормы = Новый Структура("ОтборИмяПриложения", "1CV8,1CV8C,WebClient");
СтандартныеПодсистемыКлиент.ОткрытьСписокАктивныхПользователей(ПараметрыФормы);
50. ВерсияБиблиотеки. Возвращает номер версии "Библиотеки стандартных подсистем" (БСП), встроенной в конфигурацию.
Результат = СтандартныеПодсистемыСервер.ВерсияБиблиотеки()
48. УстановитьРасширенныйЗаголовокПриложения. Устанавливает Стандартные подсистемы главного окна приложения, используя значение константы ЗаголовокПриложения и Стандартные подсистемы приложения по умолчанию.
СтандартныеПодсистемыКлиент.УстановитьРасширенныйЗаголовокПриложения(ПриЗапуске)
40. ПараметрыАдминистрирования. Возвращает сохраненные в информационной базы параметры администрирования.
Результат = СтандартныеПодсистемыСервер.ПараметрыАдминистрирования()
//
ПараметрыАдминистрирования = СтандартныеПодсистемыСервер.ПараметрыАдминистрирования();
Если ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных() Тогда
ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоИмени(ПараметрыАдминистрирования.ИмяАдминистратораИнформационнойБазы);
Если ПользовательИБ <> Неопределено Тогда
ИдентификаторАдминистратораИБ = ПользовательИБ.УникальныйИдентификатор;
КонецЕсли;
КонецЕсли;
ТипПодключения = ПараметрыАдминистрирования.ТипПодключения;
ПортКластераСерверов = ПараметрыАдминистрирования.ПортКластера;
АдресАгентаСервера = ПараметрыАдминистрирования.АдресАгентаСервера;
ПортАгентаСервера = ПараметрыАдминистрирования.ПортАгентаСервера;
АдресСервераАдминистрирования = ПараметрыАдминистрирования.АдресСервераАдминистрирования;
ПортСервераАдминистрирования = ПараметрыАдминистрирования.ПортСервераАдминистрирования;
ИмяВКластере = ПараметрыАдминистрирования.ИмяВКластере;
ИмяАдминистратораКластера = ПараметрыАдминистрирования.ИмяАдминистратораКластера;
34. ИдентификаторИнформационнойБазы. Получает уникальный идентификатор информационной базы, с помощью которого можно различать различные экземпляры информационных баз.
Результат = СтандартныеПодсистемыСервер.ИдентификаторИнформационнойБазы() // "1cf79487-d757-432f-9e84-b6e723088d9a"
25. ПропуститьПредупреждениеПередЗавершениемРаботыСистемы. Отключает выдачу предупреждения пользователю при завершении работы программы.
СтандартныеПодсистемыКлиент.ПропуститьПредупреждениеПередЗавершениемРаботыСистемы()
//
Процедура ЗадатьВопросПриЗавершенииРаботыЗавершение(Ответ, ДополнительныеПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
СтандартныеПодсистемыКлиент.ПропуститьПредупреждениеПередЗавершениемРаботыСистемы();
ЗавершитьРаботуСистемы(Истина, Ложь);
КонецЕсли;
КонецПроцедуры
25. ПредупреждениеПриЗавершенииРаботы. Возвращает новую структуру параметров для вывода предупреждения перед завершением работы программы.
Результат = СтандартныеПодсистемыКлиент.ПредупреждениеПриЗавершенииРаботы()
Процедура ПередЗавершениемРаботыСистемы(Отказ, Предупреждения) Экспорт
Если РаботаПользователейЗавершается() Тогда
ПараметрыПредупреждения = СтандартныеПодсистемыКлиент.ПредупреждениеПриЗавершенииРаботы();
ПараметрыПредупреждения.ТекстГиперссылки = НСтр("ru = 'Блокировка работы пользователей'");
ПараметрыПредупреждения.ТекстПредупреждения = НСтр("ru = 'Из текущего сеанса выполняется завершение работы пользователей'");
ПараметрыПредупреждения.ВывестиОдноПредупреждение = Истина;
Форма = "Обработка.БлокировкаРаботыПользователей.Форма.БлокировкаСоединенийСИнформационнойБазой";
ДействиеПриНажатииГиперссылки = ПараметрыПредупреждения.ДействиеПриНажатииГиперссылки;
ДействиеПриНажатииГиперссылки.Форма = Форма;
ДействиеПриНажатииГиперссылки.ПрикладнаяФормаПредупреждения = Форма;
Предупреждения.Добавить(ПараметрыПредупреждения);
КонецЕсли;
КонецПроцедуры
20. ПриНачалеРаботыСистемы. Выполнить стандартные действия при начале работы пользователя с областью данных, либо в локальном режиме работы.
СтандартныеПодсистемыКлиент.ПриНачалеРаботыСистемы(ОповещениеЗавершения, НепрерывноеВыполнение)
15. ПередНачаломРаботыСистемы. Выполнить стандартные действия перед началом работы пользователя с областью данных, либо в локальном режиме работы.
СтандартныеПодсистемыКлиент.ПередНачаломРаботыСистемы(ОповещениеЗавершения)
10. ПередЗавершениемРаботыСистемы. Выполнить стандартные действия перед завершением работы пользователя с областью данных, либо в локальном режиме работы.
СтандартныеПодсистемыКлиент.ПередЗавершениемРаботыСистемы(Отказ, ТекстПредупреждения)
10. ЗапрашиватьПодтверждениеПриЗавершенииПрограммы. Получает настройку необходимости выводить подтверждение при завершении работы программы для текущего пользователя.
Результат = СтандартныеПодсистемыСервер.ЗапрашиватьПодтверждениеПриЗавершенииПрограммы()
5. ПоказыватьПредупреждениеОбУстановленныхОбновленияхПрограммы. Возвращает признак необходимости показа всплывающего уведомления об установленных обновлениях программы - динамическом обновлении программы, новых патчей и расширений.
Результат = СтандартныеПодсистемыСервер.ПоказыватьПредупреждениеОбУстановленныхОбновленияхПрограммы()
5. УстановкаПараметровСеанса. Вызов этой процедуры необходимо разместить в модуле сеанса в процедуре УстановкаПараметровСеанса согласно документации.
Результат = СтандартныеПодсистемыСервер.УстановкаПараметровСеанса(ИменаПараметровСеанса)
96. ЭтоWindowsКлиент. Возвращает Истина, если клиентское приложение запущено под управлением ОС Windows. Список функций, позволяющих определять где работает пользователь: ЭтоWindowsСервер(), ЭтоLinuxКлиент(), ЭтоLinuxСервер(), ЭтоMacOSКлиент(), ЭтоВебКлиент(), ЭтоМобильныйКлиент(), КлиентПодключенЧерезВебСервер().
// Вызов с клиента
ОбщегоНазначенияКлиент.ЭтоWindowsКлиент()
// Вызов с серера
ОбщегоНазначения.ЭтоWindowsКлиент()
//
Функция УстановитьВнешнееСоединениеСБазой(Параметры) Экспорт
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
ПодключениеНедоступно = ОбщегоНазначения.ЭтоLinuxСервер();
КраткоеОписаниеОшибки = НСтр("ru = 'Прямое подключение к информационной базе недоступно на сервере под управлением ОС Linux.');
#Иначе
ПодключениеНедоступно = ЭтоLinuxКлиент() Или ЭтоOSXКлиент() Или ЭтоМобильныйКлиент();
КраткоеОписаниеОшибки = НСтр("ru = 'Прямое подключение к информационной базе доступно только на клиенте под управлением ОС Windows.');
#КонецЕсли
Если ПодключениеНедоступно Тогда
Результат.Соединение = Неопределено;
Результат.КраткоеОписаниеОшибки = КраткоеОписаниеОшибки;
Возврат Результат;
КонецЕсли;
Возврат Результат;
КонецФункции
//
&НаКлиенте
Процедура Печать(Команда)
Если Не ОбщегоНазначенияКлиент.ЭтоWindowsКлиент() Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Печать файлов возможна только в Windows.'"));
Возврат;
КонецЕсли;
РаботаСФайламиКлиент.НапечататьФайлы(ВыделенныеСтроки, ЭтотОбъект.УникальныйИдентификатор);
КонецПроцедуры
80. ИнформационнаяБазаФайловая. Определяет режим эксплуатации информационной базы файловый (Истина) или серверный (Ложь).
Результат = ОбщегоНазначения.ИнформационнаяБазаФайловая()
Если ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда
ВызватьИсключение НСтр("ru = 'Настройка параметров кластера серверов доступна только в клиент-серверном режиме работы.'");
КонецЕсли;
18. КаталогФайловойИнформационнойБазы. Для файлового режима работы возвращает полное имя каталога, в котором расположена информационная база. Если режим работы клиент-серверный, то возвращается пустая строка.
Результат = ОбщегоНазначенияКлиентСервер.КаталогФайловойИнформационнойБазы()
// Проверить, что каталог не является текущим каталогом ИБ.
ТекущийКаталогИБ = ВРег(ОбщегоНазначенияКлиентСервер.КаталогФайловойИнформационнойБазы());
Если ТекущийКаталогИБ = КаталогВосстановления Тогда
Элементы.ДекорацияВыборКаталогаОшибкаТекст.Заголовок =
НСтр("ru='Нельзя восстанавливать резервную копию в каталог с текущей информационной базой.'");
КонецЕсли;
359. РежимОтладки. Возвращает Истина, если включен режим отладки.
// Вызов с клиента
Результат = ОбщегоНазначенияКлиент.РежимОтладки()
// Вызов с сервера
Результат = ОбщегоНазначения.РежимОтладки()
// Пример из БП 3.0
&НаСервере
Процедура СкрытьСлужебныеОбласти(Макет)
Если ОбщегоНазначения.РежимОтладки() Тогда
Возврат;
КонецЕсли;
СкрываемаяОбласть = Макет.Области.Найти("СкрытьПриОткрытии");
СкрываемаяОбласть.Видимость = Ложь;
КонецПроцедуры
51. ОбщиеПараметрыБазовойФункциональности. Общие параметры подсистемы. См. ОбщегоНазначенияПереопределяемый.ПриОпределенииОбщихПараметровБазовойФункциональности
Результат = ОбщегоНазначения.ОбщиеПараметрыБазовойФункциональности()
321. ЭтоПодчиненныйУзелРИБ. Определяет, что эта информационная база является подчиненным узлом распределенной информационной базы (РИБ).
Результат = ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ()
//
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ() Тогда
ТолькоПросмотр = Истина;
КонецЕсли;
КонецПроцедуры
11. ЭтоПодчиненныйУзелРИБСФильтром. Определяет, что эта информационная база является подчиненным узлом распределенной информационной базы (РИБ) с фильтром.
Результат = ОбщегоНазначения.ЭтоПодчиненныйУзелРИБСФильтром()
5. ТребуетсяОбновлениеКонфигурацииПодчиненногоУзлаРИБ. Возвращает Истина при необходимости обновления конфигурации информационной базы подчиненного узла РИБ. В главном узле всегда Ложь.
Результат = ОбщегоНазначения.ТребуетсяОбновлениеКонфигурацииПодчиненногоУзлаРИБ()
//
Если ОбщегоНазначения.ТребуетсяОбновлениеКонфигурацииПодчиненногоУзлаРИБ() Тогда
Пояснение = НСтр("ru = 'Получено обновление программы из ""%1"".
|Необходимо установить обновление программы, после чего синхронизация данных будет продолжена.'");
Пояснение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Пояснение, СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиента().ГлавныйУзел);
ПоказатьОповещениеПользователя(НСтр("ru = 'Установить обновление'"), "e1cib/app/Обработка.ВыполнениеОбменаДанными",
Пояснение, БиблиотекаКартинок.Предупреждение32);
Оповестить("ВыполненОбменДанными");
КонецЕсли;
19. ОписанияПодсистем. Возвращает описания всех библиотек конфигурации, включая описание самой конфигурации.
Результат = ОбщегоНазначения.ОписанияПодсистем()
25. КлиентПодключенЧерезВебСервер. Возвращает Истина, если клиентское приложение подключено к базе через веб-сервер.
Результат = ОбщегоНазначения.КлиентПодключенЧерезВебСервер()
29. ТипПлатформыКлиента. Возвращает тип платформы клиента.
// ТипПлатформы.Windows_x86
Результат = ОбщегоНазначенияКлиент.ТипПлатформыКлиента()
5. ОперативнаяПамятьДоступнаяКлиентскомуПриложению. Возвращает объем оперативной памяти, доступной клиентскому приложению.
Результат = ОбщегоНазначения.ОперативнаяПамятьДоступнаяКлиентскомуПриложению()
Функция ЭтоМедленныйРежимРаботы() Экспорт
ОперативнаяПамять = ОбщегоНазначения.ОперативнаяПамятьДоступнаяКлиентскомуПриложению();
РекомендуемыйОбъем = ОбщегоНазначения.ОбщиеПараметрыБазовойФункциональности().РекомендуемыйОбъемОперативнойПамяти;
ИБФайловая = (ОбщегоНазначения.ИнформационнаяБазаФайловая()
И Не ОбщегоНазначения.КлиентПодключенЧерезВебСервер());
// Проверка объема доступной оперативной памяти.
Если ИБФайловая Тогда
Если ЗначениеЗаполнено(ОперативнаяПамять)
И ОперативнаяПамять < РекомендуемыйОбъем Тогда
Возврат Истина;
КонецЕсли;
Иначе
// В клиент-серверной базе данных проверим режим низкой скорости соединения.
СкоростьТекущегоСоединения = ПолучитьСкоростьКлиентскогоСоединения();
Возврат СкоростьТекущегоСоединения = СкоростьКлиентскогоСоединения.Низкая;
КонецЕсли;
Возврат Ложь;
КонецФункции
8. ИдентификаторИнтернетПоддержкиКонфигурации. Возвращает идентификатор Интернет-поддержки основной конфигурации.
Результат = ОбщегоНазначения.ИдентификаторИнтернетПоддержкиКонфигурации()
9. АдресПубликацииИнформационнойБазыВЛокальнойСети. Возвращает адрес публикации информационной базы для формирования прямых ссылок на объекты ИБ для возможности перехода к ним пользователей, имеющих доступ к базе через публикацию локальной сети.
// Возвращает прямую ссылку для открытия обработки ВыгрузкаДанныхПроекта.
ОбщегоНазначения.АдресПубликацииИнформационнойБазыВЛокальнойСети() + "/" + e1cib/app/Обработка.ВыгрузкаДанныхПроекта";
0. РедакцияКонфигурации. Возвращает редакцию конфигурации. Редакцией принято называть две первые группы цифр полной версии конфигурации. Например, у версии "1.2.3.4" редакция "1.2".
Результат = ОбщегоНазначения.РедакцияКонфигурации()
0. АдресВходаВПрограмму. Формирует ссылку для входа в программу для указанного пользователя.
Результат = ОбщегоНазначения.АдресВходаВПрограмму(Пользователь, Пароль, ВидПубликацииИБ)
3932. РазделениеВключено. Возвращает признак работы в режиме разделения данных по областям (технически это признак условного разделения).
Результат = ОбщегоНазначения.РазделениеВключено()
1795. ДоступноИспользованиеРазделенныхДанных. Возвращает признак возможности обращения к разделенным данным (которые входят в состав разделителей).
Результат = ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных()
306. ЭтоАвтономноеРабочееМесто. Возвращает Истина, если эта информационная база подключена к 1С:Fresh.
Результат = ОбщегоНазначения.ЭтоАвтономноеРабочееМесто()
1104. ДатаСеанса. Возвращает текущую дату, приведенную к часовому поясу сеанса. Предназначена для использования вместо функции ТекущаяДата() в клиентском коде в тех случаях, когда нет возможности перевести выполнение алгоритма в серверный код.
Результат = ОбщегоНазначенияКлиент.ДатаСеанса()
210. ТекущаяДатаПользователя. Возвращает значение настройки рабочей даты для пользователя или текущей даты сеанса, если рабочая дата пользователя не задана.
Результат = ОбщегоНазначения.ТекущаяДатаПользователя()
35. РабочаяДатаПользователя. Возвращает значение настройки рабочей даты для пользователя.
Результат = ОбщегоНазначения.РабочаяДатаПользователя(ИмяПользователя)
26. ДатаУниверсальная. Возвращает универсальную дату сеанса, получаемую из текущей даты сеанса.
Результат = ОбщегоНазначенияКлиент.ДатаУниверсальная()
15. ИнтервалВремениСтрокой. Возвращает строковое представление интервала между переданными датами или относительно переданной даты и текущей даты сеанса.
Результат = ОбщегоНазначения.ИнтервалВремениСтрокой(ВремяНачала, ВремяОкончания)
// Адресный классификатор был загружен 24 дня назад.
РазностьДней = ОбщегоНазначения.ИнтервалВремениСтрокой(ВремяНачала, ВремяОкончания);
Сообщенеие = НСтр("ru = 'Адресный классификатор был загружен %1 назад.'");
Представление = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Сообщенеие, РазностьДней);
3. УстановитьРабочуюДатуПользователя. Сохраняет настройку рабочей даты пользователя.
ОбщегоНазначения.УстановитьРабочуюДатуПользователя(НоваяРабочаяДата, ИмяПользователя)
2. ПредставлениеЛокальнойДатыСоСмещением. Преобразует локальную дату к формату "YYYY-MM-DDThh:mm:ssTZD"
Результат = ОбщегоНазначенияКлиент.ПредставлениеЛокальнойДатыСоСмещением(ЛокальнаяДата)
431. ЗначениеВСтрокуXML. Преобразует (сериализует) любое значение в XML-строку. Преобразованы в могут быть только те объекты, для которых в синтаксис-помощнике указано, что они сериализуются.
Разбор XML документа - почти все возможные способы
// <string xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="string">тест</string> Результат = ОбщегоНазначения.ЗначениеВСтрокуXML("тест") // <CatalogRef.Номенклатура // xmlns="http://v8.1c.ru/8.1/data/enterprise/current-config" // xmlns:xs="http://www.w3.org/2001/XMLSchema" // xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" // xsi:type="CatalogRef.Номенклатура"> // f93e113e-c83a-11e2-8026-0015e9b8c48d // </CatalogRef.Номенклатура> Результат = ОбщегоНазначения.ЗначениеВСтрокуXML(Номенклатура) // Метод в основном используется для сохранения/загрузки настроек &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) СтрокаXML = ПолучитьИзВременногоХранилища(Параметры.АдресВоВременномХранилище); Ведомость = ОбщегоНазначения.ЗначениеИзСтрокиXML(СтрокаXML); // ТЗ из XML строки Обработка = РеквизитФормыВЗначение("Объект"); Обработка.Зарплата.Загрузить(Ведомость.Зарплата.Выгрузить()); КонецПроцедуры &НаСервере Процедура ЗаписатьНаСервере() СтрокаXML = ПолучитьИзВременногоХранилища(АдресВоВременномХранилище); Ведомость = ОбщегоНазначения.ЗначениеИзСтрокиXML(СтрокаXML); // ТЗ из XML строки Обработка = РеквизитФормыВЗначение("Объект"); Ведомость.Зарплата.Загрузить(Обработка.Зарплата.Выгрузить()); СтрокаXML = ОбщегоНазначения.ЗначениеВСтрокуXML(Ведомость); // ТЗ в XML строку ПоместитьВоВременноеХранилище(СтрокаXML, АдресВоВременномХранилище); КонецПроцедуры
247. ЗначениеИзСтрокиXML. Выполняет преобразование (десериализацию) XML-строки в значение. См. также ЗначениеВСтрокуXML.
Результат = ОбщегоНазначения.ЗначениеИзСтрокиXML(СтрокаXML)
85. ОбъектXDTOИзСтрокиXML. Формирует XDTO-объект по XML-представлению.
Результат = ОбщегоНазначения.ОбъектXDTOИзСтрокиXML(СтрокаXML, Фабрика)
//
Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию("Лимонад");
XML = ОбщегоНазначения.ЗначениеВСтрокуXML(Номенклатура);
// Значение XDTO, значение - ссылка на номенклатуру Лимонад, лексическое представление - "f93e113e-c83a-11e2-8026-0015e9b8c48d"
Обратно = ОбщегоНазначения.ОбъектXDTOИзСтрокиXML(XML);
//
ДобавляемыеРазрешения = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип(ПакетАдминистрированиеРазрешений(), "PermissionsList"));
МассивРазрешений = ОбщегоНазначения.ЗначениеИзСтрокиXML(Выборка.ДобавляемыеРазрешения);
Для Каждого ЭлементМассива Из МассивРазрешений Цикл
ДобавляемыеРазрешения.Permission.Добавить(ОбщегоНазначения.ОбъектXDTOИзСтрокиXML(ЭлементМассива));
КонецЦикла;
63. ОбъектXDTOВСтрокуXML. Возвращает XML-представление XDTO-объекта.
Результат = ОбщегоНазначения.ОбъектXDTOВСтрокуXML(ОбъектXDTO, Фабрика)
ЗапросПоставщику = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип(ПространствоИмен, "Запрос"));
ЗаполнитьЗначенияСвойств(ЗапросПоставщику, Параметры);
XMLДокумент = ОбщегоНазначения.ОбъектXDTOВСтрокуXML(ЗапросПоставщику);
ТекстовыйДокумент = Новый ТекстовыйДокумент();
ТекстовыйДокумент.УстановитьТекст(XMLДокумент);
ИмяФайлаXML = ПолучитьИмяВременногоФайла();
ТекстовыйДокумент.Записать(ИмяФайлаXML, КодировкаТекста.UTF8);
60. ЗаменитьНедопустимыеСимволыXML. Заменяет недопустимые символы в XML-строке на заданные символы.
Результат = ОбщегоНазначенияКлиентСервер.ЗаменитьНедопустимыеСимволыXML(Текст, СимволЗамены)
30. УдалитьНедопустимыеСимволыXML. Удаляет недопустимые символы в XML-строке.
Результат = ОбщегоНазначенияКлиентСервер.УдалитьНедопустимыеСимволыXML(Текст)
661. ОткрытьНавигационнуюСсылку. Открывает навигационную ссылку в программе, которая ассоциирована с протоколом навигационной ссылки.
ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку("e1cib/navigationpoint/startpage"); // начальная страница.
ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку("v8help://1cv8/QueryLanguageFullTextSearchInData");
ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку("https://1c.ru");
ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку("mailto:help@company.ru");
ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку("skype:echo123?call");
93. ОткрытьФайл. Открывает файл для просмотра или редактирования. Если файл открывается из двоичных данных во временном хранилище, предварительно сохраняет его во временный каталог.
ФайловаяСистемаКлиент.ОткрытьФайл(РасположениеФайла, ОбработчикЗавершения, ИмяФайла, ПараметрыОткрытия)
// Открытие файла из двоичных данных
ИмяВременногоФайла = "Имя файла");
ИмяВременногоФайлаСРасширением = ОбщегоНазначенияКлиентСервер.ПолучитьИмяСРасширением(ИмяВременногоФайла, "xml");
СсылкаНаДвоичныеДанныеФайла = ПоместитьВоВременноеХранилище(ДвоичныеДанные, Новый УникальныйИдентификатор);
ФайловаяСистемаКлиент.ОткрытьФайл(СсылкаНаДвоичныеДанныеФайла,, ИмяВременногоФайлаСРасширением); // Открытие
// Открытие из файловой системы
ИмяВременнойПапки = ПолучитьИмяВременногоФайла();
СоздатьКаталог(ИмяВременнойПапки);
ИмяВременногоФайла = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ИмяВременнойПапки) + ВыбранноеВложение.Представление;
ДвоичныеДанные = ПолучитьИзВременногоХранилища(ВыбранноеВложение.АдресВоВременномХранилище);
ДвоичныеДанные.Записать(ИмяВременногоФайла);
ФайловаяСистемаКлиент.ОткрытьФайл(ИмяВременногоФайла); // Открытие
69. ЗапуститьПрограмму. Запускает внешнюю программу на исполнение (например, *.exe, *bat)
Безопасность запуска приложений
Безопасность программного обеспечения, вызываемого через открытые интерфейсы
О запуске сторонних приложений и скриптов из кода встроенного языка платформы 1С.
// Простой запуск
ФайловаяСистемаКлиент.ЗапуститьПрограмму("calc");
// Запуск с ожиданием завершения и получения кода возврата:
ПараметрыЗапускаПрограммы = ФайловаяСистемаКлиент.ПараметрыЗапускаПрограммы();
ПараметрыЗапускаПрограммы.ДождатьсяЗавершения = Истина;
ПараметрыЗапускаПрограммы.ПолучитьПотокВывода = Истина;
ПараметрыЗапускаПрограммы.ПолучитьПотокОшибок = Истина;
Результат = ФайловаяСистемаКлиент.ЗапуститьПрограмму("ping 127.0.0.1 -n 5", ПараметрыЗапускаПрограммы);
КодВозврата = Результат.КодВозврата;
ПотокВывода = Результат.ПотокВывода;
ПотокОшибок = Результат.ПотокОшибок;
61. ОткрытьПроводник. Открывает проводник с указанным путем. Если передан путь к файлу, то выполняет позиционирование курсора в проводнике на этом файле.
ФайловаяСистемаКлиент.ОткрытьПроводник("C:\Users");
ФайловаяСистемаКлиент.ОткрытьПроводник("C:\Program Files\1cv8\common\1cestart.exe");
47. ПараметрыЗапускаПрограммы. Конструктор параметров для ФайловаяСистема.ЗапуститьПрограмму.
Результат = ФайловаяСистема.ПараметрыЗапускаПрограммы()
345. СтруктураURI. Разбирает строку URI на составные части и возвращает в виде структуры.
Таймауты при работе с внешними ресурсами
Результат = ОбщегоНазначенияКлиентСервер.СтруктураURI(СтрокаURI)
URI = ОбщегоНазначенияКлиентСервер.СтруктураURI(АдресСтраницы);
HTTPСоединение = Новый HTTPСоединение(URI.Хост, URI.Порт,,,,3, ОбщегоНазначенияКлиентСервер.НовоеЗащищенноеСоединение());
GetЗапрос = Новый HTTPЗапрос(URI.ПутьНаСервере);
Попытка
Результат = HTTPСоединение.Получить(GetЗапрос);
Исключение
Возврат Ложь;
КонецПопытки;
198. НовоеЗащищенноеСоединение. Создает объект описания защищенного соединения OpenSSL. См. также описание объекта ЗащищенноеСоединениеOpenSSL в синтаксис-помощнике.
Результат = ОбщегоНазначенияКлиентСервер.НовоеЗащищенноеСоединение(СертификатКлиента, СертификатыУдостоверяющихЦентров)
ЗащищенноеСоединение = Неопределено;
Если ВРег(СтруктураURI.Схема) = "HTTPS" Или ВРег(СтруктураURI.Схема) = "FTPS" Тогда
ЗащищенноеСоединение = ОбщегоНазначенияКлиентСервер.НовоеЗащищенноеСоединение();
КонецЕсли;
Соединение = Новый HTTPСоединение(СтруктураURI.Хост, СтруктураURI.Порт,,, ИнтернетПрокси, Таймаут, ЗащищенноеСоединение);
37. ОтправитьPOSTЗапрос. Выполняет POST запрос к ресурку. Так как модуль служебный, то метод в будущем может быть изменен/удален.
Коннектор: удобный HTTP-клиент для 1С:Предприятие 8
Функция ОтправитьPOSTЗапрос()
ИмяФайлаРезультата = ПолучитьИмяВременногоФайла("xml");
Заголовки = Новый Соответствие;
Заголовки.Вставить("Content-Type", "application/xml; charset=utf-8");
АдресСервера = "https://upgsbi.sberbank.ru:9443";
Ресурс = "sbns-upg";
ПолучитьТелоКакСтроку = Ложь;
Таймаут = 60;
Результат = ОбменСБанкамиСлужебный.ОтправитьPOSTЗапрос(АдресСервера, Ресурс, Заголовки, Неопределено, ПолучитьТелоКакСтроку, Таймаут);
Если Результат.Статус Тогда
Результат.Тело.Записать(ИмяФайлаРезультата);
КонецЕсли;
КонецФункции
112. ПараметрыПодключенияWSПрокси. Возвращает структуру параметров для функции СоздатьWSПрокси.
Результат = ОбщегоНазначения.ПараметрыПодключенияWSПрокси()
//
ПараметрыПодключения = ОбщегоНазначения.ПараметрыПодключенияWSПрокси();
ПараметрыПодключения.АдресWSDL = "https://login.1c.ru/api/public/ticket?wsdl";
ПараметрыПодключения.URIПространстваИмен = "http://api.cas.jasig.org/";
ПараметрыПодключения.ИмяСервиса = "TicketApiImplService";
ПараметрыПодключения.ИмяТочкиПодключения = "TicketApiImplPort";
ПараметрыПодключения.ИмяПользователя = ПараметрыАутентификацииНаСайте.Логин;
ПараметрыПодключения.Пароль = ПараметрыАутентификацииНаСайте.Пароль;
ПараметрыПодключения.Таймаут = 5;
ВебСервис = ОбщегоНазначения.СоздатьWSПрокси(ПараметрыПодключения);
110. СоздатьWSПрокси. Конструктор объекта WSПрокси. Есть отличия от конструктора Новый WSПрокси, см документацию.
Результат = ОбщегоНазначения.СоздатьWSПрокси(ПереданныеПараметры)
//
ПараметрыПодключения = ОбщегоНазначения.ПараметрыПодключенияWSПрокси();
Попытка
Прокси = ОбщегоНазначения.СоздатьWSПрокси(ПараметрыПодключения);
Исключение
ОписаниеОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
КонецПопытки;
5. ПолучитьВерсииИнтерфейсаЧерезВнешнееСоединение. Возвращает номера версий программных интерфейсов удаленной системы, подключенной через внешнее соединение. Позволяет обеспечивать полную обратную совместимость при изменениях в программных интерфейсах с помощью их явного версионирования. Например, если программный интерфейс выше определенной версии, то только в этом случае допустимо вызывать у него новую функцию.
Версии = ОбщегоНазначения.ПолучитьВерсииИнтерфейсаЧерезВнешнееСоединение(ВнешнееСоединение, "СервисПередачиФайлов");
0. УдалитьЗаписиКэшаВерсий. Удаляет записи кэша версий программных интерфейсов, содержащих в идентификаторе указанную подстроку.
ОбщегоНазначения.УдалитьЗаписиКэшаВерсий(ПодстрокаПоискаИдентификаторов)
2854. УстановитьСостояниеПоляТабличногоДокумента. Процедура управляет состоянием поля табличного документа.
ОбщегоНазначенияКлиентСервер.УстановитьСостояниеПоляТабличногоДокумента(ПолеТабличногоДокумента, Состояние)
//
&НаКлиенте
Процедура СформироватьОтчет(Команда)
РезультатВыполнения = СформироватьОтчетНаСервере();
Если Не РезультатВыполнения.ЗаданиеВыполнено Тогда
ДлительныеОперацииКлиент.ИнициализироватьПараметрыОбработчикаОжидания(ПараметрыОбработчикаОжидания);
ПодключитьОбработчикОжидания("Подключаемый_ПроверитьВыполнениеЗадания", 1, Истина);
ОбщегоНазначенияКлиентСервер.УстановитьСостояниеПоляТабличногоДокумента(Элементы.Результат, "ФормированиеОтчета");
КонецЕсли;
КонецПроцедуры
//
&НаКлиенте
Процедура ДнейПланированияПриИзменении(Элемент)
ОбщегоНазначенияКлиентСервер.УстановитьСостояниеПоляТабличногоДокумента(Элементы.Результат, "НеАктуальность");
КонецПроцедуры
5. РасчетныеПоказателиЯчеек. Рассчитывает показатели числовых ячеек в табличном документе.
Результат = ОбщегоНазначенияКлиентСервер.РасчетныеПоказателиЯчеек(ТабличныйДокумент, ПолеТабличногоДокумента)
4780. УстановитьЭлементОтбораДинамическогоСписка. Добавить или заменить существующий элемент отбора динамического списка.
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(ДинамическийСписок, ИмяПоля, ПравоеЗначение, ВидСравнения, Представление, Использование, РежимОтображения, ИдентификаторПользовательскойНастройки)
3079. ДобавитьЭлементКомпоновки. Добавить элемент компоновки в контейнер элементов компоновки.
Результат = ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(ОбластьДобавления, ИмяПоля, ВидСравнения, ПравоеЗначение, Представление, Использование, знач РежимОтображения, знач ИдентификаторПользовательскойНастройки)
1293. УстановитьЭлементОтбора. Добавить или заменить существующий элемент отбора.
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(ОбластьПоискаДобавления, ИмяПоля, ПравоеЗначение, ВидСравнения, Представление, Использование, РежимОтображения, ИдентификаторПользовательскойНастройки)
1229. УстановитьПараметрДинамическогоСписка. Установить или обновить значение параметра ИмяПараметра динамического списка Список.
ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(Список, ИмяПараметра, Значение, Использование)
362. СоздатьГруппуЭлементовОтбора. Добавить группу отбора в коллекцию КоллекцияЭлементов.
Результат = ОбщегоНазначенияКлиентСервер.СоздатьГруппуЭлементовОтбора(КоллекцияЭлементов, Представление, ТипГруппы)
333. УстановитьСвойстваДинамическогоСписка. Установить текст запроса, основную таблицу или динамическое считывание в динамическом списке. Устанавливать эти свойства следует за один вызов этой процедуры, чтобы не снижалась производительность.
ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Список, СтруктураПараметров)
323. СтруктураСвойствДинамическогоСписка. Создать структуру свойств динамического списка для вызова УстановитьСвойстваДинамическогоСписка().
Результат = ОбщегоНазначения.СтруктураСвойствДинамическогоСписка()
154. УдалитьЭлементыГруппыОтбораДинамическогоСписка. Удалить элемент группы отбора динамического списка.
ОбщегоНазначенияКлиентСервер.УдалитьЭлементыГруппыОтбораДинамическогоСписка(ДинамическийСписок, ИмяПоля, Представление)
140. НайтиЭлементыИГруппыОтбора. Найти элемент или группу отбора по заданному имени поля или представлению.
Результат = ОбщегоНазначенияКлиентСервер.НайтиЭлементыИГруппыОтбора(ОбластьПоиска, ИмяПоля, Представление)
122. УдалитьЭлементыГруппыОтбора. Удалить элементы отбора с заданным именем поля или представлением.
ОбщегоНазначенияКлиентСервер.УдалитьЭлементыГруппыОтбора(ОбластьУдаления, ИмяПоля, Представление)
18. ИзменитьЭлементыОтбора. Изменить элемент отбора с заданным именем поля или представлением.
Результат = ОбщегоНазначенияКлиентСервер.ИзменитьЭлементыОтбора(ОбластьПоиска, ИмяПоля, Представление, ПравоеЗначение, ВидСравнения, Использование, РежимОтображения, ИдентификаторПользовательскойНастройки)
8825. УстановитьСвойствоЭлементаФормы. Устанавливает свойство ИмяСвойства элемента формы с именем ИмяЭлемента в значение Значение. Применяется в тех случаях, когда элемента формы может не быть на форме из-за отсутствия прав у пользователя на объект, реквизит объекта или команду.
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(ЭлементыФормы, ИмяЭлемента, ИмяСвойства, Значение)
//
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "Выбрать", "Видимость", Ложь);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ГруппаПоиск", "Отображение", ОтображениеГруппыКнопок.Компактное);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "Найти", "Отображение", ОтображениеКнопки.Картинка);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ОтменитьПоиск", "Отображение", ОтображениеКнопки.Картинка);
КонецЕсли;
КонецПроцедуры
777. ПолучитьРеквизитФормыПоПути. Получает значение реквизита формы.
Результат = ОбщегоНазначенияКлиентСервер.ПолучитьРеквизитФормыПоПути(Форма, ПутьРеквизита)
//
ДанныеДолжности = ОбщегоНазначенияКлиентСервер.ПолучитьРеквизитФормыПоПути(Форма, "ДанныеДолжности");
//
Функция ФормаДокументаГотоваДляРасчетаЗарплаты(Форма, ОписаниеДокумента, СообщатьПользователю = Истина) Экспорт
Отказ = Ложь;
Для Каждого ОписаниеПоля Из ОписаниеДокумента.ОбязательныеПоля Цикл
ЗначениеРеквизита = ОбщегоНазначенияКлиентСервер.ПолучитьРеквизитФормыПоПути(Форма, ОписаниеПоля.ПутьКРеквизиту);
Если Не ЗначениеЗаполнено(ЗначениеРеквизита) Тогда
Отказ = Истина;
Если СообщатьПользователю Тогда
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Поле ""%1"" не заполнено';
|en = 'Field ""%1"" is blank'"), ОписаниеПоля.ИмяПоля);
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения, , ОписаниеПоля.ПутьКРеквизиту);
КонецЕсли;
КонецЕсли;
КонецЦикла;
Возврат Не Отказ;
КонецФункции
452. УстановитьРеквизитФормыПоПути. Устанавливает значение реквизиту формы.
ОбщегоНазначенияКлиентСервер.УстановитьРеквизитФормыПоПути(Форма, ПутьРеквизита, Значение, ТолькоЕслиНеЗаполнен)
//
ОбщегоНазначенияКлиентСервер.УстановитьРеквизитФормыПоПути(Форма, "РазмерСевернаяНадбавка", Размер);
//
Процедура ОбновитьИтогиСтрок(Форма, Позиции) Экспорт
Для каждого ОписаниеПоказателя Из Форма.КолонкиПоказателей Цикл
ОбщегоНазначенияКлиентСервер.УстановитьРеквизитФормыПоПути(
Форма, "Итог" + ОписаниеПоказателя.Ключ + "Мин", Позиции.Итог(ОписаниеПоказателя.Ключ + "Мин"));
ОбщегоНазначенияКлиентСервер.УстановитьРеквизитФормыПоПути(
Форма, "Итог" + ОписаниеПоказателя.Ключ + "Макс", Позиции.Итог(ОписаниеПоказателя.Ключ + "Макс"));
КонецЦикла;
КонецПроцедуры
448. ПоказатьПодтверждениеЗакрытияФормы. Задает вопрос о продолжении действия, которое приведет к потере изменений: "Данные были изменены. Сохранить изменения?" Для использования в обработчиках события ПередЗакрытием модулей форм объектов, которые возможно записать в информационную базу. Отображение вопроса зависит свойства модифицированности формы. Для отображения вопроса произвольной формы используйте: см. процедуру ОбщегоНазначенияКлиент.ПоказатьПодтверждениеЗакрытияПроизвольнойФормы().
&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
Оповещение = Новый ОписаниеОповещения("ВыбратьИЗакрыть", ЭтотОбъект);
ОбщегоНазначенияКлиент.ПоказатьПодтверждениеЗакрытияФормы(Оповещение, Отказ, ЗавершениеРаботы);
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьИЗакрыть(Результат = Неопределено, ДополнительныеПараметры = Неопределено) Экспорт
// записываем данные формы.
// ...
Модифицированность = Ложь; // не выводить подтверждение о закрытии формы еще раз.
Закрыть(<РезультатВыбораВФорме>);
КонецПроцедуры
370. КартинкаКомментария. Получает картинку для вывода на странице с комментарием в зависимости от наличия текста в комментарии.
Результат = ОбщегоНазначенияКлиентСервер.КартинкаКомментария(Комментарий)
//
Элементы.СтраницаКомментарии.Картинка = ОбщегоНазначенияКлиентСервер.КартинкаКомментария(ВсеКомментарии);
181. ОбновитьИнтерфейсПрограммы. Обновляет интерфейс программы сохраняя текущее активное окно.
ОбщегоНазначенияКлиент.ОбновитьИнтерфейсПрограммы()
103. ПоказатьПодтверждениеЗакрытияПроизвольнойФормы. Задает вопрос о продолжении действия, которое приведет к закрытию формы. Для использования в обработчиках события ПередЗакрытием модулей форм. Для отображения вопроса в форме, которая возможно записать в информационную базу, используйте: см. процедуру ОбщегоНазначенияКлиент.ПоказатьПодтверждениеЗакрытияФормы().
ТекстПредупреждения = НСтр("ru = 'Закрыть помощник?'");
ОбщегоНазначенияКлиент.ПоказатьПодтверждениеЗакрытияПроизвольнойФормы(
ЭтотОбъект, Отказ, ТекстПредупреждения, "ЗакрытьФормуБезПодтверждения");
71. ЗначениеСвойстваЭлементаФормы. Возвращает значение свойства ИмяСвойства элемента формы с именем ИмяЭлемента. Применяется в тех случаях, когда элемент формы может не быть на форме из-за отсутствия прав у пользователя на объект, реквизит объекта или команду.
Результат = ОбщегоНазначенияКлиентСервер.ЗначениеСвойстваЭлементаФормы(ЭлементыФормы, ИмяЭлемента, ИмяСвойства)
//
ТекущийЗаголовок = ОбщегоНазначенияКлиентСервер.ЗначениеСвойстваЭлементаФормы(Форма.Элементы, "РегистрацияВНалоговомОргане", "Заголовок");
//
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьПредставлениеСамостоятельнойКлассификационнойЕдиницы(Форма)
Если Не ОбщегоНазначенияКлиентСервер.ЗначениеСвойстваЭлементаФормы(Форма.Элементы,
"ГруппаСамостоятельнаяКлассификационнаяЕдиница", "Видимость") Тогда
Возврат;
КонецЕсли;
КонецПроцедуры
61. НайтиЭлементОтбораПоПредставлению. Выполняет поиск элемента отбора в коллекции по заданному представлению.
Результат = ОбщегоНазначенияКлиентСервер.НайтиЭлементОтбораПоПредставлению(КоллекцияЭлементов, Представление)
//
ГруппаОтбораПоПанелиНавигации = ОбщегоНазначенияКлиентСервер.НайтиЭлементОтбораПоПредставлению(
ВзаимодействияКлиентСервер.ОтборДинамическогоСписка(Список).Элементы,
"ОтборПанелиНавигации");
Если ГруппаОтбораПоПанелиНавигации = Неопределено Тогда
Результат.ТекстСообщенияОшибка = НСтр("ru = 'Не выбран элемент для добавления в закладки.'");
Возврат Результат;
КонецЕсли;
29. ОповеститьОбИзмененииОбъектов. Оповещает открытые формы и динамические списки об изменении сразу нескольких объектов.
ОбщегоНазначенияКлиент.ОповеститьОбИзмененииОбъектов(Источник, ДополнительныеПараметры)
24. ОповеститьОбИзмененииОбъекта. Оповещает открытые формы и динамические списки об изменении одного объекта.
ОбщегоНазначенияКлиент.ОповеститьОбИзмененииОбъекта(Источник, ДополнительныеПараметры)
3. ПоказатьВыборФорматаВложений. Открывает форму выбора формата вложений.
ОбщегоНазначенияКлиент.ПоказатьВыборФорматаВложений(ОписаниеОповещения, НастройкиФормата, Владелец)
155. ХранилищеОбщихНастроекСохранить. Сохраняет настройку в хранилище общих настроек.
ОбщегоНазначения.ХранилищеОбщихНастроекСохранить(КлючОбъекта, КлючНастроек, Настройки, ОписаниеНастроек, ИмяПользователя, ОбновитьПовторноИспользуемыеЗначения)
//
&НаСервере
Процедура СохранитьНастройкиФормы()
ОбщегоНазначения.ХранилищеОбщихНастроекСохранить("Панель1СМаркировка", "Организация", Организация);
ОбщегоНазначения.ХранилищеОбщихНастроекСохранить("Панель1СМаркировка", "Ответственный", Ответственный);
КонецПроцедуры
//
&НаСервере
Процедура СохранитьПользовательскиеНастройки()
НастройкиФормы = Новый Структура;
НастройкиФормы.Вставить("УчитыватьПрикладныеПравила", УчитыватьПрикладныеПравила);
НастройкиФормы.Вставить("ОбластьПоискаДублей", ОбластьПоискаДублей);
НастройкиФормы.Вставить("НастройкиКД", КомпоновщикПредварительногоОтбора.Настройки);
НастройкиФормы.Вставить("ПравилаПоиска", ПравилаПоиска.Выгрузить());
ОбщегоНазначения.ХранилищеОбщихНастроекСохранить(ИмяФормы, "", НастройкиФормы);
КонецПроцедуры
71. ХранилищеНастроекДанныхФормСохранить. Сохраняет настройку в хранилище настроек данных форм
ОбщегоНазначенияВызовСервера.ХранилищеНастроекДанныхФормСохранить(КлючОбъекта, КлючНастроек, Настройки, ОписаниеНастроек, ИмяПользователя, ОбновитьПовторноИспользуемыеЗначения)
69. ХранилищеСистемныхНастроекСохранить. Предусмотрено две одноименных функции:ОбщегоНазначения.ХранилищеСистемныхНастроекСохранить для вызова с сервераОбщегоНазначения.ХранилищеСистемныхНастроекСохранить для вызова с клиента1. Для вызова с клиента и сервера Сохраняет настройку в хранилище системных настроек, как метод платформы Сохранить объекта СтандартноеХранилищеНастроекМенеджер, но с поддержкой длины ключа настроек более 128 символов путем хеширования части, которая превышает 96 символов. Если нет права СохранениеДанныхПользователя, сохранение пропускается без ошибки. См. ОбщегоНазначения.ХранилищеСистемныхНастроекСохранить
ОбщегоНазначенияВызовСервера.ХранилищеСистемныхНастроекСохранить(КлючОбъекта, КлючНастроек, Настройки, ОписаниеНастроек, ИмяПользователя, ОбновитьПовторноИспользуемыеЗначения)
67. ХранилищеОбщихНастроекЗагрузить. Загружает настройку из хранилища общих настроек.
Результат = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(КлючОбъекта, КлючНастроек, ЗначениеПоУмолчанию, ОписаниеНастроек, ИмяПользователя)
//
&НаСервере
Процедура ВосстановитьНастройкиФормы()
Ответственный = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("ПанельОбменСВЕТИС", "Ответственный", Ответственный);
КонецПроцедуры
//
ОбщегоНазначенияВызовСервера.ХранилищеОбщихНастроекЗагрузить
60. ХранилищеОбщихНастроекУдалить. Удаляет настройку из хранилища общих настроек
ОбщегоНазначенияВызовСервера.ХранилищеОбщихНастроекУдалить(КлючОбъекта, КлючНастроек, ИмяПользователя)
31. ХранилищеОбщихНастроекСохранитьМассив. Сохраняет несколько настроек в хранилище общих настроек.
ОбщегоНазначения.ХранилищеОбщихНастроекСохранитьМассив(НесколькоНастроек, ОбновитьПовторноИспользуемыеЗначения)
//
&НаСервере
Процедура СохранитьВНастройкахПараметрыСканера(РазрешениеЧисло, ЦветностьЧисло, ПоворотЧисло, РазмерБумагиЧисло)
МассивСтруктур = Новый Массив;
СистемнаяИнформация = Новый СистемнаяИнформация();
ИдентификаторКлиента = СистемнаяИнформация.ИдентификаторКлиента;
Элемент = Новый Структура;
Элемент.Вставить("Объект", "НастройкиСканирования/Разрешение");
Элемент.Вставить("Настройка", ИдентификаторКлиента);
Элемент.Вставить("Значение", Разрешение);
МассивСтруктур.Добавить(Элемент);
Элемент = Новый Структура;
Элемент.Вставить("Объект", "НастройкиСканирования/Цветность");
Элемент.Вставить("Настройка", ИдентификаторКлиента);
Элемент.Вставить("Значение", Цветность);
МассивСтруктур.Добавить(Элемент);
ОбщегоНазначения.ХранилищеОбщихНастроекСохранитьМассив(МассивСтруктур);
КонецПроцедуры
0. ХранилищеСистемныхНастроекУдалить. Удаляет настройку из хранилища системных настроек
ОбщегоНазначения.ХранилищеСистемныхНастроекУдалить(КлючОбъекта, КлючНастроек, ИмяПользователя)
0. ХранилищеСистемныхНастроекЗагрузить. Загружает настройку из хранилища системных настроек
Результат = ОбщегоНазначения.ХранилищеСистемныхНастроекЗагрузить(КлючОбъекта, КлючНастроек, ЗначениеПоУмолчанию, ОписаниеНастроек, ИмяПользователя)
0. ХранилищеНастроекДанныхФормУдалить. Удаляет настройку из хранилища настроек данных форм
ОбщегоНазначения.ХранилищеНастроекДанныхФормУдалить(КлючОбъекта, КлючНастроек, ИмяПользователя)
0. ХранилищеНастроекДанныхФормЗагрузить. Загружает настройку из хранилища настроек данных форм.
Результат = ОбщегоНазначения.ХранилищеНастроекДанныхФормЗагрузить(КлючОбъекта, КлючНастроек, ЗначениеПоУмолчанию, ОписаниеНастроек, ИмяПользователя)
//
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
УсловноеОформление.Элементы.Очистить();
РаботаСФайламиСлужебный.ЗаполнитьУсловноеОформлениеСпискаФайлов(Список);
РаботаСФайламиСлужебный.ЗаполнитьУсловноеОформлениеСпискаПапок(Папки);
РаботаСФайламиСлужебный.ДобавитьОтборыВСписокФайлов(Список);
Элементы.ПоказыватьСлужебныеФайлы.Видимость = Пользователи.ЭтоПолноправныйПользователь();
Если Параметры.Свойство("Папка") И Параметры.Папка <> Неопределено Тогда
ПапкаПриОткрытии = Параметры.Папка;
Иначе
ПапкаПриОткрытии = ОбщегоНазначения.ХранилищеНастроекДанныхФормЗагрузить("Файлы", "ТекущаяПапка");
Если ПапкаПриОткрытии = Неопределено Тогда // Попытка загрузки настроек, сохраненных в предыдущих версиях.
ПапкаПриОткрытии = ОбщегоНазначения.ХранилищеНастроекДанныхФормЗагрузить("ХранилищеФайлов", "ТекущаяПапка");
КонецЕсли;
КонецЕсли;
КонецПроцедуры
394. ПрочитатьДанныеИзБезопасногоХранилища. Возвращает данные из безопасного хранилища.
Логин = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(ПараметрыУчетнойЗаписи.ИдентификаторЭДО, "ЛогинFTP");
Пароль = ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(ПараметрыУчетнойЗаписи.ИдентификаторЭДО, "ПарольFTP");
361. ЗаписатьДанныеВБезопасноеХранилище. Записывает конфиденциальные данные в безопасное хранилище.
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
Если ТекущийПользовательМожетИзменятьПароль Тогда
УстановитьПривилегированныйРежим(Истина);
ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище(ТекущийОбъект.Ссылка, Логин, "Логин");
ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище(ТекущийОбъект.Ссылка, Пароль);
УстановитьПривилегированныйРежим(Ложь);
КонецЕсли;
КонецПроцедуры
//
Если ПарольИзменен Тогда
УстановитьПривилегированныйРежим(Истина);
ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище(ТекущийОбъект.Ссылка, Пароль);
ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище(ТекущийОбъект.Ссылка, Пароль, "ПарольSMTP");
УстановитьПривилегированныйРежим(Ложь);
КонецЕсли;
132. УдалитьДанныеИзБезопасногоХранилища. Удаляет конфиденциальные данные в безопасное хранилище.
Процедура ПередУдалением(Отказ)
// Проверка значения свойства ОбменДанными.Загрузка отсутствует, так как удалять данные
// из безопасного хранилища нужно даже при удалении объекта при обмене данными.
УстановитьПривилегированныйРежим(Истина);
ОбщегоНазначения.УдалитьДанныеИзБезопасногоХранилища(Ссылка);
УстановитьПривилегированныйРежим(Ложь);
КонецПроцедуры
//
&НаСервере
Процедура УдалитьПарольНаСервере()
УстановитьПривилегированныйРежим(Истина);
ОбщегоНазначения.УдалитьДанныеИзБезопасногоХранилища(Сертификат,"ПаролиСертификатов");
УстановитьПривилегированныйРежим(Ложь);
Элементы.ФормаУдалитьПароль.Доступность = Ложь;
Пользователь = Пользователи.ТекущийПользователь();
Пароль = "";
ПарольИзменен = Ложь;
КонецПроцедуры
508. ПолучитьПолноеИмяФайла. Составляет полное имя файла из имени каталога и имени файла.
КаталогФайлов = ПолучитьИмяВременногоФайла();
СоздатьКаталог(КаталогФайлов);
// Архивирование файла.
ИмяНеразделенногоФайла = ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла(КаталогФайлов, "data.zip");
Архиватор = Новый ЗаписьZipФайла(ИмяНеразделенногоФайла,,,, УровеньСжатияZIP.Максимальный);
Архиватор.Добавить(ИмяФайла);
Архиватор.Записать();
298. ЗаменитьНедопустимыеСимволыВИмениФайла. Заменяет недопустимые символы в имени файла.
Результат = ОбщегоНазначенияКлиентСервер.ЗаменитьНедопустимыеСимволыВИмениФайла(ИмяФайла, НаЧтоМенять)
//
ИмяФайла = ОбщегоНазначенияКлиентСервер.ЗаменитьНедопустимыеСимволыВИмениФайла(ИмяФайлаБезРасширения) + ".cer";
АдресСертификата = ПоместитьВоВременноеХранилище(ДвоичныеДанныеСертификата, УникальныйИдентификатор);
ФайловаяСистемаКлиент.СохранитьФайл(Неопределено, АдресСертификата, ИмяФайла, ПараметрыСохранения);
175. РасширениеБезТочки. Преобразует расширение файла в нижний регистр без точки.
Результат = ОбщегоНазначенияКлиентСервер.РасширениеБезТочки(Расширение)
//
РасширениеФайла = ОбщегоНазначенияКлиентСервер.РасширениеБезТочки(Файл.Расширение);
ИмяФайлаБезРасширения = Файл.ИмяБезРасширения;
160. ПолучитьИмяСРасширением. Возвращает имя файла с расширением. Если расширение пустое, тогда точка не добавляется.
Результат = ОбщегоНазначенияКлиентСервер.ПолучитьИмяСРасширением(ИмяБезРасширения, Расширение)
//
Процедура ОткрытьФайлБезРасширенияПередачаФайла(Результат, Контекст) Экспорт
Расширение = Контекст.ДанныеФайла.Расширение;
ИмяФайла = ОбщегоНазначенияКлиентСервер.ПолучитьИмяСРасширением(
Контекст.ДанныеФайла.ПолноеНаименованиеВерсии, Расширение);
ПолучитьФайл(Контекст.АдресФайла, ИмяФайла, Истина);
ВыполнитьОбработкуОповещения(Контекст.Оповещение, Истина);
КонецПроцедуры
119. ПолучитьРасширениеИмениФайла. Выделяет из имени файла его расширение (набор символов после последней точки).
Результат = ОбщегоНазначенияКлиентСервер.ПолучитьРасширениеИмениФайла(ИмяФайла)
//
Функция ТипСодержимогоПоИмениФайла(ИмяФайла) Экспорт
РасширениеИмениФайла = ОбщегоНазначенияКлиентСервер.ПолучитьРасширениеИмениФайла(ИмяФайла);
Если НРег(РасширениеИмениФайла) = "xml" Тогда
Возврат Перечисления.ТипыСодержимогоФайловОбменаСБанками.xml;
ИначеЕсли НРег(РасширениеИмениФайла) = "html" Тогда
Возврат Перечисления.ТипыСодержимогоФайловОбменаСБанками.html;
Иначе
Возврат Перечисления.ТипыСодержимогоФайловОбменаСБанками.Неизвестный;
КонецЕсли;
КонецФункции
50. РазложитьСтрокуПоТочкамИСлэшам. Функция раскладывает строку в массив строк, используя "./\" как разделитель.
Результат = ОбщегоНазначенияКлиентСервер.РазложитьСтрокуПоТочкамИСлэшам(Строка)
23. НайтиНедопустимыеСимволыВИмениФайла. Проверяет наличие недопустимых символов в имени файла.
Результат = ОбщегоНазначенияКлиентСервер.НайтиНедопустимыеСимволыВИмениФайла(ИмяФайла)
//
НедопустимыеСимволы = ОбщегоНазначенияКлиентСервер.НайтиНедопустимыеСимволыВИмениФайла(ЗначениеРеквизита);
Если НедопустимыеСимволы.Количество() Тогда
ШаблонТекста = НСтр("ru = 'Наименование папки содержит запрещенные символы (%1)'");
ТекстСообщения = СтрШаблон(ШаблонТекста, СтрСоединить(НедопустимыеСимволы, " "));
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения,,Элемент.ПутьКДанным);
КонецЕсли;
10. ПолучитьНедопустимыеСимволыВИмениФайла. Возвращает строку недопустимых символов.
Процедура КорректноеИмяФайла(ИмяФайла, УдалятьНекорректныеСимволы = Ложь) Экспорт
// Перечень запрещенных символов взят отсюда: http://support.microsoft.com/kb/100108/ru
// при этом были объединены запрещенные символы для файловых систем FAT и NTFS.
СтрИсключения = ОбщегоНазначенияКлиентСервер.ПолучитьНедопустимыеСимволыВИмениФайла();
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'В имени файла не должно быть следующих символов: %1';
|en = 'A file name cannot contain the following characters: %1'"), СтрИсключения);
Результат = Истина;
Если Не Результат Тогда
ВызватьИсключение ТекстОшибки;
КонецЕсли;
КонецПроцедуры
119. СоздатьВременныйКаталог. Создает временный каталог. После окончания работы с временным каталогом его необходимо удалить с помощью ФайловаяСистема.УдалитьВременныйКаталог.
Доступ к файловой системе из кода конфигурации
Результат = ФайловаяСистема.СоздатьВременныйКаталог(Расширение)
152. УдалитьВременныйКаталог. Удаляет временный каталог вместе с его содержимым, если возможно.
ФайловаяСистема.УдалитьВременныйКаталог(Путь)
334. УдалитьВременныйФайл. Удаляет временный файл.
ФайловаяСистема.УдалитьВременныйФайл(Путь)
0. УникальноеИмяФайла. Формирует уникальное имя файла в указанной папке, при необходимости добавляя к имени файла порядковый номер, например: "файл (2).txt", "файл (3).txt" и т.п.
Результат = ФайловаяСистема.УникальноеИмяФайла(ИмяФайла)
135. СохранитьФайл. Получает файл и сохраняет его в локальную файловую систему пользователя.
&НаКлиенте
Процедура Сформировать(Команда)
Попытка
Excel = Новый COMОбъект("Excel.Application");
Excel.AutomationSecurity = 3;
Excel.DisplayAlerts = 0;
Исключение
СообщениеОбОшибке = НСтр("ru = 'Не удалось подключиться к Excel.
|Убедитесь, что на компьютере установлена программа Microsoft Excel.
|Подробности:'") + " " + КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
ВызватьИсключение СообщениеОбОшибке;
КонецПопытки;
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("Excel", Excel);
ПараметрыСохранения = ФайловаяСистемаКлиент.ПараметрыСохраненияФайла();
ПараметрыСохранения.Диалог.Фильтр = НСтр("ru = 'Файлы MS Excel (*.xlsx)|*.xlsx'");
ФайловаяСистемаКлиент.СохранитьФайл(
Новый ОписаниеОповещения("ПослеВыбораФайлаДляВыгрузки", ЭтотОбъект, ДополнительныеПараметры),
АдресМакета,,
ПараметрыСохранения);
КонецПроцедуры
//
// Сохраняет подпись на диск
Процедура СохранитьПодпись(АдресПодписи) Экспорт
Оповещение = Новый ОписаниеОповещения("СохранитьПодписьПослеПолученияФайла", ЭтотОбъект, Неопределено);
Фильтр = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Файлы электронных подписей (*.%1)|*.%1|Все файлы (*.*)|*.*'"),
ЭлектроннаяПодписьКлиент.ПерсональныеНастройки().РасширениеДляФайловПодписи);
ПараметрыСохранения = ФайловаяСистемаКлиент.ПараметрыСохраненияФайла();
ПараметрыСохранения.Диалог.Фильтр = Фильтр;
ПараметрыСохранения.Диалог.Заголовок = НСтр("ru = 'Выберите файл для сохранения подписи'");
ФайловаяСистемаКлиент.СохранитьФайл(Оповещение, АдресПодписи, "", ПараметрыСохранения);
КонецПроцедуры
// Продолжение процедуры СохранитьПодпись.
Процедура СохранитьПодписьПослеПолученияФайла(ПолученныеФайлы, Контекст) Экспорт
Если ПолученныеФайлы = Неопределено
Или ПолученныеФайлы.Количество() = 0 Тогда
Возврат;
КонецЕсли;
ПоказатьОповещениеПользователя(НСтр("ru = 'Электронная подпись сохранена в файл:'"),,ПолученныеФайлы[0].Имя);
КонецПроцедуры
68. СохранитьФайлы. Получает файлы и сохраняет их в локальную файловую систему пользователя. Для сохранения файлов в неинтерактивном режиме свойство Имя параметра СохраняемыеФайлы должно содержать полный путь к сохраняемому файлу или, если свойство Имя содержит только имя файла с расширением, необходимо заполнить свойство Каталог элемента Диалог параметра ПараметрыСохранения. В иных случаях будет вызвано исключение.
&НаКлиенте
Процедура ГиперссылкаСохранитьНажатие(Элемент)
ДанныеПротокола = РезультатПолученияПротокола.ДанныеПротокола;
Шаблон = НСтр("ru='ОписаниеОшибки_%1_%2'");
ИмяФайла = СтрШаблон(Шаблон, Банк, Организация);
ИмяФайла = ОбщегоНазначенияКлиентСервер.ЗаменитьНедопустимыеСимволыВИмениФайла(ИмяФайла, "");
Файлы = Новый Массив;
Описание = Новый ОписаниеПередаваемогоФайла;
Описание.Имя = ИмяФайла + ".xml";
Описание.Хранение = ПоместитьВоВременноеХранилище(ДанныеПротокола);
Файлы.Добавить(Описание);
Если РезультатПолученияПротокола.ДанныеПодписи <> Неопределено Тогда
Описание = Новый ОписаниеПередаваемогоФайла;
Описание.Имя = ИмяФайла + ".sig";
Описание.Хранение = ПоместитьВоВременноеХранилище(РезультатПолученияПротокола.ДанныеПодписи);
Файлы.Добавить(Описание);
КонецЕсли;
ФайловаяСистемаКлиент.СохранитьФайлы(,Файлы);
КонецПроцедуры
159. ЗагрузитьФайл. Показывает диалог выбора файла и помещает выбранный файл во временное хранилище.
&НаКлиенте
Процедура ДобавитьФайлВоВложения()
ОписаниеОповещения = Новый ОписаниеОповещения("ДобавитьФайлВоВложенияПриПомещенииФайлов", ЭтотОбъект);
ПараметрыЗагрузки = ФайловаяСистемаКлиент.ПараметрыЗагрузкиФайла();
ПараметрыЗагрузки.ИдентификаторФормы = УникальныйИдентификатор;
ФайловаяСистемаКлиент.ЗагрузитьФайлы(ОписаниеОповещения, ПараметрыЗагрузки);
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьФайлВоВложенияПриПомещенииФайлов(ПомещенныеФайлы, ДополнительныеПараметры) Экспорт
Если ПомещенныеФайлы = Неопределено Или ПомещенныеФайлы.Количество() = 0 Тогда
Возврат;
КонецЕсли;
ДобавитьФайлыВСписок(ПомещенныеФайлы);
ОбновитьПредставлениеВложений();
ТребуетсяПодтверждениеЗакрытияФормы = Истина;
КонецПроцедуры
61. ЗагрузитьФайлы. Показывает диалог выбора файлов и помещает выбранные файлы во временное хранилище.
&НаКлиенте
Процедура ФайлыПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
Отказ = Истина;
ПараметрыЗагрузки = ФайловаяСистемаКлиент.ПараметрыЗагрузкиФайла();
ПараметрыЗагрузки.ИдентификаторФормы = УникальныйИдентификатор;
ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
ДиалогВыбораФайла.Фильтр = ФильтрДляВыбораФайлов();
ДиалогВыбораФайла.Заголовок =
НСтр("ru = 'Выберите файлы'");
ПараметрыЗагрузки.Диалог = ДиалогВыбораФайла;
ОповещениеЗавершенияВыбораФайла = Новый ОписаниеОповещения("ОбработкаВыбораФайла", ЭтотОбъект);
ФайловаяСистемаКлиент.ЗагрузитьФайлы(ОповещениеЗавершенияВыбораФайла, ПараметрыЗагрузки);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбораФайла(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
Для Каждого Файл Из Результат Цикл
ОписаниеФайла = ОбщегоНазначенияКлиентСервер.РазложитьПолноеИмяФайла(Файл.Имя);
Поиск = Новый Структура("Имя", ОписаниеФайла.Имя);
СуществующиеСтроки = Файлы.НайтиСтроки(Поиск);
Если ЗначениеЗаполнено(СуществующиеСтроки) Тогда
Продолжить;
КонецЕсли;
Строка = Файлы.Добавить();
Строка.Имя = ОписаниеФайла.Имя;
Строка.Хранение = Файл.Хранение;
Строка.Расширение = ОбщегоНазначенияКлиентСервер.РасширениеБезТочки(ОписаниеФайла.Расширение);
Строка.Номер = Файлы.Количество();
КонецЦикла;
КонецПроцедуры
218. ПараметрыЗагрузкиФайла. Инициализирует структуру параметров для загрузки файла из файловой системы.
&НаКлиенте
Процедура ЗагрузитьНастройки(Команда)
Оповещение = Новый ОписаниеОповещения("ЗагрузитьНастройкиЗавершение", ЭтотОбъект);
ПараметрыЗагрузки = ФайловаяСистемаКлиент.ПараметрыЗагрузкиФайла();
ПараметрыЗагрузки.ИдентификаторФормы = УникальныйИдентификатор;
ПараметрыЗагрузки.Диалог.Фильтр = НСтр("ru = 'Файл настроек'") + "(*.xml)|*.xml";
ПараметрыЗагрузки.Диалог.МножественныйВыбор = Ложь;
ФайловаяСистемаКлиент.ЗагрузитьФайл(Оповещение, ПараметрыЗагрузки);
КонецПроцедуры
131. ПараметрыСохраненияФайла. Инициализирует структуру параметров для сохранения файла в файловую систему.
&НаКлиенте
Процедура СохранитьНастройки(Команда)
ПараметрыСохранения = ФайловаяСистемаКлиент.ПараметрыСохраненияФайла();
ПараметрыСохранения.Диалог.Фильтр = НСтр("ru = 'Файл настроек'") + "(*.xml)|*.xml";
ПараметрыСохранения.Диалог.МножественныйВыбор = Ложь;
ФайловаяСистемаКлиент.СохранитьФайл(Неопределено, НастройкиОбработки(), , ПараметрыСохранения);
КонецПроцедуры
42. ПараметрыСохраненияФайлов. Инициализирует структуру параметров для сохранения файла в файловую систему.
ПараметрыСохранения = ФайловаяСистемаКлиент.ПараметрыСохраненияФайлов();
ПараметрыСохранения.Диалог.Заголовок = НСтр("ru = 'Каталог для сохранения реестров прямых выплат'");
ПараметрыСохранения.ТекстПредложения = НСтр("ru = 'Для выгрузки реестров рекомендуется установить расширение для веб-клиента 1С:Предприятие.'");
ФайловаяСистемаКлиент.СохранитьФайлы(Обработчик, СохраняемыеФайлы, ПараметрыСохранения);
10. ПараметрыОткрытияФайла. Инициализирует структуру параметров для открытия файла.
Процедура ОткрытьФайлВПрограммеПросмотра(ПутьКФайлу, Знач Оповещение = Неопределено) Экспорт
Если Оповещение = Неопределено Тогда
ФайловаяСистемаКлиент.ОткрытьФайл(ПутьКФайлу);
Иначе
ПараметрыОткрытия = ФайловаяСистемаКлиент.ПараметрыОткрытияФайла();
ПараметрыОткрытия.ДляРедактирования = Истина;
ФайловаяСистемаКлиент.ОткрытьФайл(ПутьКФайлу, Оповещение,, ПараметрыОткрытия);
КонецЕсли;
КонецПроцедуры
168. ПустойБуферОбмена. Проверяет наличие сохраненных данных во внутренний буфере обмена.
Результат = ОбщегоНазначения.ПустойБуферОбмена(Источник)
29. СкопироватьСтрокиВБуферОбмена. Помещает выделенные строки табличной части во внутренний буфер обмена откуда их можно получить с помощью СтрокиИзБуфераОбмена.
ОбщегоНазначения.СкопироватьСтрокиВБуферОбмена(ТабличнаяЧасть, ВыделенныеСтроки, Источник)
&НаСервере
Процедура СкопироватьСтрокиНаСервере(ИмяТаблицы)
ОбщегоНазначения.СкопироватьСтрокиВБуферОбмена(Объект[ИмяТаблицы],
Элементы[ИмяТаблицы].ВыделенныеСтроки, Объект.Ссылка.Метаданные().Имя);
КонецПроцедуры
16. СтрокиИзБуфераОбмена. Получает строки табличной части, помещенные во внутренний буфер обмена с помощью СкопироватьСтрокиВБуферОбмена.
Результат = ОбщегоНазначения.СтрокиИзБуфераОбмена()
//
ДанныеИзБуфераОбмена = ОбщегоНазначения.СтрокиИзБуфераОбмена();
Если ДанныеИзБуфераОбмена.Источник <> "Товары" Тогда
Возврат 0;
КонецЕсли;
//
БуферОбмена = ОбщегоНазначения.СтрокиИзБуфераОбмена();
Если ТипЗнч(БуферОбмена.Данные) = Тип("Соответствие") Тогда
СообщенияПользователю = БуферОбмена.Данные;
КонецЕсли;
13. СкопироватьВБуферОбмена. Помещает произвольные данные во внутренний буфер обмена, откуда их можно получить с помощью СтрокиИзБуфераОбмена.
ОбщегоНазначения.СкопироватьВБуферОбмена(Данные, Источник)
Процедура ПоместитьТаблицуЗначенийВБуферОбмена(Таблица) Экспорт
ТаблицаДляБуфера = Таблица.Скопировать();
ОбщегоНазначения.СкопироватьВБуферОбмена(ТаблицаДляБуфера, "КопированиеВставкаСтрок");
КонецПроцедуры
41. ПолучитьИдентификаторСтрокиДереваПоЗначениюПоля. Получает идентификатор (метод ПолучитьИдентификатор()) строки дерева значений для заданного значения поля строки дерева.
ОбщегоНазначенияКлиентСервер.ПолучитьИдентификаторСтрокиДереваПоЗначениюПоля(ИмяПоля, ИдентификаторСтроки, КоллекцияЭлементовДерева, КлючСтроки, ПрекратитьПоиск)
38. РаспределитьСуммуПропорциональноКоэффициентам. Выполняет пропорциональное распределение суммы в соответствии с заданными коэффициентами распределения
Коэффициенты = Новый Массив;
Коэффициенты.Добавить(1);
Коэффициенты.Добавить(2);
Результат = ОбщегоНазначенияКлиентСервер.РаспределитьСуммуПропорциональноКоэффициентам(1, Коэффициенты); // Результат = [0.33, 0.67]
25. ОтмеченныеЭлементы. Получает массив значений из отмеченных элементов списка значений.
&НаКлиенте
Процедура ВыбратьОтмеченные(Команда)
ОтмеченныеЭлементы = ОбщегоНазначенияКлиентСервер.ОтмеченныеЭлементы(Список);
ОповеститьОВыборе(ОтмеченныеЭлементы);
КонецПроцедуры
21. ЗаполнитьКоллекциюЭлементовДереваДанныхФормы. Процедура предназначена для заполнения реквизита формы типа ДанныеФормыДерево.
ОбщегоНазначения.ЗаполнитьКоллекциюЭлементовДереваДанныхФормы(КоллекцияЭлементовДерева, ДеревоЗначений)
6. ОчиститьПараметрыСеанса. Переводит параметры сеанса в состояние "Не установлено".
ОбщегоНазначения.ОчиститьПараметрыСеанса(ПараметрыДляОчистки, Исключения)
1. СохранитьПерсональныеНастройки. Сохраняет персональные настройки пользователя, относящиеся к подсистеме БазоваяФункциональность.
ОбщегоНазначения.СохранитьПерсональныеНастройки(Настройки)
0. СнятьУсловноеОформлениеСпискаЗначений. Снимает один элемент условного оформления, если это список значений.
ОбщегоНазначенияКлиентСервер.СнятьУсловноеОформлениеСпискаЗначений(УсловноеОформление, ИдентификаторПользовательскойНастройки, Значение)
573. РазделительПакетаЗапросов. Возвращает фрагмент текста запроса, отделяющего один запрос от другого.
Результат = ОбщегоНазначения.РазделительПакетаЗапросов()
//
Для ИндСрока = 1 По Интервалы.Количество() Цикл
КодСрока = Формат(ИндСрока, "ЧГ=0");
ТекстЗапроса = ТекстЗапроса + ОбщегоНазначения.РазделительПакетаЗапросов()
+ СтрЗаменить(ШаблонЗапроса, "КодСрока", КодСрока);
КонецЦикла;
5. СформироватьСтрокуДляПоискаВЗапросе. Подготавливает строку для использования в качестве шаблона поиска в запросе. Экранирует служебные символы, если они есть в строке.
Результат = ОбщегоНазначения.СформироватьСтрокуДляПоискаВЗапросе(СтрокаПоиска)
40. ПараметрыПодключенияКомпоненты. Возвращает структуру параметров для см. процедуру ПодключитьКомпонентуИзМакета.
Контекст = Новый Структура;
Контекст.Вставить("ОповещениеПриЗавершении", ОповещениеПриЗавершении);
Контекст.Вставить("НастройкаОбмена" , НастройкаОбмена);
Контекст.Вставить("ОтображатьСообщения" , ОтображатьСообщения);
Контекст.Вставить("ДанныеЗапроса" , ДанныеЗапроса);
Контекст.Вставить("ПредложитьУстановить" , ПредложитьУстановить);
ПараметрыПодключения = ОбщегоНазначенияКлиент.ПараметрыПодключенияКомпоненты();
ПараметрыПодключения.ПредложитьУстановить = ПредложитьУстановить;
ПараметрыПодключения.ИдентификаторыСозданияОбъектов.Добавить("HTTPRequester");
ПараметрыПодключения.ТекстПояснения = НСтр("ru = 'Для обмена с УТМ в веб-клиенте требуется
|внешняя компонента HTTP-запросов.'");
ОбщегоНазначенияКлиент.ПодключитьКомпонентуИзМакета(
Новый ОписаниеОповещения("ФормированиеHTTPЗапроса_ПослеПодключенияКомпоненты", ЭтотОбъект, Контекст),
"HTTPЗапросыNative",
"ОбщийМакет.КомпонентаHTTPЗапросов",
ПараметрыПодключения);
35. ПодключитьКомпонентуИзМакета. Подключает компоненту, выполненную по технологии Native API и COM, в асинхронном режиме.
Процедура ПодключитьВнешнююКомпоненту1СДляСбербанка(ОписаниеОповещения) Экспорт
ДополнительныеПараметры = Новый Структура("ОповещениеПослеПодключенияВК1СДляСбербанка", ОписаниеОповещения);
Оповещение = Новый ОписаниеОповещения("ПослеПодключенияВК1СДляСбербанка", ЭтотОбъект, ДополнительныеПараметры);
ПараметрыПодключения = ОбщегоНазначенияКлиент.ПараметрыПодключенияКомпоненты();
ПараметрыПодключения.ТекстПояснения = НСтр("ru = 'Для продолжения обмена с банком ""ПАО Сбербанк""
|необходимо установить внешний модуль 1CSBRFServiceProxy (Версия 11.2).'");
АдресВнешнейКомпоненты = "Обработка.ОбменСБанками.Макет.SBRFServiceProxy";
ОбщегоНазначенияКлиент.ПодключитьКомпонентуИзМакета(
Оповещение, "SBRFServiceProxy", АдресВнешнейКомпоненты, ПараметрыПодключения);
КонецПроцедуры
7. ПараметрыУстановкиКомпоненты. Возвращает структуру параметров для см. процедуру УстановитьКомпонентуИзМакета.
ПараметрыУстановки = ОбщегоНазначенияКлиент.ПараметрыУстановкиКомпоненты();
ПараметрыУстановки.ТекстПояснения = НСтр("ru = 'Для использования сканера штрихкодов требуется внешняя компонента «1С:Сканеры штрихкода (NativeApi)».'");
2. УстановитьКомпонентуИзМакета. Устанавливает компоненту, выполненную по технологии Native API и COM асинхронном режиме. Компонента должна храниться в макете конфигурации в виде ZIP-архива.
&НаКлиенте
Процедура УстановитьКомпоненту(Команда)
Оповещение = Новый ОписаниеОповещения("УстановитьКомпонентуЗавершение", ЭтотОбъект);
ПараметрыУстановки = ОбщегоНазначенияКлиент.ПараметрыУстановкиКомпоненты();
ОбщегоНазначенияКлиент.УстановитьКомпонентуИзМакета(Оповещение,
"ОбщийМакет.КомпонентаОбменДаннымиСМобильнымиПриложениями",
ПараметрыУстановки);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьКомпонентуЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Не Результат.Установлено И Не ПустаяСтрока(Результат.ОписаниеОшибки) Тогда
ПоказатьПредупреждение(, Результат.ОписаниеОшибки);
КонецЕсли;
КонецПроцедуры
20. СтруктураПараметровДляУстановкиВнешнегоСоединения. Возвращает шаблон структуры параметров для установки внешнего соединения.
ПараметрыПодключения = ОбщегоНазначенияКлиентСервер.СтруктураПараметровДляУстановкиВнешнегоСоединения();
ПараметрыПодключения.КаталогИнформационнойБазы = СтрРазделить(СтрокаСоединенияИнформационнойБазы(), """")[1];
ПараметрыПодключения.ИмяПользователя = ИмяАдминистратораИнформационнойБазы;
ПараметрыПодключения.ПарольПользователя = ПарольАдминистратораИнформационнойБазы;
Результат = ОбщегоНазначения.УстановитьВнешнееСоединениеСБазой(ПараметрыПодключения);
17. ИмяCOMСоединителя. Возвращает имя COM-класса для работы с 1С:Предприятием 8 через COM-соединение.
Попытка
COMConnector = Новый COMObject(ОбщегоНазначенияКлиентСервер.ИмяCOMСоединителя()); // "V83.COMConnector"
Исключение
Информация = ИнформацияОбОшибке();
СтрокаСообщенияОбОшибке = НСтр("ru = 'Не удалось подключится к другой программе: %1'");
Результат.ОшибкаПодключенияКомпоненты = Истина;
Результат.ПодробноеОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаСообщенияОбОшибке, ПодробноеПредставлениеОшибки(Информация));
Результат.КраткоеОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаСообщенияОбОшибке, КраткоеПредставлениеОшибки(Информация));
Возврат Результат;
КонецПопытки;
16. ПолучитьПараметрыПодключенияИзСтрокиСоединенияИнформационнойБазы. Извлекает из строки соединения с информационной базой параметры подключения и передает параметры в структуру для установки внешнего соединения.
ПараметрыПодключенияИБ = ОбщегоНазначенияКлиентСервер.ПолучитьПараметрыПодключенияИзСтрокиСоединенияИнформационнойБазы(
СтрокаСоединенияИнформационнойБазы());
ВариантРаботыИнформационнойБазы = ПараметрыПодключенияИБ.ВариантРаботыИнформационнойБазы;
ИмяИнформационнойБазыНаСервере1СПредприятия = ПараметрыПодключенияИБ.ИмяИнформационнойБазыНаСервере1СПредприятия;
ИмяСервера1СПредприятия = ПараметрыПодключенияИБ.ИмяСервера1СПредприятия;
КаталогИнформационнойБазы = ПараметрыПодключенияИБ.КаталогИнформационнойБазы;
10. УстановитьВнешнееСоединениеСБазой. Устанавливает внешнее соединение с информационной базой по переданным параметрам подключения и возвращает его.
Результат = ОбщегоНазначенияКлиент.УстановитьВнешнееСоединениеСБазой(Параметры)
//
ПараметрыПодключения = ОбщегоНазначенияКлиентСервер.СтруктураПараметровДляУстановкиВнешнегоСоединения();
ПараметрыПодключения.КаталогИнформационнойБазы = СтрРазделить(СтрокаСоединенияИнформационнойБазы(), """")[1];
ПараметрыПодключения.ИмяПользователя = ПараметрыРаботыКлиентаПриЗапуске.ИмяТекущегоПользователя;
ПараметрыПодключения.ПарольПользователя = ПарольАдминистратора;
Результат = ОбщегоНазначенияКлиент.УстановитьВнешнееСоединениеСБазой(ПараметрыПодключения);
Если Результат.ОшибкаПодключенияКомпоненты Тогда
ЖурналРегистрацииКлиент.ДобавитьСообщениеДляЖурналаРегистрации(
СобытиеЖурналаРегистрации(),"Ошибка", Результат.ПодробноеОписаниеОшибки, , Истина);
КонецЕсли;
5. ИдентификаторCOMСоединителя. Возвращает CLSID COM-класса для работы с "1С:Предприятием 8" через COM-соединение.
Результат = ОбщегоНазначения.ИдентификаторCOMСоединителя(ИмяCOMСоединителя)
297. ПоказатьФормуРедактированияКомментария. Открывает форму редактирования многострочного комментария.
Реквизит «Комментарий» у документов
&НаКлиенте
Процедура КомментарийНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ОбщегоНазначенияКлиент.ПоказатьФормуРедактированияКомментария(Элемент.ТекстРедактирования, ЭтотОбъект, "Объект.Описание");
КонецПроцедуры
158. ПоказатьФормуРедактированияМногострочногоТекста. Открывает форму редактирования произвольного многострочного текста.
&НаКлиенте
Процедура МероприятияСведенияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОбщегоНазначенияКлиент.ПоказатьФормуРедактированияМногострочногоТекста(
Элемент.ТекстРедактирования,
ЭтотОбъект,
"Объект.Комментарий");
КонецПроцедуры
212. АдресЭлектроннойПочтыСоответствуетТребованиям. Проверяет email-адрес на соответствие требованиям стандартов
Результат = ОбщегоНазначенияКлиентСервер.АдресЭлектроннойПочтыСоответствуетТребованиям(Адрес, РазрешитьЛокальныеАдреса)
Если Не ОбщегоНазначенияКлиентСервер.АдресЭлектроннойПочтыСоответствуетТребованиям(Адрес, Истина) Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Необходимо ввести корректный адрес электронной почты.'"));
Отказ = Истина;
Возврат;
КонецЕсли;
75. РазобратьСтрокуСПочтовымиАдресами. Функция проверяет, что введенная строка с email-адресами введена правильно.
Результат = ОбщегоНазначенияКлиентСервер.РазобратьСтрокуСПочтовымиАдресами(СтрокаПереданныхАдресов, ВызыватьИсключение)
Если ТипЗнчКому = Тип("Строка") Тогда
ПараметрыПисьма.Кому = ОбщегоНазначенияКлиентСервер.РазобратьСтрокуСПочтовымиАдресами(ПараметрыПисьма.Кому);
ИначеЕсли ТипЗнчКому <> Тип("Массив") Тогда
ПараметрыПисьма.Вставить("Кому", Новый Массив);
КонецЕсли;
//
Функция СоставПочтовогоАдреса(Знач АдресЭП) Экспорт
Если ЗначениеЗаполнено(АдресЭП) Тогда
Попытка
СтруктураАдресаЭП = ОбщегоНазначенияКлиентСервер.РазобратьСтрокуСПочтовымиАдресами(АдресЭП);
Исключение
ШаблонСообщения = НСтр("ru = 'Указан некорректный адрес электронной почты: %1
|Ошибка: %2'");
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщения, АдресЭП, ИнформацияОбОшибке().Описание);
ВызватьИсключение(ТекстСообщения);
КонецПопытки;
Возврат СтруктураАдресаЭП;
Иначе
Возврат Неопределено;
КонецЕсли;
КонецФункци
51. АдресаЭлектроннойПочтыИзСтроки. Разбирает строку с адресами электронной почты. При разборе проверяет корректность адресов.
Результат = ОбщегоНазначенияКлиентСервер.АдресаЭлектроннойПочтыИзСтроки(СписокАдресов)
//
&НаСервере
Процедура ЗаполнитьТаблицуПолучателейИзСтроки(Знач ПараметрыПолучателейСообщения)
ПараметрыПолучателейСообщения = ОбщегоНазначенияКлиентСервер.АдресаЭлектроннойПочтыИзСтроки(ПараметрыПолучателейСообщения);
Для Каждого ПараметрыПолучателя Из ПараметрыПолучателейСообщения Цикл
Получатель = ПолучателиСообщения.Добавить();
Получатель.Адрес = ПараметрыПолучателя.Адрес;
Получатель.Представление = ПараметрыПолучателя.Псевдоним;
Получатель.ПредставлениеАдреса = Получатель.Адрес;
КонецЦикла;
КонецПроцедуры
215. ВыполнитьМетодОбъекта. Выполнить экспортную процедуру объекта встроенного языка по имени.
Ограничение на выполнение «внешнего» кода
ОбщегоНазначения.ВыполнитьМетодОбъекта(Объект, ИмяМетода, Параметры)
Процедура ВызватьПроцедуру(ИмяПроцедуры, ПараметрыВызова)
ЭтоВнешняяОбработка = ВРег(ЧастиИмени[0]) = "ВНЕШНЯЯОБРАБОТКА";
ЭтоВнешнийОтчет = ВРег(ЧастиИмени[0]) = "ВНЕШНИЙОТЧЕТ";
Если ЭтоВнешняяОбработка Или ЭтоВнешнийОтчет Тогда
ВыполнитьПроверкуПравДоступа("ИнтерактивноеОткрытиеВнешнихОбработок", Метаданные);
МенеджерОбъекта = ?(ЭтоВнешнийОтчет, ВнешниеОтчеты, ВнешниеОбработки);
ОбработкаОтчетОбъект = МенеджерОбъекта.Создать(ЧастиИмени[1], БезопасныйРежим());
ОбщегоНазначения.ВыполнитьМетодОбъекта(ОбработкаОтчетОбъект, ЧастиИмени[3], ПараметрыВызова);
Возврат;
КонецЕсли;
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Неверный формат параметра ИмяПроцедуры (переданное значение: %1)';
|en = 'Invalid format of the ИмяПроцедуры parameter (passed value: %1).'"), ИмяПроцедуры);
КонецПроцедуры
168. ВычислитьВБезопасномРежиме. Вычисляет переданное выражение, предварительно устанавливая безопасный режим выполнения кода и безопасный режим разделения данных для всех разделителей, присутствующих в составе конфигурации.
// Пример 1
Параметры = Новый Структура;
Параметры.Вставить("Значение1", 1);
Параметры.Вставить("Значение2", 10);
Результат = ОбщегоНазначения.ВычислитьВБезопасномРежиме("Параметры.Значение1 = Параметры.Значение2", Параметры);
// Пример 2
Результат = ОбщегоНазначения.ВычислитьВБезопасномРежиме("СтандартныеПодсистемыСервер.ВерсияБиблиотеки()");
111. ВыполнитьМетодКонфигурации. Выполнить экспортную процедуру по имени с уровнем привилегий конфигурации.
ПараметрыПроцедуры = Новый Массив;
ПараметрыПроцедуры.Добавить(ТекЭлемент.Значение);
ПараметрыПроцедуры.Добавить(Данные);
ОбщегоНазначения.ВыполнитьМетодКонфигурации("ОбменСБанкамиПереопределяемый." + МетодЗаполненияДанных, ПараметрыПроцедуры);
66. ВыполнитьВБезопасномРежиме. Выполняет произвольный алгоритм на встроенном языке 1С:Предприятия, предварительно устанавливая безопасный режим выполнения кода и безопасный режим разделения данных для всех разделителей, присутствующих в составе конфигурации.
Параметры = Новый Структура;
Параметры.Вставить("Значение1", 1);
Параметры.Вставить("Значение2", 10);
ОбщегоНазначения.ВыполнитьВБезопасномРежиме("Параметры.Значение1 = Параметры.Значение2", Параметры);
50. ОписаниеЗащитыБезПредупреждений. Возвращает описание защиты от опасных действий с отключенными предупреждениями.
Результат = ОбщегоНазначения.ОписаниеЗащитыБезПредупреждений()
78. ЦветСтиля. Функция получает цвет стиля по имени элемента стиля.
Результат = ОбщегоНазначенияКлиент.ЦветСтиля(ИмяЦветаСтиля)
Если УстановитьАктивность Тогда
ЦветТекстаКнопки = ОбщегоНазначенияКлиент.ЦветСтиля("ЦветОсобогоТекста");
ЦветФонаКнопки = ОбщегоНазначенияКлиент.ЦветСтиля("ВыделеннаяКнопкаФон");
Иначе
ЦветТекстаКнопки = ОбщегоНазначенияКлиент.ЦветСтиля("ЦветТекстаКнопки");
ЦветФонаКнопки = ОбщегоНазначенияКлиент.ЦветСтиля("ЦветФонаКнопки");
КонецЕсли;
26. ШрифтСтиля. Функция получает шрифт стиля по имени элемента стиля.
Результат = ОбщегоНазначенияКлиент.ШрифтСтиля(ИмяШрифтаСтиля)
ТекущийЭтапНайден = Ложь;
Для Каждого ЭтапНастройки Из ЭтапыНастройки Цикл
Элементы["Группа" + ЭтапНастройки.Название].Доступность = Истина;
Элементы["Панель" + ЭтапНастройки.Название].ТекущаяСтраница = Элементы["Страница" + ЭтапНастройки.Название + "Текущий"];
Элементы[ЭтапНастройки.Кнопка].Шрифт = ОбщегоНазначенияКлиент.ШрифтСтиля("КомандаПомощникаНастройкиСинхронизацииВажнаяШрифт");
КонецЦикла;