Значение 'Marquesas Standard Time' уже существует

В Террасофте на определенном компьютере под любым пользователем возникла такая ошибка:

Дублируется значение свойства 'Caption'. Значение 'Marquesas Standard Time' уже существует

Деббагер показывает на скрипт scr_Utils:

var ServiceKey = Code + UniqueCode;
        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' уже существует.

Такая проблема только на компьютере, где установили какую-то программу. На всех других компьютерах такой ошибка нет.
В чем проблема?

Нравится

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

А выгрузить 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.

Теперь и Sao Tome Standard Time. Лечение аналогичное.

Теперь и "Острова Теркс и Кайкос UTC-04:00"

Мы "разрулили" эту траблу (второй пункт).

Варианты Решения:

1. Обновить библиотеку местного диалекта для часовых поясов tzres.dll.mui. Не факт, что следующее обновление её не затрёт.

2. Создать новый энумератор (имя + ID), заполнять его кодом JScript ручками из ОС при запуске и заменить вызовы на него. Не забываем таблицы и датасеты типа ds_Contact, tbl_City etc.. 

3. Заполнять энумератор самим, а хексредактором "исправить" :)  злосчастное имя enm_TimeZone в библиотеке TSObjectLibrary

Можно и так. Но в таком случае нет смысла вести все новые экзотические пояса, где нет ни одного пользователя Terrasoft 3.Х. А основные ввести в список вручную один раз. Или в скрипте циклом один раз скопировать из автогенерированного в свою копию.

Заполнили через Services.SaveItem(), всё в норме. :)

Я подобное и имел в виду. А замену ссылки в других сервисах можно попробовать сделать массово, выгрузив всю конфигурацию в файлы.

Программа (аналог TSAdmin) PVC от Валерий Андрусик умеет искать прямо в конфигурации; причём, как в скриптах, так и в остальных сервисах.

В коробочной версии TS3.3.1 это tbl_Contact, tbl_City, их датасеты и несколько скриптов.

Мне для поиска хватает выгрузки в файлы, а потом в папке Alt+F7.

Я раньше тоже так работал) Настроить INI-файл выгрузки на нужное, подождать с полчасика..

Кстати, если в TS3.3.1 выгружать скрипты сервисом, то их текст  - зазипован в CDATA. А для текстового скрипта - отдельная опция..

А в PVC сразу можно в сервис перейти на нужную строку-структуру. А не копировать имя сервиса и искать его в TSAdmin ))

3.3.1 сейчас довольно редко пользуются. Как и 3.Х вообще.

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