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



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

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

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

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

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

среда, Январь 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.

суббота, Ноябрь 28, 2009

iScala Database Structure

Разбирался с созданием веб-приложений на основе Google App Engine. В качестве примера сделал простую страничку, показывающую структуру базы данных Scala. Получилось достаточно забавно, так что я решил все это выложить. Расположено приложение по адресу http://db.apicosoft.ru/ .
Была еще идея добавить возможность оставлять комментарии во всех разделах(объяснение для чего нужен объект, примеры кода запросов...), но сразу решил не делать, посмотрим нужно ли вообще это. Тем более, что есть куча людей, считающих такого рода информацию чуть ли не секретной - злобный пользователь прознает и залезет куда не надо.
UPDATE 24.12.2009: Оказалось, что я не совсем правильно скачал структуру (считал, что актуальная информация в ScalaSystem.mdb, а нужно было брать из ScaConvertDB.mdb). Поправил. Заодно обнаружил дополнительную информацию в ScaConvertDB. Как вам, например, такой комментарий к полю SY24001:

Code Type Identifies the type of code: 
Code - Description (Module(s) : Length) 

A1 - Communication channel (SY : 2) 
A2 - IBAN (SY : 2) 
A3 - Common address (SY : 2) 
A4 - Common address sub-type (SY : 2) 
A5 - Address entries (SY : 2) 
AA - Journal codes (GL : 6) 
AB - Cash books (GL : 6) 
AT - Tier (GL : 2) 
AX - Cash office (GL : 8) 
AY - Reason codes (GL : 2) 
AZ - Compound Category (GL : 2) 

A0 - Asset group (GL : 10) 
AF - Category A (GL : 4) 
AG - Category B (GL : 4) 
AH - Location (GL : 15) 
AI - Engineer (GL : 25) 
AJ - Disposal code (GL : 4) 
A6 - User defined field 1 (GL : 15) 
A7 - User defined field 2 (GL : 10) 
A8 - User defined field 3 (GL : 10) 
A9 - User defined field 4 (GL : 5) 
AC - Insurance company (GL : 25) 
AD - Insurance category (GL : 20) 
AE - Business transaction code (GL : 3) 
AK - Hospitality simulation transactions (GL : 2) 

BA - Post codes (SL : 10) 
BB - Categories (SL : 4) 
BC - Districts (SL : 2) 
BD - Advertising areas (SL : 2) 
BE - Area codes (SL : 4) 
BF - Trade codes (SL : 5) 
BG - Discount codes (SL : 2) 
BH - Accrual codes (SL : 2) 
BI - Commission codes (SL : 2) 
BJ - Bank codes (SL : 10) 
BK - Salesmen (SL/ST/PR : 3) 
BL - Field engineers (SL : 4) 
BM - Country codes (SL : 3) 
BN - Statistical codes (SC : 13) 
BO - Export codes (SL : 1) 
BP - Payment codes (SL : 2) 
BQ - Accounting code customer (SL : 2) 
BT - Billing terms (SL/PL : 4) 
BS - Document type (SL/PL : 3) 
BV - Jurisdiction code (SY/SL/PL : 2) 

CA - Post codes (PL : 10) 
CB - Categories (PL : 4) 
CC - Country codes (PL : 3) 
CD - Bank codes (PL : 10) 
CE - Sales tax codes (PL : 2) 
CF - Central bank codes (PL : 2) 
CG - Authorization codes (PL : 5) 
CH - Organization codes (PL : 1) 
CI - Accounting code supplier (PL : 2) 
CJ - Supplier type (PL : 1) 

DA - Purchaser (MP/PC/SC : 3) 
DC - Document codes (SY : 1) 

