6 новых функций, которые не следует использовать в режиме совместимости
Разработка - Универсальные функции
Реализовано в версии 8.3.6.1977.
"Мы расширили набор функций, предназначенных для работы со строками. Мы это сделали для того, чтобы дать вам более развитые инструменты для разбора строковых данных. Новые функции будут удобны и полезны в технологических задачах анализа текста. В задачах, связанных с разбором текста, который содержит данные в форматированном виде. Это может быть анализ каких-то файлов, полученных от оборудования, или, например, анализ технологического журнала.Все действия, которые выполняют новые функции, вы могли выполнять и раньше. С помощью более или менее сложных алгоритмов, написанных на встроенном языке. Поэтому новые функции не дают вам каких-то принципиально новых возможностей. Однако они позволяют сократить количество кода, сделать код более простым и понятным. А кроме этого они позволяют ускорить выполнение действий. Потому что функции, реализованные в платформе, работают, конечно же, быстрее, чем аналогичный алгоритм, написанный на встроенном языке."
Функции на самом деле удобны и помогают разработчикам в решении повседневных задач, но их нельзя использовать в режиме совместимости. Поэтому придется еще немного подождать, когда уже все потихоньку перейдут на последнии версии платформы, и можно будет не задумываясь использовать нововведения и радоваться жизни.
Когда пишете на "своих" конфигурациях, тогда можно делать что душе угодно, но когда разработка идет в "чужую" конфигурацию - стоит задуматься каким путем пойти:
- Использовать новые функции и обязать заказчика перейти на свежую платформу
- Сделать проверку текущей версии платформы и использовать новые функции и старые механизмы работы
- Использовать только старые механизмы работы
По второму - идеальный вариант, но не каждый разработчик будет перед каждым вызовом новой функции строить городульки чтобы узнать версию платформы. Хотя данный вариант имеет право на жизнь.

