Импорт информации в iScala — это очень просто!

Один из участников интересовался вопросом импорта информации в iScala. Несмотря на то, что мне этот вопрос кажется довольно простым и разобраться в нём можно самостоятельно, я решил привести здесь пример.

В качестве примера приведу одну из задач, смысл которой я никогда не понимал, т.к. не вижу принципиальной разницы в том, списать ли сначала более дешёвые запасы, а потом более дорогие или сначала усреднить их стоимость, а потом списывать. Главное, что в конце концов, спишется одна и та же сумма. Но тем не менее, раз для кого-то это принципиально, спорить не будем. Итак, задача: усреднить цены на одни и те же позиции запасов, находящиеся на разных складах по разной цене. Модель оценки запасов при этом — средневзвешенная цена.

Как это сделать с наименьшими трудозатратами? Например, таким образом:
* Создадим склад ZZZ999
* Переместим на него все запасы со всех складов (при этом их стоимость усреднится)
* Переместим всё что находилось на складах изначально, обратно (но уже по усреднённой цене)

Данный пример, разумеется, важен не сам по себе, а как учебная ситуация по импорту данных в iScala. Конечно, мы будем это делать не вручную, а с помощью импорта заранее подготовленной информации. Следует заметить, что затраты усилий на подготовку данных для импорта, настройку импорта и сам импорт будут меньше ручного ввода данных только в том случае, если количество строк импорта будет не менее примерно 25, в противном случае, проще это сделать вручную (при ручном вводе, правда, более вероятна возможность ошибки)

Итак, подготовим данные. Это можно сделать либо распечатав в файл отчёт на конец периода, либо воспользовавшись простеньким SQL запросом. Я, разумеется, воспользуюсь запросом, но это вовсе не означает, что вы должны идти именно этим путём.

select
SC03001 as StockCode,
SC03002 as FromWH,
'ZZZ999' as ToWH,
SC03003 as Qty,
rtrim(SC03002)+'->ZZ' as Remark,
'УСРЕДНЕНИЕ' as Comment
from SC030100 (nolock)
where SC03003<>0
union all
select
SC03001 as StockCode,
'ZZZ999' as FromWH,
SC03002 as ToWH,
SC03003 as Qty,
'ZZ->'+rtrim(SC03002) as Remark,
'УСРЕДНЕНИЕ' as Comment
from SC030100 (nolock)
where SC03003<>0

Разумеется, можно сразу выгрузить результаты запроса в виде текстового файла, однако, я помещу эти данные в Excel и мы посмотрим, как надо выгрузить информацию из Excel’я в том виде, как это способна понять процедура импорта iScala.

Получилось вот что:

Обратите внимание, коды запасов у меня начинаются на 0, соответственно, поле куда я их поместил, должно иметь формат «текст». Выравнивание во всех ячейках нужно установить по левому краю.
Важно! Разделитель десятичных знаков при импорте должен быть «.» (точка! а не запятая)
Теперь установим ширину столбцов по 10 для всех столбцов (здесь у нас поля, которые в скале имеют длину 6 и 10 символов, а количества довольно небольшие, так что 10 вполне хватит. Сохраним (на всякий случай, вдруг пригодится).
Теперь сохраним в формате «форматированный текст (разделитель — пробел) (*.prn)
Откроем сохранённый .prn файл с помощью блокнота:

Теперь мы должны определить с какого символа начинается каждое поле и сколько символов оно длиной, например, поле «Со склада» начинается с 11-го символа и имеет длину 10 символов (на самом деле в Скале это поле не более 6 символов длиной).
Теперь «объясним» это Скале. Для этого следует воспользоваться следующим пунктом меню: Управление Запасами -> Прочее -> Функции Импорта -> Импорт Проводок Перем.Запасов -> 2. Определение проводок

Настроим соответствие файла для импорта тому, в какие поля iScala это требуется поместить:

Из данной картинки видно, что в подготовленном нами файле поле «Код Запаса» начинается с 1-й позиции и имеет длину 10 символов;
поле «Со Склада» начинается с 11-й позиции и имеет длину 6 символов;
поле «На Склад» начинается с 21-й позиции и имеет длину 6 символов;
поле «Количество» начинается с 31-й позиции и имеет длину 10 символов;
поле «Ссылка» начинается с 41-й позиции и имеет длину 10 символов;
поле «Номер заказа» начинается с 51-й позиции и имеет длину 10 символов;
Теперь остаётся выполнить сам импорт с помощью пункта меню Управление Запасами -> Прочее -> Функции Импорта -> Импорт Проводок Перем.Запасов -> 1. Обновление

Обратите внимание на склады: я указал один и тот же склад. Всё дело в том, что этот параметр играет роль только в том случае, если в файле импорта нет информации о складах, но в нашем файле эта информация имеется, поэтому этот параметр не играет никакой роли.

Ну, вот, процесс завершён. Вы заметили, что одна запись ошибочная? Это мы с вами забыли убрать из файла импорта заголовок. Вот система и отказалась импортировать самую первую строчку, так как не нашла позиции запаса с кодом «Код запаса» Smile

Теперь можно распечатать список проводок по запасам и посмотреть результат наших действий:

В результате мы получили то, что хотели. На картинке видно, что запас приходит на склад ZZZ999 по разным ценам, а вазвращается обратно по усреднённой. А мы узнали, как делать импорт в Скалу.

Serj: Добавлено: 27.01.2011 17:35

Какая до боли знакомая процедура 🙂

Алексей Васильев: Добавлено: 03.02.2011 19:10    Заголовок сообщения: Импорт накладной по заказу на закупку

Продолжим тему. В качестве примера привожу импорт накладной по заказу на закупку.

Итак, подготовим данные. Я воспользуюсь запросом, но это вовсе не означает, что вы должны идти именно этим путём. Данные могут быть взяты, например, от поставщика.

select
PC03001 as OrderNumber,
PC03002 as OrderLine,
PC03005 as StockCode,
PC03006+PC03007 as StockItemDescription,
PC03010 as Qty
from PC030100 (nolock)
where PC03001='5100000009'

Эти данные я выгружаю в Эксель и наобум добавляю информацию в поля, которых нет в запросе (чисто для примера)
Получилось вот что:

Теперь установим ширину столбцов, соответственно полям в iScala. Ненужным мне полям с кодом запаса и описанием я просто назначаю ширину столбца равной нулю.
Теперь сохраним в формате «форматированный текст (разделитель — пробел) (*.prn)
Откроем сохранённый .prn файл с помощью блокнота:

Теперь мы должны определить с какого символа начинается каждое поле и сколько символов оно длиной, например, поле «№ строки» начинается с 11-го символа и имеет длину 6 символов.
Теперь «объясним» это iScala. Для этого следует воспользоваться пунктом меню как на картинке
Настроим соответствие файла для импорта тому, в какие поля iScala это требуется поместить:

Из данной картинки видно, что в подготовленном нами файле поле «№ заказа на закупку» начинается с 1-й позиции и имеет длину 10 символов;
поле «Позиция» начинается с 11-й позиции и имеет длину 6 символов;
и так далее.
Теперь остаётся выполнить сам импорт

Ну, вот, процесс завершён. Вы заметили, что одна запись ошибочная? Почему это произошло я уже писал ранее, найдите это объяснение выше.
Теперь можно через запросы по заказам войти в строку поставки по строке заказа и посмотреть результат наших действий:

В результате мы получили то, что хотели. На картинке я обозначил прямоугольниками те поля, подробности по которым мы хотели указать при импорте.

А какую ещё информацию и в каком пункте меню можно импортировать в iScala? Читайте новый материал: «Ещё раз об импорте информации в iScala» от 21.04.2017

Задать вопрос или оставить отзыв:

    Ваше имя или псевдоним (обязательно)

    Ваш e-mail (обязательно)

    Тема (обязательно)

    Сообщение