Функция СтрШаблон с именованными маркерами

Публикация № 1142210

Разработка - Универсальные функции

СтрШаблон Шаблон Строки Строка

Функция позволяет задавать именованные маркеры формата [Имя], в отличии от типовых нумерованных формата %n

Преимущества по сравнению с типовой функцией СтрШаблон:
- Код вызова функции проще для восприятия за счет именованных маркеров и параметров.
- Устойчива к перестановкам параметров, к вставкам между параметрами, т.к. сопоставление выполняется по именам, а не по порядку.

Пример использования:

Текст = СтрШаблон_("Заказано товаров на сумму [Сумма] в количестве [Колво]",
  "Сумма", 2500, "Колво", 100);

Функция:

Функция СтрШаблон_(Шаблон, 
  п11="", п12="", п21="", п22="", п31="", п32="", п41="", п42="", п51="", п52="",
  п61="", п62="", п71="", п72="", п81="", п82="", п91="", п92="", п101="", п102="",
  п111="", п112="", п121="", п122="", п131="", п132="", п141="", п142="", п151="", п152="") экспорт
	     
	Результат = Шаблон;
	
	Для сч = 1 по 15 Цикл
		ИмяПараметра = Вычислить("п"+сч+"1");
		Маркер = "["+ИмяПараметра+"]";
		
		Если ИмяПараметра = "" Тогда
			Прервать; 
		ИначеЕсли СтрНайти(Результат, Маркер) = 0 Тогда
			ВызватьИсключение СтрШаблон("Не найден маркер %1 в шаблоне ""%2""", Маркер, Шаблон);
		Иначе	
			Результат = СтрЗаменить(Результат, Маркер, Вычислить("п"+сч+"2"));
		КонецЕсли;
		
	КонецЦикла;
	
	// Лишние маркеры удаляем
	Пока Истина Цикл
		Начало = СтрНайти(Результат, "[");
		Конец = СтрНайти(Результат, "]");
		
		Если Начало=0 ИЛИ Конец=0 ИЛИ Начало>Конец Тогда
			Прервать;
		КонецЕсли;
		
		Результат = Лев(Результат,Начало-1) + Сред(Результат,Конец+1);
	КонецЦикла;
	
	Возврат Результат;
	
КонецФункции

 

 
 Функция на RegExp (не нашел сценариев, где RegExp дал бы здесь прирост по сравнению с кодом 1С)

 

 
 Юнит-тесты под Vanessa-ADD 6.4.0

Специальные предложения

Лучшие комментарии
8. v77 148 22.10.19 10:29 Сейчас в теме
А что если так?

&НаКлиенте
Процедура Команда1(Команда)
	СуммаДолга = 100500;
	Имя = "Петр Петрович";
	ВВ = Вычислить(F("Приветонище, {Имя}. Ваш долг {СуммаДолга} руб."));
	Сообщить(ВВ);
КонецПроцедуры