Функция работы со строками СтрНайти(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>)
Функция выполняет поиск подстроки в различных направлениях и не только с начала строки.
Сообщить(СтрНайти("2212","1")); //вернет 3
В режиме совместимости 8.3.5 и ниже возникает ошибка
{ВнешняяОбработка.ВнешняяОбработка1.МодульОбъекта(1,10)}: Процедура или функция с указанным именем не определена (СтрНайти)
Сообщить(<<?>>СтрНайти("1","2212"));
Остается довольствоваться тем, что имеем
Сообщить(Найти("2212","1")); //вернет 3
меньше возможностей, но не вылетает с ошибкой
Функция Найти() осталась только для совместимости с 8.3.5 и в дальнейшем ожидаем, что ее не станет.
Функция работы со строками СтрШаблон(<Шаблон>, <Значение1-Значение10>)
Функция выполняет замену маркеров подстановки (вида %1) в шаблонной строке на реальные значения.
Сообщить(СтрШаблон("ПРИВЕТ %1 ","МИР!!!")); //вернет ПРИВЕТ МИР!!!
В режиме совместимости возникает ошибка
{ВнешняяОбработка.ВнешняяОбработка1.МодульОбъекта(3,10)}: Процедура или функция с указанным именем не определена (СтрШаблон)
Сообщить(<<?>>СтрШаблон("Ошибка в строке "" %1 ""","МояСтрока"));
Функция работы со строками СтрСравнить(<Строка1>, <Строка2>)
Функция выполняет лексикографическое сравнение строк без учета регистра.
Сообщить(СтрСравнить("Первая строка", "Вторая строка")); //вернет 1
Возникающая ошибка
{ВнешняяОбработка.ВнешняяОбработка1.МодульОбъекта(5,10)}: Процедура или функция с указанным именем не определена (СтрСравнить)
Сообщить(<<?>>СтрСравнить("Первая строка", "Вторая строка"));
Но можно сделать по-другому
Сравнение = Новый СравнениеЗначений;
Сообщить(Сравнение.Сравнить("Первая строка", "Вторая строка"));
Функция работы со строками СтрНачинаетсяС(<Строка>,<СтрокаПоиска>)
Функция проверяет, что строка начинается на подстроку.
СтрокаПоиска = "http://";
ЭтоВеб = СтрНачинаетсяС("http://google.com", СтрокаПоиска);
Сообщить(ЭтоВеб);//вернет Истина
Возникает ошибка
{ВнешняяОбработка.ВнешняяОбработка1.МодульОбъекта(22,10)}: Процедура или функция с указанным именем не определена (СтрНачинаетсяС)
Сообщить(<<?>>СтрНачинаетсяС("http://google.com", "http://"));
Но можно сделать по-старому
СтрокаПоиска = "http://";
Сообщить(Лев("http://google.com",СтрДлина(СтрокаПоиска))=СтрокаПоиска); //вернет истина
Функция работы со строками СтрЗаканчиваетсяНа(<Строка>, <СтрокаПоиска>)
Функция проверяет, что строка оканчивается подстрокой.
СтрокаПоиска = "@mail.ru";
ЭтоМайлРу = СтрЗаканчиваетсяНа("vasya_pupkin@mail.ru", СтрокаПоиска);
Сообщить(ЭтоМайлРу);//вернет Истина
Возникает ошибка
{ВнешняяОбработка.ВнешняяОбработка1.МодульОбъекта(22,10)}: Процедура или функция с указанным именем не определена (СтрНачинаетсяС)
Сообщить(<<?>>СтрНачинаетсяС("http://google.com", "http://"));
Но можно сделать по-другому
СтрокаПоиска = "@mail.ru";
Сообщить(Прав("vasya_pupkin@mail.ru",СтрДлина(СтрокаПоиска))=СтрокаПоиска); //вернет истина
Функция работы со строками СтрРазделить(<Строка>,<Разделитель>,<ВключатьПустые>)
Функция работы со строками СтрСоединить(<Строки>, <Разделитель>)
Функция СтрРазделить() разделяет строку на части по указанному разделителю.
Функция СтрСоединить() соединяет строки из массива подстрок.
Массив = СтрРазделить("1,2,3,4,5,6,7,8,9,,10",",",Ложь);//вернет массив
Строка = СтрСоединить(Массив,",")//вернет 1,2,3,4,5,6,7,8,9,10
Удобные функции, но возникает ошибка
{(1,10)}: Процедура или функция с указанным именем не определена (СтрРазделить)
Массив = <<?>>СтрРазделить("1,2,3,4,5,6,7,8,9,,10",",",Ложь);//вернет массив
{(2,10)}: Процедура или функция с указанным именем не определена (СтрСоединить)
Строка = <<?>>СтрСоединить(Массив,",")//вернет 1,2,3,4,5,6,7,8,9,10
Если вы уверены, что разработка будет использоваться на платформе выше 8.3.6.1977, то можете смело использовать все нововведения, иначе придется работать по старинке.
Вступайте в нашу телеграмм-группу Инфостарт
функции работы со строками СтрРазделить СтрСоединить СтрЗаканчиваетсяНа СтрНачинаетсяС СтрСравнить СтрШаблон СтрНайти
Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
См. также
Универсальные функции 1С 8.3 1С:Документооборот Россия Платные (руб)
ДО+ — расширение конфигурации, в котором собран постоянно пополняемый набор из 33 востребованных доработок для 1С:Документооборот КОРП 3.0: согласование задач прямо из мессенджеров MAX и Telegram, отзыв согласования и исполнения, гибкие повторные круги, эскалация с точностью до минут, контроль исполнительской дисциплины, выгрузка вложений в ZIP и склейка PDF, реестр документов в Excel, проверка дублей контрагентов и регистрационных номеров. Каждая возможность активируется отдельным флажком в режиме предприятия — включается только то, что нужно конкретной организации. Список функций расширяется с каждым релизом — текущая версия 2.1.0. Режим AddOn: типовая конфигурация не модифицируется, обновления ДО ставятся штатно, дополнительные лицензии и внешние компоненты не требуются. Внедрение силами администратора — около часа.
30000 руб.
09.07.2026 1399 1 0
Загрузка и выгрузка в Excel Универсальные функции Разработчик 1С:Предприятие 8 Россия Бесплатно (free)
Описанный ниже подход позволяет в три шага заполнять формулы в Excel файлы, вне зависимости от ОС сервера (MS Windows Server или Linux). Подход подразумевает отказ от работы с COM-объектом в пользу работы через "объектную модель документа" (DOM).
30.10.2025 8740 Abysswalker 11
Универсальные функции Работа с интерфейсом Разработчик 1С:Предприятие 8 Бесплатно (free)
Порой необходимо временно отключить расширение 1С, не удаляя его, чтобы не потерять данные. Но в этом случае при каждом запуске всем будет лезть уведомление о неактивном расширении, хотя очевидно, это техническая информация, которой не стоит лишний раз пугать пользователей.
14.05.2025 14480 DeerCven 16
Инструментарий разработчика Универсальные функции Запросы Разработчик 1С:Предприятие 8 1C:Бухгалтерия 1С:Бухгалтерия 3.0 1С:Зарплата и Управление Персоналом 3.x Бесплатно (free)
Внешняя обработка для создания запроса на основании табличных данных.
22.07.2024 11953 276 ixijixi 10
Универсальные функции Разработчик 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)
Благодаря этим пяти строчкам можно больше не заморачиваться с загрузкой из внешних файлов. Пользуюсь везде, всегда и постоянно.
21.05.2024 68746 dimanich70 87
Универсальные функции Разработчик 1С:Предприятие 8 1C:Бухгалтерия Абонемент ($m)
Задача: вставить картинку из буфера обмена на форму средствами платформы 1С.
1 стартмани
18.03.2024 9285 7 John_d 13
Универсальные функции Разработчик Стажер 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)
Пришлось помучиться с GUID-ами немного, решил поделиться опытом, мало ли кому пригодится.
12.02.2024 85787 atdonya 31
Универсальные функции Разработчик 1С:Предприятие 8 Бесплатно (free)
На заключительных этапах, когда идет отладка или доработка интерфейса, необходимо много раз переоткрыть внешний объект. Вот один из способов автоматизации этого.
30.11.2023 13476 ke.92@mail.ru 18
На текущий момент весь модуль СтроковыеФункцииКлиентСервер в БСП 2.3 оставлен без изменений для совместимости.
Когда пишешь для "чужих" тогда нужно либо обязать их перейти на новую платформу, либо использовать старые механизмы работы.
Когда пишете на "своих" конфигурациях, тогда можно делать что душе угодно, но когда разработка идет в "чужую" конфигурацию - стоит задуматься каким путем пойти:
1) Использовать новые функции и обязать заказчика перейти на свежую платформу
2) Сделать проверку текущей версии платформы и использовать новые функции и старые механизмы работы
3) Использовать только старые механизмы работы
По первому пункту - как повезет, не всегда заказчик будет гореть желанием перейти на новую платформу по своим причинам и отговоркам коих найдется не один десяток.
По второму - идеальный вариант, но не каждый разработчик будет перед каждым вызовом новой функции строить городульки чтобы узнать версию платформы. Хотя данный вариант имеет право на жизнь.
И по третьему - самый оптимальный (мое субъективное мнение) гораздо проще второго варианта, но уступает первому в том что не помогает продвижению новых платформ в массы
(3) AlexanderKai, этот вариант не работает. Ругается на то что данной функции вообще нет.(7)
denis_aka_wolf, статью поправь, второй вариант не рабочий.
Если добавишь строчку
СистемнаяИнформация = Новый СистемнаяИнформация;
то заработает.
СистемнаяИнформация = Новый СистемнаяИнформация;
Если СистемнаяИнформация.ВерсияПриложения = "8.3.6.1977" тогда
Сообщить(СтрНайти("2212","1")); //вернет 3
Иначе
Сообщить(СтроковыеФункцииКлиентСервер.НайтиСимволСКонца("2212","1"));
КонецЕсли;
Такой код все равно работать не будет!
Системное перечисление НаправлениеПоиска в режиме совместимости отсутствует.
Познавательная статья - теперь я знаю, что Капитана Очевидность зовут Денис.
На текущий момент весь модуль СтроковыеФункцииКлиентСервер в БСП 2.3 оставлен без изменений для совместимости.
СтрРазделить
Массив = Новый Массив();
Строка = "1,2,3,4,5,6,7,8,9,,10";
Разделитель = ",";
Символ = Найти(Строка, Разделитель);
Пока Символ > 0 Цикл
Если СтрДлина(Лев(Строка, Символ - 1)) > 0 Тогда
МассивЗначений.Добавить(Лев(Строка, Символ - 1));
КонецЕсли;
Строка = Прав(Строка, СтрДлина(Строка) - Символ);
Символ = Найти(Строка, Разделитель);
КонецЦикла;
Если СтрДлина(Строка) > 0 Тогда
МассивЗначений.Добавить(Строка);
КонецЕсли; ПоказатьСтрСоединить
Строка = "";
Для каждого Элемент Из Массив Цикл
Строка = Строка + СокрЛП(Элемент) + ",";
КонецЦикла;P.S.: новые функции конечно гораздо удобнее. Спасибо за обзор - ведь сюда "лазишь" чаще чем в Зазеркалье ;)
Функция СтрРазделить(Строка, Разделитель, ВключатьПустые = Ложь)
МассивЗначений = Новый Массив();
Символ = Найти(Строка, Разделитель);
Пока Символ > 0 Цикл
Если ВключатьПустые или (СтрДлина(Лев(Строка, Символ - 1)) > 0) Тогда
МассивЗначений.Добавить(Лев(Строка, Символ - 1));
КонецЕсли;
Строка = Прав(Строка, СтрДлина(Строка) - Символ);
Символ = Найти(Строка, Разделитель);
КонецЦикла;
Если (ВключатьПустые или СтрДлина(Строка) > 0) Тогда
МассивЗначений.Добавить(Строка);
КонецЕсли;
Возврат МассивЗначений;
КонецФункции
ПоказатьВроде работает. Поправьте, если где накосячил.
Функция СтрСоединить(Массив, Разделитель="")
Строка = "";
Для каждого Элемент Из Массив Цикл
Строка = Строка + СокрЛП(Элемент) + Разделитель;
КонецЦикла;
Возврат Строка;
КонецФункции
ПоказатьНе верю.
В замере производительности есть флажок "Включать для функций время выполнения" - вы его ставили?
Функция СтрНайти82 (ИсходнаяСтрока, ИскомаяСтрока, НаправлениеПоиска = "СНачала", НачальнаяПозиция = Неопределено, НомерВхождения = 1) Экспорт
Если СтрДлина(ИскомаяСтрока)>СтрДлина(ИсходнаяСтрока) ИЛИ СтрДлина(ИсходнаяСтрока) = 0 Тогда
Возврат 0;
КонецЕсли;
Если НаправлениеПоиска = "СНачала" ИЛИ НаправлениеПоиска = Неопределено Тогда
Если НачальнаяПозиция = Неопределено Тогда
НачальнаяПозиция = 1;
ИначеЕсли НачальнаяПозиция > СтрДлина(ИсходнаяСтрока) Тогда
ВызватьИсключение ("Неправильный параметр: Начальная позиция");
КонецЕсли;
//Выполнить Поиск
Результат = 0;
ВременнаяСтрока = Прав(ИсходнаяСтрока, СтрДлина(ИсходнаяСтрока)-(НачальнаяПозиция-1));
Для Индекс = 1 По НомерВхождения Цикл
ВременныйРезультат = Найти(ВременнаяСтрока, ИскомаяСтрока);
Если ВременныйРезультат Тогда
Результат = Результат + ВременныйРезультат ;
ВременнаяСтрока = Прав(ВременнаяСтрока, (СтрДлина(ВременнаяСтрока) - ВременныйРезультат - (СтрДлина(ИскомаяСтрока)-1)));
//Сообщить ("Вхождение " + Индекс + ": " + (Результат));
Иначе
//Сообщить("Требуемое вхождение не найдено");
Возврат 0;
КонецЕсли;
Если Индекс < НомерВхождения Тогда
Результат = Результат + СтрДлина(ИскомаяСтрока)-1;
КонецЕсли;
КонецЦикла;
Возврат Результат+НачальнаяПозиция-1;
ИначеЕсли НаправлениеПоиска = "СКонца" Тогда //Ищем с конца
Если НачальнаяПозиция = Неопределено Тогда
НачальнаяПозиция = СтрДлина(ИсходнаяСтрока);
ИначеЕсли НачальнаяПозиция > СтрДлина(ИсходнаяСтрока) ИЛИ НачальнаяПозиция < 1 Тогда
ВызватьИсключение("Неправильный параметр: НачальнаяПозиция");
КонецЕсли;
//ВыполнитьПоиск
Результат = 0;
ВременнаяСтрока = Лев(ИсходнаяСтрока, НачальнаяПозиция +1);
Вхождения = Новый Массив;
Пока Истина Цикл
ВременныйРезультат = Найти(ВременнаяСтрока, ИскомаяСтрока);
Если ВременныйРезультат Тогда
Результат = Результат + ВременныйРезультат;
Вхождения.Добавить(Результат);
ВременнаяСтрока = Прав(ВременнаяСтрока, (СтрДлина(ВременнаяСтрока) - ВременныйРезультат - (СтрДлина(ИскомаяСтрока)-1)));
//Сообщить ("Вхождение " + Индекс + ": " + (Результат));
Результат = Результат + СтрДлина(ИскомаяСтрока)-1;
Иначе
//Сообщить("Требуемое вхождение не найдено");
Прервать;
КонецЕсли;
КонецЦикла;
Если Вхождения.Количество()<НомерВхождения Тогда
//Вхождение не найдено
Возврат 0;
Иначе
Возврат Вхождения[(Вхождения.Количество()-НомерВхождения)]
КонецЕсли;
Иначе
ВызватьИсключение("Неправильный параметр: НаправлениеПоиска. Опции: ""СНачала"", ""СКонца""");
КонецЕсли;
КонецФункции ПоказатьФункция СтрНайти82(Знач Строка,Знач ПодстрокаПоиска,Знач НаправлениеПоискаСКонца = Ложь, Знач НачальнаяПозиция = Неопределено,Знач НомерВхождения = 1)
ТекущаяПозиция = 0;
ЗнакНаправленияДвижения = 0;
ДлинаСтрПоиска = СтрДлина(ПодстрокаПоиска);
Попытка
Если НЕ НачальнаяПозиция = Неопределено Тогда
НачальнаяПозиция = Число(НачальнаяПозиция);
Если НачальнаяПозиция <= 0 ИЛИ НачальнаяПозиция > СтрДлина(Строка) Тогда
ВызватьИсключение ("");
КонецЕсли;
КонецЕсли;
Исключение
ВызватьИсключение("Недопустимое значение параметра (параметр номер '4')");
КонецПопытки;
Если НаправлениеПоискаСКонца Тогда
НачальнаяПозиция = ?(НЕ НачальнаяПозиция = Неопределено, НачальнаяПозиция,СтрДлина(Строка));
ЗнакНаправленияДвижения = -1;
Иначе
НачальнаяПозиция = ?(НЕ НачальнаяПозиция = Неопределено, НачальнаяПозиция,1);
ЗнакНаправленияДвижения = 1;
КонецЕсли;
Пока Истина
И НЕ НомерВхождения = 0
И ((НЕ НаправлениеПоискаСКонца И НачальнаяПозиция <= СтрДлина(Строка))
ИЛИ (НаправлениеПоискаСКонца И НачальнаяПозиция >= 0)) Цикл
Позиция = Найти(Сред(Строка,НачальнаяПозиция, ДлинаСтрПоиска),ПодстрокаПоиска);
Если Позиция Тогда
ТекущаяПозиция = НачальнаяПозиция;
НачальнаяПозиция = ТекущаяПозиция + ДлинаСтрПоиска * ЗнакНаправленияДвижения;
НомерВхождения = НомерВхождения - 1;
Иначе
НачальнаяПозиция = НачальнаяПозиция + 1 * ЗнакНаправленияДвижения;
КонецЕсли;
КонецЦикла;
Если НомерВхождения Тогда
ТекущаяПозиция = 0;
КонецЕсли;
Возврат ТекущаяПозиция;
КонецФункции
ПоказатьФункция СтрНайтиЛкс(Знач Строка,Знач ПодстрокаПоиска,Знач НаправлениеПоискаСКонца = Ложь, Знач НачальнаяПозиция = Неопределено,Знач НомерВхождения = 1) Экспорт
ТекущаяПозиция = 0;
ЗнакНаправленияДвижения = 0;
ДлинаСтрПоиска = СтрДлина(ПодстрокаПоиска);
Попытка
Если НачальнаяПозиция <> Неопределено Тогда
НачальнаяПозиция = Число(НачальнаяПозиция);
Если НачальнаяПозиция <= 0 ИЛИ НачальнаяПозиция > СтрДлина(Строка) Тогда
ВызватьИсключение ("");
КонецЕсли;
КонецЕсли;
Исключение
ВызватьИсключение("Недопустимое значение параметра (параметр номер '4')");
КонецПопытки;
Если НаправлениеПоискаСКонца Тогда
НачальнаяПозиция = ?(НачальнаяПозиция <> Неопределено, НачальнаяПозиция, СтрДлина(Строка));
ЗнакНаправленияДвижения = -1;
Иначе
НачальнаяПозиция = ?(НачальнаяПозиция <> Неопределено, НачальнаяПозиция, 1);
ЗнакНаправленияДвижения = 1;
КонецЕсли;
// Пассивный оригинал расположенного ниже однострочного кода. Выполняйте изменения синхронно в обоих вариантах.
#Если Сервер И Не Сервер Тогда
Пока Истина
И НомерВхождения <> 0
И (Ложь
Или (Истина
И Не НаправлениеПоискаСКонца
И НачальнаяПозиция <= СтрДлина(Строка))
Или (Истина
И НаправлениеПоискаСКонца
И НачальнаяПозиция >= 0))
Цикл
Позиция = Найти(Сред(Строка, НачальнаяПозиция, ДлинаСтрПоиска), ПодстрокаПоиска);
Если Позиция Тогда
ТекущаяПозиция = НачальнаяПозиция;
НачальнаяПозиция = ТекущаяПозиция + ДлинаСтрПоиска * ЗнакНаправленияДвижения;
НомерВхождения = НомерВхождения - 1;
Иначе
НачальнаяПозиция = НачальнаяПозиция + 1 * ЗнакНаправленияДвижения;
КонецЕсли;
КонецЦикла;
#КонецЕсли
// Однострочный код использован для ускорения. Выше расположен оригинал. Выполняйте изменения синхронно в обоих вариантах. Преобразовано консолью кода из подсистемы "Инструменты разработчика" (
Пока Истина И НомерВхождения <> 0 И (Ложь Или (Истина И Не НаправлениеПоискаСКонца И НачальнаяПозиция <= СтрДлина(Строка)) Или (Истина И НаправлениеПоискаСКонца И НачальнаяПозиция >= 0)) Цикл Позиция = Найти(Сред(Строка, НачальнаяПозиция, ДлинаСтрПоиска), ПодстрокаПоиска); Если Позиция Тогда ТекущаяПозиция = НачальнаяПозиция; НачальнаяПозиция = ТекущаяПозиция + ДлинаСтрПоиска * ЗнакНаправленияДвижения; НомерВхождения = НомерВхождения - 1; Иначе НачальнаяПозиция = НачальнаяПозиция + 1 * ЗнакНаправленияДвижения; КонецЕсли; КонецЦикла;
Если НомерВхождения Тогда
ТекущаяПозиция = 0;
КонецЕсли;
Возврат ТекущаяПозиция;
КонецФункции
ПоказатьНа дворе 2018 год. В УПП режим совместимости с 8.2.13 не снять ибо не работает она в режиме совместимости 8.3. Ни с того ни с его вылезла указанная ошибка. Платформа 8.3.7.1873
Пришлось править конфу на "устаревшие решения"
Чистка кеша не помогла
Функция СтрСоединить(пМассивСтрок, пРазделитель = ",") Экспорт
лРезультат = "";
Для Каждого ЭлМассива Из пМассивСтрок Цикл
лРезультат = лРезультат + СокрЛП(ЭлМассива) + пРазделитель;
КонецЦикла;
лДлинаРезультата = СтрДлина(лРезультат) - СтрДлина(пРазделитель);
Если лДлинаРезультата > 0 Тогда
лРезультат = Лев(лРезультат, лДлинаРезультата);
КонецЕсли;
Возврат лРезультат;
КонецФункции
Функция СтрРазделить(пСтрока = "", пРазделитель = ",", пВключатьПустые = Ложь) Экспорт
лМассивЗначений = Новый Массив();
лНайденныйРазделитель = Найти(пСтрока, пРазделитель);
Пока лНайденныйРазделитель > 0 Цикл
Если пВключатьПустые ИЛИ (СтрДлина(Лев(пСтрока, лНайденныйРазделитель - 1)) > 0) Тогда
лМассивЗначений.Добавить(Лев(пСтрока, лНайденныйРазделитель - 1));
КонецЕсли;
пСтрока = Прав(пСтрока, СтрДлина(пСтрока) - лНайденныйРазделитель);
лНайденныйРазделитель = Найти(пСтрока, пРазделитель);
КонецЦикла;
Если (пВключатьПустые ИЛИ СтрДлина(пСтрока) > 0) Тогда
лМассивЗначений.Добавить(пСтрока);
КонецЕсли;
Возврат лМассивЗначений;
КонецФункции
Функция СтрНачинаетсяС(пСтрока, пСтрокаПоиска) Экспорт
Возврат Лев(пСтрока, СтрДлина(пСтрокаПоиска))= пСтрокаПоиска;
КонецФункции
Функция СтрЗаканчиваетсяНа(пСтрока, пСтрокаПоиска) Экспорт
Возврат Прав(пСтрока, СтрДлина(пСтрокаПоиска))= пСтрокаПоиска;
КонецФункции
ПоказатьЧасть функций уже есть в БСП (РазложитьСтрокуВМассивПодстрок, СтрокаИзМассиваПодстрок, ПодставитьПараметрыВСтроку), можете взять оттуда. Реализацию остальных функций смотрите выше в комментариях выше
Функция СтрокаНачинаетсяС(ГдеИскать, ЧтоИскать)
РазмерИскомого = СтрДлина(ЧтоИскать);
Возврат ЧтоИскать = Лев(ГдеИскать, РазмерИскомого);
КонецФункции
Функция СтрокаЗаканчиваетсяНа(ГдеИскать, ЧтоИскать)
РазмерИскомого = СтрДлина(ЧтоИскать);
Возврат ЧтоИскать = Прав(ГдеИскать, РазмерИскомого);
КонецФункции
Функция СтрокаШаблон(Знач СтрокаПодстановки,
Знач Параметр1, Знач Параметр2 = Неопределено, Знач Параметр3 = Неопределено,
Знач Параметр4 = Неопределено, Знач Параметр5 = Неопределено, Знач Параметр6 = Неопределено,
Знач Параметр7 = Неопределено, Знач Параметр8 = Неопределено, Знач Параметр9 = Неопределено) Экспорт
СтрокаПодстановки = СтрЗаменить(СтрокаПодстановки, "%1", Параметр1);
СтрокаПодстановки = СтрЗаменить(СтрокаПодстановки, "%2", Параметр2);
СтрокаПодстановки = СтрЗаменить(СтрокаПодстановки, "%3", Параметр3);
СтрокаПодстановки = СтрЗаменить(СтрокаПодстановки, "%4", Параметр4);
СтрокаПодстановки = СтрЗаменить(СтрокаПодстановки, "%5", Параметр5);
СтрокаПодстановки = СтрЗаменить(СтрокаПодстановки, "%6", Параметр6);
СтрокаПодстановки = СтрЗаменить(СтрокаПодстановки, "%7", Параметр7);
СтрокаПодстановки = СтрЗаменить(СтрокаПодстановки, "%8", Параметр8);
СтрокаПодстановки = СтрЗаменить(СтрокаПодстановки, "%9", Параметр9);
Возврат СтрокаПодстановки;
КонецФункции
Функция СтрокаРазделить(Знач Строка, Знач Разделитель = ",", Знач ПропускатьПустыеСтроки = Неопределено, СокращатьНепечатаемыеСимволы = Ложь) Экспорт
Результат = Новый Массив;
// Для обеспечения обратной совместимости.
Если ПропускатьПустыеСтроки = Неопределено Тогда
ПропускатьПустыеСтроки = ?(Разделитель = " ", Истина, Ложь);
Если ПустаяСтрока(Строка) Тогда
Если Разделитель = " " Тогда
Результат.Добавить("");
КонецЕсли;
Возврат Результат;
КонецЕсли;
КонецЕсли;
//
Позиция = Найти(Строка, Разделитель);
Пока Позиция > 0 Цикл
Подстрока = Лев(Строка, Позиция - 1);
Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Подстрока) Тогда
Если СокращатьНепечатаемыеСимволы Тогда
Результат.Добавить(СокрЛП(Подстрока));
Иначе
Результат.Добавить(Подстрока);
КонецЕсли;
КонецЕсли;
Строка = Сред(Строка, Позиция + СтрДлина(Разделитель));
Позиция = Найти(Строка, Разделитель);
КонецЦикла;
Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Строка) Тогда
Если СокращатьНепечатаемыеСимволы Тогда
Результат.Добавить(СокрЛП(Строка));
Иначе
Результат.Добавить(Строка);
КонецЕсли;
КонецЕсли;
Возврат Результат;
КонецФункции
Функция СтрокаСоединить(Массив, Разделитель = ",", СокращатьНепечатаемыеСимволы = Ложь) Экспорт
Результат = "";
Для Индекс = 0 По Массив.ВГраница() Цикл
Подстрока = Массив[Индекс];
Если СокращатьНепечатаемыеСимволы Тогда
Подстрока = СокрЛП(Подстрока);
КонецЕсли;
Если ТипЗнч(Подстрока) <> Тип("Строка") Тогда
Подстрока = Строка(Подстрока);
КонецЕсли;
Если Индекс > 0 Тогда
Результат = Результат + Разделитель;
КонецЕсли;
Результат = Результат + Подстрока;
КонецЦикла;
Возврат Результат;
КонецФункции
Функция СтрокаНайти(ГдеИскать, ЧтоИскать)
Возврат Найти(ГдеИскать, ЧтоИскать);
КонецФункции
ПоказатьВ модуле ругалось на:
ПозицияПоследнегоСлеша = СтрНайти(СтруктураURL.Путь, "/", НаправлениеПоиска.СКонца);Нашел аналог в БСП
СтроковыеФункцииКлиентСервер.НайтиСимволСКонца(СтруктураURL.Путь,"/");Минимум правки модуля, работает так же.
Вы можете заказать платную консультацию или разработку у автора. Будет создан приватный заказ на «Бирже заказов» для автора.
№ 366865
Создание 10.06.15 16:20
Обновление 10.06.15 16:20
Просмотры 105471
Загрузки 0
Рейтинг
63
Комментарии 64
Код открыт Не указано
Рубрики Универсальные функции
Кому Разработчик
Тип файла Нет файла
Платформа 1С:Предприятие 8
Конфигурация 1C:Бухгалтерия
Операционная система Не имеет значения
Страна Не имеет значения
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Бесплатно (free)
- сравнение производительности функции СтрШаблон по сравнению с СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку