Раскрашивание кода (реинкарнация обработки с ИТС)

Публикация № 1598931 04.02.22

Разработка - Инструментарий разработчика

Раскраска раскрашивание консоль кода разукрашка

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

После перехода платформы на движок WebKit стало невозможно использовать стандартную обработку для раскраски кода с ИТС.

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

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

Мне всего лишь захотелось починить версию обработки от 1С и перенести её на управляемые формы. Ну и куда в наше время без раскраски Асинх/Ждать 😊

 

Раскрашивание

 

Для работы требуется версия платформы не ниже 8.3.14.1565

Тестировалось в следующих условиях:

ОС Windows 10 x64, релизы платформы 8.3.15.1830, 8.3.16.1148, 8.3.18.1747, 8.3.20.1613

Скачать файлы

Наименование Файл Версия Размер
Раскрашивание кода (реинкарнация обработки с ИТС):

.epf 11,81Kb
13
.epf 20220207 11,81Kb 13 Скачать

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

Отзывы
6. DrAku1a 1580 05.02.22 12:46 Сейчас в теме
Для тех, кому лень качать - делюсь своей реализацией функции раскраски кода
//Вспомогательная, используется в "РаскраситьКод1С8"
Процедура ДобавитьСлово(Код, Слово, ТекТипСлова, СписокКлючевыхСлов, ДопустимыеЗнаки, мОписаниеТипаЧисло, ТипСлова=Неопределено)
	Если ПустаяСтрока(Слово) Тогда
		Код = Код + СтрЗаменить(СтрЗаменить(СтрЗаменить(Слово, " ", " "), Символы.НПП, " "), Символы.Таб, "    ");
		Возврат;
	ИначеЕсли ТипСлова=Неопределено Тогда
		нсл = НРег(СокрП(Слово));
		Если Найти(СписокКлючевыхСлов, нсл)>0 Тогда
			ТипСлова = "<keywrd>";
		ИначеЕсли Слово = "0" или мОписаниеТипаЧисло.ПривестиЗначение(Слово)<>0 Тогда
			ТипСлова = "<num>";
		Иначе
			ТипСлова = "<text>";
			ЭтоЧисло = Истина;
			Для сч=1 по СтрДлина(нсл) Цикл
				ТекСимв=Сред(нсл, сч, 1);
				Если Найти(ДопустимыеЗнаки, ТекСимв)=0 Тогда
					ТипСлова="<unwn>";
					Прервать;
				ИначеЕсли ТекСимв<>"0" Тогда
					ЭтоЧисло = Ложь;
				КонецЕсли;
			КонецЦикла;
			Если ЭтоЧисло Тогда
				ТипСлова = "<num>";
			КонецЕсли;
		КонецЕсли;
	КонецЕсли;
	Код = Код + ?(ТекТипСлова=ТипСлова, "", ТипСлова) + СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(Слово, "<", "<"), ">", ">"), " ", " "), Символы.НПП, " "), Символы.Таб, "    ");
	ТекТипСлова = ТипСлова;
	Слово = "";
КонецПроцедуры

//Реализует функционал "Оформить фрагмент кода"
Функция РаскраситьКод1С8(ТекстКод) Экспорт
	мОписаниеТипаЧисло = Новый ОписаниеТипов("Число");
	Таб = Символы.Таб;
	НПП = Символы.НПП;
	ДопустимыеЗнаки = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя0123456789abcdefghijklmnop­qrstyvwxyz_";
	СписокКлючевыхСлов = "асинх|async|ждать|await|if|если|then|тогда|elsif|иначеесли|else|иначе|endif|конецесли|do|цикл|for|для|to|по|each|каждого|in|из|while|пока|enddo|конеццикла|procedure|процедура|endprocedure|конецпроцедуры|function|функция|endfunction|конецфункции|var|перем|export|экспорт|goto|перейти|and|и|or|или|not|не|val|знач|break|прервать|continue|продолжить|return|возврат|try|попытка|except|исключение|endtry|конецпопытки|raise|вызватьисключение|false|ложь|true|истина|undefined|неопределено|null|new|новый|execute|выполнить|";
	Ответ = "<span style=""text-align: left; font-family: courier new,courier; color: blue; font-size: 10pt; white-space: pre; display: inline-block; ""><font>";
	ТекТипСлова = "<text>";
	Для нс=1 По СтрЧислоСтрок(ТекстКод) Цикл
		ТекСтрока = СокрП(СтрПолучитьСтроку(ТекстКод, нс));
		дл = СтрДлина(ТекСтрока);
		сч = 0;
		ТекСлово = "";
		КодНеНачался = Истина;
		Пока сч<дл Цикл
			сч = сч + 1;
			ТекущийСимвол = Сред(ТекСтрока, сч, 1);
			Если КодНеНачался Тогда
				Если ТекущийСимвол=" " Или ТекущийСимвол=Таб Или ТекущийСимвол=НПП Тогда
					//ТекущийСимвол = ?(ТекущийСимвол=" " или ТекущийСимвол=НПП, " ", "    ");
					Ответ = Ответ + ТекущийСимвол;
					Продолжить;
				ИначеЕсли ТекущийСимвол="#" или ТекущийСимвол="&" Тогда
					ТекСлово = "";
					ДобавитьСлово(Ответ, Сред(ТекСтрока, сч), ТекТипСлова, СписокКлючевыхСлов, ДопустимыеЗнаки, мОписаниеТипаЧисло, "<dir>");
					Прервать;
				КонецЕсли;
			КонецЕсли;
			КодНеНачался = Ложь;			
			Если ТекущийСимвол=" " Или ТекущийСимвол=Таб Или ТекущийСимвол=НПП Тогда
				Если КодНеНачался Тогда
					Ответ = Ответ + ТекущийСимвол;
					Продолжить;
				КонецЕсли;
				//ТекущийСимвол = ?(ТекущийСимвол=" " или ТекущийСимвол=НПП, " ", "    ");
				ДобавитьСлово(Ответ, ТекСлово+ТекущийСимвол, ТекТипСлова, СписокКлючевыхСлов, ДопустимыеЗнаки, мОписаниеТипаЧисло);
				ТекСлово = "";
				Продолжить;
			ИначеЕсли Найти("():;.,=+-*<>?[]%/", ТекущийСимвол) > 0 Тогда
				ДобавитьСлово(Ответ, ТекСлово, ТекТипСлова, СписокКлючевыхСлов, ДопустимыеЗнаки, мОписаниеТипаЧисло);
				ТекСлово = "";
				//Проверяем на комментарий
				Если ТекущийСимвол="/" и Сред(ТекСтрока, сч+1, 1)="/" Тогда
					ТекСлово = "";
					ДобавитьСлово(Ответ, СокрП(Сред(ТекСтрока, сч)), ТекТипСлова, СписокКлючевыхСлов, ДопустимыеЗнаки, мОписаниеТипаЧисло, "<cmnt>");
					Прервать;
				КонецЕсли;	
				ДобавитьСлово(Ответ, ТекущийСимвол, ТекТипСлова, СписокКлючевыхСлов, ДопустимыеЗнаки, мОписаниеТипаЧисло, "<symb>");
				Продолжить;
			ИначеЕсли ТекущийСимвол="""" или ТекущийСимвол="|" Тогда
				ДобавитьСлово(Ответ, ТекСлово, ТекТипСлова, СписокКлючевыхСлов, ДопустимыеЗнаки, мОписаниеТипаЧисло);
				// найти закрывающую кавычку
				нач = сч;
				сч = сч + 1;
				СледующийСимвол = Сред(ТекСтрока, сч, 1);
				Пока сч<дл Цикл
					сч = сч + 1;
					ТекущийСимвол = СледующийСимвол;
					СледующийСимвол = Сред(ТекСтрока, сч, 1);
					Если ТекущийСимвол="""" Тогда
						Если СледующийСимвол="""" Тогда
							сч = сч + 1;
							СледующийСимвол = Сред(ТекСтрока, сч, 1);
						Иначе
							Прервать;
						КонецЕсли;
					КонецЕсли;
				КонецЦикла;
				ТекСлово = "";
				ДобавитьСлово(Ответ, Сред(ТекСтрока, нач, сч-нач), ТекТипСлова, СписокКлючевыхСлов, ДопустимыеЗнаки, мОписаниеТипаЧисло, "<str>");
				сч = сч - 1;
				Продолжить;
			ИначеЕсли ТекущийСимвол="'" Тогда
				нач = сч;
				сч = сч + 1;
				СледующийСимвол = Сред(ТекСтрока, сч, 1);
				Пока сч<дл Цикл
					сч = сч + 1;
					ТекущийСимвол = СледующийСимвол;
					СледующийСимвол = Сред(ТекСтрока, сч, 1);
					Если ТекущийСимвол="'" Тогда
						Если СледующийСимвол="'" Тогда
							сч = сч + 1;
							СледующийСимвол = Сред(ТекСтрока, сч, 1);
						Иначе
							Прервать;
						КонецЕсли;
					КонецЕсли;
				КонецЦикла;
				ТекСлово = "";
				ДобавитьСлово(Ответ, Сред(ТекСтрока, нач, сч-нач), ТекТипСлова, СписокКлючевыхСлов, ДопустимыеЗнаки, мОписаниеТипаЧисло, "<str>");
				сч = сч - 1;
				Продолжить;
			КонецЕсли;
			ТекСлово = ТекСлово + ТекущийСимвол;
		КонецЦикла;
		Если Не ПустаяСтрока(ТекСлово) Тогда
			ДобавитьСлово(Ответ,СокрП(ТекСлово), ТекТипСлова, СписокКлючевыхСлов, ДопустимыеЗнаки, мОписаниеТипаЧисло);
		КонецЕсли;
		Ответ = Ответ + "";
	КонецЦикла;	
	Ответ = Ответ + Символы.ПС+"</font></span>";
	Ответ = СтрЗаменить(Ответ, "<keywrd>", "</font><font color=red>");
	Ответ = СтрЗаменить(Ответ, "<text>", "</font><font color=blue>");
	Ответ = СтрЗаменить(Ответ, "<str>", "</font><font color=black>");
	Ответ = СтрЗаменить(Ответ, "<num>", "</font><font color=black>");
	Ответ = СтрЗаменить(Ответ, "<unwn>", "</font><font color=black>");
	Ответ = СтрЗаменить(Ответ, "<symb>", "</font><font color=red>");
	Ответ = СтрЗаменить(Ответ, "<cmnt>", "</font><font color=green>");
	Ответ = СтрЗаменить(Ответ, "<dir>", "</font><font color=brown>");	
	Ответ = СтрЗаменить(Ответ, Символы.Таб, "    ");
	Возврат Ответ;
КонецФункции
Показать
Merkalov; Totoro; Jeka44; cosmo2004; Batman; fancy; mrChOP93; pavlov_dv; starik-2005; ubnkfl; salexdv; +11 Ответить
19. DrAku1a 1580 07.02.22 14:58 Сейчас в теме
(17) В функции "РаскраситьКод1С8"
после
// найти закрывающую кавычку
будет цикл.
После цикла - добавьте
				Если ТекущийСимвол<>"""" или СледующийСимвол="""" Тогда
					сч = сч + 1;
				КонецЕсли;
Прикрепленные файлы:
ТестРаскраскиКода1Сv8.epf
Остальные комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. jan-pechka 356 04.02.22 12:23 Сейчас в теме
2. 1v7 228 04.02.22 17:35 Сейчас в теме
Класс! п.с. - В сети еще есть Онлайн сервис по раскраске кода 1С 8.3
Obertone; +1 Ответить
3. salexdv 2114 04.02.22 18:22 Сейчас в теме
4. 1v7 228 04.02.22 18:23 Сейчас в теме
5. webester 25 05.02.22 03:31 Сейчас в теме
(2) Да сервисов то даже особо не надо) Было дело баловался в детстве с библиотекой highlight.js https://26226.selcdn.ru/paint_1c/export.html но это было давно. Тогда ключевые слова сами добавляли и собирали библиотеку, теперь 1с уже зашит в библиотеку.
6. DrAku1a 1580 05.02.22 12:46 Сейчас в теме
Для тех, кому лень качать - делюсь своей реализацией функции раскраски кода
//Вспомогательная, используется в "РаскраситьКод1С8"
Процедура ДобавитьСлово(Код, Слово, ТекТипСлова, СписокКлючевыхСлов, ДопустимыеЗнаки, мОписаниеТипаЧисло, ТипСлова=Неопределено)
	Если ПустаяСтрока(Слово) Тогда
		Код = Код + СтрЗаменить(СтрЗаменить(СтрЗаменить(Слово, " ", " "), Символы.НПП, " "), Символы.Таб, "    ");
		Возврат;
	ИначеЕсли ТипСлова=Неопределено Тогда
		нсл = НРег(СокрП(Слово));
		Если Найти(СписокКлючевыхСлов, нсл)>0 Тогда
			ТипСлова = "<keywrd>";
		ИначеЕсли Слово = "0" или мОписаниеТипаЧисло.ПривестиЗначение(Слово)<>0 Тогда
			ТипСлова = "<num>";
		Иначе
			ТипСлова = "<text>";
			ЭтоЧисло = Истина;
			Для сч=1 по СтрДлина(нсл) Цикл
				ТекСимв=Сред(нсл, сч, 1);
				Если Найти(ДопустимыеЗнаки, ТекСимв)=0 Тогда
					ТипСлова="<unwn>";
					Прервать;
				ИначеЕсли ТекСимв<>"0" Тогда
					ЭтоЧисло = Ложь;
				КонецЕсли;
			КонецЦикла;
			Если ЭтоЧисло Тогда
				ТипСлова = "<num>";
			КонецЕсли;
		КонецЕсли;
	КонецЕсли;
	Код = Код + ?(ТекТипСлова=ТипСлова, "", ТипСлова) + СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(Слово, "<", "<"), ">", ">"), " ", " "), Символы.НПП, " "), Символы.Таб, "    ");
	ТекТипСлова = ТипСлова;
	Слово = "";
КонецПроцедуры

//Реализует функционал "Оформить фрагмент кода"
Функция РаскраситьКод1С8(ТекстКод) Экспорт
	мОписаниеТипаЧисло = Новый ОписаниеТипов("Число");
	Таб = Символы.Таб;
	НПП = Символы.НПП;
	ДопустимыеЗнаки = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя0123456789abcdefghijklmnop­qrstyvwxyz_";
	СписокКлючевыхСлов = "асинх|async|ждать|await|if|если|then|тогда|elsif|иначеесли|else|иначе|endif|конецесли|do|цикл|for|для|to|по|each|каждого|in|из|while|пока|enddo|конеццикла|procedure|процедура|endprocedure|конецпроцедуры|function|функция|endfunction|конецфункции|var|перем|export|экспорт|goto|перейти|and|и|or|или|not|не|val|знач|break|прервать|continue|продолжить|return|возврат|try|попытка|except|исключение|endtry|конецпопытки|raise|вызватьисключение|false|ложь|true|истина|undefined|неопределено|null|new|новый|execute|выполнить|";
	Ответ = "<span style=""text-align: left; font-family: courier new,courier; color: blue; font-size: 10pt; white-space: pre; display: inline-block; ""><font>";
	ТекТипСлова = "<text>";
	Для нс=1 По СтрЧислоСтрок(ТекстКод) Цикл
		ТекСтрока = СокрП(СтрПолучитьСтроку(ТекстКод, нс));
		дл = СтрДлина(ТекСтрока);
		сч = 0;
		ТекСлово = "";
		КодНеНачался = Истина;
		Пока сч<дл Цикл
			сч = сч + 1;
			ТекущийСимвол = Сред(ТекСтрока, сч, 1);
			Если КодНеНачался Тогда
				Если ТекущийСимвол=" " Или ТекущийСимвол=Таб Или ТекущийСимвол=НПП Тогда
					//ТекущийСимвол = ?(ТекущийСимвол=" " или ТекущийСимвол=НПП, " ", "    ");
					Ответ = Ответ + ТекущийСимвол;
					Продолжить;
				ИначеЕсли ТекущийСимвол="#" или ТекущийСимвол="&" Тогда
					ТекСлово = "";
					ДобавитьСлово(Ответ, Сред(ТекСтрока, сч), ТекТипСлова, СписокКлючевыхСлов, ДопустимыеЗнаки, мОписаниеТипаЧисло, "<dir>");
					Прервать;
				КонецЕсли;
			КонецЕсли;
			КодНеНачался = Ложь;			
			Если ТекущийСимвол=" " Или ТекущийСимвол=Таб Или ТекущийСимвол=НПП Тогда
				Если КодНеНачался Тогда
					Ответ = Ответ + ТекущийСимвол;
					Продолжить;
				КонецЕсли;
				//ТекущийСимвол = ?(ТекущийСимвол=" " или ТекущийСимвол=НПП, " ", "    ");
				ДобавитьСлово(Ответ, ТекСлово+ТекущийСимвол, ТекТипСлова, СписокКлючевыхСлов, ДопустимыеЗнаки, мОписаниеТипаЧисло);
				ТекСлово = "";
				Продолжить;
			ИначеЕсли Найти("():;.,=+-*<>?[]%/", ТекущийСимвол) > 0 Тогда
				ДобавитьСлово(Ответ, ТекСлово, ТекТипСлова, СписокКлючевыхСлов, ДопустимыеЗнаки, мОписаниеТипаЧисло);
				ТекСлово = "";
				//Проверяем на комментарий
				Если ТекущийСимвол="/" и Сред(ТекСтрока, сч+1, 1)="/" Тогда
					ТекСлово = "";
					ДобавитьСлово(Ответ, СокрП(Сред(ТекСтрока, сч)), ТекТипСлова, СписокКлючевыхСлов, ДопустимыеЗнаки, мОписаниеТипаЧисло, "<cmnt>");
					Прервать;
				КонецЕсли;	
				ДобавитьСлово(Ответ, ТекущийСимвол, ТекТипСлова, СписокКлючевыхСлов, ДопустимыеЗнаки, мОписаниеТипаЧисло, "<symb>");
				Продолжить;
			ИначеЕсли ТекущийСимвол="""" или ТекущийСимвол="|" Тогда
				ДобавитьСлово(Ответ, ТекСлово, ТекТипСлова, СписокКлючевыхСлов, ДопустимыеЗнаки, мОписаниеТипаЧисло);
				// найти закрывающую кавычку
				нач = сч;
				сч = сч + 1;
				СледующийСимвол = Сред(ТекСтрока, сч, 1);
				Пока сч<дл Цикл
					сч = сч + 1;
					ТекущийСимвол = СледующийСимвол;
					СледующийСимвол = Сред(ТекСтрока, сч, 1);
					Если ТекущийСимвол="""" Тогда
						Если СледующийСимвол="""" Тогда
							сч = сч + 1;
							СледующийСимвол = Сред(ТекСтрока, сч, 1);
						Иначе
							Прервать;
						КонецЕсли;
					КонецЕсли;
				КонецЦикла;
				ТекСлово = "";
				ДобавитьСлово(Ответ, Сред(ТекСтрока, нач, сч-нач), ТекТипСлова, СписокКлючевыхСлов, ДопустимыеЗнаки, мОписаниеТипаЧисло, "<str>");
				сч = сч - 1;
				Продолжить;
			ИначеЕсли ТекущийСимвол="'" Тогда
				нач = сч;
				сч = сч + 1;
				СледующийСимвол = Сред(ТекСтрока, сч, 1);
				Пока сч<дл Цикл
					сч = сч + 1;
					ТекущийСимвол = СледующийСимвол;
					СледующийСимвол = Сред(ТекСтрока, сч, 1);
					Если ТекущийСимвол="'" Тогда
						Если СледующийСимвол="'" Тогда
							сч = сч + 1;
							СледующийСимвол = Сред(ТекСтрока, сч, 1);
						Иначе
							Прервать;
						КонецЕсли;
					КонецЕсли;
				КонецЦикла;
				ТекСлово = "";
				ДобавитьСлово(Ответ, Сред(ТекСтрока, нач, сч-нач), ТекТипСлова, СписокКлючевыхСлов, ДопустимыеЗнаки, мОписаниеТипаЧисло, "<str>");
				сч = сч - 1;
				Продолжить;
			КонецЕсли;
			ТекСлово = ТекСлово + ТекущийСимвол;
		КонецЦикла;
		Если Не ПустаяСтрока(ТекСлово) Тогда
			ДобавитьСлово(Ответ,СокрП(ТекСлово), ТекТипСлова, СписокКлючевыхСлов, ДопустимыеЗнаки, мОписаниеТипаЧисло);
		КонецЕсли;
		Ответ = Ответ + "";
	КонецЦикла;	
	Ответ = Ответ + Символы.ПС+"</font></span>";
	Ответ = СтрЗаменить(Ответ, "<keywrd>", "</font><font color=red>");
	Ответ = СтрЗаменить(Ответ, "<text>", "</font><font color=blue>");
	Ответ = СтрЗаменить(Ответ, "<str>", "</font><font color=black>");
	Ответ = СтрЗаменить(Ответ, "<num>", "</font><font color=black>");
	Ответ = СтрЗаменить(Ответ, "<unwn>", "</font><font color=black>");
	Ответ = СтрЗаменить(Ответ, "<symb>", "</font><font color=red>");
	Ответ = СтрЗаменить(Ответ, "<cmnt>", "</font><font color=green>");
	Ответ = СтрЗаменить(Ответ, "<dir>", "</font><font color=brown>");	
	Ответ = СтрЗаменить(Ответ, Символы.Таб, "    ");
	Возврат Ответ;
