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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 30.06.2007, 05:23   #21  
smoyk is offline
smoyk
Участник
 
188 / 13 (1) ++
Регистрация: 20.04.2007
Цитата:
Сообщение от Fordewind Посмотреть сообщение
Сдается мне кто-то ловил ошибку с пустой переменной и забыл стереть
Это как?
Старый 30.06.2007, 12:06   #22  
Fordewind is offline
Fordewind
Участник
 
1,134 / 10 (3) +
Регистрация: 01.12.2005
Цитата:
Сообщение от smoyk Посмотреть сообщение
Это как?
Например, есть неверно работающая программа. Одно из подозрений падает на то, что в некоторый момент переменная пуста.
Тогда вставляем две строчки:

ЕСЛИ перменная = пусто ТО
перменная := переменная;

После чего включаем дебаггер, ставим остановку на 2-ю строчку и запускаем. Т.е. мы ничего не поменяли, но ситуацию отлловим, если будет.
В Nav такого не делал, а в Delphi как то было
Старый 02.07.2007, 05:32   #23  
gennady is offline
gennady
Участник
 
92 / 11 (1) +
Регистрация: 27.09.2004
Адрес: Иркутск
Цитата:
Сообщение от smoyk Посмотреть сообщение
Про размерность массива - да, есть такая проблема. Как динамически размерность массива указать я так и не нашел.
И не найдете. В C/AL нет такой возможности.
Цитата:
Сообщение от smoyk Посмотреть сообщение
А вот про то, что можно кроме самих записей еще что-то (неважно что) в этой таблице сохранять а в массиве нельзя - это вы зря. Во-первых в таблице можно сохранять только ограниченный набор настроек. Их можно расширить, доработав таблицу, но он все равно будет ограничен. Во-вторых, хоть в массив настройки сохранять и нельзя я не считаю это недостатком. Зачем вобще это делать? Вспомните, мы применяем массив при работе с excel напрямую через сервер автоматизации. А с его помощью мы имеем полный доступ к листу, включая и форматирование и формулы и любые функции использовать...
Когда настройки идут в потоке с выводимыми значениями, их удобней обрабатывать. Делая это в перемежку с запросами к БД при формировании отчета, и обращениями к Excel, мы как раз и теряем в скорости. При использовании же временных таблиц мы, по сути, имеем и некий эквивалент запроса, и можем создавать
своего рода объектную переменную (ведь временная таблица существует локально, у клиента, нет обращений к серверу, поэтому потери в скорости не так уж ощутимы).
Цитата:
Сообщение от smoyk Посмотреть сообщение
И насчет того, что в стандарте есть... Есть то он есть, я просто не уверен в эффективности реализации этого ресурса. Скорее наоборот, имеем потерю в скорости. Это и понятно, ради универсальности имеем потерю в гибкости, обычная ситуация, даже если предположить, что писал это дело грамотный программер и сделал всю на 5+. Хотя в последнем тоже можно усомнится. Знаете на какие перлы я натыкаюсь в стандартной конфигурации? Для примера, цикл на пять итераций и в цикле проверка - если переменная пустая, то присвоить ей пустое значение. Кроме шуток. И это не единственный пример.
Ну, стандарт делают не боги, а такие же программисты. Естественно, нам всем свойственно ошибаться. Но никто не мешает стандарт доработать "под себя", я, к примеру, объект типа таблица Excel Buffer основательно доработал, чтобы
мне удобно было им пользоваться.
Цитата:
Сообщение от smoyk Посмотреть сообщение
Так что получается, что единственное преимущество Excel Buffer - это ее безразмерность? А в остальном только недостатки, не так ли?
Ну, во-первых, безразмерность в нашем случае - весьма ощутимое преимущество. И почему же оно единственное? А возможность объединения в едином как бы массиве разных типов данных?
(это уже во-вторых :О)? А место, где мы можем создавать и хранить свои функции, необходимые нам именно для выгрузки в Excel? Имхо, массивы лучше использовать когда не нужна динамичность
их размерности, когда важна сама эта размерность, и для определенного типа данных.
Старый 02.07.2007, 06:31   #24  
smoyk is offline
smoyk
Участник
 
188 / 13 (1) ++
Регистрация: 20.04.2007
To Fordewind
А вы не пробовали во время трассировки программы просмотреть значение переменной? Трассируете программу и на любом шаге вы можете просмотреть значение практически любой переменной . Причем это справедливо и для навика (значения выводятся в отдельном окне) и для делфи (при наведении мышки). Или вы не ищете легких путей?

To Gennady Antropov
Под настройками я подразумеваю все, что касается внешнего вида листа и формата данных на нем: стиль, размер, положение, выравнивание, формат данных и пр. Так вот, в таблице можно хранить только ограниченный набор этих настроек ну и далее см. выше

И так как мы можем управлять форматом выводимых данных нам нет нужды хранить в массиве разные типы данных. Достаточно хранить текст, а при выводе задать нужный формат ячейки (впрочем в большинстве случаев достаточно "Общего") и готово... Так что, этому пункту "во-вторых" не стать

Про функции не совсем понял какие именно вы имеете ввиду. Ну и в любом случае, почему их обязательно хранить в таблице?

P.S. Я понимаю что горшки не боги обжигают, но если я вижу, что в стандарте код изобилует багами, то лучше уж я напишу свой код, в котором тоже наверняка будут баги, но зато свои(!), хорошо известные, в отличие от неизвестных багов этого программера
Старый 02.07.2007, 11:04   #25  
Fordewind is offline
Fordewind
Участник
 
1,134 / 10 (3) +
Регистрация: 01.12.2005
Цитата:
Сообщение от smoyk Посмотреть сообщение
To Fordewind
А вы не пробовали во время трассировки программы просмотреть значение переменной? Трассируете программу и на любом шаге вы можете просмотреть значение практически любой переменной . Причем это справедливо и для навика (значения выводятся в отдельном окне) и для делфи (при наведении мышки). Или вы не ищете легких путей?
Я люблю тратить время с умом
Если смотреть на каждом шаге программу из 500 итераций с кучей вложенных циклов, то можно запросто сдвинуться.
Старый 02.07.2007, 12:17   #26  
smoyk is offline
smoyk
Участник
 
188 / 13 (1) ++
Регистрация: 20.04.2007
Цитата:
Сообщение от Fordewind Посмотреть сообщение
Я люблю тратить время с умом
Если смотреть на каждом шаге программу из 500 итераций с кучей вложенных циклов, то можно запросто сдвинуться.
Хм... Ну возможно, гдето и оправдано. Сам с таким не сталкивался.
Старый 02.07.2007, 13:00   #27  
gennady is offline
gennady
Участник
 
92 / 11 (1) +
Регистрация: 27.09.2004
Адрес: Иркутск
Цитата:
Сообщение от smoyk Посмотреть сообщение
Под настройками я подразумеваю все, что касается внешнего вида листа и формата данных на нем: стиль, размер, положение, выравнивание, формат данных и пр. Так вот, в таблице можно хранить только ограниченный набор этих настроек ну и далее см. выше
Ага, понятно. Я, тогда, подразумеваю настройки, касающиеся ячейки Excel, куда выводится значение, типично это - ее адрес, тот же формат, само значение, цвет...
Цитата:
Сообщение от smoyk Посмотреть сообщение
И так как мы можем управлять форматом выводимых данных нам нет нужды хранить в массиве разные типы данных. Достаточно хранить текст, а при выводе задать нужный формат ячейки (впрочем в большинстве случаев достаточно "Общего") и готово... Так что, этому пункту "во-вторых" не стать
Зависит от ситуации. Часто бывает удобно именно сопровождать выводимое в ячейку значение ее индивидуальными настройками. Когда удобней устанавливать настройки в диапазонах - я так и делаю.
Цитата:
Сообщение от smoyk Посмотреть сообщение
Про функции не совсем понял какие именно вы имеете ввиду. Ну и в любом случае, почему их обязательно хранить в таблице?
Совсем необязательно. Но набор своих функций неизбежно появится, тогда их надо будет хранить в кодеюните (не будете же вы их копировать из отчета в отчет). Но так как Excel Buffer изначально предназначен именно для вывода информации в Excel,
то удобно их размещать именно там, вполне логично, по крайней мере.
Цитата:
Сообщение от smoyk Посмотреть сообщение
P.S. Я понимаю что горшки не боги обжигают, но если я вижу, что в стандарте код изобилует багами, то лучше уж я напишу свой код, в котором тоже наверняка будут баги, но зато свои(!), хорошо известные, в отличие от неизвестных багов этого программера
Бывает всяко. Что касается именно, опять же, объекта Excel Buffer, то там код простой, его не много, исправить и подработать под себя легко. И не надо перегружать свои объекты, если есть стандартный,
предназначенный для того же.
Такова моя точка зрения, я ею с вами поделился. Решайте сами, что вам нужно, а что не нужно. Если есть вопросы - я отвечу, а то мне кажется, возникла дискуссия, что лучше, а это часто - дело вкуса.
Поэтому дискуссию предлагаю прекратить.
Старый 03.07.2007, 12:38   #28  
smoyk is offline
smoyk
Участник
 
188 / 13 (1) ++
Регистрация: 20.04.2007
Цитата:
Сообщение от Gennady Antropov Посмотреть сообщение
...что лучше, а это часто - дело вкуса.
Ну с этим трудно спорить На сим и правда лучше закруглится.

Насчет вопросов, воспользуюсь случаем Решаю проблему присвоения массива диапозону ячеек на листе. Подскажите пожалуйста, как это сделать, а то вывод в отдельные ячейки идет на ура, а при присвоении массива диапозону выдается ошибка "Размерности массивов должны совпадать."

Делаю
Код:
xlSheet.Range('A'+FORMAT(7)+':E'+FORMAT(1000)).Value := Res;
к примеру, так.
У Res Dimensions выставлял и [1000,5] и [5,1000]. Не работает. Вот, пока не решил.
Старый 03.07.2007, 13:58   #29  
Corleone is offline
Corleone
Участник
 
355 / 10 (1) +
Регистрация: 27.05.2004
Адрес: London
Цитата:
Сообщение от smoyk Посмотреть сообщение
Делаю
Код:
xlSheet.Range('A'+FORMAT(7)+':E'+FORMAT(1000)).Value := Res;
к примеру, так.
У Res Dimensions выставлял и [1000,5] и [5,1000]. Не работает. Вот, пока не решил.
Так не будет работать, делай цикл.
 


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

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

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