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

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

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

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

1
Функция позволяет задавать именованные маркеры формата [Имя], в отличии от типовых нумерованных формата %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
1

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

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

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

&НаКлиенте
Функция F(Стр)
	Стр = СтрЗаменить(Стр,"{",Символы.ПС+"^");	
	Стр = СтрЗаменить(Стр,"}",Символы.ПС);
	Стр = СтрРазделить(Стр,Символы.ПС);
	Результат = """""";
	Для Каждого Ст Из Стр Цикл
		Если СтрНачинаетсяС(Ст,"^") Тогда
			Результат = Результат + "+" + Сред(Ст,2,СтрДлина(Ст));	
		Иначе
			Результат = Результат + "+""" + Ст + """";
		КонецЕсли;
	КонецЦикла;
	Возврат Результат;
КонецФункции
Показать
Остальные комментарии
Избранное Подписка Сортировка: Древо
1. WalterMort 307 21.10.19 17:47 Сейчас в теме
Однако в коде своего шаблона, автор использует платформенный СтрШаблон, хотя мог использовать и свой.
TMV; kirinalex; tnaiko; +3 Ответить
7. kirinalex 1 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 1 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 1 21.10.19 18:05 Сейчас в теме
(2) Читабельнее и не нужно создавать структуру.
Для сравнения:

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

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

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


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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

См. также

Простой способ загрузить файл Excel на тонком клиенте. 11

Инструменты и обработки no Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Загрузка и выгрузка в Excel Универсальные функции

Самый простой способ загрузить файл Excel на тонком клиенте - это скопировать лист Excel в "табличный документ" на форме обработки и обрабатывать уже поля "табличного документа".

1 стартмани

30.10.2019    1693    1    John_d    16       

Картинка вместо кнопки без html 11

Инструменты и обработки Программист Бизнес-аналитик Руководитель проекта Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Работа с интерфейсом Универсальные функции

Вариант замены стандартных кнопок на форме для тех, кого не устраивают кнопки 1С и нет особых возможностей делать все с использованием html. Тестировал работу на платформах 8.3.10, 8.3.13, 8.3.14

1 стартмани

23.10.2019    1283    3    zatoichi    3       

Универсальная подсистема ДМ 6

Инструменты и обработки Программист Конфигурация (md, cf) v8 1cv8.cf Россия Windows Абонемент ($m) Универсальные функции

ДМ — дополнительные модули Это не альтернатива или дополнение БСП. Данная подсистема призвана быстро получить множество нужных функций в любой конфигурации. Для использования подсистемы изменения в конфигурацию вносить не надо. К сожалению поддержка обычных форм прекращена и поэтому данная разработка предназначена только для УФ. Разработка ведётся с 2009 года, но именно этот релиз был подготовлен на платформе 8.3.15.1565

1 стартмани

22.10.2019    815    2    strange2007    9       

Вывод QR-кода типовыми средствами. 7

Инструменты и обработки no Внешняя обработка (ert,epf) v8 КА1 УТ10 УПП1 Windows Абонемент ($m) Универсальные печатные формы Сканер штрих-кода Универсальные функции

Вывод QR-кода типовыми средствами. На данный момент очень часто нужно вывести в печатную форму QR-код. Показываю как на примере типового кода из УТ11 это сделать. Можно использовать в любых конфигурациях с обычными формами.

1 стартмани

21.10.2019    1001    1    Емельянов Алексей    13       

Генерация QR кода для любых конфигураций 1С (обычные и управляемые формы) 7

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Абонемент ($m) Универсальные обработки Универсальные функции

Для генерации используется компонента типовой конфигурации УТ11, встроенная в общий макет "КомпонентаПечатиQRКода". Ниже приведены процедуры, чтобы сделать обработку самостоятельно (только для УФ).

1 стартмани

11.10.2019    1208    7    dm1try    0       

Универсальное удаление движений регистров накопления по всем непроведенным документам 10

Инструменты и обработки Программист Пользователь Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Универсальные функции Чистка базы

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

1 стартмани

27.09.2019    1910    2    John_d    14       

1С REST API клиент. Обмен из 1С с сайтом/магазином WordPress/WooCommerce с помощью REST API 11

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf УУ Оптовая торговля Розничная торговля Абонемент ($m) Универсальные обработки WEB Универсальные функции

Обмен 1С с сайтом на WordPress и магазином Woocommerce. Внешняя обработка сделана как REST API клиент сайта WordPress, позволяет разработчику публиковать/изменять/удалять/просматривать посты/страницы/товары/фотографии (в связке с товаром/страницей) на сайте/магазине WordPress/Woocommerce. Обработки сделаны с использованием обычных форм, демо-формы использования в комплекте.

10 стартмани

29.07.2019    2369    4    osivv    14       

Экспортные процедуры и функции общих модулей БП 3.0, ЗУП 3.1, УТ 11 32

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Россия Windows Абонемент ($m) Универсальные функции

Таблицы экспортных процедур и функций общих модулей конфигураций БП КОРП 3.0, ЗУП КОРП 3.1, УТ 11 + обработка по формированию такой таблицы из любой конфигурации.

14.06.2019    3957    329    SanchoD    29       

Работа с графической схемой в объектной модели DOM 41

Статья Программист Конфигурация (md, cf) v8 v8::УФ Абонемент ($m) Универсальные функции

Пример кода для работы с графической схемой в объектной модели DOM, платформа 8.3.12.

1 стартмани

04.06.2019    4014    4    botokash    19       

Программное формирование картинки в 1С:Предприятие 8.3.9 (ПотокВПамяти / ЗаписьДанных) 50

Статья Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Универсальные функции

В статье представлен код программного формирования картинки (двоичные данные) без всяких внешних компонент, без формирования строки Base64, используя лишь встроенные механизмы 1С предприятие 8.3.9 (объекты ПотокВПамяти и ЗаписьДанных). Сам по себе код формирования картинки не несёт ничего нового. Всё описано в википедии. Захотелось попробовать новые методы, но никак не доходитили руки. В приложении обработка практически с этим же кодом.

1 стартмани

16.05.2019    4654    5    yku    7       

Коннектор: удобный HTTP-клиент для 1С:Предприятие 8 531

Инструменты и обработки Программист Конфигурация (md, cf) v8 1cv8.cf Абонемент ($m) Практика программирования Внешние источники данных WEB Универсальные функции Инструментарий разработчика Универсальные обработки

Коннектор - библиотека для работы с HTTP запросами. Библиотека берет на себя всю рутину работы с HTTP запросами. Буквально в одну строку можно получать данные, отправлять, не заботясь о необходимости конструирования URL, кодирования данных и т.п.

1 стартмани

31.01.2019    27803    263    bonv    109       

Альтернатива внешним печатным формам. ЗУП 3.1 23

Статья Программист Расширение (cfe) v8 v8::СПР ЗУП3.x Зарплата Абонемент ($m) Печатные формы документов Универсальные функции Практика программирования Разработка

Как в ЗУП 3.1.8 отказаться от внешних печатных форм и расширением увеличить количество полей, доступных при редактировании макетов, для изменения печатных форм Т1, Т5, Т8 и аналогичные пользователями.

1 стартмани

30.01.2019    6508    10    Mogilnikova    2       

Создание и запуск скрипта для ввода текста на базе AutoHotkey 7

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Универсальные функции

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

1 стартмани

28.01.2019    2537    1    Wezoowy    1       

Использование подсистемы БСП "Заполнение объектов" 135

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

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

1 стартмани

23.11.2018    13875    8    ids79    22       

Отправка электронной почты с помощью локального почтового клиента из 1С, развернутой под удаленным рабочим столом 13

Инструменты и обработки Программист Пользователь Архив с данными v8 КА1 БП2.0 УТ10 УПП1 Windows Абонемент ($m) Печатные формы документов Универсальные функции Email

Решение для интерактивной (нажал-отредактировал) отправки электронных писем и печатных форм через почтовый клиент (Thunderbird, Outlook) находящийся на локальном компьютере, из конфигурации 1С, развернутой под удаленным рабочим столом (RDP, remote-app). Подходит также для локального развертывания 1С. Представлен пример быстрой интеграции с конфигурациями "Управление торговлей 10.3", "Управление производственным предприятием 1.3", "Комплексная автоматизация 1.1", "Бухгалтерия предприятия 2.0".

1 стартмани

21.09.2018    12297    10    stvorl    0       

Пропорциональное распределение в запросе 35

Статья Программист Внешний отчет (ert,erf) v8 1cv8.cf Абонемент ($m) Практика программирования Универсальные функции

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

1 стартмани

28.06.2018    8356    1    invertex    7       

Проверка таблицы на дублирование строк (ТаблицаЗначений, ТабличнаяЧасть) и получение массива таких строк 9

Статья Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Практика программирования Универсальные функции

Функция для проверки дублирования строк в ТаблицеЗначений или ТабличнойЧасти. Также, если необходимо, возвращает массив задублированных строк (можно обработать).

1 стартмани

05.02.2018    8131    6    uri1978    27       

Свертка таблицы значений. С блэкджеком и всем остальным 5

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Практика программирования Универсальные функции

Функция свертки таблицы значений. Умеет в отличие от стандартного метода все, что можно делать на языке запросов.

1 стартмани

22.01.2018    7779    2    dusha0020    10       

Определение MIME-типа файла 6

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Универсальные функции

Небольшая, но полезная функция для определения MIME-типа файла по его расширению. Сэкономит время разработчикам.

1 стартмани

12.01.2018    7583    3    o.nikolaev    4       

Расширение возможностей печати: Вывод произвольного нижнего и верхнего колонтитула 8

Отчеты и формы Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Печатные формы документов Практика программирования Универсальные функции

Расширяем функционал вывода нижнего / верхнего колонтитула. Стандартно 1С имеет достаточно ограничений по выводу и наполнению колонтитулов содержимым, взять хотя бы такие, как вывод только текста и отсутствие ограничения на номер конечной страницы. А при разработке кода сталкиваешься с тем, что свой блок с нижним колонтитулом нужно прижимать к низу страницы. Казалось бы быстро решаемый вопрос, но и в нем есть нюансы. Сейчас я расскажу о том, как решалась эта задача. UPD 15.02.2018. Добавлен вывод верхнего колонтитула; Вывод колонтитулов на первой и последней странице управляется параметрами; Научился считать страницы: Добавлено заполнение переменных аналогичных стандартным из колонтитулов; Задаются форматы даты и времени. Ограничения прежние: 1. Повторно сформировать табличный документ после смены параметров страницы интерактивно.; 2. Передавать данные для более плотной печати как можно более мелко нарезанными кусками.

1 стартмани

29.12.2017    22844    21    agent00mouse    0       

Запуск приложений на клиенте из RDP-сессии 8

Инструменты и обработки Системный администратор Архив с данными v8 1cv8.cf Windows Абонемент ($m) Универсальные функции

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

1 стартмани

30.10.2017    8668    5    GusevNA    4       

Простые подсистемы: Библиотека подсистем 12

Инструменты и обработки Системный администратор Программист Конфигурация (md, cf) v8 Абонемент ($m) Инструментарий разработчика Универсальные обработки Универсальные функции

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

1 стартмани

26.10.2017    8216    7    pbabincev    1       

Размеры управляемой формы 101

Статья Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Практика программирования Работа с интерфейсом Универсальные функции

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

1 стартмани

08.10.2017    18551    51    json    8       

Шаблон внешней обработки регламентного задания с формой настройки параметров выполнения 86

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Абонемент ($m) Инструментарий разработчика Универсальные функции

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

1 стартмани

28.05.2017    18067    144    Bassgood    10       

Многопоточность. Универсальный «Менеджер потоков» (фреймворк) с отслеживанием зависимости объектов 176

Статья Программист Архив с данными v8 1cv8.cf Россия Абонемент ($m) Практика программирования Математика и алгоритмы Универсальные функции Производительность и оптимизация (HighLoad)

Восстановление партий, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

26.05.2017    39482    168    DarkAn    86       

Универсальная процедура по загрузке файла из интернета 10

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Абонемент ($m) Практика программирования WEB Универсальные функции

Передаем в процедуру всего два параметра: откуда взять и куда положить. Остальное она сделает сама

1 стартмани

17.05.2017    11971    9    json    2       

Правильный вопрос 16

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Универсальные функции

Заметили, что пользователи бездумно кликают по первой попавшейся кнопке, не удосужившись прочитать текст предупреждения или вопроса? Данная функция призвана решить данную проблему!

1 стартмани

15.05.2017    9392    SvoyakMartin    15       

Web сервис 1С 24

Инструменты и обработки Программист Архив с данными v8 1cv8.cf Россия Абонемент ($m) Практика программирования WEB Универсальные функции

Пример реализации простого web сервиса. Особенность: не используются XDTO пакеты, определяемые в дереве конфигураций; возможность передачи любых структур данных: списки значений, таблицы значений, табличные документы и т.п.

1 стартмани

21.03.2017    23035    74    hiduk    33       

Набор математических функций 20

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Универсальные функции

Небольшой набор математических функций для работы с массивами чисел.

1 стартмани

12.01.2017    11253    2    SvoyakMartin    17       

Сравнение строк. Наибольшая общая последовательность 6

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Россия Абонемент ($m) Универсальные функции

Заданы две строки Строка1 и Строка2. Требуется найти наибольшую общую подпоследовательность (НОП) этих строк.

1 стартмани

14.11.2016    7561    2    Alex_YAM    4       

Набор процедур для парсера консоли запросов 7

Инструменты и обработки Программист Архив с данными v8 1cv8.cf Абонемент ($m) Инструментарий разработчика Универсальные функции

Данный набор функций и процедур необходимо вставить в Консоль запросов для управляемого приложения 1С 8.2 - 8.3 (Такси) http://infostart.ru/public/64522/, и вы получите возможность разбирать сложные запросы на вложенные, вносить необходимые правки и собирать измененные подзапросы в запрос. Данный модуль не содержит консоли!!! Ее придется отдельно скачать по ссылке http://infostart.ru/public/64522/

1 стартмани

09.11.2016    8026    3    blockcode    5       

Организация выбора месяца из списка (универсально + НЕ модально ) 7

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Работа с интерфейсом Универсальные функции

Пришлось столкнуться с такой проблемой, как выбор месяца из ниспадающего списка (с элементами вида "НазваниеМесяца Год") с возможностью изменения года. Хочу предложить универсальный вариант реализации данного механизма на основе механизма http://infostart.ru/public/167549/ ЗЫ: основные отличия: - вместо "НачалоВыбораИзСписка" работаем с "ОбработкаВыбора" без модальности - Обратное преобразование в дату не только на русском - Универсальность процедур. Одна функция выбирается в нескольких полях.

1 стартмани

09.11.2016    11019    11    igorkosmos    4       

Отладка/доработка модуля менеджера "на лету" 90

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Инструментарий разработчика Практика программирования Универсальные функции

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

1 стартмани

23.10.2016    23452    19    json    22       

Автоматическое разбиение строки на подстроки по ширине колонки / ячейки или по количеству символов 12

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Универсальные обработки Универсальные функции

Длинный адрес контрагента или нестандартная фамилия не входит в одну строку, а РазмещениеТекста = Переносить по какой-либо причине не устраивает? Что можно сделать? Вот пара полезных функций для решения данного вопроса с примерами применения.

1 стартмани

21.10.2016    12110    2    SvoyakMartin    3       

Сверка таблиц при разработке через тестирование 14

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 Абонемент ($m) Инструментарий разработчика Практика программирования Универсальные функции

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

1 стартмани

09.10.2016    12365    11    json    1       

Функция преобразования промежутка времени в строку 7

Статья Программист Нет файла v8 1cv8.cf Россия Абонемент ($m) Универсальные функции

Функция предназначена для преобразования промежутка времени в строку с разбивкой по годам, дням, часам, минутам, секундам.

1 стартмани

23.09.2016    8529    5    vovant    1       

Вывод Таблицы Значений или Дерева Значений на экран управляемой формы без объявления колонок в реквизитах формы 50

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

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

1 стартмани

13.09.2016    29056    47    pavley2002    11       

Алгоритм по переносу вложенных запросов в пакеты 15

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Инструментарий разработчика Универсальные функции

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

1 стартмани

26.08.2016    8283    19    ostapchenko.alexandr    20       

7 правил RFC 4180 26

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Россия Абонемент ($m) Универсальные функции

Что такое CSV? Описание правил формата RFC4180 и пара функций чтения/записи CSV текста в ТЗ согласно этим рекомендациям (с экранированием и _поддержкой многострочных полей_).

1 стартмани

22.08.2016    13149    16    kuzyara    2       

Запросы &НаКлиенте для Управляемого приложения 6

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Практика программирования Универсальные функции

Разбитый между клиентом и сервером код размывает и усложняет логику прикладного решения. Для запроса из базы данных одной записи предлагаю &НаКлиенте использовать универсальную процедуру "ЗаполнитьИзЗапроса".

1 стартмани

08.05.2016    7393    2    sereginseregin    14       

Консоль и функция рекурсивного запроса 9

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Инструментарий разработчика Тестирование и исправление Универсальные функции

Консоль предназначена для отладки и просмотра результатов выполнения РЕКУРСИВНОГО ЗАПРОСА в режиме 1С:Предприятие. В консоли реализована универсальная функция для выполнения рекурсивных запросов.

1 стартмани

10.02.2016    11006    5    sereginseregin    1       

Генерация QR-кода (управляемая форма, обычное и управляемое приложение) 59

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Windows Абонемент ($m) Универсальные функции Универсальные обработки

Обработку можно быстро и легко интегрировать в любую конфигурацию с и без БСП (Библиотека Стандартных Подсистем).

3 стартмани

04.02.2016    36675    154    tunesoft    24       

Динамический отбор динамического списка. Управляемая форма 1С: 8.3 11

Инструменты и обработки Программист Архив с данными v8 1cv8.cf Windows Абонемент ($m) Универсальные функции

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

1 стартмани

25.01.2016    17287    23    1prog@bk.ru    3       

Расчет интегралов 8

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Практика программирования Универсальные функции

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

1 стартмани

27.11.2015    8570    sojuznik    12       

Автоматическая подстановка уничтожений временных таблиц в текст запроса 7

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Универсальные функции

Функция, которая сама подставляет в текст запроса "УНИЧТОЖИТЬ" в местах последнего использования ВТ.

1 стартмани

14.11.2015    15601    SeiOkami    3       

Механизм контроля заполнения реквизитов 32

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

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

1 стартмани

25.10.2015    10601    28    yur4ik9408    10       

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

Инструменты и обработки Системный администратор Архив с данными v8 1cv8.cf Windows Абонемент ($m) Сервисные утилиты Универсальные функции

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

1 стартмани

23.10.2015    8651    4    vsuh    2