КонецФункции
Показать
Merkalov; Totoro; Jeka44; cosmo2004; Batman; fancy; mrChOP93; pavlov_dv; starik-2005; ubnkfl; salexdv; +11 Ответить
11. salexdv 2114 07.02.22 13:21 Сейчас в теме
(6) Чтобы избежать ошибок при раскраске кода, содержащего html-сущности, которые могут сломать разметку, добавьте в начало функции РаскраситьКод1С8 следующие строки:

ТекстКод= СтрЗаменить(ТекстКод, "<", "& lt;");
ТекстКод= СтрЗаменить(ТекстКод, ">", "& gt;");
14. salexdv 2114 07.02.22 14:31 Сейчас в теме
(11) Вернее не совсем так. Данную замену надо производить, когда указанные сущности встречаются внутри строки или комментария.
16. DrAku1a 1580 07.02.22 14:45 Сейчас в теме
(11) Не в начале функции "РаскраситьКод1С8", а в функции "ДобавитьСлово"
Это на самом деле было реализовано, просто верстка кода на сайте Инфостарта немного скорректировала некоторые символы.
В итоге получилась вот такая глупость: СтрЗаменить(Слово, "<", "<"), ">", ">"), " ", " ")...
Тестовую обработку прилагаю - она делает нормальный HTML-код.
17. salexdv 2114 07.02.22 14:48 Сейчас в теме
(16) Всё равно есть небольшая ошибка.
Прикрепленные файлы:
19. DrAku1a 1580 07.02.22 14:58 Сейчас в теме
(17) В функции "РаскраситьКод1С8"
после
// найти закрывающую кавычку
будет цикл.
После цикла - добавьте
				Если ТекущийСимвол<>"""" или СледующийСимвол="""" Тогда
					сч = сч + 1;
				КонецЕсли;
