AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.01.2009, 12:07   #1  
Васыо is offline
Васыо
Участник
 
316 / 12 (1) ++
Регистрация: 15.11.2006
Добрый день. Я не программист, но очень хочется разобраться.
Задача следующая: вывести на документы с табличной частью субформу для ввода и просмотра измерений к каждой конкретной строке. На журнальных формах сделать это просто, потому что в таблице с данными основной формы есть номер строки. А как быть с документами типа счетов покупки (на его же примере опишу свои действия)? Субформу на субформу нав сделать не может. Я добавил в таблице Purchase Header поле Line No. Субформу с измерениями привязал к таблице Purchase Header: Document No.=FIELD(No.),Document Type=FIELD(Document Type),Line No.=FIELD(Line No.). Теперь пытаюсь сделать так, чтобы поле Line No. таблицы Purchase Header заполнялось номером текущей строки. В триггер OnAfterGetCurrRecord() формы Purch. Invoice Subform добавил PurchaseHeader."Line No." := "Line No.". Что ещё надо сделать, чтобы эта конструкция заработала? Или я вообще всё делаю неправильно?
Старый 28.01.2009, 13:02   #2  
Alterant is offline
Alterant
Участник
 
378 / 10 (1) +
Регистрация: 31.03.2004
Обычно такие вещи реализуются с помощью триггера OnTimer. На форму кладете 2 сабформы. По таймеру из основной сабформы получаете текущую запись, и передаете ее в подчиненную сабформу и на основании этого ставите там фильтры.

Также решение этой задачи представлено на mibuso:
http://www.mibuso.com/dlinfo.asp?FileID=321 (с использованием таймера)
и
http://www.mibuso.com/dlinfo.asp?FileID=290 (не знаю как сделано, подозреваю, что тоже таймер).

Скачайте объекты - посомтрите.
Старый 28.01.2009, 13:24   #3  
romeo is offline
romeo
Участник
Аватар для romeo
 
564 / 10 (2) +
Регистрация: 31.03.2004
Запускать из субформы другую форму с наложенными фильтрами не вариант? Мне кажется есть свойство формы, которое позволит при вызове ее RUNом динамически менять отображаемую инфу при движении по записям вызывающей формы. То есть, реализовать не субформой, а вызываемой отдельной формой. Потому что таймер - это ОЧЕНЬ ОЧЕНЬ неудобно. Это практически отказ от дебага связанных объектов..
Старый 28.01.2009, 14:40   #4  
Alterant is offline
Alterant
Участник
 
378 / 10 (1) +
Регистрация: 31.03.2004
Цитата:
Сообщение от romeo Посмотреть сообщение
Запускать из субформы другую форму с наложенными фильтрами не вариант? Мне кажется есть свойство формы, которое позволит при вызове ее RUNом динамически менять отображаемую инфу при движении по записям вызывающей формы. То есть, реализовать не субформой, а вызываемой отдельной формой. Потому что таймер - это ОЧЕНЬ ОЧЕНЬ неудобно. Это практически отказ от дебага связанных объектов..
К сожалению, это не работает для вызова из кода. Это свойство не формы, а menuitem или button. Называется оно RunFormLinkType. Форма будет обновляться только в том случае, если ее открыли нажав на кнопку (или выбрав пункт меню) у которого PushAction = RunObject, RunObject = Form XXX, определена связь RunFormLink и RunFormLinkType = OnUpdate. Т.е. в сабформе придется размещать кнопку, что не удобно.

К тому же хочу обратить внимание, что в заказах продажи и покупки открытие измерений в стандарте производится в модальном режиме. Возможно это имеет какой-то тайный смысл (для заголовка это может быть необходимо чтобы вывести окошко "вы поменяли измерения, обновить строки?", а вот почему в строках в модальном - не знаю, видимо чтобы исключить недоразумения пользователя, привыкшего к обновлениям подчиненной формы при движении по главной).
Старый 28.01.2009, 15:20   #5  
romeo is offline
romeo
Участник
Аватар для romeo
 
564 / 10 (2) +
Регистрация: 31.03.2004
Цитата:
Сообщение от Alterant Посмотреть сообщение
К сожалению, это не работает для вызова из кода. Это свойство не формы, а menuitem или button. Называется оно RunFormLinkType. Форма будет обновляться только в том случае, если ее открыли нажав на кнопку (или выбрав пункт меню) у которого PushAction = RunObject, RunObject = Form XXX, определена связь RunFormLink и RunFormLinkType = OnUpdate. Т.е. в сабформе придется размещать кнопку, что не удобно.
Я как раз про этот случай и говорю. Запускать из субформы (строчной части) отдельную форму с RunFormLinkType = OnUpdate по итему из меню (обыграть это как-то, назначив сочетание клавиш). Тогда находясь в одном документе, можно будет работать со строками, не закрывая новую "всплывающую" форму.
Старый 28.01.2009, 16:04   #6  
RedFox is offline
RedFox
Участник
 
