Главная » Отношения » Архив рубрики "Разработчикам"

Другие подрубрики в рубрике "Отношения":

Сортировка:

Разбиение по «методу Пугаева» или «разность округлённых значений»

Разработчикам часто приходиться сталкиваться с задачей, когда нужно некую сумму S, распределить между строками, пропорционально некому значению Q в этой строке и записать в F. Как она решается? Для каждой строки F = ROUND( Q * S /SUM(Q) ) ;      где   S /SUM(Q) – цена одной штуки. Проблема в том, что при округлении, теряются или появляются …

Экономия своими руками

Когда проводят презентацию новой системы, связанной с IT областью, часто рассказывают о таком параметре как «стоимость владения», сопровождая обязательным словом «низкая». Обычно если об этом говорят, то это значит, что стоимость покупки сильно завышена, а производитель не сомневается в том, что его технология не потребует больших затрат на сопровождение. По большому счету это не самый …

Из разговора про работу с Identity в Navision

1.Только одно поле в таблице может быть типа Autoincrement. (очевидно думаю). 2. При вызове modify в таблице генерит update запрос, при этом, если значения всех полей остались прежними – апдейтится последнее добавленное в таблицу SQL поле. Если не повезло, и таким полем оказалось поле типа Autoinrement – получаем ошибку вида: ————————— Microsoft Business Solutions-Navision ————————— …

Из разговора (про блокировки Navision 3.7-5.0)

А: Сейчас наблюдал такую вещь. Открыта система – главное меню. И я залочил джоб, который делал UPDATE STATISTIC. Бага или фича? Б: Фича. Причем довольно неприятная. Приходилось сталкиваться раньше с подобным явлением. Путем долгих и мучительных изысканий удалось понять примерно следующее: когда открываешь Навижен не через ярлык с заранее установленными параметрами базы, пользователя и т.д., …

NAV 2009 и Юникод!

Название может немного ввести в заблуждение, но я начал писать этот пост, как ответ на проблему, с которой столкнулся мой партнер, работая с NAV 2009 – проблема была связана с кодировкой Unicode. Я не эксперт по Unicode, поэтому не обижайтесь на меня, если я назову некоторые вещи неправильно. Как вы знаете, NAV 2009 состоит из …

Подключение к веб-сервисам NAV из Javascript

Предыстория Пожалуйста, ознакомьтесь с этой статьей, чтобы получить представление о работе будущего скрипта на Javascript. Для понимания заметки требуется базовые знания Javascript и XML :) Совместимость с браузерами Указанный в данной статье пример, будет работать с браузером Internet Explorer. Тестирование выполнялось только в браузере IE8, но, в соответствии с документацией, код должен корректно работать в …

Использование xml-портов с веб-сервисами Dynamics NAV

В продолжение недавней Интернет-трансляции (см. здесь), предоставляю Вам пошаговое руководство по созданию XML–порта и использованию его для импорта данных в NAV. Прежде всего, необходимо создать наш XML-порт и убедиться, что он содержит все необходимые нам элементы и значения. С целью устранения возможных путаниц, для Родительского элемента, установил свойство «MinOccurs» = 1. В целом для XML-порта, …

Check-in и check-out малой кровью

Известно — там, где не предусмотрены стандартные средства чего-либо, обязательно (обязательно) найдется свой Левша, который с помощью молотка, веревки и смекалки (!) сделает так, как никому и не снилось. Сегодня в студии разбирается вопрос организации работы роты программистов над отдельно взятым проектом. Боевая задача — запретить одновременное редактирование одного и того же объекта разными людьми. …

Как запретить обновление версии клиента Dynamics NAV

Если гвозди забивать микроскопом, они будут забиты с микроскопической точностью. Народное. Давным-давно, когда я еще учился в автошколе, на первом занятии инструктор сказал — каждый из вас попадет в ДТП. Группа нервно засмеялась. А он говорит — я не шучу. Каждый. И время показало, что он был прав. Давным-давно, когда я пришел на свою первую …

Архивация в Dynamics NAV средствами Windows

Вы когда-нибудь обращали внимание на то, что проводник Windows может показывать содержимое Zip архива? К тому же Вы можете добавлять в архив файлы и извлекать их. Как-то я задался вопросом: как можно использовать эту возможность из Navision? Ведь в этом случае мне не придется заботиться о том, чтобы устанавливать архиватор на каждой машине.  Давайте разберемся …

Отправка почты из Navision так, чтобы она осталась в почтовом клиенте

В организации используются в качестве почтового клиента Outlook и TheBat. Возникла необходимость отправлять почту так, что бы она оставалась в почтовом клиенте у конкретного пользователя, отправляющего почту из Navision. При этом немаловажным фактором является то, что нужно подключать аттачменты. Порывшись в интернете я понял, что для этого можно использовать протокол MAPI который поддерживают как Outlook …

Замер производительности малой кровью

— Что ты пишешь? — спросили программиста. — Сейчас запустим — узнаем! — ответил программист. Задача повышения производительности стояла и стоит перед нами (разработчиками) всегда. Не только в процессе написания свежего кода, но и месяцы (годы) спустя — когда нагрузка на систему естественным образом возрастает. Или неестественно — в тяжелые предновогодние дни, когда графики всех …

Исправление ошибки с constraint $ndodefault$*

Сегодня в студии — очередная ошибка, на этот раз связанная с названиями констрэйнтов (на SQL). Выглядит она так: ————————— Microsoft Business Solutions-Navision ————————— Произошла следующая ошибка(и) SQL Server при обращении к таблице Purch. Inv. Header: 3728,»42000″,[Microsoft][ODBC SQL Server Driver][SQL Server]’$ndodefault$860319737$66′ is not a constraint. 3727,»42000″,[Microsoft][ODBC SQL Server Driver][SQL Server]Could not drop constraint. See previous errors. …

Вычисляемое поле обновляется только при срабатывании триггера OnValidate

Краткое изложение проблемы Предположим, у вас на страцице есть вычисляемое поле («вычисляемое» в свойстве SourceExpression), а часть вычисления включает в себя ссылку на еще одно поле. Так вот, вычисляемое поле не обновится автоматически при изменении во втором поле (это, кстати, начиная с третьей версии навижн так работает – прим.перев.). Вычисляемое поле обновится ТОЛЬКО ЕСЛИ по …

SQL-запрос для отображения таблиц, их индексов и использования индексов

Написанный ниже SQL-запрос выводит список таблиц, отсортированных по размеру. Для каждой таблице показаны индексы. Для каждого индекса указано время его последнего запуска. Запрос написан с целью собрать разрозненные куски информации в одном месте для обзора, и помочь в настройке индексов. Столбцы слева показывают данные для таблицы (кол-во записей, размер таблицы, размер индексов), для демонстрации влияния …

Запуск классических отчетов в RTC (RUNMODAL и кое-что еще)

В этой заметке – немного замечаний по запуску классических отчетов из RTC RUNMODAL (Not possible) RTC запускает классические отчеты (без RDL Layout) – запуском движка отчетов для классического клиента. При этом RTC не умеет запускать классические отчеты МОДАЛЬНО, запуск с помощью RUNMODAL приравнивается к RUN, т.е. программа не ждет, пока отчет отработает, а продолжает выполнение …

Несколько советов разработчикам MS Dynamics NAV 2009 (RTC)

Здесь собраны несколько советов, которые пригодятся при разработке в NAV 2009. Прошу сильно не бить, если они покажутся смешными (кому как :) Управление файлами на компьютере с запущенным RTC В C/AL для работы с файлами имеются следующие команды: EXIST: EXISTS(<File_Name>); RENAME(<Old_File_Name>,<New_File_Name>); ERASE(<File_Name>); COPY(<From_File_Name>,<To_File_Name> ) . Но они работают только с классическим клиентом, на RTC эти операции …

