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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.10.2007, 10:41   #1  
gennady is offline
gennady
Участник
 
92 / 11 (1) +
Регистрация: 27.09.2004
Адрес: Иркутск
Это обсуждалось уже в http://forum.mazzy.ru/index.php?showtopic=...art=#entry23794, но вопрос так и не был выяснен. У меня схожая проблема.
Мне необходимо заполнять определенные поля таблицы из некоего шаблона, содержащего номера таблиц, полей и их содержимого по умолчанию. Для этой операции я, естественно, использую RecordRef, нахлобучивая на нее Rec. Если на форме задать кнопку, вызывающую соотв. функцию, то после ввода новой строки и нажатии кнопки все отрабатывает нормально. Но необходимо вызывать эту ф-ю автоматически после ввода новой строки. В какой бы триггер формы я не поместил вызов ф-ии, выводиться все то же сообщение об ошибке (см. заголовок). Никакие коммиты, модифаи, апдейты формы не помогают. Похоже, что нави не закончила все свои дела с новой записью, а я пытаюсь ее смодифить через ссылку на нее. И, увы, нет триггера, что-то вроде OnAfterInsert.
Можно ли как-то все же начать эту транзакцию, никто не разобрался?
Старый 16.10.2007, 12:50   #2  
Голышев Михаил is offline
Голышев Михаил
Участник
 
106 / 10 (1) +
Регистрация: 03.07.2006
Я бы попробовал через временную таблицу.
Например в Тригере OnInsert сделал код такого содержания:

TempRec := Rec;
TempRec.INSERT;
RecRef.GETTABLE(TempRec);

Your_Func(RecRef);

TempRec.SETRECFILTER;
TempRec.FINDFIRST;

Rec := TempRec;
Старый 16.10.2007, 13:20   #3  
artkashin is offline
artkashin
Участник
MCBMSS
 
519 / 18 (2) ++
Регистрация: 06.12.2006
1. Поставьте в свойстве формы Delayed Insert - No (решение быстрое но кривоватое :-)
Старый 16.10.2007, 14:14   #4  
Milk is offline
Milk
Участник
 
242 / 12 (1) ++
Регистрация: 08.06.2006
Gennady Antropov, а можно поподробнее?
Я так понял, у вас списочная форма? На какой таблице она основана, если вы вводите данные в разные таблицы?
Может быть, код надо расположить в триггере этой таблицы?
Старый 17.10.2007, 04:28   #5  
gennady is offline
gennady
Участник
 
92 / 11 (1) +
Регистрация: 27.09.2004
Адрес: Иркутск
Цитата:
Сообщение от golyshev Посмотреть сообщение
Я бы попробовал через временную таблицу.
У нас есть таблица-шаблон, содержащая номера таблиц, некоторых из полей с тексами значения по умолчанию. Пользователь их заполняет и, к примеру, при заведении нового клиента (из формы 21) или поставщика уже имеет некоторые поля заполненными. Так как имеем дело с номерами полей и таблиц, приходится использовать RecRef и FieldRef. Это я к пояснению задачи.
Впрочем, то, что предложил golyshev подошло, большое ему спасибо с респектом.
Спасибо также и всем другим, кто откликнулся.
Старый 17.10.2007, 09:04   #6  
rmv is offline
rmv
Участник
 
481 / 11 (1) +
Регистрация: 15.02.2005
Возможно exit(false) на триггере поможет
Старый 18.10.2007, 04:42   #7  
gennady is offline
gennady
Участник
 
92 / 11 (1) +
Регистрация: 27.09.2004
Адрес: Иркутск
На каком триггере? OnInsert? Так он просто вставить не даст и все. Впрочем, как я уже писал, моя проблема была решена благодаря совету golyshev. Толко я вызов ф-ии вставил не в триггер OnInsert (там я только поставил флаг: WasInsered := TRUE), а в триггер OnBeforePutRecord, естесственно, с вызовом ее по этому флагу.
 


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

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

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