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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 20.11.2006, 12:44   #1  
grif is offline
grif
Участник
Аватар для grif
 
236 / 10 (1) +
Регистрация: 31.08.2006
Нав 3.6
Есть большой отчёт осуществляющие финучёт сбеестоимотсти. Требуется вести некоторые записи в табличку-лог в процессе выполнения, но так, чтоб в случае ошибки записи в лог-табличке не откатились. Навиженский COMMIT я так понимаю не подходит, т.к. оно сбрасывает ВСЮ текущую транзакцию, а даже если я его размещаю в триггере OnInsert лог-таблички, то это всё та же транзакция. Как решить проблему? Подозреваю, что только ведением логов на через SQL, но это изврат ИМХО
Старый 20.11.2006, 13:40   #2  
rmv is offline
rmv
Участник
 
481 / 11 (1) +
Регистрация: 15.02.2005
Создайте single instance codeunit (50000), объявите в нем текстовый массив и 2 функции ДобавитьВЛог (в ней заполняем массив) и ЗаписатьВБазу (содержимое массива - в таблицу).
В кодеюните Inventory Posting To G/L вставьте вызовы ДобавитьВЛог.

Создайте еще один кодеюнит (50001) - на OnRun:
report.runmodal(report::"Post Inventory Cost to G/L");

Вызов отчета переделайте таким образом:
If not codeunit.run(50001) then
codeunit50001.ДобавитьВЛог.
Старый 20.11.2006, 13:47   #3  
Wizard_imported is offline
Wizard_imported
Участник
 
157 / 10 (1) +
Регистрация: 25.11.2004
в файл пишут в таких случаях
Старый 20.11.2006, 13:53   #4  
grif is offline
grif
Участник
Аватар для grif
 
236 / 10 (1) +
Регистрация: 31.08.2006
2rmv
Спасибо, действительно классный метод, только вот теряются сообщения об ошибках работы отчёта. В случае если руками вызывается ERROR,то ладно-можно передать текст в лог, а как быть если оно в каком-либо непредсказуемом месте вывылится?

Цитата:
Сообщение от Wizard Посмотреть сообщение
в файл пишут в таких случаях
Да про файл это понятно, но этот вариант плохой. Хочется именно в табличку
Старый 20.11.2006, 14:26   #5  
Fordewind is offline
Fordewind
Участник
 
1,134 / 10 (3) +
Регистрация: 01.12.2005
Цитата:
Сообщение от rmv Посмотреть сообщение
Создайте single instance codeunit (50000), объявите в нем текстовый массив и 2 функции ДобавитьВЛог (в ней заполняем массив) и ЗаписатьВБазу (содержимое массива - в таблицу).
В кодеюните Inventory Posting To G/L вставьте вызовы ДобавитьВЛог.

Создайте еще один кодеюнит (50001) - на OnRun:
report.runmodal(report::"Post Inventory Cost to G/L");

Вызов отчета переделайте таким образом:
If not codeunit.run(50001) then
codeunit50001.ДобавитьВЛог.
Согласен, но зачем массив? Временные таблицы не откатываются и переносить их легче
Старый 20.11.2006, 14:28   #6  
grif is offline
grif
Участник
Аватар для grif
 
236 / 10 (1) +
Регистрация: 31.08.2006
Да то что временные или не временные - это уже детали. С этим я и са мразберусь
Как бы сообщения не терять об ошибках?
Подозреваю, что никак. Выходит надо делать, чтоб через SQL писалось.
Старый 20.11.2006, 14:41   #7  
rmv is offline
rmv
Участник
 
481 / 11 (1) +
Регистрация: 15.02.2005
Цитата:
Сообщение от Fordewind Посмотреть сообщение
Согласен, но зачем массив? Временные таблицы не откатываются и переносить их легче
Согласен .
Старый 22.11.2006, 13:24   #8  
Scorpie is offline
Scorpie
Участник
 
239 / 10 (1) +
Регистрация: 25.10.2004
Адрес: Moskow
Почему с файлом вариант плохой?!

если есть системность запуска финучёта, можно подтягивать данные из файла в таблицу автоматом с помощью DTS
Старый 24.11.2006, 09:51   #9  
grif is offline
grif
Участник
Аватар для grif
 
236 / 10 (1) +
Регистрация: 31.08.2006
Ну просто таблицей гораздо удобнее и надёжнее. Проще анализировать и нге надо ничгео никуда пергонять - всё и так есть. Уже сделал чтоб писалось через SQL-запросы
Старый 07.12.2006, 09:43   #10  
tracert is offline
tracert
Участник
 
6 / 10 (1) +
Регистрация: 21.09.2006
Подскажи пож-ста, где и каким образом ты сделал через SQL- запросы.
Старый 07.12.2006, 11:26   #11  
Гений 1С is offline
Гений 1С
Участник
Аватар для Гений 1С
 
263 / -11 (0) +
Регистрация: 05.05.2006
Адрес: Москва
Цитата:
Сообщение от Fordewind Посмотреть сообщение
Согласен, но зачем массив? Временные таблицы не откатываются и переносить их легче
Если произойдет ошибка, выполнение прекратится и временная таблица уничтожится. Разве я не прав?
Ведь обработать исключение нельзя.
 


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

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

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