Подключение к веб-сервисам NAV из VBScript

Серия статей про подключение к веб-сервисам NAV подходит к концу. Думаю, что охватил большинство платформ, на которых оно могло потребоваться — в некоторых случаях это было просто, иногда немного сложнее. Я не писал про Flash, так же как и не писал про вещи типа iPhone или iPod Touch, в основном потому, что не думаю, что …

Подключение к веб-сервисам NAV с WM 6.5

Стыдно признать, но заметку про подключение к веб-сервисам NAV из Windows Mobile 6 я писал, когда уже полгода как вышла версия 6.5. Вот такой я «мобильный» :) Только что скачал отсюда 6.5 SDK и попробовал набросать то же самое приложение, которые писал для Windows Mobile 6, все работает хорошо, так что просто выполните пошагово статьи …

Подключение к веб-сервисам NAV из Windows Mobile 6

Я сделал свое самое первое приложение для Windows Mobile! Она работает на эмуляторе из Professional SDK. Кроме того, я попробовал развернуть свое приложение на реальном устройстве (своем смартфоне), и у меня получилось: Сказать по правде, самое сложное – провести начальную настройку, чтобы можно было работать. Несколько полезных ссылок для понимания процесса Windows Mobile 6 SDK …

Подключение к веб-сервисам Navision из Visual Basic.NET при помощи Web Reference

В целом, эта заметка – всего лишь переписанная для Visual Basic вот эта статья, так что прочитайте сначала ее. Кроме того, это мое первое приложение на Visual Basic. Не думаю, что есть способ сделать вещь из заголовка проще, но опять же – возможно, я не прав. Я создаю консольное приложение Visual Basic и добавляю два …

Подключение к веб-сервисам NAV из Visual Basic.NET при помощи Service Reference

В целом, настоящая заметка – это переписанные на языке Visual Basic статьи «Подключение к веб-сервисам NAV из C# при помощи Service Reference (вариант с написанием кода)» и «», объединенные вместе, так что ознакомьтесь с ними перед чтением этой заметки. Как уже описывалось в других заметках, есть два способа работы с Service References. Первый – хранить …

Подключение к Web-сервисам NAV из Java

Необходимые знания/навыки Пожалуйста, вначале прочтите эту статью – чтобы получить разъяснение по поводу изменений сервера приложений для работы с NTML-аутентификацией, а также краткого описания сценария, которую я буду реализовывать в Java. Ну еще, конечно, надо немного знать Java :-) Версии и дистрибутивы Java не поддерживает SPNEGO-протокол аутентификации, но имеется поддержка NTLM-аутентификации, так что вам придется …

Подключение к web-сервисам NAV из PHP

04.01.2011 | Автор: | Рубрика: Разработчикам

Необходимые знания/навыки Пожалуйста, вначале прочтите эту статью – чтобы получить разъяснение по поводу изменений сервера приложений для работы с NTML-аутентификацией, а также краткого описания сценария, которую я буду реализовывать в PHP. Ну еще, конечно, надо немного знать PHP :-) Версии В примере я использую PHP версии 5.2.11, которую скачал с http://www.php.net, но в принципе должно …

Подключение к веб-сервисам NAV из C# при помощи Service Reference (вариант с написанием кода)

Прежде чем приступить к чтению этой статью, ознакомьтесь с заметкой connecting to NAV Web Services from C# using Service Reference (config file version) . Code is king Как вы уже наблюдали в прошлой заметке, файл конфигурации – довольно сложен и, хотя он поддается редактированию вручную (во время инсталляции или позже), я все-таки предпочитаю прописать определенный …

Запрет открытия нескольких сессий в Navision при помощи SQL Server

Прямо скажем, этот вопрос возникает очень часто – «Как запретить одному и тому же пользователю открывать несколько окон Navision одновременно?” Обычно вопрос связан с ограничением по количеству сессий, ну или еще с чем-нибудь. Пройдясь по основным форумам, вам подскажут несколько подходов для реализации этой задачи – от использования сторонних приложений (для завершения процессов), до отправки …

Как создавать/читать xml-файлы из NAV…

В своей предыдущей заметке я описал возможности по чтению xml-файлов из NAV. При этом сам файл – просто прикрепил, и не рассказал, как их создавать. Исправляюсь. —— <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:mbs="http://www.microsoft.com/mbs/xml"> <soapenv:Header xmlns:soapenv="soapenv"> <soapenv:Body> <mbs:enumeration xmlns:mbs="mbs"> <mbs:table>Customers</mbs:table> <mbs:Customer>   <mbs:CustomerAuthentication>     <mbs:No>10000</mbs:No>     <mbs:Name>The Cannon Group PLC</mbs:Name>   </mbs:CustomerAuthentication>   …

Как прочесть xml-документ из Navision при помощи Microsoft XMLDOM automation

Мне часто задают вопросы типа «Как в Navision читать xml-документы без использования xml-портов?» В основном они связаны с тем, что xml-порты имеют ограничения и не всегда их можно использовать. Вот пример кодеюнита, который считывает xml-узлы из файлы. Просто пример, ничего более… :-) OBJECT Codeunit 50050 xml read {   OBJECT-PROPERTIES   {     Date=05.08.12; …

Подключение к веб-сервисам NAV из C# с помощью Web Reference

Предыстория Пожалуйста, ознакомьтесь с этой заметкой, чтобы получить представление о сценарии, который я собираюсь реализовать на C# с помощью Web Reference’ов. Что касается аутентификации, то для C# можем запускать сервер приложений с Negotiate, или с NTLM (как в PHP и Java). В своем примере я предполагаю, что сервер приложений будет использовать SPNEGO (т.е. по умолчанию). …

Подключение к веб-сервисам NAV из …

Когда-то я обещал написать несколько статей по тому, каким образом подключаться к веб-сервисам NAV из разных языков программирования/различных платформ, и, чует мое сердце, настало время сдержать данное обещание. Я напишу несколько заметок по подключение к веб-сервисам NAV из: PHP; Java; C#, используя Web References; C#, используя Service Reference; Javascript; Visual Basic, используя Web Reference; Visual …

Установка хранимых процедур для NAV 2009 вручную

Вообще-то для установки хранимых процедур рекомендуется использовать инсталлятор с продуктового DVD. Но если на одной машине у вас работают несколько инстансов SQL Server’а, такой подход не сработает. Надо сделать это вручную. Скопируйте файл xp_ndo.dll туда, где будете его хранить. Файл находится на DVD в папке “D:\SQLDatabase\PFiles\Microsoft Dynamics NAV\60\Database” on the product DVD. Для добавления ХП …

Как увеличить производительность Microsoft Dynamics NAV за счет уменьшения чтений из базы

Самый простой (для программиста), но самый медленный (с точки зрения производительности) способ Так пишет большинство. При прогоне цикла по таблице и использовании GET (а также FINDFIRST/FINDLAST) по другой таблице, в которой вам надо получить данные, большиство выполняют эти GET-операторы в каждой итерации цикла, даже если на предыдущей итерации уже получено правильное значение: recItemLedgerEntry.RESET; recItemLedgerEntry.SETCURRENTKEY("…"); recItemLedgerEntry.SETRANGE("…"); …

Как создать MatrixBox в Navision

Пример 1. Клиенты и товары Первая форма (Form 50000) покажет нам, как создать MatrixBox с нуля (матрица покажет объемы проданных товаров (и каких именно) по клиентам за определенный период. Шаги по созданию матрицы описаны и в этой заметке, и в самой форме в секции Documentation. Просмотр/редактирование 2-мерного массива Вторая форма (50001) – пример использования матрицы …

Обращайте внимание на права в базе при переходе с SQL 2000 на 2005

Предыстория Сегодня я разгадал одну «тайну», которая ведет к потере данных. Но давайте начнем с самого начала… Недавно мы обновляли железо и SQL Server до 2005-й x64 версии. Все прошло без проблем, т.к. мы используем SAN, а перенос базы сделали с помощью Detach/attach, ну и одно задание SSIS для переноса учетных записей. Все ОК. После …

Как управлять блокировками и быстродействием в SQL?

В SQL мы можем использовать трассировку, чтобы определить, какие запросы являются тяжелыми (несбалансированными) по времени исполнения/чтения/записи, а также вызывают блокировки записей. Но мы не можем знать какие процедуры порождают их. Чтобы узнать это, мы должны использовать монитор клиента, который дает нам представления о «тяжелых» запросах и точное расположение процедур , которые их используют. В этом …

Свойство SQLIndex и производительность NAV

В некоторых случаях использование свойства SQLIndex в ключе таблицы Microsoft Dynamics NAV может негативно сказаться на быстродействии системы. В этой заметке я опишу, с чем надо быть осторожным, и почему использование этого свойства прекращено в NAV 5 SP1. Данное свойство все еще доступно, и является ценным инструментом настройки производительности. Однако, начиная с SP1, в стандартном …

Связь между оператором FOR-TO и максимальным количеством параметров функции

Сегодня мне пришлось столкнуться с одним, так и хочется сказать, побочным эффектом работы C/SIDE. После некоторого времени, затраченного на поиски проблемы, пришло понимание, которым я и хочу с вами поделиться. Как это началось Представьте, что у вас есть два куска кода: Пример 1: MyFunction(Param1,Param2,Param3,Param4,Param5,Param6,Param7,Param8,Param9, Param10,Param11,Param12,Param13,Param14,Param14,Param15,Param16,Param17); Пример 2: for j :=1 to 1 do begin MyFunction(Param1,Param2,Param3,Param4,Param5,Param6,Param7,Param8,Param9, …

Использование временной таблицы как источника данных сабформы NAV

Немного теории У переменной типа Record есть логическое свойство Temporary (Временный). При установке этого свойства в TRUE, вашему приложению будет доступна структура, триггеры и функции исходной таблицы, а вот реальные данные из БД – нет. То есть, таблица изначально пустая, а все операции над экземпляром этой таблицы будут утеряны, как только работа приложения завершится. Никакого …

Создание отчетов в Navision на базе временной таблицы

Обычно, когда вы создаете отчет, он работает на базе одной или нескольких таблиц. А иногда у вас есть временная табличка (например, какая-нибудь сортировка или группировка) – и надо вывести эти данные в отчет. Проблема состоит в том, что временную табличку нельзя прямо указать как источник данных в DataItem’е отчета. Ему нужны только т.н. «реальные» таблицы …

Как ввести путь к файлу на Request форме для датапорта Navision

При создании датапорта с помощью мастера, на request-форме располагаются два контрола – FileName (строка) и Direction (option). В режиме дизайна эта форма – пустая, т.е. эти два контрола добавляются Navision’ом уже во время выполнения. Если на форму добавить контролов, вы потеряете возможность указать путь к файлу для датапорта. Шаги по добавления контрола, содержащего путь к …

BEEP — мощная команда в арсенале Microsoft Dynamics NAV

Последние недели я работал над проектом, в котором требовалось использовать команду SendKeys для работы с NAV-клиентом. Во время разработки передо мной встала проблема синхронизации. С одной стороны —  вызовы SendKeys, с другой — поведение непосредственно клиентского приложения. Примерно в таком духе — вы отсылаете NAV’у нажатия клавиш, клиент открывает форму, все это занимает время, а …

Как передавать параметры между объектами (формами, отчетами и проч.)

В одной из статей мы изучили способ передачи параметров между объектами Navision с помощью спец.функций, которые принимают значения. В данной статье используется другой подход. Начиная с MBS-Navision 3.01, у кодеюнита появилось новое свойство SingleInstance = Yes. Вот что пишет про это свойство встроенная справка: «Установка этого свойства в кодеюните X влечет за собой то, что …

Как узнать – какие объекты можно прочесть с текущей лицензией Navision

NAV хранит эти данные в виртуальной таблице 2000000044 Permission Range.  Информация берется из текущего файла с лицензией. Виртуальные таблицы не видны в списке объектов (Object Designer’е), но вы можете увидеть ее в списке при создании новой формы, либо создав переменную типа Record. Шаги по созданию формы. Создайте табличную форму с помощью Мастера (таблица 2000000044). Выберите …

Большая Картина Navision

Живет на свете такой человек – чех Камил Сачек. Энтузиаст Navision и по совместительству MVP – Most Valuable Professional – так сказать, один из наиболее ценных членов экипажа компании Microsoft Dynamics. Да, тот самый, про которого упомянул другой MVP – уже нашего русского розлива – Андрей Панько. И не просто живет Камил, а радеет за …

Работа с Record. Часть четвертая, практическая

Предыдущие части можно найти здесь: «1. Основные команды. Чтение данных без блокировок», «2. Modify», «3. FILTERGROUP. Другие фирмы». Примеры из практики Navision Вам необходимо получить остатки определенного товара на определенном складе. Есть два способа сделать это. У обоих способов есть свои за и против. ПРАВИЛЬНО — (ЗА  — вам не нужно заботиться об индексах. ПРОТИВ …

Работа с переменными Record — 3. FILTERGROUP. Чтение в другой фирме.

Предыдущие части можно найти здесь: «Основные команды. Чтение без блокировок», «Работа с Modify». Использование групп фильтров – FILTERGROUP Группы фильтров полезны для накладывания нескольких фильтров на одно и то же поле, а также для скрытия фильтров от пользователей. Пара советов: используйте группы от 10 и выше. Группы фильтров от 0 до 6 зарезервированы (подробности — см. справку …

Работа с переменными Record – 2. Modify.

С первой частью статьи можно ознакомиться  здесь – «Основные команды. Чтение без блокировок». Примеры изменения записей Общие советы по записи в БД Начинайте транзакцию как можно позже (т.е. сначала считайте нужные данные без блокировок таблиц, и только после этого начинайте запись). Блокируйте как можно меньше (при внесении изменений в одну запись таблицы размером в 10 млн.записей, зачем …

Работа с переменными типа Record в Navision

Надпись на аквариуме в зоомагазине: «Не стучите – они не откроют». Много раз я видел, как множество людей для получения данных из БД пользуются не похожими друг на друга, но совершенно неэффективными способами. Либо они пишут ненужные команды, и таким образом устраивают в коде бардак. Это сподвигло меня на написание статьи, где бы на пальцах …

Как определить тип и имя текущего сервера Navision

Данная статья — вольный перевод «How To» Люка Ван Дика. Еще один способ определения имени сервера описан в моей статье «Работа с MS SQL Server из Navision» Начиная с Navision Attain 3.01, в C/AL доступна функция CONTEXTURL. Она возвращает строку, т.н. context string, определяющую текущее нахождение пользователя в системе — ну то есть какой объект …

Работа с диалогами

Одно из железных правил проектирования интерфейсов – пользователь не должен чувствовать себя покинутым. Он может нажать кнопку, подождать 5 секунд (максимум!), но если не видит реакцию системы – начинается паника. Для этих случаев в Navision есть диалоги, спец.окошки для вывода текущего состояния системы. В них можно выводить счетчики, проценты, прогресс-бары – все, что угодно. Есть одно НО. Dialog.UPDATE работает очень медленно …