В Террасофте на определенном компьютере под любым пользователем возникла такая ошибка:
Дублируется значение свойства 'Caption'. Значение 'Marquesas Standard Time' уже существует
Деббагер показывает на скрипт scr_Utils:
var Item = SingleItemsDictionary(ServiceKey);
if (!Assigned(Item)) {
strong> Item = Services.GetNewItemByUSI(Code);strong>
SingleItemsDictionary(ServiceKey) = Item;
}
При попытке открыть в Админке сервис enm_TimeZone возникает ошибка и сервис не открывается:
Невозможно редактировать сервис 'Common\Dictionaries\TimeZone\enm_TimeZone'. Дублируется значение свойства 'Caption'. Значение 'Marquesas Standard Time' уже существует.
Такая проблема только на компьютере, где установили какую-то программу. На всех других компьютерах такой ошибка нет.
В чем проблема?
Нравится
А выгрузить enm_TimeZone в xml экспортом в файл из администратора и затем поправить его вручную, сохранить и загрузить обратно пробовали? Поищите внутри xml наверняка реально найдете дублирующийся caption.
"Alex GF" написал:На всех других компьютерах такой ошибка нет.
И конфигуратором на других компах открыть получается?
Кстати еще банальный вариант - почистите на проблемных компах кэш, профиль, проверьте версию бинарников. Да, смешной совет, но все же...
Да, на других компьютерах конфигуратором открывается enm_TimeZone нормально! Только на этом одном компьютере такая проблема. Первоначально на нем также не было никаких проблем. Они начались, после того как туда поставили какую-то программу.
Чистили кэш, профиль. Даже сносили и заново ставили Террасофт - ничего не помогает.
В сервисе enm_TimeZone нет никакого Marquesas Standart Time.
"Alex GF" написал:Они начались, после того как туда поставили какую-то программу.
Ну вот похоже туда и копать... тут что то специфичное((
А часовой пояс на проблемной машине смотрели?
по отладке скорее всего лезет из scr_Main функция SetMainWindowCaption()
Там есть строка GetTimeZoneCaption(CurrentUser.TimeZone)) вот посмотрите отладчиком что там за CurrentUser.TimeZone на этой машине
Или из функции CheckTimeZone() там же...
Alex GF,
Здравствуйте! Не помните в чем была причина? Столкнулась с такой же проблемой
В террасофт в enm_TimeZone подтягиваются значения из ОС, то есть на каждом компьютере разные списки. Поэтому ошибка только на некоторых компьютерах. Причиной может быть установка какой-либо программы/обновления, которая дополняет список час.поясов в системе.
Ошибка решается удалением записи, на которую жалуется террасофт через реестр ОС (находим папку с проблемным час.поясом): в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Time Zones
Если речь о Sudan Standard Time, то оно пришло в обновлении Windows. Действительно, если не собираетесь в Судан, проще удалить его в реестре при помощи Regedit.exe.
Теперь и "Острова Теркс и Кайкос UTC-04:00"
Мы "разрулили" эту траблу (второй пункт).
Варианты Решения:
1. Обновить библиотеку местного диалекта для часовых поясов tzres.dll.mui. Не факт, что следующее обновление её не затрёт.
2. Создать новый энумератор (имя + ID), заполнять его кодом JScript ручками из ОС при запуске и заменить вызовы на него. Не забываем таблицы и датасеты типа ds_Contact, tbl_City etc..
3. Заполнять энумератор самим, а хексредактором "исправить" :) злосчастное имя enm_TimeZone в библиотеке TSObjectLibrary
Можно и так. Но в таком случае нет смысла вести все новые экзотические пояса, где нет ни одного пользователя Terrasoft 3.Х. А основные ввести в список вручную один раз. Или в скрипте циклом один раз скопировать из автогенерированного в свою копию.
Я подобное и имел в виду. А замену ссылки в других сервисах можно попробовать сделать массово, выгрузив всю конфигурацию в файлы.
Программа (аналог TSAdmin) PVC от Валерий Андрусик умеет искать прямо в конфигурации; причём, как в скриптах, так и в остальных сервисах.
В коробочной версии TS3.3.1 это tbl_Contact, tbl_City, их датасеты и несколько скриптов.
Мне для поиска хватает выгрузки в файлы, а потом в папке Alt+F7.
Я раньше тоже так работал) Настроить INI-файл выгрузки на нужное, подождать с полчасика..
Кстати, если в TS3.3.1 выгружать скрипты сервисом, то их текст - зазипован в CDATA. А для текстового скрипта - отдельная опция..
А в PVC сразу можно в сервис перейти на нужную строку-структуру. А не копировать имя сервиса и искать его в TSAdmin ))
3.3.1 сейчас довольно редко пользуются. Как и 3.Х вообще.