Ошибка: Cannot Find External Name

Xalet

Well-known member
08.08.2008
410
0
#1
Есть база с шаблоном библиотеки скриптов. База мастер темплейт из которого библиотека тянется в Н баз, в которых библиотека используется.

После обновления дизайна в базах код не видит функций из шаблонной библиотеки. Вылетает с ошибкой Cannot find external name и имя функции.

Думаю, что рекомпайлом оно вылечится, не пробовал пока, нет доступа.

Вопрос собственно в том: оно всегда так будет ломаться после обновления библиотеки в шаблоне и, если да, то как организовать тогда аналог такого обновления?
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 231
17
#2
xalet
оно всегда будет ломаться если вы не умеете правильно править библиотеки - вот так пожалуй коректнее сказать
Чаще всего так происходит когда кто-то правит две библиотеки сразу а одна из них в это время ссылается в другую
 

Xalet

Well-known member
08.08.2008
410
0
#3
Чаще всего так происходит когда кто-то правит две библиотеки сразу а одна из них в это время ссылается в другую
Ну да, так и было. И будет постоянно. Но код при этом корректный. Только обе поменялись.

Скажем есть у меня функция в библиотеке А, которая использектся в библиотеке Б. Я поменял библиотеку Б, сохранил. Потом беру библиотеку А и дорисовываю туда еще функцию, сохраняю. Библиотека Б всегда при этом сломается?
 

Xalet

Well-known member
08.08.2008
410
0
#5
за линк спасибо. Только там про классы и создание объектов класса. И, судя по рассписанному, в моем случае не должно было сломаться вообще (потому как я просто добавил коммент для тестов в шаблонной библиотеке).
 
D

Darker

#6
Поможет переименовывание библиотеки-источника + сохранение, и затем переименовывание в модуле-использования+сохранение.
После удачного теста, переименовать обратно
 
K

Klido

#7
переименовывание библиотеки-источника
ну не обязательно... при изменениях в библах нижнего уровня надо пересохранить явно (типа +пробел,- пробел сохранить) все библы, которые наследуют нижнюю... это VladSh разжевывал и даже технота есть от IBM - лень искать по форуму....
 

Xalet

Well-known member
08.08.2008
410
0
#8
Поможет переименовывание библиотеки-источника + сохранение, и затем переименовывание в модуле-использования+сохранение.
После удачного теста, переименовать обратно
Так смысл весь в том, чтобы иметь отдельную базу с библиотеками, которые будут обновляться автоматом во всех базах, где нужны, и там использоваться агентами, библиотеками, кнопочками и т.д. Чтобы обновлять библиотеки централизовано и не лазить по всем базам, где они используются.
 

Xalet

Well-known member
08.08.2008
410
0
#10
вот и пересохраняйте централизовано... при обновлении пересохраненных библов траблы должны уйти
может я плохо описал...

скажем
1. есть библиотека в которой все функции для сохранения логов(считывание конфигов, записи и т.д.).
2. есть 10 различных баз со своими библиотеками(для каждой уникальные и в общей куче хранить нет смысла)
3. в библиотека из этих 10ти баз используется библиотека для логов.

теперь проблема:
в одной из 10ти баз не хватает функций из библиотеки для логов и ее надо добавить.

добавляем в этой базе и имеем две версии библиотеки, если не полезим во все 10 и не обновим(а ведь реально не полезим, потому как можем и не знать, что оно там используется).

в результате через какое-то время у нас 10 версий библиотеки для логов, что не есть гут...

Потому хотелось бы как-то эту одну(в реале кучу) тянуть из одного места во всех базах без влезания в них и перекомпиливания...
 
K

Klido

#11
в одной из 10ти баз не хватает функций из библиотеки для логов и ее надо добавить.
а как же п.3???

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

получаем N баз на одном шаблоне и во всех правильная библа логов.
 

Xalet

Well-known member
08.08.2008
410
0
#12
Цитата:

(xalet @ 29:07:2010 - 16:20) *



в одной из 10ти баз не хватает функций из библиотеки для логов и ее надо добавить.



а как же п.3???
не хватает функции в библиотеке логов.

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

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

ну и собственно оно и ломается.
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#13
Блин, столько разговоров... Рекомпиляцию всего скрипта запустил себе и все.
Если не лениво, то надо самому построить дерево использования, пройтись по нему снизу вверх, но перед сохранением надо обязательно внести изменение, и удалить сразу, например, пробел.
Лучше всего изменение делать в разделе с Use, иногда в других местах не проходит.
 
K

Klido

#14
вообще ниоткуда не наследуется
в том и фишка - так бы в мастер-шаблоне пересохранили и всё, а так - 10 раз надо пересохранять...

Добавлено:
Рекомпиляцию всего скрипта запустил себе и все
не всегда поможет :) особенно в 8.Х
 

Xalet

Well-known member
08.08.2008
410
0
#15
Блин, столько разговоров... Рекомпиляцию всего скрипта запустил себе и все.
Если не лениво, то надо самому построить дерево использования, пройтись по нему снизу вверх, но перед сохранением надо обязательно внести изменение, и удалить сразу, например, пробел.
Лучше всего изменение делать в разделе с Use, иногда в других местах не проходит.
Так я и не спрашивал, как от ошибки избавиться. Каждый раз во все базы не лазить же с рекомпиляцией.
 

Xalet

Well-known member
08.08.2008
410
0
#17
вроде тут ответили на оба вопроса из основного поста....
Вроде да. Всем спасибо.

Попытаюсь обдумать, как такое сорганизовать:

база наследует дизайн с шаблона, а некоторые эл-ты шаблона (у нас - библ логов) персонально наследует дизайн с шаблона с библом логов.
база наследует дизайн с шаблона - а в нем библы логов нет совсем? Или если в базе указать, откуда берется конкретный элемент, то из общего шаблона он не будет обновляться, а только из того шаблона, который прописан. И это точно поможет? =)
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#18
не всегда поможет smile.gif особенно в 8.Х
Это ж ты писал, что у тебя элементы дизайна лочатся? Може у тебя что с клиентом? :)
Хотя, в 8-ке рекомпиляцией пока не страдал массово. В основном руцями парюсь (зачем? О.о сам не понимаю)

Каждый раз во все базы не лазить же с рекомпиляцией.
Гы, а что мешает? Неплохая практика каждый раз, после обновления рабочей базы, делать рекомпиляцию. Тогда объектный код нормально строится.
 

Xalet

Well-known member
08.08.2008
410
0
#19
Серверы клиенты 6.5.х

Неплохая практика каждый раз, после обновления рабочей базы, делать рекомпиляцию.
ну а про это я уже пытался отписать, что когда работают 10ки прогеров и меняют библы, зачастую не зная всех мест, где они используются, это не вариант. Хочется просто во всем этом бардаке навести чуток порядку...

А пока да. Н версий всех скриптов и все ручками...
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#20
что когда работают 10ки прогеров и меняют библы, зачастую не зная всех мест, где они используются, это не вариант
Вообще-то в таком случае Recompile All LScript хитро отрабатывает на ура, если ошибок нет (или я чего не понял). А самому ходить искать дерево и пересохранять - гемор тот еще.