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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.10.2009, 01:44   #1  
vtulka is offline
vtulka
Участник
 
12 / 10 (1) +
Регистрация: 27.09.2009
Привет всем знатокам.
Есть такой вопрос: нужно написать codeunit , который бы реагировал на события в таблице. Т.е. например, есть таблица Поставщик. При создании нового поставщика, удалении, изменении, переименовании необходимо чтобы выполнялась процедура. Задача процедуры следующая: отслеживать все вышеописанные действия с таблицей Поставщик и заносить в новую таблицу записи об этих изменениях. В новой таблице есть поле типа Option: Insert, Update, Rename, Delete.
Так вот подскажите пожалуйста, КАК ОТСЛЕДИТЬ какой из триггеров таблицы Поставщик выл вызван, чтобы вписать правильный процесс (Insert, Update, Rename, Delete) в поле новой таблицы ??
Старый 04.10.2009, 09:55   #2  
apanko is offline
apanko
MCTS
MCBMSS
Лучший по профессии 2009
 
1,164 / 139 (7) +++++
Регистрация: 24.02.2005
Есть такой кодеюнит и таблица в стандарте:
Таблица 405
Кодеюнит 423

Они правда сложнее того, что вам нужно, но принцип посмотреть можно.
Вызов кодеюнита 423 происходит в программном модуле 1 в триггерах:

Код:
OnGlobalInsert(RecRef : RecordRef)
ChangLogMgt.LogInsertion(RecRef);

OnGlobalModify(RecRef : RecordRef;xRecRef : RecordRef)
ChangLogMgt.LogModification(RecRef,xRecRef);

OnGlobalDelete(RecRef : RecordRef)
ChangLogMgt.LogDeletion(RecRef);

OnGlobalRename(RecRef : RecordRef;xRecRef : RecordRef)
ChangLogMgt.LogRename(RecRef,xRecRef);
Возможно, если нужно следить только за таблицей "Поставщик", то вызовы кодеюнита следует вставить только в нее (в соотвествующие триггеры).
Старый 13.11.2009, 23:35   #3  
vtulka is offline
vtulka
Участник
 
12 / 10 (1) +
Регистрация: 27.09.2009
Всем спасибо! Вот каким было решение.

Создаем codeunit с такой функцией:

Код:
CopyFromVendor(VAR vend : Record Vendor;process : 'Insert,Delete,Update,Rename';VAR rec : Code[10])

expvend.TRANSFERFIELDS(vend);

expvend."Last Date Modified":= TODAY;

expvend."Last Time Modified":= TIME;

expvend."No. Old":=rec;

CASE process OF
 
process::Rename:

expvend.Process:=expvend.Process::Rename;

process::Insert:

expvend.Process:=expvend.Process::Insert;

process::Delete:

expvend.Process:=expvend.Process::Delete;

process::Update:

expvend.Process:=expvend.Process::Update;

END;

expvend.INSERT(TRUE);
Вот такой код нужно добавить в код таблицы Поставщик в соответствующем триггере.
Очевидно, что среди переменных таблицы Поставщик создается переменная типа Option, которой присваиваются возможные значения: 'Insert,Delete,Update,Rename'. В нужном триггере таблицы Поставщик передается нужное значение этой переменной
в функцию нашего кодюнита.

Код:
OnInsert()

