Главная » Страница автора Андрей Стрельников


Автор: Андрей Стрельников

Об авторе: В области Navision - с 2003 года. Профессиональные интересы: NAV, MS SQL, .NET, BPMN, IT-менеджмент. Предметная область: логистика, финансы, склады, 3PL.

Опубликовано статей: 86

Список статей автора

Сортировка:

Ошибка 1935 при установке Microsoft Dynamics NAV 5.0 SP1

12.12.2010 | Рубрика: Microsoft Dynamics NAV 5.0

При установке клиента NAV 5.00 SP1 у меня постоянно выпадала ошибка 1935. Это может случиться с Вистой и Windows 2008. Error 1935; an error occurred during the installation OF assembly component {98CB24AD-52FB-DB5F-A01F-C8B3B9A1E18E}. HRESULT:0×800736CC. Решение оказалось проще, чем я думал. Вам всего лишь надо установить Microsoft Visual C++ 2005 SP1 Redistributable Pack. Помните также, что при …

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

12.12.2010 | Рубрика: Nightmare!, Разработчикам

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

Свойство 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 на базе временной таблицы

07.12.2010 | Рубрика: Новичкам, Разработчикам

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

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

07.12.2010 | Рубрика: Новичкам, Разработчикам

При создании датапорта с помощью мастера, на 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 + SQL Server для консолидации финансовой отчетности по стандартам МСФО

01.12.2010 | Рубрика: Экспертам

Хочу поделиться опытом настройки репликации на основе MS SQL Server , который я в свое время нигде не нашел и вымучивал по шагам, спотыкаясь буквально на каждом =) Описывать буду основные моменты, чтобы быть хоть как-то лаконичным… Сразу опишу ту задачу, которую необходимо было решить. Постановка задачи Задача: Существует много филиалов компании в разных странах, с индивидуальными планами счетов в каждой. Также существует единый международный …

Как вычислить размер места, используемого БД Navision

01.12.2010 | Рубрика: Новичкам

Как мы все знаем, у базы Navision есть два главных параметра — это 1) размер и 2) используемая площадь, т.е. место. Встречаются такие жизненные ситуации, в которых необходимо иметь предупреждение о том, что используемое место вплотную приближается к размеру самой базы. Например, становится практически невозможно выполнить какие-нибудь пакетные операции, связанные с движением больших объемов данных, …

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

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

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

01.12.2010 | Рубрика: Новичкам, Разработчикам

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

Навешиваем ярлыки – грамотно!

Многие пользователи для создания ярлыка на рабочий стол производят такую операцию в Navision: Файл – Отправить – Создать ярлык (на рабочий стол). Но не все знают, что клиент Navision можно запускать через командную строку, передавая необходимые параметры через запятую. Хотя в доках Navision этот способ хорошо описан, да кто их читает :-) Я делаю просто. После установки клиента на рабочую станцию создаю ярлык (иногда просто …

Обжигающие кнопки Navision :-)

01.12.2010 | Рубрика: Новичкам, Простым людям

Здесь собраны все известные горячие клавиши Microsoft Dynamics NAV (Navision Attain). Для пользователя Кнопка Назначение F1 Контекстная справка. Топик в справке зависит от того, где находится курсор :-) Если курсор стоит в поле формы, то справка по полю, если на пункте главного меню – про содержание пункта. Alt + F1 Вызов формы «Обзор F-клавиш». Крайне полезная вещь! Ctrl + F1 Вызов …

Глоссарий Navision (основные термины и т.п.)

В этом разделе собраны основные понятия, термины, слова из области Microsoft Dynamics NAV (Navision Attain). Пока раздел крошечный, но будет постоянно пополняться :-) FIN.ZUP Спец.файл, где хранятся пользовательские настройки: визуальные – количество, порядок, ширина столбцов в формах; программные (значения переменных формы, если свойство SaveValues = Да); параметры доступа к базе (кроме пароля :-) Recent Companies (список в меню «Файл») и прочая… Файл хранится в папке …

Как обмануть NAV (подменяем источник данных в форме)

01.12.2010 | Рубрика: Новичкам, Разработчикам

Пускай у нас есть некая функция, которая возвращает временную таблицу (например, таблица Customer) с результатом. Мы хотим отразить ее в форме. Самый простой способ это сделать знают все: FORM.RUN(FORM::"Customer List", recTmpCustomer); Но есть и другой способ сделать это — подменить в форме триггеры OnNextRecord, OnFindRecord следующим образом: OnFindRecord= VAR blnFound : Boolean; BEGIN recTmpCustomer:=Rec; recTmpCustomer.COPY(Rec); …

Оформление кода в Navision: венгерская нотация и проч.

01.12.2010 | Рубрика: Новичкам, Разработчикам

Hастоящий программист никогда не ставит комментариев. То, что писалось с трудом, должно пониматься с трудом. У Navision есть свои, официально принятые стандарты написания и оформления кода, однако я хочу поделиться небольшими дополнениями на сей счет. Связаны они с улучшением читаемости кода и помогают отделить стандартный функционал от доработок. Использование венгерской нотации Все, кто хотя был несколько месяцев занимался разработкой (не обязательно Navision) приходят …

Управление сессиями Microsoft Dynamics NAV

