Добрый день! Довольно часто возникают подобные ситуации:
При внесении доработок в клиентскую часть системы, пользователи не видят новых изменений из-за закешированных статических файлов. Подскажите, каким образом можно заставить браузеры подтянуть новые изменения?

Очевидно, что можно очистить кеш браузера, или отключить его вовсе. Но когда система уже эксплуатируется не комильфо каждого пользователя просить очистить кеш своего(их) браузера(ов).

Нравится

2 комментария

Здравствуйте!

Очистку кеша необходимо осуществлять средствами браузера. Пример расширения, которое очищает кеш браузера:
https://chrome.google.com/webstore/detail/cache-killer/jpfbieopdmepaolg…

Если система уже эксплуатируется. Скажем, в ней работает 50 человек. Вносятся доработки.
И для того чтобы все пользователи смогли использовать новый функционал, необходимо либо заставить каждого пользователя очистить кеш своего браузера либо ожидать когда время кеша истечёт?

Показать все комментарии

Добрый день!

Возникла такая проблема: есть сложная форма редактирования, на которой расположен таб, внутри на вкладках таба контролы + на некоторых вкладках - формы (форма с реестром) + на некоторых вкладках сложные формы (внутри формы другие формы).

Есть необходимость кешировать такую форму (сохранять в объекте) после инициализации.
Но довольно часто возникает проблема: при открытии основной формы, которая находится в объекте, вываливает Exception типа pgTest has no parent Window.

Если каждый раз инициализировать форму (не брать из объекта), то все ок.
Никто не сталкивался с таким?

Нравится

5 комментариев

Вот ошибка:

Дата/Время: 27.02.2014 14:21:52
Название компьютера: ххх
Имя пользователя: ххх
Операционная система: Workstation, Build: 7601, 'Service Pack 1'
Системный язык: Русский (Россия)
Процессор: Intel, Intel(R) Core(TM)2 Duo CPU E7500 @ 2.93GHz, MMX
Видеосистема: 1680x1050 pixels, 32 bpp
Время работы системы: 0 day(s) 02:24:13.0578
Время работы программы: 0 day(s) 00:00:44.0273
Исполняемый файл: C:\Program Files (x86)\Terrasoft\Bin\TSClient.exe
Версия: 3.3.2.267
Класс исключения: EOleException
Сообщение об ошибке: Control 'pgDebitors' has no parent window

Стек вызова
Controls.TWinControl.CreateWnd ()
Controls.TWinControl.CreateHandle ()
Comctrls.TPageControl.DeleteTab ()
TSAutomationObject.TBaseAutomationObject.ObjRelease (Line 191, "TSAutomationObject.pas") ()
Comobj.TComObject._Release ()
System.@IntfClear ()
Comobj.TComObject.ObjRelease ()
TSAutomationObject.TBaseAutomationObject.ObjRelease (Line 191, "TSAutomationObject.pas") ()
Comobj.TComObject._Release ()
TSConnectionPoints.TConnectionPointDispatcher.Invoke (Line 592, "TSConnectionPoints.pas") ()
TSConnectionPoints.TConnectionPointDispatcher.Invoke (Line 592, "TSConnectionPoints.pas") ()
Comobj.DispatchInvokeError ()
Comobj.DispatchInvokeError ()

Активные элементы управления:
pcData (TInternalPages)

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

Здравствуйте!
С ходу не получится сказать, в чем проблема. Нужно смотреть на код. Возможно, после закрытия основного окна работает еще какая-то логика на вкладке.
В общем, нужны куски кода с реализацией.

Спасибо, Андрей,

Проблему вроде бы закрыл.
Воркараунд приблизительно следующий:

При закрытии основной формы удаляю с нее компонент вложенного сложного окна (контейнера окна) (остается пустой таб) и потом уже закрываю форму.
function wnd_DocumentEditOnClose(Window) {
Window.DisableEvents();
Self.RemoveComponent(wndDocumentDebitors);
Window.EnableEvents();
wnd_BaseDBEditOnClose(Window);
}

При повторном показе, если сервис берется из массива объектов (не перестраивается форма с нуля) то просто проверяю, есть ли у компонента контейнера окна родительский элемент, если нет - добавляю контейнер окна на страницу и вызываю метод Show().
...............
var DetailWindow = wndDocumentDebitors.Window;
if (!ScriptObject.IsDebitorsInitialized) {
SetAttribute(DetailWindow, 'ParentItemFieldName', 'DocumentID');
DetailWindow.Prepare();
ScriptObject.IsDebitorsInitialized = true;
}
if(!Assigned(wndDocumentDebitors.ParentComponent)){
pgDebitors.Add(wndDocumentDebitors);
DetailWindow.Show();
}
..............

Спасибо за информацию!
Рад, что у Вас получилось.

Показать все комментарии