Проблема с getfirst и Loop по таблице Dogovor

Программирование на Atlantis: приемы и подходы, обмен опытом

Модераторы: larin, Screw

Max_Ural
партнер
Сообщения: 82
Зарегистрирован: Ср, 19/09/2007 08:35
Имя Фамилия: Максим Шагубаков
Откуда: Галактика-Урал
Контактная информация:

Проблема с getfirst и Loop по таблице Dogovor

Сообщение Max_Ural » Вт, 12/07/2011 08:50

Здравствуйте.
Есть интерфейс с двумя полями для выбора Контрагента и договоров.
С выбором контрагента все хорошо - выбирается в каталоге и отображается в интерфейсе.
Выбор договоров сделан с использованием интерфейса L_Dogovor::GetSomeDogovor
Из маркера, который возвращает данный интерфейс, берем Nrec и пытаемся найти договор.
Getfirst по Nrec'у не находит.
В логе видно, что Nrec берется из маркера правильный, в саппорте по этому Nrec'у находит договор.
Попробовали заменить его Loop - тот же эффект.

Если сделать Loop с использованием функции FoundMarker - происходит цикл по таблице.
Во вложении архив проекта. Ресурс могу выслать по почте (не выкладывается из-за ограничения размера 256К)

Чтобы проявилась ошибка - необходимо выбрать контрагента, у которого есть договор.
И в интерфейсе выбора договора выбрать один договор. При этом название поля Договор в интерфейсе не изменится.

Подскажите пожалуйста, в чем может быть причина?
Вложения
17_Управленческий_отчет_по_платежам.rar
(18.35 КБ) 179 скачиваний

den
заказчик
Сообщения: 117
Зарегистрирован: Пт, 26/10/2007 14:16
Имя Фамилия: Денис Кучин
Откуда: Геомостпроект НПО

Re: Проблема с getfirst и Loop по таблице Dogovor

Сообщение den » Вт, 12/07/2011 11:33

var объявите на уровне ЛОТ. Наверняка поможет...

Max_Ural
партнер
Сообщения: 82
Зарегистрирован: Ср, 19/09/2007 08:35
Имя Фамилия: Максим Шагубаков
Откуда: Галактика-Урал
Контактная информация:

Re: Проблема с getfirst и Loop по таблице Dogovor

Сообщение Max_Ural » Вт, 12/07/2011 11:46

Действительно, когда объявил переменные внутри запроса - заработало.
Не могли бы пояснить знающие люди, чем вызвано неоднозначное поведение операторов навигации по таблице?
Почему для таблицы Katorg работает позиционирование, а для Dogovor не работает?

Аватара пользователя
Screw
корпорация
Сообщения: 73
Зарегистрирован: Пт, 14/09/2007 22:54
Имя Фамилия: Виталий Корзюк
Откуда: ТопСофт
Контактная информация:

Re: Проблема с getfirst и Loop по таблице Dogovor

Сообщение Screw » Чт, 04/08/2011 11:35

Внимательно читаем содержимое лога компиляции:

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

[i] Используется поле или переменная CDOG лог.таблицы вместо переменной объекта
    (стр.139, поз.58 в D:\PROJECTS\FORUM.GALAKTIKA.RU\fmMain.vip)
          if getFirst  GETFIRST Dogovor where ((Comp(cDog) /== Dogovor.nRec)) = tsOk {

Иными словами, вместо переменной, как Вы ожидали, используется одноимённое поле какой-то из включённых в ЛТ таблиц, имеющее более "близкую" область видимости с точки зрения модификатора. Как только переменная cDog переносится в ЛТ, её приоритет увеличивается, и она начинает использоваться в модификаторе.

Читайте логи, товарищи!


Вернуться в «Программирование»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя