Консультация Беларусь
Консультация Россия
Блог

10 функций БСП, которые должен знать каждый программист 1С

1. Показать сообщение пользователю

Текст = "Операция выполнена успешно";

// на клиенте
ОбщегоНазначенияКлиент.СообщитьПользователю(Текст);

// на сервере
ОбщегоНазначения.СообщитьПользователю(Текст);

2. Строка в число

Сумма = "1 500,94";
Результат = СтроковыеФункцииКлиентСервер.СтрокаВЧисло(Сумма);
ОбщегоНазначенияКлиент.СообщитьПользователю(Результат);

3. Строка в дату

ДатаСтрокой = "04.09.2023 17:38:14";

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

4. Фамилия, инициалы

ФИО = "Гордынец Иван Сергеевич";
Результат = ФизическиеЛицаКлиентСервер.ФамилияИнициалы(ФИО);
ОбщегоНазначенияКлиент.СообщитьПользователю(Результат);

5. Склонение ФИО

Должность = "Директор";
ФИО = "Морковкин Михаил Юрьевич";
Падеж = 2; // Родительный
Пол = 1; // Мужской

ФИОРодительный = СклонениеПредставленийОбъектов.ПросклонятьФИО(ФИО, Падеж, Пол);

ДолжностьРодительный = СклонениеПредставленийОбъектов.ПросклонятьПредставление(Должность, Падеж);

Текст = СтрШаблон("в лице %1 %2", ДолжностьРодительный, ФИОРодительный);
ОбщегоНазначения.СообщитьПользователю(Текст);

6. Значение реквизита(ов) объекта

Товар = Справочники.Номенклатура.НайтиПоКоду("ФР-00000211");
Если НЕ Товар.Пустая() Тогда
	
	// 1. Значение одного реквизита одного объекта
	Артикул = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Товар, "Артикул");
	ОбщегоНазначения.СообщитьПользователю("Артикул: " + Артикул);
	
	// 2. Значения нескольких реквизитов одного объекта
	РеквизитыТовара = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Товар, "Артикул, КатегорияНоменклатуры");
	
	Текст = СтрШаблон("Артикул: %1; Категория: %2", 
						РеквизитыТовара.Артикул, РеквизитыТовара.КатегорияНоменклатуры);
	ОбщегоНазначения.СообщитьПользователю(Текст);
	
КонецЕсли;

7. Значение реквизита(ов) объектов

МассивТоваров = Новый Массив;
МассивТоваров.Добавить(Справочники.Номенклатура.НайтиПоКоду("ФР-00000211"));
МассивТоваров.Добавить(Справочники.Номенклатура.НайтиПоКоду("ФР-00000206"));

// 1. Значение одного реквизита нескольких объектов
АртикулыСоответствие = ОбщегоНазначения.ЗначениеРеквизитаОбъектов(МассивТоваров, "Артикул");
Для каждого Товар Из МассивТоваров Цикл
	ОбщегоНазначения.СообщитьПользователю("Артикул: " + АртикулыСоответствие[Товар]);
КонецЦикла;

// 2. Значения нескольких реквизитов нескольких объектов
РеквизитыТоваров = ОбщегоНазначения.ЗначенияРеквизитовОбъектов(МассивТоваров, 
																"Артикул, КатегорияНоменклатуры");

Для каждого Товар Из МассивТоваров Цикл
	Текст = СтрШаблон("Артикул: %1; Категория: %2", 
						РеквизитыТоваров[Товар].Артикул, РеквизитыТоваров[Товар].КатегорияНоменклатуры);
	ОбщегоНазначения.СообщитьПользователю(Текст);
КонецЦикла;

8. Свернуть массив

МассивСотрудников = Новый Массив;
МассивСотрудников.Добавить("Иванов");
МассивСотрудников.Добавить("Петров");
МассивСотрудников.Добавить("Иванов");
МассивСотрудников.Добавить("Петров");
МассивСотрудников.Добавить("Лопатин");

МассивБезДублей = ОбщегоНазначенияКлиентСервер.СвернутьМассив(МассивСотрудников);
ОбщегоназначенияКлиент.СообщитьПользователю(МассивБезДублей.Количество());

9. Таблица значений в массив

ВидЦен = Справочники.ВидыЦен.НайтиПоНаименованию("Учетная", Истина);

Запрос = Новый Запрос;
Запрос.Текст = 
"ВЫБРАТЬ
|	Цены.Период КАК Период,
|	Цены.Номенклатура КАК Номенклатура,
|	Цены.Характеристика КАК Характеристика,
|	Цены.Цена КАК Цена,
|	Цены.ЕдиницаИзмерения КАК ЕдиницаИзмерения
|ИЗ
|	РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ВидЦен = &ВидЦен) КАК Цены";

Запрос.УстановитьПараметр("ВидЦен", ВидЦен);
РезультатЗапроса = Запрос.Выполнить();
ТаблицаТоваров = РезультатЗапроса.Выгрузить();

// ТаблицаЗначений -> Массив структур
МассивТоваров = ОбщегоНазначения.ТаблицаЗначенийВМассив(ТаблицаТоваров);

10. Описание типов

ТипЧисло = ОбщегоНазначения.ОписаниеТипаЧисло(10, 3);
ТипСтрока = ОбщегоНазначения.ОписаниеТипаСтрока(100);
ТипДата = ОбщегоНазначения.ОписаниеТипаДата(ЧастиДаты.ДатаВремя);
ТипВсеСсылки = ОбщегоНазначения.ОписаниеТипаВсеСсылки();

Таблица = Новый ТаблицаЗначений;
Таблица.Колонки.Добавить("Наименование", ТипСтрока);
Таблица.Колонки.Добавить("Остаток", ТипЧисло);
Таблица.Колонки.Добавить("ДатаПоступления", ТипДата);
Таблица.Колонки.Добавить("ДокументПоступления", ТипВсеСсылки);
Примеры использования этих функций смотри тут:
Подписывайтесь на нас в соц. сетях:
YouTube: https://www.youtube.com/@ironskills-1c
Telegram: https://t.me/ironskills_community1c
VK: https://vk.com/ironskillsby
Instagram: https://www.instagram.com/ironskills_school/
Программирование