Прикрепленные файлы:
ТестРаскраскиКода1Сv8.epf
7. 1v7 228 07.02.22 11:21 Сейчас в теме
Протестировал. На типовых кусках кода хорошо работает. Но если в коде есть теги html - всё - баста. Попробуйте вставить код от DrAku1a (сообщение выше).
Прикрепленные файлы:
8. salexdv 2114 07.02.22 11:26 Сейчас в теме
9. salexdv 2114 07.02.22 13:01 Сейчас в теме
(7) Исправил. Справедливости ради замечу, что сервис, ссылку на который вы давали выше тоже выдает ошибку на данном коде. Вернее отображает раскрашенный код он правильно, а вот код для вставки содержит ошибку. Вся проблема в том, что такие HTML-сущности как <> не преобразуются в соответствующие символы. Алгоритм от DrAku1a (6) имеет ту же проблему.
10. 1v7 228 07.02.22 13:08 Сейчас в теме
(9) О! Теперь работает как надо. Спасибо!
12. 1v7 228 07.02.22 13:43 Сейчас в теме
(9) Теперь не корректно красит где в тексте знаки сравнения (<>). Из-за:
Код = СтрЗаменить(Код, "<", "<");
Код = СтрЗаменить(Код, ">", ">");
Но если закомментировать эти замены, ожидаемо сносит html.
По мне так очень сложно пофиксить данный баг. Одни и те же символы выполняют разные роли. Тут даже логику не применить никак
13. salexdv 2114 07.02.22 13:46 Сейчас в теме
(12) Да. такое действительно может быть. Чуть позже исправлю. Скорее всего надо заменять только парные HTML-сущности
15. salexdv 2114 07.02.22 14:37 Сейчас в теме
18. 1v7 228 07.02.22 14:52 Сейчас в теме
20. user1259182 2 07.02.22 16:08 Сейчас в теме
А в режиме реального времени чтоб красил это же текстовое поле с сохранением позиции курсора можно сделать?
21. salexdv 2114 07.02.22 16:13 Сейчас в теме
(20) Для раскрашивания в режиме реального времени лучше использовать эту разработку или, например, решения на основе библиотек SyntaxHighlighter и highlight.js
22. ctahok2 04.08.22 16:02 Сейчас в теме
Оставьте свое сообщение

См. также

Перевод строк в 1С с помощью ЯндексCloud

Инструментарий разработчика WEB-интеграция 8.3.14 Конфигурации 1cv8 Россия Абонемент ($m)

Перевод строковых значений в 1С с помощью яндекс переводчика.

1 стартмани

30.01.2023    1052    0    PonomarevAR    0    

3

Tunesoft: Консоль отчетов для настройки программистом и возможным использованием бухгалтером / менеджером

Инструментарий разработчика Платформа 1С v8.3 8.3.14 Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

26.01.2023    934    4    vladnet    0    

5

Список GUID объектов справочников и документов + код 1С для получения ссылки по GUID

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы 8.3.14 Конфигурации 1cv8 Россия Абонемент ($m)

Обработка предназначена для получения GUID объектов справочников и документов, а так же генерации кода 1С для получения ссылки на элемент справочника по GUID.

1 стартмани

19.12.2022    1262    7    MMMaXXX    0    

3

Конструктор скриптов (расширение)

Инструментарий разработчика Платформа 1С v8.3 8.3.14 Конфигурации 1cv8 Россия Абонемент ($m)

Когда нужен динамически формируемый .bat файл и становится все сложно, мы используем "Конструктор скриптов". Разбираем реализацию расширения на примере конвертации хранилища 1с в Git в формате EDT.

