Страница 1 из 1

Добавление нового поля в таблицу KAtMc

Добавлено: 20 фев 2014, 15:00
Zver
Уважаемые форумчане, появилась необходимость добавить новое поле в таблицу KatMc.

Процесс добавления прошел успешно. После потребовалось ещё пересобрать наши триггеры для KatMC.

Осталась только одна проблема связанная с докомпиляцией интерфейса "L_MCU::KAtMC".

При добавлении записи происходит вставка новой записи, но при этом вылетает из Галактики.
То есть, при повторном заходе в Галку эта МЦ есть.
Ресурс с докомпиляцией этого интефейса так же пересобрали.
При отключении докомпиляции этого интерфейса вылета после добавления записи не происходит.

Вот содержимое файла altError.log:

Код: Выделить всё

Runtime error 216 (rtl: попытка обращения к некорректному дескриптору)
in atlantis.rtl at 00017C87

Содержимое стека
 0018E008: 00241438 atlantis.rtl.1:00000438
 0018E02C: 00241438 atlantis.rtl.1:00000438
 0018E054: 006E0069 streams_.dll.5:0001F069
 0018E05C: 00500040 atlexec.exe.1:000FF040
 0018E0C4: 00257C87 atlantis.rtl.1:00016C87

Необработанная исключительная ситуация
Код исключения: C0000005 (Общее нарушение защиты доступа к памяти)
Параметры исключения (2): 00000001 00000008
Адрес исключения: 00258841 atlantis.rtl.1:00017841
Содержимое регистров процессора
 EAX = 0D906008
 EBX = 0D906008
 ECX = 00000000
 EDX = 02B001C4
 ESI = 02B00060
 EDI = 00248B44 atlantis.rtl.1:00007B44
 EBP = 05ECFF28
 ESP = 05ECFE78
 EIP = 00258841 atlantis.rtl.1:00017841
 CS = 0023 База: 00000000 Размер: FFFFFFFF Флаги: CFB
 DS = 002B База: 00000000 Размер: FFFFFFFF Флаги: CF3
 SS = 002B База: 00000000 Размер: FFFFFFFF Флаги: CF3
 ES = 002B База: 00000000 Размер: FFFFFFFF Флаги: CF3
 FS = 0053 База: 7EFD7000 Размер: 00000FFF Флаги: 4F3
 GS = 002B База: 00000000 Размер: FFFFFFFF Флаги: CF3
Содержимое стека
 05ECFE80: 0025841B atlantis.rtl.1:0001741B
 05ECFEC8: 00283507 atlantis.rtl.1:00042507
 05ECFEF0: 00258A1E atlantis.rtl.1:00017A1E
 05ECFF08: 00254E00 atlantis.rtl.1:00013E00
 05ECFF0C: 002AEF8C atlantis.rtl.2:00000F8C
 05ECFF1C: 00412ACC atlexec.exe.1:00011ACC
 05ECFF24: 00412AD4 atlexec.exe.1:00011AD4
 05ECFF2C: 0025A7F9 atlantis.rtl.1:000197F9
 05ECFF34: 00242722 atlantis.rtl.1:00001722
 05ECFF38: 004134F7 atlexec.exe.1:000124F7
 05ECFF4C: 00412CFA atlexec.exe.1:00011CFA
 05ECFF58: 00B0197B atlsock.dll.1:0000097B

Re: Добавление нового поля в таблицу KAtMc

Добавлено: 20 фев 2014, 15:08
Den
Вообще конечно править стандартную структуру БД некомильфо - чудеса всякие могут быть в связи с этим.
Обсуждалось уже на форуме это. Да и разработчики не рекомендует делать сие

Re: Добавление нового поля в таблицу KAtMc

Добавлено: 20 фев 2014, 15:31
Zver
Ознакомился с темой: http://www.tyumbit.ru/gal_forum/viewtop ... %B5#p51791

Может неправильно понял, но добавляться поля должны без сложностей. Не очень понятна фраза про добавление в конец таблицы. Происходит ли это автоматически или надо делать ещё какие-то действия?

Re: Добавление нового поля в таблицу KAtMc

Добавлено: 21 фев 2014, 11:06
Алексей
ничего специального делать не надо, когда добавляете, поле и так попадает в конце таблицы.
по теме, видимо всё же что то не так собрали, раз падает... упрощайте интерфейс докомпиляции, ищите где падает.

Re: Добавление нового поля в таблицу KAtMc

Добавлено: 21 фев 2014, 11:14
edward_K
Не все так просто. Может повезти а может и нет. Есть внешние атрибуты же - чем они не устраивают? На крайняк лучше свою таблу создать и прописать в ней связь на предка.
С vip как правило проблем нет. Поле в конце и все будет нормально.
Проблемы могут начаться когда идет открытие таблицы в dll - там используется жесткое описание структуры таблицы, которое создалось при генерации словаря. В итоге запись полей может просто поехать. KatMC относиться как раз к таким таблам. в которую лучше не лазить зря.
С индексами может чутка попроще - но лучше не экспериментировать лишний раз без острой необходимости.
А так проверьте еще - на том ли exe собрали. Удалили ли DSK, CRF, anlantis.res - как в галке, так и компиляторе, сам рес при сборке. - 99% ошибок 216 связано именно с этим.

Re: Добавление нового поля в таблицу KAtMc

Добавлено: 21 фев 2014, 19:11
Алексей
так как раз для этого в конец таблицы поле и пишется, т.к. в паскале идет обращение с указанием смещения и размерности. при добавлении в конец ничего из этого не меняется.
атрибуты - у нас их столько много что... я уже стараюсь туда не писать, но... не всегда получается.

соглашусь со своей таблицей и ссылкой на нужную. можно сделать одну большу с полями wtable и crec и писать туда различные расширения какие нужно. побольше полей разных типов туда и пользуйтесь когда нужно.