|
Не загружается HTML документ | ☑ | ||
---|---|---|---|---|
0
Alekzander Wolf
23.11.16
✎
10:04
|
Нет опыта работу с данным объектом. Ситуация такая получаю Страница1ПолеHTMLДокумента с типом ПолеHTMLДокумента, далее мне нужно обратиться к Страница1ПолеHTMLДокумента.Документ (к его методу getElementsByTagName("body")) - не получается, смотрю отладчик Страница1ПолеHTMLДокумента.Документ показывает ошибку чтения значения. Дайте направление куда копать.
|
|||
1
DrShad
23.11.16
✎
10:21
|
что в самом поле?
|
|||
2
Alekzander Wolf
23.11.16
✎
10:26
|
(1) в смысле?
|
|||
3
DrShad
23.11.16
✎
10:28
|
в прямом
там должен быть текст HTML, давай его сюда |
|||
4
Alekzander Wolf
23.11.16
✎
10:29
|
У после HTML документа есть событие ДокументСформирован не могу его поймать отладчиком, значит ли это что документ не хочет формироваться?
|
|||
5
DrShad
23.11.16
✎
10:33
|
ну удачи вам в изучении
|
|||
6
Alekzander Wolf
23.11.16
✎
10:34
|
||||
7
Alekzander Wolf
23.11.16
✎
10:46
|
(5) и даже не напишешь на что обратить внимание?
|
|||
8
DrShad
23.11.16
✎
10:57
|
так написал же уже
у тебя документ пустой либо корявый, а ты в него даже заглянуть не умееешь |
|||
9
DrShad
23.11.16
✎
10:57
|
||||
10
Alekzander Wolf
23.11.16
✎
11:13
|
(9) неплохо было это все изучить, но задача стоит не изучить все, а разобраться почему не работает конкретный участок кода в 1с. Как посмотреть что у меня пустой или корявый документ?
|
|||
11
Alekzander Wolf
23.11.16
✎
11:15
|
У меня просто на форме это поле с именем Страница1ПолеHTMLДокумента и два события которые не хотят отрабатыватьcz ДокументСформирован и onclick
|
|||
12
DrShad
23.11.16
✎
11:18
|
ок, давай начнем с садика
как попало это поле на форму и что в него заполняется? а самое интересное, нафейхоа тебе body? |
|||
13
Alekzander Wolf
23.11.16
✎
11:38
|
(12) поле используется для чата, по сути в нем должна отображаться переписка
|
|||
14
DrShad
23.11.16
✎
11:42
|
ты на вопросы ответишь? или так и будем в телепатию играть?
|
|||
15
Alekzander Wolf
23.11.16
✎
11:54
|
БлокТекстДляВозврата = "";
Если ТипБлока = "Заголовок" Тогда БлокТекстДляВозврата = " <HTML><HEAD> | <META http-equiv=Content-Type content=""text/html; charset=utf-8""> | <STYLE> | div | { | font-family: Verdana; | margin:2px; | font-size: 13px; | } | .messHeader | { | margin-top:6px; | font-weight: bold; | } | .input | { | color:#f00; | } | .output | { | color:#00f; | } | .status | { | color:#888; | font-size: 11px; | } | .info:LINK, .info:VISITED, .info:ACTIVE { TEXT-DECORATION: NONE; color:#888; font-size: 11px; } | .info:HOVER { TEXT-DECORATION: NONE ;COLOR:RED; } | </STYLE> | </HEAD> | <BODY id=page onload=""window.scrollTo(0,document.getElementById('page').scrollHeight)"">"; ИначеЕсли ТипБлока = "ВходящееСообщение" Тогда Если ЗначениеЗаполнено(СсылкаНаОбъект) Тогда БлокТекстДляВозврата = " <DIV class=""messHeader input"">" + УдалитьЗапрещенныеСимволы(АвторСообщения) + " (" + УдалитьЗапрещенныеСимволы(ДатаРегистрации) + ") <a href=""#ОткрытьИнформациюОСообщении=" + УдалитьЗапрещенныеСимволы(ИдентификаторСообщенияНаЭкране) + "ff*ff"">(i)</a></DIV> | <DIV><SPAN class=""status"" id=""" + УдалитьЗапрещенныеСимволы(ИдентификаторСообщенияНаЭкране) + """>"+УдалитьЗапрещенныеСимволы(СтатусСообщения)+"</SPAN><a href=""#ОткрытьСсылку=" + УдалитьЗапрещенныеСимволы(Сообщение) + "dd*dd"">"+УдалитьЗапрещенныеСимволы(СокрЛП(СсылкаНаОбъект))+"</a></DIV>"; Иначе //обычное сообщение БлокТекстДляВозврата = " <DIV class=""messHeader input"">" + УдалитьЗапрещенныеСимволы(АвторСообщения) + " (" + УдалитьЗапрещенныеСимволы(ДатаРегистрации) + ") <a href=""#ОткрытьИнформациюОСообщении=" + УдалитьЗапрещенныеСимволы(ИдентификаторСообщенияНаЭкране) + "ff*ff"">(i)</a></DIV> | <DIV><SPAN class=""status"" id=""" + УдалитьЗапрещенныеСимволы(ИдентификаторСообщенияНаЭкране) + """>"+УдалитьЗапрещенныеСимволы(СтатусСообщения)+"</SPAN>" + УдалитьЗапрещенныеСимволы(Сообщение) + "</DIV>"; КонецЕсли; ИначеЕсли ТипБлока = "ИсходящееСообщение" Тогда Если ЗначениеЗаполнено(СсылкаНаОбъект) Тогда БлокТекстДляВозврата = " <DIV class=""messHeader output"">" + УдалитьЗапрещенныеСимволы(АвторСообщения) + " (" + УдалитьЗапрещенныеСимволы(ДатаРегистрации) + ") <a href=""#ОткрытьИнформациюОСообщении=" + УдалитьЗапрещенныеСимволы(ИдентификаторСообщенияНаЭкране) + "ff*ff"">(i)</a></DIV> | <DIV><SPAN class=""status"" id=""" + УдалитьЗапрещенныеСимволы(ИдентификаторСообщенияНаЭкране) + """>"+УдалитьЗапрещенныеСимволы(СтатусСообщения)+"</SPAN><a href=""#ОткрытьСсылку=" + УдалитьЗапрещенныеСимволы(Сообщение) + "dd*dd"">"+УдалитьЗапрещенныеСимволы(СокрЛП(СсылкаНаОбъект))+"</a></DIV>"; Иначе //обычное сообщение БлокТекстДляВозврата = " <DIV class=""messHeader output"">" + УдалитьЗапрещенныеСимволы(АвторСообщения) + " (" + УдалитьЗапрещенныеСимволы(ДатаРегистрации) + ") <a href=""#ОткрытьИнформациюОСообщении=" + УдалитьЗапрещенныеСимволы(ИдентификаторСообщенияНаЭкране) + "ff*ff"">(i)</a></DIV> | <DIV><SPAN class=""status"" id=""" + УдалитьЗапрещенныеСимволы(ИдентификаторСообщенияНаЭкране) + """>"+УдалитьЗапрещенныеСимволы(СтатусСообщения)+"</SPAN>" + УдалитьЗапрещенныеСимволы(Сообщение) + "</DIV>"; КонецЕсли; //<a class="info" href=""#ОткрытьСсылку=" + ТекстСсылка + "dd*dd"">(i)</a> ИначеЕсли ТипБлока = "Подвал" Тогда БлокТекстДляВозврата = "</BODY></HTML>"; КонецЕсли; Возврат БлокТекстДляВозврата; |
|||
16
Alekzander Wolf
23.11.16
✎
11:56
|
(14) оно? не я делал, сам сейчас активно гуглю и отладчиком бегаю.
|
|||
17
DrShad
23.11.16
✎
11:57
|
молодец, теперь поставь точку останова на возврат, получи весь текст, сохрани его в текстовом редакторе как страницу HTML и открой в браузере
|
|||
18
DrShad
23.11.16
✎
11:59
|
и еще бы код где эта функция вызывается, потому как по функции вроде валидный текст должен получаться
|
|||
19
Alekzander Wolf
23.11.16
✎
12:05
|
(17) вроде что-то открывается
Пример: Менеджер (23.11.2016 14:55:36) (i) (доставлено) прив |
|||
20
Alekzander Wolf
23.11.16
✎
12:06
|
(18) Процедура ВыводСообщенийВФормуСообщений(ФормаСообщений, Элемент = Неопределено) Экспорт
//определяем имя текущего элемента ТекущаяСтраница = ФормаСообщений.ЭлементыФормы.Панель.ТекущаяСтраница; ТекущийЭлемент = ФормаСообщений.ЭлементыФормы[ТекущаяСтраница.Имя + "ПолеHTMLДокумента"]; ИзменялсяСтатусПрочтения = Ложь; ЭлементыФормы = ФормаСообщений.ЭлементыФормы; Если Элемент = Неопределено Тогда //обрабатываем все поля ОбрабатываемОдногоПользователя = Ложь; Иначе ОбрабатываемОдногоПользователя = Истина; ИмяСтраницы = СтрЗаменить(Элемент.Имя, "ПолеHTMLДокумента", ""); Пользователь = ЭлементыФормы.Панель.Страницы[ИмяСтраницы].Значение; КонецЕсли; ТаблицаСообщений = ФормаСообщений.ТаблицаСообщений; МассивСтрок = ТаблицаСообщений.НайтиСтроки(Новый Структура("Выведено", Ложь)); Если МассивСтрок.Количество() = 0 Тогда Возврат; КонецЕсли; //Попытка // ИмяПоляТекущейСтраницы = ЭлементыФормы.Панель.ТекущаяСтраница.Имя; //Исключение // ИмяПоляТекущейСтраницы = ""; //КонецПопытки Для Каждого Стр из МассивСтрок Цикл Если ОбрабатываемОдногоПользователя Тогда Если Стр.Пользователь <> Пользователь Тогда Продолжить; КонецЕсли; ТекстПоля = ""; Иначе ТекстПоля = ""; //Здесь ищем страницу, на которой нужно отобразить сообщение СтраницаПользователя = ПолучитьСтраницуПользователя(ЭлементыФормы, Стр.Пользователь); ИмяСтраницы = СтраницаПользователя.Имя; Элемент = ЭлементыФормы[ИмяСтраницы+"ПолеHTMLДокумента"]; КонецЕсли; Если Стр.Полученное Тогда ТекстПоля = ТекстПоля + ПолучитьБлокТекстаПоляHTML("ВходящееСообщение", Стр.Пользователь, Стр.ДатаРегистрации, Стр.ИдентификаторСообщенияНаЭкране, "", Стр.Сообщение, Стр.СсылкаНаОбъект); Если ТекущийЭлемент = Элемент Тогда //устанавливаем статус прочтения Если Не ЗначениеЗаполнено(Стр.ДатаПрочтения) Тогда Стр.ДатаПрочтения = ТекущаяДата(); ЗаписьРегистра = РегистрыСведений.Сообщения.СоздатьМенеджерЗаписи(); ЗаписьРегистра.ИдентификаторИнформационнойБазы = Стр.ИдентификаторИнформационнойБазы; ЗаписьРегистра.ИдентификаторСообщения = Стр.ИдентификаторСообщения; ЗаписьРегистра.Прочитать(); ЗаписьРегистра.ДатаПрочтения = Стр.ДатаПрочтения; ИзменялсяСтатусПрочтения = Истина; ЗаписьРегистра.Записать(); Если Стр.ОтправительМК Тогда //формируем задачу на отправку пакета о прочтении ЗаписьПакетаНаОтправку = РегистрыСведений.ПакетыНаОтправку.СоздатьМенеджерЗаписи(); ЗаписьПакетаНаОтправку.ВнутреннийИдентификаторПакета = УправлениеМобильнымиСотрудниками.ПолучитьИдентификаторНовогоПакетаНаОтправку(); ЗаписьПакетаНаОтправку.ИдентификаторОбъекта = Стр.ИдентификаторСообщения; ЗаписьПакетаНаОтправку.ИдентификаторИнформационнойБазы = Стр.ИдентификаторИнформационнойБазы; ЗаписьПакетаНаОтправку.ВидДанных = "Сообщение"; ЗаписьПакетаНаОтправку.ВидПакета = "Сообщение (дата прочтения)"; ЗаписьПакетаНаОтправку.ДатаСозданияПакета = Стр.ДатаПрочтения; ЗаписьПакетаНаОтправку.ПолучательПакета = Стр.Пользователь; ЗаписьПакетаНаОтправку.Записать(); КонецЕсли; КонецЕсли; КонецЕсли; Иначе //в ответ будем ждать дату доставки и дату прочтения СтатусВыводимогоСообщения = ПолучениеСтатусаОтправленногоСообщения(Стр); ТекстПоля = ТекстПоля + ПолучитьБлокТекстаПоляHTML("ИсходящееСообщение", глЗначениеПеременной("глТекущийПользователь"), Стр.ДатаРегистрации, Стр.ИдентификаторСообщенияНаЭкране, СтатусВыводимогоСообщения, Стр.Сообщение, Стр.СсылкаНаОбъект); КонецЕсли; Стр.Выведено = Истина; ДобавитьНовоеСообщениеВПолеHTML(Элемент, ТекстПоля); КонецЦикла; Если ИзменялсяСтатусПрочтения Тогда ТекущаяСтраница.Заголовок = СокрЛП(ТекущаяСтраница.Значение); //принудительно обновим список собеседников ФормаСпискаСобеседников = Обработки.ОбменСообщениями.ПолучитьФорму("СписокСобеседников"); Если ФормаСпискаСобеседников.Открыта() Тогда ФормаСпискаСобеседников.ОбновитьДеревоПользователей(); КонецЕсли; КонецЕсли; КонецПроцедуры |
|||
21
Alekzander Wolf
23.11.16
✎
12:06
|
(18) вряд ли она что-то даст
|
|||
22
Alekzander Wolf
23.11.16
✎
12:12
|
Функция которая вызывается называется ПолучитьБлокТекстаПоляHTML
|
|||
23
DrShad
23.11.16
✎
12:15
|
я вижу, но только для входящего и исходящего сообщения, а где для Заголовка и подвала?
|
|||
24
Alekzander Wolf
23.11.16
✎
12:15
|
потом из процедуры в 20 вызывается процедура:
Процедура ДобавитьНовоеСообщениеВПолеHTML(Элементформы, ТекстПоля) Экспорт СтраницаПоля = Элементформы.Документ.getElementsByTagName("body").item(0); ЭлементДляДобавления = Элементформы.Документ.CreateElement("div"); ЭлементДляДобавления.innerHTML = ТекстПоля; СтраницаПоля.appendChild(ЭлементДляДобавления); Попытка Элементформы.Документ.parentWindow.eval("window.scrollTo(0,document.getElementById('page').scrollHeight)"); Исключение ИмеющийсяТекст = Элементформы.ПолучитьТекст(); НовыйТекст = СтрЗаменить(ИмеющийсяТекст, "</BODY></HTML>", ТекстПоля + "</BODY></HTML>"); Элементформы.УстановитьТекст(НовыйТекст); КонецПопытки; КонецПроцедуры и там ругается на строчку СтраницаПоля = Элементформы.Документ.getElementsByTagName("body").item(0); |
|||
25
Alekzander Wolf
23.11.16
✎
12:16
|
{ОбщийМодуль.ОбменСообщениями.Модуль(366)}: Ошибка при получении значения атрибута контекста (Документ)
СтраницаПоля = Элементформы.Документ.getElementsByTagName("body").item(0); по причине: HTML документ не готов |
|||
26
DrShad
23.11.16
✎
12:21
|
так а где Заголовок и подвал?
|
|||
27
Alekzander Wolf
23.11.16
✎
12:24
|
(23)
Процедура ПервоначальноеЗаполнениеПоляHTML(ЭлементФормы) Экспорт ТекстПоля = ПолучитьБлокТекстаПоляHTML("Заголовок"); ТекстПоля = ТекстПоля + ПолучитьБлокТекстаПоляHTML("Подвал"); ЭлементФормы.УстановитьТекст(ТекстПоля); КонецПроцедуры |
|||
28
Alekzander Wolf
23.11.16
✎
12:25
|
ПРи открытии формы сообщения
|
|||
29
Alekzander Wolf
23.11.16
✎
12:37
|
Страница1ПолеHTMLДокумента.Документ показывает ошибку чтения значения
Не с этого нужно было начинать? |
|||
30
Alekzander Wolf
23.11.16
✎
13:13
|
ап
|
|||
31
Сильф
23.11.16
✎
13:37
|
Я думаю, собака порылась где-то здесь:
ПолеHTMLДокумента (HTMLDocumentField) Документ (Document) Использование: Только чтение. Описание: Тип: COMОбъект. Предоставляет доступ к HTML документу. Описание объекта, в целом, определяется стандартом World Wide Web Consortium (W3C) Document Object Model (DOM) Level 1 (http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/). Но объект имеет особенности, связанные с реализацией. ПолеHTMLДокумента реализовано с использованием WebBrowser Control (http://msdn.microsoft.com/en-us/library/aa752040(VS.85).aspx). Тип свойства документ соответствует типу HTMLDocument http://msdn.microsoft.com/en-us/library/ms531073(VS.85).aspx. |
|||
32
Сильф
23.11.16
✎
13:42
|
Вот чего нагуглил тебе: forum.infostart.ru/forum26/topic40554/message436215/#message436215
|
|||
33
floverr
23.11.16
✎
14:36
|
Семён семёныч.....ну этож ващеее....Этож должны еще в школе на уроках информатики про ХТМЛ рассказывать то...
с каких пор ХТМЛ стал отдельным документом то? чего то делается вкорне не верно тут... Вводная: формат HTML - обычный текст (XML - то же обычный текст кстать)... Поле ХТМЛ в 1ц - Поле, которое обычный форматированный текст показывает в неком красивом виде, вид этот зависит напрямую от тегов в самом тексте который скормили этому полю. т.е. читает текст, находит теги и согласно этим тегам показывает этот текст пользователю во всей красе своей, жирным выделяет что то, красненьким или синеньким буковки раскрашивает...аналогично браузеру ентернет эксплорер, мазиле, опере и т.п.. Поле ХТМЛ обячно связано с каким то текстовым реквизитом, в этом реквизите и сидит Текст, который данное поле читает. ну как то так примерно что ли. |
|||
34
Alekzander Wolf
23.11.16
✎
15:56
|
(31) скорее всего где-то здесь.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |