Apico Soft / АПИКО Софт



Спонсором блога ScalaHelp.RU является компания АПИКО Софт.

Мы предоставляем:
- Качественный ERP консалтинг.
- Внедрение и сопровождение системы.
- Российские формы первичных документов, бухгалтерская и налоговая отчетность.

- Разработка корпоративной отчетности.

Наш телефон 8 (495) 961 98 48
Сайт http://www.apicosoft.ru/

Позвоните нам, мы сделаем все, чтобы помочь Вам.

суббота, марта 23, 2013

Группировка средствами XSLT

При работе с workflow довольно часто требуется сделать группировку исходных данных. Сделать это в визуальном редакторе Conversion затруднительно (по крайней мере я не знаю как). Приходится использовать XSLT, язык он мощный, но забывается буквально на следующий день. Так что решил сделать для себя шпаргалку - как делать группировку.
Исходный файл

Задача 1: сгруппировать элементы по номеру заказа(order)

Группировать будем по методу Мюнха. Метод отличается высоким быстродействием. На выходе получаем:

Задача 2: группируем по заказу(order) и товару(sku), суммируем количестов(qty)

Преобразование(образец подсмотрел здесь): На выходе получаем:

среда, января 04, 2012

Триггера

На мой взгляд, нужно избегать использования триггеров, давая предпочтение другим способам кастомизации системы. Но все равно иногда обойтись без них не получается. Особенно плохо, если триггер висит на годозависимой таблице - при открытии нового года про них всегда забывают. Следующий скрипт выводит список всех триггеров в текущей базе данных:

select name [Trigger Name], object_name(parent_obj) [Table Name]
from sysobjects
where type = 'TR'
order by 2

Остается проверить какие из триггеров привязаны к годозависимым таблицам и создать их.
Кстати, иногда удобнее получить скрипт триггера с помощью SQL:
sp_helptext TriggerName

понедельник, марта 15, 2010

iScala Rapidshare

Очередной раз поражаюсь просматривая статистику – что же ищут люди! Ну, правда, как они могли придумать такие запросы.

Обещаю начать новую рублику. Назову ее поиско SEO мания. В общем буду делать статьи с заголовком из поисковой статистики. Целью поста будет либо – почему здесь не найти того, что ищете, либо, почему я, такой дурак, не пишу об этом. Признаюсь , что основной целью будет как раз SEO оптимизация.

Так вот, тема номера сегодня – нет смысла искать iScala для свободного скачивания. Во-первых, ничем это не поможет, система сложная и настроить под свои нужны с наскоку ее не получится. Да, это не добавляет плюсов системе, да, она не так проста, как хотелось бы. Жаль, но это действительно так.

В общем ответ на ваш запрос – вы без проблем получите систему для ознакомления, вам ее даже доставят за счет производителя, но дальше либо забудьте, либо платите. Вот такая вот горечь жизни :)

среда, декабря 23, 2009

Загрузка курсов валют

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

В качестве источника данных по курсам валют можно использовать специальный веб-сервис Центрального Банка России. http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx

Дальше я пробегусь по вариантам автоматизации задачи в Scala.

Epicor Service Connect (ESC)

Сразу скажу, что использование ESC для данной задачи – самое правильное решение, т.к. все делается исключительно с использованием стандартной функциональности, никакой самодеятельности. Правда, далеко не у всех есть в лицензии эта опция.

Лирическое отступление: если у вас есть сопряжение с другими системами, если требуется создавать документы или делать какие-то операции в Скале автоматически, то стоит внимательно посмотреть на функциональность ESC.

Итак. Регистрируем сервис ЦБ командой Add Service Reference. Создаем новое Workflow, которое будет обновлять курсы. Добавляем канал для оповещения по e-mail. Создаем новый Business Event Type, сразу привязывая его к созданному ранее Workflow. Добавляем расписание – Scheduled Events.

Во всей этой цепочке самое сложное – Workflow. Сложность возникает из-за того, что сделать все нужные преобразования в визуальном режиме не получится, приходится разбираться с веселыми языком XSLT. В качестве основы можете использовать мой вариант (Огромное спасибо Дмитрию Осипову за помощь). Он сделан для версии iScala 2.3 SR1. В архиве копия каталога Workflow, плюс шаблоны e-mail.

ExchRates

  • Date Request / Get Latest Date – запрос последней даты, на которую объявлены курсы, метод GetLatestDate
  • Request Rates / Get Exchange Rates – запрос курсов, метод GetCursOnDateXML
  • Update Rates / Exchange Rates In – вычисление производных курсов и обновление курсов
  • Send OK / Send Fail – оповещение пользователей об успехе / ошибке

SQL Server Integration services

Предположим, что ESC у вас нет. Тогда есть неплохой вариант – в качестве бесплатного приложения к MS SQL мы получаем службу Integration Services. С помощью этих сервисов можно получить данные с сайта ЦБ и записать в БД. Минус этого решение в том, что придется самому писать данные в таблицу курсов минуя Скалу. Сам я такой вариант не делал, но пример решения, которое подойдет в качестве основы, можно посмотреть здесь.

SQL Server

Следующий вариант – нет ESC, нет Integration Services. Это тоже не тупик. В TSQL есть возможность создавать объекты OLE Automation. Эта возможность отключена по умолчанию, т.к. считается потенциально опасной, для включения нужно выполнить следующий скрипт:


sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ole Automation Procedures', 1;
GO
RECONFIGURE;
GO

В качестве такого объекта можно использовать MSXML2.DOMDocument, с помощью него можно скачать XML с курсами с того же сайта ЦБ, разобрать его и сохранить курсы в БД. Такой вариант использовался у одного из клиентов, делалось решение на основе этой дискуссии на sql.ru.