gifts2017

WYSIWYG редактор на базе TinyMCE

Опубликовал Александр Маляев (maljaev) в раздел Программирование - Работа с интерфейсом

WYSIWYG редактор на базе TinyMCE. Может использоваться как редактор HTML-кода и самостоятельный редактор форматированного текста. Требует ВК 1С++ и FormEx (прилагаются).

Мы тут с Душеловым когда-то почти одновременно написали пару аналогичных работ с использованием TinyMCE, только он для восьмерки писал (http://infostart.ru/public/22237/), а я для семерки (http://www.1cpp.ru/forum/YaBB.pl?num=1253809274). Решил я свою работу тоже на Инфостарт выложить, заодно и TinyMCE обновил до последней версии.

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

Набор кнопочек на панелях редактора можно изменять в файле "Документы\index.htm" редактированием строк начинающихся с "theme_advanced_buttons". Потому что на практике все не нужно, и всякие там смайлики, якоря и прочие излишества можно и убрать, чтобы не смущать пользователя.

Хранить созданные документы можно как во внешних файлах (в моей обработке так и сделано), либо привязывать к разным элементам/документам в строковых реквизитах неограниченной длины (например договора хранить). Можно и другие способы придумать - не суть важно.

Редактор очень и очень неплохо поддерживает вставку документов из MS Word через буфер обмена вместе со всем форматированием, таблицами и т.д. - так что возможно кому-то будет проще набить/открыть документ в Word и потом уже скопировать в 1С.

 

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

Наименование Файл Версия Размер Кол. Скачив.
Редактор
.zip 1,51Mb
04.03.13
84
.zip 1,51Mb 84 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Владимир (vladismi) 02.12.10 16:19
При редактировании в окне появляется код HTML, а не WYSIWYG. Что-то у меня не установлено?
2. Владимир (vladismi) 07.12.10 09:53
Из-за ограничений на IE TinyMCE у меня отказался работать. Поэтому пришлось использовать другой редактор, лежит здесь: Infostart.
Большие спасибы за методики.
3. Максим Чубаров (tycoon_cmn) 10.06.11 14:00
Не работаю нумерованные и ненумерованные списки.
4. Виктор Клименко (dicwork) 26.12.11 01:30
Так работает или нет этот редактор? Коментарии противоречивы. А плюсы я так понимаю люди ставят автоматически.
5. Александр Маляев (maljaev) 26.12.11 04:32
Работает, но не на всех системах. Где-то IE жутко старый, апдейты на систему не ставили, где-то всякими настройками прав прикрыли выполнение активного содержимого и скриптов, а где-то просто система глючная. Но в целом если всё нормально (и приложить мозг на крайняк) - то всё работает. У меня дома на Win7 IE9 и WinXP IE8 работает, у клиентов аналогичные решения на разных осях и серверных и домашних работают, но в некоторых случаях пришлось повозиться (IE проапдейтить и безопасность смягчить). И работает не только редактор, но и отчеты разные, и dom-парсеры, и АРМы разной направленности - принцип у всех один, WebBrowser ActiveX на форме и код на HTML+JS. Редактор - это самое простое, я на нем в первую очередь все решения проверяю на совместимость.
6. Евгений Купцов (Zhe_ka) 26.12.11 14:25
интересная штука, надо опробовать ее
7. pvase (pvase) 07.08.12 12:12
Windows 7 X64 IE 9.0 - Прекрассно работает. Единственное что не устраивает - это уменьшение шрифта в момент редактирования. Т.е. в окне предпросмотра размер нормальный, а если перейти в режим редактирования шрифт становиться очень мелким. Пока не нашел как это побороть.
8. Алексей (ADirks) 17.02.14 13:16
Кстати, может баян, а может и пригодится кому.
Основное назначение - запихнуть в текст письма ссылку на 1С-документ, и по клику в неё документ открывать. В основном это всякие сообщения-алярмы, типа "реализация в убыток" и т.п. В принципе, можно таким же способом любые действия в 1С провоцировать, к примеру запустить какой-нибудь отчет с заданными параметрами.
Ну и в восьмёрке всё то же самое можно.

Ну и ВывестиТЗ() - простенькая табличка, для тех же алярмов.

Функция URL(Объект, Знач стрПредставление = "") Экспорт
	Если стрПредставление = "" Тогда
		стрПредставление = ""+Объект;
	КонецЕсли;
	
	url = "";
	Если ТипЗначения(Объект) = 12 Тогда
		идДок13 = РадугаСервис.ЗначениеВДлиннуюСтрокуБД(Объект);
		идДок13 = СтрЗаменить(идДок13, " ", "_");
		url = ""+стрПредставление+"";
	Иначе
		url = ""+Объект;
	КонецЕсли;
	Возврат url;
КонецФункции

Функция ObjectFromURL(url) Экспорт
	Если Лев(url, 6) = "doc://" Тогда
		идДок13 = Сред(url, 7);
		нПоз = Найти(идДок13, "/");
		Если нПоз > 0 Тогда
			идДок13 = Лев(идДок13, нПоз-1);
		КонецЕсли;
		идДок13 = СтрЗаменить(идДок13, "_", " ");
		
		Док = РадугаСервис.ЗначениеИзДлиннойСтрокиБД("Документ", идДок13);
		
		Возврат Док;
	КонецЕсли;

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

Функция ВывестиТЗ(тз) Экспорт
	//тз//:ТаблицаЗначений
	Перем Заголовок;
	
	нКолонок = тз.КоличествоКолонок();
	нСтрок = тз.КоличествоСтрок();
	
	
	html = "<table style=""border: 1px solid;"" border=""1"" frame=""border""><tbody>";
	
	//Заголовки
	html = html + "<tr>";
	Для нКол = 1 По нКолонок Цикл
		Если тз.ВидимостьКолонки(нКол) = 0 Тогда
			Продолжить;
		КонецЕсли;
		Имя = тз.ПолучитьПараметрыКолонки(нКол,,,, Заголовок);
		Если ПустоеЗначение(Заголовок) = 1 Тогда
			Заголовок = Имя;
		КонецЕсли;
		html = html + "
		|<td><p style=""text-align: center;"">"+Заголовок+"</p></td>";
	КонецЦикла;
	html = html + "</tr>";
	
	//Строки
	Для нСтр = 1 По нСтрок Цикл
		html = html + "<tr>";
		Для нКол = 1 По нКолонок Цикл
			Если тз.ВидимостьКолонки(нКол) = 0 Тогда
				Продолжить;
			КонецЕсли;
			Значение = тз.ПолучитьЗначение(нСтр, нКол);
			Если ТипЗначения(Значение) = 1 Тогда
				html = html + "
				|<td><p style=""text-align: right;"">"+Формат(Значение, "Ч.2")+"</p></td>";
			Иначе
				html = html + "
				|<td>"+Значение+"</td>";
			КонецЕсли;
		КонецЦикла;
		html = html + "</tr>";
	КонецЦикла;


	html = html + "</tbody></table>";
	
	Возврат html;
КонецФункции

Процедура BeforeNavigate2(Контейнер, Ссылка, Флаги, Фрэйм, Пост, Заголовки, Отмена) 
	Объект = ObjectFromURL(Ссылка);
	Если Объект <> 0 Тогда
		Отмена = -1;
		ОткрытьФорму(Объект);
		Возврат;
	КонецЕсли;
КонецПроцедуры
...Показать Скрыть
9. Александр Маляев (maljaev) 17.02.14 13:39
Вот здесь я немного написал как можно реализовать двусторонний обмен между 1С и JS: http://www.1cpp.ru/forum/YaBB.pl?num=1391192680 для УФ.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа