Каталог решений - Базовые вещи БСП, которые облегчат жизнь программисту 1С

Базовые вещи БСП, которые облегчат жизнь программисту 1С

Базовые вещи БСП, которые облегчат жизнь программисту 1С

В наличии

В данной публикации я опишу полезные процедуры и функции модуля общего назначения библиотеки стандартных подсистем, обязательные к использованию любым программистом 1С.

Категория:

Описание

 

Введение

Всем привет! Данный материал посвящен дальнейшему описанию возможностей типовой поставляемой конфигурации для разработчиков "Библиотека стандартных подсистем" (БСП). В настоящей статье, я опишу часть "основ" библиотеки — базовый функционал общего назначения, который уже можно использовать (т.е мы ничего не придумываем сами, используем готовые решения и экономим собственное и чужое время) в любых конфигурациях, основанных на БСП.

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

В качестве платформы я использую 1С:Предприятие 8.3.17.1549 (64 бит) и последнюю конфигурацию Розница 2.3.5.32. В указанную конфигурацию встроена БСП 3.1.2.457 версии (отмечу, что не самая последняя, на момент написания статьи — последняя 3.1.3).

Итак, давайте перейдем к описанию:

 

Полезные функции и процедуры общего модуля БСП

 

Работа с данными в базе

Функция 1.1

ЗначенияРеквизитовОбъекта(Ссылка, Знач Реквизиты, ВыбратьРазрешенные = Ложь, КодЯзыка = Неопределено) Экспорт

Данная серверная функция позволяет получить выбранные реквизиты (Знач Реквизиты) по ссылке — Ссылка. Пример применения данной функции вот такой:

&НаСервере
Функция ОбщегоНазначенияОбр(ВыбСсылка)

 ВыбранныеРеквизитыОбъекта = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ВыбСсылка,"Ссылка, КассаККМ, Магазин, Организация, СуммаДокумента, СуммаВозвратов",Ложь);
 
 Возврат ВыбранныеРеквизитыОбъекта; // Возврат структуры "Ключ - значение"
 
КонецФункции

Очень удобно, когда ты можешь получить сразу необходимую структуру по любой ссылке в допустимой степени без использования запросов и дополнительного кода.

 

Функция 1.2

ЗначенияРеквизитовОбъектов(Ссылки, Знач Реквизиты, ВыбратьРазрешенные = Ложь) Экспорт

Более универсальная функция, повторяющая смысл предыдущей, но в качестве ссылок уже можно передавать массив. Пример такой:

&НаСервере
Функция ОбщегоНазначенияОбр()
	
 МассивСсылок = Новый Массив;
 МассивСсылок.Добавить(Документы.ОтчетОРозничныхПродажах.НайтиПоНомеру("ТДРТ-000001",Дата('20160101')));
 МассивСсылок.Добавить(Документы.ОтчетОРозничныхПродажах.НайтиПоНомеру("ТДРТ-000002",Дата('20160101')));
 МассивСсылок.Добавить(Документы.ОтчетОРозничныхПродажах.НайтиПоНомеру("ТДРТ-000003",Дата('20160101')));

 ВыбранныеРеквизитыОбъекта = ОбщегоНазначения.ЗначенияРеквизитовОбъектов(МассивСсылок,"Ссылка, КассаККМ, Магазин, СуммаДокумента",Ложь);
 
 Возврат ВыбранныеРеквизитыОбъекта; // Возврат соответствия "Ключ - значение"
 
КонецФункции

Для "базовых вещей" данные функции очень даже применимы. В БСП есть рекомендация использовать именно эти функции, а не обращаться к реквизитам через точку.

 

Функция 1.3

ПроверитьПроведенностьДокументов(Знач Документы) Экспорт

Данная функция возвращает массив непроведенных документов. Если документы проведены — массив пустой. Пример использования:

&НаСервере
Функция ОбщегоНазначенияОбр()
	
 МассивСсылок = Новый Массив;
 МассивСсылок.Добавить(Документы.ОтчетОРозничныхПродажах.НайтиПоНомеру("ТДРТ-000001",Дата('20160101')));
 МассивСсылок.Добавить(Документы.ОтчетОРозничныхПродажах.НайтиПоНомеру("ТДРТ-000002",Дата('20160101')));
 МассивСсылок.Добавить(Документы.ОтчетОРозничныхПродажах.НайтиПоНомеру("ТДРТ-000003",Дата('20160101')));

 НепроведенныеДокументы = ОбщегоНазначения.ПроверитьПроведенностьДокументов(МассивСсылок);
 
 Возврат НепроведенныеДокументы; // Возврат массив непроведенных документов
 
КонецФункции

Одна из удобных базовых функций для работы, на мой взгляд. В данном примере мне будет возвращен массив с 2 элементами, т.к. 2 документа из 3-х у меня не проведены.

ОбщегоНазначенияОбр(ВыбСсылка).Количество() // 2

 

Функция 1.4

ПровестиДокументы(Документы) Экспорт

Еще одна интересная функция, которая проводит документы, а так же возвращает массив документов с описанием ошибок, если не удалость провести:

&НаСервере
Функция ОбщегоНазначенияОбр()
	
 МассивСсылок = Новый Массив;
 МассивСсылок.Добавить(Документы.ОтчетОРозничныхПродажах.НайтиПоНомеру("ТДРТ-000001",Дата('20160101')));
 МассивСсылок.Добавить(Документы.ОтчетОРозничныхПродажах.НайтиПоНомеру("ТДРТ-000002",Дата('20160101')));
 МассивСсылок.Добавить(Документы.ОтчетОРозничныхПродажах.НайтиПоНомеру("ТДРТ-000003",Дата('20160101')));

 НепроведенныеДокументы = ОбщегоНазначения.ПровестиДокументы(МассивСсылок);
 
 Возврат НепроведенныеДокументы; // Возврат массив непроведенных документов описанием ошибки проведения
 
КонецФункции

Здесь, функция вернула мне массив такого содержания, где видно какой документ не удалось провести и почему:

Рис.1. Элементы массива содержат структуры с описанием ошибки и ссылки.

 

 

Функция 1.5

ЕстьСсылкиНаОбъект(Знач СсылкаИлиМассивСсылок, Знач ИскатьСредиСлужебныхОбъектов = Ложь) Экспорт

Данная функция осуществляет простую проверку — есть ли ссылки на объект или нет. Возвращает "истину" или "ложь".

&НаСервере
Функция ОбщегоНазначенияОбр(ВыбСсылка)	

 Результат = ОбщегоНазначения.ЕстьСсылкиНаОбъект(ВыбСсылка);
 
 Возврат Результат; // Вернул "Истина" - тк на объект где-то есть ссылка
 
КонецФункции

 

 

Функция 1.6

МестаИспользования(Знач НаборСсылок, Знач АдресРезультата = "") Экспорт

Данная функция возвращает таблицу значений с указанием, где используется передаваемый объект:

&НаСервере
Функция ОбщегоНазначенияОбр()
	
 МассивСсылок = Новый Массив;
 МассивСсылок.Добавить(Документы.ОтчетОРозничныхПродажах.НайтиПоНомеру("ТДРТ-000001",Дата('20160101')));
 МассивСсылок.Добавить(Документы.ОтчетОРозничныхПродажах.НайтиПоНомеру("ТДРТ-000002",Дата('20160101')));
 МассивСсылок.Добавить(Документы.ОтчетОРозничныхПродажах.НайтиПоНомеру("ТДРТ-000003",Дата('20160101')));

 Результат = ОбщегоНазначения.МестаИспользования(МассивСсылок);
 
 Возврат Результат; // Таблица значений, с "ответом" где используется объект или объекты
 
КонецФункции

Например, документ "Отчет о розничных продажах" имеет ссылку в документе "Выемка денежных средств из кассы ККМ", что показывает нам результат этот функции:

Рис.2. Строка таблицы значений с результатом использования Ссылки. Ссылка — Данные

 

 

Работа с окружением базы

Функция 2.1

ОписанияПодсистем() Экспорт

