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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 17.03.2011, 14:04   #1  
nikshev is offline
nikshev
Участник
 
54 / 10 (1) +
Регистрация: 11.12.2010
Здравствуйте! Помогите плиз с очередным тупиком.
Необходимо сделать что в заказе был клиент по умолчанию
при вставке новой записи.

В тригере OnNewRecord формы Sales Order
"Sell-to Customer No.":='К000002';
SalesHeader.VALIDATE("Sell-to Customer No.",'К000002');

Выдает ошибку.
В тригере таблицы (OnInsert) никаких действий.
Может кто сталкивался? Заранее благодарен.
Старый 17.03.2011, 15:21   #2  
Fly is offline
Fly
Участник
Аватар для Fly
 
102 / 10 (1) +
Регистрация: 05.10.2007
Прошу специалистов не закидывать меня камнями, но осмелюсь предложить свое решение.
Вижу в OnInsert триггере 36 таблицы код:

Код:
IF GETFILTER("Sell-to Customer No.") <> '' THEN
  IF GETRANGEMIN("Sell-to Customer No.") = GETRANGEMAX("Sell-to Customer No.") THEN
    VALIDATE("Sell-to Customer No.",GETRANGEMIN("Sell-to Customer No."));
На форме в OnOpenForm триггере добавляю примерно такой код:
Код:
g_recSalesRecSetup.GET;
g_recSalesRecSetup.TESTFIELD("Default Customer No.");
SETRANGE("Sell-to Customer No.", g_recSalesRecSetup."Default Customer No.");
При вставке новой записи выполняет код на OnInsert триггере таблицы, который проверяет фильтры и валидейтит поле.
Единственное - при сбрасывании всех фильтров система работать не будет
p.s. Но возможно один раз сделать GET по настройке и потом на OnAfterGetCurrRecord ставить фильтр )
Старый 17.03.2011, 16:46   #3  
nikshev is offline
nikshev
Участник
 
54 / 10 (1) +
Регистрация: 11.12.2010
Я тут хотел уточнить:
g_recSalesRecSetup это 311 Sales & Receivables Setup?
Старый 17.03.2011, 16:50   #4  
Fly is offline
Fly
Участник
Аватар для Fly
 
102 / 10 (1) +
Регистрация: 05.10.2007
Цитата:
Сообщение от nikshev Посмотреть сообщение
Я тут хотел уточнить:
g_recSalesRecSetup это 311 Sales & Receivables Setup?
Да. Я думаю не стоит "зашивать" в код код клиента. Надо добавить в настройки. Какие? По смыслу более всего подходит "Продажа и Маркетинг Настройка".
Старый 17.03.2011, 16:54   #5  
nikshev is offline
nikshev
Участник
 
54 / 10 (1) +
Регистрация: 11.12.2010
Спасибо за ответ.
Это частичное решение проблемы. Дальше надо как то вызвать тригер onValidate() поля "Sell-to Customer No." для
того чтоб по коду заполнились все необходимые данные. А вот это как раз и не получается в связи с тем что это можно делать не из
каждого триггера!
Старый 17.03.2011, 17:01   #6  
nikshev is offline
nikshev
Участник
 
54 / 10 (1) +
Регистрация: 11.12.2010
Хотя нет! Извиняюсь! Validate проходит, но если выбрать других клиентов то учитывая фильтр, они естественно исчезают!
Да уж-с! Вот непруха-то! Но это уже прогресс!
Старый 17.03.2011, 17:03   #7  
Fly is offline
Fly
Участник
Аватар для Fly
 
102 / 10 (1) +
Регистрация: 05.10.2007
Цитата:
Сообщение от nikshev Посмотреть сообщение
Хотя нет! Извиняюсь! Validate проходит, но если выбрать других клиентов то учитывая фильтр, они естественно исчезают!
Да уж-с! Вот непруха-то! Но это уже прогресс!
А что значит выбрать других клиентов? Вы имеете в виду создать новый заказ, потом выбрать другого клиента и попробовать создать новый заказ?
Но фильтр ведь останется на дефолтном клиенте, он никуда не денется. Или я не прав? В какой момент он слетит?
Старый 17.03.2011, 17:13   #8  
nikshev is offline
nikshev
Участник
 
54 / 10 (1) +
Регистрация: 11.12.2010
Я наверное не досказал. В общем открываем новый заказ. Есть клиент по умолчанию "Розница". Все создается и валидэйтится.
Но например нужно для другого клиента заказ сварганить. Мы делаем новый заказ. В этот заказ вставляется клиент по умолчанию, а
когда мы его меняем, то наш заказ (в связи с фильтром) перестает отображаться. Вот.
Старый 17.03.2011, 17:34   #9  
Fly is offline
Fly
Участник
Аватар для Fly
 
102 / 10 (1) +
Регистрация: 05.10.2007
Цитата:
Сообщение от nikshev Посмотреть сообщение
Я наверное не досказал. В общем открываем новый заказ. Есть клиент по умолчанию "Розница". Все создается и валидэйтится.
Но например нужно для другого клиента заказ сварганить. Мы делаем новый заказ. В этот заказ вставляется клиент по умолчанию, а
когда мы его меняем, то наш заказ (в связи с фильтром) перестает отображаться. Вот.
Не беда. Делаем в форме функцию fn_SetFilter(p_blIsFilter:: Boolean).
В ней пишем:
Код:
IF p_blIsFilter THEN
  SETRANGE("Sell-to Customer No.", g_recSalesRecSetup."Default Customer No.")
ELSE
  SETRANGE("Sell-to Customer No.");
Делаем на форме галочку, называем его "Только Розница", присваиваем ей какую-нибудь глобальную переменную, предварительно ее заведя (например, g_blOnlyDefault).

На триггер этой галочки OnAfterValidate пишем:
Код:
fn_SetFilter(g_blOnlyDefault);
CurrForm.UPDATE(FALSE)
На OnOpenForm вместо SETRANGE пишем:
Код:
g_blOnlyDefault := TRUE;
fn_SetFilter(TRUE)
Таким образом форма у нас будет открываться все время с фильтром по рознице. Как только пользователь захочет завести нового клиента, он может снять признак "Только Розница" и спокойно завести клиента.

Вариант № 2.
Просто создайте новую форму без фильтров. Таким образом у Вас будет одна форма только для клиента "Розница", а вторая - для остальных. И никаких заморочек с признаками. Минус только в том, что придется покупать новую форму
Старый 17.03.2011, 17:45   #10  
nikshev is offline
nikshev
Участник
 
54 / 10 (1) +
Регистрация: 11.12.2010
Большое спасибо! Будем-с копать!
Старый 17.03.2011, 23:26   #11  
.Quattro. is offline
.Quattro.
Участник
Лучший по профессии 2009
 
194 / 22 (1) +++
Регистрация: 22.05.2006
Забудьте про фильтры.
У Вас должно быть следующего рода решение:

Код:
IF GETFILTER("Sell-to Customer No.") <> '' THEN
  IF GETRANGEMIN("Sell-to Customer No.") = GETRANGEMAX("Sell-to Customer No.") THEN
    VALIDATE("Sell-to Customer No.",GETRANGEMIN("Sell-to Customer No."));
// Начало доработки >
IF ("Sell-to Customer No." = '') AND (SalesSetup."Default Customer No." <> '') THEN
  VALIDATE("Sell-to Customer No.",SalesSetup."Default Customer No."));
// Конец доработки <
 


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

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

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