Имя: Пароль:
1C
1С v8
политика безопасности блокирует исполнение JavaScript-на странице
0 ученица2
 
30.10.24
14:12
Здравствуйте. Вопрос для самых продвинутых.
Кто-нибудь пробовал добавлять план здания? Этаж это html-страница, как сайт, только локальный. И там с помощью языка JavaScript реализовано выделение областей.
Подводишь мышку к участку на плане и появляется информация, как подсказка, номер помещения, площадь и другая по требованию заказчика.
Сначала всё было отлично. Но в какой-то момент заказчик попросил не информацию поменять, а сам план, стену передвинуть. После изменения файла подсказка работать перестала. Мышку подводишь к ячейке и тишина. При этом не работает только файл по конкретному исправленному этажу. Остальные этажи показывает.
Скорее всего изначально оболочкой были даны разрешительные сертификаты или что-то еще на работу, потом мы изменили содержимое файла первого этажа, оболочка посчитала что это теперь другой файл, опасный, и блокирует его работу. Именно оболочка, если запустить страницу этажа просто в эксплорере, то все работает, т.е. это не политика безопасности пользователя. А вот про настройки блокировок самой оболочки 1С нигде ничего не пишет.

Например при выполнении строки кода:

	ДокументСтраница = Элементы.СтраницаПоэтажногоПлана.Документ;
	
	ОкноБраузера = ДокументСтраница.defaultView;
	ОкноБраузера.searchOnPlan();

получаем ошибку:
Метод объекта не обнаружен (searchOnPlan)

Уже второй год пошёл и не можем исправить. Может кто сталкивался с такой проблемой?

Платформа: 1С:Предприятие 8.3 (8.3.25.1394)
Конфигурация: Бухгалтерия предприятия 3.0 (3.0.161.22)
Расширения конфигурации:
- Аренда
1 Волшебник
 
30.10.24
14:13
Вот дураки. Испортили хорошую вещь!
2 sikuda
 
30.10.24
14:48
(0) Открыть получившийся код страницы и найти другую функцию которая реально существует.

Как пришел Webkit ничего не меняется, каких-то локальных политик  безопасности в 1С не нашел
3 Смотрящий
 
30.10.24
14:48
(0) В ДокументСтраница у вас наверняка не Document а какой нить DataTable

Свойства defaultView и там и там одинаковые - поэтому ошибка на ОкноБраузера = ДокументСтраница.defaultView; не генерируется, а генерируется далее на вызове searchOnPlan

За 2 года никто в отладчик не посмотрел ?
4 sikuda
 
30.10.24
15:37
(3) Ты зачем ученицу сбиваешь с толка? Свойство Document это HTML DOM Documents, вот у него и буду всякие глобальные объекты как свойства...

Отлично работает
Элементы.СтраницаHTML.Document.editor.setValue(Код1С);

editor - глобальный объект на странице типа  
<script type='text/javascript'>
  var editor = ...
</script>


Кстати Элементы.СтраницаHTML.Document.window = Элементы.СтраницаHTML.Document.defaultView
6 DiMel_77
 
30.10.24
18:28
(0) Нет там никаких блокировок, легко можно проверить добавив простой alert в скрипт вашей страницы. Просто кривые руки, может с путями к скриптам ошиблись при корректировке. Как там скрипты добавляются? (через инлайн, выгрузкой во временный каталог, а может какой нибудь скрытый объект в картинках HTML макета?)
7 ученица2
 
31.10.24
10:26
(6) Руки у нашего программиста самые лучшие, золотые, но не может человек знать всё и  обо всём. Для этого форум и существует, чтобы делиться. )))
Вот что он ответил:
Файл этажа - обычная html страница, со вставками JavaScript. Она и в браузере работает так же, как в 1С, только информацию о помещении не показывает, только контуры подсвечивает. Т.е. при открытии страницы выполняется скрипт запуска процедуры обработки движений мыши и нажатия ее кнопок. Когда мышка останавливается, определяются ее координаты, по таблице координат помещений (тоже в файле) определяется на каком помещении остановились, далее список координат помещения скармливается процедуре рисования многоугольника.
8 Мультук
 
31.10.24
10:50
(7)

<Мысли вслух>

Яндекс-карты в отчетах и обработках для 1С, это тоже обычная html страница, со вставками JavaScript.

Однако многочисленные 1С поделки
-- покажи доставку на карте
-- покажи где были сегодня наши ТП

работают. Каким-то чудным образом перемещение мыши и её кнопок тоже работает.

Удачи!

P.S.
Я не web-разработчик.
9 Garykom
 
31.10.24
11:06
(7) >при открытии страницы выполняется скрипт
вот эта штука для ПолеHTML после перехода c IE на WebKit перестала работать правильно
10 Garykom
 
31.10.24
11:08
(9)+ раньше можно было переход по "вкладкам" командного интерфейса отслеживать через хак со скрытым ПолеHTML (на каждой форме) и init()
11 DiMel_77
 
31.10.24
11:09
(7) Смотрите, вы говорите что возможно 1С блокирует выполнение JS. Это легко проверить добавив в код скрипта который выполняется вывод сообщения пользователю через alert. Таким способом можно исключить ситуацию, что движок WebKit каким то образом блокирует JS. (я не думаю что это возможно). Есть конечно особенности - не все события отрабатывают, некоторые блокируются. Например событие onmousewheel+Ctrl, но я не думаю, что это ваш случай. Даже если каким то образом запретили JS (в чем я не уверен), вы можете манипулировать деревом DOM из 1С напрямую, заменив "addEventListener" на "ДобавитьОбработчик" в 1С и т.п. (Я так делал контекстные меню чисто на 1С без JS для поля HTML). Вы же можете открыть инструменты разработчика для поля HTML (Ctr+Alt+Shift+F12) и отладить JS код в 1С.