reportExp.copyFromVendor(Rec,process::Insert,xRec."No.";

 

OnModify(

NavisionExchange.CopyFromVendor(Rec,process::Update,xRec."No.";

 

OnDelete()

NavisionExchange.CopyFromVendor(Rec,process::Delete,xRec."No.";

 

OnRename()

NavisionExchange.CopyFromVendor(Rec,process::Rename,xRec."No.";
Старый 14.11.2009, 13:31   #4  
Sancho is offline
Sancho
Administrator
Аватар для Sancho
Лучший по профессии 2017
Лучший по профессии 2009
 
1,294 / 221 (10) ++++++
Регистрация: 11.01.2006
кошмар...
1. зачем?
2. почему так криво?

например, в первой ф-ции вместо кейса пишем одну строчку:
expvend.Process:=process;
...

3. чем не угодила таблица 405?
4. почему добавляем триггеры в таблицу Поставщик, а не используем события из 1-го юнита?
Старый 14.11.2009, 21:29   #5  
vtulka is offline
vtulka
Участник
 
12 / 10 (1) +
Регистрация: 27.09.2009
Цитата:
Сообщение от Sancho Посмотреть сообщение
кошмар...
1. зачем?
2. почему так криво?

например, в первой ф-ции вместо кейса пишем одну строчку:
expvend.Process:=process;
...

3. чем не угодила таблица 405?
4. почему добавляем триггеры в таблицу Поставщик, а не используем события из 1-го юнита?

я догадывалась, что это через одно место). Просто меня никто ничему не учил и это решение первое пришедшее в голову.
Если не трудно хотелось бы поподробней узнать что такое таблица 405 и как использовать события из 1 юнита.

про expvend.Process:=process; вообще не знала.

И еще вопрос. Где можно посмотреть код и назначение всех реализованных функций Навижина?? Потому что о существовании таблицы 405 я может и догадывалась, но чтобы ее использовать - никогда.
P.S. доступа к дизайнеру уже не имею.
Старый 15.11.2009, 02:19   #6  
Sancho is offline
Sancho
Administrator
Аватар для Sancho
Лучший по профессии 2017
Лучший по профессии 2009
 
1,294 / 221 (10) ++++++
Регистрация: 11.01.2006
упс...
Вы дама? прошу простить мне излишнюю прямолинейность.



про expvend.Process:=process...

вот пример:
IF a = TRUE THEN
b := FALSE
ELSE
b := TRUE;

будет работать? конечно.
точно так же как одна строка:
b := NOT a;

просто попробуйте заменить ваш кейс мной предложенной одной строкой, наверняка результат будет тот же.

405-я таблица - лог изменений.
показывает какая запись была изменена, с какого значения на какое, кем и когда.
доступно в версии 3.60 и выше
настраивается или в грануле Финансы (3.60, 3.70), или в администрировании (4 и выше): протокол изменений
в 1-м юните есть глобальные триггеры на вставку, изменение, удаление данных (именно на них живет заполнение 405-й таблицы), но при отсутствии лицензии на разработку это к сожалению только информация для общего развития.

списка всех реализованных в Navision функций, боюсь, нет даже у самого MS...
мы все здесь для того, чтобы делиться новыми и новыми открытиями
Старый 15.11.2009, 23:31   #7  
vtulka is offline
vtulka
Участник
 
12 / 10 (1) +
Регистрация: 27.09.2009
Sancho, спасибо большое за разьяснение !

На счет предложения "списка всех реализованных в Navision функций, боюсь, нет даже у самого MS..."..

Когда компания покупает продукт навика, поставщик вроде как должен предоставить документацию не только для пользователей, но я для дальнейших разработчиков. А как же этим самым разработчикам обойтись без подробных описаний
готового кода? Ведь на его основе они и должны строить свою дальнейшую деятельность.
Еще вопрос туда же. Может быть на курсах такую информацию предоставляют, хотя бы частично?
Невозможно же обучаться программированию в Навижен, опираясь на форумы и "новые и новые открытия" пользователей?

более того, может кто знает, на курсах практика какая-либо проводится?
Старый 16.11.2009, 00:48   #8  
RedFox is offline
RedFox
Участник
 
1,441 / 10 (0) +
Регистрация: 28.12.2004
Адрес: Киев
Цитата:
Сообщение от ktylxy Посмотреть сообщение
На счет предложения "списка всех реализованных в Navision функций, боюсь, нет даже у самого MS..."..
Если Вы про список триггеров, то они плодяд их с большой скоростью (при этом иногда локализаторы не имею представления про наличие в функционале W1).

Цитата:
Когда компания покупает продукт навика, поставщик вроде как должен предоставить документацию не только для пользователей, но я для дальнейших разработчиков.
ОЧЕНЬ большое заблуждение, что ведет к неправильным выводам. Вам продается возможность владеть копией, которая состоит из набора гранул (не более). Есть часть документации на диске, которая бесплатна (кстати, где есть файл по внутренней структуре и основам разработки!!). Так же по идее Вам могут дать Книгу на русском языке (для России, но не для Украины). Если хотите, то делайте доработки либо своими силами (если знаете как), либо привлеченными.

Цитата:
А как же этим самым разработчикам обойтись без подробных описаний готового кода? Ведь на его основе они и должны строить свою дальнейшую деятельность.
А вот садитесь и ... рассматриваете код, пробуете, тестируете (иногда методом проб и ошибок). Ведь когда Вы занимаете место другого программиста, Вам же не рассказывают что он сделал ранее?
Вы же не разработчик в МС, а всего-лишь доработчик базового функционала для своей компании в соответствии с Вашими нуждами(если покупаете такую возможность)! Когда Вы покупаете машину или домашний кинотеатр, Вам выдают только как подсоединить шнуры или кабели и все! Не указано какой чип стоит внутри и многослойная/однослойная плата с резисторами различного номинала и частотной раскладкой.
Цитата:
Еще вопрос туда же. Может быть на курсах такую информацию предоставляют, хотя бы частично?
Извините, я пока так и не понял что за информацию Вам надо? Научить программировать в Navision? Я учусь программить в Navision уже больше 5 лет (хотя сам являюсь консультантом, но в институте учился на "программиста").
Цитата:
Невозможно же обучаться программированию в Навижен, опираясь на форумы и "новые и новые открытия" пользователей?

более того, может кто знает, на курсах практика какая-либо проводится?
Основы программирования в Navision - просты и понятны для тех, кто когда-то программил под Си или Pascal (синтаксис гибридный, но является интерпретатором)
Старый 17.11.2009, 19:01   #9  
vtulka is offline
vtulka
Участник
 
12 / 10 (1) +
Регистрация: 27.09.2009
Цитата:
А вот садитесь и ... рассматриваете код, пробуете, тестируете (иногда методом проб и ошибок). Ведь когда Вы занимаете место другого программиста, Вам же не рассказывают что он сделал ранее?
Мне кажется здесь вы можете быть неправы. Во-первых существуют курсы разработчиков. Если вы все были такими "самоучками",то какая может идти речь о нормальном внедрении Навика на предприятие, где программер сидит и всматривается в код и пытается понять - а что ж тут написано. Во-вторых, хороший программист тем и отличается, что после него остается красивый понятный код и желательно еще с комментариями, по которым МОЖНО понять что он делал до вас, а не куча бардака с ошибками, который проще переписать, чем в нем капаться.

Цитата:
Я учусь программить в Navision уже больше 5 лет (хотя сам являюсь консультантом, но в институте учился на "программиста").
У вас есть сертификат разработчика? Если да, можно поинтересоваться, вам курсы что-нибудь дали?

Цитата:
Основы программирования в Navision - просты и понятны для тех, кто когда-то программил под Си или Pascal (синтаксис гибридный, но является интерпретатором)
Опять же, вы меня неправильно поняли. Синтаксис языка я знаю и не только этого языка. Я говорю о практических занятиях, на которых могут подсказать какую УЖЕ РЕАЛИЗОВАННУЮ функцию навика можно использовать для своих нужд, своей новой задачи. Я не имею ввиду практику синтаксиса
Код:
Hello c/al !!!
нет!

А насчет курсов и экзаменов - все есть на торрентах) Уже нашла и книжку по программированию в навижн и все доки для подготовки к сдаче тестов.
Старый 18.11.2009, 01:31   #10  
RedFox is offline
RedFox
Участник
 
1,441 / 10 (0) +
Регистрация: 28.12.2004
Адрес: Киев
Цитата:
Сообщение от ktylxy Посмотреть сообщение
Цитата:
А вот садитесь и ... рассматриваете код, пробуете, тестируете (иногда методом проб и ошибок). Ведь когда Вы занимаете место другого программиста, Вам же не рассказывают что он сделал ранее?
Мне кажется здесь вы можете быть неправы. Во-первых существуют курсы разработчиков. Если вы все были такими "самоучками",то какая может идти речь о нормальном внедрении Навика на предприятие, где программер сидит и всматривается в код и пытается понять - а что ж тут написано. Во-вторых, хороший программист тем и отличается, что после него остается красивый понятный код и желательно еще с комментариями, по которым МОЖНО понять что он делал до вас, а не куча бардака с ошибками, который проще переписать, чем в нем капаться.
+1, но такого не принято в релизах, которые условно называются "коробочным продуктом". Хотя хорошо было бы иметь описание краткое в начале функции.

Цитата:
Цитата:
Я учусь программить в Navision уже больше 5 лет (хотя сам являюсь консультантом, но в институте учился на "программиста").
У вас есть сертификат разработчика? Если да, можно поинтересоваться, вам курсы что-нибудь дали?
К сожалению или к счастью, я начинал консультантом по логистике. Но постепенно влазил в код, чтобы изменять быстрее и иногда правильнее. Разбирался сам во всем, без всяких курсов (даже не интересовался про них).
У меня по 5.0 не хватает только так называемого Development II из-за того, что платить не хочу за себя и пока это мне не нужно лично.

Цитата:
Цитата:
Основы программирования в Navision - просты и понятны для тех, кто когда-то программил под Си или Pascal (синтаксис гибридный, но является интерпретатором)
Опять же, вы меня неправильно поняли. Синтаксис языка я знаю и не только этого языка. Я говорю о практических занятиях, на которых могут подсказать какую УЖЕ РЕАЛИЗОВАННУЮ функцию навика можно использовать для своих нужд, своей новой задачи. Я не имею ввиду практику синтаксиса
Код:
Hello c/al !!!
нет!

А насчет курсов и экзаменов - все есть на торрентах) Уже нашла и книжку по программированию в навижн и все доки для подготовки к сдаче тестов.
Приятно слышать и удачи Вам в подготовке. Если нужна будет помощь или совет - всегда буду рад помочь.
 


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

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

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