Показать сообщение отдельно
Старый 16.04.2004, 18:29   #1  
Alex_V is offline
Alex_V
Участник
 
159 / 10 (1) +
Регистрация: 19.02.2003
триггер OnLookup поля формы
добавил в таблицу Item поле "Manufacturer Name" - flowfield - показывает название производителя (Lookup(Manufacturer.Name WHERE (Code=FIELD(Manufacturer Code))))

клиент захотел чтоб на форме товаров (Item Card) показывалось поле именна Название Производителя а не его код и выбор соответстенно осуществлять при проваливании в список производителей из этого поля.

1 способ - реаллизовал через триггер OnLookup поля "Manufacturer Name" формы товара: код следующий

IF Manufacturer.GET("Manufacturer Code") THEN
Manufacturers.SETRECORD(Manufacturer);
Manufacturers.LOOKUPMODE(TRUE);
IF Manufacturers.RUNMODAL = ACTION::LookupOK THEN BEGIN
Manufacturers.GETRECORD(Manufacturer);
VALIDATE("Manufacturer Code", Manufacturer.Code);
//Text := Manufacturer.Name;
EXIT(TRUE);
END;

EXIT(FALSE);
//триггре OnValidate поля Manufacturer Code таблицы Item
//имеет строку CALCFIELDS("Manufacturer Name")

в этом способе при последующем переходе на другое поле выдается ошибка "формула вычисления для вычисляемого поля Название Производителя в таблице товар должна начинаться с Sum(..."


2 способ - реаллизовал через триггер OnAssistEdit поля "Manufacturer Name" формы товара: код следующий

IF Manufacturer.GET("Manufacturer Code") THEN
Manufacturers.SETRECORD(Manufacturer);
Manufacturers.LOOKUPMODE(TRUE);
IF Manufacturers.RUNMODAL = ACTION::LookupOK THEN BEGIN
Manufacturers.GETRECORD(Manufacturer);
VALIDATE("Manufacturer Code", Manufacturer.Code);
END;

3 способ написать OnLookup триггер поля Manufacturer Name" таблицы Item

во 2-м и 3- м случаях не работает в том случае если руками стираем знаение из поля Manufacturer Name - выдается тажже самая ошибка что и первом случае при переходе на следующее поле


в чем может быть причина появления ошибки?