Данная функция возвращает массив структур, содержащий информацию о системах и стандартных библиотеках, включенных в конфигурацию (то же самое, что содержимое файла Версии библиотек.txt при поставки конфигурации. Например:

&НаСервере
Функция ОбщегоНазначенияОбр()
	
 Результат = ОбщегоНазначения.ОписанияПодсистем();
 Возврат Результат; // Массив структур с описанием подсистем
 
КонецФункции

Результат такой:

Рис.3. В конфигурацию включена подсистема маркировки 10.1.18.

 

Функция 2.2

ОбщиеПараметрыБазовойФункциональности() Экспорт

Данная функция возвращает структуру с настройками базовой функциональности конфигурации. Интересным содержанием структуры является такие как МинимальнаяВерсияПлатформы и РекомендуемыйОбъемОперативнойПамяти.

Обращение к функции вот так:

&НаСервере
Функция ОбщегоНазначенияОбр()
	
 Результат = ОбщегоНазначения.ОбщиеПараметрыБазовойФункциональности();
 Возврат Результат; // Структура базовой функциональности
 
КонецФункции

 

Функция 2.3

ИнформационнаяБазаФайловая(Знач СтрокаСоединенияИнформационнойБазы = "") Экспорт

Определяем является ли информационная база файловой (Истина) или серверной (Ложь).

&НаСервере
Функция ОбщегоНазначенияОбр()
	
 Результат = ОбщегоНазначения.ИнформационнаяБазаФайловая();
 Возврат Результат; // Вернул "Истина" или "Ложь"
 
КонецФункции

 

 

Функция 2.4

ОперативнаяПамятьДоступнаяКлиентскомуПриложению() Экспорт

Данная функция возвращает объем оперативной памяти, которая доступна приложению (в гигабайтах). Вот у меня в системе доступно 3.9 гб:

&НаСервере
Функция ОбщегоНазначенияОбр(ВыбСсылка)
	
 Результат = ОбщегоНазначения.ОперативнаяПамятьДоступнаяКлиентскомуПриложению();
 Возврат Результат; // Вернул число 3.9 гб
 
КонецФункции

 

Функция 2.5

РедакцияКонфигурации() Экспорт

Данная функция возвращает номер (строка) редакции конфигурации:

&НаСервере
Функция ОбщегоНазначенияОбр(ВыбСсылка)

 Результат = ОбщегоНазначения.РедакцияКонфигурации();
 Возврат Результат; // 2.3
 
КонецФункции

 

Функция 2.6

ЭтоWindowsКлиент() Экспорт

Данная функция возвращает Истина, если пользователь работает по windows на клиенте. Так же есть группа подобных функций, позволяющих определять где работает пользователь: ЭтоWindowsСервер(), ЭтоLinuxКлиент(), ЭтоLinuxСервер(), ЭтоMacOSКлиент(), ЭтоВебКлиент(), ЭтоМобильныйКлиент(), КлиентПодключенЧерезВебСервер(). Все функции работают через привилегированный режим.

 

Работа с датами

Функция 3.1

ПредставлениеЛокальнойДатыСоСмещением(ЛокальнаяДата) Экспорт

Данная функция возвращает дату со смещением по часовому поясу, в описании по формату  "YYYY-MM-DDThh:mm:ssTZD" :

&НаСервере
Функция ОбщегоНазначенияОбр()
	
 Результат = ОбщегоНазначения.ПредставлениеЛокальнойДатыСоСмещением(ТекущаяДата());
 
 Возврат Результат; // 2020-08-30Т15:09+08:00
 
КонецФункции

 

Функция 3.2

ИнтервалВремениСтрокой(ВремяНачала, ВремяОкончания = Неопределено) Экспорт

Полезная функция, возвращающая интервал времени строкой, в пример — вернет "1 день":

&НаСервере
Функция ОбщегоНазначенияОбр()
	
 Результат = ОбщегоНазначения.ИнтервалВремениСтрокой(ТекущаяДата()-24*60*60, ТекущаяДата());
 
 Возврат Результат; // 1 день
 
КонецФункции

 

Функция 3.3

ТекущаяДатаПользователя(ИмяПользователя = Неопределено) Экспорт

Данная функция вернет текущую дату пользователя по его имени:

&НаСервере
Функция ОбщегоНазначенияОбр()
	
 Результат = ОбщегоНазначения.ТекущаяДатаПользователя("Admin");
 
 Возврат Результат; // 30.08.2020 0:00:00
 
КонецФункции

 

Заключение

Спасибо за прочтенный материал. Знаю, что в той или иной степени, на ресурсе уже были подобные статьи с описанием подобного функционала. Со своей стороны хочу отметить, что данная статья — это своего рода "моя индивидуальная выжимка собственного опыта", накопленного при работе с типовыми конфигурациями на основе БСП. Предполагаю, что данная статья-шпаргалка будет полезна как и мне (чтобы не забыть возможности), так и вам — "если что-то не знали" — пожалуйста, тут есть что узнать и запомнить.

 

Предыдущие материалы

Так же, я прошу посмотреть мои предыдущие статьи, посвященные базовым возможностям типовых конфигураций:

Типовые методы конфигурации "Зарплата и управление персоналом", которые пригодятся каждому ЗУП программисту и не только

Полезные встроенные функции для работы с печатными формами и не только на УТ 11.4 и БП 3.0 (сравнение)

Возможности работы со строками при помощи БСП, которые должен знать каждый программист

 

has been added to your cart:
Оформление заказа