arefaste/1C_Forums huggingface dataset:
Открыть форму списка с отбором по доп.свойству / доп.реквизиту
Теги: 1С

# Код реализации

```1c
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)

	ФиксированныеНастройки = Новый НастройкиКомпоновкиДанных;
	ЭлементОтбора = ФиксированныеНастройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Ссылка.[Это приложение (Договоры)]");
	ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
	ЭлементОтбора.Использование = Истина;
	ЭлементОтбора.ПравоеЗначение = Истина;

	ФиксированныеНастройки = Новый Структура("ФиксированныеНастройки", ФиксированныеНастройки);

	ОткрытьФорму("Справочник.ДоговорыКонтрагентов.ФормаСписка", ФиксированныеНастройки, ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно, ПараметрыВыполненияКоманды.НавигационнаяСсылка);

КонецПроцедуры
```
Загрузить картинку из интернета асинхронно
Теги: 1С,НаКлиенте,асинх,УФ

Загрузить картинку из интернета асинхронно и отобразить её на форме в реквизите типа "Строка"

# Примечания

- Предупреждаю. Код не работает в Web-клиенте.

ПолучитьИмяВременногоФайла() - не доступна для Web-Клиента
Копирование на локальный диск не работает даже с 1С расширением для файла.
https://mista.ru/topic/896088

- (1) sikuda,
"ПолучитьИмяВременногоФайла() - не доступна для Web-Клиента"
Так это из синтаксис-помощника известно.
Да и вообще использовать сегодня временные файлы в 1С, как промежуточное решение некомильфо. Ныне потоки рулят. Конкретно в предложенном коде вообще непонятно в принципе зачем использовать временный файл? Есть замечательно работающая в web-клиенте конструкция:
МойФайл = Новый Файл("Путь\до\моего\файла\с\расширением");

Дизлайк в общем.
кнПерезапустить_Нажатие
Теги: 1С,ВнешниеОбработки

# Код реализации

```1c
Процедура кнПерезапустить_Нажатие(Кнопка)
    Для каждого МетаФорма Из ЭтаФорма.Метаданные().Формы Цикл
        ТекФорма = ПолучитьФорму(МетаФорма);
        Если ТекФорма.Открыта() Тогда
            ТекФорма.Закрыть();
            Если ТекФорма = ЭтаФорма Тогда
                Если Найти(Строка(ТипЗнч(ЭтотОбъект)), "Внешняя обработка объект:") = 1 Тогда
                    ВнешниеОбработки.Создать(ЭтотОбъект.ИспользуемоеИмяФайла).ПолучитьФорму(МетаФорма.Имя).Открыть();
                Иначе
                    ВнешниеОтчеты.Создать(ЭтотОбъект.ИспользуемоеИмяФайла).ПолучитьФорму(МетаФорма.Имя).Открыть();
                КонецЕсли;
            КонецЕсли;
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры
```
Шаблон юнит-теста
Теги: 1С,bdd,Тесты

# Код реализации

