Полезные функции БСП

Опубликовано Павел Путков 12.07.2018 0 Комментарии

Полезные функции БСП

Список часто востребованных, по моему мнению, функций из состава Библиотеки стандартных подсистем 2.2.

Сегодня смотрел конфигурацию клиента и наткнулся на забавный код:

ФизЛицо = ПользователиИнформационнойБазы.ТекущийПользователь().ФизическоеЛицо;
(этот код вообще не рабочий, если внимательно посмотреть)
 
но это не все, далее следует код поиска текущего пользователя в справочнике Пользователи:
 
ИмяПользователя = ПользователиИнформационнойБазы.ТекущийПользователь().ПолноеИмя();
 
Пользователь = Справочники.Пользователи.НайтиПоНаименованию(ИмяПользователя);
 
Например для вышестоящего кода, правильно было бы писать вот так:
 
ФизЛицо = Пользователи.ТекущийПользователь().ФизическоеЛицо;
 
Пользователь = Пользователи.ТекущийПользователь();
 
//Краткая справка по функции:
// Возвращаемое значение:
//  СправочникСсылка.Пользователи
 
Посмотрев на это все решил что  стоит поделиться некоторыми полезными функциями, которые уже давно есть в составе типовых конфигураций.
 
 
Вот примерный перечень:
 
1.
// Возвращает структуру, содержащую значения реквизитов прочитанные из информационной базы
// по ссылке на объект.
ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Ссылка, Знач Реквизиты)
 
Пример:
РеквизитыКонтрагента = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Контрагент, "Наименование, ИНН, КПП");
 
Скажете, что можно написать Контрагент.Наименование проще, чем обращаться к функции, но не многие знают, что обращение через точку считывает значение всех реквизитов объекта, что не производительно для объектов с реквизитами типа ХранилищеЗначения например.
 
2.
// Проверяет наличие ссылок на объект в базе данных
ОбщегоНазначения.ЕстьСсылкиНаОбъект(Знач СсылкаИлиМассивСсылок, Знач ИскатьСредиСлужебныхОбъектов = Ложь,  ДругиеИсключения = Неопределено)
 
Пример:
Если ОбщегоНазначения.ЕстьСсылкиНаОбъект(Контрагент) Тогда
     Продолжить;
КонецЕсли;
 
Можно использовать в своей обработке, например при удалении данных проверять ссылки, к тому же в отличии от встроенной функции НайтиСсылки, работает параметр ИсключаемыеОбъекты, что не есть плохо.
 
3.
//Позволяет определить, есть ли среди реквизитов объекта реквизит с переданным именем
ОбщегоНазначения.ЕстьРеквизитОбъекта(ИмяРеквизита, МетаданныеОбъекта)
 
Пример:
Для Каждого ДокументОбъект Из МассивДокументов Цикл
     Если ОбщегоНазначения.ЕстьРеквизитОбъекта("Организация", ДокументОбъект.Метаданные()) Тогда
          ДокументОбъект.Организация = Организация;
     КонецЕсли;
КонецЦикла;
 
 
4. 
// Получает файл из Интернета по протоколу http(s), либо ftp и сохраняет его по указанному пути на сервере.
ПолучениеФайловИзИнтернета.СкачатьФайлНаСервере(Знач URL, ПараметрыПолучения = Неопределено, Знач ЗаписыватьОшибку = Истина)
 
5.
// Проверяет, является ли текущий или указанный пользователь полноправным.
Пользователи.ЭтоПолноправныйПользователь()
 
Пример:
Если НЕ Пользователи.ЭтоПолноправныйПользователь() Тогда
     ВызватьИсключение НСтр("ru = 'У Вас нет доступа!'");
КонецЕсли;
 
6.
// Получает номер документа для вывода на печать; из номера удаляются префиксы и лидирующие нули
ПрефиксацияОбъектовКлиентСервер.ПолучитьНомерНаПечать(Знач НомерОбъекта, УдалитьПрефиксИнформационнойБазы = Ложь, УдалитьПользовательскийПрефикс = Ложь)
 
Пример:
НомерНаПечать = ПрефиксацияОбъектовКлиентСервер.ПолучитьНомерНаПечать("УТПД-00023", Истина, Истина);
//НомерНаПечать будет равен строке "23"
 
Полезно для тех кто делает дополнительные печатные формы.
 
7.
// Возвращает курс валюты на дату.
РаботаСКурсамиВалют.ПолучитьКурсВалюты(Валюта, ДатаКурса)
 
Пример:
//Получение курса валюты документа на 30 января 2014 года
Курс = РаботаСКурсамиВалют.ПолучитьКурсВалюты(ВалютаДокумента, Дата(2014, 01, 30));
 
8.
// Подставляет параметры в строку. Максимально возможное число параметров - 9.
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Знач СтрокаПодстановки,
     Знач Параметр1, Знач Параметр2 = Неопределено, Знач Параметр3 = Неопределено,
     Знач Параметр4 = Неопределено, Знач Параметр5 = Неопределено, Знач Параметр6 = Неопределено,
     Знач Параметр7 = Неопределено, Знач Параметр8 = Неопределено, Знач Параметр9 = Неопределено)
 
Очень полезная функция, номер параметра задается знаком процента, пример:
Шаблон = "Недостаточно номенклатуры %1 на складе %2 в количестве %3 шт.";
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Шаблон, Номенклатура, Склад, КоличествоОстаток);
 
Советую более подробно посмотреть все функции модуля СтроковыеФункцииКлиентСервер.
 
9.
// Открывает Проводник Windows и выделяет указанный файл.
// пример: ""С:\Temp\report.txt"
ФайловыеФункцииСлужебныйКлиент.ОткрытьПроводникСФайлом(Знач ПолноеИмяФайла)
 
 
Так же выложил обработку с перечнем функций в модуле объекта для изучения по клавише F12.
 
В будущем планирую написать про полезную программу с предиктивным набором текста (пока тестирую).
К примеру всегда приходится писать однотипные имена переменных, представляете как было бы полезно, если бы программа запоминала вводимые вами слова и предлогала сразу подставить нужное, исходя из частоты использования слово, либо показала в виде контекстной подсказки все похожие слова. Для программистов это был бы незаменимый помощник.Laughing