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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.11.2011, 18:28   #1  
lobster is offline
lobster
Участник
Аватар для lobster
 
115 / 10 (1) +
Регистрация: 25.04.2008
Мне нужно сделать так, чтобы при открытии формы, открывалась форма с новой записью.
Напрмер открывая карточку товара открывалась не существующая карточка, а карточка новая (новая запись в таблице)
готовая для заполнения данных. Как при нажатии клавиши F3, только при открытии формы.
Подскажите пожалуйста, как это сделать.
Старый 23.11.2011, 08:14   #2  
lobster is offline
lobster
Участник
Аватар для lobster
 
115 / 10 (1) +
Регистрация: 25.04.2008
Спасибо за минус. Прокомментируйте пожалуйста, за что...
Старый 23.11.2011, 11:16   #3  
Predatore is offline
Predatore
Участник
 
163 / 17 (1) ++
Регистрация: 29.09.2010
Да что тебе эти минуса? Тебе ж решение нужно, а не плюс.
Так вот, я в Наве не про, но решение выдумал, правда с ограничениями. Форму для ввода новой записи можно будет открыть только если ты заранее определишь на ней значение первичного ключа. Если у тебя ключевое поле из серии номеров или инкрементное, то это в общем-то не проблема. Что-то мне подсказывает, что открыть форму для не существующей записи нельзя. А как вызвать программно на форме создание новой записи (F3) я тоже не знаю. И ещё одно ограничение, форма должна быть не связанной. На связанной почему-то не получается создать запись на OnOpenForm.
В общем, пошагово:
Создаёшь не связанную форму (или снимаешь связь у связанной формы), потом на OnOpenForm пишешь:
Код:
Rec.FINDLAST;
Rec.INIT;
Rec."Key Field" := GetNewKeyValue;
Rec.INSERT;
Где Rec - это таблица, с которой в оригинале связана форма, а функция GetNewKeyValue вычисляет значение для ключевого поля. В итоге у тебя откроется пустая форма с новой записью, в которой определён только ключ.
Решение так себе, но лучше чем ничего, если никто не подскажет как программно создать новую запись на форме.
Можно конечно вообще создать форму на которой не будет связанных элементов, тогда и первичный ключ не нужно будет заранее инициализировать, но тогда мучений предвижу огромное множество, что бы всё это работало как нормальная форма.
Старый 23.11.2011, 12:57   #4  
Cheb is offline
Cheb
Участник
Лучший по профессии 2017
 
138 / 13 (1) ++
Регистрация: 22.09.2002
Адрес: Ростов-на-Дону -> Москва
Можно еще сделать таким образом. Перед открытием формы наложить фильтр на ключ с пустым значением. Естественно, в таблице не должно быть такой записи.
Код:
Item.SETRANGE("No.",'');
FORM.RUNMODAL(0,Item);
И в форме на OnAfterGetCurrRecord:
Код:
SETRANGE("No.","No.");
Конечно, в форме еще нужно написать код, чтобы все корректно работало, но идея думаю ясна.
Старый 23.11.2011, 13:31   #5  
Fly is offline
Fly
Участник
Аватар для Fly
 
102 / 10 (1) +
Регистрация: 05.10.2007
Хм, конечно изврат полный, но стало интересно как такое реализовать
Мое предложение:

OnOpenForm:

SETRANGE("No.",''); // фильтр на первичный ключ

OnInsertRecord(...):Boolean

SETRANGE("No.");


Таким образом, пустой фильтр выставляет нам форму в режим новой записи. Как только мы переходим на любое поле (или вводим первичный ключ и переходим), запись вставляется, ей присваивается номер, фильтр снимается.
Старый 23.11.2011, 13:32   #6  
Fly is offline
Fly
Участник
Аватар для Fly
 
102 / 10 (1) +
Регистрация: 05.10.2007
Цитата:
Сообщение от chebv Посмотреть сообщение
Можно еще сделать таким образом. Перед открытием формы наложить фильтр на ключ с пустым значением. Естественно, в таблице не должно быть такой записи.
Код:
Item.SETRANGE("No.",'');
FORM.RUNMODAL(0,Item);
И в форме на OnAfterGetCurrRecord:
Код:
SETRANGE("No.","No.");
Конечно, в форме еще нужно написать код, чтобы все корректно работало, но идея думаю ясна.
Ха, не видел вашего сообщения. Нажал reply и сидел придумывал решение )) Мы подумали в одну сторону и предложили почти аналогичное решение ))
 


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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 01:03.