Цитата:
Сообщение от
niksen
а теперь расскажите, с чем это связано?
Цитата:
Сообщение от
niksen
ставлю InnerJoin, без задержек, в итоге ругается на то, что данный датасорс уже используется.
В коде какого-то метода формы или контрола объявленна локальная переменная с именем InventTable. Имя датасурса в асапте также используется в качестве переменной (AutoDeclaration). В результате получается конфликт имён.
Цитата:
Сообщение от
niksen
Хорошо, меняем его название, например на InventTable_1, получаем, что при добавлении любого поля из InventTable на форму, например того же Краткого наименования (NameAlias) и создании любой новой строки заказа вылетает ошибка, что невозможно заполнить номенклатурную группу и т.д.
При вставке строки аксапта автоматически создаёт связанные строки во всех связанных (с типом связи InnerJoin) таблицах. Из-за того что обязательные поля InventTable не проинициализированы ValidateWrite датасурса Inventtable выдаёт ошибку.
Для того чтобы заблокировать вставку строк в связанный датасурс достаточно перекрыть метод write() и не позволить там выполниться команде super(). Аналогично для блокировки удаления строки из связанной таблицы комментируем super() в методе delete(). Но это ещё не всё. Перед вызовом методов write() и delete() аксапта осуществляет соответствующие проерки при помощи методов validateWrite() и validateDelte(). Они то и обнаруживают факт незаполнености обязательных полей. Но так как вставлять или удалять записи мы не собираемся, то смело убираем из этих методов проверки дабы избежать возникновения исключения.