1,441 / 10 (0) +
Регистрация: 28.12.2004
Адрес: Киев
Talking
Цитата:
Сообщение от Васыо Посмотреть сообщение
Задача следующая: вывести на документы с табличной частью субформу для ввода и просмотра измерений к каждой конкретной строке. На журнальных формах сделать это просто, потому что в таблице с данными основной формы есть номер строки. А как быть с документами типа счетов покупки (на его же примере опишу свои действия)? Субформу на субформу нав сделать не может. Я добавил в таблице Purchase Header поле Line No. Субформу с измерениями привязал к таблице Purchase Header: Document No.=FIELD(No.),Document Type=FIELD(Document Type),Line No.=FIELD(Line No.). Теперь пытаюсь сделать так, чтобы поле Line No. таблицы Purchase Header заполнялось номером текущей строки. В триггер OnAfterGetCurrRecord() формы Purch. Invoice Subform добавил PurchaseHeader."Line No." := "Line No.". Что ещё надо сделать, чтобы эта конструкция заработала? Или я вообще всё делаю неправильно?
Извините, вдруг с ходу срару не понял правильно и пишу, но можно поссмотреть форму 521 "Application Worksheet".
Там что-то похожее, правда связь "форма-сабформа". Может Вашу задачу можно так же "трансформировать"?
Старый 28.01.2009, 17:20   #7  
Васыо is offline
Васыо
Участник
 
316 / 12 (1) ++
Регистрация: 15.11.2006
Большое спасибо за советы. Попробовал через триггер OnTimer. Работает.
Миниатюры
Нажмите на изображение для увеличения
Название: Dim.gif
Просмотров: 341
Размер:	22.5 Кб
ID:	10425  
Старый 28.01.2009, 17:21   #8  
apanko is offline
apanko
MCTS
MCBMSS
Лучший по профессии 2009
 
1,164 / 139 (7) +++++
Регистрация: 24.02.2005
На всякий случай.

В строках (например, заказа покупки) можно сделать видимыми 8 полей, в которых могут отображаться измерения. Два из них это глобальные измерения, а остальные 6 - это наиболее популярные измерения.

Чтобы настроить список популярных измерений нужно:
1. Финансы, Настройка, Финансовые операции Настройка
2. Закладка Измерения - указать популярные измерения (3-8)
Старый 28.01.2009, 17:24   #9  
Васыо is offline
Васыо
Участник
 
316 / 12 (1) ++
Регистрация: 15.11.2006
Цитата:
Сообщение от apanko Посмотреть сообщение
В строках (например, заказа покупки) можно сделать видимыми 8 полей, в которых могут отображаться измерения. Два из них это глобальные измерения, а остальные 6 - это наиболее популярные измерения.
Они уже заняты и за них постоянно идёт борьба
Старый 28.01.2009, 17:41   #10  
Fordewind is offline
Fordewind
Участник
 
1,134 / 10 (3) +
Регистрация: 01.12.2005
Цитата:
Сообщение от Васыо Посмотреть сообщение
Добрый день. Я не программист, но очень хочется разобраться.
Задача следующая: вывести на документы с табличной частью субформу для ввода и просмотра измерений к каждой конкретной строке. На журнальных формах сделать это просто, потому что в таблице с данными основной формы есть номер строки. А как быть с документами типа счетов покупки (на его же примере опишу свои действия)? Субформу на субформу нав сделать не может. Я добавил в таблице Purchase Header поле Line No. Субформу с измерениями привязал к таблице Purchase Header: Document No.=FIELD(No.),Document Type=FIELD(Document Type),Line No.=FIELD(Line No.). Теперь пытаюсь сделать так, чтобы поле Line No. таблицы Purchase Header заполнялось номером текущей строки. В триггер OnAfterGetCurrRecord() формы Purch. Invoice Subform добавил PurchaseHeader."Line No." := "Line No.". Что ещё надо сделать, чтобы эта конструкция заработала? Или я вообще всё делаю неправильно?
Если у вас в базе измерений не очень много (<9), то можно вывести измерения в сами строчки. Пример можно посмотреть в Ден. Средства Журнал Платежей (форма 255). Там есть поля с названием типа ShortcutDimCode[3]. То есть сабформы дополнительной делать не нужно. Хоть Вы и не программист, но добавить сабформу с измерениями можете, значит и с этим справитесь. Но если что, пишите.

P.S. Пока выводил фразу почти все уже отписали за меня ))))

Так же, кроме метода Alternat со стандартным таймером, есть способ и через XML DOM. Как использовать обе эти вещи можно посмотреть здесь. Но и тот и другой способ лучше применять, когда уже никакой альтернативы придумать не сможете!
Старый 30.01.2009, 17:46   #11  
Sancho is offline
Sancho
Administrator
Аватар для Sancho
Лучший по профессии 2017
Лучший по профессии 2009
 
1,294 / 221 (10) ++++++
Регистрация: 11.01.2006
Цитата:
Сообщение от Васыо Посмотреть сообщение
Они уже заняты и за них постоянно идёт борьба
увеличить ярлыки до 20-ти - 2 часа работы
 

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 20:14.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.