Интеграция Axapta с 1Cv8.

Урок 2: Загрузка справочника номенклатуры

На первом уроке мы изучили, как создавать источники, объекты загрузки и простые соответствия. Для загрузки справочника Номенклатура нам понадобится табличное соответствие. Причем таблица может меняться, в зависимости от данных, находящихся в Axapta.

Итак, во-первых создадим источник для справочника НоменклатурныеГруппы.

Как видно из текста запроса, наименования групп можно устанавить самостоятельно. Объект для справочника НоменклатурныеГруппы будет очень прост, поэтому я не буду тут его описывать.

Далее создадим источник для определения неких групп номенклатуры в Аксапте и после этого сопоставим эти группы одинэсовским.

ВНИМАНИЕ: В источнике для соответствия поля (Наименование, Тип, Значение) обязательны!

Далее создаем необходимое нам соответствие на основании источника:

В данном случае поле Тип является информационным, для ввода строкового значения.

В поле значение мы поместим соответствующие наименования номенклатурных групп. Строки, где не будет внесено Значение, в дальнейшем создании окончательного запроса участвовать не будут.

Далее создадим источник непосредственно для элементов справочника номенклатуры. Вот текст запроса:

Недостаток демоверсий – нехватка «нормальных» данных. Поэтому приходится вставлять в код запроса замену неких типов. Для демоверсии Аксапты столы – продукция. Нам же приходится использовать их как товары, из-за отсутствия последних в выбранной версии Axapta.

Теперь посмотрим на конечную версию запроса, которая будет выполнятся после обработки нашего «метазапроса»:

select Код
, Наименование
, case
when left(Наименование, 4) = 'Стол' then 'Товар'
else НоменклатурнаяГруппа
end НоменклатурнаяГруппа
, ЕдиницаИзмерения
from (
select a.itemid as Код,
a.itemname as Наименование,
a.itemgroupid as Родитель,
0 as ЭтоГруппа,
a.itemname as ПолнНаименование,
b.unitid as ЕдиницаИзмерения,
b.priceSecCur_ru as Себестоимость,
1 ПорядокХраненияОтпускнойЦены,
b.price as Цена,
(select currencyCode
from axdb..companyinfo as ci
where ci.dataareaid = a.dataareaid) as Валюта,
case a.itemgroupid
when 'Готовые' then 'Продукция'
when 'СтолыКухон' then 'Товар'
when 'СтолыОбед' then 'Товар'
when 'СтолыПисьм' then 'Товар'
when 'Услуги' then 'Услуга'
else ''
end НоменклатурнаяГруппа,
b.priceSecCur_ru as ПлановаяСебестоимость, -- необходимо уточнение
a.itemId as ИдА
from axdb..inventtable as a
left outer join
axdb..inventtablemodule as b
on (a.itemid = b.itemid
and 0 = b.moduletype
and a.dataareaid = b.dataareaid)
where a.dataareaid = 'dmo'
) s
where НоменклатурнаяГруппа <> ''

Вот и видим каким же образом совершена подстановка для табличного соответствия. В селекте вставляется выбор по значению поля, описанного в соответствии, как Строка-значение по парам Наименование – Значение.

Далее для объекта вроде все понятно. Остановлюсь только на двух полях, в одном из которых будет выбираться значение перечисления, а во втором логическое значение.

По умолчанию выставляем НДС 18%.

Поле Услуга будет принимать значение Истина, если Номенклатурная группа данного товара Услуга.

Вот теперь точно все. Можно загружать:

Интеграция Axapta с 1Cv8.

Добавить комментарий

Пролистать наверх