компьютерный форум
Вернуться   Компьютерный форум > Программирование и вебстроительство > 1C (Все версии) > WEB расширение 1С 8.0


Ответ
 
LinkBack Опции темы Опции просмотра
Старый 21.07.2006, 09:19   #1
Mad
Пользователи
 
Регистрация: 20.07.2006
Сообщений: 168
По умолчанию

С чего всё начиналось.

Есть 2 конфы для которых разрабатываются вэб-приложения. Первое работает нормально, востребовано и его я пока не трогаю (пусть себе работает). Когда приступил к разработке второго начались проблемы с двумя приложениями сразу: блокировались .dll приложений, вызывались не те функции и т.п. Почитал доку, узнал, что для разделения приложений используются IBAlias. Вставил в новое. Первое приложение, которое пока не трогал, продолжает работать нормально. А вот с тем, где используется IBAlias есть проблемы.

Итак о проблемах и путях их решения:

1. Авторизация. Поборол анализом IL-кода v8web-библиотек. Оказывается, параметры сессии, отвечающие за авторизацию в 1с должны называться "UserName"+ и "UserPassword"+. Заработало, успокоился.

2. Приложение всё равно ищет 1cv8.dll вместо 1cv8.dll. Причём ищет на внутреннем пререндере V8EditGrid, который инициализируется програмно (например в DefaultObjectForm.aspx). Что самое интересное, гриды созданые руцями на странице вроде работают нормально.

3. В v8TextBox перестали работать кнопки выбора. :blink:

Plz, если кто уже морочился, подскажите как лечится :help:




Mad вне форума  
Digg this Post!Bookmark Post in Technorati
Ответить с цитированием
21.07.2006, 09:19
Техник
реклама
По умолчанию

Старый 21.07.2006, 09:51   #2
han
Пользователи
 
Регистрация: 12.05.2006
Сообщений: 79
По умолчанию

Я сейчас посмотрел в дефолтовых формах, там прямо можно установить значение IBAlias

***
private string IBAlias = string.Empty;
***
if (Request.Params["IBAlias"] != null)
IBAlias = Request.Params["IBAlias"];
***
Посмотри, откуда он инициализируется и может руками в самих формах изменишь, а может используешь стандартные средства, чтобы при обновлении расширения не менять код.


А что значит перестала работать кнопка?
Выскакивает ошибка javascript?
Для эксперемента, если поставить свойство ForceSelectUrl в истину, что будет?
han вне форума  
Digg this Post!Bookmark Post in Technorati
Ответить с цитированием
Старый 21.07.2006, 09:52   #3
Mad
Пользователи
 
Регистрация: 20.07.2006
Сообщений: 168
По умолчанию

п.3. Пока нашел только одно решение:

ForceSelectUrl=True
SelectUrl=

Единственная проблема - необходимо разрабатывать специализированные формы для всех объектов
Mad вне форума  
Digg this Post!Bookmark Post in Technorati
Ответить с цитированием
Старый 21.07.2006, 09:55   #4
han
Пользователи
 
Регистрация: 12.05.2006
Сообщений: 79
По умолчанию

Гыгы мы одинаково думаем
han вне форума  
Digg this Post!Bookmark Post in Technorati
Ответить с цитированием
Старый 21.07.2006, 09:59   #5
Mad
Пользователи
 
Регистрация: 20.07.2006
Сообщений: 168
По умолчанию

Цитата:
Я сейчас посмотрел в дефолтовых формах, там прямо можно установить значение IBAlias

***
private string IBAlias = string.Empty;
***
if (Request.Params["IBAlias"] != null)
IBAlias = Request.Params["IBAlias"];
***
Посмотри, откуда он инициализируется и может руками в самих формах изменишь, а может используешь стандартные средства, чтобы при обновлении расширения не менять код.
Фишка в том, что все гриды имеют IBAlias, при отладке ConstructForm() смотрел все внутренние поля гридов (BaseGrid) там тоже всё гуд. А вот сообщение об ошибке с тассировкой стека и последующий анализ говорит, что когда в гриде рендерятся V8TextBox-сы, их IBAlias пустой, отсюда попытка загрузить 1cv8.dll

Ещё. Такая проблема наблюдается пока только в DefaultObjectForm.

Пошёл дальше. В objectDS в конструкторе напрямую указал алиас и удалил из кода все строки, которые могли бы его переопределить. При создании Грида алиас прописывал явно. Ноль.

В форме создал бэзлич нивидимых гридов с прописанным алиасом, поборол ошибку создания прописыванием ссылки на DS с таб частями. При обходе табличных частей объекта не создавал новые гриды, а делал видимыми существующие и переопределял в них ссылку на табчасть. Ноль.

Теперь единственная идея - пересобрать московские длл. Грустно. :blink:
Mad вне форума  
Digg this Post!Bookmark Post in Technorati
Ответить с цитированием
Старый 24.07.2006, 13:57   #6
Mad
Пользователи
 
Регистрация: 20.07.2006
Сообщений: 168
По умолчанию

Разработчики веб-расширения меня порадовали.

Итак, уж коль вам приспичило использовать это чудо-свойство IBAlias между прочим придётся подправить V8TextBoxScripts.js (aspnet_client/1cv8):
1. Заменить все this.IBAlias на this.metadata (на всякий случай с учётом регистра).
2. Функция findV8TypeInfo
....
requestV8TypeInfo(name, IBAlias) (в оригинале IBAlias пропущено).

В DefaultObjectForm процедура ConstructForm() участок, где создаём гриды, необходимо добавить

editGridCtrl.EditInSeparateWindow = true;
(Это уже на уровне шаманства. Анализ .dll говорит о том, что всё должно быть гуд, но EditGrid всё равно не видит алиаса и при попытке генерить текстбоксы лезет в 1cv8.dll. Редактирование в отдельном окне приводит к тому, что в результирующий html попадает обыкновенный грид)

ЗЫ FireFox рулит.
ЗЗЫ Если шо - пишите

Mad вне форума  
Digg this Post!Bookmark Post in Technorati
Ответить с цитированием
Старый 25.07.2006, 01:37   #7
han
Пользователи
 
Регистрация: 12.05.2006
Сообщений: 79
По умолчанию

Спасибо за столь подробное и ясное решение проблемы. Буду иметь ввиду, как правильно работать с IBAlias
han вне форума  
Digg this Post!Bookmark Post in Technorati
Ответить с цитированием
Ответ


Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Вкл.



Текущее время: 17:34. Часовой пояс GMT.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd. Перевод: zCarot
Content Relevant URLs by vBSEO 3.5.0 RC2