Переключение на Главную Страницу Страницы: 1 [2] 3  ОтправитьПечать
Очень популярная тема (более 25 ответов) Интерактивный ввод нового элемента справочника? (число прочтений - 14929 )
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Интерактивный ввод нового элемента справочника?
Ответ #15 - 09. Сентября 2011 :: 11:33
Печать  
А если сделать так меняем только при записи
Код
Выбрать все
Процедура ПриЗаписи()
	ОшибкаЗаписи=0;
	Попытка
		Записать();
	Исключение
		ОшибкаЗаписи=1;
	КонецПопытки;
	Если ОшибкаЗаписи=0 Тогда
		Форма.Параметр=ТекущийЭлемент();
		СтатусВозврата(0);
		Форма.Закрыть(0);
		return;
	КонецЕсли;
КонецПроцедуры
 

  
Наверх
 
IP записан
 
maljaev
Senior Member
****
Отсутствует


Классический секс с 1С
надоел. Хочется изврата...

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Re: Интерактивный ввод нового элемента справочника?
Ответ #16 - 09. Сентября 2011 :: 11:48
Печать  
Да обычный ActiveX WebBrowser размером во всю форму. Шаблон (HTML, CSS) нарисовал в дримвивере. На форме два активикса: один скрытый, я в него шаблон гружу, а второй для вывода. Ну и используя DOM HTML-документа, выдергиваю куски из шаблона (по ID), заполняю их и вывожу в форму. Потом можно уже динамически прямо в чистовике менять. Удобно, все элементы интерактивные, всё при наведении мыши подсвечивается, подсказки всплывают... При измененении содержимого форма не мигает, отображение моментальное почти. Могу любой блок/стиль добавить/удалить/изменить/заменить - опять же всё быстро и без миганий в отличии от таблицы. возможностей масса, можно яваскрипты использовать, можно прямо из 1С ловить события (например при наведении мыши, при клике) и обрабатывать с отображением на форме. Можно вводить значения прямо в форму (например в какие-то ячейки таблицы). Можно графику выводить, как растровую так и супер-навороченную векторную Подмигивание

Ну вот к примеру шаблон, тока на скриншоте не видно всех красот, т.к. onmouseover только в динамике покажешь. Шапка статичная, а всё что под шапкой - прокручивается. Все кнопки/иконки интерактивные.
  

screen.jpg ( 179 KB | Загрузки )
screen.jpg
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Интерактивный ввод нового элемента справочника?
Ответ #17 - 09. Сентября 2011 :: 12:03
Печать  
Цитата:
Можно графику выводить, как растровую так и супер-навороченную векторную

А векторная графика на какой основе ?
svg или что-то другое
  
Наверх
 
IP записан
 
maljaev
Senior Member
****
Отсутствует


Классический секс с 1С
надоел. Хочется изврата...

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Re: Интерактивный ввод нового элемента справочника?
Ответ #18 - 09. Сентября 2011 :: 12:04
Печать  
SVG или Рафаэль

SVG - если графика на 99% рисуется в редакторе, и потом в 1С уже немного видоизменяется (видимость, раскраска, масштаб и т.д.).

Рафаэль - для рисования "с нуля" из программы.

P.S. Графика кстати тоже интерактивная получается, т.к любыми элементами её можно управлять так же через DOM-модель, и события те же самые поддерживаются и даже анимация.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Интерактивный ввод нового элемента справочника?
Ответ #19 - 09. Сентября 2011 :: 12:16
Печать  
Интересно, тебе за эти красоты отдельно доплачивают ?
Улыбка

ЗЫ: можешь кинуть мини пример шаблона с интерактивными кнопочками ?
...
  
Наверх
 
IP записан
 
maljaev
Senior Member
****
Отсутствует


Классический секс с 1С
надоел. Хочется изврата...

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Re: Интерактивный ввод нового элемента справочника?
Ответ #20 - 09. Сентября 2011 :: 12:20
Печать  
Ёрпст, пожалуста, можешь прямо IE смотреть.