1 стартмани

17.10.2022    1411    1    ivshumelev    0    

3

И снова распаковщик. Теперь на чистом 1С. YellowPacker

Инструментарий разработчика Групповая разработка (Git, хранилище) 8.3.14 Конфигурации 1cv8 Абонемент ($m)

V8Unpack-подобный распаковщик, который делает практически то же, что и всем известный инструмент. Для работы с файлами cf, cfe, epf, erf. Только на языке 1С, без использования внешних файлов, библиотек и компонент.

5 стартмани

22.08.2022    4632    27    VKislitsin    24    

82

Программы для исполнения 488-ФЗ: Маркировка товаров Промо

1 января 2019 года вступил в силу ФЗ от 25.12.2018 № 488-ФЗ о единой информационной системе маркировки товаров с использованием контрольных (идентификационных) знаков, который позволяет проследить движение товара от производителя до конечного потребителя. Инфостарт предлагает подборку программ, связанных с применением 488-ФЗ и маркировкой товаров.

Конфигурация "Памятка" (Справка) для внедренцев и программистов 1С + бонус: реальная база знаний.

Инструментарий разработчика Платформа 1С v8.3 Абонемент ($m)

Простая самописная база для хранения и памяти своих наработок по внедрению конфигураций 1С, а также памятка кода/конструкций языка 1С. +бонус: реальная база знаний внедренца1с за 2018г.

1 стартмани

08.02.2022    5689    42    jan-pechka    17    

24

Поиск соответствия реквизитов объекта источника в объекте приемника

Инструментарий разработчика 8.3.14 Конфигурации 1cv8 Абонемент ($m)

Обработка для поиска соответствия реквизитов объекта источника в объекте приемника. Мною использовалась в конвертации, когда автоматическая система соответствий не находила соответствия.

1 стартмани

27.01.2022    2265    1    andriigontsa    0    

2

Загрузка объектов метаданных расширений в СППР 2.0.2.12

Инструментарий разработчика 8.3.14 Конфигурации 1cv8 Абонемент ($m)

Прототип сервиса для загрузки объектов метаданных расширений в СППР 2.0.2.12.

1 стартмани

16.01.2022    3180    14    jf2000    0    

12

Программное формирование существующих печатных форм

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

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

1 стартмани

17.12.2021    9699    26    RocKeR_13    5    

38

Базовая конфигурация для разработки собственных (кастомных) конфигураций

Инструментарий разработчика 8.3.14 Абонемент ($m)

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

3 стартмани

16.11.2021    3191    7    olegpkc    8    

6

Готовые переносы данных из различных конфигураций 1C Промо

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

Универсальный редактор данных (УРД)

Инструментарий разработчика Платформа 1С v8.3 Абонемент ($m)

Универсальный редактор данных (УРД) - это лучший инструмент в своем классе, который позволяет редактировать реквизиты и движения объектов

1 стартмани

27.08.2021    14101    202    Adeptus    57    

91

Консоль запросов для управляемых форм с параметрами типа Внешние источники данных (ВнешниеИсточникиДанных)

Инструментарий разработчика 8.3.14 Абонемент ($m)

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

1 стартмани

23.08.2021    2930    6    wenzor    0    

3

HTTP-клиент

Инструментарий разработчика Платформа 1С v8.3 Мобильная платформа Конфигурации 1cv8 Абонемент ($m)

Подсистема 1С для работы с HTTP.

1 стартмани

28.07.2021    14564    48    SpaceOfMyHead    48    

89

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

Инструментарий разработчика Управляемые формы 8.3.14 1С:Управление торговлей 11 Абонемент ($m)

Вариант печати файлов WORD из 1С из-под тонкого клиента, подключенного по вэб адресу. В файле показан вариант печати динамических таблиц, то есть таблиц с изменяемым количеством строк. Обработка печати довольно простая. Опробована на Управление торговлей, редакция 11 (11.4.13.155), версия платформы 1С:Предприятие 8.3 (8.3.18.1334)

1 стартмани

10.06.2021    4178    6    user810754    1    

3

Подсистема обработки событий в 1С

Инструментарий разработчика 8.3.14 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)

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

1 стартмани

07.06.2021    8236    56    elcoan    7    

36

Программы для исполнения 54-ФЗ Промо

С 01.02.2017 контрольно-кассовая техника должна отправлять электронные версии чеков оператору фискальных данных - правила установлены в 54-ФЗ ст.2 п.2. Инфостарт предлагает подборку программ, связанных с применением 54-ФЗ, ККТ и электронных чеков.

SimpleCode: редактор кода с подсветкой синтаксиса для Simple UI

Инструментарий разработчика 8.3.14 Конфигурации 1cv8 Абонемент ($m)

Расширение, редактор кода с подсветкой синтаксиса для Simple UI. Удобство разработки не открывая конфигуратора.

1 стартмани

27.04.2021    4430    10    GarickRus    5    

7

Подсистема "Показатели объектов"

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

2 стартмани

06.03.2021    13208    7    pila86    16    

29

Подсистема универсальных предопределенных значений

Инструментарий разработчика 8.3.14 Конфигурации 1cv8 Абонемент ($m)

Готовая подсистема универсальных предопределенных значений упрощает определение объектов в базе данных для разработчиков. При внедренном справочнике "Универсальные предопределенные значения" разработчику достаточно добавить элемент справочника и задать значение объекта конфигурации, чтобы потом использовать наименование элемента при получении значения в определенных строках кода.

2 стартмани

01.03.2021    2940    2    Denis211990    12    

3

"Все функции" только для объектов расширений

Инструментарий разработчика Платформа 1С v8.3 8.3.14 Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

28.02.2021    5104    6    t278    1    

11

FormCodeGenerator Программная доработка форм. Часть 2 (Режим работы "Режим сравнения форм") на примере ERP 2.5

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

5 стартмани

21.12.2020    17769    30    huxuxuya    11    

36

Подборка программ для взаимодействия с ЕГАИС Промо

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

Примеры синтеза речи и воспроизведения WAV файлов с помощью библиотеки Microsoft Speech Application Programming Interface (Speech API, SAPI)

Инструментарий разработчика 8.3.14 Конфигурации 1cv8 Абонемент ($m)

Примеры синтеза речи и воспроизведения WAV файлов с помощью библиотеки  программ для Windows, позволяющей распознавать и(или) синтезировать голос. Может использоваться как учебный пример.

1 стартмани

20.11.2020    4097    3    Hitcher    1    

4

Проверка ведения учета (универсальная)

Инструментарий разработчика Анализ учета Платформа 1С v8.3 Запросы Абонемент ($m)

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

2 стартмани

11.08.2020    10102    58    vozhd    4    

19

Консоль кода для управляемых форм

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

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

1 стартмани

17.07.2020    42463    577    salexdv    423    

324

Внешний регламент для 1С

Инструментарий разработчика Платформа 1С v8.3 Россия Абонемент ($m)

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

1 стартмани

05.03.2020    15632    14    moolex    12    

15

Markdown-editor в 1С (с сохранением в HTML)

Инструментарий разработчика Управляемые формы Конфигурации 1cv8 Абонемент ($m)

В этой обработке вы пишете свой текст, используя синтаксис Markdown, а на выходе получаете чистый HTML-код, избавленный от JS-библиотеки, которая его сформировала. Совместим с Webkit и IE.

1 стартмани

04.07.2019    18626    33    riposte    6    

52

Распознавание и загрузка документов в 1С Промо

Универсальная программа-обработка для распознавания любых сканов или фото первичных документов в 1С (счета-фактуры, УПД, ТТН, акты и тд). Точность распознания до 98%.

от 11 рублей

Модель объекта

Инструментарий разработчика Платформа 1С v8.3 Абонемент ($m)

Подсистема позволяет описать модель данных объекта, где описана зависимость между реквизитами, и затем использовать эту модель в разных сценариях работы с объектом. Версия платформы: 8.3.6 и выше. С небольшими доработками будет работать на 8.2.

1 стартмани

30.06.2019    23166    2    vadim1980    5    

16

CFU & CFE - reader (версия 3.1).

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Обработка для анализа файлов обновлений (.cfu) и расширений (.cfe) в режиме предприятия в любой конфигурации для 1С 8.3.+. Основана на разработке https://infostart.ru/public/97194/.

2 стартмани

21.06.2019    15566    43    vandalsvq    12    

27

Блин, мы забыли включить регламентные задания…

Инструментарий разработчика Платформа 1С v8.3 Абонемент ($m)

Привет, Инфостарт! Сегодня расскажу, как я решил проблему с выключенными регламентными заданиями в рабочих базах. Желая исключить человеческий фактор и минимизировать количество ошибок, я написал небольшую конфигурацию.  В конфигурации два регламентных задания. Первое периодически подключается к кластеру и сохраняет текущие параметры: имя, Сервер БД, базу СУДБ, блокировки входа и регламентных заданий и т.д. Второе задание периодически проверяет эти параметры на ошибки.

1 стартмани

08.04.2019    33119    22    slozhenikin_com    37    

61

Раскраска кода 1С. Второй подход

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Задача раскраски кода 1С в новой версии 1С 8.3.14 с Webkit.

1 стартмани

01.02.2019    15720    76    sikuda    18    

56

Видеокурс-практикум: как подготовить и написать ТЗ, ЗНР, ЧТЗ. Промо

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

3 500 рублей

Конструктор мобильного клиента Simple WMS Client: способ создать полноценный ТСД без мобильной разработки. Теперь новая версия - Simple UI (обновлено 14.11.2019)

Оптовая торговля Производство готовой продукции (работ, услуг) Розничная торговля Учет ОС и НМА Логистика, склад и ТМЦ Инструментарий разработчика Платформа 1С v8.3 Мобильная платформа Бухгалтерский учет Управленческий учет Абонемент ($m)

Simple WMS Client – это визуальный конструктор мобильного клиента для терминала сбора данных(ТСД) или обычного телефона на Android. Приложение работает в онлайн режиме через интернет или WI-FI, постоянно общаясь с базой посредством http-запросов (вариант для 1С-клиента общается с 1С напрямую как обычный клиент). Можно создавать любые конфигурации мобильного клиента с помощью конструктора и обработчиков на языке 1С (НЕ мобильная платформа). Вся логика приложения и интеграции содержится в обработчиках на стороне 1С. Это очень простой способ создать и развернуть клиентскую часть для WMS системы или для любой другой конфигурации 1С (УТ, УПП, ERP, самописной) с минимумом программирования. Например, можно добавить в учетную систему адресное хранение, учет оборудования и любые другие задачи. Приложение умеет работать не только со штрих-кодами, но и с распознаванием голоса от Google. Это бесплатная и открытая система, не требующая обучения, с возможностью быстро получить результат.

5 стартмани

09.01.2019    75249    286    informa1555    246    

206

Легкое и гибкое управление списком доступных баз 1С у пользователей

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Когда в локальной сети много пользователей, а еще большое количество различных баз и при этом каждому нужны свои, то администрирование этого зоопарка превращается в АД! Этот комплекс позволяет централизованно управлять списком доступных баз в разрезе пользователей. За пару кликов можно добавить или убрать базу у всех пользователей.

7 стартмани

05.12.2018    28920    29    RomikR    11    

17

Обработка "Раскраска кода" на управляемых формах (v8.2) статическая (по нажатию кнопки)

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Абонемент ($m)

Выводит в поле html-документа раскрашенный код, как бы он выглядел в конфигураторе. Протестировано на версии 8.2.12.87 и на 8.3.10.2753. Я не первый, кто предлагает такое решение. Дело в том, что обработка была написана мной для себя, для личного использования, так как не устраивали другие варианты (типа сторонних программ, либо онлайн-раскрасок), а уже предложенные обработки либо не качественные, либо нет нужного функционала - нет вставки на форум, например. Сценарий использования: написал код в конфигураторе, отладил в пользовательском режиме и вставил из обработки в офисную программу, либо в статью, либо на форум.

1 стартмани

03.12.2018    5198    9    user717534    4    

12

Очистка кэша 1С 8 (8.0, 8.1, 8.2, 8.3). Грамотная чистка кэша 1С с сохранением настроек.

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Эффективное средство для устранения ошибок, возникающих в локальном кэше 1С на клиенте, которым легко сможет воспользоваться пользователь с любым уровнем знаний. Wsf-скрипт, созданный на стандартном языке автоматизации Windows - "WSH JScript", очищает кэш 1С просто, быстро и безопасно. Кроме варианта, очищающего кэш текущего пользователя, имеется также вариант для чистки кэша 1С всех пользователей терминального-сервера.

1 стартмани

04.11.2018    66267    637    Eugen-S    36    

50

Навигатор по конфигурации базы 1С 8.3

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Абонемент ($m)

Универсальная внешняя обработка для просмотра метаданных конфигураций баз 1С 8.3. Отображает свойства и реквизиты объектов конфигурации, их количество, основные права доступа и т.д. Отображаемые характеристики объектов: свойства, реквизиты, стандартные рекизиты, реквизиты табличных частей, предопределенные данные, регистраторы для регистров, движения для документов, команды, чужие команды, подписки на события, подсистемы. Отображает структуру хранения объектов базы данных, для регистров доступен сервис "Управление итогами". Платформа 8.3, управляемые формы. Версия 1.1.0.93 от 12.03.2023

3 стартмани

28.10.2018    57075    516    ROL32    72    

181

1СПАРК РИСКИ. Сервис оценки благонадежности контрагентов. Промо

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

Управляемая консоль запросов, отчетов 3.8.9 (расширение, внешняя обработка)

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

Работа с запросом и СКД, Полная поддержка пакетных запросов, временных таблиц, Сравнение результатов, текстов, Разбор структуры запроса в виде дерева, Анализ плана запроса, Групповая обработка

5 стартмани

14.08.2018    154181    3478    Evg-Lylyk    800    

619

Позиционирование в помещении с помощью нейросети по сигналу Wi-Fi. Интерактивная карта склада в 1С с показом позиции

Инструментарий разработчика Платформа 1С v8.3 Абонемент ($m)

Данная публикация содержит в себе редактор и интерактивную карту склада или иного помещения, на которой в реальном времени отображается позиция устройства, координаты которого вычисляются по уровням сигнала нескольких роутеров Wi-Fi. В статье и приложенным к ней разработкам предлагаются инструменты и методика для реализации вычисления точной геопозиции внутри помещений с помощью нейронной сети. Конфигурация написана на релизе 1С:Предприятие 8.3.12.1412, клиентское приложение имеет минимальный уровень совместимости SDK -16.

5 стартмани

09.08.2018    44690    35    informa1555    30    

77

Регистры правил [Расширение]

Инструментарий разработчика Платформа 1С v8.3 Управление правами 1С:Управление торговлей 11 Абонемент ($m)

Регистры правил - права доступа, запрет редактирования, автоподстановка реквизитов и т.д.

10 стартмани

15.03.2018    30827    33    33lab    5    

18

Заполняем по шаблону (по умолчанию)

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

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

1 стартмани

08.02.2018    42458    25    mvxyz    17    

79

Программное формирование форматированной строки в стиле html+inline CSS

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

18.11.2017    56193    59    bonv    13    

74