&НаКлиенте
Функция F(Стр)
	Стр = СтрЗаменить(Стр,"{",Символы.ПС+"^");	
	Стр = СтрЗаменить(Стр,"}",Символы.ПС);
	Стр = СтрРазделить(Стр,Символы.ПС);
	Результат = """""";
	Для Каждого Ст Из Стр Цикл
		Если СтрНачинаетсяС(Ст,"^") Тогда
			Результат = Результат + "+" + Сред(Ст,2,СтрДлина(Ст));	
		Иначе
			Результат = Результат + "+""" + Ст + """";
		КонецЕсли;
	КонецЦикла;
	Возврат Результат;
КонецФункции
Показать
Остальные комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. WalterMort 326 21.10.19 17:47 Сейчас в теме
Однако в коде своего шаблона, автор использует платформенный СтрШаблон, хотя мог использовать и свой.
TMV; kirinalex; tnaiko; +3 Ответить
7. kirinalex 2 21.10.19 21:03 Сейчас в теме
(1) возникает нехороший эффект из за удаления лишних маркеров
нужно будет экранирование квадратных скобок прикрутить
17. dhurricane 22.10.19 14:13 Сейчас в теме
(1) Кстати, действительно еще можно было бы сделать незамысловатую обертку для встроенной функции :)
Функция СтрШаблон_(Знач Шаблон, 
		п11="", п12="", п21="", п22="", п31="", п32="", п41="", п42="", п51="", п52="",
		п61="", п62="", п71="", п72="", п81="", п82="", п91="", п92="", п101="", п102="") экспорт
					
	Шаблон = СтрЗаменить(Шаблон, "["+п11+"]", "%1");
	Шаблон = СтрЗаменить(Шаблон, "["+п21+"]", "%2");
	Шаблон = СтрЗаменить(Шаблон, "["+п31+"]", "%3");
	Шаблон = СтрЗаменить(Шаблон, "["+п41+"]", "%4");
	Шаблон = СтрЗаменить(Шаблон, "["+п51+"]", "%5");
	Шаблон = СтрЗаменить(Шаблон, "["+п61+"]", "%6");
	Шаблон = СтрЗаменить(Шаблон, "["+п71+"]", "%7");
	Шаблон = СтрЗаменить(Шаблон, "["+п81+"]", "%8");
	Шаблон = СтрЗаменить(Шаблон, "["+п91+"]", "%9");
	Шаблон = СтрЗаменить(Шаблон, "["+п101+"]", "%10");
	
	Возврат СтрШаблон(Шаблон, п12, п22, п32, п42, п52, п62, п72, п82, п92, п102);
	
КонецФункции
Показать
18. kirinalex 2 22.10.19 15:10 Сейчас в теме
(17) интересное решение, если не учитывать что в таком виде оно не работает)
ну и если сделать его рабочим, что не трудно, то при несоответствии маркеров параметрам в результате получаем ошибку "Слишком много фактических параметров" - как говорится, разбирайся как хочешь)
20. dhurricane 22.10.19 15:20 Сейчас в теме
(18) Проклятье! Что-то много я сегодня невпопад пишу. Пожалуй, отойду на сегодня от клавиатуры подальше. :)
2. A.Sytchev 21.10.19 17:56 Сейчас в теме
А чем она лучше БСПшной СтроковыеФункцииКлиентСервер.ВставитьПараметрыВСтроку?

https://www.screenpresso.com/=RXKZc
Созинов; chebser; litonchik; PLAstic; +4 Ответить
3. kirinalex 2 21.10.19 18:05 Сейчас в теме
(2) Читабельнее и не нужно создавать структуру.
Для сравнения:

СтрШаблон_(, "Имя","Вася", "Фамилия","Пупкин", "Город","Москва", "СемейноеПоложение","Все сложно")

Новый Структура("Имя, Фамилия, Город, СемейноеПоложение", "Вася", "Пупкин", "Москва", "Все сложно")
4. A.Sytchev 21.10.19 18:09 Сейчас в теме
(3) Насчет читабельности я бы поспорил.

Параметры = Новый Структура;
Параметры.Вставить("Имя", "Вася");
Параметры.Вставить("Фамилия",  "Пупкин");
Параметры.Вставить("Город",  "Москва");
Параметры.Вставить("СемейноеПоложение", "Все сложно");


А если мне надо 16 параметров?
5. kirinalex 2 21.10.19 18:18 Сейчас в теме
(4)
 СтрШаблон_(, 
   "Имя", "Вася", 
   "Фамилия", "Пупкин", 
   "Город", "Москва",
   "СемейноеПоложение", "Все сложно")


А если мне надо 16 параметров?

Сложный вопрос. У меня нет на него ответа.
Для справки - платформенный СтрШаблон допускает не больше 10ти параметров.

А в индустрии разработки программирования шагнули намного дальше: https://python-scripts.com/string-formatting
6. kirinalex 2 21.10.19 21:02 Сейчас в теме
немного оптимизировал
исправил ошибку в Тест_НеНайденМаркер
8. v77 148 22.10.19 10:29 Сейчас в теме
А что если так?

&НаКлиенте
Процедура Команда1(Команда)
	СуммаДолга = 100500;
	Имя = "Петр Петрович";
	ВВ = Вычислить(F("Приветонище, {Имя}. Ваш долг {СуммаДолга} руб."));
	Сообщить(ВВ);
КонецПроцедуры

&НаКлиенте
Функция F(Стр)
	Стр = СтрЗаменить(Стр,"{",Символы.ПС+"^");	
	Стр = СтрЗаменить(Стр,"}",Символы.ПС);
	Стр = СтрРазделить(Стр,Символы.ПС);
	Результат = """""";
	Для Каждого Ст Из Стр Цикл
		Если СтрНачинаетсяС(Ст,"^") Тогда
			Результат = Результат + "+" + Сред(Ст,2,СтрДлина(Ст));	
		Иначе
			Результат = Результат + "+""" + Ст + """";
		КонецЕсли;
	КонецЦикла;
	Возврат Результат;
КонецФункции
Показать
11. v77 148 22.10.19 11:30 Сейчас в теме
Померил скорость велосипеда из (8). Работает в три раза быстрее и писанины в два раза меньше.

Текст = СтрШаблон_("Заказано товаров на сумму [Сумма] в количестве [Колво]",
  "Сумма", 2500, "Колво", 100);

Текст = Вычислить(F("Заказано товаров на сумму {Сумма} в количестве {Колво}"));
14. kirinalex 2 22.10.19 14:08 Сейчас в теме
(11)
писанины в два раза меньше.

где именно меньше?
15. kirinalex 2 22.10.19 14:10 Сейчас в теме
(8)
СуммаДолга = 100500;
Имя = "Петр Петрович";
ВВ = Вычислить(F("Приветонище, {Имя}. Ваш долг {СуммаДолга} руб."));

А если СуммаДолга лежит в Выборке то нужно будет сделать так?

СуммаДолга = Выборка.Сумма;
Имя = "Петр Петрович";
ВВ = Вычислить(F("Приветонище, {Имя}. Ваш долг {СуммаДолга} руб."));
16. kirinalex 2 22.10.19 14:11 Сейчас в теме
(8)
Функция F(Стр)

Вы считаете что имя функции "F" это нормально? Она будет глобальной?
19. v77 148 22.10.19 15:17 Сейчас в теме
(16) F или не F какая разница. Назовите как хотите.

А если СуммаДолга лежит в Выборке то нужно будет сделать так?

Ну так и писать {Выборка.Сумма}

ВВ = Вычислить(F("Приветонище, {Имя}. Ваш долг {Выборка.Сумма} руб."));
21. kirinalex 2 22.10.19 15:25 Сейчас в теме
(19) ну тогда удачи вам с такой замечательной функцией F

Хотя вашу идею я запомню на всякий пожарный. Мысля у народа работает)
22. v77 148 22.10.19 16:32 Сейчас в теме
(21)
Мысля у народа работает)
А ты типа не народ :)
9. dhurricane 22.10.19 10:40 Сейчас в теме
Мне кажется, что прерывать цикл при первой встрече пустого имени параметра неудачная идея. Это усложнит применение функции для различных шаблонов строк, зависящих от некоторого условия, но при этом с примерно одинаковым набором параметров. Во встроенной функции "СтрШаблон" это как раз порой и раздражает - строгое соответствие списка маркеров списку параметров функции.

Аналогично с удалением неиспользованных параметров. Разве не удобнее становится, когда забытый маркер бросается в глаза при выводе готовой строки?
10. kirinalex 2 22.10.19 11:18 Сейчас в теме
(9) Приведите пример кода когда прерывание при встрече пустого параметра будет неудобно.

Аналогично с удалением неиспользованных параметров. Разве не удобнее становится, когда забытый маркер бросается в глаза при выводе готовой строки?

Я исходил из предположения удобства, когда маркер оказался не нужен в конкретном случае. Так он удалится автоматически. И также работает платформенная СтрШаблон - просто удаляет маркер
12. dhurricane 22.10.19 12:45 Сейчас в теме
(10)
Приведите пример кода когда прерывание при встрече пустого параметра будет неудобно.
Не могу. :) Пока получше думал над примерами, пришел к выводу, что во всех случаях для Вашей функции любая универсальность будет врагом читаемости.

И также работает платформенная СтрШаблон - просто удаляет маркер
Да, конечно. Я нахожу это неудобным, но это дело вкуса, безусловно.

Я ошибся и на счет встроенной СтрШаблон. Поспешил, извините. Она не требует строго соответствия параметров маркерам. Только чтобы маркеров было не меньше, чем параметров функции. Аналогично и у Вас: лишние имена маркеров приведут к исключительной ситуации. Пару раз сталкивался с подобной особенностью, когда хотел написать что-то вроде такого:
Если ЗначениеЗаполнено(Выборка.Склад) Тогда
	ТекстСообщения = НСтр("ru = 'Не хватает товара %1 в количестве %2 на складе %3'");
Иначе
	ТекстСообщения = НСтр("ru = 'Не хватает товара %1 в количестве %2'");
КонецЕсли; 

ТекстСообщения = СтрШаблон(ТекстСообщения, 
	Выборка.Номенклатура, 
	Выборка.Количество, 
	Выборка.Склад);
Показать
И мне кажется такое поведения функции СтрШаблон также неудобным.
13. kirinalex 2 22.10.19 14:05 Сейчас в теме
(12)
И также работает платформенная СтрШаблон - просто удаляет маркер
Да, конечно. Я нахожу это неудобным, но это дело вкуса, безусловно.
Эту реализация я в полной мере еще сам не оценил на практике и сделал так, чтобы у программиста не было потребности самому вычищать эти маркеры или составлять шаблон динамически, а также потому что в платформенной СтрШаблон сделано также. Есть несколько вариантов как сделать - пока остановился на этом.

Если ЗначениеЗаполнено(Выборка.Склад) Тогда
ТекстСообщения = НСтр("ru = 'Не хватает товара %1 в количестве %2 на складе %3'");
Иначе
ТекстСообщения = НСтр("ru = 'Не хватает товара %1 в количестве %2'");
КонецЕсли;

ТекстСообщения = СтрШаблон(ТекстСообщения,
Выборка.Номенклатура,
Выборка.Количество,
Выборка.Склад);
Показать
Ну, лично я не пишу такие универсальные конструкции, не задаю параметры объектам если в них нет реальной потребности. В данном примере это Склад.
23. v77 148 22.10.19 17:01 Сейчас в теме
Кстати. Можно еще ускорить, если заранее шаблон заготовить

	Шаблон = F("Приветонище, {Выборка.Наименование}. Ваш долг {Выборка.СуммаДолга} руб.");
	Пока Выборка.Следующий() Цикл
		ВВ = Вычислить(Шаблон);
		Сообщить(ВВ);
	КонецЦикла;

24. kirinalex 2 22.10.19 17:13 Сейчас в теме
(23) Все таки, на написание функции меня сподвигла не оптимизация, а случаи нечитабельности больших шаблонов. Дискуссия получается полезная, но пока меня никто не убедил отказаться от своей реализации. Краткости кода я предпочитаю стабильность и читабельность.
25. v77 148 22.10.19 17:15 Сейчас в теме
(24) А моя то чем не читабельная. Очень даже читабельная. Да в добавок еще и быстрая. И кода меньше писать.
26. kirinalex 2 22.10.19 17:18 Сейчас в теме
(25) сама функция? Я бы не сказал что читабельная.
И реализация точно не стабильная, т.к. не проверяется синтаксическим контролем.
27. v77 148 22.10.19 17:20 Сейчас в теме
(26) Ну функцию можно написать какую угодно. Тем более сейчас уже не важно как быстро она будет парсить шаблон, т.к. её в цикле можно не использовать.
Оставьте свое сообщение

См. также

Использование классов .Net в 1С для новичков Промо

Практика программирования Разработка внешних компонент Универсальные функции v7.7 v8 Бесплатно (free)

Руководство для новичков. Написав статью http://infostart.ru/public/238584/, я понял, что многие не понимают того, что написано. Поэтому в этой статье постараюсь более подробно остановиться на азах и без кода на вражеском языке (C#)

27.01.2016    77194    Serginio    110    

Выгрузка HTML описаний с картинками (Base64) товаров на сайт/интернет-магазин/B2B, разберем регулярное выражение получения тега body, ПолучитьHTML, ФорматированныйДокумент

Практика программирования WEB Универсальные функции v8 v8::УФ 1cv8.cf Бесплатно (free)

Редактор HTML платформы 1С простой и очень удобный для небольших задач, однако ПолучитьHTML возвращает отдельно картинки и отдельно целиком HTML страницу со ссылкой на имена этих картинок, что неудобно для отправки в базу данных сайта/интернет-магазина/веб-приложения/B2B. Разберем на открытом коде, как решить эту проблему, напишем универсальную функцию получения значения любого тега HTML на регулярных выражениях. Бонусом - возможность редактировать теги HTML в текстовом режиме.

24.11.2020    273    SizovE    0    

Сохранение настроек

Практика программирования Универсальные функции БСП (Библиотека стандартных подсистем) v8 1cv8.cf Бесплатно (free)

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

22.11.2020    1646    the1    7    

Чтение вложенных свойств Структур Структуры, Соответствий, свойства через точку, разбор JSON

Практика программирования WEB Интеграция Универсальные функции v8 Бесплатно (free)

JSON: {user.device.type} - как получить значение {type}? А если вложенность значительно глубже? Как проверить, что оно заполнено или удалить его - всё это в публикации с открытым кодом и даже без рекурсии. Бонусом разбор дерева значений - ДанныеФормыЭлементДерева, СтрокаДереваЗначений.

17.11.2020    814    SizovE    2    

Универсальные функции с примерами использования Промо

Универсальные функции v8 Бесплатно (free)

14 универсальных функций, с примерами использования - для обычного и управляемого интерфейса

26.02.2016    41495    unichkin    46    

Сохранение настроенного запроса набора данных СКД

Универсальные функции v8 v8::СКД 1cv8.cf Бесплатно (free)

Как сохранить запрос набора данных СКД в том виде, каким он будет выполнен системой для открытия в консоли запросов с диска ИТС.

09.11.2020    802    Serge R    0    

Отпускной период (период основного отпуска) - как его узнать

Зарплата Универсальные функции v8 v8::СПР v8::УФ ЗУП3.x Россия БУ Бесплатно (free)

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

26.10.2020    395    Danila7Zz    2    

Произвольные колонтитулы и повтор шапки таблицы в табличном документе (функция)

Универсальные функции v8 Бесплатно (free)

Пример рекурсивной функции, при помощи которой в табличный документ можно выводить верхний или нижний колонтитулы с произвольным содержимым, а также делать повтор шапки таблицы (или таблиц, если их несколько).

07.10.2020    1186    ellavs    1    

Минимализмы 3 Промо

Практика программирования Универсальные функции v8 Бесплатно (free)

Очередная серия "минимализмов" [http://infostart.ru/public/306536/, https://infostart.ru/public/460935/]. Также, как и в предыдущих статьях, здесь приведена подборка коротких оригинальных авторских решений некоторых задач. Ранее эти решения были разбросаны по моим комментариям к чужим публикациям.

19.02.2018    47112    ildarovich    45    

Печать в word, pdf через html

Печать Практика программирования Универсальные функции v8 Россия Бесплатно (free)

При работе с клиентами возникла задача: использовать форматированный документ. Итак, существует справочник, в нем табличная часть. Для каждой строки требуется ввести описание, причем описание имеет тип форматированный документ. Потребовалось организовать печать табличной части справочника с описанием для каждой строки. Тип данных "Форматированный документ" не может выводится в табличный документ, поэтому пришлось организовывать печать через Microsoft Word.

11.09.2020    894    arr    4    

Самый простой парсинг и обработка веб-страниц в 1С

WEB Универсальные функции v8 1cv8.cf Бесплатно (free)

Рассмотрим самый простой парсинг веб-страниц средствами платформы 1С и еще некоторые полезные приемы работы с веб-страницами.

07.08.2020    5356    YPermitin    18    

Выполнение внешней обработки по расписанию для управляемого и обычного приложения

БСП (Библиотека стандартных подсистем) Универсальные функции v8 1cv8.cf Россия Бесплатно (free)

Использование БСП для выполнения внешних обработок в управляемом и обычном приложении

06.08.2020    2000    RPGrigorev    0    

Универсальная функция для программного выполнения СКД Промо

Инструментарий разработчика Универсальные функции v8::СКД 1cv8.cf Бесплатно (free)

Часто встречаются вопросы на форумах о программном формировании СКД. Вроде и информации много по этому поводу, но... Все как всегда :) Собственно, в описании без лишних слов выложен текст общей функции, в которую, для выполнения отчета, нужно передать (минимум 2 параметра): СКД и ТабличныйДокумент.

20.05.2015    30735    dj_serega    18    

Пользовательское поле СКД одной процедурой

Практика программирования Универсальные функции v8 Бесплатно (free)

Быстрое создание пользовательского поля "выражение" одной процедурой

05.08.2020    1656    Yashazz    0    

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

Универсальные функции v8 БП3.0 УТ11 Россия Бесплатно (free)

В данном обзоре приведу примеры встроенных используемых функций для работы с печатными формами на примерах конфигураций Управление торговлей 11.4 и Бухгалтерия 3.0.

10.07.2020    3498    quazare    5    

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

Практика программирования Универсальные функции v8 v8::СКД Бесплатно (free)

Вывод содержимого элемента формы "ДанныеФормыДерево" в табличный документ средствами СКД.

09.07.2020    2785    Yashazz    7    

Выполнение произвольного кода в фоновых заданиях Промо

Универсальные функции v8 Бесплатно (free)

Если надо быстро провести 100`000 документов...

13.01.2016    24747    unichkin    13    

Ещё немного функционального стиля в 1С или Как нам отфильтровать таблицу значений

Универсальные функции v8 Россия Бесплатно (free)

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

16.05.2020    2922    GlebHappy    34    

Сходство Джаро - Винклера. Нечеткое сравнение строк

Универсальные функции v8 Россия Бесплатно (free)

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

25.12.2019    7191    brooho    17    

Функция - Формат государственного номера автомобиля

Универсальные функции v8 Автомобили, автосервисы Россия Бесплатно (free)

Возникла необходимость в приведении к единому формату хранящихся, и вводимых вновь, автомобильных Регистрационных знаков - Гос.номер.

23.12.2019    4028    brooho    4    

Распределение оплаты по товарам Промо

Практика программирования Универсальные функции v8 1cv8.cf Бесплатно (free)

Учебная задача. Оплата приходит по заказу. Требуется запросом распределить её по товарам. Практическая задача была сложнее. Упростил специально для иллюстрации. Сначала собираем в одну таблицу заказы и товары. Затем ОБЪЕДИНТЬ ВСЕ с оплатами. Потом намазываем оплату на товар.

04.08.2014    19224    Трактор    5    

Полезности | Дерево значений | Обычные формы |

Практика программирования Универсальные функции v8 Бесплатно (free)

Полезные функции при работе с деревом значений.

04.12.2019    5943    Mellow    7    

Обработка расширением на клиенте

Расширения Универсальные функции v8::УФ 1cv8.cf Бесплатно (free)

Описываю нетривиальный прием работы с расширением, который позволит относительно быстро реализовывать некоторые обработки данных. Суть: обработка данных на клиенте с использованием методов, которые реализованы разработчиком конфигурации на форме объекта. Если эти методы есть вне модуля формы объекта (общий модуль, модуль менеджера, модуль объекта)- лучше сделать обработку более простым способом.

31.10.2019    7260    EvgenURNN    10    

Использование XML-схемы из макета внешней обработки

Обмен через XML Универсальные функции v8 1cv8.cf Бесплатно (free)

Простой способ использования XML-схем из макета внешней обработки.

28.10.2019    11162    Olesia_Matusevich    10    

Сканируем без сканера или MXL to JPG Промо

Внешние источники данных Универсальные функции Печатные формы документов v8 1cv8.cf Бесплатно (free)

Хотите конвертировать документы в формат изображения менее чем за минуту, не имея сканера? Тогда эта статья для вас.

24.05.2012    34234    shakmaev    47    

Быстрое создание наполненных коллекций

Практика программирования Универсальные функции v8 1cv8.cf Бесплатно (free)

Разберем самые частые способы создания коллекции, значения которой известны заранее. И сравним скорость их выполнения.

28.10.2019    7314    SeiOkami    66    

Преобразование XML в таблицу значений или иной объект 1С методом XSL преобразования

Универсальные функции Обмен через XML v8 1cv8.cf Бесплатно (free)

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

24.10.2019    11820    kraspila    30    

Обертка функций Excel на русском. Ускорение процесса разработки.

Загрузка и выгрузка в Excel Универсальные функции v8 Бесплатно (free)

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

24.10.2019    7356    DmitryKotov    6    

Полезняшки по СКД и построителям. Просто код

Практика программирования Универсальные функции v8 v8::СКД Бесплатно (free)

Полезные процедуры и функции для работы с построителями и СКД. Просто исходник.

10.10.2019    10254    Yashazz    45    

Полезные процедуры и функции для программиста

Практика программирования Универсальные функции v8 1cv8.cf Россия Бесплатно (free)

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

07.10.2019    30966    HostHost    40    

Отслеживание выполнения фонового задания

Практика программирования Универсальные функции Разработка v8 1cv8.cf Бесплатно (free)

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

17.08.2019    32867    ids79    16    

Сохранение запроса со всеми параметрами и временными таблицами

Универсальные функции v8 v8::УФ Россия Бесплатно (free)

Функция сохранения запроса со всеми параметрами и временными таблицами в формате *.q1c для открытия в консоли запросов с диска ИТС.

13.05.2019    6713    Serge R    5    

Иерархия справочника Сверху Вниз. Получаем произвольное количество родителей "верхнего" уровня

Практика программирования Универсальные функции Разработка v8 1cv8.cf Бесплатно (free)

Иерархия справочника Сверху Вниз. Функция для получения произвольного количества родителей "верхнего" уровня. На примере справочника "Номенклатура".

28.03.2019    6192    obsfromekb    11    

Доработка проведения типовых документов в УТ 11.4, КА 2.4, ЕРП 2.4

Практика программирования Универсальные функции Разработка v8 v8::УФ ERP2 УТ11 КА2 Россия УУ Бесплатно (free)

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

22.03.2019    18442    ids79    16    

Добавление отчетов в типовые конфигурации 1С

Практика программирования Универсальные функции БСП (Библиотека стандартных подсистем) v8::УФ v8::СКД 1cv8.cf Бесплатно (free)

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

07.03.2019    57120    ids79    46    

Расширение конструктора мобильного рабочего места для варианта "клиент 1С+RDP" (для любых wi-fi терминалов). Экосистема решений Simple WMS

Инструментарий разработчика Сканер штрих-кода Терминал сбора данных Универсальные функции Мобильная разработка Производство готовой продукции (работ, услуг) Розничная торговля Учет ОС и НМА Учет ТМЦ Производство готовой продукции (работ, услуг) Розничная торговля Учет ОС и НМА Учет ТМЦ v8::УФ УУ Бесплатно (free)

Развитие проекта «Конструктор мобильного клиента на Android» https://infostart.ru/public/976636/ для устройств не на Андроиде (работающих в режиме RDP). В отличие от варианта Android работа на терминалах происходит в режиме 1С:Предприятие через RDP а конфигурации мобильных клиентов полностью совместимы для обоих версий. Т.е. конфигурация единая, создается один раз и ее может читать как Android -устройство, так и 1С-клиент на RDP без необходимости какой либо переделки.

05.02.2019    13214    informa1555    10    

Работа со строками: от простого к сложному

Практика программирования Универсальные функции v8 Бесплатно (free)

Простые примеры работы со строками, в конце более читаемый разбор сложных текстов.

14.01.2019    34611    Evg-Lylyk    21    

Нумерация колонок субконто при выгрузке набора записей регистра бухгалтерии в таблицу значений

Универсальные функции v8 Бесплатно (free)

Решение проблемы несовпадения номеров колонок с номерами субконто на счете при выгрузке в таблицу значений.

14.01.2019    5703    The Ded    6    

Многопоточное восстановление последовательностей

Производительность и оптимизация (HighLoad) Практика программирования Математика и алгоритмы Универсальные функции v8 Бесплатно (free)

Универсальный алгоритм многопоточного фонового восстановления любой последовательности.

05.12.2018    13540    _ASZ_    33    

Универсальные функции ЗУП 3.1 / ЗКГУ 3.1, которые помогут в разработке

Универсальные функции Зарплата Управление персоналом (HRM) Зарплата v8 v8::СПР ЗКГУ3.0 ЗУП3.x БУ Бесплатно (free)

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

14.11.2018    96272    GeterX    121    

Кадровые данные сотрудников в ЗУП 3.1 в отчетах

Универсальные функции Управление персоналом (HRM) Управление персоналом (HRM) v8 v8::СПР ЗУП3.x Россия Бесплатно (free)

Параметры используемые для получения данных сотрудников в ЗУП 3.1. Пригодится для разработки отчетов как напоминалка.

07.11.2018    35856    fromlion    23    

Добавление расшифровки в стандартные и добавленные внешние отчеты со стандартной формой отчета на СКД

Универсальные функции v8::УФ v8::СКД ERP2 УТ11 Россия Бесплатно (free)

Описан способ добавления расшифровки отчета на СКД как встроенного в систему, так и добавленного внешнего отчета.

27.09.2018    11097    bmk74    8    

Функция НайтиФайлы() в каталоге netshare на Linux - обход ошибки работы

Практика программирования Универсальные функции v8 Бесплатно (free)

Решение проблемы применения функции НайтиФайлы() в каталоге с netshare на Linux-сервере - не работает поиск файлов по указанной маске (шаблону)

19.09.2018    6372    drmaxart    3    

Простой способ программно открыть заполненную форму нового (незаписанного) документа в тонком клиенте

Универсальные функции v8 Бесплатно (free)

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

09.06.2018    11444    Serge R    12    

Генерация временного ряда запросом

Универсальные функции v8 v8::Запросы 1cv8.cf Бесплатно (free)

Способ генерации последовательности дат средствами языка запроса 1С.

07.05.2018    8780    dim_zal    6