P.S. К сожалению в данном конкретном случае не доплачивают. Тренируюсь, потом на крупных коммерческих проектах пойдет.
  

zp.zip ( 28 KB | Загрузки )
Наверх
 
IP записан
 
maljaev
Senior Member
****
Отсутствует


Классический секс с 1С
надоел. Хочется изврата...

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Re: Интерактивный ввод нового элемента справочника?
Ответ #21 - 09. Сентября 2011 :: 12:29
Печать  
Жалко что WebBrowser сделан на базе IE7 вне зависимости от того какой IE стоит на компе. Соответственно не поддерживается CSS3, а так бы было совсем круто. А на CSS2 кнопки с тенью и закругленными углами приходится делать через ##пу, то есть с помощью вспомогательных png-картинок.
  
Наверх
 
IP записан
 
maljaev
Senior Member
****
Отсутствует


Классический секс с 1С
надоел. Хочется изврата...

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Re: Интерактивный ввод нового элемента справочника?
Ответ #22 - 09. Сентября 2011 :: 12:35
Печать  
Вот пример вывода и заполнения шапки формы.

Код
Выбрать все
Процедура ОбновитьТекстПериода()

	Период=БраузерДок.getElementById("period_zp");
	Если ПустоеЗначение(ТекущийПериод)=1 Тогда
		Период.InnerHTML="Период не выбран";
	Иначе
		Период.InnerHTML=СокрЛП(ТекущийПериод.Наименование)+" ("+СокрЛП(ТекущийПериод.ДатаС)+" - "+СокрЛП(ТекущийПериод.ДатаПо)+")";
	КонецЕсли;

КонецПроцедуры


Процедура ВывестиПанельКнопок()

	ПанельКнопок=ИсходникДок.getElementById("tools");

	НовыйЭлемент=БраузерДок.createElement("div");
	НовыйЭлемент.setAttribute("id","tools");
	НовыйЭлемент.InnerHTML=ПанельКнопок.InnerHTML;

	БраузерДок.body.appendChild(НовыйЭлемент);

	ОбновитьТекстПериода();

КонецПроцедуры


Процедура HTML_DocumentComplete()
	БраузерДок=Браузер.Объект.Document;
	ВывестиПанельКнопок();
КонецПроцедуры


Процедура Source_DocumentComplete()
	Браузер.Объект.Navigate(КаталогФормы+"Оболочка.xhtml");
	ИсходникДок=Исходник.Объект.Document;
КонецПроцедуры


Процедура ПослеОткрытия()

	ВыровнятьРеквизиты();

	Браузер=СоздатьОбъект("АктивИкс");
	Браузер.УстановитьАтрибут(Форма,"HTML");
	Браузер.СоздатьЭУ("Shell.Explorer.2");
	Браузер.ОбработкаСобытий = 1;

	Исходник=СоздатьОбъект("АктивИкс");
	Исходник.УстановитьАтрибут(Форма,"Source");
	Исходник.СоздатьЭУ("Shell.Explorer.2");
	Исходник.ОбработкаСобытий = 1;

	Исходник.Объект.Navigate(КаталогФормы+"Шаблон оболочки.xhtml");

КонецПроцедуры
 

  
Наверх
 
IP записан
 
maljaev
Senior Member
****
Отсутствует


Классический секс с 1С
надоел. Хочется изврата...

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Re: Интерактивный ввод нового элемента справочника?
Ответ #23 - 09. Сентября 2011 :: 12:38
Печать  
А вот обработка событий от формы:

Код
Выбрать все
Процедура HTML_BeforeNavigate2(Контейнер,Ссылка,Флаги,Фрэйм,Пост,Заголовки,Отмена)

	Если Найти(Ссылка,"#")>0 Тогда

		Отмена=1;
		Действие=СокрЛП(Сред(Ссылка,Найти(Ссылка,"#")+1));

		Если Действие="добавить период" Тогда

			ДобавитьПериод();

		ИначеЕсли Действие="удалить период" Тогда

			УдалитьПериод();

		ИначеЕсли Действие="изменить период" Тогда

			ИзменитьПериод();

		ИначеЕсли Действие="выбрать период" Тогда

			ВыбратьПериод();

		КонецЕсли;

	КонецЕсли;