Статья — вольный перевод заметки Алена Крикилайона, оригинал статьи находится по адресу: http://mibuso.com/howtoinfo.asp?FileID=18 Представьте себе, что у вас есть 10 пользователей. Вы купили 12 сессий (две лишних на всякий пожарный случай). Но ваши пользователи всегда открывают несколько сессий. Или например, так: у вас 100 пользователей, но одновременно в системе работают только 40. Вы покупаете 45 …

Как поймать умников, распускающих руки на боевой базе Navision

01.12.2010 | Рубрика: Разработчикам, Экспертам

Программист, ты стал совсем взрослый. У тебя уже растут руки. Сегодня мы займемся тем, что отловим и накажем умников, которые ведут разработку в боевой базе, либо правят ее наживую, либо делают еще что-нибудь нехорошее. До недавнего времени контроль за ними был затруднен. Однако, решение есть всегда. Всего-то надо: добавить в таблицу dbo.Object одно поле – Last Changed …

К вопросу о репликации Navision средствами MS SQL Server

Решение задачи репликации и обмена данными средствами SQL сервера Будем использовать сиквельную репликацию merge по топологогии звезда. Структуру таблиц расписывать не буду – описываю идею. Итак репликация: Необходимые условия – все серии номеров разделены по всем базам, все книги операций разделены по базам. В Навижне заводим табличку со списком таблиц, которые будем реплицировать, и список баз холдинга. Создаем скрипт …

Что могут сделать СИФТы, если за ними не следить

01.12.2010 | Рубрика: Разработчикам, Экспертам

Сифты (SIFT — Sum Index Field Technology) — это столь любимые всеми и рекламируемые заказчикам флоуфилды. На сервере они хранятся в виде отдельных таблиц с названиями вида Фирма$10019100. В них рассчитаны все результаты группировок суммируемых полей таблицы по полям связанного с ними ключа. Заполнение и пересчет данных в этих таблицах висят на SQL-триггерах. Это важно …

Как учитывать в Navision закупку ресурсов

Статья — вольный перевод заметки Карен Хиггинс, оригинал статьи находится по адресу: http://mibuso.com/howtoinfo.asp?FileID=20 Запрос на возможность проводить закупки ресурсов — один из частых запросов на доработки Navision. В этой заметке полностью пошагово описана данная доработка. В результате работы, записи с типом Ресурс будут записаны в таблицах G/L Entry, Resource Ledger Entry и, если потребуется, в …

Excel в стиле Ultra

Эксель — самое популярное средство подготовки отчетов, печатных форм, сверок с клиентами и поставщиками. За все время работы с ним накопилось достаточно тонкостей, которые в разы (иногда в десятки раз) увеличивают скорость работы. Итак: 1) самый медленный способ выкинуть что-то в эксель — это использовать стандартный функционал Excel Buffer :-) Самый быстрый — получить (или …

Фильтруй!

Эта статья — продолжение темы, начатой в «NAV+SQL: подружки-хохотушки» и «Как мы победили» По поводу преобразования фильтра поля в условие SQL-запроса – Петр «grif» Иванов (grif@bk.ru) любезно разрешил нам опубликовать его собственную функцию по преобразованию фильтра NAV в SQL. Вот она: CREATE FUNCTION dbo.Fn_Filter_Convert (@variable  VARCHAR(20), @cd VARCHAR(250)) RETURNS VARCHAR(1024) AS BEGIN   — Функция преобразует фильтр …

NAV+SQL: Как мы победили (часть 2)

Эта статья — продолжение темы, начатой в «NAV+SQL: подружки-хохотушки». Следующим шагом было написать функции, которые будут приводить сиквельные дату и время к навижнновскому стандарту. В Navision пустая дата (0D) — это на самом деле 1 января 1753 года. А пустое время (0T) — 1 января 1754 года. Соответственно, непустое время — это 01.01.1754 ЧЧ:ММ:СС. Функции …

NAV+SQL: две подружки-хохотушки

Давным-давно, когда я и не подозревал о существовании Navision, занимался разработкой корпоративной системы одного логистического холдинга. По всем понятной терминологии – «самописки». Самописка была клиент-серверной, на связке Access 2000 + MS SQL 2000. Тогда же мне пришлось очень плотно подсесть на SQL, хранимые процедуры, функции, триггеры и т.д. и т.п. Фактически, SQL стал (да и остается по сей день) моим любимым языком. Я мог писать на нем что угодно, реализовывать любые …

Ставим компонент OCX/DLL на клиентскую машину прямо из Navision

01.12.2010 | Рубрика: Общее

Один из эффективных способов расширить функциональность Microsoft Business Solutions–Navision — использовать внешние компоненты OCX/DLL. Однако, прежде чем начать использовать компоненты, их необходимо установить на все клиентские машины, которые подключены к системе. Например, если какой-то пользователь отсутствует в офисе в то время, когда вы их устанавливаете, то на следующий день Navision встретит его радостным сообщением об …

Navision и рекурсия

Статья — вольный перевод статьи Алена Крикилайона http://mibuso.com/howtoinfo.asp?FileID=11 Что такое рекурсия Рекурсия — это функция, которая вызывает самое себя. Это может происходить явно (функция XYZ содержит в своем теле вызов XYZ), либо неявно (в функции XYZ есть вызов функции ABC, в которой есть вызов функции KLM, в которой… и прочая, и прочая, и, наконец, в …