```1c
#Область ОписаниеПеременных

Перем КонтекстЯдра;              // Фреймворк тестирования
Перем Утверждения;               // Ассерты
Перем Данные;                    // Плагин данных
Перем УтвержденияПроверкаТаблиц; // Плагин проверки таблиц

#КонецОбласти

#Область СлужебныйПрограммныйИнтерфейс

#Область СобытияФреймворкаТестирования

Процедура Инициализация(КонтекстЯдраПараметр) Экспорт

	КонтекстЯдра              = КонтекстЯдраПараметр;
	Утверждения               = КонтекстЯдра.Плагин("БазовыеУтверждения");
	Данные                    = КонтекстЯдра.Плагин("Данные");
	УтвержденияПроверкаТаблиц = КонтекстЯдра.Плагин("УтвержденияПроверкаТаблиц");

КонецПроцедуры

Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдраПараметр) Экспорт

	КонтекстЯдра = КонтекстЯдраПараметр;

	НаборТестов.Добавить("Тест_ДолженПроверить");

КонецПроцедуры

// BSLLS:PairingBrokenTransaction-OFF
// BSLLS:BeginTransactionBeforeTryCatch-OFF
// BSLLS:WrongUseOfRollbackTransactionMethod-OFF

Процедура ПередЗапускомТеста() Экспорт
	НачатьТранзакцию();
КонецПроцедуры

Процедура ПослеЗапускаТеста() Экспорт
	Если ТранзакцияАктивна() Тогда
		ОтменитьТранзакцию();
	КонецЕсли;
КонецПроцедуры

// BSLLS:PairingBrokenTransaction-ON
// BSLLS:BeginTransactionBeforeTryCatch-ON
// BSLLS:WrongUseOfRollbackTransactionMethod-ON

#КонецОбласти

#Область Тесты

Процедура Тест_ДолженПроверить() Экспорт

	// Дано

	// Когда

	// Тогда

КонецПроцедуры

#КонецОбласти

#КонецОбласти
```
Шаблон http-сервиса
Теги: 1С,Http

# Код реализации

```1c
#Область ОбработчикиСобытий

Функция ЛицензииДоступны(Запрос)

	Ответ = Новый HTTPСервисОтвет(200);
	ДобавитьЗаголовкиДанных(Ответ);
	Результат = Результат();
	Ответ.КодСостояния = Результат.КодСостояния;
	Ответ.УстановитьТелоИзСтроки(Результат.ТекстСостояния);
	Возврат Ответ;

КонецФункции

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

Процедура ДобавитьЗаголовкиДанных(Ответ) Экспорт

	Заголовки = Ответ.Заголовки;

	Заголовки.Вставить("Accept", "application/json");
	Заголовки.Вставить("Accept-Charset", "utf-8");
	Заголовки.Вставить("Content-Type", "application/json; charset=utf-8");
	Заголовки.Вставить("Cache-Control", "no-cache");

КонецПроцедуры

Функция Результат()

	Попытка
		ТекстСостояния = НаличиеЛицензийТекст();
		КодСостояния = 200;
	Исключение
		ТекстСостояния = "";
		КодСостояния = 500;
	КонецПопытки;

	Возврат Новый Структура("ТекстСостояния, КодСостояния", ТекстСостояния, КодСостояния);
КонецФункции

Функция НаличиеЛицензийТекст()

	УстановитьПривилегированныйРежим(Истина);
	ЗакрытьПрограмму = Ложь;
    торо_СЛКСервер.ПроверитьЛицензииПередНачаломРаботыСистемы(ЗакрытьПрограмму);

	Структура = Новый Структура;
	Структура.Вставить("LicenseAvailable ", Формат(НЕ ЗакрытьПрограмму, "БЛ=false; БИ=true"));

	ЗаписьJSON = Новый ЗаписьJSON;
	ЗаписьJSON.УстановитьСтроку();
	ЗаписатьJSON(ЗаписьJSON, Структура);
	Текст =  ЗаписьJSON.Закрыть();

	Возврат Текст;
КонецФункции

#КонецОбласти
```
Использование в Мобильном Приложении  (Андроид) сканера ШтрихКодов с компонентой Драйвер1СУстройствоВводаNative от 1С
Теги: 1С,Андроид,Драйвер1СУстройствоВводаNative,Мобильное приложение,Сканер ШтрихКодов

Фирма 1С разработала Библиотеку подключаемого оборудования для мобильной платформы, однако нормального описания и примеров использования не предоставлено. В результате пришлось повозиться некоторое время, чтобы подключить Сканер штрих кодов к мобильному приложению на Андроид
Конвертировать объект в структуру
Теги: 1С

Возвращает структуру реквизитов объекта или ссылки, включая стандартные реквизиты и реквизиты табличной части. Можно использовать, если необходимо, например, эмулировать вызов метода, использующего объект формы.