EA - Skill codes (HR/SM : 3) 
EB - Engineer categories (HR/SM : 4) 
EC - Price codes (HR/SM/PR : 2) 
ED - Order status (SM : 2) 
EE - Weighted priorities (OR/PR/SM : 1) 
EF - Order priorities (OR/PR/SM : 1) 
EG - Analysis codes (SM : 15) 
EH - Issue status (SM : 6) 
EI - Return status (SM : 6) 
EJ - Work schedule codes (HR/SM/PR : 6) 
E1 - Error code (SM : 8) (Code EK replaced with E1) 
EL - Error type (SM : 2) 
EM - Error category (SM : 4) 
EN - Status (SM : 2) 
EO - Note category (SM : 2) 
EP - Key word (SM : 15) 
EQ - Note code (SM : 2) 
ER - Price calculation profile (SM : 10) 
EX - Service order accounting codes order (SM : 2) 
EY - Service order accounting codes activ (SM : 2) 
EZ - Service contract accounting codes (SM : 2 
E0 - Type of days (SM : 1) 
E2 - Customer priority codes (SL : 1) 

F0 - Accounting code PUR (AM : 2) 
F1 - Accounting code TAX (AM : 2) 
F2 - Accounting code PLA (AM : 2) 
F3 - Accounting code SAL (AM : 2) 
F4 - Accounting code SCR (AM : 2) 
F5 - Accounting code REV (AM : 2) 
F6 - Accounting code ETX (AM : 2) 
F7 - Accounting code FUS (AM : 2) 
F8 - Accounting code ICT (AM : 2) 
F9 - Accounting code PLP (AM : 2) 
FA - Accounting code ACT (AM : 2) 
FB - Accounting code OLD (AM : 2) 
FC - Accounting code TRA (AM : 2) 
FD - Accounting code STO (AM : 2) 
FE - Accounting code REA (AM : 2) 
FF - Accounting code SFA (AM : 2) 
(FF - FP - Reserved for Asset Transaction Accounting codes) 
(F* - Reserved for Asset Management module) 

IA - Query queues (SC : 1) 
IB - Product groups (SC : 4) 
IC - Article status (SC : 1) 
ID - Discount codes (SC : 2) 
IE - Accounting codes (SC : 2) 
IF - Maintenance codes (SC : 1) 
IG - Service levels (SC : 1) 
IH - Service priority (SC : 1) 
II - Product categories (SC : 10) 
IJ - Budget types (SC : 2) 
IK - Extended product group (SC : 20) 
IL - Price list (SC/PR/OR/PC : 2) 
IM - Batch status codes (SC : 1) 
IN - Cost types (SC : 2) 
IQ - User defined field 1 (SC : 10) 
IR - User defined field 2 (SC : 10) 
IS - User defined field 3 (SC : 8) 
IT - User defined field 4 (SC : 6) 
IU - User defined field 5 (SC : 4) 
IV - User defined field 6 (SC : 4) 
IW - User defined field 7 (SC : 2) 
IX - User defined field 8 (SC : 2) 
IY - User defined field 9 (SC : 2) 
IZ - User defined field 10 (SC : 2) 
I1 - Cycle counting reason (SC : 4) 
I2 - Storage type (SC : 1) 
I3 - Bin type (SC : 3) 
I4 - Bin location rule type (SC : 4) 

GA - Serial number Standard transaction types (SC : 1) 
GB - Serial number Incident Codes (SC : 4) 
GC - Serial number Priority Codes (SC : 4) 
GD - Serial number Action Codes (SC : 4) 
GE - Serial number Status Codes (SC : 4) 
GH - QC Category (SC : 2) 
GF - Serial number User transaction types (SC : 3) 

HA - Cancellation code (OR : 4) 

MR - Customer request type (MA : 2) 

PA - Profession codes (PA : 4; HR/PR/SM : 6) 
PB - Education codes (PA : ) 
PC - Categories (PA : ) 
PD - Departments (PA : 5; HR/PR/SM : 15) 
PE - Community codes 1 (PA : 2) 
PF - Community codes 2 (PA : 2) 
PG - Community codes 3 (PA : 2) 
PH - Work places (PA : 5) 
PI - Person categories (PA : 1) 
PJ - Labour agreement areas (PA : 5) 
PK - Statistical codes 1 (PA : 1) 
PL - Statistical codes 2 (PA : 1) 
PM - Statistical codes 3 (PA : 1) 
PN - Statistical codes 4 (PA : 1) 
PO - Statistical codes 5 (PA : 1) 
PP - Statistical codes 6 (PA : 1) 
PQ - Vacation codes (PA : 4) 
PV - History categories (PA : 2) 

QA - Direct invoicing (DI : 2) 

R0 - User Field 1 (PR : 20) 
R1 - User Field 2 (PR : 10) 
R2 - User Field 3 (PR : 10) 
R3 - User Field 4 (PR : 8) 
R4 - User Field 5 (PR : 8) 
R5 - User Field 6 (PR : 4) 
R6 - User Field 7 (PR : 4) 
R7 - User Field 8 (PR : 2) 
R8 - User Field 9 (PR : 2) 
R9 - User Field 10 (PR : 1) 
RA - User DB Defined 1 (PR : 1-35) 
RB - User DB Defined 2 (PR : 1-35) 
RC - User DB Defined 3 (PR : 1-35) 
RD - User DB Defined 4 (PR : 1-35) 
RE - User DB Defined 5 (PR : 1-35) 
RF - User DB Defined 6 (PR : 1-35) 
RG - User DB Defined 7 (PR : 1-35) 
RH - User DB Defined 8 (PR : 1-35) 
RI - User DB Defined 9 (PR : 1-35) 
RJ - User DB Defined 10 (PR : 1-35) 
RK - (reserved) (PR : ) 
RL - Project category (PR : 4) 
RM - Project type (PR : 2) 
RN - Project status (PR : 1) (not used) 
RO - Project report codes (PR : 8) 
RP - Project budget codes (PR : 2) 
RQ - Project Text Group Description (PR : 1) 
RR - Project User Def Desc (PR : 1) 
RS - Accounting Codes Project (PR : 2) 
RT - Accounting codes Activity (PR : 2) 
RU - Activity cost category (PR : 1) 
RV - Activity gategory (PR : 10) 
RW - Project discount code (PR : 2) 
RX - Activity discount code (PR : 2) 
RY - Invoice sort code (PR : 2) 
RZ - (reserved) (PR : ) 

S* - (reserved) (PR : ) 
SB - IBAN Bank types (SY : 2) 
SE - IBAN Account entry (SY : 1) 
SF - IBAN Section filling (SY : 1) 
SG - IBAN Layout groups (SY : 1) 
ST - IBAN Section type (SY : 1) 
SV - IBAN Validation rule (SY : 3) 

TD - District codes (PL : 10) 

SA - Layout codes (GL : 11) 

WT - Withholding tax codes (PL : 4) 

X0 - Printer groups (SY : 2) 

Y0 - Header batch field 1 (SC/PC/OR/MP : 1) 
Y1 - Header batch field 2 (SC/PC/OR/MP : 1) 
Y2 - Header batch field 3 (SC/PC/OR/MP : 1) 
Y3 - Header batch field 4 (SC/PC/OR/MP : 1) 
Y4 - Header batch field 5 (SC/PC/OR/MP : 1) 
Y5 - Header batch field 6 (SC/PC/OR/MP : 1) 
Y6 - Header batch field 7 (SC/PC/OR/MP : 1) 
Y7 - Header batch field 8 (SC/PC/OR/MP : 1) 
Y8 - Header batch field 9 (SC/PC/OR/MP : 1) 
Y9 - Header batch field 10 (SC/PC/OR/MP : 1) 
YA - Batch user field 1 (SC/PC/OR/MP : 20) 
YB - Batch user field 2 (SC/PC/OR/MP : 10) 
YC - Batch user field 3 (SC/PC/OR/MP : 10) 
YD - Batch user field 4 (SC/PC/OR/MP : 8) 
YE - Batch user field 5 (SC/PC/OR/MP : 8) 
YF - Batch user field 6 (SC/PC/OR/MP : 4) 
YG - Batch user field 7 (SC/PC/OR/MP : 4) 
YH - Batch user field 8 (SC/PC/OR/MP : 2) 
YI - Batch user field 9 (SC/PC/OR/MP : 2) 
YJ - Batch user field 10 (SC/PC/OR/MP : 1) 

Z2 - Operation Code (SY/SL/PL : 10) 
Z3 - Cust/Supp Activity (SY/SL/PL : 10) 
Z4 - Invoice Type (SY/SL/PL : 10) 
Z5 - Brazilian Regions (SY/SL/PL : 10) 
Z6 - City Codes (SY/SL/PL : 10) 
Z7 - State Codes (SY/SL/PL : 10) 
Z8 - (reserved) 
Z9 - Taxable Situation (SY/SL/PL : 10) 
ZA - Type of Legal Entities (SY/SL/PL : 10) 
ZB - Service Codes (SY/SL/PL : 10) 
ZC - Tax Accounting Codes (SY/SL/PL : 1) 

V* - Reserved for VBA projects (all codes starting with V) 
W* - Reserved for VBA projects (all codes starting with W except for WT)