КонецПроцедуры
 

  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Интерактивный ввод нового элемента справочника?
Ответ #24 - 09. Сентября 2011 :: 12:44
Печать  
От спасибо!
Подумаю, куды прикрутить.
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Интерактивный ввод нового элемента справочника?
Ответ #25 - 09. Сентября 2011 :: 13:11
Печать  
maljaev писал(а) 09. Сентября 2011 :: 12:04:
SVG или Рафаэль

SVG - если графика на 99% рисуется в редакторе, и потом в 1С уже немного видоизменяется (видимость, раскраска, масштаб и т.д.).

Рафаэль - для рисования "с нуля" из программы.

P.S. Графика кстати тоже интерактивная получается, т.к любыми элементами её можно управлять так же через DOM-модель, и события те же самые поддерживаются и даже анимация.

сорри за темность что такое Рафаэль.
если можно то на нем маленький примерчик
и чем он лучше(хуже) svg ?
заранее спасибо.
  
Наверх
 
IP записан
 
maljaev
Senior Member
****
Отсутствует


Классический секс с 1С
надоел. Хочется изврата...

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Re: Интерактивный ввод нового элемента справочника?
Ответ #26 - 09. Сентября 2011 :: 13:24
Печать  
http://graphing.ru/i/raphael/

У Рафаэля подход другой. Он не хуже и не лучше.

1. Скажем тебе нужна интерактивная карта района. Разумеется удобнее нарисовать ее в Adobe Illustrator, и потом уже готовой управлять из 1С. И менять ее удобно, если скажем дом новый появился, даже не-программист может это сделать, что бывает важно для клиента.
2. Скажем тебе необходим интерактивный график, в реалтайме отражающий изменения каких-то данных (например биржевые графики). Тогда используем Рафаэль, потому что мы не можем заранее подготовить картинку - нам надо ее каждую секунду формировать/менять в широких пределах.

P.S. В описании к Рафаэлю оболгали чистый SVG - прекрасно и в SVG события ловятся и отрабатываются, и элементы менять можно и даже анимировать их. Рисовать новые элементы только очень сложно, и сильно менять существующие.
  
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: Интерактивный ввод нового элемента справочника?
Ответ #27 - 10. Сентября 2011 :: 07:24
Печать  
maljaev писал(а) 09. Сентября 2011 :: 11:48:
Да обычный ActiveX WebBrowser размером во всю форму.

Красиво, черт побери!
Вернуть из отпуска – обязательно поковыряю!
  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Интерактивный ввод нового элемента справочника?
Ответ #28 - 15. Сентября 2011 :: 07:25
Печать  
maljaev писал(а) 09. Сентября 2011 :: 12:35:
Вот пример вывода и заполнения шапки формы.
У меня почему-то при выполнении Док.body.appendChild(НовыйЭлемент) не находится агрегатный объект appendChild, хотя ТипЗначенияСтр(Док.body) = "OLE.DispHTMLBody".

Что я делаю не так?
  
Наверх
 
IP записан
 
maljaev
Senior Member
****
Отсутствует


Классический секс с 1С
надоел. Хочется изврата...

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Re: Интерактивный ввод нового элемента справочника?
Ответ #29 - 15. Сентября 2011 :: 10:56
Печать  
Чтобы элементы добавлять, надо реальный документ загрузить (пусть даже только костяк с пустым телом) а не через write содержимое прописывать. Может конечно и так как-то можно, но у меня не получилось. И элементы добавлять только после DocumentComplete.
« Последняя редакция: 15. Сентября 2011 :: 13:43 - maljaev »  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 3 
ОтправитьПечать