# Код реализации

```1c
// Возвращает структуру реквизитов объекта или ссылки, включая стандартные реквизиты и реквизиты табличной части.
// Можно использовать, если необходимо, например, эмулировать вызов метода, использующего объект формы.
//
// Параметры:
//  ВходящийОбъект - ЛюбаяСсылка или ЛюбойОбъект
//
// Возвращаемое значение:
//  Структура
//
Функция КонвертироватьОбъектВСтруктуру(ВходящийОбъект)

   СтруктураОбъекта = Новый Структура;

   СтандартныеРеквизитыОбъекта = ВходящийОбъект.Метаданные().СтандартныеРеквизиты;
   Для Каждого СтандартныйРеквизит Из СтандартныеРеквизитыОбъекта Цикл
       СтруктураОбъекта.Вставить(СтандартныйРеквизит.Имя, ВходящийОбъект[СтандартныйРеквизит.Имя]);
   КонецЦикла;

   РеквизитыОбъекта = ВходящийОбъект.Метаданные().Реквизиты;
   Для Каждого Реквизит Из РеквизитыОбъекта Цикл
       СтруктураОбъекта.Вставить(Реквизит.Имя, ВходящийОбъект[Реквизит.Имя]);
   КонецЦикла;

   ТЧ = ВходящийОбъект.Метаданные().ТабличныеЧасти;
   Для Каждого ТаблЧасть Из ТЧ Цикл
       ТЗ = ВходящийОбъект[ТаблЧасть.Имя].Выгрузить();
       Массив = ОбщегоНазначения.ТаблицаЗначенийВМассив(ТЗ);
       СтруктураОбъекта.Вставить(ТаблЧасть.Имя, Массив);
   КонецЦикла;

   Возврат СтруктураОбъекта;

КонецФункции
```
Отправка писем с приложением эксель для БП
Теги: 1С

Отправка сформированного табличного документа в формате эксель для БП

# Код реализации

```1c
Процедура СформироатьТабДок()
	ТабДок = Новый ТабличныйДокумент;
	ОблШапка = Макет.ПолучитьОбласть("Шапка");
	ТабДок.Вывести(ОблШапка);
	ПотокВПамяти = Новый ПотокВПамяти();
	ТабДок.Записать(ПотокВПамяти, ТипФайлаТабличногоДокумента.XLSX);
	ДвоичныеДанные = ПотокВПамяти.ЗакрытьИПолучитьДвоичныеДанные();
	Тема = "Тема от: "+Строка(Формат(ТекущаяДата()-86400, "ДФ=dd.MM.yyyy"));
	ТекстПисьма = "";
	ОтправитьEmail("Адрес отправки", , Тема, ТекстПисьма, ДвоичныеДанные, "Имя отправителя");
КонецПроцедуры

&НаСервере
Процедура ОтправитьEmail(АдресПочты, Копия = Неопределено, Тема, ТекстПисьма, Вложение = Неопределено, ИмяОтправителя)
	Профиль  = Новый ИнтернетПочтовыйПрофиль;
	Профиль.АдресСервераIMAP = "imap.mail.ru";
	Профиль.АдресСервераSMTP = "smtp.mail.ru";
	Профиль.ПортSMTP = 465;
	Профиль.ПортIMAP = 993;
	Сообщение = Новый ИнтернетПочтовоеСообщение;
	Профиль.Пользователь = "Пользователь";
	Профиль.Пароль = "Пароль";
	Профиль.ПользовательSMTP = "ПользовательSMTP";
	Профиль.ПарольSMTP = "ПарольSMTP";
	Сообщение.Отправитель.Адрес = "Адрес";
	Сообщение.ИмяОтправителя = ИмяОтправителя;
	Профиль.ИспользоватьSSLSMTP = Истина;
	Сообщение.Получатели.Добавить(АдресПочты);
	Сообщение.Тема = Тема;
	Сообщение.Тексты.Добавить(ТекстПисьма, ТипТекстаПочтовогоСообщения.ПростойТекст);
	Если Вложение <> Неопределено тогда
		Тема = Тема+".xlsx";
		Сообщение.Вложения.Добавить(Вложение,Тема);
	КонецЕсли;
	Почта = Новый ИнтернетПочта;
	Попытка
		Почта.Подключиться(Профиль);
		Почта.Послать(Сообщение);
		Почта.Отключиться();
	Исключение
		Сообщить(ОписаниеОшибки());
	КонецПопытки;
КонецПроцедуры
```
Сколько процентов число от числа
Теги: 1С,Желтый Чайник 1С,Математика

Возвращает сколько процентов число от числа

# Код реализации

```1c
// Сколько процентов число от числа
// Источник: https://github.com/SeiOkami/CollectionMethodsOneS/issues/151
//
// Параметры:
//  Число - Число
//  ОтЧисла - Число
//  ОкруглятьДо - Число - Количество знаков округления, 0 - не требуется
//
// Возвращаемое значение:
//  Число
//
// Пример:
//  Процент = СколькоПроцентовЧислоОтЧисла(10, 100);  // 10
//  Процент = СколькоПроцентовЧислоОтЧисла(9, 69, 2); // 13.04
//
Функция СколькоПроцентовЧислоОтЧисла(
	Знач Число, Знач ОтЧисла, Знач ОкруглятьДо = 0) Экспорт

	Если ОтЧисла = 0 Тогда
		Возврат 0;
	КонецЕсли;

	Результат = (Число / ОтЧисла) * 100;

	Если ОкруглятьДо > 0 Тогда
		Результат = Окр(Результат, ОкруглятьДо);
	КонецЕсли;

	Возврат Результат;

КонецФункции
```

# Примечания

- Наверное было бы правильнее назвать функцию:
ПеревестиОбычнуюДробьВПроценты(Знач Числитель, Знач Знаменатель, Знач ОкруглитьДо = 0) Экспорт

- Прикол заключается в том, что округлить до целого в этой функции не удастся. 😦
Исправление :
Функция СколькоПроцентовЧислоОтЧисла(
	Знач Число, Знач ОтЧисла, Знач ОкруглятьДо = Неопределено) Экспорт
	
	Если ОтЧисла = 0 Тогда
		Возврат 0;
	КонецЕсли;
	
	Результат = (Число / ОтЧисла) * 100;
	
	Если ОкруглятьДо <> Неопределено Тогда
		Результат = Окр(Результат, ОкруглятьДо);
	КонецЕсли;
	
	Возврат Результат;
	
КонецФункции
Построчный обход макета
Теги: 1С,Макет,ТабличныйДокумент

Построчный обход макета

# Код реализации

```1c
	Макет = РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет");
	Для Стр=1 По Макет.ВысотаТаблицы Цикл
		Код=Макет.Область(Стр, 1).Текст;
	КонецЦикла;
```
Запуск внешнего отчета в сформированном виде
Теги: 1С,БСП

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

# Код реализации

```1c
&НаКлиенте
Процедура ИнформацияПоЗданиям(Команда)

	ВнешнийОтчетОбработкаДляОткрытияСсылка = СсылкаНаВнешнийОтчетОбработкуПоИмениНаСервере("Информация по зданиям");
	Если Не ЗначениеЗаполнено(ВнешнийОтчетОбработкаДляОткрытияСсылка) Тогда
		Сообщить("Отчет не найден");
		Возврат;
	КонецЕсли;

    ИмяОбработкиСлужебное = ДополнительныеОтчетыИОбработкиВызовСервера.ПодключитьВнешнююОбработку(ВнешнийОтчетОбработкаДляОткрытияСсылка);

    ПараметрыФормы = Новый Структура;

    ПараметрыФормы.Вставить("КлючВарианта", "Основной");
    ПараметрыФормы.Вставить("СформироватьПриОткрытии", Истина);

    ОткрытьФорму("ВнешнийОтчет." + ИмяОбработкиСлужебное + ".Форма", ПараметрыФормы, ЭтаФорма);

КонецПроцедуры

&НаСервереБезКонтекста
Функция СсылкаНаВнешнийОтчетОбработкуПоИмениНаСервере(ИмяОтчетаОбработки)
    Возврат Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию(ИмяОтчетаОбработки).Ссылка;
КонецФункции
```

# Примечания

- Распространим знания стандартов разработки 1С ))
Функция ПолучитьСсылкуНаВнешнийОтчетОбработкуПоИмениНаСервере(ИмяОтчетаОбработки)
1С:Предприятие 8. Система стандартов и методик разработки конфигураций
Имена процедур и функций (#std647)
6.1. Имена функций в общем случае следует образовывать от описания возвращаемого значения.
Неправильно:
Функция ПолучитьПолноеИмяПользователя()
Функция СоздатьПараметрыЗаполненияЦенПоставщика()
Функция ОпределитьДатуНачалаСеанса()
Правильно:
Функция ПолноеИмяПользователя()
Функция НовыеПараметрыЗаполненияЦенПоставщика()
Функция ДатаНачалаСеанса()

- (1) СергейТ, спасибо, исправил
Преобразование отчета на СКД в таблицу значений на табличном документе
Теги: 1С,СКД,Таблица значений

Иногда с отчетами удобнее (или быстрее) работать в MS Excel, например, когда необходимо связать несколько разных отчетов. Если отчеты выводятся с группировкой, то связать их бывает проблематично. Если у отчета нет своей формы, то можно применить такое универсальное решение.
Замер времени выполнения кода с выводом результата замера в формате ЧЧ:мм:сс
Теги: 1С,Времени,Миллисекунда,Время,Замер,Миллисекунды

# Код реализации

```1c
ДатаНачала = ТекущаяУниверсальнаяДатаВМиллисекундах();
// Какой-то код
Дельта = (ТекущаяУниверсальнаяДатаВМиллисекундах() - ДатаНачала)/1000;
ВремяВыполнения = Формат(Дата(1,1,1) + Дельта, "ДЛФ=T");
Сообщить(ВремяВыполнения);
```
Таблица из набора данных СКД
Теги: 1С,СхемаКомпоновкиДанных,ТЗ,СКД,Желтый Чайник 1С,Таблица значений,Таблица

Возвращает таблицу значений с колонками набора данных СКД

# Код реализации

```1c
// Возвращает таблицу значений с колонками набора данных СКД
// Источник: https://github.com/SeiOkami/CollectionMethodsOneS/issues/132
//
// Параметры:
//  НаборДанных - НаборДанныхОбъектСхемыКомпоновкиДанных
//
// Возвращаемое значение:
//  ТаблицаЗначений
//
// Пример:
// 	Таблица = ТаблицаИзНабораДанных(СКД.НаборыДанных.Получить(0));
// 	//Таблица содержит пустую ТЗ со всеми колонками для набора.
// 	//Теперь её можно заполнять данными и далее "скармливать" при формировании СКД
//
Функция ТаблицаИзНабораДанных(Знач НаборДанных) Экспорт

	Результат = Новый ТаблицаЗначений();

	Для Каждого Поле Из НаборДанных.Поля Цикл
		Результат.Колонки.Добавить(Поле.Поле, Поле.ТипЗначения, Поле.Заголовок);
	КонецЦикла;

	Возврат Результат;

КонецФункции
```
СтрШаблон (с проверкой существования параметров)
Теги: 1С,Проверка,Шаблон,Строка,Желтый Чайник 1С

Перед вставкой параметров проверяет существование параметра в шаблоне

# Код реализации

```1c
// @skip-check method-too-many-params
// Перед вставкой параметров проверяет существование параметра в шаблоне
// Источник: https://github.com/SeiOkami/CollectionMethodsOneS/issues/129
//
// Параметры:
//  Шаблон - Строка
//  Параметр1 - Произвольный
//  Параметр2 - Произвольный
//  Параметр3 - Произвольный
//  Параметр4 - Произвольный
//  Параметр5 - Произвольный
//  Параметр6 - Произвольный
//  Параметр7 - Произвольный
//  Параметр8 - Произвольный
//  Параметр9 - Произвольный
//  Параметр10 - Произвольный
//
// Возвращаемое значение:
//  Строка
Функция СтрШаблонБезопасно(Знач Шаблон, Знач Параметр1 = Неопределено,
	Знач Параметр2 = Неопределено, Знач Параметр3 = Неопределено, Знач Параметр4 = Неопределено,
	Знач Параметр5 = Неопределено, Знач Параметр6 = Неопределено, Знач Параметр7 = Неопределено,
	Знач Параметр8 = Неопределено, Знач Параметр9 = Неопределено, Знач Параметр10 = Неопределено) Экспорт

	ЗатеретьПараметрПриЕгоОтсутствииВШаблоне(Шаблон, Параметр1, 1);
	ЗатеретьПараметрПриЕгоОтсутствииВШаблоне(Шаблон, Параметр2, 2);
	ЗатеретьПараметрПриЕгоОтсутствииВШаблоне(Шаблон, Параметр3, 3);
	ЗатеретьПараметрПриЕгоОтсутствииВШаблоне(Шаблон, Параметр4, 4);
	ЗатеретьПараметрПриЕгоОтсутствииВШаблоне(Шаблон, Параметр5, 5);
	ЗатеретьПараметрПриЕгоОтсутствииВШаблоне(Шаблон, Параметр6, 6);
	ЗатеретьПараметрПриЕгоОтсутствииВШаблоне(Шаблон, Параметр7, 7);
	ЗатеретьПараметрПриЕгоОтсутствииВШаблоне(Шаблон, Параметр8, 8);
	ЗатеретьПараметрПриЕгоОтсутствииВШаблоне(Шаблон, Параметр9, 9);
	ЗатеретьПараметрПриЕгоОтсутствииВШаблоне(Шаблон, Параметр10, 10);

	Возврат СтрШаблон(Шаблон,
		Параметр1, Параметр2, Параметр3, Параметр4, Параметр5,
		Параметр6, Параметр7, Параметр8, Параметр9, Параметр10);

КонецФункции

// Затереть параметр при его отсутствии в шаблоне.
// Источник: https://github.com/SeiOkami/CollectionMethodsOneS/issues/129
//
// Параметры:
//  Шаблон - Строка
//  Параметр - Произвольный
//  Номер - Число
Процедура ЗатеретьПараметрПриЕгоОтсутствииВШаблоне(Знач Шаблон, Параметр, Знач Номер) Экспорт

	Если Параметр <> Неопределено И СтрНайти(Шаблон, "%" + Номер) = 0 Тогда
		Параметр = Неопределено;
	КонецЕсли;

КонецПроцедуры
```
Строка из символа
Теги: 1С,Строка,Желтый Чайник 1С

Возвращает строку нужной длины из указанного символа

# Код реализации

```1c
// Возвращает строку нужной длины из указанного символа
// Источник: https://github.com/SeiOkami/CollectionMethodsOneS/issues/120
//
// Параметры:
//  Длина - Число
//  Символ - Строка
//
// Возвращаемое значение:
//  Строка
Функция СтрокаСимволов(Знач Длина, Знач Символ = " ") Экспорт

	Квалификатор = Новый КвалификаторыСтроки(Длина, ДопустимаяДлина.Фиксированная);
	ОписаниеТипов = Новый ОписаниеТипов("Строка", Квалификатор);
	Результат = ОписаниеТипов.ПривестиЗначение(""); // Строка
	Если Символ <> " " Тогда
		Результат = СтрЗаменить(Результат, " ", Символ);
	КонецЕсли;

	Возврат Результат;

КонецФункции
```

# Примечания

- Функция СтрокаСимволов(Знач Длина, Знач Символ = " ") Экспорт
	
	Возврат СтрСоединить(Новый Массив(Длина+1),Символ);
	
КонецФункции
Проверить корректность шаблона для СтрШаблон()
Теги: 1С,Проверка,Шаблон,Формат,Строка,Желтый Чайник 1С

Проверяет шаблон строки на корректность для передачи в СтрШаблон()

# Код реализации

```1c
// Возвращает результат проверки корректности шаблона строки (метода СтрШаблон)
// Источник: https://github.com/SeiOkami/CollectionMethodsOneS/issues/12
//
// Параметры:
//  ШаблонСтроки - Строка
//
// Возвращаемое значение:
//  Булево - Корректен ли шаблон строки
Функция ШаблонСтрокиКорректен(Знач ШаблонСтроки) Экспорт

	Попытка
		ПроверитьШаблонСтроки(ШаблонСтроки);
		Возврат Истина;
	Исключение
		Возврат Ложь;
	КонецПопытки;

КонецФункции

// Проверяет корректность шаблона строки (метода СтрШаблон)
// Источник: https://github.com/SeiOkami/CollectionMethodsOneS/issues/12
//
// Параметры:
//  ШаблонСтроки - Строка
Процедура ПроверитьШаблонСтроки(Знач ШаблонСтроки) Экспорт

	СтрШаблон(ШаблонСтроки, Неопределено, Неопределено,
    	Неопределено, Неопределено, Неопределено, Неопределено,
    	Неопределено, Неопределено, Неопределено, Неопределено);

КонецПроцедуры
```
Найти подстроку и выделить оформлением
Теги: 1С,Оформление,Строка,Желтый Чайник 1С

Метод выделяет подстроку внутри подстроки с использованием метода см. СтрНайтиИВыделитьОформлением
Платформенный метод СтрНайтиИВыделитьОформлением() находит только с начала слова
Например, если искать "200", то в код элемента не будет выделен: "CNT-000**200**"

# Код реализации

```1c
// Метод выделяет подстроку внутри подстроки с использованием метода см. СтрНайтиИВыделитьОформлением
// Источник: https://github.com/SeiOkami/CollectionMethodsOneS/issues/3
//
// Параметры:
//  Строка - Строка - Исходная строка
//  Подстрока - Строка - Искомая строка
//
// Возвращаемое значение:
//  ФорматированнаяСтрока, Неопределено - вернет форматированную строку, если хотя бы одно вхождение найдено
Функция СтрокаНайтиИВыделитьОформлением(Знач Строка, Знач Подстрока) Экспорт

	СтрокаВрег = ВРег(Строка);
	ПодстрокаВрег = ВРег(Подстрока);

	ДлинаСтроки = СтрДлина(Строка);
	ДлинаПодстроки = СтрДлина(Подстрока);

	ЧастиРезультата = Новый Массив; // Массив из Строка, ФорматированнаяСтрока

	НачалоПоиска = 1;
	Пока НачалоПоиска <= ДлинаСтроки Цикл

		ТекущаяКоордината = СтрНайти(СтрокаВрег, ПодстрокаВрег, , НачалоПоиска);
		Если ТекущаяКоордината = 0 Тогда

			Если ЗначениеЗаполнено(ЧастиРезультата) Тогда
				ЧастьСтроки = Сред(Строка, НачалоПоиска);
				ЧастиРезультата.Добавить(ЧастьСтроки);
				Прервать;
			Иначе
				Возврат Неопределено;
			КонецЕсли;

		Иначе

			Если НачалоПоиска < ТекущаяКоордината Тогда
				ЧастьСтроки = Сред(Строка, НачалоПоиска, ТекущаяКоордината - НачалоПоиска);
				ЧастиРезультата.Добавить(ЧастьСтроки);
			КонецЕсли;

			ЧастьСтроки = Сред(Строка, ТекущаяКоордината, ДлинаПодстроки);
			ЧастьСтроки = СтрНайтиИВыделитьОформлением(ЧастьСтроки, Подстрока);
			ЧастиРезультата.Добавить(ЧастьСтроки);

			НачалоПоиска = ТекущаяКоордината + ДлинаПодстроки;

		КонецЕсли;

	КонецЦикла;

	Возврат Новый ФорматированнаяСтрока(ЧастиРезультата);

КонецФункции
```
Строка выделенная оформлением
Теги: 1С,Строка,Желтый Чайник 1С

Возвращает форматированную строку, в которой части выделены.
Например, "Выдели `слово` в предложении"

# Код реализации

```1c
// Возвращает форматированную строку, в которой части выделены.
// Например, "Выдели `слово` в предложении"
// Источник: https://github.com/SeiOkami/CollectionMethodsOneS/issues/4
//
// Параметры:
//  Строка - Строка
//  Выделитель - Строка - Символ, который обрамляет выделяемую строку
//
// Возвращаемое значение:
//  Строка
Функция СтрокаВыделеннаяОформлением(Знач Строка, Знач Выделитель = "`") Экспорт

	ЭтоВыделить = Ложь;
	ЧастиСтроки = СтрРазделить(Строка, Выделитель, Истина);
	Для Индекс = 0 По ЧастиСтроки.Количество() - 1 Цикл

		Если ЭтоВыделить Тогда
			ЧастьСтроки = ЧастиСтроки[Индекс];
			ЧастьСтроки = СтрНайтиИВыделитьОформлением(ЧастьСтроки, ЧастьСтроки);
			ЧастиСтроки[Индекс] = ЧастьСтроки;
			ЭтоВыделить = Ложь;
		Иначе
			ЭтоВыделить = Истина;
		КонецЕсли;

	КонецЦикла;

	Возврат Новый ФорматированнаяСтрока(ЧастиСтроки);

КонецФункции
```
Вставить параметры в строку
Теги: 1С,Строка,Желтый Чайник 1С

Заменяет в строке именованные параметры на значения свойств объекта (по формату %ИмяСвойства%)

# Код реализации

```1c
// Заменяет в строке именованные параметры на значения свойств объекта (по формату %ИмяСвойства%)
// Источник: https://github.com/SeiOkami/CollectionMethodsOneS/issues/1
//
// Параметры:
//  ШаблонСтроки - Строка - Строка, в которую необходимо всавить свойства объекта
//  Объект - Произвольный - Произвольный объект, свойства которого необходимо вставить в строку
//
// Возвращаемое значение:
//  Строка
Функция ВставитьПараметрыВСтроку(Знач ШаблонСтроки, Знач Объект) Экспорт

	Разделитель = "%";
	ЭтоПараметр = Ложь;
	ЧастиСтроки = СтрРазделить(ШаблонСтроки, Разделитель, Истина);
	Для Индекс = 0 По ЧастиСтроки.Количество() - 1 Цикл

		Если ЭтоПараметр Тогда
			ИмяСвойства = ЧастиСтроки[Индекс];
			Если ИмяСвойства = "" Тогда //Экранирование символа разделителя
				ЗначениеСвойства = Разделитель;
			Иначе
				ЗначениеСвойства = Строка(Объект[ИмяСвойства]);
			КонецЕсли;
			ЧастиСтроки[Индекс] = ЗначениеСвойства;
			ЭтоПараметр = Ложь;
		Иначе
			ЭтоПараметр = Истина;
		КонецЕсли;

	КонецЦикла;

	Возврат СтрСоединить(ЧастиСтроки, "");

КонецФункции
```