Оглавление

Список моделей ТСД с ОС Андроид, на которых был успешно протестирован функционал CWMS3000:

UROVO - морозильный RT 40
UROVO - DT40
HONEYWELL морозильный CK65L0N
HONEYWELL EDA 50k
MOBILEBASE MD5
Caribe - IP 65
Mobilebase DS5-AX
UROVO R70-U2
Honeywell EDA61K
ZEBRA (Motorola) MC330M

Список будет дополняться.


Android

* Инструкция по запуску сервиса Android

* Инструкция по запуску сервиса Android на LINUX с использованием SUPERVISOR


Android ТСД

Настройка CWMS на терминале Android


1) 1) Запросить apk файл в отделе Технической поддержки

Запрос

2) Перекидываем компонент на терминал и проверяем подключение к сети на терминале.

3) Производим установку компонента, после чего заходим в настройки в приложении, которое установили.
Важно
Что бы попасть в меню настроек, необходимо удерживать в правом верхнем углу экрана палец и появится всплывающее меню.

Адрес сервера – указываем тот, на котором запущен сервис Android
Порт – оставляем по умолчанию
Размер шрифта – оставляем по умолчанию

Нажимаем сохранить.
4) Запускаем на терминале приложение и авторизовываемся


Выберите файл ниже и нажмите "Скачать"
Или просто нажмите на эту картинку -


Политика Резервного Копирования


Руководство Администратора Резервное копирование CWMS3000

Организация политики резервного копирования в рамках БД Oracle 10G 10.2.0.4

На сервере предоставленной компанией развернута операционная система
- Microsoft Windows 2008 Server 64
- Oracle 10 G 64
Настроена система резервного копирования СУБД Oracle 10G по технологии DataGuard.

*Проведенные меры гарантируют надежность базы и невозможность потери данных в рамках 5 минут. Скорость восстановления в случаи возможного сбоя составит менее 2 часов. Рекомендации: после внедрения системы CWMS3000 реализовать холодное резервное копирование базы данных и архивных логов на независимый, не хранящийся в помещении серверной источник (пример: кассета, стример и т.д.), в этом случаи исключается абсолютная возможность потери данных. *

1. Процедура резервного копирования.

- резервное копирование выполняется непрерывно в режиме онлайн

Рис1. задание BACKUP выполняется НЕПРЕРЫВНО . Основной сервер база данных Oralce 10G 10.2.0.4 orawms-01 в режиме реального времени (не позже чем раз в 5 минут) передает ARCHIVELOG на резервный сервер Oralce 10G 10.2.0.4 orawms-02 , который в свою очередь производит все транзакции произошедшие на основном сервере. Процессом управляет встроенные в Oralce 10G 10.2.0.4 механизмы DATAGUARD . Сервера автоматически находят друг друга (выключение сервера, перезагрузка сервера, выключение и простой до 24 часов) при условии нахождения в рамках одной ЛВС (Локально Вычислительной Сети) и неизменности сетевых реквизитов указанных выше, и синхронизируются .

2. Процедура проверки валидности схемы резервного копирования.
Рекомендация выполнять процедуру 2 - Ежедневно .
Шаг 1.
Пуск -> Выполнить
(Действие возможно выполнять как на любом из указанных выше серверах, так и на любом ПК находящимся в рамках одной ЛВС с серверами с установленным OracleClient версии 10G)

dgmgrl

Шаг 2(dgmgrl).

connect sys/Пароль

show configuration

Должно быть слово SUCCES если не SUCCES сервера находятся не в синхронизированном состоянии. Необходимо оставить заявку в техническую поддержку ООО “ИнтелСервис”:
Тел. +7495 7757631
notify@cwms3000.ru

Шаг 3(dgmgrl).
SHOW DATABASE 'bwms' 'RecvQEntries';

(команда возвращает таблицу лог-файлов, полученных из основной базы, но не примененных к резервной. При синхронной работе таблица должна быть пустой)

Шаг 4(dgmgrl).
EDIT DATABASE 'bwms' SET STATE='READ-ONLY';

(перевод резервной базы в режим «только чтение»)

Шаг 5(sqlplus) Выполняется на резервном сервере.
Пуск -> Выполнить

Sqlplus

Login: *
Password: *

(запуск командной оболочки для sqlplus)

Шаг 6(sqlplus) Выполняется на резервном сервере.

Select max(n) from st_stock;
Select max(n) from st_doc_in;
Select max(n) from st_doc_out;

(запросы возвращают номера последних строк из таблиц: сток, документы прихода, документы расхода. Их необходимо зафиксировать, для дальнейшего сравнения с номерами строк в основной базе)

Шаг 7(sqlplus) Выполняется на основном сервере.

Выполнить Шаги 5 и 6 на основном сервере. Сравнить полученные номера на основном и резервном серверах.

При сильном расхождении номеров – на сотни, тысячи и т.п., необходимо оставить заявку в техническую поддержку ООО “ИнтелСервис”.

Шаг 8(dgmgrl).

EDIT DATABASE 'bwms' SET STATE='ONLINE';

(возврат резервной базы в состояние «подключена»)

3. Процедура перехода на использование резервного сервера.

В случаи если основная база вышла из строя и не подлежит востанавлению штатными методами (отказ wms) выполняется следующая процедура:

Шаг 1.
Пуск -> Выполнить (Действие выполняется на резервном сервере)

dgmgrl
Шаг 2.

connect sys/Пароль

Шаг 3.

failover to bwms (резервный сервер берет на себя функции основного).

КОМАНДА выполняется при одобрении инженера технической поддержки.
Тел. +7495 7757631
notify@cwms3000.ru
После команды меняем IP адреса на сервере DNS вручную
Перед запуском в Listner поменять IP - адрес!!!!!!


База для нового клиента


1.Патч для инстанса BOX
Выгрузить патчсет с базы разработки и применить патч сет на инстанс №5 BOX

2.Создание нового инстанса базы клиента
Скрипты по созданию инстанса клиента в базе разработки (если клиент не заведен ранее):

INSERT INTO tst.cis_copy
  (N,FD,TD,NAME,DSC,WRAP,
  LICENSE_CNT,MOBILE_LICENSE_CNT,DPC_MAIL,
  EXPIRE,DSC_BACKUP,NEXT_PATCH_DATE)
VALUES
 (<номер нового инстанса>,kk_common.GetFD,kk_common.GetTD,'<ПОЛЬЗ_БД>-<ИНСТАНС_БД>','Реквизиты подключения к клиенту',1,
  <Кол-во Стац Лицензий>,<Кол-во Моб Лицензий>,<Адрес клиента для рассылки эл писем>,
  <Срок лицензии до>,'<Реквизиты сервера БД>',<дата след патча>)
/

Скрипт создание записи о проведенном патче:

INSERT INTO cis_ddl_changes_applyed
(CIS_DDL_CHANGES_N,CIS_COPY_N,USER_N_APPLYED,FD,TD,N,PATCHSET_N)
select max(CIS_DDL_CHANGES_N) 
, <порядковый номер инстанса> , <0 или свой номер из списка сотрудников>, sysdate , kk_common.GetTD , 0 , -9
 from tst.cis_ddl_changes_applyed where CIS_COPY_N = 5
/

3.Экспорт базы пользователя BOX
Создать экспорт пользователя BOX Экспорт БД
Заархивировать экспорт ZIP, RAR
Передать файл клиенту
Настройка Сервера БД


Проверка архивных логов через MobaXterm.



Проверка работоспособности STANDBY.

oracle

dgmgrl

connect

ваш пароль от SYS

show configuration

- Удаление архивных логов через Планировщик заданий.


Constants


C клиентом Oracle


Инструкция подключения к БД для ПК Windows
Для начала нужно установить Oracle 10.2.0.3
1. Отключаем UAC в Windows

2. Устанавливаем режим совместимости на установочном файле setup.exe

3. Запускаем установочный файл Setup.exe

4. Next

5. Выбираем Administrator

6. Путь оставляем по умолчанию
7. Проверяем нет ли ошибок

8. Install

9. Далее настраиваем соединение. Галочку не ставим, жмём следующий.

10. Оставляем всё как есть, жмём следующий.

11. Задаём имя XX- где XX название инстанса.

12. Оставляем TCP, жмём следующий.

13. Прописываем ip адрес БД

14. Ставим галочку «Yes, perform a test»

15. Нажимаем Change Login. Прописываем USERNAME и PASSWORD от БД, далее жмём следующий.

16. Жмём следующий

17. Оставляем галочку No, жмём следующий.

18. Подключение успешно добавлено. Жмём следующий.

19. Нажимаем готово

20. Установка Oracle завершена. Нажимаем Exit.

21. После установки Oracle, создаём папку на диске С, выдаём полные права на папку, под названием CWMS3000, кладём в неё файл cwms3000.exe и запускаем.

Так же необходимо выдать права на реестр и права на создание глобальных объектов.
Выдача прав на создание глобальных объектов.
• Заходим в локальную политику безопасности.
Для этого с правами администратора нажимаем Пуск, в строке поиска набираем слово "локальная", запускаем Локальную политику безопасности.
• Нажимаем в Локальные политики/Назначение прав пользователя.
• Находим тут Создание глобальных объектов, нажимаем два раза и добавляем проблемного пользователя.
• Применить. Ок.

22. После выгрузки первых dll файлов таких как menu.dll и midas.dll, необходимо зарегистрировать midas.dll под правами локального администратора.
• Запускаем командную строку из-под администратора
• Прописываем следующее «regsvr32 путь до файла\midas.dll»
23. Указываем имя пользователя и пароль от БД, строка соединения SSID

24. Авторизовываемся в системе


Выберите файл ниже и нажмите "Скачать"
Или просто нажмите на эту картинку -


Очистка архивных логов RMAN


Удаление архивных логов через RMAN

Заходим в командную строку

Пишем rman

connect target sys/password@TST , где TST - имя базы

delete archivelog all;
______________________

y - подтверждение операции.


Удаление архивных логов через Планировщик заданий.

Создаем отдельную папку под батник со скриптом очистки архивных логов и файл конфига.

Батник называем латинице, например: delete_arch_log , чтобы было наглядно понятно за что он отвечает.

@echo off

rman.exe TARGET sys/password@wms cmdfile=C:\Del_ARCH_Log\rman_archl_del.rcv log=C:\Del_ARCH_Log\log.txt

Где

cmdfile=C:\Del_ARCH_Log\rman_archl_del.rcv
- путь до файла конфига

sys/password@wms
- пароль пользователя SYS и уникальное название БД.
log=C:\Del_ARCH_Log\log.txt
- скрипт на создание логирования по удалению.

rman_archl_del.rcv - файл конфигурации промежутка дат для очистки логов.

run
{
CROSSCHECK ARCHIVELOG ALL;
DELETE NOPROMPT ARCHIVELOG TIME BETWEEN 'sysdate-365' AND 'sysdate-10';
}

Где:

CROSSCHECK ARCHIVELOG ALL;
- команда проверки арклогов.
DELETE NOPROMPT ARCHIVELOG TIME BETWEEN 'sysdate-365' AND 'sysdate-10';
- команда удаления арклогов старше 10 дней.

Данные действия нужно сделать для BD (БД) и STANDBY (резервный сервер БД). Отдельные файлы для отдельных задач в планировщике.

Далее создаем задачку в планировщике задач.





Проверять очищаются ли арклоги или нет можно по инструкции:

- Проверка архивных логов через MobaXterm.


Отчет DGMGRL для контроля синхронизации StandBy


Создать файл SendDGMGRL.vbs следующего содержания

'----- Константы: которые нужно задать ----------

const SMTP_Host = "mail.server.ru"                      ' Адрес SMTP-сервера
const DB_Connection = "sys/pasword@instance"            'Строка соединения с БД
const SMTP_Subj = "Отчет dgmgrl"                        ' Тема сообщения
const SMTP_Port = 25                                    ' Порт SMTP
const SMTP_Name = "smtp_user"                           ' Логин для отправки
const SMTP_Password = "pswd"                            ' Пароль для отправки
const SMTP_From = "user@server.ru"                      ' Адрес отправителя
const SMTP_To   = "notify@cwms3000.ru"  ' Адрес получателя
const WaitCyclesCnt = 300                                   ' Задержка в секундах на ожидание вывода
'------------------------------------------------

const cdoSendUsingPort = 2
Const cdoBasic = 1

dim fso, fn, f, ff(), cnt
dim WshShell, oExec, input

set fso=createobject("Scripting.FileSystemObject")
Set WshShell = WScript.CreateObject("WScript.Shell")

Set oExec = WshShell.Exec("dgmgrl")
oExec.StdIn.Write "connect " & DB_Connection
oExec.StdIn.Write VbCrLf
oExec.StdIn.Write "show configuration;" 
oExec.StdIn.Write VbCrLf
oExec.StdIn.Write "show database wms sendqentries;" 
oExec.StdIn.Write VbCrLf
oExec.StdIn.Write "show database bwms recvqentries;" 
oExec.StdIn.Write VbCrLf
oExec.StdIn.Write "exit;" 
oExec.StdIn.Write VbCrLf

input = "" 

Do While oExec.Status = 0
     WScript.Sleep 100
Loop

Do While Not oExec.StdOut.AtEndOfStream
    input = input & oExec.StdOut.Read(1)        
Loop

'Set f = fso.GetFolder(fso.buildpath(Cons_Path, "attachment")).Files

' Создание списка файлов
'for each fn in f
' if lcase(fso.getextensionname(fn))="txt" then
'  AddToArray fn, ff, cnt
' end if
'next

' Отправка письма
SendMessage SMTP_To, SMTP_Subj & " от " & Now, input, ff

' Удаление файлов
'for each fn in ff
' fso.deletefile fn
'next

'----------------
' Отправка электронного письма 
sub SendMessage(Recipient, Subj , Text, Attachments)
 dim msg,fn
 set msg = WScript.CreateObject("CDO.Message")
 with msg
  .BodyPart.charset = "KOI8-R" 
  .From = SMTP_From
  .To = Recipient
  .Subject = Subj
  .TextBody = text
  .Configuration.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver") = SMTP_Host
  .Configuration.Fields("http://schemas.microsoft.com/cdo/configuration/sendusing") = cdoSendUsingPort
  .Configuration.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = SMTP_Port
  .Configuration.Fields("http://schemas.microsoft.com/cdo/configuration/sendusername") = SMTP_Name
  .Configuration.Fields("http://schemas.microsoft.com/cdo/configuration/sendpassword") = SMTP_Password
  .Configuration.Fields("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = cdoBasic
  .Configuration.Fields.Update
  .MimeFormatted = true
  for each fn in attachments
   .addattachment fn
  next
  .Send
 end with
end sub

'----------------
' Добавление элемента в массив
sub AddToArray(Itm, Arr, Count)
 Count = Count + 1
 ReDim Preserve Arr(Count-1)
 Arr(Count-1) = Itm
end sub

Добавить вызов этого файла в планировщик Windows, настроить интервалы и время запуска


DPC

Инструкция по запуску сервиса DPC


Выгрузка из библиотеки
1) Необходимо зайти в утилиты –> библиотеки.

2) Найти в поиске DPCenterServ.exe и выгрузить нажав на «…»

3) После того, как выгрузили заходим в корневую папку с программой CWMS.
Копируем файл DPCenterServ.exe в отдельную папку. (Например, DPC на диске С)
Так же необходимо дать права на папку (запись, чтение и выполнение, изменение, чтение), в которой лежит DPCenterServ.exe

Запуск в режиме приложения
Для работы службы нам необходимо запустить DPCenterServ.exe в режиме приложения для выгрузки всех модулей, которые используется при работе сервиса.
1) Запускаем DPCenterServ.exe

2) После запуска, выбираем инстанс

3) Авторизовываемся

4) Ждём примерно 15 минут, для выгрузки всех модулей, после чего закрываем.

Создание службы
1) Открываем командную строку от имени администратора

2) Прописываем путь до файла DPCenterServ.exe и команду /install, после чего нажимаем enter

3) Служба успешно создана

4) Открываем службы

5) Ищем нами созданную службу

6) Открываем её свойства и переходим во вкладку «Вход в систему»

7) Авторизовываемся под учётной записью с правами администратора, поставив галочку и задав верные данные от неё

Реестр службы
1) Нажимаем Win + R, открывается выполнить

2) Выполняем команду regedit

3) Открывается реестр

4) Переходим по пути HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SDPCenter

5) Открываем ImagePath

6) Прописываем после пути такие значения, как:
• BaseName – имя секции, из которой брать значения параметров ресстра
Например “BaseName=TST-TST” – где 1 TST – это база, 2 TST – это пользователь
• TaskGroup – группа задач
Например, если необходимо распараллелить dpc задачи на несколько служб
7) Так как мы создали 1 службу, то прописываем только значение BaseName


Почтовые данные
Так же необходимо прописать почтовые данные в реестре
1) Переходим по пути HKEY_CURRENT_USER\Software\CWMS3000\TST-TST

2) Заполняем следующее:
• DPCenterNotifyMailList – список e-mail адресов подлежащих оповещению
• MailSMTPHost – DNS имя или IP адрес SMTP сервера
• MailSMTPPort – порт SMTP сервера
• MailUser – имя пользователя
• MailUserPwd – пароль
3) Делаем автологин, для этого в 6 пункте необходимо прописать VTR356

Файлы TXT
Так же для работы служб, необходимо создать файл 1.txt по путям:
C:\Windows\System32\config\systemprofile\Desktop
C:\Windows\SysWOW64\config\systemprofile\Desktop


Установка сервися отслеживания работы DPCService и PrintService


DPCWatcher приложение win32, которое может работать как приложение (ключ запуска /app), или может устанавливаться как Windows сервис (ключ запуска /install).

Каждый из стандартных сервисов CWMS DPCService и PrintService, при попытке взятии задании из очереди отправляет в сеть данные с широковещательными пакетами протокола UDP по порту 2573. DPCWatcher слушает на порту 2573 и анализирует состав посылки

Установка сервиса с ключем /install, после дописать в реестре(HKEY_LOCAL_MAZHINE\SYSTEM\CurrentControlSet\services\SDPC_Watcher) доп параметрый запуска "BaseName=TEST-TST" "RestartMin=10" "SDPCenter1" "SPrintServ" "RestartError=10" "CmdFile=RunIfERR.cmd" "UDPPort=2573".

Описание параметров

net stop %1
taskkill /PID %2 /F
net start %1

где %1-передается имя сервиса, %2-PID Process ID из windows(сам файл изменять не надо)

Рекомендации для клиентов.
Уважаемые клиенты, рекомендуем вам перезагружать DPC службы 1 раз в сутки, а сервер АПП 1 раз в 2 суток.

Важная информация для клиентов, использующих ОС Windows 7 на АПП сервере
Возможна ситуация, когда DPC-сервисы, запущенные в режиме служб, будут отрабатывать очередь заданий, но при этом задачи, использующие MS-excel в работе, по факту никаких действий совершать не будут, т.е. файлы в систему загружаться не будут, печать по шаблонам идти не будет, рассылка флешбеков вестись не будет. В логах сервисов можно будет увидеть связанную с этим ошибку: Microsoft Office Excel cannot access the file... Для устранения данной ошибки и возобновления корректной работы сервисов необходимо сделать следующее:

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


Инструкция по редактированию масок штрихкодов

Маски штрихкодов настраиваются в модуле Рабочие места/Штрихкодирование/Маски штрихкодов .

Создать новую маску можно, нажимая на кнопку StBarcodeMaskNew(отмечено желтым), либо можно взять за основу уже сделанную маску ШК, путем нажатия на иконку с двумя бумажными листами(отмечено салатовым).
Проверить есть ли уже настроенная маска или нет можно с помощью функции теста(отмечено голубым). Редактируются созданные маски через значок карандаша(отмечено серым). Удаляются по нажатию на красный крест(отмечено красным). Удаленные маски продолжают отображаться, но отличить их можно по столбцу TD, у удаленных будет проставлена конкретная дата удаления.

Далее разберем создание маски на примере:

На скриншоте видно, создана маска (01)14810065009657(11)211208(17)220904(10)2(21)1716.

Название маски записывается в соответствующее поле.

В строке Маска отображается параметры маски ШК, которые вы заполняли.


В строке Пример вы можете указать ШК для наглядности.


В строке Длина указываете общее количество символов ШК(скобки не учитываются).

В главном поле вы добавляете параметры маски ШК ANCHOR и KEY. Добавляются они путем нажатия на соответствующую кнопку. Разберем первый якорь из нашего примера: как видно из скриншота, он имеет описание - "ANCHOR:(01)+1/3|14". Расшифровывается оно так: "ANCHOR"-якорь, "(01)"-наименование якоря(то что в скобках), "+1" - с какого символа идет распознавание якоря, "3" - с какого символа идет считывание состава якоря, "14" - длина символов состава якоря.

Первый ключ из нашего примера: "KEY:CHAR|/+CODE", где "KEY" - ключ, "CHAR"- тип данных значений AI, "+CODE" - имя переменной в которую считывается значение(на следующем скриншоте показано).

В данном примере клиенту необходимо было при скане ШК передавать код номенклатуры, дату производства и партию.

ANCHOR:(01)+1/3|14 - якорь (01) считывается с первого символа, состав считывается с третьего символа, длина состава 14 символов
KEY:CHAR|/+CODE - передается код номенклатуры.
ANCHOR:(11)+17/19|6 - якорь (11) считывается с семнадцатого символа, состав считывается с девятнадцатого символа, длина состава 6 символов
KEY:DATE|YYMMDD/+PROD_DATE - передается дата производства в формате YYMMDD
ANCHOR:(10)+33/35|1 - якорь (10) считывается с тридцать третьего символа, состав считывается с тридцать пятого символа, длина состава 1 символ
KEY:CHAR|/6+PART_NUM - передается серийный номер(партия).

По итогу заполнения всех параметров маски ШК жмем сохранить.
Чтобы проверить работоспособность маски вставляем пример в поле тест и жмем на соответствующую кнопку, в случае корректного создания маски получаем такой результат:

По мере добавление видов ШК, инструкция может дополняться.


EAN UCC Code128


UCC/EAN ИДЕНТИФИКАТОР ПРИМЕНЕНИЯ

СТАНДАРТ

GS1-128 (formerly UCC/EAN-128) Barcodes

ВВЕДЕНИЕ

Стандарт “UCC/EAN ИДЕНТИФИКАТОР ПРИМЕНЕНИЯ” призван способствовать эффективному движению товаров и информации. Стандарт применим для перемещения товаров и информации внутри и вне предприятия, между различными отраслями индустрии и на глобальном уровне.

Стандарт разработан для решения огромного количества различных задач, возникающих в процессах товарного обращения мировой коммерции, с учетом максимальной гибкости его применения и минимизации издержек. При разработке стандарта главное внимание было обращено на расширение управляемости системы с помощью организации различных типов данных по их функциональному использованию и объединению схожих форм данных в глобальный стандарт элементов данных. В результате стандарт очень напоминает универсальный язык. Для некоторого количества “слов” были определены их “написание” и “смысл”. Эти «слова» используются для составления «сообщений», подходящих к определенному типу товаров и определенной среде обращения. Эти «сообщения» понимаются каждым и везде.

Этот стандарт разработан, чтобы дополнить, а не заменить, другие стандарты EAN/UCC. Ранее большинство стандартов EAN/UCC разрабатывались, в основном, для идентификации потребительских товаров. Нужды индустрии и коммерции требовали идентификацию множества других характеристик товара в сфере перемещения его по пути движения от производителя до конечного потребителя. К таким характеристикам можно отнести срок годности товара, номер лота, идентификацию контейнера, единицы измерения и размеры грузовой единицы, адреса отправителя и получателя и еще целый ряд другой информации. Стандарт предложил альтернативный метод некоторых EAN/UCC кодов, используемых с другими символиками. Однако, эти возможности были встроены в стандарт лишь только для того чтобы увеличить выбор возможностей для создания сообщений с наименьшими издержками.

Стандарт “UCC/EAN ИДЕНТИФИКАТОР ПРИМЕНЕНИЯ” представляет нечто большее, чем штриховой код. Он объединяет средства коммуникации с возможностью связи информации и товаров. Он дополняет EAN/UCC процессы идентификации продуктов.

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

Внедрение и использование этого стандарта создает стабильность использования программного обеспечения, обрабатывающего потоки товаров и информации между предприятиями на длительную перспективу. Стандарт создан на принципах “открытой архитектуры”. Стандарт разработан для внедрения его в виде отдельных модулей в новые области применения с минимальными отклонениями. Фундамент стандарта построен таким образом, чтобы получить выгоды от будущих технологических улучшений без серьезного вмешательства в применяемое программное обеспечение.

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

ОБЩЕЕ ОПИСАНИЕ ИДЕНТИФИКАТОРОВ ПРИМЕНЕНИЯ

Идентификаторы применения (Application Identifier - AI) являются префиксами, используемые для определения полей данных. Каждый префикс уникально определяет смысл и формат поля данных, непосредственно следующего за ним. В дальнейшем, идентификатор применения и поле данных вместе взятые, будем называть элементом строки.

Каждый AI состоит от двух до четырех цифр, предшествующих полю данных, которое он определяет. Для экономии длины, все широко используемые AI содержат только 2 цифры. Первые две цифры определяют длину AI. Например, AI, начинающиеся с 40, являются трехзначными: от 400 до 409.

Поле данных, следующее за AI, может быть как цифровым, так и буквенно-цифровым. Его длина не может превышать 30 символов. Оно может быть фиксированной или переменной длины.

Элементы строк кодируются в системе EAN/UCC-128, подмножестве системы Code 128. Система EAN/UCC-128 содержит зарезервированный символ FNC1, следующий непосредственно за стартовым символом.

Несколько элементов строк могут соединяться в единую строку (единый штриховой код). Когда первые две цифры AI предопределяют длину поля, то нет нужды в разделителе. Следующий AI следует сразу же после последнего символа поля данных предыдущего AI. Если в единой строке первым идет AI с полем переменной длины, то перед следующим AI идет разделитель – FNC1.

Максимальная длина строки символов, с учетом коэффициента увеличения, изображенная в виде штрихового кода, не должна превышать 16.5 см. Количество символов не должно превышать 48.

ОБРАБОТКА ЭЛЕМЕНТОВ СТРОК

Обработка элементов строк выполняется по шагам:

1-шаг. Считывание и декодирование.

Штриховой код (ШК), символьное представление буквенно-цифровой строки, читается сканером, который воспринимает символы ШК в системе Code 128. Сканер (а точнее, программное обеспечение, «вшитое» в сканер) проверяет:

а) целостность данных, вычисляя контрольное число по алгоритму modulo 103,

б) создает символ идентификации системы EAN/UCC-128 -]C1; где ]C1=стартовый символ +FNC1,

в) переводит разделители FNC1 в символы <GS>,

г) формирует строку символов данных,

д) передает строку символов для дальнейшей обработки программному обеспечению на компьютере.

2-шаг. Обработка строки символов программой.

Обработка строки состоит из следующих этапов, которые:

а) верифицируют символику EAN/UCC, проверяя идентификатор символики – ]С1,

б} разбивают строку на отдельные записи, содержащие идентификатор применения и его поле данных, используя предопределенные значения длины поля или разделители <GS>,

в) передают каждый AI и соответствующее поле на дальнейшую обработку.

Пример.

Пусть штриховой код содержит глобальный идентификационный номер продукта (AI 01), номер лота (AI 10) и серийный номер (AI 21):

Ниже приводится схема обработки элементов строк:

E A N / U C C – 1 2 8 С И М В О Л

Start C

FNC1

01 04841234123457

10 12345qwert

FNC1

21 asdfghjk

C/D

Stop

Сканирование / декодирование

С Т Р О К А Д А Н Н Ы Х С И М В О Л А

]C1

01 04841234123457

10 12345qwert

<GS>

21 asdfghjk

Обработка строки программой

З А П И С И П Р О Г Р А М М Ы

01 04841234123457

10 12345qwert

21 asdfghjk

Замечание: Разделители и пробелы показаны для облегчения чтения.

ПЕРЕЧЕНЬ ЭЛЕМЕНТОВ СТРОК

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

1. Серийный грузовой контейнерный код (SSCC) (AI 00)

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

Идентификатор Применения 00 указывает, что поле данных содержит грузовой контейнерный код (SSCC).

Вид упаковки груза (0 – 9). Для стран, использующих систему EAN, рекомендуется применять индикатор упаковки равный 3. Индикаторы упаковки используются в некоторых секторах промышленности США. Полный список индикаторов используемых в США, следующий:

0 = короб или ящик,

1= поддон (больше чем ящик),

2 = контейнер (больше чем поддон),

3 = неопределенный тип упаковки,

4 = для внутреннего использования внутри компании,

5 – 9 = зарезервированы для будущего использования.

Формат элемента строки

Серийный грузовой контейнерный код

AI

Вид упаковки

EAN/UCC префикс компании Номер груза

Контр.

цифра

00

N1

N2 N3 N4 N5 N6 N7 N8 N9 N10 N11 N12 N13 N14 N15 N16 N17

N18

00

N1

0 N3 N4 N5 N6 N7 N8 N9 N10 N11 N12 N13 N14 N15 N16 N17

N18

(EAN)

(UCC)

ТАБЛИЦА 1

EAN/UCC, префикс компании, назначается национальной ассоциацией товарной нумерации. Префикс компании может содержать до 9 цифр.

Номер груза – серийный номер, присваиваемый компанией.

Контрольная цифра - вычисляется по определенному алгоритму на основании предыдущих 17 цифр. Алгоритм расчета приведен в Приложении 1. Она применяется для контроля формирования поля данных.

2. Глобальный номер торговой единицы (GTIN) (AI 01). Фиксированный размер.

Под торговой единицей фиксированного размера понимается любой товар, постоянного размера.

Формат элемента строки

AI

EAN/UCC идентификационный номер торговой единицы

Контр.

цифра

0 1

0 0 0 0 0 0 N1 N2 N3 N4 N5 N6 N7

N8

0 1

0 0 N 1 N2 N3 N4 N5 N6 N7 N8 N9 N10 N11

N12

0 1

0 N1 N2 N3 N4 N5 N6 N7 N8 N9 N10 N11 N12

N13

0 1

N1 N2 N3 N4 N5 N6 N7 N8 N9 N10 N11 N12 N13

N14

(EAN/UCC-8)

(UCC-12)

(EAN/UCC-13)

(EAN/UCC-14)

ТАБЛИЦА 2

AI 01 указывает, что поле данных содержит идентификационный номер единицы товара.

Идентификационный номер торговой единицы в системе EAN/UCC может быть в форме EAN/UCC – 8, UCC – 12, EAN/UCC –13, EAN/UCC – 14.

Контрольная цифра - вычисляется по определенному алгоритму на основании предыдущих 13 цифр (если идентификационный номер торговой единицы в системе

EAN/UCC содержит меньше 13 цифр, то добавляются лидирующие нули). Алгоритм расчета приведен в приложении 1. Она применяется для контроля формирования поля данных.

2a. Глобальный номер торговой единицы (GTIN) (AI 01). Переменный размер.

К товарам переменного размера могут быть отнесены товары производственный процесс которых не гарантирует однородности по весу, размеру или длине (головка сыра, мясные туши, рыба).

Формат элемента строки

EAN/UCC идентификационный номер торговой единицы

AI

Индикатор

EAN/UCC префикс компании Номер груза

Контр. Цифра

01

9

0 N3 N4 N5 N6 N7 N8 N9 N10 N11 N12 N13

N14

01

9

N2 N3 N4 N5 N6 N7 N8 N9 N10 N11 N12 N13

N14

(UCC-12)

(EAN/UCC-13)

ТАБЛИЦА 3

AI 01 указывает, что поле данных содержит идентификационный номер единицы товара.

Цифра «9» в поле индикатор, указывает, что этот товар является товаром переменного размера.

EAN/UCC префикс компании назначается национальной ассоциацией товарной нумерации. Префикс компании может содержать до 9 цифр. В случае если товар идентифицируется системой EAN/UCC –8, то префикс компании состоит из пяти лидирующих нулей и префикса национальной организации.

Номер груза – серийный номер, присваиваемый компанией, а в случае если товар идентифицируется системой EAN/UCC –8, то номер груза – серийный номер, присваиваемый национальной организацией.

Контрольная цифра - вычисляется по определенному алгоритму на основании предыдущих 13 цифр (Если идентификационный номер торговой единицы в системе EAN/UCC содержит меньше 13 цифр, то добавляются лидирующие нули). Алгоритм расчета приведен в приложении 1. Она применяется для контроля формирования поля данных.

3. Идентификатор товара, содержащегося в грузе (AI 02). Фиксированный размер.

Этот AI 02 применяется на грузовых этикетках, содержащих AI 00. Необходимое условие применения AI 02 – все составляющие груза должны иметь один и тот же идентификационный номер.

Формат элемента строки

AI

GTIN содержащихся торговых единиц

Контр. цифра

02

N1 N2 N3 N4 N5 N6 N7 N8 N9 N10 N11 N12 N13

N14

ТАБЛИЦА 4

AI 02 указывает, что поле данных содержит идентификационный номер торговых единиц содержащихся в грузе.

Идентификационный номер торговой единицы является идентификационным номером наивысшего уровня торговых единиц, содержащихся в грузе.

Контрольная цифра - вычисляется по определенному алгоритму на основании предыдущих 13 цифр (Если идентификационный номер торговой единицы в системе EAN/UCC содержит меньше 13 цифр, то добавляются лидирующие нули). Алгоритм расчета приведен в приложении 1. Она применяется для контроля формирования поля данных.

На этом же грузе должен присутствовать AI 37, указывающий количество торговых единиц содержащихся в грузе.

3a. Идентификатор товара, содержащегося в грузе (AI 02). Переменный размер.

Этот AI 02 применяется на грузовых этикетках содержащих AI 00. Необходимое условие применения AI 02 – все составляющие груза должны иметь один и тот же идентификационный номер товара переменного размера.

Формат элемента строки

AI

GTIN содержащихся торговых единиц

Контр. цифра

02

9 N2 N3 N4 N5 N6 N7 N8 N9 N10 N11 N12 N13

N14

ТАБЛИЦА 5

AI 02 указывает, что поле данных содержит идентификационный номер торговых единиц содержащихся в грузе.

Идентификационный номер торговой единицы является идентификационным номером наивысшего уровня торговой единицы, содержащейся в грузе.

Контрольная цифра - вычисляется по определенному алгоритму на основании предыдущих 13 цифр (Если идентификационный номер торговой единицы в системе EAN/UCC содержит меньше 13 цифр, то добавляются лидирующие нули). Алгоритм расчета приведен в приложении 1. Она применяется для контроля формирования поля данных.

На этом же грузе должен присутствовать AI 37, указывающий количество торговых единиц содержащихся в грузе.

4. Номер лота (партии, группы, пакета) (AI 10)

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

Формат элемента строки

AI

Номер лота (партии, группы, пакета)

1 0

Х1 переменная длина Х20

ТАБЛИЦА 6

AI 10 указывает, что поле данных содержит номер лота (партии, группы, пакета).

Номер лота (партии, группы, пакета) может быть переменной длины и содержать как цифры, так и буквы, содержащиеся в таблице 1 международного стандарта ISO/IEC 646, приведенной в приложении 3.

Так как он является атрибутом конкретной торговой единицы, он не должен обрабатываться самостоятельно, а только совместно с идентификационным номером торговой единицы, к которой он относится.

Замечание: Номер лота не является обязательным атрибутом торговой единицы.

5. Дата изготовления (AI 11)

Формат элемента строки

AI

Дата выработки

Год

Месяц

День

1 1

N1 N2

N3 N4

N5 N6

ТАБЛИЦА 7

AI 11 указывает, что поле данных содержит дату изготовления торговой единицы.

Дата изготовления является датой изготовления или сборки торговой единицы определяемым производителем. Эти данные могут относиться как к самой торговой единице, так и к торговым единицам, содержащимся в грузе.

Структура:

Год – последние две цифры года (например, 1997=97). Обязательно указывается.

Месяц- это номер месяца (например, январь=01). Обязательно указывается.

День- номер дня соответствующего месяца (например, второй день = 02). Указывать необязательно, но в этом случае это поле заполняется двумя нулями.

Так как дата изготовления товара является атрибутом конкретной торговой единицы, то она не должна обрабатываться самостоятельно, а только совместно с идентификационным номером торговой единицы, к которой она относится.

Замечание: Если год изготовления больше 50, то товар изготовлен в 20 веке, а если меньше, то товар изготовлен в 21 веке.

6. Предельный срок платежа (AI 12).

Формат элемента строки

AI

Дата платежа

Год

Месяц

День

1 2

N1 N2

N3 N4

N5 N6

ТАБЛИЦА 8

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

AI 12 указывает, что поле данных содержит дату, к которой счет должен быть оплачен.

Структура:

Год – последние две цифры года (например, 1997=97). Обязательно указывается.

Месяц- это номер месяца (например, январь=01). Обязательно указывается.

День- номер дня соответствующего месяца (например, второй день = 02). Указывать необязательно, но в этом случае это поле заполняется двумя нулями.

Данные, полученные в результате считывания сканером штрихового кода вышеописанной строки, означают предельный срок платежа. Так как они являются атрибутом номера платежного поручения и EAN/UCC адресного кода, то они не должны обрабатываться самостоятельно, а только совместно с EAN/UCC адресного кода.

Замечание: Если год изготовления больше 50, то товар изготовлен в 20 веке, а если меньше, то товар изготовлен в 21 веке.

7. Дата упаковки (AI 13).

Дата упаковки торговой единицы.

Формат элемента строки

AI

Дата упаковки

Год

Месяц

День

1 3

N1 N2

N3 N4

N5 N6

ТАБЛИЦА 9

AI 13 указывает, что поле данных содержит дату упаковки торговой единицы.

Дата упаковки указывается стороной формующей и оформляющей груз. Эти данные могут относиться как к самой торговой единице, так и к торговым единицам содержащимся в грузе.

Структура:

Год – последние две цифры года (например, 1997=97). Обязательно указывается.

Месяц- это номер месяца (например, январь=01). Обязательно указывается.

День- номер дня соответствующего месяца (например, второй день = 02). Указывать необязательно, но в этом случае это поле заполняется двумя нулями.

Так как дата упаковки является атрибутом конкретной торговой единицы, то она не должна обрабатываться самостоятельно, а только совместно с идентификационным номером торговой единицы, к которой она относится.

Замечание: Если год изготовления больше 50, то товар изготовлен в 20 веке, а если меньше, то товар изготовлен в 21 веке.

8. Дата окончания сохранности качества (минимальный срок годности) (AI 15).

Дата окончания сохранности качества торговой единицы.

Формат элемента строки

AI

Минимальный срок годности

Год

Месяц

День

1 5

N1 N2

N3 N4

N5 N6

ТАБЛИЦА 10

AI 15 указывает, что поле данных содержит дату окончания сохранности качества торговой единицы.

Дата сохранности качества торговой единицы указывает на дату идеального потребления или наилучшего использования данного продукта. Этот показатель говорит о качестве. Часто он изображается в виде «Продается до: » или «Годен до: ».

Структура:

Год – последние две цифры года (например, 1997=97). Обязательно указывается.

Месяц- это номер месяца (например, январь=01). Обязательно указывается.

День- номер дня соответствующего месяца (например, второй день = 02). Указывать необязательно, но в этом случае это поле заполняется двумя нулями.

Так как дата сохранности является атрибутом конкретной торговой единицы, то она не должна обрабатываться самостоятельно, а только совместно с идентификационным номером торговой единицы, к которой она относится.

Замечание: Если год изготовления больше 50, то товар изготовлен в 20 веке, а если меньше, то товар изготовлен в 21 веке.

9. Дата окончания безопасного использования (максимальный срок годности) (AI 17).

Дата окончания безопасного использования торговой единицы.

Формат элемента строки

AI

Максимальный срок годности

Год

Месяц

День

1 7

N1 N2

N3 N4

N5 N6

ТАБЛИЦА 11

AI 17 указывает, что поле данных содержит предельную дату потребления или использования данного продукта.

Этот показатель говорит о безопасности. Часто он изображается в виде «Использовать до: » или «Окончательная дата : ».

Структура:

Год – последние две цифры года (например, 1997=97). Обязательно указывается.

Месяц- это номер месяца (например, январь=01). Обязательно указывается.

День- номер дня соответствующего месяца (например, второй день = 02). Указывать необязательно, но в этом случае это поле заполняется двумя нулями.

Так как эти данные являются атрибутом конкретной торговой единицы, то они не должны обрабатываться самостоятельно, а только совместно с идентификационным номером торговой единицы, к которой они относится.

Замечание: Если год изготовления больше 50, то товар изготовлен в 20 веке, а если меньше, то товар изготовлен в 21 веке.

10. Разновидность продукта (AI 20)

Разновидность продукта торговой единицы для использования внутри компании.

Этот идентификатор используется для того, чтобы отличить некоторый вариант товара от стандартной торговой единицы. Он используется, когда эта разница не существенна, чтобы требовать отдельный идентификационный номер.

Эта строка предназначена только для использования производителем, и не должна использоваться никаким другим торговым партнером, для которого EAN/UCC является единственным стандартом, применимым в цепи движения товара.

Формат элемента строки

AI

Разновидность номера

2 0

N1 N2

ТАБЛИЦА 12

AI 20 указывает, что поле данных содержит номер разновидности продукта.

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

Этот вариант продукта должен всегда декодироваться и обрабатываться вместе с идентификационным номером. Вне сферы производства данная информация игнорируется.

11. Серийный номер (AI 21)

Серийный номер торговой единицы товара.

Формат элемента строки

AI

Серийный номер

2 1

Х1 переменная длина Х20

ТАБЛИЦА 13

AI 21 указывает, что поле данных содержит серийный номер.

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

Поле серийного номера является переменной длины и содержит как цифры, так и буквы содержащиеся в таблице 1 международного стандарта ISO/IEC 646, приведенного в приложении 3. Серийный номер определяет производитель.

Так как эти данные являются атрибутом конкретной торговой единицы, то они не должны обрабатываться самостоятельно, а только совместно с идентификационным номером торговой единицы, к которой они относится.

12. Вспомогательные данные специальных фармацевтических продуктов (AI 22)

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

Эта строка применяется для согласования с существующим, не EAN/UCC, стандартом, используемым для некоторых фармацевтических продуктов. Он не рекомендуется для новых приложений или других отраслей. Взамен рекомендуется использовать элементы строк «максимальный срок годности» и «номер лота».

Формат элемента строки

AI

Поля вспомогательных данных

2 2

Х1 переменная длина Х29

ТАБЛИЦА 14

AI 22 указывает, что поле данных содержит вспомогательные данные специальных фармацевтических продуктов. За подробной расшифровкой описания строки обращайтесь в EAN Moldova.

13. Номер лота (переходный) (AI 23n)

Номер лота торговой единицы.

Эта идентификатор используется в некоторых приложениях когда необходимо сцепить несколько строк переменной длины в один символ штрихового кода и когда FNC1 как разделитель не применим. В настоящее время он используется американской мясной индустрией вместо AI 10 (номер лота). Он рассматривается как временный системный элемент, который будет исключен в будущем.

Формат элемента строки

AI

Номер лота

2 3 n

N1 переменная длина N19

ТАБЛИЦА 15

AI 23n указывает, что поле данных содержит номер лота. Цифра «n» указывает длину поля согласно следующей формуле: количество цифр номера лота =2n + 1

Пример: представление номера лота 1 2 3 4 5 6 = (233) 1 2 3 4 5 6 7

Формула используется для определения длины строки в соединении с другими строками. Поле номера лота имеет переменную длину и всегда содержит нечетное

число цифр. Если первоначальный номер лота имеет четное число цифр, то добавляется лидирующий ноль.

Так как эти данные являются атрибутом конкретной торговой единицы, то они не должны обрабатываться самостоятельно, а только совместно с идентификационным номером торговой единицы, к которой они относится.

14. Дополнительная идентификация продукта, присваиваемая производителем (AI 240)

Дополнительный идентификационный номер торговой единицы, присваиваемая производителем.

Цель этого идентификатора - дать возможность идентификации товара номером, отличным от EAN/UCC идентификационного номера товара, для представления его в виде штрихового кода в системе EAN/UCC-128. Это ссылка на номера товаров ранее используемых каталогов. Дополнительная идентификация товара рассматривается как атрибут идентификационного номера EAN/UCC товара, например чтобы облегчить переход к EAN/UCC системе. Однако он не может быть использован вместо EAN/UCC идентификационного номера товара.

Формат элемента строки

AI

Дополнительная идентификация товара

2 4 0

Х1 переменная длина Х30

ТАБЛИЦА 16

AI 240 указывает, что поле данных содержит дополнительную идентификацию товара.

Поле дополнительного идентификационного номера является переменной длины и алфавитно-цифровые символы, находящиеся в таблице 1 международного стандарта ISO/IEC 646, приведенного в приложении 3. Его содержание и структура оставлена на усмотрение компании применяющей эту строку.

15. Номер покупателя (AI 241)

Дополнительный идентификационный номер торговой единицы, присваиваемый производителем по заказу покупателя.

Цель этого идентификатора - дать возможность идентификации товара номером, отличным от EAN/UCC идентификационного номера товара, для представления его в виде штрихового кода в системе EAN/UCC-128. Он используется только между торговыми партнерами, которые в настоящее время используют его для заказа. Использование этого номера является временным, т.е. в дальнейшем он будет заменен идентификационным номером товара в системе EAN/UCC. Номер покупателя не может использоваться для замены EAN/UCC идентификационного номера товара.

Формат элемента строки

AI

Номер от покупателя

2 4 1

Х1 переменная длина Х30

ТАБЛИЦА 17

AI 241 указывает, что поле данных содержит номер покупателя.

Поле «номер покупателя» является строкой переменной длины, которая может включать любые символы, содержащиеся в таблице 1 международного стандарта ISO/IEC 646, приведенного в приложении 3.

16. Дополнительный серийный номер (AI 250)

Дополнительный серийный номер отдельной компоненты торговой единицы.

В то время как серийный номер, используемый идентификатором применения AI 21, содержит серийный номер торговой единицы, строка «Дополнительный серийный номер» представляет серийный номер отдельной компоненты товара. Он оставлен

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

· AI 01 – представляющей идентификационный номер торговой единицы,

· AI 21 – представляющей серийный номер торговой единицы,

· AI 250 – представляющей серийный номер компоненты торговой единицы.

Следует заметить, что только одна строка с AI 250 может быть связана с конкретным идентификационным номером товара.

Формат элемента строки

AI

Дополнительный серийный номер

2 5 0

Х1 переменная длина Х30

ТАБЛИЦА 18

AI 250 указывает, что поле данных содержит дополнительный серийный номер.

Поле «дополнительный серийный номер» является строкой переменной длины, которая может включать любые символы, содержащиеся в таблице 1 международного стандарта ISO/IEC 646, приведенного в приложении 3. Этот номер, и к какой он компоненте относится, определяется производителем.

17. Количество единиц (AI 30)

Количество единиц товара в торговом блоке переменного размера

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

Формат элемента строки

AI

Количество единиц товара

3 0

N1 переменная длина N8

ТАБЛИЦА 19

AI30 указывает, что поле данных содержит количество единиц товара, содержащихся в торговом блоке переменного размера.

Поле «Количество единиц» является строкой переменной длины содержащей до 8 цифр. Этот номер, и к какой он компоненте относится, определяется производителем.

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

18. Единицы измерения (AI 31nn, 32nn, 35nn, 36nn)

Единицы измерения торговых единиц переменного размера

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

Формат элемента строки

AI

Идентификатор объема

A1 A2 A3 A4

N1 N2 N3 N4 N5 N6

ТАБЛИЦА 20

Цифры А1,А2,А3 идентификатора применения (см. таблицу 21) указывают, что поле данных содержит количество или размер торгового блока переменного размера.

Цифра А4 указывает позицию десятичной точки, если эта цифра равна 0, то это означает, что нет десятичной точки, если цифра равна 1, то десятичная точка стоит между цифрами N5 и N6, и т.д.

Идентификаторы применения определяют поля данных в соответствии со следующей таблицей (21):

А1 А2 А3

Определение единицы измерения

Единица измерения

3 1 0

Чистый вес

Килограммы

3 1 1

Длина (первое измерение)

Метры

3 1 2

Ширина, диаметр (второе измерение)

Метры

3 1 3

Глубина, толщина, высота (3-е измерение)

Метры

3 1 4

Площадь

Кв. метры

3 1 5

Чистый объем

Литры

3 1 6

Чистый объем

Куб. метры

3 2 0

Чистый вес

Фунты

3 2 1

Длина (первое измерение)

Дюймы

3 2 2

Длина (первое измерение)

Футы

3 2 3

Длина (первое измерение)

Ярды

3 2 4

Ширина, диаметр (второе измерение)

Дюймы

3 2 5

Ширина, диаметр (второе измерение)

Футы

3 2 6

Ширина, диаметр (второе измерение)

Ярды

3 2 7

Глубина, толщина, высота (3-е измерение)

Дюймы

3 2 8

Глубина, толщина, высота (3-е измерение)

Футы

3 2 9

Глубина, толщина, высота (3-е измерение)

Ярды

3 5 0

Площадь

Кв. дюймы

3 5 1

Площадь

Кв. футы

3 5 2

Площадь

Кв. ярды

3 5 6

Чистый вес

Тройские унции

3 5 7

Чистый вес

Унции

3 6 0

Чистый объем

Кварты

3 6 1

Чистый объем

Галлоны (США)

3 6 4

Чистый объем

Куб. дюймы

3 6 5

Чистый объем

Куб. футы

3 6 6

Чистый объем

Куб. ярды

ТАБЛИЦА 21

Поле «применяемое значение» содержит значение переменного размера, применяемого к соответствующей торговой единице.

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

обработаны только с идентификационным номером торговой единицы к которой они относятся.

Примечание: Остальные значения AI 3nnn определяют размеры всего груза или логистических величин.

18a. Логистические измерения (AI 33nn, 34nn, 35nn, 36nn)

Единицы измерения логистических величин (груза).

Система EAN/UCC предоставляет стандарты для веса и размеров всего груза в метрической и других системах измерения. В принципе каждое измерение логистической величины должно быть приведено только в одной системе измерения. Однако, измерение одного и того же атрибута груза в различных единицах не препятствует правильной обработке переданных данных.

Формат элемента строки

AI

Идентификатор объема

A1 A2 A3 A4

N1 N2 N3 N4 N5 N6

ТАБЛИЦА 22

Цифры А1,А2,А3 идентификатора применения (см. таблицу 23) указывают, что поле данных содержит количество или размер логистической единицы (груза).

Цифра А4 указывает позицию десятичной точки, если эта цифра равна 0, то это означает, что нет десятичной точки, если цифра равна 1, то десятичная точка стоит между цифрами N5 и N6, и т.д.

Идентификаторы применения определяют поля данных в соответствии со следующей таблицей (23):

А1 А2 А3

Определение единицы измерения

Единица измерения

3 3 0

Логистический вес

Килограммы

3 3 1

Длина (первое измерение)

Метры

3 3 2

Ширина, диаметр (второе измерение)

Метры

3 3 3

Глубина, толщина, высота (3-е измерение)

Метры

3 3 4

Площадь

Кв. метры

3 3 5

Логистический объем

Литры

3 3 6

Логистический объем

Куб. метры

3 4 0

Логистический вес

Фунты

3 4 1

Длина (первое измерение)

Дюймы

3 4 2

Длина (первое измерение)

Футы

3 4 3

Длина (первое измерение)

Ярды

3 4 4

Ширина, диаметр (второе измерение)

Дюймы

3 4 5

Ширина, диаметр (второе измерение)

Футы

3 4 6

Ширина, диаметр (второе измерение)

Ярды

3 4 7

Глубина, толщина, высота (3-е измерение)

Дюймы

3 4 8

Глубина, толщина, высота (3-е измерение)

Футы

3 4 9

Глубина, толщина, высота (3-е измерение)

Ярды

3 5 3

Площадь

Кв. дюймы

3 5 4

Площадь

Кв. футы

3 5 5

Площадь

Кв. ярды

3 6 2

Логистический объем

Кварты

3 6 3

Логистический объем

Галлоны (США)

3 6 7

Логистический объем

Куб. дюймы

3 6 8

Логистический объем

Куб. футы

3 6 9

Логистический объем

Куб. ярды

ТАБЛИЦА 23

Поле «применяемое значение» содержит значение переменного размера, применяемого к соответствующей торговой единице.

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

19. Килограммы на квадратный метр (AI 337n)

Давление в килограммах на один квадратный метр, производимое торговой единицей.

Эта строка используется, чтобы точно указать давление отдельной торговой единицей.

Формат элемента строки

AI

Килограммы на квадратный метр

3 3 7 n

N1 N2 N3 N4 N5 N6

ТАБЛИЦА 24

AI337 указывает, что поле данных определяет давление, производимое одной торговой единицей.

Цифра n указывает позицию десятичной точки, если эта цифра равна 0, то это означает, что нет десятичной точки, если цифра равна 1, то десятичная точка стоит между цифрами N5 и N6, и т.д.

Поле «Килограмм на квадратный метр» является строкой фиксированной длины содержащей 6 цифр. Единица измерения - килограммы.

Поскольку эти данные представляют атрибут торговой единицы, то они не могут обрабатываться отдельно, а только с идентификационным номером торговой единицы к которой они относятся.

20. Количество торговых единиц в грузе (AI 37)

Определение: Количество торговых единиц в логистическом блоке.

Пояснение: Эта строка является обязательным дополнением к AI 02.

Формат элемента строки

AI

Количество торговых единиц

3 7

N1 переменная длина N8

ТАБЛИЦА 25

AI37 указывает, что поле данных содержит количество торговых единиц, содержащихся в грузе.

Поле «Количество торговых единиц в грузе» является строкой переменной длины содержащей до 8 цифр. Этот номер относится к идентификатору торговых единиц содержащихся в грузе.

Данные могут быть обработаны только вместе с идентификационным номером торговой единицы, находящимся в поле данных AI 02, к которой они относятся.

21. Сумма, подлежащая к оплате – Одна валютная зона (AI 390n)

Сумма, подлежащая к оплате платежного требования, выраженная в местной валюте.

Чтобы избежать ошибок в обработке данного идентификатора применения рекомендуется использовать AI 391n, который указывает код валюты в которой эта сумма выражена.

Формат элемента строки

AI

Заявленная сумма к оплате

3 9 0 n

N1 переменная длина N8

ТАБЛИЦА 26

AI 390 указывает, что поле данных содержит сумму, подлежащую к оплате.

Цифра n указывает позицию десятичной точки, если эта цифра равна 0, то это означает, что нет десятичной точки, если цифра равна 1, то десятичная точка стоит последней цифрой, и т.д. Смотри примеры в таблице 3-44.

Поле «Сумма, подлежащая к оплате» содержит сумму необходимую выплатить согласно платежному требованию. Оно содержит до 15 цифр.

Так как эти данные являются атрибутами Номера платежного поручения и Глобального Адресного номера, то они не могут обрабатываться самостоятельно.

Пример индикации десятичной точки:

AI

Кодированное значение

Действительная величина

3902

1234567

12345.67

3901

1234567

123456.70

3900

12345

12345.00

ТАБЛИЦА 27

22. Сумма, подлежащая к оплате – с ISO кодом валюты (AI 391n)

Сумма, подлежащая к оплате платежного требования, выраженная в указанной кодом валюте.

Используются коды валют, указанные в стандарте ISO 4217.

Формат элемента строки

AI

ISO коды валют

Количество единиц товара

3 9 1 n

N1 N2 N3

N4 переменная длина N18

ТАБЛИЦА 28

Цифры AI 391 указывает, что поле данных содержит код валюты и сумму, подлежащую к оплате.

Цифра n указывает позицию десятичной точки в поле « сумма, подлежащая к оплате», и если она равна 0, то это означает, что нет десятичной точки, если цифра равна 1, то десятичная точка стоит последней цифрой, и т.д. Смотри примеры в таблице 3-46.

Поле ISO код страны содержит 3-хзначный номер валюты, выбираемый из международного стандарта ISO 4217 (данные доступны в Интернете), указывающий валюту, в которой сумма, подлежащая к оплате, выражена.

Поле «Сумма, подлежащая к оплате» содержит сумму необходимую выплатить согласно платежному требованию. Оно содержит до 15 цифр.

Так как эти данные являются атрибутами Номера платежного поручения и Глобального Адресного номера, то они не могут обрабатываться самостоятельно.

Пример индикации десятичной точки:

Идентификатор применения

Код валюты стандарта ISO

Кодированное значение

Действительная величина

3912

710 1)

1230

12.30

3911

710 1)

1230

123.00

3910

040 2)

123

123.00

ТАБЛИЦА 29

1) Южноафриканские ранды

2) Австрийские шиллинги

23. Сумма, подлежащая уплате за торговую единицу переменного веса. Одна валютная зона (AI 392n)

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

Формат элемента строки

AI

Заявленная сумма к оплате

3 9 2 n

N1 переменная длина N15

ТАБЛИЦА 30

Цифры идентификатора применения 392 указывают на то, что поле данных содержит значение суммы, подлежащей уплате за товар переменного веса.

Цифра n указывает позицию десятичной точки. Когда цифра равна 0, это означает, что в поле данных нет десятичной точки, цифра 1 означает, что десятичная точка находится перед последней позицией указанной суммы.

Поле “заявленная сумма к оплате” содержит сумму, которую необходимо выплатить за товар переменного веса.

Замечание: В будущем этот элемент строки может изображаться в символиках RSS или (и) Composite/

Поскольку это число является атрибутом идентификационного номера товара, то оно обрабатывается только вместе с этим номером.

Пример индикации десятичной точки:

Идентификатор применения

Кодированное значение

Действительная величина

3922

1234567

12345.67

3921

1234567

123456.70

3920

12345

12345.00

ТАБЛИЦА 31

24. Сумма, подлежащая уплате за торговую единицу переменного веса. Вместе с кодом ISO валютной зоны (AI 393n)

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

Формат элемента строки

AI

ISO коды валют

Сумма заявленная к оплате

3 9 3 n

N1 N2 N3

N4 переменная длина N18

ТАБЛИЦА 32

Цифры идентификатора применения 393 указывают на то, что поле данных содержит ISO код валюты и значение суммы, подлежащей уплате за товар переменного веса.

Цифра n указывает позицию десятичной точки. Когда цифра равна 0, это означает, что в поле данных нет десятичной точки, цифра 1 означает, что десятичная точка находится перед последней позицией указанной суммы.

Поле «ISO код валюты» содержит трехзначное число – код валюты из международного стандарта ISO/IEC 4217 (данные доступны в Интернете).

Поле “сумма заявленная к оплате” содержит сумму, которую необходимо выплатить за товар переменного веса.

Замечание: В будущем этот элемент строки может изображаться в символиках RSS или (и) Composite/

Поскольку это число является атрибутом идентификационного номера товара, то оно обрабатывается только вместе с этим номером.

Пример индикации десятичной точки:

Идентификатор применения

Код валюты стандарта ISO

Кодированное значение

Действительная величина

3932

710 1)

1230

12.30

3931

710 1)

1230

123.00

3930

040 2)

123

123.00

ТАБЛИЦА 33

1) Южноафриканские ранды

2) Австрийские шиллинги

25. Номер заявки покупателя на покупку (AI 400)

Номер заявки покупателя на покупку используется только между двумя торговыми партнерами

Формат элемента строки

AI

Номер заявки покупателя на покупку

4 0 0

X1 переменная длина X30

ТАБЛИЦА 34

AI 400 указывает, что поле данных содержит номер заявки покупателя на покупку.

Поле «Номер заявки покупателя на покупку» является строкой переменной длины, которая может включать любые символы, содержащиеся в таблице 1 международного стандарта ISO/IEC 646, приведенного в приложении 3. Поле содержит номер заявки на покупку указанный компанией-покупателем. Состав номера и его содержимое оставлено на усмотрение покупателя.

Данные могут обрабатываться самостоятельно или вместе с идентификационными данными той же торговой единицы.

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

26. Номер накладной (коносамента) (AI 401)

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

ФОРМАТ ЭЛЕМЕНТА СТРОКИ

AI

Номер накладной

EAN/UCC префикс комапании Информация накладной

4 0 1

N1 … Ni Xi+1… переменная длина Xj (j<=30)

ТАБЛИЦА 35

AI 401 указывает, что поле данных содержит номер накладной (коносамента).

Поле «Номер накладной» содержит EAN/UCC префикс компании перевозчика и информацию о накладной. Структура этой информации, следующей за префиксом компании, оставлена на усмотрение пользователя этими данными. Поле является строкой переменной длины, которая может включать любые символы, содержащиеся в таблице 1 международного стандарта ISO/IEC 646, приведенного в приложении 3.

Данные могут обрабатываться самостоятельно или вместе с идентификационными данными той же торговой единицы.

Замечание: Если новый коносамент создается, то строка, содержащая предыдущий номер накладной, должна быть удалена с торговой единицы.

27. Идентификационный номер груза (AI 402)

ФОРМАТ ЭЛЕМЕНТА СТРОКИ

AI

Идентификационный номер груза

EAN/UCC префикс комапании Ссылка поставщика

Контр. число

4 0 2

N1 N2 N3 N4 N5 N6 N7 N8 N9 N10 N11 N12 N13 N14 N15 N16

N17

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

ТАБЛИЦА 36

AI 402 указывает, что поле данных содержит идентификационный номер груза.

Поле «Номер накладной» содержит EAN/UCC префикс компании отправителя и ссылку на отправителя, указываемую отправителем груза. Поле является строкой содержащей 16 цифр.

Контрольная цифра вычисляется по алгоритму, приведенному в Приложении 1. Ее проверка, осуществляемая программно, обеспечивает правильность составления поля.

Данные могут обрабатываться самостоятельно или вместе с идентификационными данными на той же торговой единице.

Замечание: Рекомендуется присваивать номера последовательно.

28. Код маршрута (AI 403)

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

Формат элемента строки

AI

Код маршрута

4 0 3

X1 переменная длина X30

ТАБЛИЦА 37

AI 403 указывает, что поле данных содержит код маршрута.

Поле «Код маршрута» является строкой переменной длины, которая может включать любые символы, содержащиеся в таблице 1 международного стандарта ISO/IEC 646, приведенного в приложении 3. Ее содержимое и структуру определяет перевозчик, составивший этот код. Если группа отдельных перевозчиков желают заключить соглашение об использовании единого кода маршрута, то согласованный индикатор должен определять структуру кода маршрута.

Данные должны обрабатываться вместе с серийным грузовым контейнерным кодом, нанесенным на тот же груз.

29. «Доставить-вручить» EAN/UCC Глобальный адресный номер

(AI 410)

EAN/UCC Глобальный адресный номер получателя груза.

Поле данных представляет собой стандартный EAN/UCC-13 номер.

Формат элемента строки

AI

EAN/UCC префикс комапании Адресная ссылка

Контр. число

4 1 0

N1 N2 N3 N4 N5 N6 N7 N8 N9 N10 N11 N12

N13

ТАБЛИЦА 38

AI 410 указывает, что поле данных содержит EAN/UCC Глобальный адресный номер грузополучателя.

EAN/UCC префикс компании является частью идентификационного номера адреса компании, для того, чтобы сделать его уникальным.

Ссылка на размещение определяется компанией-адресатом.

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

Данные должны обрабатываться отдельно или вместе с другой соответствующей информацией.

30. «Счет-фактура» EAN/UCC Глобальный адресный номер (AI 411)

EAN/UCC Глобальный адресный номер адресата платежного требования.

Поле данных представляет собой стандартный EAN/UCC-13 номер.

Формат элемента строки

AI

EAN/UCC префикс комапании Адресная ссылка

Контр. число

4 1 1

N1 N2 N3 N4 N5 N6 N7 N8 N9 N10 N11 N12

N13

ТАБЛИЦА 39

AI 411 указывает, что поле данных содержит EAN/UCC Глобальный адресный номер адресата платежного поручения.

EAN/UCC префикс компании является частью идентификационного номера адреса адресата для того, чтобы сделать его уникальным.

Ссылка на размещение определяется компанией-адресатом.

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

31. «Закуплено у» EAN/UCC Глобальный адресный номер (AI 412)

EAN/UCC Глобальный адресный номер поставщика груза.

Поле данных представляет собой стандартный EAN/UCC-13 номер.

Формат элемента строки

AI

EAN/UCC префикс комапании Адресная ссылка

Контр. число

4 1 2

N1 N2 N3 N4 N5 N6 N7 N8 N9 N10 N11 N12

N13

ТАБЛИЦА 40

AI 412 указывает, что поле данных содержит EAN/UCC Глобальный адресный номер поставщика товара.

EAN/UCC префикс компании является частью идентификационного номера адреса компании для того, чтобы сделать его уникальным.

Ссылка на размещение определяется компанией-поставщиком.

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

Данные должны обрабатываться отдельно или вместе с другой соответствующей информацией.

32. «Груз для, Поставка для, Переслать » EAN/UCC Глобальный адресный номер (AI 413)

EAN/UCC Глобальный адресный номер компании, являющейся промежуточным или конечным пунктом доставки груза.

Поле данных представляет собой стандартный EAN/UCC-13 номер.

Формат элемента строки

AI

EAN/UCC префикс комапании Адресная ссылка

Контр. число

4 1 3

N1 N2 N3 N4 N5 N6 N7 N8 N9 N10 N11 N12

N13

ТАБЛИЦА 41

AI 413 указывает, что поле данных содержит EAN/UCC Глобальный адресный номер промежуточного или конечного пункта поставки товара.

EAN/UCC префикс компании является частью идентификационного номера адреса компании для того, чтобы сделать его уникальным.

Ссылка на размещение определяется компанией-поставщиком.

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

Данные могут обрабатываться отдельно или вместе с другой соответствующей информацией.

Замечание: Эта строка используется грузополучателем для внутренних нужд и не используется перевозчиком.

33. Идентификация места размещения, EAN/UCC Глобальный адресный номер (AI 414)

EAN/UCC Глобальный адресный номер применяется для идентификации места размещения (адреса) компании.

Поле данных представляет собой стандартный EAN/UCC-13 номер.

Формат элемента строки

AI

EAN/UCC префикс комапании Адресная ссылка

Контр. число

4 1 4

N1 N2 N3 N4 N5 N6 N7 N8 N9 N10 N11 N12

N13

ТАБЛИЦА 42

AI 414 указывает, что поле данных содержит EAN/UCC Глобальный адресный номер места размещения.

EAN/UCC префикс компании является частью идентификационного номера адреса компании для того, чтобы сделать его уникальным.

Ссылка на размещение определяется собственником или пользователем указанного адреса.

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

Данные могут обрабатываться согласно конкретным требованиям приложения.

34. EAN/UCC Глобальный адресный номер стороны, выставившей счет (AI 415)

EAN/UCC Глобальный адресный номер стороны, выставившей счет, используется на платежных требованиях.

Поле данных представляет собой стандартный EAN/UCC-13 номер. Он является необходимой информацией на платежном требовании. Вместе с номером платежного поручения они уникально идентифицируют платежное поручение.

Формат элемента строки

AI

EAN/UCC префикс комапании Адресная ссылка

Контр. число

4 1 5

N1 N2 N3 N4 N5 N6 N7 N8 N9 N10 N11 N12

N13

ТАБЛИЦА 43

AI 415 указывает, что поле данных содержит EAN/UCC Глобальный адресный номер стороны, выставившей счет.

EAN/UCC префикс компании является частью идентификационного номера адреса компании для того, чтобы сделать его уникальным.

Ссылка на адрес определяется стороной, выставившей счет.

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

Данные должны обрабатываться вместе с номером платежного поручения.

35. «Доставить-вручить» Почтовый код в пределах одной страны (AI 420)

Формат элемента строки

AI

Почтовый код

4 2 0

X1 переменная длина X20

ТАБЛИЦА 44

AI 420 указывает, что поле данных содержит почтовый код адресата в национальном формате.

Поле «Почтовый код» содержит почтовый код адресата, определенный почтовым ведомством страны. Он выровнен по левому краю и не должен содержать каких-либо дополнительных символов.

Обычно почтовый код обрабатывается отдельно.

36. «Доставить-вручить» Почтовый код с 3-х значным почтовым кодом страны по ISO (AI 421)

Почтовый код страны (ISO стандарт 3166) и национальный почтовый код адресата.

Формат элемента строки

AI

ISO коды валют

Почтовый код

4 2 1

N1 N2 N3

X4 переменная длина X12

ТАБЛИЦА 45

AI 421 указывает, что поле данных содержит почтовый код адресата в международном формате.

Поле «Почтовый код страны» содержит 3 цифровой код страны, определенный стандартом ISO 3166 ) (Данные доступны в Интернете).

Поле «Почтовый код» содержит почтовый код адресата, определенный почтовым ведомством страны. Он выровнен по левому краю и не должен содержать каких-либо дополнительных символов.

Обычно международный почтовый код обрабатывается отдельно.

37. Страна происхождения торговой единицы (AI 422)

Почтовый код страны, определенный стандартом ISO 3166

Формат элемента строки

AI

ISO код страны

4 2 2

N1 N2 N3

ТАБЛИЦА 46

AI 422 указывает, что поле данных содержит почтовый код страны происхождения товарной единицы.

Поле «Почтовый код страны» содержит 3-х значный код страны происхождения товара, определенный стандартом ISO 3166 ) (Данные доступны в Интернете).

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

38. Страна начальной обработки (AI 423)

Формат элемента строки

AI

ISO код страны

4 2 3

N1 N2 N3 … N 15

ТАБЛИЦА 47

Идентификатор применения 423 указывает, что поле данных содержит коды ISO стран, в которых производилась начальная обработка торговой единицы.

Поле «ISO код страны» содержит трехзначное число – код страны из международного стандарта ISO 3166 (данные доступны в Интернете).

Замечание: Обычно страна начальной обработки является страной, произведшей этот товар. Однако, для некоторых товаров необходимо указывать до пяти различных стран начального производства товара (например, страны в которых производился откорм скота). Ответственность за заполнение этого поля лежит на поставщике товара.

39. Страна переработки (AI 424)

Формат элемента строки

AI

ISO код страны

4 2 4

N1 N2 N3

ТАБЛИЦА 48

Идентификатор применения 424 указывает, что поле данных содержит код ISO страны, в которой производилась обработка торговой единицы.

Поле «ISO код страны» содержит трехзначное число – код страны из международного стандарта ISO 3166 (данные доступны в Интернете).

Замечание: Ответственность за заполнение этого поля лежит на поставщике товара.

40. Страна распаковки (AI 425)

Формат элемента строки

AI

ISO код страны

4 2 5

N1 N2 N3

ТАБЛИЦА 49

Идентификатор применения 425 указывает, что поле данных содержит код ISO страны, в которой производилась распаковка торговой единицы.

Поле «ISO код страны» содержит трехзначное число – код страны из международного стандарта ISO 3166 (данные доступны в Интернете).

Замечание: Ответственность за заполнение этого поля лежит на стороне, производящей распаковку товара.

41. Инвентарный номер NATO (AI 7001)

Идентификация, классификация и нумерация товаров, поставляемых через альянс NATO.

Формат элемента строки

AI

NATO классификация Код страны Серийный номер

снабжения

7 0 0 1

N1 N2 N3 N4 N5 N6 N7 N8 N9 N10 N11 N12 N13

ТАБЛИЦА 50

Идентификатор применения 7001 указывает, что поле данных содержит инвентарный номер имущества NATO.

Инвентарный номер присваивается любому товару, поставляемому через альянс NATO. Ответственность за назначением номера товару лежит на производителе товара или создателе дизайна.

Замечание: Этот идентификатор используется только в рамках снабжения товарами альянса. Использование номеров определяется правилами и предписаниями Комитета Альянса 135.

42. UN/ECE классификация мясных туш и их разделки (AI 7002)

Формат элемента строки

AI

UC/ECE классификация продуктов

7 0 0 2

X1 переменная длина X30

ТАБЛИЦА 51

Идентификатор применения 7002 указывает, что поле данных содержит классификацию, используемую международной организацией ECE.

UN/ECE код классификации мясных туш и их разделки представляет собой строку переменной длины, содержащей буквенно-цифровые символы. Он является атрибутом глобального идентификационного номера товара, указанного в описании товара.

Замечание: Этот идентификатор используется только в контексте стандартов организации UN/ECE для оценки качества мясных туш и их разделки (КРС, свинина, баранина, козлятина).

43. Рулонные товары – Толщина, длина, диаметр, направление обмотки, сращивание (AI 8001)

Измерения и другие величины рулонного товара.

Вследствие того, что некоторые рулонные товары не могут нумероваться стандартными методами, определенными ранее, то они рассматриваются как товары с переменными размерами. Для этих товаров, где стандартные измерители товара не достаточны, предлагается следующий ниже формат строки.

Идентификация таких товаров состоит из глобального идентификационного номера товарной единицы и переменных, содержащих данные о конкретном товаре.

Формат элемента строки

AI

Переменный объем рулонных товаров (описание см. выше)

8 0 0 1

N1 N2 N3 N4

N5 N6 N7 N8 N9

N10 N11 N12

N13

N14

ТАБЛИЦА 52

AI 8001 указывает, что поле данных содержит значения переменных рулонных продуктов.

Поле данных рулонного товара состоит из следующих значений:

N1 - N4 толщина рулона в миллиметрах.

N5 - N9 длина в метрах

N10 – N12 внутренний диаметр жилы в миллиметрах

N13 – направление обмотки (с начала – 0, с конца – 1, неопределено – 9)

N14 – число сращиваний (от 0 до 8 – действительное количество, 9 – неизвестно)

Данные могут быть обработаны совместно с соответствующим идентификационным номером.

44. Идентификационный номер мобильного телефона (AI 8002)

Электронный серийный номер сотового мобильного телефона ограниченного географического действия

Формат элемента строки

AI

Серийный номер

8 0 0 2

X1 переменный X20

ТАБЛИЦА 53

AI 8002 указывает, что поле данных содержит серийный номер сотового мобильного телефона.

Поле «серийный номер» является строкой переменной длины, которая может включать любые символы, содержащиеся в таблице 1 международного стандарта ISO/IEC 646, приведенного в приложении 3. Этот номер назначают лица, облеченные таким правом на национальном или на мультинациональном уровне. Он идентифицирует каждый мобильный телефон уникально в определенном районе для определенных контрольных целей. Он не рассматривается как атрибут идентификационного номера телефона как товара.

Данные могут обрабатываться согласно частным требованиям приложения.

45. Глобальный номер оборотной тары (AI 8003)

EAN/UCC идентификационный номер оборотной тары как физической единицы без ссылки на содержимое.

Идентификационный номер имущества базируется на структуре стандартного номера EAN/UCC-13 или UCC-12.

Формат элемента строки

AI

Идентификационный номер активов

Серийный номер (выборочно)

EAN/UCC префикс компании Актив

Контр. число

8 0 0 3

0 0 N1 N2 N3 N4 N5 N6 N7 N8 N9 N10 N11

N12

X1пeремен X16

8 0 0 3

0 N1 N2 N3 N4 N5 N6 N7 N8 N9 N10 N11 N12

N13

X1 пeремен. X16

UCC-12

EAN/

UCC-13

ТАБЛИЦА 54

AI 8003 указывает, что поле данных содержит глобальный номер оборотного имущества (тары).

EAN/UCC префикс компании присваивается собственником имущества. Эта компонента структуры нумерации EAN/UCC используется для того, чтобы сделать номер уникальным. Нуль(и) добавляются слева чтобы длина поля была равна 14 цифрам, как идентификационный номер имущества.

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

Контрольная цифра определяется по алгоритму, приведенному в Приложении 1. Она обрабатывается программным путем, чтобы обеспечить корректность сборки строки.

Необязательное поле «серийный номер» назначается собственником имущества. Оно определяет отдельное имущество в рамках данного тAIа. Поле является строкой переменной длины, которая может включать любые символы, содержащиеся в таблице 1 международного стандарта ISO/IEC 646, приведенного в приложении 3.

Данные могут обрабатываться согласно некоторым требованиям приложения.

46. Глобальный номер индивидуального имущества (AI 8004)

EAN/UCC идентификационный номер индивидуального имущества.

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

Формат элемента строки

AI

Индивидуальный номер имущества

EAN/UCC префикс комапании Индивидуальный номер имущества

8 0 0 4

N1 …. Ni Xi+1… переменная длина Xj (j<=30)

ТАБЛИЦА 55

AI 8004 указывает, что поле данных Глобальный номер индивидуального имущества

Индивидуальный номер имущества использует EAN/UCC префикс компании -собственницы имущества. Структура и нумерация ссылки на индивидуальное имущество определяется держателем префикса компании. Поле является строкой переменной длины, которая может включать любые символы, содержащиеся в таблице 1 международного стандарта ISO/IEC 646, приведенного в приложении 3.

Данные могут обрабатываться согласно некоторым требованиям приложения.

47. Цена единицы измерения товара (AI 8005)

Цена единицы измерения товара переменного размера с ограничением использования между торговыми партнерами.

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

Формат элемента строки

AI

Цена за единицу или вес

8 0 0 5

N1 N2 N3 N4 N5 N6

ТАБЛИЦА 56

AI 8005 указывает, что поле данных содержит цену единицы товара.

Содержание и структура поля оставлены на усмотрение торговых партнеров.

Данные должны всегда декодироваться и обрабатываться вместе с идентификационным номером торговой единицы.

48. Идентификация компонент торговой единицы (AI 8006)

EAN/UCC идентификация торговой единицы фиксированного размера, упакованного в отдельные пакеты.

Формат элемента строки

AI

GTIN

Относительный номер компоненты

Количество компонент

8 0 0 6

N1 N2 N3 …………………N11 N13 N14

N15 N16

N17 N18

ТАБЛИЦА 57

AI 8006 указывает, что поле данных содержит идентификацию торговой единицы и перечисление ее компонент.

Идентификационный номер – это номер целой торговой единицы.

Поле «относительный номер» определяет последовательный номер отдельной компоненты товара. Компонента данной торговой единицы должна быть идентичной соответствующей торговой единицы.

Поле «количество» показывает общее число компонент торговой единицы.

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

Данные могут обрабатываться согласно некоторым требованиям приложения.

49. Международный номер банковского счета (AI 8007)

Международный номер банковского счета определен в стандарте ISO 13616 для использования на платежных документах.

Формат элемента строки

AI

Международный номер банковского счета

8 0 0 7

X1 переменный X30

ТАБЛИЦА 58

AI 8007 указывает, что поле данных содержит Международный номер банковского счета.

Международный номер банковского счета, определенный в стандарте ISO 13616, на чей счет сумма в платежном поручении должна быть переведена. Этот номер указан в

счете. Поле имеет переменную длину и содержит символы из таблицы1 международного стандарта ISO/IEC 646, приведенной в приложении 3.

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

50. Дата и время производства (AI 8008)

Формат элемента строки

AI

Дата и Время Производства

ГГ

ММ

ДД

ЧЧ

ММ

СС

8 0 0 8

N1 N2

N3 N4

N5 N6

N7 N8

N9 N10

N10 N11

ТАБЛИЦА 59

Идентификатор применения 8008 указывает, что поле данных содержит дату и время выпуска продукции.

Дату и время производства или сборки продукции определяет производитель. Оно может относиться к самой торговой единице или к товару, содержащемуся в грузе.

Структура:

Год – последние две цифры года (например, 1997=97). Обязательно указывается.

Месяц- это номер месяца (например, январь=01). Обязательно указывается.

День- номер дня соответствующего месяца (например, второй день = 02). Обязательно указывается.

Час – номер часа в локальной системе времени (например, 2 часа после полудня = 14). Обязательно указывается.

Минуты – могут не указываться, если не требуется.

Секунды – могут не указываться, если не требуется.

Так как дата сохранности является атрибутом конкретной торговой единицы, то она не должна обрабатываться самостоятельно, а только совместно с идентификационным номером торговой единицы, к которой она относится.

Замечание: Если год изготовления больше 50, то товар изготовлен в 20 веке, а если меньше, то товар изготовлен в 21 веке.

51. Глобальный номер для услуг (AI 8018)

EAN/UCC идентификационный номер оказываемых услуг, определяемый провайдером.

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

Формат элемента строки

AI

Глобальный номер для услуг

Контр. число

EAN/UCC префикс комапании Ссылка на услугу

8 0 1 8

N1 N2 N3 N4 N5 N6 N7 N8 N9 N10 N11 N12 N13 N14 N15 N16 N17

N18

ТАБЛИЦА 60

AI 8018 указывает, что поле данных содержит глобальный номер для услуг.

EAN/UCC префикс компании присваивается провайдером услуг. Эта компонента структуры нумерации EAN/UCC используется для того, чтобы сделать номер уникальным.

Ссылка на услугу определяется провайдером. Структура и содержимое номера ссылки остается на усмотрении конкретного провайдера услуг.

Контрольная цифра вычисляется по алгоритму, приведенному в Приложении 1. Ее верификация, выполняемая программными средствами, обеспечивает правильность составления номера.

Данные могут обрабатываться согласно требованиям конкретного приложения.

52 Ссылочный номер платежного требования (AI 8020)

Ссылочный номер платежного требования.

Формат элемента строки

AI

Ссылочный номер платежного требования

8 0 20

X1 переменный X25

ТАБЛИЦА 61

AI 8020 указывает, что поле данных содержит ссылочный номер платежного требования.

Ссылочный номер платежного требования определяется стороной, выставляющей счет для идентификации платежного требования. Вместе с ее глобальным адресным

номером документ получает полную идентификацию. Поле имеет переменную длину и использует символы международного стандарта ISO/IEC 646, приведенные в Таблице1 Приложения 3.

Данные должны обрабатываться вместе с глобальным адресным номером стороны, выставившем счет на том же бланке платежного требования.

53 Расширенный код купона (AI 8100-8102)

Расширенный код купона дополняет UCC идентификацию купонов и используется в Северной Америке.

Формат элемента строки

AI

Допол.

цифра

UCC

префикс

Код услуги

Дата истечения срока (месяц+год)

8 1 0 0

N1

N2 N3 N4 N5 N6

8 1 0 1

N1

N2 N3 N4 N5 N6

N7 N8 N9 N10

8 1 0 2

0

N2

ТАБЛИЦА 62

AI 8100-8102 указывает, что поле данных содержит дополнительные данные к UCC идентификационному номеру купона.

Дополнительный 0 используется в AI 8102 для того, чтобы число цифр было четным.

UCC префикс указывает тAI потребительского товара в системе UPC-12. Для купонов обычно используется цифра 5.

Код предложения назначается издателем купонов и служит для определения некоторого поощрения.

Дата истечения срока указывает конец периода выкупа купона..

54. Информация по согласованию между торговыми партнерами (AI 90)

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

Формат элемента строки

AI

Ссылочный номер платежного требования

9 0

X1 переменная длина X30

ТАБЛИЦА 63

AI 90 указывает, что поле данных содержит информацию обоюдно согласованную между торговыми партнерами.

Поле данных содержит данные согласованные торговыми партнерами.. Поле имеет переменную длину и использует символы международного стандарта ISO/IEC 646, приведенные в Таблице1 Приложения 3. Данные могут использоваться вместе с данными, представленными идентификаторами FACT.

Данные могут обрабатываться способами, ранее оговоренными между торговыми партнерами.

Предупреждение: Штриховой код, содержащий строку с AI 90 должен быть убран с любого товара, покидающего подведомственную область торговых партнеров.

55 Внутренняя информация компании (AI 91 - 99)

Формат элемента строки

AI

Поле данных

A1 A2

X1 переменная длина X30

ТАБЛИЦА 64

Значениями числа А1 А2 являются числа от 91 до 99.

Поле данных может содержать любую внутреннюю информации компании. Поле имеет переменную длину и использует символы международного стандарта ISO/IEC 646, приведенные в Таблице1 Приложения 3.

Процесс обработки данных определяется компанией.

Предупреждение: Штриховой код, содержащий строку с AI 91 до AI 99 должен быть убран с любого товара, покидающего подведомственную территорию компании.

ПРИЛОЖЕНИЕ 1. ВЫЧИСЛЕНИЕ КОНТРОЛЬНОЙ ЦИФРЫ.

Ниже приводится стандартная процедура вычисления контрольной цифры в системе

нумерации EAN/UCC.

Позиции цифр

EAN/

UCC-8

N1

N2

N3

N4

N5

N6

N7

N8

UCC-12

N1

N2

N3

N4

N5

N6

N7

N8

N9

N10

N11

N12

EAN/

UCC-13

N1

N2

N3

N4

N5

N6

N7

N8

N9

N10

N11

N12

N13

EAN/

UCC-14

N1

N2

N3

N4

N5

N6

N7

N8

N9

N10

N11

N12

N13

N14

18-ти значн.

N1

N2

N3

N4

N5

N6

N7

N8

N9

N10

N11

N12

N13

N14

N15

N16

N17

N18

Множители для каждой позиции

x3

x1

x3

x1

x3

x1

x3

x1

x3

x1

x3

x1

x3

x1

x3

x1

x3

Суммирование результатов = Сумма

Вычитание Сумма из ближайшего числа,

кратного 10 = Контрольная цифра

ТАБЛИЦА 65

Пример расчет контрольного числа для 18-тизначного поля

N1 N2 N3 N4 N5 N6 N7 N8 N9 N10 N11 N12 N13 N14 N15 N16 N17 N18

Номер без ко

нтрольной

цифры

3

7

6

1

0

4

2

5

0

0

2

1

2

3

4

5

6

Шаг 1:

Умножить

на

x

3

x

1

x

3

x

1

x

3

x

1

x

3

x

1

x

3

x

1

x

3

x

1

x

3

x

1

x

3

x

1

x

3

Шаг 2:

сложить

результат

=

9

=

7

=

18

=

1

=

0

=

4

=

6

=

5

=

0

=

0

=

6

=

1

=

6

=

3

=

12

=

5

=

18

=101

Шаг 3: Вычитание суммы из ближайшего числа кратного 10 (110) = Контр. Цифра (9)

Номер с кон

трольной

цифрой

3

7

6

1

0

4

2

5

0

0

2

1

2

3

4

5

6

9

ТАБЛИЦА 66

Вычисление контрольной цифры для полей, содержащих цену или вес.

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

Основной принцип вычисления контрольной цифры состоит в том, что каждая цифра в поле цена или вес умножается на свой весовой фактор и полученная сумма «весов» обрабатывается. Весовыми факторами являются 2-,3,5+.5-.

Таблицы «весов» для каждого весового фактора приводятся ниже.

ТАБЛИЦА для весового фактора 2-

Правило вычисления: цифра умножается на 2. Если результат двузначный, цифра

десятков вычитается из цифры единиц. Эта разница является «весом»

Цифры

«Веса»

0

0

1

2

2

4

3

6

4

8

5

9

6

1

7

3

8

5

9

7

ТАБЛИЦА для весового фактора 3

Правило вычисления: Цифра умножается на 3. Цифра единиц результата является

«весом»

Цифры

Веса

0

0

1

3

2

6

3

9

4

2

5

5

6

8

7

1

8

4

9

7

ТАБЛИЦА для весового фактор 5+

Правило вычисления: Цифра умножается на 5. Цифра единиц результата и цифра десят-

ков складываются вместе. Эта сумма является «весом»

Цифры

Веса

0

0

1

5

2

1

3

6

4

2

5

7

6

3

7

8

8

4

9

9

ТАБЛИЦА для весового фактор 5-

Правило вычисления: Цифра умножается на 5. Цифра десятков результата вычитается

из цифр единиц. Разница является «весом»

Цифры

Веса

0

0

1

5

2

9

3

4

4

8

5

3

6

7

7

2

8

6

9

1

Расчет контрольного числа для 4-значного поля цены

Весовые факторы

Позиция цифры

Весовой фактор

1

2-

2

2-

3

3

4

5-

Расчет шаг 1: Определяем «веса» для каждой цифры в позициях от 1 до 4, согласно назначенным весовым факторам.

Расчет шаг 2: Складываем результаты шага 1.

Расчет шаг 3: Умножаем результат шага 2 на 3. Число единиц результата является контрольной цифрой.

Пример расчета контрольного числа

Позиция поля цены 1 2 3 4

Назначенный весовой фактор 2- 2- 3 5-

Цена 2 8 7 5

Шаг 1: Веса согласно

таблиц 4 5 1 3

Шаг 2: Сумма + + + + = 13

Шаг 3: Умножить на 3 = 3 9

Позиция контрольного числа

Расчет контрольной цифры для 5-тизначного поля цены

Назначенный весовой фактор

Позиции цифр

Весовой фактор

1

2-

2

2-

3

3

4

5+

5

2-

Расчет шаг 1: Определяем «вес» для каждой цифры, стоящей в позиции от 1 до 5, согласно назначенным весовым факторам

Расчет шаг 2: Складываем результаты шага 1.

Расчет шаг 3: Вычитаем результат из ближайшего равного или большего числа, кратного. 10

Расчет шаг 4: Находим цифру равную результату из строки «веса» в таблице «весовой фактор 5-». Контрольная цифра является числом в строке цифры того же столбца.

Пример расчета контрольного числа

Позиция поля цены 1 2 3 4 5

Назначенный весовой фактор 5+ 2- 5- 5+ 2-

Цена 1 4 6 8 5

Шаг 1: «Веса» согласно

таблицам 5 8 7 4 9

Шаг 2: Сумма + + + + + = 33

Шаг 3: Результат вычитания (40-33) = 7

Шаг 4: «Вес» 7 в таблице факторов 5- указывает цифру 6, которая и является

Контрольной цифрой

ПРИЛОЖЕНИЕ 2. UCC-12 ИДЕНТИФИКАЦИОННЫЕ НОМЕРА В СИМВОЛИКЕ UPC-E.

Идентификационные номера товара в системе UCC-12, начинающиеся с префикса 0 могут быть представимы в виде сокращенного штрихового кода – UPC-E. 12-значный номер UCC-12 “сворачивается” в штриховой код, содержащий символы всего 6 цифр. Для обработки в прикладных программах сокращенный номер необходимо “развернуть” в полную длину, т.к. 6-значного номера товара в системе UPC-E нет.

UCC-12 идентификационный номер торговой единицы

Представление в

системе UPC-E

Префикс компании

Ссылочный номер единицы

Контр. число

Позиции

N1 N2 N3 N4 N5 N6

N7 N8 N9 N10 N11

N12

1 2 3 4 5 6

(0) 0 0 0 0 0 1

(0) 0 9 9 9 9 9

= 5 номеров UPC-E

0 0 0 0 5

0 0 0 0 9

4

2

0 0 0 0 1 ‘5’

9 9 9 9 9 ‘9’

(0) 0 0 0 0 1 0

(0) 0 9 9 9 9 0

= 10 номеров UPC-E

0 0 0 0 0

0 0 0 0 9

7

1

0 0 0 1 0 ‘4’

9 9 9 9 9 ‘4’

(0) 0 0 0 3 0 0

(0) 0 9 9 9 0 0

= 100 номеров UPC-E Приложений

0 0 0 0 0

0 0 0 9 9

7

5

0 0 3 0 0 ‘3’

9 9 9 9 9 ‘3’

(0) 0 0 0 0 0 0

(0) 0 9 9 2 9 0

= 1000 номеров UPC-E

0 0 0 0 0

0 0 9 9 9

9

9

0 0 0 1 0 ‘0’

9 9 9 9 9 ‘2’

ТАБЛИЦА 67

Замечания относительно таблицы 67

Компании с префиксами 000000 и от 001000 до 007999 в позициях от N1 до N6 не могут использовать систему UPC-E.

Каждая позиция поля данных должна содержать цифру в пределах интервала [цифра в верхней строке, цифра в нижней строке]. При декодировании алгоритм «развертывания» сокращенной длины до полной определяется цифрой, взятой в кавычки в колонке «Представление в системе UPC-E».

Контрольная цифра вычисляется по алгоритму, приведенному в Приложении 1, примененного к полной длине UCC-12 идентификационного номера. В штриховом коде UPC-E контрольная цифра неявно представлена и вычисляется на основании шести цифр, действительно кодируемых.

ПРИЛОЖЕНИЕ 3. ТАБЛИЦА 1 СТАНДАРТА ISO/IEC 646.

Графический символ

Код представления

Графический символ

Код представления

!

21

M

4D

22

N

4E

%

25

O

4F

&

26

P

50

27

Q

51

(

28

R

52

)

29

S

53

2A

T

54

+

2B

U

55

,

2C

V

56

-

2D

W

57

.

2E

X

58

/

2F

Y

59

0

30

Z

5A

1

31

_

5F

2

32

a

61

3

33

b

62

4

34

c

63

5

35

d

64

6

36

e

65

7

37

f

66

8

38

g

67

9

39

h

68

3A

i

69

3B

j

6A

<

3C

k

6B

=

3D

l

6C

3E

m

6D

?

3F

n

6E

A

41

o

6F

B

42

p

70

C

43

q

71

D

44

r

72

E

45

s

73

F

46

t

74

G

47

u

75

H

48

v

76

I

49

w

77

J

4A

x

78

K

4B

y

79

L

4C

z

7A

ТАБЛИЦА 68

ПРИЛОЖЕНИЕ 4. КРАТКИЙ ОБЗОР ИДЕНТИФИКАТОРОВ ПРИМЕНЕНИЯ

Таблица 69 содержит список всех AI, используемых в настоящее время.

Представление формата поля данных выполнено в соответствии со следующими условиями:

а поле данных содержит буквенные символы

n поле данных содержит только цифровые символы

an поле данных содержит буквенно-цифровые символы

а3 поле данных фиксированной длины, содержит 3 буквенных символа

n3 поле данных фиксированной длины, содержит 3 цифровых символа

an3 поле данных фиксированной длины, содержит 3 буквенно-цифровых символа

a…3 поле данных переменной длины, содержит до 3 буквенных символов

n…3 поле данных переменной длины, содержит до 3 цифровых символов

a…3 поле данных переменной длины, содержит до 3 буквенно-цифровых

символов

AI

Полное название

Формат

Краткое название

00

Серийный грузовой контейнерный код

n2+n18

SSCC

01

Идентификационный номер единицы товара

n2+n14

GTIN

02

GTIN торговых единиц, содержащихся в грузе

n2+n14

CONTENT

10

Номер лота (партии, группы, пакета)

n2+an..20

BATCH/LOT

111

Дата выработки (ГГММДД)

n2+n6

PROD DATE

121

Дата платежа

n2+n6

DUE DATE

131

Дата упаковки (ГГММДД)

n2+n6

PACK DATE

151

Минимальный срок годности (ГГММДД)

n2+n6

BEST BEFORE or SELL BY

171

Максимальный срок годности (ГГММДД)

n2+n6

USE BY

or EXPIRY

20

Разновидность продукта

n2+n2

VARIANT

21

Серийный номер

n2+an20

SERIAL

22

Вспомогательные данные специальных фармацевтических продуктов

n2+an..29

QTY/DATE/BATCH

232

Номер лота (переходный)

n3+n..19

BATCH/LOT

240

Дополнительная идентификация продукта, присваиваемая производителем

n3+an 30

ADDITIONAL ID

241

Номер покупателя

n3+an 30

CUST.PART №

250

Дополнительный серийный номер

n3+an 30

SECONDARY SERIAL

30

Переменное количество

n2+n 8

VAR.COUNT

31-363

Торговые и логистические единицы измерения

n4+n6

See next pages**

3373

Килограммы на квадратный метр

n4+n6

KG PER m2

37

Количество торговых единиц в грузе

n2+n 8

COUNT

3903

Сумма, подлежащая к оплате – одна валютная зона

n4+n 15

AMOUNT

3913

Сумма, подлежащая к оплате – с ISO кодом валюты

n4+n3+n 15

AMOUNT

400

Номер заявки покупателя на покупку

n3+an..30

ORDER NUMBER

401

Номер накладной (коносамента)

n3+an..30

CONSIGNMENT

402

Идентификационный номер груза

n3+n17

SHIPMENT №

403

Код маршрута

n3+an..30

ROUTE

410

«Доставить-вручить» EAN/UCC Глобальный адресный номер

n3+n13

SHIP TO LOC

411

«Счет-фактура» EAN/UCC Глобальный адресный номер

n3+n13

BILL TO

412

«Закуплено у» EAN/UCC Глобальный адресный номер

n3+n13

PURCHASE FROM

413

«Груз Для - Поставка Для - Переслать » EAN/UCC Глобальный адресный номер

n3+n13

SHIP FOR LOC

414

Идентификация места размещения, EAN/UCC Глобальный адресный номер

n3+n13

LOC №

415

EAN/UCC Глобальный адресный номер стороны, выставившей счет

n3+n13

PAY TO

420

«Доставить-вручить» Почтовый код в пределах одной страны

n3+an..20

SHIP TO POST

421

Доставить-вручить» Почтовый код с 3-хзначным кодом страны по ISO

n3+n3+an 9

SHIP TO POST

422

Страна происхождения торговой единицы

n3+n3

ORIGIN

8001

Рулонные товары – Толщина, длина, диаметр, направление обмотки, сращивание

n4+n14

DIMENSIONS

8002

Электронный серийный идентификационный номер для мобильного телефона

n4+an..20

CMT №

8003

Глобальный номер оборотной тары

n4++n14+an..16

GRAI

8004

Глобальный номер индивидуального имущества

n4+an..30

GIAI

8005

Цена единицы измерения товара

n4+n6

PRICE PER UNIT

8006

Идентификация компонент торговой единицы

n4++n14+n2+n2

GCTIN

8007

Международный номер банковского счета

n4+an..30

IBAN

8018

Глобальный номер для услуг

n4+n18

GSRN

8020

Ссылочный номер платежного требования

n4+an..25

REF №

8100

Расширенный код купона – NSC + код предложения

n4+n1+n5

-

8101

Расширенный код купона – NSC + код предложения + конец кода предложения

n4+n1+n5+n4

-

8102

Расширенный код купона – NSC

n4+n1+n1

-

90

Информация по согласованию между торговыми партнерами (включая FACT Dls)

n2+an..30

INTERNAL

91-99

Внутренняя информация компании

n2+an..30

INTERNAL

Торговые метрические единицы измерения

AI

Полное наименование

Данные формат n6

Единица измерения

Наименование данных

310(n)

Чистый вес

Килограммы

NET WEIGHT (kg)

311(n)

Длина (первое измерение), торговля

Метры

LENGTH (m)

312(n)

Ширина, диаметр (второе измерение), торговля

Метры

WIDTH (m)

313(n)

Глубина, толщина, высота (3-е измерение), торговля

Метры

HEIGHT (m)

314(n)

Площадь, торговля

Квадратные Метры

AREA (m2)

315(n)

Чистый объем, торговля

Литры

NET VOLUME (I)

316 (n)

Чистый объем, торговля

Куб. метры

NET VOLUME (m3)

Не метрические единицы измерения

AI

Полное наименование

Данные формат n6

Единица измерения

Наименование данных

320(n)

Чистый вес

Фунты

NET WEIGHT (ib)

321(n)

Длина (первое измерение), торговля

Дюймы

LENGTH (i)

322(n)

Длина (первое измерение), торговля

Футы

LENGTH (f)

323(n)

Длина (первое измерение), торговля

Ярды

LENGTH (y)

324(n)

Ширина, диаметр (второе измерение), торговля

Дюймы

WIDTH (i)

325(n)

Ширина, диаметр (второе измерение),торговля

Футы

WIDTH (f)

326 (n)

Ширина, диаметр (второе измерение), торговля

Ярды

WIDTH (y)

327(n)

Глубина, толщина, высота (3-е измерение), торговля

Дюймы

HEIGHT (i)

328(n)

Глубина, толщина, высота (3-е измерение), торговля

Футы

HEIGHT (f)

329(n)

Глубина, толщина, высота (3-е измерение), торговля

Ярды

HEIGHT (y)

350(n)

Площадь, торговля

Кв. дюймы

AREA (i2)

351(n)

Площадь, торговля

Кв. футы

AREA (f2)

352(n)

Площадь, торговля

Кв. ярды

AREA (y2)

356 (n)

Чистый вес

Тройские унции

NET WEIGHT (t)

357(n)

Чистый вес

Унции

NET VOLUME (oz)

360(n)

Чистый объем

Кварты

NET VOLUME (ib)

361(n)

Чистый объем

Галлоны (США)

NET VOLUME (g)

364(n)

Чистый объем

Куб. дюймы

NET VOLUME (i3)

365(n)

Чистый объем

Куб. футы

NET VOLUME (f3)

366(n)

Чистый объем

Куб. ярды

NET VOLUME (y3)

AI

Полное наименование

Данные формат n6

Единица измерения

Наименование данных

330(n)

Брутто вес

Килограммы

GROSS WEIGHT (kg)

331(n)

Длина (первое измерение), логистическое

Метры

LENGTH (m), log

332(n)

Ширина, диаметр (второе измерение), логистическое

Метры

WIDTH (m), log

333(n)

Глубина, толщина, высота (3-е измерение), логистическое

Метры

HEIGHT (m), log

334(n)

Площадь, логистическое

Кв. метры

AREA (m2), log

335(n)

Брутто объем

Литры

VOLUME (l), log

336 (n)

Брутто объем

Куб. метры

VOLUME (m3), log

AI

Полное наименование

Данные формат n6

Единица измерения

Наименование данных

340(n)

Брутто вес

Фунты

GROSS WEIGHT (lb)

341(n)

Длина (первое измерение), логистическое

Дюймы

LENGTH (i), log

342(n)

Длина (первое измерение) логистическое

Футы

LENGTH (f), log

343(n)

Длина (первое измерение) логистическое

Ярды

LENGTH (y), log

344(n)

Ширина, диаметр (второе измерение) логистическое

Дюймы

WIDTH (i), log

345(n)

Ширина, диаметр (второе измерение) логистическое

Футы

WIDTH (f), log

346 (n)

Ширина, диаметр (второе измерение) логистическое

Ярды

WIDTH (y), log

347(n)

Глубина, толщина, высота (3-е измерение) логистическое

Дюймы

HEIGHT (i), log

348(n)

Глубина, толщина, высота (3-е измерение) логистическое

Футы

HEIGHT (f), log

349(n)

Глубина, толщина, высота (3-е измерение) логистическое

Ярды

HEIGHT (y), log

353(n)

Площадь логистическое

Кв. дюймы

AREA (i2), log

354(n)

Площадь логистическое

Кв. дюймы

AREA (f2), log

355(n)

Площадь логистическое

Кв. футы

AREA (y2), log

362(n)

Брутто объем

Кварты

VOLUME (q), log

363(n)

Брутто объем

Галлоны (США)

VOLUME (g), log

367(n)

Брутто объем

Куб. дюймы

VOLUME (i3), log

368(n)

Брутто объем

Куб. футы

VOLUME (f3), log

369(n)

Брутто объем

Куб. ярды

VOLUME (y3), log

ПРИЛОЖЕНИЕ 5. ОПРЕДЕЛЕНИЕ ВЕКА В ДАТАХ.

Элементами строк, содержащих даты, являются:

Дата производства (AI 11)

Предельный срок платежа (AI 12)

Дата упаковки (AI 13)

Минимальный срок годности (AI 15)

Максимальный срок годности (AI 17)

Дата и время производства (AI 8008)

Право пользователя – определять, какие типы данных использовать в своей практике. Выбор типов данных, несомненно, зависит от вида товаров, к которым они применяются.

Поскольку поле «год» содержит две позиции, то век определяется по следующему алгоритму:

ТАБЛИЦА

Замечание: Элемент строки может определять даты в диапазоне – 49 в прошлом и 50 лет в будущем.

ПРИЛОЖЕНИЕ 6. ОБЪЕДИНЕНИЕ ЭЛЕМЕНТОВ СТРОК В ПРАВИЛЬНОЕ СООБЩЕНИЕ.

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

Элементы строк могут применяться непосредственно на физических товарах или печататься в каталогах или документах. Типы сканирующего оборудования и транзакции в целом определяют состав и объем необходимой информации для решения конкретной задачи бизнеса. Поскольку вся информация, считываемая автоматически, используется в программах электронной обработки данных, строгое определение обрабатываемой информации абсолютно необходимо.

Для правильной обработки сканируемой информации программы конкретных задач бизнеса могут потребовать объединения элементов строк, представляющих некоторую комбинацию идентификаторов. EAN/UCC система позволяет пользователям выбирать необходимый уровень полноты данных через использование адекватных элементов строк.

Логическая структура этого стандарта позволяет пользователю оперировать данными, определенных на двух уровнях. На первом уровне определение данных выполняется в соответствии с системными правилами, требующими выполнения главного условия системы – не вмешательство человека в процесс обработки данных. На втором уровне определение данных выполняется в соответствии с требованиями программы, решающей конкретную задачу.

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

ОСНОВНЫЕ СОГЛАШЕНИЯ

Те элементы строк, которые требуют специального программного обеспечения и(или) специального оборудования для сканирования, не подпадают под эти правила. Такими элементами являются элементы строк с EAN/UCC префиксами от 0001 до 0007, 02, 04, 05, от 20 до 29, 980, 99; EAN/UCC - 8 префиксы 0 и 2; дополнительные коды EAN-2 и EAN-5; и идентификаторы применения от 8100 до 8102.

Дублированные элементы строк, нанесенные на одну и ту же физическую единицу, должны иметь одинаковое значение.

В таблицах используется термин GTIN – глобальный идентификационный номер товара. Этот номер может быть представлен в виде штрихового кода в системе EAN/UPC или в виде штрихового кода в системе ITF-14 или в системе EAN/UCC-128, используя идентификаторы применения 01 или 8006.

ТАБЛИЦА 1

Пары элементов строк

Пояснение

AI

Обозначение

AI

Обозначение

GTIN

Идентификация торговой единицы

GTIN

Идентификация торговой единицы

Дублирует GTIN с различными величинами

GTIN

Идентификация торговой единицы

02

Идентификация содержания груза

AI 02 не может использоваться для идентфикации единиц содержащихся в торговой единице

10

Пакет/Номер лота

23n

Номер лота (транзитное использование)

Дублирует номера лота с различными величинами

22

Вспомогательные данные фармацевтических продуктов

30

Счет

Дублирует счета с различными величинами

22

10

Пакет/Номер лота

Дублирует номеров лота с различными величинами

22

17

Максимальный срок годности

Дублирует окончательную дату с различными величинами

22

21

Серийный номер

Дублирует серийные номера с различными величинами

22

23n

Номер лота (транзитное использование)

Дублирует номера лота с различными величинами

420

Почтовый код получателя в пределах одной страны

421

Почтовый код получателя с кодом страны по ISO

Только один «Доставить…» почтовый код может быть приложен к торговой единице

390n

Сумма, подлежащая к оплате – одна валютная зона

391n

Сумма, подлежащая к оплате – с ISO кодом валюты

Только один элемент строки «Сумма подлежащая к оплате» может быть приложен к платежному требованию

8006

Идентификационный компонент

GTIN

Идентификация торговой единицы

Другие GTIN не могут быть использованы с AI 8006. Торговая единица, идентифицированная GTIN-ом содержащимся в AI 8006.

ТАБЛИЦА 2.

Элемент строки

AI Обозначение

Обязательно должен присутствовать элемент строки

Пояснение

GTIN с N1 = 9

Идентификатор переменного веса торговой единицы

30, 3nnn1

или 3nnn2

или 8001

Обязательно присутствие с информацией о переменном весе.

02

Идентификация содержания единицы груза

00

Обязательно присутствие с SSCC

02

Идентификация содержания единицы груза

37

Обязательно счет содержащихся торговых единиц

10

Пакет/Номер лота

GTIN

или 02

Обязательное соединение с GTIN ил с идентификатором содержания логистической единицы

11,13, 15,17

Даты

GTIN

или 02

Обязательное соединение с GTIN ил с идентификатором содержания логистической единицы

12

Дата платежа

8020

и 415

Обязательно соединение с ссылочным номером платежного поручения и EAN/UCC GLN в инвойсной части

20

Разновидность продукта

GTIN

или 02

Обязательное соединение с GTIN или с идентификатором содержания логистической единицы

21

Серийный номер

GTIN

Обязательное соединение с GTIN единственной торговой единицы (серийный номер не может применяться для группы торговых единиц)

22

Вспомогательные данные фармацевтической промышленности

GTIN

Обязательно соединение с GTIN

23т

Номер лота

GTIN

или 02

Обязательное соединение с GTIN или с идентификатором содержания логистической единицы

240

Дополнительная идентификация продукта

GTIN

или 02

Обязательное соединение с GTIN или с идентификатором содержания логистической единицы

241

Номер покупателя

GTIN

или 02

Обязательное соединение с GTIN или с идентификатором содержания логистической единицы

250

Дополнительный серийный номер

GTIN

Обязательное соединение с GTIN (вторичный серийный номер не может применяться для группы торговых единиц)

250

Дополнительный серийный номер

21

Обязательное соединение с серийным номером

30

Переменное количество

GTIN

или 02

Обязательно соединение с GTIN переменного размера (т.е. идентификационный номер EAN/UCC-14 начинается с 9) или идентификация содержимого груза переменного размера.

3nnn1

Торговые величины, которые не могут быть суммированы

GTIN

Обязательно соединение с GTIN переменного размера (т.е. идентификационный номер EAN/UCC-14 начинается с 9)

3nnn2

Торговые величины, которые могут быть суммированы

GTIN

или 02

Обязательно соединение с GTIN переменного размера (т.е. идентификационный номер EAN/UCC-14 начинается с 9) или идентификация содержимого груза переменного размера.

3nnn3

Логистические величины

00 или

GTIN

Обязательно соединение с SSCC или GTIN переменного размера (т.е. идентификационный номер EAN/UCC-14 начинается с 9).

337n

Килограмм на квадратный метр

GTIN

Обязательно соединение с GTIN

37

Количество единиц в грузе

02

Обязательно соединение с идентификаторм содержимого логистической единицы

390n

Сумма, подлежащая к оплате – одна валютная зона

8020 и

415

Обязательно соединение с ссылочным номером платежного поручения и EAN/UCC GLN в инвойсной части

391n

Сумма, подлежащая к оплате – с ISO кодом валюты

8020 и

415

Обязательно соединение с ссылочным номером платежного поручения и EAN/UCC GLN в инвойсной части

403

Код маршрута

00

Обязательно соединение с SSCC

415

EAN/UCC Глобальный адресный номер стороны, выставившей счет

8020

Обязательно соединение с ссылочным номером платежного поручения

422

Страна происхождения

GTIN

Обязательно соединение с GTIN

8001

Рулонные товары

GTIN

Обязательно соединение с GTIN переменного размера (т.е. идентификационный номер EAN/UCC-14 начинается с 9)

8005

Цена единицы измерения товара

GTIN или 02

также с N1=9

Обязательно соединение с GTIN переменного размера или идентификаторм содержимого логистической единицы

8007

Международный номер банковского счета

8020 и

415

Обязательно соединение с ссылочным номером платежного поручения и EAN/UCC GLN в инвойсной части

8020

Ссылочный номер платежного требования

415

Обязательно соединение с EAN/UCC GLN в инвойсной части

1 AI 3nnn где первые три цифры 312, 313, 324, 325, 326, 327, 328 и 329.

2 AI 3nnn где первые три цифры 310, 311, 314, 315, 316, 320, 321, 322, 323, 350, 351, 352,.356,357, 360, 361, 364, 365 и 366

3 AI 3nnn где первые три цифры 330, 331, 332, 333, 334, 320, 335, 336, 330, 341, 342, 343,.344,345, 346, 347, 348, 349 , 353, 355, 362, 363, 367, 368 и 369


Экспорт БД


Настраивается под конкретный сервер CWMS3000. Пример сценария:

del /Q "D:\backup\dump\*" 
set _my_datetime=%date%_%time%
set _my_datetime=%_my_datetime: =_%
set _my_datetime=%_my_datetime::=%
set _my_datetime=%_my_datetime:/=_%
set _my_datetime=%_my_datetime:.=_%
set _my_datetime=%_my_datetime:,=% 
set NLS_LANG=.CL8MSWIN1251
exp.EXE USERID=system/<пароль>@<строка соединен> LOG=D:\backup\dump\%_my_datetime%_mi.log FILE=D:\backup\dump\%_my_datetime%_mi.dmp owner=<login> consistent=y
copy "D:\backup\rar\*" "\\192.168.60.13\backup\Oracle_ed" 

и второй пример:

@echo off
for /f "Tokens=1-4 Delims=/ " %%i in ('date /t') do set dt=%%i%%j%%k%%l
for /f "Tokens=1" %%i in ('time /t') do set tm=%%i 
set tm=%tm% 
set dtt=%dt%%tm-st.dmp%
set tape_label="%computername%-%dtt%" 
set set_label="%computername% export %dtt%" 
set NLS_LANG=.CL8MSWIN1251
exp.EXE USERID=system/<пароль>@<строка соединения> LOG=f:\IDE_BACKUP\BOX\%dtt%.log FILE=f:\IDE_BACKUP\BOX\%dtt%.dmp owner=<строка соединения> consistent=y

Необходимо задать строку соединения, нужные директории.


Внимание
При импорте БД необходимо настроить системные задачи БД. Это выполняется нашими специалистами.

Новые рекомендации к "Экспорт", "Импорт"
Cоздать объект-директорию, с которым нам предстоит работать:

CREATE OR REPLACE DIRECTORY <объект>AS '/u01/app/oracle/oradata/';
GRANT READ, WRITE ON DIRECTORY <объект> TO <логин>;

Дополнительная информация
В отличии от утилит exp и imp, все файлы Data Pump: и ".dmp", и ".log", - создаются на Oracle-сервере, а не на клиентском компьютере.

Все действия Data Pump выполняются множественными задачами (jobs) (server processes not DBMS_JOB jobs). Эти задачи управляются главным управляюшим процессом, который использует расширенную очередь (Advanced Queuing). Во время выполнения, создаётся и используется главным управляющим процессом таблица очереди, которая называется по имени задания. Таблица удаляется после успешного выполнения задания Data Pump. Задание и очередь могут быть названы на Ваше усмотрение с использованием параметра "JOB_NAME". Остановка клиентского процесса не останавливает связанное с ним Data Pump задание. Передача клиенту комбинации клавиш "Ctrl+C" во время выполнения задания остановит вывод на стандартное устройство вывода и переведёт в командную строку. Ввод "status" в этой командной строке позволить проследить за состоянием текущего задания:

Export> status
Worker 1 Status:
 State: EXECUTING
 Object Schema: SYSMAN
 Object Name: MGMT_CONTAINER_CRED_ARRAY
 Object Type: DATABASE_EXPORT/SCHEMA/TYPE/TYPE_SPEC
 Completed Objects: 261
 Total Objects: 261
Job: SYS_EXPORT_FULL_01
 Operation: EXPORT
 Mode: FULL
 State: EXECUTING
 Bytes Processed: 0
 Current Parallelism: 1
 Job Error Count: 0
 Dump File: D:TEMPDB10G.DMP
   bytes written: 4,096
Worker 1 Status:
 State: EXECUTING
 Object Schema: SYSMAN
 Object Name: MGMT_CONTAINER_CRED_ARRAY
 Object Type: DATABASE_EXPORT/SCHEMA/TYPE/TYPE_SPEC
 Completed Objects: 261
 Total Objects: 261

Производительность Data Pump может быть улучшена использованием параметра "PARALLEL". Этот параметр следует использовать совместно с шаблоном "%U" в параметре "DUMPFILE" для разрешения создания или чтения множественных dump-файлов:

expdp <user>/<пароль>@<схема> schemas=<имя схемы> directory=<имя директории> parallel=4 dumpfile=<имя дампа>.dmp logfile=<имя лога>.log

Вьюшка (view) "DBA_DATAPUMP_JOBS" может быть использована для контроля состояния задания:

<user>@<схема>> select * from dba_datapump_jobs;
OWNER_NAME                     JOB_NAME                       OPERATION
------------------------------ ------------------------------ ------------------------------
JOB_MODE                       STATE                              DEGREE ATTACHED_SESSIONS
------------------------------ ------------------------------ ---------- -----------------
<user>                         SYS_EXPORT_FULL_01             EXPORT
FULL                           EXECUTING                               1                 1

Параметры "INCLUDE" и "EXCLUDE" могут быть использованы для ограничения импорта/экспорта указанных объектов. Когда используется параметр "INCLUDE", в экспорт будут включены только указанные объекты:

expdp <user>/<пароль>@<схема> schemas=<имя схемы> include=TABLE:"IN ('EMP', 'DEPT')" directory=<имя директории> dumpfile=<имя дампа>.dmp logfile=<имя лога>.log

При использовании параметра "EXCLUDE", все объекты, кроме указанных в параметре, будут включены в экспорт:

expdp <user>/<пароль>@<схема> schemas=<имя схемы> exclude=TABLE:"= 'BONUS'" directory=<имя директории> dumpfile=<имя дампа>.dmp logfile=<имя лога>.log

Кроме всего прочего, нужно учитывать особенности реализации среды. Например, в bash строка может выглядеть так:

expdp <user>/<пароль>@<схема> schemas=<имя схемы> exclude=TABLE:\"like \'USER%\'\" directory=<имя директории> dumpfile=<имя дампа>.dmp logfile=<имя лога>.log

Data Pump API
Вместе с утилитами Data Pump, Oracle предоставляет PL/SQL API. Следующий пример показывает, как API может быть использован для выполнения экспорта:

SET SERVEROUTPUT ON SIZE 1000000
 DECLARE
   l_dp_handle       NUMBER;
   l_last_job_state  VARCHAR2(30) := 'UNDEFINED';
   l_job_state       VARCHAR2(30) := 'UNDEFINED';
   l_sts             KU$_STATUS;
 BEGIN
   l_dp_handle := DBMS_DATAPUMP.open(
     operation   => 'EXPORT',
     job_mode    => 'SCHEMA',
     remote_link => NULL,
     job_name    => 'EMP_EXPORT',
     version     => 'LATEST');
DBMS_DATAPUMP.add_file(
   handle    => l_dp_handle,
   filename  => 'SCOTT.dmp',
   directory => 'TEST_DIR');
DBMS_DATAPUMP.add_file(
   handle    => l_dp_handle,
   filename  => 'SCOTT.log',
   directory => 'TEST_DIR',
   filetype  => DBMS_DATAPUMP.KU$_FILE_TYPE_LOG_FILE);
DBMS_DATAPUMP.metadata_filter(
   handle => l_dp_handle,
   name   => 'SCHEMA_EXPR',
   value  => '= SCOTT');
DBMS_DATAPUMP.start_job(l_dp_handle);
DBMS_DATAPUMP.detach(l_dp_handle);
END;
/

Как только задание запущено, его статус можно проверить используя следующий запрос:

system@db10g> select * from dba_datapump_jobs;

Внешние таблицы
У Oracle появилась поддержка технологий Data Pump, с помощью которых можно преносить данные во внешние таблицы. Драйвер доступа ORACLE_DATAPUMP может быть использован для выгрузки данных в экспорт-файл и последующей перезагрузке их. Выгрузка данных происходит, когда внешняя таблица создана с использованием кляузы "AS":

CREATE TABLE emp_xt
 ORGANIZATION EXTERNAL
  (
    TYPE ORACLE_DATAPUMP
    DEFAULT DIRECTORY test_dir
    LOCATION ('emp_xt.dmp')
  )
  AS SELECT * FROM emp;

Затем данные могут быть запрошены так:

SELECT * FROM emp_xt;

Синтаксис создания указателя на внешнюю таблицу в существующем файле аналогичен, но без кляузы "AS":

DROP TABLE emp_xt;
CREATE TABLE emp_xt (
 EMPNO     NUMBER(4),
 ENAME     VARCHAR2(10),
 JOB       VARCHAR2(9),
 MGR       NUMBER(4),
 HIREDATE  DATE,
 SAL       NUMBER(7,2),
 COMM      NUMBER(7,2),
 DEPTNO    NUMBER(2))
 ORGANIZATION EXTERNAL (
    TYPE ORACLE_DATAPUMP
    DEFAULT DIRECTORY test_dir
    LOCATION ('emp_xt.dmp')
 );
SELECT * FROM emp_xt;

HELP
Опция "HELP=Y" заставит отобразить описание всех доступных параметров:

expdp help=y
Export: Release 10.2.0.3.0 - 64bit Production on Среда, 20 Февраль, 2008 13:57:18                                                  
 Copyright (c) 2003, 2005, Oracle.  All rights reserved.
 Утилита экспорта насоса данных предоставляет механизм для передачи объектов данных
 между базами данных Oracle. Эта утилита вызывается следующей командой:
    Пример: expdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp
 Управление выполнением экспорта может осуществляться вводом команды 'expdp' с заданием после нее
 различных параметров. Для задания параметров служат ключевые слова:
    Формат:  expdp КЛЮЧЕВОЕ СЛОВО=значение или КЛЮЧЕВОЕ СЛОВО=(значение1,значение2,...,значениеN)
    Пример: expdp scott/tiger DUMPFILE=scott.dmp DIRECTORY=dmpdir SCHEMAS=scott
                или TABLES=(T1:P1,T1:P2), если T1 является секционированной таблицей
 USERID должно быть первым параметром в командной строке.
 Ключевое слово        Описание (Знач. по умолчанию)
 ------------------------------------------------------------------------------
 ATTACH                Служит для присоединения к существующему заданию, например, ATTACH [=имя задания].
 COMPRESSION           Уменьшение размера содержимого файла дампа, если допустимо
                       значения ключевого слова: (METADATA_ONLY) и NONE.
 CONTENT               Служит для задания данных для выгрузки. Разрешаются ключевые слова:
                       (ALL), DATA_ONLY и METADATA_ONLY.
 DIRECTORY             Объект 'каталог' для файлов дампов и файлов журналов.
 DUMPFILE              Список результирующих файлов дампов (expdat.dmp),
                       например, DUMPFILE=scott1.dmp, scott2.dmp, dmpdir:scott3.dmp.
 ENCRYPTION_PASSWORD   Ключ пароля для создания столбца зашифрованных данных.
 ESTIMATE              Служит для вычисления оценочных данных заданий. Допускаются следующие ключевые слова:
                       (BLOCKS) и STATISTICS.
 ESTIMATE_ONLY         Служит для вычисления оценочных данных заданий без выполнения экспорта.
 EXCLUDE               Служит для исключения определенных типов объектов, например, EXCLUDE=TABLE:EMP.
 FILESIZE              Служит для задания размера каждого файла дампа в байтах.
 FLASHBACK_SCN        SCN, используемый для установки мгновенного снимка сеанса назад.
 FLASHBACK_TIME        Время, используемое на получение SCN, ближайшее к заданному времени.
 FULL                  Служит для экспорта всей базы данных (N).
 HELP                  Служит для отображения сообщений Справки (N).
 INCLUDE               Служит для включения определенных типов объектов, например, INCLUDE=TABLE_DATA.
 JOB_NAME              Имя создаваемого задания экспорта.
 LOGFILE               Имя файла журнала (export.log).
 NETWORK_LINK          Имя канала связи удаленной базы данных с исходной системой.
 NOLOGFILE             Не записывать файл журнала (N).
 PARALLEL              Служит для изменения числа активных рабочих процессов для текущего задания.
 PARFILE               Служит для задания файла параметров.
 QUERY                 Фраза предиката, используемая для экспорта подмножества таблицы.
 SAMPLE                Процент данных для экспорта;
 SCHEMAS               Служит для перечисления схем экспорта (схема при регистрации).
 STATUS                Частота (сек) с которой должно отслеживаться состояние задания, где
                       значение по умолчанию (0) соответствует отображению нового состояния, когда оно будет доступно.
 TABLES                Служит для указания списка таблиц для экспорта - только для одной схемы.
 TABLESPACES           Служит для указания списка табличных пространств для экспорта.
 TRANSPORT_FULL_CHECK  Служит для проверки сегментов хранения для всех таблиц (N).
 TRANSPORT_TABLESPACES Список табличных пространств, из которых будут выгружены метаданные.
 VERSION               Версия объектов для экспорта. Могут использоваться следующие ключевые слова:
                       (COMPATIBLE), LATEST или любой действительный номер версии базы данных.
 Следующие команды могут использоваться в интерактивном режиме.
 Примечание. Допускается использование сокращений
 Команда               Описание
 ------------------------------------------------------------------------------
 ADD_FILE              Служит для добавления файла дампа в набор файлов дампов.
 CONTINUE_CLIENT       Служит для возврата в режим протоколирования. В случае простоя задание будет запущено заново.
 EXIT_CLIENT           Служит для выхода из сеанса клиента без прекращения выполнения задания.
 FILESIZE              Размер файла по умолчанию (байт) для последующих команд ADD_FILE.
 HELP                  Отображает сводку по интерактивным командам.
 KILL_JOB              Служит для отсоединения и удаления задания.
 PARALLEL              Служит для изменения числа активных рабочих процессов для текущего задания.
                       PARALLEL=<число рабочих процессов>.
 START_JOB             Служит для запуска/возобновления текущего задания.
 STATUS                Частота (сек) с которой должно отслеживаться состояние задания, где
                       значение по умолчанию (0) соответствует отображению нового состояния, когда оно будет доступно.
                       STATUS[=interval]
 STOP_JOB              Служит для нормального завершения выполнения задания и выхода из клиента.
                       STOP_JOB=IMMEDIATE выполняет немедленное завершение
                       задания насоса данных.
impdp help=y
Import: Release 10.2.0.3.0 - 64bit Production on Среда, 20 Февраль, 2008 13:57:18
 Copyright (c) 2003, 2005, Oracle.  All rights reserved.
 Утилита импорта насоса данных предоставляет механизм для передачи объектов данных
 между базами данных Oracle. Эта утилита вызывается следующей командой:
      Пример: impdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp
 Управление выполнением импорта может осуществляться вводом команды 'impdp' с заданием после нее
 различных параметров. Для задания параметров служат ключевые слова:
      Формат:  impdp КЛЮЧЕВОЕ СЛОВО=значение или КЛЮЧЕВОЕ СЛОВО=(значение1,значение2,...,значениеN)
      Пример: impdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp
 USERID должно быть первым параметром в командной строке.
 Ключевое слово        Описание (Знач. по умолчанию)
 ------------------------------------------------------------------------------
 ATTACH                Служит для присоединения к существующему заданию, например, ATTACH [=имя задания].
 CONTENT               Служит для задания данных для загрузки. Разрешаются ключевые слова:
                       (ALL), DATA_ONLY и METADATA_ONLY.
 DIRECTORY             Объект 'каталог', который должен использоваться для файлов дампов, журналов и sql.
 DUMPFILE              Список файлов дампов для выполнения импорта из них (expdat.dmp),
                       например, DUMPFILE=scott1.dmp, scott2.dmp, dmpdir:scott3.dmp.
 ENCRYPTION_PASSWORD   Ключ пароля для доступа к столбцу зашифрованных данных.
                       Этот параметр недействителен для заданий импорта по сети.
 ESTIMATE              Служит для вычисления оценочных данных заданий. Допускаются следующие ключевые слова:
                       (BLOCKS) и STATISTICS.
 EXCLUDE               Служит для исключения определенных типов объектов, например, EXCLUDE=TABLE:EMP.
 FLASHBACK_SCN        SCN, используемый для установки мгновенного снимка сеанса назад.
 FLASHBACK_TIME        Время, используемое на получение SCN, ближайшее к заданному времени.
 FULL                  Служит для выполнения импорта всех данных из источника (Y).
 HELP                  Служит для отображения сообщения Справки (N).
 INCLUDE               Служит для включения определенных типов объектов, например, INCLUDE=TABLE_DATA.
 JOB_NAME              Имя создаваемого задания импорта.
 LOGFILE               Имя файла журнала (import.log).
 NETWORK_LINK          Имя канала связи удаленной базы данных с исходной системой.
 NOLOGFILE             Не записывать файл журнала.
 PARALLEL              Служит для изменения числа активных рабочих процессов для текущего задания.
 PARFILE               Служит для задания файла параметров.
 QUERY                 фраза предиката, используемая для импорта подмножества таблицы.
 REMAP_DATAFILE        Служит для переопределения ссылок на файлы данных во всех операторах DDL.
 REMAP_SCHEMA          Объекты из одной схемы загружаются в другую схему.
 REMAP_TABLESPACE      Объект табличного пространства повторно отображается в другое табличное пространство.
 REUSE_DATAFILES       Табличное пространство будет инициализировано, если оно уже существует (N).
 SCHEMAS               Список схем для импорта.
 SKIP_UNUSABLE_INDEXES Служит для пропуска индексов, для которых было установлено состояние 'Индекс не применим'.
 SQLFILE               Служит для записи всех DDL SQL в указанный файл.
 STATUS                Частота (сек) с которой должно отслеживаться состояние задания, где
                       значение по умолчанию (0) соответствует отображению нового состояния, когда оно будет доступно.
 STREAMS_CONFIGURATION включает загрузку метаданных потоков
 TABLE_EXISTS_ACTION   Действие, которое выполняется, если импортируемый объект уже существует.
                       Допустимые ключевые слова: (SKIP), APPEND, REPLACE и TRUNCATE.
 TABLES                Служит для задания списка таблиц для импорта.
 TABLESPACES           Служит для задания списка табличных пространств для импорта.
 TRANSFORM             Преобразование метаданных, которое должно применяться к соответствующим объектам.
                       Допустимые ключевые слова для преобразований: SEGMENT_ATTRIBUTES, STORAGE
                       OID и PCTSPACE.
 TRANSPORT_DATAFILES   Список файлов данных для импорта в режиме, допускающем транспортировку.
 TRANSPORT_FULL_CHECK  Служит для проверки сегментов хранения для всех таблиц (N).
 TRANSPORT_TABLESPACES Список табличных пространств, из которых будут загружаться метаданные.
                       Действительно только для операций в режиме импорта NETWORK_LINK.
 VERSION               Версия объектов для экспорта. Могут использоваться следующие ключевые слова:
                       (COMPATIBLE), LATEST или любой действительный номер версии базы данных.
                       Действительно только для NETWORK_LINK и SQLFILE.
 Следующие команды могут использоваться в интерактивном режиме.
 Примечание. Допускается использование сокращений
 Команда               Описание (Значение по умолчанию)
 ------------------------------------------------------------------------------
 CONTINUE_CLIENT       Служит для возврата в режим протоколирования. В случае простоя задание будет запущено заново.
 EXIT_CLIENT           Служит для выхода из сеанса клиента без прекращения выполнения задания.
 HELP                  Отображает сводку по интерактивным командам.
 KILL_JOB              Служит для отсоединения и удаления задания.
 PARALLEL              Служит для изменения числа активных рабочих процессов для текущего задания.
                       PARALLEL=<число рабочих процессов>.
 START_JOB             Служит для запуска/возобновления текущего задания.
                       START_JOB=SKIP_CURRENT служит для запуска задания после пропуска
                       всех действий, которые выполнялись, когда задание было остановлено.
 STATUS                Частота (сек) с которой должно отслеживаться состояние задания, где
                       значение по умолчанию (0) соответствует отображению нового состояния, когда оно будет доступно.
                       STATUS[=interval]
 STOP_JOB              Служит для нормального завершения выполнения задания и выхода из клиента.
                       STOP_JOB=IMMEDIATE выполняет немедленное завершение
                       задания насоса данных.

Шрифты

Установка шрифтов

Решение
1) Шрифты, используемые для ШК, можно получить в Утилитах -> Библиотеках.

2) Фильтруем записи с расширением .ttf

3) Выгружаем нажатием на «…» , далее «Выгрузить из БД»

4) Далее открываем локальную папку, из которой производится запуск ВМС,
по умолчанию в папке xlt\ будет выгружен шрифт.
Например: C:\CWMS3000\xlt\

5) Открываем нужный шрифт и устанавливаем


Grid ext field-Создание дополнительного поля

1. В SQL Navigator, в разделе Untitled1 ввести "grid_ext_field" после чего нажимаем с зажатым Ctrl

2. Следуем инструкции из картинки, после чего в новом поле в столбце № пишем любой порядковый номер, в столбце TYP пишем соответствующий тип из словаря №3, в столбце DSC пишем название графы, в столбце FIELD_CONTENT вставляем запрос на вывод данных, например:

(select to_char (bar_code) from nom_barcode  where nomenklatura_n = d.nomenklatura_n and td = kk_common.gettd and  unit_typ = 1)

В приведенном примере выводится шк номенклатуры

3. Нажимаем commit

4. Заходим в CWMS3000-Заказы

4. Следуем инструкции из картинки


Настройка Сервера БД и Сервера Приложений


Необходимые дистрибутивы

Сервер БД
Oracle Database 10G
Дамп базы (схема BOX в случае нового клиента и схема клиента в случае тестового сервера)

Сервер приложений
Oracle Client (10)
SQL Navigator 5.4 (5.5)*
MS Office Excel 2003*
Free PDF (http://freepdf-xp.en.softonic.com/)
Foxit Reader (http://www.foxitsoftware.com/Secure_PDF_Reader/)
Дистрибутив CWMS3000
*отмеченные программные продукты не входят в комплект поставки, но желательны для правильной работы системы.

Настройка сервера БД

Установка Oracle 10g
Checking operating system version: must be 5.0, 5.1, 5.2 or 6.0.    Actual 6.1 Failed <<<<
открыть oraparam.ini и добавить нужную версию в разделе [Certified Versions] через запятую Windows=5.0,5.1,5.2,6.0,6.1 :

В визарде при появлении ошибки поставить галочку "User Verified"

Создание базы данных

Настройка Oracle Listener

Создание табличных пространств и пользователя

select name from v$datafile where rownum<2;

Далее:

create tablespace ACTIONS_01 logging datafile '<путь к файлу>/ACTIONS_01.DBF ' size 250M autoextend on  next 100M maxsize 16984M;
create tablespace ACTIONS_02 logging datafile '<путь к файлу>/ACTIONS_02.DBF ' size 250M autoextend on  next 100M maxsize 16984M;
create tablespace ACTIONS_03 logging datafile '<путь к файлу>/ACTIONS_03.DBF ' size 250M autoextend on  next 100M maxsize 16984M;
create tablespace ACTIONS_04 logging datafile '<путь к файлу>/ACTIONS_04.DBF ' size 250M autoextend on  next 100M maxsize 16984M;
create tablespace BLOB_STORAGE logging datafile '<путь к файлу>/BLOB_STORAGE.DBF ' size 250M autoextend on  next 100M maxsize 16984M;
create tablespace INDX logging datafile '<путь к файлу>/INDX.DBF ' size 250M autoextend on  next 100M maxsize 16984M;
create tablespace ST_BAR_JOBS_INDX logging datafile '<путь к файлу>/ST_BAR_JOBS_INDX.DBF ' size 250M autoextend on  next 100M maxsize 16984M;
create tablespace ST_BAR_JOBS_01 logging datafile '<путь к файлу>/ST_BAR_JOBS_01.DBF ' size 250M autoextend on  next 100M maxsize 16984M;
create tablespace ST_BAR_JOBS_02 logging datafile '<путь к файлу>/ST_BAR_JOBS_02.DBF ' size 250M autoextend on  next 100M maxsize 16984M;
create tablespace ST_BAR_JOBS_03 logging datafile '<путь к файлу>/ST_BAR_JOBS_03.DBF ' size 250M autoextend on  next 100M maxsize 16984M;
create tablespace ST_BAR_JOBS_04 logging datafile '<путь к файлу>/ST_BAR_JOBS_04.DBF ' size 250M autoextend on  next 100M maxsize 16984M;
create tablespace ST_BAR_JOBS_05 logging datafile '<путь к файлу>/ST_BAR_JOBS_05.DBF ' size 250M autoextend on  next 100M maxsize 16984M;
create tablespace ST_BAR_JOBS_06 logging datafile '<путь к файлу>/ST_BAR_JOBS_06.DBF ' size 250M autoextend on  next 100M maxsize 16984M;
create tablespace ST_BAR_JOBS_07 logging datafile '<путь к файлу>/ST_BAR_JOBS_07.DBF ' size 250M autoextend on  next 100M maxsize 16984M;
create tablespace ST_BAR_JOBS_08 logging datafile '<путь к файлу>/ST_BAR_JOBS_08.DBF ' size 250M autoextend on  next 100M maxsize 16984M;
create tablespace ST_BAR_JOBS_09 logging datafile '<путь к файлу>/ST_BAR_JOBS_09.DBF ' size 250M autoextend on  next 100M maxsize 16984M;
create tablespace ST_BAR_JOBS_10 logging datafile '<путь к файлу>/ST_BAR_JOBS_10.DBF ' size 250M autoextend on  next 100M maxsize 16984M;
create tablespace ST_BAR_JOBS_11 logging datafile '<путь к файлу>/ST_BAR_JOBS_11.DBF ' size 250M autoextend on  next 100M maxsize 16984M;
create tablespace ST_BAR_JOBS_12 logging datafile '<путь к файлу>/ST_BAR_JOBS_12.DBF ' size 250M autoextend on  next 100M maxsize 16984M;
create tablespace ST_BAR_JOBS_13 logging datafile '<путь к файлу>/ST_BAR_JOBS_13.DBF ' size 250M autoextend on  next 100M maxsize 16984M;
create tablespace ST_BAR_JOBS_14 logging datafile '<путь к файлу>/ST_BAR_JOBS_14.DBF ' size 250M autoextend on  next 100M maxsize 16984M;
create tablespace ST_BAR_JOBS_15 logging datafile '<путь к файлу>/ST_BAR_JOBS_15.DBF ' size 250M autoextend on  next 100M maxsize 16984M;
create tablespace ST_BAR_JOBS_17 logging datafile '<путь к файлу>/ST_BAR_JOBS_17.DBF ' size 250M autoextend on  next 100M maxsize 16984M;
create tablespace ST_BAR_JOBS_22 logging datafile '<путь к файлу>/ST_BAR_JOBS_22.DBF ' size 250M autoextend on  next 100M maxsize 16984M;
create tablespace ST_BAR_JOBS_32 logging datafile '<путь к файлу>/ST_BAR_JOBS_32.DBF ' size 250M autoextend on  next 100M maxsize 16984M;
create tablespace ST_BAR_JOBS_33 logging datafile '<путь к файлу>/ST_BAR_JOBS_33.DBF ' size 250M autoextend on  next 100M maxsize 16984M;
create tablespace ST_BAR_JOBS_20 logging datafile '<путь к файлу>/ST_BAR_JOBS_20.DBF ' size 250M autoextend on  next 100M maxsize 16984M;

create tablespace STOCK logging datafile '<путь к файлу>/STOCK.DBF ' size 250M autoextend on  next 100M maxsize 16984M;
create tablespace STOCKINDX logging datafile '<путь к файлу>/STOCKINDX.DBF ' size 250M autoextend on  next 100M maxsize 16984M;
ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED PASSWORD_LIFE_TIME UNLIMITED;
CREATE USER *USERNAME*
IDENTIFIED BY *USERPASSWORD*
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP
/
GRANT ALTER SESSION TO *USERNAME*
/
GRANT ALTER SYSTEM TO *USERNAME*
/
GRANT CREATE ANY TRIGGER TO *USERNAME*
/
GRANT CREATE LIBRARY TO *USERNAME*
/
GRANT CREATE PROCEDURE TO *USERNAME*
/
GRANT CREATE SEQUENCE TO *USERNAME*
/
GRANT CREATE SESSION TO *USERNAME*
/
GRANT CREATE SYNONYM TO *USERNAME*
/
GRANT CREATE TABLE TO *USERNAME*
/
GRANT CREATE TRIGGER TO *USERNAME*
/
GRANT CREATE TYPE TO *USERNAME*
/
GRANT CREATE VIEW TO *USERNAME*
/
GRANT CREATE ANY CONTEXT TO *USERNAME*
/

GRANT SELECT ON sys.dba_lock TO *USERNAME*
/
GRANT EXECUTE ON sys.dbms_alert TO *USERNAME*
/
GRANT EXECUTE ON sys.dbms_job TO *USERNAME*
/
GRANT EXECUTE ON sys.dbms_lock TO *USERNAME*
/
GRANT EXECUTE ON sys.dbms_pipe TO *USERNAME*
/
GRANT EXECUTE ON sys.dbms_session TO *USERNAME*
/
GRANT EXECUTE ON sys.dbms_sql TO *USERNAME*
/
GRANT EXECUTE ON sys.dbms_system TO *USERNAME*
/
GRANT EXECUTE ON sys.dbms_crypto TO *USERNAME*
/
GRANT EXECUTE ON sys.dbms_obfuscation_toolkit TO *USERNAME*
/
GRANT SELECT ON sys.v_$lock TO *USERNAME*
/
GRANT SELECT ON sys.v_$process TO *USERNAME*
/
GRANT SELECT ON sys.v_$session TO *USERNAME*
/
GRANT SELECT ON sys.v_$sql TO *USERNAME*
/
GRANT SELECT ON sys.v_$sqltext TO *USERNAME*
/
GRANT SELECT ON sys.v_$parameter TO *USERNAME*
/

CREATE VIEW x$_kglpn AS SELECT * FROM x$kglpn
/
GRANT SELECT ON x$_kglpn TO *USERNAME*
/
CREATE SYNONYM *USERNAME*.x$kglpn FOR SYS.x$_kglpn
/

CREATE VIEW x$_kglob AS SELECT * FROM x$kglob
/
GRANT SELECT ON x$_kglob TO *USERNAME*
/
CREATE SYNONYM *USERNAME*.x$kglob FOR SYS.x$_kglob
/

CREATE VIEW x$_ksuse AS SELECT * FROM x$ksuse
/
GRANT SELECT ON x$_ksuse TO *USERNAME*
/
CREATE SYNONYM *USERNAME*.x$ksuse FOR SYS.x$_ksuse
/

CREATE VIEW v$_session_wait AS SELECT * FROM v$session_wait
/
GRANT SELECT ON v$_session_wait TO *USERNAME*
/
CREATE SYNONYM *USERNAME*.v$session_wait FOR SYS.v$_session_wait
/

alter user *USERNAME* quota unlimited on USERS
/
alter user *USERNAME* quota unlimited on ACTIONS_01
/
alter user *USERNAME* quota unlimited on ACTIONS_02
/
alter user *USERNAME* quota unlimited on ACTIONS_03
/
alter user *USERNAME* quota unlimited on ACTIONS_04
/
alter user *USERNAME* quota unlimited on BLOB_STORAGE
/
alter user *USERNAME* quota unlimited on INDX
/
alter user *USERNAME* quota unlimited on ST_BAR_JOBS_INDX
/
alter user *USERNAME* quota unlimited on ST_BAR_JOBS_01
/
alter user *USERNAME* quota unlimited on ST_BAR_JOBS_02
/
alter user *USERNAME* quota unlimited on ST_BAR_JOBS_03
/
alter user *USERNAME* quota unlimited on ST_BAR_JOBS_04
/
alter user *USERNAME* quota unlimited on ST_BAR_JOBS_05
/
alter user *USERNAME* quota unlimited on ST_BAR_JOBS_06
/
alter user *USERNAME* quota unlimited on ST_BAR_JOBS_07
/
alter user *USERNAME* quota unlimited on ST_BAR_JOBS_08
/
alter user *USERNAME* quota unlimited on ST_BAR_JOBS_09
/
alter user *USERNAME* quota unlimited on ST_BAR_JOBS_11
/
alter user *USERNAME* quota unlimited on ST_BAR_JOBS_12
/
alter user *USERNAME* quota unlimited on ST_BAR_JOBS_13
/
alter user *USERNAME* quota unlimited on ST_BAR_JOBS_14
/
alter user *USERNAME* quota unlimited on ST_BAR_JOBS_22
/
alter user *USERNAME* quota unlimited on ST_BAR_JOBS_32
/
alter user *USERNAME* quota unlimited on ST_BAR_JOBS_17
/
alter user *USERNAME* quota unlimited on ST_BAR_JOBS_15
/
alter user *USERNAME* quota unlimited on ST_BAR_JOBS_33
/
alter user *USERNAME* quota unlimited on ST_BAR_JOBS_10
/
alter user *USERNAME* quota unlimited on STOCK
/
alter user *USERNAME* quota unlimited on STOCKINDX
/
grant administer database trigger to *USERNAME*
/

После установки oracle и создания БД, делаем мультиплексирование control-файлов, на случай разрушения. Для этого:
1) Останавливаем БД. shutdown immediate
2) Клонируем control-файл (делаем из существующего 3 одинаковых с разными именами, из CONTROL01.CTL делаем CONTROL02.CTL и CONTROL03.CTL ).
3) Стартуем БД в режиме nomount. startup nomount/
4) Из-под sysdba выполняем скрипт:
alter system set control_files = 'ПУТЬ_К_ФАЙЛАМ_БД\CONTROL01.CTL','ПУТЬ_К_ФАЙЛАМ_БД\CONTROL02.CTL' ,'ПУТЬ_К_ФАЙЛАМ_БД\CONTROL03.CTL' scope=spfile;
5) Стартуем экземпляр. startup.
6) Дабы убедиться, что теперь задействованы три управляющих файла, из-под sysdba выполняем select * from V$CONTROLFILE, запрос должен вернуть три наших контролфайла.

Создание директории для мониторинга файлов трассировки

*под DBA выясняем где лежат файлы трассировки на сервере
SELECT VALUE FROM V$DIAG_INFO WHERE NAME = 'Default Trace File'
/*'/u01/app/oracle/diag/rdbms/dkn/DKN/trace/'*/
*под DBA создаем директорию и даем гранты пользователю ТОЖЕ
create or replace directory TRACE_FILES as '/u01/app/oracle/diag/rdbms/dkn/DKN/trace/'
/
grant read,write on directory TRACE_FILES to sys; 
/
GRANT READ,write ON DIRECTORY TRACE_FILES TO DBA; 
/
grant read,write on directory TRACE_FILES to *USER_NAME*; 
/
declare
F1 UTL_FILE.FILE_TYPE; 
 vexists  boolean ; 
   vfile_length integer ;  
   vblocksize integer ; 
begin

-- F1 := UTL_FILE.FOPEN( 'TRACE_FILES', 'DKN_ora_59370.trc', 'w' ) ;
 --      UTL_FILE.PUTF(F1, 'Look, Im writing to a file!!!\n'); 
 --      UTL_FILE.FCLOSE(F1); 

 UTL_FILE.FGETATTR(
   'TRACE_FILES', 'DKN_ora_59370.trc' ,
   vexists    , 
   vfile_length , 
   vblocksize   );
  if vexists then  DBMS_OUTPUT.Put_Line('true '|| vfile_length||' '||vblocksize );
             else  DBMS_OUTPUT.Put_Line('false '|| vfile_length||' '||vblocksize ); end if;

end;

Устранение несовместимостей кодировок

Региональные настройки Win

Язык системы по умолчанию
Для нерусскоязычных ОС проверить:

Прочие кодировки
Для решения проблемы с отображением шрифтов в CWMS3000 (системные сообщения, всплывающие подсказки) необходимо изменить значения параметров «1250» и «1252», которые находятся в ветке реестра HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Nls \ CodePage, с «c_1250.nls» на «c_1251.nls» и с «c_1252.nls» на «c_1251.nls» соответственно.

Для этого

После перезагрузки проблема с неправильным отображением шрифтов должна исчезнуть.

Кодировка Oracle-клиента

Важно изменить значение параметра NLS_Lang на том компе, откуда производится импорт. На машинах клиента тоже можно настроить параметр.

Импорт дампа БД (схемы дистрибуции BOX)

Скрипты после импорта

CREATE OR REPLACE CONTEXT CTX_LANG USING *USERNAME*.KK_LANG
/
CREATE OR REPLACE CONTEXT CTX_REP USING *USERNAME*.KK_REP
/
CREATE OR REPLACE CONTEXT ctx_st_barcode USING *USERNAME*.KK_ST_CTX
/
!!!! Важно заменить *ЮЗЕРНЕЙМ* на имя пользователя

begin dbms_job.submit(:job,'BEGIN DBMS_STATS.GATHER_SCHEMA_STATS(ownname => ''ЮЗЕРНЕЙМ'',estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE,method_opt => ''FOR ALL COLUMNS SIZE AUTO'',CASCADE => TRUE); commit; end;',trunc(sysdate,'DAY')+6,'trunc(sysdate,''DAY'')+6'); end;
/

begin dbms_job.submit(:job,'begin KK_ST_ALLOC.RunAllocPeriodicalProc; commit; end;',trunc(SYSDATE)+1,'trunc(SYSDATE)+1'); end;
/

begin dbms_job.submit(:job,'declare  
vJobN integer;
begin  

FOR J In (  
   select distinct c.auto_reserve_grp as grp
     from contragent c where 
       c.auto_reserve_grp is not null
  and sysdate between c.fd and c.td
  and not exists (select null from  
   user_jobs j where WHAT like ''/*AutoReserveGRP=''||c.auto_reserve_grp||''*/%'' )
  order by 1
) LOOP

 dbms_job.Submit(vJobN,''/*AutoReserveGRP=''||j.grp||''*/begin KK_ST_DOC_NEW.StDocOutAllToReserve(''|| j.grp ||''); commit; end;'' );
 kk_common.err_log(''AutoReserveGRP.StDocOutAllToReserve'',vJobN,''RUN JOB''); 
 commit; 
END LOOP;

end;',trunc(sysdate,'mi') + 5/1440,'trunc(sysdate,''mi'') + 5/1440'); end;
/

begin dbms_job.submit(:job,'begin kk_mail.ExternalMailSend; end;',SYSDATE + 5/1440,'SYSDATE + 5/1440'); end;
/

begin dbms_job.submit(:job,'declare
  vStr varchar2(2500);
  vNextExecute date;
  vMail integer;
  vMails list_const.val%type := kk_const.GetConstV(''NotifyJob.Error.Notify'',sysdate,0);
begin
  FOR J In (select rowid as rd,PL_SQL,NAME
             from notify_job
               where sysdate >= next_execute
               and sysdate between fd and td ) LOOP
      begin         
      vStr := j.PL_SQL;
      execute immediate replace(vStr,chr(13),'' '')
      using out vNextExecute;
      commit;
        EXCEPTION
          WHEN others THEN
          kk_common.err_log(''NOTIFY_JOB'',SQLCODE,substr(j.NAME||'' ''||SQLERRM,1,255));
          vMail := kk_mail2.ExternalMailPutInQueue(vMails,''ERROR.USER_JOBS.''||j.NAME,substr(j.NAME||'' ''||SQLERRM,1,2500));
          commit;
          select sysdate + 30/1440 into vNextExecute from dual;
      end;
    update notify_job
     set next_execute = vNextExecute
      where rowid = J.RD;  
    commit;
  END LOOP;
end;',sysdate + 2/1440,'sysdate + 2/1440'); end;
/

commit;
/

Создание триггера Audit_ddl

CREATE OR REPLACE TRIGGER audit_ddl
BEFORE
  DDL
ON DATABASE
declare
l_osuser  VARCHAR2(100);
l_program VARCHAR2(100);
sql_text ora_name_list_t;
stmt VARCHAR2(2000);
l_cnt pls_integer;
vLocator CLOB;
vEDITOR_IP varchar2(50);
vEDITOR_DSC varchar2(200);
vLastTD date;
begin

   IF (ora_dict_obj_owner = '*USERNAME*')
      THEN
     IF  ora_sysevent in ('ALTER','ANALYZE') and ora_dict_obj_type in ('FUNCTION','PACKAGE','PACKAGE BODY','TRIGGER')  
      or ora_dict_obj_type in ('TYPE') THEN
    NULL;
    ELSE

          select upper(osuser), upper(program) into l_osuser, l_program from v$session
            WHERE AUDSID=SYS_CONTEXT('USERENV','SESSIONID');

        if ora_dict_obj_type in ('PACKAGE','PACKAGE BODY') then  
         begin  
          select p.EDITOR_IP,p.EDITOR_DSC ,nvl(last_td,sysdate) into vEDITOR_IP
          ,vEDITOR_DSC , vLastTD
           from  *USERNAME*.CIS_PACKAGE p
            where upper(p.name) = upper(ora_dict_obj_name) ;

            if vEDITOR_IP is null or vLastTD + 2 < sysdate then

               update *USERNAME*.CIS_PACKAGE
                set EDITOR_IP = SYS_CONTEXT('userenv', 'IP_ADDRESS')
                 , EDITOR_DSC = l_program || '; l_osuser='||l_osuser||'; '|| to_char(sysdate,'dd.mm.yyyy hh24:mi:ss')
                 ,last_td = sysdate
                  where upper(name) = upper(ora_dict_obj_name) ;
            else
             if  nvl(vEDITOR_IP,'NULL') != nvl(SYS_CONTEXT('userenv', 'IP_ADDRESS'),',') then
              null;

             end if;

            end if; --if vEDITOR_IP is null then 

           EXCEPTION
              WHEN NO_DATA_FOUND THEN
             null; 

          end;

          end if; --if ora_dict_obj_type in ('PACKAGE','PACKAGE BODY') then   

           insert into *USERNAME*.CIS_ddl_changes (N, owner, name, type, osuser, program, FD, action, STATUS) values
           (*USERNAME*.sq_CIS_DDL_CHANGES.nextval, ora_dict_obj_owner, ora_dict_obj_name,
            ora_dict_obj_type, l_osuser, l_program, sysdate, ora_sysevent,0);

declare
LOCATOR1 clob; 
dest_offset    INTEGER := 1;
src_offset     INTEGER := 1;
amt            INTEGER ;
begin

DBMS_LOB.CREATETEMPORARY (LOCATOR1,TRUE,DBMS_LOB.SESSION); 

           l_cnt := ora_sql_txt(sql_text);
     for i in 1..l_cnt loop
     if (Length(sql_text(i)) <= 2000) and
         instr(sql_text(i), 'COMPILE BODY REUSE SETTINGS')>0 then
        null;
       else
     dbms_lob.WriteAppend(LOCATOR1, Length(sql_text(i)),sql_text(i));

     end if;
     end loop;

           INSERT INTO *USERNAME*.CIS_DDL_CHANGES_CLOB (CIS_DDL_CHANGES_N,TEXT) VALUES (*USERNAME*.sq_CIS_DDL_CHANGES.currval,EMPTY_CLOB())  
              RETURNING TEXT into vLocator ;     
     amt :=   DBMS_LOB.getlength(LOCATOR1);       
    dbms_lob.copy(vLocator,LOCATOR1,amt,dest_offset,src_offset);            

end;

   END IF;     --IF  ora_sysevent ='ALTER'
   END IF;   
end;
/

Выполнить под пользователем SYS "предотвращение повторного входа с терминала"

-- Start of DDL Script for Trigger TST.TRG_ON_LOGON
-- Generated 20.02.2015 14:59:44 from TST@TST

CREATE OR REPLACE TRIGGER trg_on_logon
 AFTER
  LOGON
 ON DATABASE
declare
vCnt integer;
begin
 if lower(SYS_CONTEXT('userenv', 'TERMINAL')) like lower('%mobile%') then

    select/*+ INDEX(a cis_logon_log_s)*/ 
    count(1) into vCnt
      from
   v$session s
    join V$process p on (s.pADDR = p.addr )
    join  cis_logon_log a on (  a.AUDSID = s.AUDSID  and a.SESSIONID = s.SID and a.SERIAL = s.SERIAL# )
  where a.ip =  SYS_CONTEXT('userenv', 'IP_ADDRESS')
  and s.status != 'KILLED';

 if vCnt > 0 then
   RAISE_application_error(-20000,'Нельзя запустить более двух сессий одновременно!');
 end if; -- if vCnt > 0 then 

 end if; -- if lower(SYS_CONTEXT('userenv', 'TERMINAL')) like lower('%mobile%') then 

end trg_on_logon;
/

-- End of DDL Script for Trigger TST.TRG_ON_LOGON

/

Для Oracle 11G рассылки почты в случае ошибки "отказ в доступе к сети в соответствии со списком контроля доступа (ACL)"

BEGIN
   DBMS_NETWORK_ACL_ADMIN.CREATE_ACL (
    acl          => 'smtp_mail.xml',
    description  => 'Permissions to access smtp_mail',
    principal    => '*USERNAME*', -- ИМЯ пользователя БД
    is_grant     => TRUE,
    privilege    => 'connect');
   COMMIT;
END;

create role role_smtp_mail;
/

BEGIN
   DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE (
    acl          => 'smtp_mail.xml',                
    principal    => 'ROLE_SMTP_MAIL',
    is_grant     => TRUE, 
    privilege    => 'connect',
    position     => null);
   COMMIT;
END;
/

grant  role_smtp_mail to *USERNAME*;
/

BEGIN
   DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL (
    acl          => 'smtp_mail.xml',                
    host         => '192.168.4.2'); -- smtp сервер!!!!
   COMMIT;
END;
/
==Добавить другого пользователя в ACL лист (если пользователей БД, использующих отправку писем - несколько)==
BEGIN
  DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(
    acl => 'smtp_mail.xml', 
    principal => '*USERNAME2*', --имя второго пользователя
    is_grant => TRUE, 
    privilege => 'connect');
END;
/

Настройка сервера приложений

Установка Oracle Client

Правка пакетов

ПЕРЕД ЗАПУСКОМ СЛУЖБЫ ИЛИ CWMS3000 обязательно изменить пакеты kk_rep,kk_lang:

kk_rep:
  procedure assign(name varchar2, value varchar2) is
      begin
        dbms_session.set_context('ctx_rep', name, value);
      END assign;

kk_lang:
   procedure assign(name varchar2, value varchar2) is
      begin
         dbms_session.set_context('ctx_lang', name, value);
      END assign;

Установка CWMS3000

Разворачивание StandBy сервера oracle штатными средствами data guard broker.

Необходимые условия для разворачивания

Подготовка резервного сервера

hint: Для удобства навигации между RDP-подключениями основного и резервного серверов, рекомендуется установить в качестве "обоев" рабочего стола резервного сервера ярко-красный фон.

Установка СУБД oracle и создание резервной БД.

Запускаем инсталлятор, выбираем метод установки - advanced, нажимаем "next"

тип установки - Enterprise, нажимаем "next"

В следующем окне - Name оставляем по умолчанию, Path должен быть идентичен пути установки БД на основном сервере

В пунктах, имеющих статус "error", проставляем галочки.

Статус должен поменять на " user verified", нажимаем "next"

В следующем окне выбираем "Create a Database", нажимаем "next".

В следующем окне выбираем Advanced, жмем "next".

В следующем окне оставляем значения по умолчанию, жмем "next".

В следующем окне проверяем правильность введённых параметров и нажимаем "Install"

После окончания установки автоматически откроется Database Configuration Assistant. В первом окне выбираем General Purpose, нажимаем "next".

В следующем окне вводим Global Database и SID. Они должны быть ИДЕНТИЧНЫ основной базе.

В следующем окне оставляем всё без изменения.

В следующем окне вводим пароль для системных учётных записей oracle. Он должен быть ИДЕНТИЧЕН паролю на основной базе. Нажимаем "next".

В следующем окне оставляем все данные без изменения, нажимаем "next".

В следующем окне снимаем галочку "Specify Flash Recovery Area", ставим галочку "Enable Archiving, нажимаем кнопку Edit Archive Mode Parameters

В открывшемся окне указываем ПОЛНЫЙ путь к папке с архивными логами. Путь должен быть идентичен пути к папке на основном сервере. Если папки для архивных логов на резервном сервере не существует - её необходимо создать. Имя папки и её местонахождение на локальном диске должны быть полностью идентичными имени и местонахождению на основном сервере. Нажимаем "ok" и "next".

В следующем окне снимаем галочку "Sample Schemas", нажимаем "next"

В следующем окне ставим флаги Custom и Manual.
Единицы измерения ВЕЗДЕ проставляем M Bytes. Рекомендуемые значения:
Shared Pool: 128 M Bytes
Buffer Cache: Указываем размер, исходя из оставшейся свободной оперативной памяти, за вычетом памяти, необходимой для корректной работы операционной системы. Для резервного сервера, имеющего 4 Гб оперативной памяти (как на скриншоте), оптимальным размером Buffer Cache будет 2 Гб, для сервера, имеющего, например, 32 Гб оперативной памяти, оптимальным будет 25 Гб.
Java Pool: 128 M Bytes
Large Pool: 512 M Bytes
PGA Size: 256 M Bytes

Далее на вкладке Character Sets устанавливаем флаг "Choose from the list of character sets", Утанавливаем параметры, согласно скриншоту. Нажимаем кнопку "next".

В следующем окне оставляем все значения по умолчанию и нажимаем next.

В следующем окне оставляем все значения по умолчанию и нажимаем Готово.

В процессе создания БД и применения настроек, может появиться ошибка старта БД. Не пугаемся, нажимаем ОК.

По завершению установки, нажимаем next, в следующем окне - exit.

Далее заходим в диспетчер служб, проверяем, чтобы службы oracle были созданы, и их состояние было как на скриншоте.

Запускаем командную строку, вводим команду sqlplus. Логин sys as sysdba, пароль - указанный при установке. Если все вышеописанные действия были проведены верно - мы увидим информацию о версии СУБД и строку ввода команд SQL.

Прописываем уникальное имя базы, по которому data guard broker будет её идентифицировать, для резервного сервера это bwms. Для этого вводим команду:
alter system set db_unique_name='bwms' scope=spfile;
Включаем data guard broker. Для этого вводим команду:
alter system st dg_broker_start=true scope=both;

Останавливаем БД. Для этого вводим команду
shutdown immediate

Удаляем все файлы из каталога БД

Останавливаем службу OracleOraDb10g_home1TNSListener
Редактируем файл E:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\tnsnames.ora согласно тексту ниже, указываем реальные ip-адреса

WMS =
 (DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = ip-адрес основного сервера)(PORT = 1521))
   )
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = WMS)
   )
 )
BWMS =
 (DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = ip-адрес резервного сервера)(PORT = 1521))
   )
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = bwms)
   )
 )
wms_XPT = 
(DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = ip-адрес основного сервера)(PORT = 1521))
   )
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = wms)
   )
  )
wms_DGB = 
(DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = ip-адрес основного сервера)(PORT = 1521))
   )
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = wms)
   )
 )
wms_DGMGRL = 
(DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = ip-адрес основного сервера)(PORT = 1521))
   )
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = wms)
   )
 )
)

Редактируем файл E:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\listener.ora
Значения, которые необходимо изменить выделены красным

Стартуем службу OracleOraDb10g_home1TNSListener

Подготовка основного сервера

На основном сервере запускаем sqlplus, логин sys as sysdba
Вводим команду
ALTER DATABASE FORCE LOGGING;

Создаём REDO логи, которые в последствии будет использовать резервный сервер. Для этого вводим команду, где указываем путь к папке с ораклом:
ALTER DATABASE ADD STANDBY LOGFILE GROUP 10 ('P:\oracle\product\10.2.0\oradata\VPI\log1c.rdo','P:\oracle\product\10.2.0\oradata\VPI\log2c.rdo','P:\oracle\product\10.2.0\oradata\VPI\log3c.rdo') SIZE 50M;
Прописываем уникальное имя базы, по которому data guard broker будет её идентифицировать, для основного сервера это wms. Для этого вводим команду:
alter system set db_unique_name='wms' scope=spfile;
Включаем data guard broker. Для этого вводим команду:
alter system st dg_broker_start=true scope=both;

Останавливаем службу OracleOraDb10g_home1TNSListener
Редактируем файл E:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\tnsnames.ora согласно тексту ниже, указываем реальные ip-адреса

WMS =
 (DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = ip-адрес основного сервера)(PORT = 1521))
   )
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = wms)
   )

 )
bwms = 
(DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = ip-адрес резервного сервера)(PORT = 1521))
   )
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = bwms)
   )
 )
bwms_XPT = 
(DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = ip-адрес резервного сервера)(PORT = 1521))
   )
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = bwms)
   )
 )
bwms_DGB = 
(DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = ip-адрес резервного сервера)(PORT = 1521))
   )
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = bwms)
   )
 )
bwms_DGMGRL = 
(DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = ip-адрес резервного сервера)(PORT = 1521))
   )
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = bwms)
   )
 )

)

Редактируем файл E:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\listener.ora
Значения, которые необходимо изменить выделены красным

Стартуем службу OracleOraDb10g_home1TNSListener
Принудительно создаём логи, чтобы в них записались последние транзакции. Для этого вводим команду:
alter system switch logfile; Для надежности - три раза, и СРАЗУ ЖЕ останавливаем базу командой:
shutdown immediate

Стартуем базу в режиме mount. Для этого вводим команду:
startup mount
Создаём контрол-файл для резервного сервера. Для этого вводим команду:
ALTER DATABASE CREATE STANDBY CONTROLFILE AS 'C:\boston.ctl'

Дважды клонируем полученный файл и переименовываем его.
В результате из файла boston.ctl' должно получиться 3 идентичных файла: CONTROL01.CTL, CONTROL02.CTL, CONTROL01.CTL.
Они нам пригодятся чуть позже.
Останавливаем БД. Для этого вводим команду:
shutdown immediate
Останавливаем службу OracleService
Копируем всё содержимое папки E:\oracle\product\10.2.0\oradata\Имя_Инстанса КРОМЕ ФАЙЛОВ С РАСШИРЕНИЕМ .CTL в аналогичную папку резервного сервера.

Далее в ту же папку РЕЗЕРВНОГО сервера копируем контрол-файлы, полученные в результате создания и клонирования файла boston.ctl (см. выше)
Запускаем службу OracleService
Подготовка основной БД закончена, можно продолжать работу в ней в штатном режиме.

Создание и настройка конфигурации data guard broker

Запускаем БД на РЕЗЕРВНОМ сервере. Для этого вводим команду:
startup
По результатам выполнения :

Далее нам необходимо проверить связь между серверами в рамках алиасов. Для этого на ОСНОВНОМ СЕРВЕРЕ открываем командную строку и вводим команду:
tnsping bwms
результатом команды должен быть отчет об успешном прохождении пинга.

точно таким же образом пингуем остальные алиасы из tnsnames.ora:

Создаём конфигурацию, добавляем в конфигурацию наши базы, устанавливаем свойства, благодаря которым при добавлении файлов в основную базу, они автоматически будут создаваться на резервной.
Для этого выполняем скрипт:
CREATE CONFIGURATION 'SID БД_BACKUP' AS
PRIMARY DATABASE IS 'wms'
CONNECT IDENTIFIER IS wms;
ADD DATABASE 'bwms' AS
CONNECT IDENTIFIER IS bwms
MAINTAINED AS PHYSICAL;
EDIT DATABASE 'bwms' SET PROPERTY 'StandbyFileManagement'='AUTO';
EDIT DATABASE 'wms' SET PROPERTY 'StandbyFileManagement'='AUTO';
Для того, чтобы убедиться в том, что конфигурация успешно создалась, вводим команду:
show configuration

Далее включаем конфигурацию, вводим команду:
enable configuration
После этого начнется процесс копирования логов с основного сервера на резервный и их применение. Процесс может занимать различное время, в зависимости от того, насколько основная база "убежала вперед" от резервной, после её включения (окончание П.2).
Проверяем валидность конфигурации командой:
show configuration
При успешной синхронизации серверов команда должна возвратить "SUCCESS"

Далее смотрим очередь на применение логов к резервной базе(она должна быть пустая), для этого вводим команду:
SHOW DATABASE 'bwms' 'RecvQEntries';
И очередь на передачу логов с основного сервера(должно быть одно значение):
SHOW DATABASE 'wms' 'SendQEntries'


- Выгрузка

- Загрузка

- Синхронизация


- Проведение инвентаризации по бумажной технологии

- Проведение инвентаризации с помощью ТСД


- Редактирование сотрудников.


- Инструкции

- Скрыть переход через доступ

- Список актуальных ТСД на ОС Android


C клиентом Oracle


Инструкция подключения к БД для ПК Windows
Для начала нужно установить Oracle 10.2.0.3
1. Отключаем UAC в Windows

2. Устанавливаем режим совместимости на установочном файле setup.exe

3. Запускаем установочный файл Setup.exe

4. Next

5. Выбираем Administrator

6. Путь оставляем по умолчанию
7. Проверяем нет ли ошибок

8. Install

9. Далее настраиваем соединение. Галочку не ставим, жмём следующий.

10. Оставляем всё как есть, жмём следующий.

11. Задаём имя XX- где XX название инстанса.

12. Оставляем TCP, жмём следующий.

13. Прописываем ip адрес БД

14. Ставим галочку «Yes, perform a test»

15. Нажимаем Change Login. Прописываем USERNAME и PASSWORD от БД, далее жмём следующий.

16. Жмём следующий

17. Оставляем галочку No, жмём следующий.

18. Подключение успешно добавлено. Жмём следующий.

19. Нажимаем готово

20. Установка Oracle завершена. Нажимаем Exit.

21. После установки Oracle, создаём папку на диске С, выдаём полные права на папку, под названием CWMS3000, кладём в неё файл cwms3000.exe и запускаем.

Так же необходимо выдать права на реестр и права на создание глобальных объектов.
Выдача прав на создание глобальных объектов.
• Заходим в локальную политику безопасности.
Для этого с правами администратора нажимаем Пуск, в строке поиска набираем слово "локальная", запускаем Локальную политику безопасности.
• Нажимаем в Локальные политики/Назначение прав пользователя.
• Находим тут Создание глобальных объектов, нажимаем два раза и добавляем проблемного пользователя.
• Применить. Ок.

22. После выгрузки первых dll файлов таких как menu.dll и midas.dll, необходимо зарегистрировать midas.dll под правами локального администратора.
• Запускаем командную строку из-под администратора
• Прописываем следующее «regsvr32 путь до файла\midas.dll»
23. Указываем имя пользователя и пароль от БД, строка соединения SSID

24. Авторизовываемся в системе


Выберите файл ниже и нажмите "Скачать"
Или просто нажмите на эту картинку -


- Создание доступов

Выберите файл ниже и нажмите "Скачать"
Или просто нажмите на эту картинку -


- Добавление доступов

Выберите файл ниже и нажмите "Скачать"
Или просто нажмите на эту картинку -


- Скрыть переход в ТСД через доступ

Выберите файл ниже и нажмите "Скачать"
Или просто нажмите на эту картинку -


Print

Инструкция по настройке сервиса печати

Выгрузка из библиотеки
1) Необходимо зайти в утилиты –> библиотеки.

2) Найти в поиске PrintServ.exe и выгрузить нажав на «…»

3) После того, как выгрузили заходим в корневую папку с программой CWMS.
Копируем файл PrinServ.exe в отдельную папку. (Например, PrintServ на диске С)

Запуск в режиме приложения
Для работы службы нам необходимо запустить PrintServ.exe в режиме приложения для выгрузки всех модулей, которые используется при работе сервиса.
1) Запускаем PrintServ.exe

Если так не запускается, то запускаем из командной строки:

2) После запуска, выбираем инстанс

3) Авторизовываемся

4) Ждём примерно 15 минут, для выгрузки всех модулей, после чего закрываем.

Создание службы
1) Открываем командную строку от имени администратора

2) Прописываем путь до файла PrintServ.exe и команду /install, после чего нажимаем enter

3) Служба успешно создана

4) Открываем службы

5) Ищем нами созданную службу

6) Открываем её свойства и переходим во вкладку «Вход в систему»

7) Авторизовываемся под учётной записью с правами администратора, поставив галочку и задав верные данные от неё

Реестр службы
1) Нажимаем Win + R, открывается выполнить

2) Выполняем команду regedit

3) Открывается реестр

4) Переходим по пути HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SPrintServ

5) Открываем ImagePath

Прописываем после пути такие значения, как:
• BaseName – имя секции, из которой брать значения параметров ресстра
Например “BaseName=TST-TST” – где 1 TST – это база, 2 TST – это пользователь
• TaskGroup – группа задач
Например, если необходимо распараллелить dpc задачи на несколько служб
6) Так как мы создали 1 службу, то прописываем только значение BaseName

Автологин
1) Делаем автологин, для этого в 6 пункте необходимо прописать VTR356

Права на папку
Так же необходимо дать права на папку, в которой лежит PrintServ.exe

Доп сведения
1.Возможны проблемы при печати в Excel в связке Excel 2007 + Windows Server 2008.
Ошибка Service cannot be started. System.Runtime.InteropServices.COMException (0x800A03EC): Microsoft Office Excel cannot access the file .......
Для исправления ошибки необходимо: создать папку C:\Windows\SysWOW64\config\systemprofile\Desktop и/или C:\Windows\System32\config\systemprofile\Desktop (в зависимости от разрядности вашей системы)

2. В случае проблем запуска Excel из приложения в случае работы из под сервиса необходимо: Заходим в локальную политику безопасности.Для этого с правами администратора нажимаем Пуск, в строке поиска набираем волшебное слово "локальная", запускаем Локальную политику безопасности.Здесь тыкаем в Локальные политики/Назначение прав пользователя. Находим тут Создание глобальных объектов, кликаем два раза и добавляем проблемного пользователя. Применить.


Инструкция по пользованию сервисом RedMine

Оглавление

Полное описание статусов

Черновик - Начальный статус, который принимает новая созданная задача. Может быть отменена. Сотрудниками технической поддержки проводится первичный анализ для последующего принятия в работу и переводится в статус «Поставлена» или «В работе». При недостаточном объеме информации переводится в статус «На уточнении».
Поставлена - Задача, готовая к принятию в работу и находится на отделе-исполнителе или сотруднике. В этом статусе не требуется совершать какие-либо действия с задачей, так как это внутренний статус компании.
В работе – Задача находится в работе. В этом статусе не требуется совершать какие-либо действия с задачей, так как это внутренний статус компании.
На уточнении - При смене на данный статус задача переводиться на пользователя, от которого требуется получить дополнения. После уточнений переведите задачу на сотрудника, который совершил запрос информации. Если после уточнения вопрос был решен, то переведите задачу в статус «Принята клиентом».
Клиент уведомлен – Задача протестирована сотрудниками компании и передана клиенту.
Не принята клиентом – Статус означает, что задача не выполнена. Клиент переводит задачу на группу «Техническая поддержка (Линия1)».
Возвращена на доработку – После выявления клиентом, каких-либо ошибок или недоработок, она возвращается на доработку сотрудником компании. В этом статусе не требуется совершать какие-либо действия с задачей, так как это внутренний статус компании.
Принята клиентом – Конечный статус, в котором задача закрывается.
Приостановлена – Временно приостановлена, если необходимо вернуть в работу, то клиенту нужно сообщить об этом в техническую поддержку по средству почты или телефона.
Отменена - Статус означает, что задача не актуальна и выполнять не нужно.

Постановка задачи

Шаблон постановки задач

Тема (например "Заказ не переводится в статус собран")

Описание

Так же можете выбрать файл для прикрепления к задаче.

Поля трекер, статус, приоритет, назначена выставляются автоматически.

Задача на уточнении

Так же по необходимости можете прикрепить файл.

Задача в статусе клиент уведомлён


ResponsibleStorage


WinSW

Рассылка

DPC

Print

Android

DPCWatcher


Настройка CWMS

- Без клиента Oracle

- C клиентом Oracle


Настройка Сервера БД и Сервера Приложений


Необходимые дистрибутивы


Сервер БД Сервер приложений

*отмеченные программные продукты не входят в комплект поставки, но желательны для правильной работы системы.

Настройка сервера БД


Установка Oracle 10g

Checking operating system version: must be 5.0, 5.1, 5.2 or 6.0.    Actual 6.1 Failed <<<<
открыть oraparam.ini и добавить нужную версию в разделе [Certified Versions] через запятую Windows=5.0,5.1,5.2,6.0,6.1 :
В визарде при появлении ошибки поставить галочку "User Verified" Создание базы данных Настройка Oracle Listener Создание табличных пространств и пользователя
select name from v$datafile where rownum<2;

Далее:

create tablespace ACTIONS_01 logging datafile '<путь к файлу>/ACTIONS_01.DBF ' size 250M autoextend on  next 100M maxsize 16984M;
create tablespace ACTIONS_02 logging datafile '<путь к файлу>/ACTIONS_02.DBF ' size 250M autoextend on  next 100M maxsize 16984M;
create tablespace ACTIONS_03 logging datafile '<путь к файлу>/ACTIONS_03.DBF ' size 250M autoextend on  next 100M maxsize 16984M;
create tablespace ACTIONS_04 logging datafile '<путь к файлу>/ACTIONS_04.DBF ' size 250M autoextend on  next 100M maxsize 16984M;
create tablespace BLOB_STORAGE logging datafile '<путь к файлу>/BLOB_STORAGE.DBF ' size 250M autoextend on  next 100M maxsize 16984M;
create tablespace INDX logging datafile '<путь к файлу>/INDX.DBF ' size 250M autoextend on  next 100M maxsize 16984M;
create tablespace ST_BAR_JOBS_INDX logging datafile '<путь к файлу>/ST_BAR_JOBS_INDX.DBF ' size 250M autoextend on  next 100M maxsize 16984M;
create tablespace ST_BAR_JOBS_01 logging datafile '<путь к файлу>/ST_BAR_JOBS_01.DBF ' size 250M autoextend on  next 100M maxsize 16984M;
create tablespace ST_BAR_JOBS_02 logging datafile '<путь к файлу>/ST_BAR_JOBS_02.DBF ' size 250M autoextend on  next 100M maxsize 16984M;
create tablespace ST_BAR_JOBS_03 logging datafile '<путь к файлу>/ST_BAR_JOBS_03.DBF ' size 250M autoextend on  next 100M maxsize 16984M;
create tablespace ST_BAR_JOBS_04 logging datafile '<путь к файлу>/ST_BAR_JOBS_04.DBF ' size 250M autoextend on  next 100M maxsize 16984M;
create tablespace ST_BAR_JOBS_05 logging datafile '<путь к файлу>/ST_BAR_JOBS_05.DBF ' size 250M autoextend on  next 100M maxsize 16984M;
create tablespace ST_BAR_JOBS_06 logging datafile '<путь к файлу>/ST_BAR_JOBS_06.DBF ' size 250M autoextend on  next 100M maxsize 16984M;
create tablespace ST_BAR_JOBS_07 logging datafile '<путь к файлу>/ST_BAR_JOBS_07.DBF ' size 250M autoextend on  next 100M maxsize 16984M;
create tablespace ST_BAR_JOBS_08 logging datafile '<путь к файлу>/ST_BAR_JOBS_08.DBF ' size 250M autoextend on  next 100M maxsize 16984M;
create tablespace ST_BAR_JOBS_09 logging datafile '<путь к файлу>/ST_BAR_JOBS_09.DBF ' size 250M autoextend on  next 100M maxsize 16984M;
create tablespace ST_BAR_JOBS_10 logging datafile '<путь к файлу>/ST_BAR_JOBS_10.DBF ' size 250M autoextend on  next 100M maxsize 16984M;
create tablespace ST_BAR_JOBS_11 logging datafile '<путь к файлу>/ST_BAR_JOBS_11.DBF ' size 250M autoextend on  next 100M maxsize 16984M;
create tablespace ST_BAR_JOBS_12 logging datafile '<путь к файлу>/ST_BAR_JOBS_12.DBF ' size 250M autoextend on  next 100M maxsize 16984M;
create tablespace ST_BAR_JOBS_13 logging datafile '<путь к файлу>/ST_BAR_JOBS_13.DBF ' size 250M autoextend on  next 100M maxsize 16984M;
create tablespace ST_BAR_JOBS_14 logging datafile '<путь к файлу>/ST_BAR_JOBS_14.DBF ' size 250M autoextend on  next 100M maxsize 16984M;
create tablespace ST_BAR_JOBS_15 logging datafile '<путь к файлу>/ST_BAR_JOBS_15.DBF ' size 250M autoextend on  next 100M maxsize 16984M;
create tablespace ST_BAR_JOBS_17 logging datafile '<путь к файлу>/ST_BAR_JOBS_17.DBF ' size 250M autoextend on  next 100M maxsize 16984M;
create tablespace ST_BAR_JOBS_22 logging datafile '<путь к файлу>/ST_BAR_JOBS_22.DBF ' size 250M autoextend on  next 100M maxsize 16984M;
create tablespace ST_BAR_JOBS_32 logging datafile '<путь к файлу>/ST_BAR_JOBS_32.DBF ' size 250M autoextend on  next 100M maxsize 16984M;
create tablespace ST_BAR_JOBS_33 logging datafile '<путь к файлу>/ST_BAR_JOBS_33.DBF ' size 250M autoextend on  next 100M maxsize 16984M;
create tablespace ST_BAR_JOBS_20 logging datafile '<путь к файлу>/ST_BAR_JOBS_20.DBF ' size 250M autoextend on  next 100M maxsize 16984M;

create tablespace STOCK logging datafile '<путь к файлу>/STOCK.DBF ' size 250M autoextend on  next 100M maxsize 16984M;
create tablespace STOCKINDX logging datafile '<путь к файлу>/STOCKINDX.DBF ' size 250M autoextend on  next 100M maxsize 16984M;
ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED PASSWORD_LIFE_TIME UNLIMITED;
CREATE USER *USERNAME*
IDENTIFIED BY *USERPASSWORD*
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP
/
GRANT ALTER SESSION TO *USERNAME*
/
GRANT ALTER SYSTEM TO *USERNAME*
/
GRANT CREATE ANY TRIGGER TO *USERNAME*
/
GRANT CREATE LIBRARY TO *USERNAME*
/
GRANT CREATE PROCEDURE TO *USERNAME*
/
GRANT CREATE SEQUENCE TO *USERNAME*
/
GRANT CREATE SESSION TO *USERNAME*
/
GRANT CREATE SYNONYM TO *USERNAME*
/
GRANT CREATE TABLE TO *USERNAME*
/
GRANT CREATE TRIGGER TO *USERNAME*
/
GRANT CREATE TYPE TO *USERNAME*
/
GRANT CREATE VIEW TO *USERNAME*
/
GRANT CREATE ANY CONTEXT TO *USERNAME*
/

GRANT SELECT ON sys.dba_lock TO *USERNAME*
/
GRANT EXECUTE ON sys.dbms_alert TO *USERNAME*
/
GRANT EXECUTE ON sys.dbms_job TO *USERNAME*
/
GRANT EXECUTE ON sys.dbms_lock TO *USERNAME*
/
GRANT EXECUTE ON sys.dbms_pipe TO *USERNAME*
/
GRANT EXECUTE ON sys.dbms_session TO *USERNAME*
/
GRANT EXECUTE ON sys.dbms_sql TO *USERNAME*
/
GRANT EXECUTE ON sys.dbms_system TO *USERNAME*
/
GRANT EXECUTE ON sys.dbms_crypto TO *USERNAME*
/
GRANT EXECUTE ON sys.dbms_obfuscation_toolkit TO *USERNAME*
/
GRANT SELECT ON sys.v_$lock TO *USERNAME*
/
GRANT SELECT ON sys.v_$process TO *USERNAME*
/
GRANT SELECT ON sys.v_$session TO *USERNAME*
/
GRANT SELECT ON sys.v_$sql TO *USERNAME*
/
GRANT SELECT ON sys.v_$sqltext TO *USERNAME*
/
GRANT SELECT ON sys.v_$parameter TO *USERNAME*
/

CREATE VIEW x$_kglpn AS SELECT * FROM x$kglpn
/
GRANT SELECT ON x$_kglpn TO *USERNAME*
/
CREATE SYNONYM *USERNAME*.x$kglpn FOR SYS.x$_kglpn
/

CREATE VIEW x$_kglob AS SELECT * FROM x$kglob
/
GRANT SELECT ON x$_kglob TO *USERNAME*
/
CREATE SYNONYM *USERNAME*.x$kglob FOR SYS.x$_kglob
/

CREATE VIEW x$_ksuse AS SELECT * FROM x$ksuse
/
GRANT SELECT ON x$_ksuse TO *USERNAME*
/
CREATE SYNONYM *USERNAME*.x$ksuse FOR SYS.x$_ksuse
/

CREATE VIEW v$_session_wait AS SELECT * FROM v$session_wait
/
GRANT SELECT ON v$_session_wait TO *USERNAME*
/
CREATE SYNONYM *USERNAME*.v$session_wait FOR SYS.v$_session_wait
/

alter user *USERNAME* quota unlimited on USERS
/
alter user *USERNAME* quota unlimited on ACTIONS_01
/
alter user *USERNAME* quota unlimited on ACTIONS_02
/
alter user *USERNAME* quota unlimited on ACTIONS_03
/
alter user *USERNAME* quota unlimited on ACTIONS_04
/
alter user *USERNAME* quota unlimited on BLOB_STORAGE
/
alter user *USERNAME* quota unlimited on INDX
/
alter user *USERNAME* quota unlimited on ST_BAR_JOBS_INDX
/
alter user *USERNAME* quota unlimited on ST_BAR_JOBS_01
/
alter user *USERNAME* quota unlimited on ST_BAR_JOBS_02
/
alter user *USERNAME* quota unlimited on ST_BAR_JOBS_03
/
alter user *USERNAME* quota unlimited on ST_BAR_JOBS_04
/
alter user *USERNAME* quota unlimited on ST_BAR_JOBS_05
/
alter user *USERNAME* quota unlimited on ST_BAR_JOBS_06
/
alter user *USERNAME* quota unlimited on ST_BAR_JOBS_07
/
alter user *USERNAME* quota unlimited on ST_BAR_JOBS_08
/
alter user *USERNAME* quota unlimited on ST_BAR_JOBS_09
/
alter user *USERNAME* quota unlimited on ST_BAR_JOBS_11
/
alter user *USERNAME* quota unlimited on ST_BAR_JOBS_12
/
alter user *USERNAME* quota unlimited on ST_BAR_JOBS_13
/
alter user *USERNAME* quota unlimited on ST_BAR_JOBS_14
/
alter user *USERNAME* quota unlimited on ST_BAR_JOBS_22
/
alter user *USERNAME* quota unlimited on ST_BAR_JOBS_32
/
alter user *USERNAME* quota unlimited on ST_BAR_JOBS_17
/
alter user *USERNAME* quota unlimited on ST_BAR_JOBS_15
/
alter user *USERNAME* quota unlimited on ST_BAR_JOBS_33
/
alter user *USERNAME* quota unlimited on ST_BAR_JOBS_10
/
alter user *USERNAME* quota unlimited on STOCK
/
alter user *USERNAME* quota unlimited on STOCKINDX
/
grant administer database trigger to *USERNAME*
/

После установки oracle и создания БД, делаем мультиплексирование control-файлов, на случай разрушения. Для этого:
1) Останавливаем БД. shutdown immediate
2) Клонируем control-файл (делаем из существующего 3 одинаковых с разными именами, из CONTROL01.CTL делаем CONTROL02.CTL и CONTROL03.CTL ).
3) Стартуем БД в режиме nomount. startup nomount/
4) Из-под sysdba выполняем скрипт:
alter system set control_files = 'ПУТЬ_К_ФАЙЛАМ_БД\CONTROL01.CTL','ПУТЬ_К_ФАЙЛАМ_БД\CONTROL02.CTL' ,'ПУТЬ_К_ФАЙЛАМ_БД\CONTROL03.CTL' scope=spfile;
5) Стартуем экземпляр. startup.
6) Дабы убедиться, что теперь задействованы три управляющих файла, из-под sysdba выполняем select * from V$CONTROLFILE, запрос должен вернуть три наших контролфайла.

Создание директории для мониторинга файлов трассировки

*под DBA выясняем где лежат файлы трассировки на сервере
SELECT VALUE FROM V$DIAG_INFO WHERE NAME = 'Default Trace File'
/*'/u01/app/oracle/diag/rdbms/dkn/DKN/trace/'*/
*под DBA создаем директорию и даем гранты пользователю ТОЖЕ
create or replace directory TRACE_FILES as '/u01/app/oracle/diag/rdbms/dkn/DKN/trace/'
/
grant read,write on directory TRACE_FILES to sys; 
/
GRANT READ,write ON DIRECTORY TRACE_FILES TO DBA; 
/
grant read,write on directory TRACE_FILES to *USER_NAME*; 
/
declare
F1 UTL_FILE.FILE_TYPE; 
 vexists  boolean ; 
   vfile_length integer ;  
   vblocksize integer ; 
begin

-- F1 := UTL_FILE.FOPEN( 'TRACE_FILES', 'DKN_ora_59370.trc', 'w' ) ;
 --      UTL_FILE.PUTF(F1, 'Look, Im writing to a file!!!\n'); 
 --      UTL_FILE.FCLOSE(F1); 

 UTL_FILE.FGETATTR(
   'TRACE_FILES', 'DKN_ora_59370.trc' ,
   vexists    , 
   vfile_length , 
   vblocksize   );
  if vexists then  DBMS_OUTPUT.Put_Line('true '|| vfile_length||' '||vblocksize );
             else  DBMS_OUTPUT.Put_Line('false '|| vfile_length||' '||vblocksize ); end if;

end;

Устранение несовместимостей кодировок

Региональные настройки Win

Язык системы по умолчанию

Для нерусскоязычных ОС проверить:

Прочие кодировки

Для решения проблемы с отображением шрифтов в CWMS3000 (системные сообщения, всплывающие подсказки) необходимо изменить значения параметров «1250» и «1252», которые находятся в ветке реестра HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Nls \ CodePage, с «c_1250.nls» на «c_1251.nls» и с «c_1252.nls» на «c_1251.nls» соответственно.

Для этого

После перезагрузки проблема с неправильным отображением шрифтов должна исчезнуть.

Кодировка Oracle-клиента

Важно изменить значение параметра NLS_Lang на том компе, откуда производится импорт. На машинах клиента тоже можно настроить параметр.

Импорт дампа БД (схемы дистрибуции BOX)

imp.EXE USERID = SYSTEM/<Пароль>@<SID базы> LOG=<файл лога>  FILE=<FILE.DAT  схема BOX> FROMUSER=BOX TOUSER=<Пользователь>
pause

Скрипты после импорта

CREATE OR REPLACE CONTEXT CTX_LANG USING *USERNAME*.KK_LANG
/
CREATE OR REPLACE CONTEXT CTX_REP USING *USERNAME*.KK_REP
/
CREATE OR REPLACE CONTEXT ctx_st_barcode USING *USERNAME*.KK_ST_CTX
/
!!!! Важно заменить *ЮЗЕРНЕЙМ* на имя пользователя

begin dbms_job.submit(:job,'BEGIN DBMS_STATS.GATHER_SCHEMA_STATS(ownname => ''ЮЗЕРНЕЙМ'',estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE,method_opt => ''FOR ALL COLUMNS SIZE AUTO'',CASCADE => TRUE); commit; end;',trunc(sysdate,'DAY')+6,'trunc(sysdate,''DAY'')+6'); end;
/

begin dbms_job.submit(:job,'begin KK_ST_ALLOC.RunAllocPeriodicalProc; commit; end;',trunc(SYSDATE)+1,'trunc(SYSDATE)+1'); end;
/

begin dbms_job.submit(:job,'declare  
vJobN integer;
begin  

FOR J In (  
   select distinct c.auto_reserve_grp as grp
     from contragent c where 
       c.auto_reserve_grp is not null
  and sysdate between c.fd and c.td
  and not exists (select null from  
   user_jobs j where WHAT like ''/*AutoReserveGRP=''||c.auto_reserve_grp||''*/%'' )
  order by 1
) LOOP

 dbms_job.Submit(vJobN,''/*AutoReserveGRP=''||j.grp||''*/begin KK_ST_DOC_NEW.StDocOutAllToReserve(''|| j.grp ||''); commit; end;'' );
 kk_common.err_log(''AutoReserveGRP.StDocOutAllToReserve'',vJobN,''RUN JOB''); 
 commit; 
END LOOP;

end;',trunc(sysdate,'mi') + 5/1440,'trunc(sysdate,''mi'') + 5/1440'); end;
/

begin dbms_job.submit(:job,'begin kk_mail.ExternalMailSend; end;',SYSDATE + 5/1440,'SYSDATE + 5/1440'); end;
/

begin dbms_job.submit(:job,'declare
  vStr varchar2(2500);
  vNextExecute date;
  vMail integer;
  vMails list_const.val%type := kk_const.GetConstV(''NotifyJob.Error.Notify'',sysdate,0);
begin
  FOR J In (select rowid as rd,PL_SQL,NAME
             from notify_job
               where sysdate >= next_execute
               and sysdate between fd and td ) LOOP
      begin         
      vStr := j.PL_SQL;
      execute immediate replace(vStr,chr(13),'' '')
      using out vNextExecute;
      commit;
        EXCEPTION
          WHEN others THEN
          kk_common.err_log(''NOTIFY_JOB'',SQLCODE,substr(j.NAME||'' ''||SQLERRM,1,255));
          vMail := kk_mail2.ExternalMailPutInQueue(vMails,''ERROR.USER_JOBS.''||j.NAME,substr(j.NAME||'' ''||SQLERRM,1,2500));
          commit;
          select sysdate + 30/1440 into vNextExecute from dual;
      end;
    update notify_job
     set next_execute = vNextExecute
      where rowid = J.RD;  
    commit;
  END LOOP;
end;',sysdate + 2/1440,'sysdate + 2/1440'); end;
/

commit;
/

Создание триггера Audit_ddl

Выполнить под пользователем SYS "Сохранение истории системных пакетов"

CREATE OR REPLACE TRIGGER audit_ddl
BEFORE
  DDL
ON DATABASE
declare
l_osuser  VARCHAR2(100);
l_program VARCHAR2(100);
sql_text ora_name_list_t;
stmt VARCHAR2(2000);
l_cnt pls_integer;
vLocator CLOB;
vEDITOR_IP varchar2(50);
vEDITOR_DSC varchar2(200);
vLastTD date;
begin

   IF (ora_dict_obj_owner = '*USERNAME*')
      THEN
     IF  ora_sysevent in ('ALTER','ANALYZE') and ora_dict_obj_type in ('FUNCTION','PACKAGE','PACKAGE BODY','TRIGGER')  
      or ora_dict_obj_type in ('TYPE') THEN
    NULL;
    ELSE

          select upper(osuser), upper(program) into l_osuser, l_program from v$session
            WHERE AUDSID=SYS_CONTEXT('USERENV','SESSIONID');

        if ora_dict_obj_type in ('PACKAGE','PACKAGE BODY') then  
         begin  
          select p.EDITOR_IP,p.EDITOR_DSC ,nvl(last_td,sysdate) into vEDITOR_IP
          ,vEDITOR_DSC , vLastTD
           from  *USERNAME*.CIS_PACKAGE p
            where upper(p.name) = upper(ora_dict_obj_name) ;

            if vEDITOR_IP is null or vLastTD + 2 < sysdate then

               update *USERNAME*.CIS_PACKAGE
                set EDITOR_IP = SYS_CONTEXT('userenv', 'IP_ADDRESS')
                 , EDITOR_DSC = l_program || '; l_osuser='||l_osuser||'; '|| to_char(sysdate,'dd.mm.yyyy hh24:mi:ss')
                 ,last_td = sysdate
                  where upper(name) = upper(ora_dict_obj_name) ;
            else
             if  nvl(vEDITOR_IP,'NULL') != nvl(SYS_CONTEXT('userenv', 'IP_ADDRESS'),',') then
              null;

             end if;

            end if; --if vEDITOR_IP is null then 

           EXCEPTION
              WHEN NO_DATA_FOUND THEN
             null; 

          end;

          end if; --if ora_dict_obj_type in ('PACKAGE','PACKAGE BODY') then   

           insert into *USERNAME*.CIS_ddl_changes (N, owner, name, type, osuser, program, FD, action, STATUS) values
           (*USERNAME*.sq_CIS_DDL_CHANGES.nextval, ora_dict_obj_owner, ora_dict_obj_name,
            ora_dict_obj_type, l_osuser, l_program, sysdate, ora_sysevent,0);

declare
LOCATOR1 clob; 
dest_offset    INTEGER := 1;
src_offset     INTEGER := 1;
amt            INTEGER ;
begin

DBMS_LOB.CREATETEMPORARY (LOCATOR1,TRUE,DBMS_LOB.SESSION); 

           l_cnt := ora_sql_txt(sql_text);
     for i in 1..l_cnt loop
     if (Length(sql_text(i)) <= 2000) and
         instr(sql_text(i), 'COMPILE BODY REUSE SETTINGS')>0 then
        null;
       else
     dbms_lob.WriteAppend(LOCATOR1, Length(sql_text(i)),sql_text(i));

     end if;
     end loop;

           INSERT INTO *USERNAME*.CIS_DDL_CHANGES_CLOB (CIS_DDL_CHANGES_N,TEXT) VALUES (*USERNAME*.sq_CIS_DDL_CHANGES.currval,EMPTY_CLOB())  
              RETURNING TEXT into vLocator ;     
     amt :=   DBMS_LOB.getlength(LOCATOR1);       
    dbms_lob.copy(vLocator,LOCATOR1,amt,dest_offset,src_offset);            

end;

   END IF;     --IF  ora_sysevent ='ALTER'
   END IF;   
end;
/

Выполнить под пользователем SYS "предотвращение повторного входа с терминала"

-- Start of DDL Script for Trigger TST.TRG_ON_LOGON
-- Generated 20.02.2015 14:59:44 from TST@TST

CREATE OR REPLACE TRIGGER trg_on_logon
 AFTER
  LOGON
 ON DATABASE
declare
vCnt integer;
begin
 if lower(SYS_CONTEXT('userenv', 'TERMINAL')) like lower('%mobile%') then

    select/*+ INDEX(a cis_logon_log_s)*/ 
    count(1) into vCnt
      from
   v$session s
    join V$process p on (s.pADDR = p.addr )
    join  cis_logon_log a on (  a.AUDSID = s.AUDSID  and a.SESSIONID = s.SID and a.SERIAL = s.SERIAL# )
  where a.ip =  SYS_CONTEXT('userenv', 'IP_ADDRESS')
  and s.status != 'KILLED';

 if vCnt > 0 then
   RAISE_application_error(-20000,'Нельзя запустить более двух сессий одновременно!');
 end if; -- if vCnt > 0 then 

 end if; -- if lower(SYS_CONTEXT('userenv', 'TERMINAL')) like lower('%mobile%') then 

end trg_on_logon;
/

-- End of DDL Script for Trigger TST.TRG_ON_LOGON

/

Для Oracle 11G рассылки почты в случае ошибки "отказ в доступе к сети в соответствии со списком контроля доступа (ACL)"

BEGIN
   DBMS_NETWORK_ACL_ADMIN.CREATE_ACL (
    acl          => 'smtp_mail.xml',
    description  => 'Permissions to access smtp_mail',
    principal    => '*USERNAME*', -- ИМЯ пользователя БД
    is_grant     => TRUE,
    privilege    => 'connect');
   COMMIT;
END;

create role role_smtp_mail;
/

BEGIN
   DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE (
    acl          => 'smtp_mail.xml',                
    principal    => 'ROLE_SMTP_MAIL',
    is_grant     => TRUE, 
    privilege    => 'connect',
    position     => null);
   COMMIT;
END;
/

grant  role_smtp_mail to *USERNAME*;
/

BEGIN
   DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL (
    acl          => 'smtp_mail.xml',                
    host         => '192.168.4.2'); -- smtp сервер!!!!
   COMMIT;
END;
/
==Добавить другого пользователя в ACL лист (если пользователей БД, использующих отправку писем - несколько)==
BEGIN
  DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(
    acl => 'smtp_mail.xml', 
    principal => '*USERNAME2*', --имя второго пользователя
    is_grant => TRUE, 
    privilege => 'connect');
END;
/

Настройка сервера приложений


Установка Oracle Client

Правка пакетов

ПЕРЕД ЗАПУСКОМ СЛУЖБЫ ИЛИ CWMS3000 обязательно изменить пакеты kk_rep,kk_lang :

kk_rep:
  procedure assign(name varchar2, value varchar2) is
      begin
        dbms_session.set_context('ctx_rep', name, value);
      END assign;

kk_lang:
   procedure assign(name varchar2, value varchar2) is
      begin
         dbms_session.set_context('ctx_lang', name, value);
      END assign;

Установка CWMS3000

Разворачивание StandBy сервера oracle штатными средствами data guard broker.


Необходимые условия для разворачивания

Подготовка резервного сервера

hint: Для удобства навигации между RDP-подключениями основного и резервного серверов, рекомендуется установить в качестве "обоев" рабочего стола резервного сервера ярко-красный фон.

Установка СУБД oracle и создание резервной БД.

Запускаем инсталлятор, выбираем метод установки - advanced, нажимаем "next"

тип установки - Enterprise, нажимаем "next"

В следующем окне - Name оставляем по умолчанию, Path должен быть идентичен пути установки БД на основном сервере

В пунктах, имеющих статус "error", проставляем галочки.

Статус должен поменять на " user verified", нажимаем "next"

В следующем окне выбираем "Create a Database", нажимаем "next".

В следующем окне выбираем Advanced, жмем "next".

В следующем окне оставляем значения по умолчанию, жмем "next".

В следующем окне проверяем правильность введённых параметров и нажимаем "Install"

После окончания установки автоматически откроется Database Configuration Assistant. В первом окне выбираем General Purpose, нажимаем "next".

В следующем окне вводим Global Database и SID. Они должны быть ИДЕНТИЧНЫ основной базе.

В следующем окне оставляем всё без изменения.

В следующем окне вводим пароль для системных учётных записей oracle. Он должен быть ИДЕНТИЧЕН паролю на основной базе. Нажимаем "next".

В следующем окне оставляем все данные без изменения, нажимаем "next".

В следующем окне снимаем галочку "Specify Flash Recovery Area", ставим галочку "Enable Archiving, нажимаем кнопку Edit Archive Mode Parameters

В открывшемся окне указываем ПОЛНЫЙ путь к папке с архивными логами. Путь должен быть идентичен пути к папке на основном сервере. Если папки для архивных логов на резервном сервере не существует - её необходимо создать. Имя папки и её местонахождение на локальном диске должны быть полностью идентичными имени и местонахождению на основном сервере. Нажимаем "ok" и "next".

В следующем окне снимаем галочку "Sample Schemas", нажимаем "next"

В следующем окне ставим флаги Custom и Manual.
Единицы измерения ВЕЗДЕ проставляем M Bytes. Рекомендуемые значения:
Shared Pool: 128 M Bytes
Buffer Cache: Указываем размер, исходя из оставшейся свободной оперативной памяти, за вычетом памяти, необходимой для корректной работы операционной системы. Для резервного сервера, имеющего 4 Гб оперативной памяти (как на скриншоте), оптимальным размером Buffer Cache будет 2 Гб, для сервера, имеющего, например, 32 Гб оперативной памяти, оптимальным будет 25 Гб.
Java Pool: 128 M Bytes
Large Pool: 512 M Bytes
PGA Size: 256 M Bytes

Далее на вкладке Character Sets устанавливаем флаг "Choose from the list of character sets", Утанавливаем параметры, согласно скриншоту. Нажимаем кнопку "next".

В следующем окне оставляем все значения по умолчанию и нажимаем next.

В следующем окне оставляем все значения по умолчанию и нажимаем Готово.

В процессе создания БД и применения настроек, может появиться ошибка старта БД. Не пугаемся, нажимаем ОК.

По завершению установки, нажимаем next, в следующем окне - exit.

Далее заходим в диспетчер служб, проверяем, чтобы службы oracle были созданы, и их состояние было как на скриншоте.

Запускаем командную строку, вводим команду sqlplus. Логин sys as sysdba, пароль - указанный при установке. Если все вышеописанные действия были проведены верно - мы увидим информацию о версии СУБД и строку ввода команд SQL.

Прописываем уникальное имя базы, по которому data guard broker будет её идентифицировать, для резервного сервера это bwms. Для этого вводим команду:
alter system set db_unique_name='bwms' scope=spfile;
Включаем data guard broker. Для этого вводим команду:
alter system st dg_broker_start=true scope=both;

Останавливаем БД. Для этого вводим команду
shutdown immediate

Удаляем все файлы из каталога БД

Останавливаем службу OracleOraDb10g_home1TNSListener
Редактируем файл E:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\tnsnames.ora согласно тексту ниже, указываем реальные ip-адреса

WMS =
 (DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = ip-адрес основного сервера)(PORT = 1521))
   )
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = WMS)
   )
 )

BWMS =
 (DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = ip-адрес резервного сервера)(PORT = 1521))
   )
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = bwms)
   )
 )
wms_XPT = 
(DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = ip-адрес основного сервера)(PORT = 1521))
   )
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = wms)
   )
  )
wms_DGB = 
(DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = ip-адрес основного сервера)(PORT = 1521))
   )
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = wms)
   )
 )
wms_DGMGRL = 
(DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = ip-адрес основного сервера)(PORT = 1521))
   )
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = wms)
   )
 )
)

Редактируем файл E:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\listener.ora
Значения, которые необходимо изменить выделены красным

SID_LIST_LISTENER =
  (SID_LIST =
   (SID_DESC =
     (GLOBAL_DBNAME = bwms_DGMGRL)
     (ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
     (SID_NAME = bwms)
    )
   (SID_DESC =
        (GLOBAL_DBNAME = bwms_XPT)
        (ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
     (SID_NAME = bwms)
    )    
    (SID_DESC =
        (GLOBAL_DBNAME = bwms_DGB)
        (ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
     (SID_NAME = bwms)
    )
    (SID_DESC =
        (GLOBAL_DBNAME = SID БД)
        (ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
     (SID_NAME = SID БД)
    )
    (SID_DESC =
        (GLOBAL_DBNAME = bwms)
        (ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
     (SID_NAME = bwms)
    )
)
LISTENER =
 (DESCRIPTION =
   (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = ip-адрес резервного сервера)(PORT = 1521))
   )
 )

Стартуем службу OracleOraDb10g_home1TNSListener

Подготовка основного сервера

На основном сервере запускаем sqlplus, логин sys as sysdba
Вводим команду
ALTER DATABASE FORCE LOGGING;

Создаём REDO логи, которые в последствии будет использовать резервный сервер. Для этого вводим команду, где указываем путь к папке с ораклом:
ALTER DATABASE ADD STANDBY LOGFILE GROUP 10 ('P:\oracle\product\10.2.0\oradata\VPI\log1c.rdo','P:\oracle\product\10.2.0\oradata\VPI\log2c.rdo','P:\oracle\product\10.2.0\oradata\VPI\log3c.rdo') SIZE 50M;
Прописываем уникальное имя базы, по которому data guard broker будет её идентифицировать, для основного сервера это wms. Для этого вводим команду:
alter system set db_unique_name='wms' scope=spfile;
Включаем data guard broker. Для этого вводим команду:
alter system st dg_broker_start=true scope=both;

Останавливаем службу OracleOraDb10g_home1TNSListener
Редактируем файл E:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\tnsnames.ora согласно тексту ниже, указываем реальные ip-адреса

WMS =
 (DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = ip-адрес основного сервера)(PORT = 1521))
   )
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = wms)
   )

 )

bwms = 
(DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = ip-адрес резервного сервера)(PORT = 1521))
   )
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = bwms)
   )
 )
bwms_XPT = 
(DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = ip-адрес резервного сервера)(PORT = 1521))
   )
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = bwms)
   )
 )
bwms_DGB = 
(DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = ip-адрес резервного сервера)(PORT = 1521))
   )
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = bwms)
   )
 )
bwms_DGMGRL = 
(DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = ip-адрес резервного сервера)(PORT = 1521))
   )
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = bwms)
   )
 )

)

Редактируем файл E:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\listener.ora
Значения, которые необходимо изменить выделены красным

SID_LIST_LISTENER =
(SID_LIST =
   (SID_DESC =
     (GLOBAL_DBNAME = wms_DGMGRL)
     (ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
     (SID_NAME = wms)
    )
   (SID_DESC =
        (GLOBAL_DBNAME = wms_XPT)
        (ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
     (SID_NAME = wms)
    )    
    (SID_DESC =
        (GLOBAL_DBNAME = wms_DGB)
        (ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
     (SID_NAME = wms)
    )
    (SID_DESC =
        (GLOBAL_DBNAME = SID БД)
        (ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
     (SID_NAME = SID БД)
    )
    (SID_DESC =
        (GLOBAL_DBNAME = wms)
        (ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
     (SID_NAME = wms)
    )
)
LISTENER =
 (DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = ip-адрес основного сервера)(PORT = 1521))
   )    
 )

Стартуем службу OracleOraDb10g_home1TNSListener
Принудительно создаём логи, чтобы в них записались последние транзакции. Для этого вводим команду:
alter system switch logfile; Для надежности - три раза, и СРАЗУ ЖЕ останавливаем базу командой:
shutdown immediate

Стартуем базу в режиме mount. Для этого вводим команду:
startup mount
Создаём контрол-файл для резервного сервера. Для этого вводим команду:
ALTER DATABASE CREATE STANDBY CONTROLFILE AS 'C:\boston.ctl'

Дважды клонируем полученный файл и переименовываем его.
В результате из файла boston.ctl' должно получиться 3 идентичных файла: CONTROL01.CTL, CONTROL02.CTL, CONTROL01.CTL.
Они нам пригодятся чуть позже.
Останавливаем БД. Для этого вводим команду:
shutdown immediate
Останавливаем службу OracleService
Копируем всё содержимое папки E:\oracle\product\10.2.0\oradata\Имя_Инстанса КРОМЕ ФАЙЛОВ С РАСШИРЕНИЕМ .CTL в аналогичную папку резервного сервера.

Далее в ту же папку РЕЗЕРВНОГО сервера копируем контрол-файлы, полученные в результате создания и клонирования файла boston.ctl (см. выше)
Запускаем службу OracleService
Подготовка основной БД закончена, можно продолжать работу в ней в штатном режиме.

Создание и настройка конфигурации data guard broker

Запускаем БД на РЕЗЕРВНОМ сервере. Для этого вводим команду:
startup
По результатам выполнения :

точно таким же образом пингуем остальные алиасы из tnsnames.ora:

Создаём конфигурацию, добавляем в конфигурацию наши базы, устанавливаем свойства, благодаря которым при добавлении файлов в основную базу, они автоматически будут создаваться на резервной.
Для этого выполняем скрипт:
CREATE CONFIGURATION 'SID БД_BACKUP' AS
PRIMARY DATABASE IS 'wms'
CONNECT IDENTIFIER IS wms;
ADD DATABASE 'bwms' AS
CONNECT IDENTIFIER IS bwms
MAINTAINED AS PHYSICAL;
EDIT DATABASE 'bwms' SET PROPERTY 'StandbyFileManagement'='AUTO';
EDIT DATABASE 'wms' SET PROPERTY 'StandbyFileManagement'='AUTO';
Для того, чтобы убедиться в том, что конфигурация успешно создалась, вводим команду:
show configuration

Далее включаем конфигурацию, вводим команду:
enable configuration
После этого начнется процесс копирования логов с основного сервера на резервный и их применение. Процесс может занимать различное время, в зависимости от того, насколько основная база "убежала вперед" от резервной, после её включения (окончание П.2).
Проверяем валидность конфигурации командой:
show configuration
При успешной синхронизации серверов команда должна возвратить "SUCCESS"

Далее смотрим очередь на применение логов к резервной базе(она должна быть пустая), для этого вводим команду:
SHOW DATABASE 'bwms' 'RecvQEntries';
И очередь на передачу логов с основного сервера(должно быть одно значение):
SHOW DATABASE 'wms' 'SendQEntries'


SGtin

пример: 010360797188301321583hwHr?.fA-h\u001d91EE09\u001d92fzNUSTDdkjucjEX6wd/6YRma+BSjg+379r4CvAszZc0=

(01)03607971883013 ---- раздел(01) 14 знаков GTIN код номенклатуры
(21)583hwHr?.fA-h ---- раздел(21) серийный признак переменной длинны поэтому следует разрыв 1d
\u001d ---- разрыв означает что предыдущий раздел завершен
(91)EE09 ---- разделы(91-99) внутренняя информация компании в нашем случае порядковый номер ключа проверки ЧЗ
\u001d ---- break
(92)fzNUSTDdkjucjEX6wd/6YRma+BSjg+379r4CvAszZc0= раздел(92) криптохвост данной марки


Инструкция по разворачиванию StanBy сервера


Разворачивание StandBy сервера oracle штатными средствами data guard broker.

Необходимые условия для разворачивания

Подготовка резервного сервера
hint: Для удобства навигации между RDP-подключениями основного и резервного серверов, рекомендуется установить в качестве "обоев" рабочего стола резервного сервера ярко-красный фон.

Установка СУБД oracle и создание резервной БД.
Запускаем инсталлятор, выбираем метод установки - advanced, нажимаем "next"

тип установки - Enterprise, нажимаем "next"

В следующем окне - Name оставляем по умолчанию, Path должен быть идентичен пути установки БД на основном сервере

В пунктах, имеющих статус "error", проставляем галочки.

Статус должен поменять на " user verified", нажимаем "next"

В следующем окне выбираем "Create a Database", нажимаем "next".

В следующем окне выбираем Advanced, жмем "next".

В следующем окне оставляем значения по умолчанию, жмем "next".

В следующем окне проверяем правильность введённых параметров и нажимаем "Install"

После окончания установки автоматически откроется Database Configuration Assistant. В первом окне выбираем General Purpose, нажимаем "next".

В следующем окне вводим Global Database и SID. Они должны быть ИДЕНТИЧНЫ основной базе.

В следующем окне оставляем всё без изменения.

В следующем окне вводим пароль для системных учётных записей oracle. Он должен быть ИДЕНТИЧЕН паролю на основной базе. Нажимаем "next".

В следующем окне оставляем все данные без изменения, нажимаем "next".

В следующем окне снимаем галочку "Specify Flash Recovery Area", ставим галочку "Enable Archiving, нажимаем кнопку Edit Archive Mode Parameters
Standby15.JPG

В открывшемся окне указываем ПОЛНЫЙ путь к папке с архивными логами. Путь должен быть идентичен пути к папке на основном сервере. Если папки для архивных логов на резервном сервере не существует - её необходимо создать. Имя папки и её местонахождение на локальном диске должны быть полностью идентичными имени и местонахождению на основном сервере. Нажимаем "ok" и "next".

В следующем окне снимаем галочку "Sample Schemas", нажимаем "next"

В следующем окне ставим флаги Custom и Manual.
Единицы измерения ВЕЗДЕ проставляем M Bytes. Рекомендуемые значения:
Shared Pool: 128 M Bytes
Buffer Cache: Указываем размер, исходя из оставшейся свободной оперативной памяти, за вычетом памяти, необходимой для корректной работы операционной системы. Для резервного сервера, имеющего 4 Гб оперативной памяти (как на скриншоте), оптимальным размером Buffer Cache будет 2 Гб, для сервера, имеющего, например, 32 Гб оперативной памяти, оптимальным будет 25 Гб.
Java Pool: 128 M Bytes
Large Pool: 512 M Bytes
PGA Size: 256 M Bytes

Далее на вкладке Character Sets устанавливаем флаг "Choose from the list of character sets", Утанавливаем параметры, согласно скриншоту. Нажимаем кнопку "next".

В следующем окне оставляем все значения по умолчанию и нажимаем next.

В следующем окне оставляем все значения по умолчанию и нажимаем Готово.

В процессе создания БД и применения настроек, может появиться ошибка старта БД. Не пугаемся, нажимаем ОК.

По завершению установки, нажимаем next, в следующем окне - exit.

Далее заходим в диспетчер служб, проверяем, чтобы службы oracle были созданы, и их состояние было как на скриншоте.

Запускаем командную строку, вводим команду sqlplus. Логин sys as sysdba, пароль - указанный при установке. Если все вышеописанные действия были проведены верно - мы увидим информацию о версии СУБД и строку ввода команд SQL.

Прописываем уникальное имя базы, по которому data guard broker будет её идентифицировать, для резервного сервера это bwms. Для этого вводим команду:
alter system set db_unique_name='bwms' scope=spfile;
Включаем data guard broker. Для этого вводим команду:
alter system st dg_broker_start=true scope=both;

Останавливаем БД. Для этого вводим команду
shutdown immediate

Удаляем все файлы из каталога БД

Останавливаем службу OracleOraDb10g_home1TNSListener
Редактируем файл E:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\tnsnames.ora согласно тексту ниже, указываем реальные ip-адреса

WMS =
 (DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = ip-адрес основного сервера)(PORT = 1521))
   )
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = WMS)
   )
 )
BWMS =
 (DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = ip-адрес резервного сервера)(PORT = 1521))
   )
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = bwms)
   )
 )
wms_XPT = 
(DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = ip-адрес основного сервера)(PORT = 1521))
   )
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = wms)
   )
  )
wms_DGB = 
(DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = ip-адрес основного сервера)(PORT = 1521))
   )
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = wms)
   )
 )
wms_DGMGRL = 
(DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = ip-адрес основного сервера)(PORT = 1521))
   )
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = wms)
   )
 )
)

Редактируем файл E:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\listener.ora
Значения, которые необходимо изменить выделены красным

Стартуем службу OracleOraDb10g_home1TNSListener

Подготовка основного сервера

На основном сервере запускаем sqlplus, логин sys as sysdba
Вводим команду
ALTER DATABASE FORCE LOGGING;

Создаём REDO логи, которые в последствии будет использовать резервный сервер. Для этого вводим команду, где указываем путь к папке с ораклом:
ALTER DATABASE ADD STANDBY LOGFILE GROUP 10 ('P:\oracle\product\10.2.0\oradata\VPI\log1c.rdo','P:\oracle\product\10.2.0\oradata\VPI\log2c.rdo','P:\oracle\product\10.2.0\oradata\VPI\log3c.rdo') SIZE 50M;
Прописываем уникальное имя базы, по которому data guard broker будет её идентифицировать, для основного сервера это wms. Для этого вводим команду:
alter system set db_unique_name='wms' scope=spfile;
Включаем data guard broker. Для этого вводим команду:
alter system st dg_broker_start=true scope=both;

Останавливаем службу OracleOraDb10g_home1TNSListener
Редактируем файл E:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\tnsnames.ora согласно тексту ниже, указываем реальные ip-адреса

WMS =
 (DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = ip-адрес основного сервера)(PORT = 1521))
   )
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = wms)
   )

 )
bwms = 
(DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = ip-адрес резервного сервера)(PORT = 1521))
   )
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = bwms)
   )
 )
bwms_XPT = 
(DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = ip-адрес резервного сервера)(PORT = 1521))
   )
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = bwms)
   )
 )
bwms_DGB = 
(DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = ip-адрес резервного сервера)(PORT = 1521))
   )
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = bwms)
   )
 )
bwms_DGMGRL = 
(DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = ip-адрес резервного сервера)(PORT = 1521))
   )
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = bwms)
   )
 )

)

Редактируем файл E:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\listener.ora
Значения, которые необходимо изменить выделены красным

Стартуем службу OracleOraDb10g_home1TNSListener
Принудительно создаём логи, чтобы в них записались последние транзакции. Для этого вводим команду:
alter system switch logfile; Для надежности - три раза, и СРАЗУ ЖЕ останавливаем базу командой:
shutdown immediate

Стартуем базу в режиме mount. Для этого вводим команду:
startup mount
Создаём контрол-файл для резервного сервера. Для этого вводим команду:
ALTER DATABASE CREATE STANDBY CONTROLFILE AS 'C:\boston.ctl'

Дважды клонируем полученный файл и переименовываем его.
В результате из файла boston.ctl' должно получиться 3 идентичных файла: CONTROL01.CTL, CONTROL02.CTL, CONTROL01.CTL.
Они нам пригодятся чуть позже.
Останавливаем БД. Для этого вводим команду:
shutdown immediate
Останавливаем службу OracleService
Копируем всё содержимое папки E:\oracle\product\10.2.0\oradata\Имя_Инстанса КРОМЕ ФАЙЛОВ С РАСШИРЕНИЕМ .CTL в аналогичную папку резервного сервера.

Далее в ту же папку РЕЗЕРВНОГО сервера копируем контрол-файлы, полученные в результате создания и клонирования файла boston.ctl (см. выше)
Запускаем службу OracleService
Подготовка основной БД закончена, можно продолжать работу в ней в штатном режиме.

Создание и настройка конфигурации data guard broker

Запускаем БД на РЕЗЕРВНОМ сервере. Для этого вводим команду:
startup
По результатам выполнения :
создана резервная база
создан слепок основной базы и перенесен на резервный сервер
резервная база запущена и имеет точную копию основной
Далее нам необходимо проверить связь между серверами в рамках алиасов. Для этого на ОСНОВНОМ СЕРВЕРЕ открываем командную строку и вводим команду:
tnsping bwms
результатом команды должен быть отчет об успешном прохождении пинга.

точно таким же образом пингуем остальные алиасы из tnsnames.ora:

Создаём конфигурацию, добавляем в конфигурацию наши базы, устанавливаем свойства, благодаря которым при добавлении файлов в основную базу, они автоматически будут создаваться на резервной.
Для этого выполняем скрипт:
CREATE CONFIGURATION 'SID БД_BACKUP' AS
PRIMARY DATABASE IS 'wms'
CONNECT IDENTIFIER IS wms;
ADD DATABASE 'bwms' AS
CONNECT IDENTIFIER IS bwms
MAINTAINED AS PHYSICAL;
EDIT DATABASE 'bwms' SET PROPERTY 'StandbyFileManagement'='AUTO';
EDIT DATABASE 'wms' SET PROPERTY 'StandbyFileManagement'='AUTO';
Для того, чтобы убедиться в том, что конфигурация успешно создалась, вводим команду:
show configuration

Далее включаем конфигурацию, вводим команду:
enable configuration
После этого начнется процесс копирования логов с основного сервера на резервный и их применение. Процесс может занимать различное время, в зависимости от того, насколько основная база "убежала вперед" от резервной, после её включения (окончание П.2).
Проверяем валидность конфигурации командой:
show configuration
При успешной синхронизации серверов команда должна возвратить "SUCCESS"

Далее смотрим очередь на применение логов к резервной базе(она должна быть пустая), для этого вводим команду:
SHOW DATABASE 'bwms' 'RecvQEntries';
И очередь на передачу логов с основного сервера(должно быть одно значение):
SHOW DATABASE 'wms' 'SendQEntries'


Настройка оповещения работоспособности StandBy на email


Для настройки ежедневного оповещение на почту о работоспособности сервера стендбай, необходимо настроить файл SendDGMGRL.vbs

1. В операционной системе настроить "планировщик заданий", создать задачу на ежедневное исполнение файла SendDGMGRL.vbs

2. Открыть на редактирование SendDGMGRL.vbs любым текстовым редактором, в шапке настроить параметры оповещения:
const Cons_Path = "C:\temp\usr" ' Путь к папке
const SMTP_Host = "smtp.nc.ru" 'Адрес SMTP-сервера
const DB_Connection = "sys/*****@DBNAME" 'Параметры подкл. к БД
const SMTP_Subj = "Отчет dgmgrl" ' Тема сообщения
const SMTP_Port = 25 ' Порт SMTP
const SMTP_Name = "cwms3000" ' Логин для отправки
const SMTP_Password = "*****" ' Пароль для отправки
const SMTP_From = "userfrom@post.ru" ' Адрес отправителя
const SMTP_To = notify@cwms3000.ru" ' Адрес получателя

3. Указанным получателем на почту ежедневно высылается отчет в виде:
Subject: Отчет dgmgrl от 26.05.2014 9:30:02
DGMGRL for 32-bit Windows: Version 10.2.0.1.0 - Production
Copyright (c) 2000, 2005, Oracle. All rights reserved.
Добро пожаловать DGMGRL, для получения информации наберите "help".
DGMGRL> Соединение установлено.
DGMGRL> PRIMARY_SEND_QUEUE

 STANDBY_NAME       STATUS     RESETLOGS_ID           THREAD

LOG_SEQ TIME_GENERATED TIME_COMPLETED FIRST_CHANGE# NEXT_CHANGE# SIZE (KBs)

      CURRENT        601448867    

46273 05/26/2014 09:32:13 956587057 13274 DGMGRL> STANDBY_RECEIVE_QUEUE

STATUS     RESETLOGS_ID           THREAD              LOG_SEQ

TIME_GENERATED TIME_COMPLETED FIRST_CHANGE# NEXT_CHANGE# SIZE (KBs) DGMGRL> Configuration

Name:                DKN_BACKUP
 Enabled:             YES
 Protection Mode:     MaxPerformance
 Fast-Start Failover: DISABLED
 Databases:
   wms  - Primary database
   bwms - Physical standby database

Текущее состояние для "DKN_BACKUP": SUCCESS

При получении уведомления на почту, необходимо обратить внимание на очередь заданий, выделено красным, при наличие 5 и более невыполненных заданий, обратиться в ОТП. Также необходимо обратить внимание на последние строки, описывающие состояние конфигурации(Текущее состояние для "DKN_BACKUP": SUCCESS). Если не success, значит есть проблемы в самой конфигурции.

Первая очередь (PRIMARY_SEND_QUEUE) - не отправленные архивные логи с основного сервера на резервный. Вторая (STANDBY_RECEIVE_QUEUE) - отправленные, но не применённые логи на резервном сервере. Т.е. если первая очередь большая, значит проблемы в транспорте. Если большая вторая очередь - проблема с резервным сервером. В нашем примере мы видим, что в очереди на отправку один архивный лог, в очереди на применение логов нет.


Приемка

Интерфейс модуля приходных накладных

При запуске Приходного модуля в первый раз он запускается из меню верхней панели: Рабочие места -> Накладные -> Приходные накладные

После первого запуска он появится в списке основного окна и его можно запускать оттуда

После запуска открывается окно приходного модуля

В верхней части окна приходного модуля находится меню управления сортировки и отбора приходов по (номеру , дате, номенклатуре и т.д.), а так же кнопки создания приходов или загрузки вручную, кнопка вызова модуля печати тд.

{width:1%}http://213.221.11.114:33899/attachments/download/2468/skachat.png!:http://213.221.11.114:33899/attachments/download/2460/%D0%9F%D1%80%D0%B8%D0%B5%D0%BC%D0%BA%D0%B0.docx

Интерфейс редактирования документа прихода
Для входа в редактирование приходного документа нужно нажать кнопку редактирования.

Откроется окно с содержимым по данному документу

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

Печатные формы модуля приходных накладных

Модуль печати запускается кнопкой «Печать», в окне приходного модуля

После нажатия кнопки «Печать» открывается модуль печати со списком выбора документов печатаемых из приходного модуля


Перемещение


StDocMove


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

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

После этого появляется форма, в которой по необходимости заполните поля.

Если Вы не задаете вручную номер акта, он выставляется системой автоматически.
После этого Вы можете производить перемещения. Для этого нажимаете кнопку Добавить. Перед Вами появится окно:

Выбираем тот товар, который нужно переместить, для этого щелкаем на кнопку … рядом с номенклатурой, перед Вами открывается

где Вы можете осуществить поиск либо номеру товара, либо по его коду, либо по наименованию. Конечно, лучше это делать по коду товара.
Вводите первые 6 цифр в поисковик и нажимаете кнопку искать Поисковик предлагает Вам перечень товаров, которые удовлетворяют Вашему запросу:

Нажимаете кнопочку Выбрать напротив нужного Вам наименования товара.

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

В столбик Количество Вы заносите количество товара, которое Вы перемещаете. После этого Вы нажимаете Сохранить.
После сохранения Вы возвращаетесь к форме на рис 1, в нижней части формы появится запись о выбранном Вами товаре.
Для того чтобы разместить этот товар на новое место вы нажимаете новый адрес, вводите в соответственные окна адрес новой ячейки, нажимаете Искать, после того как система найдет эту ячейку и вы убедитесь, что она свободна, нажимаете Выбрать.
Если в данном акте Вы хотите провести еще несколько перемещений, повторите все действия по новой, если нет, то нажмите Сохранить.
А затем переведите статус акта в Подтвержденный. Помните, что пока Ваш акт находится в статусе черновика, то ячейки являются свободными в системе и могут быть заняты другими пользователями.


StDocNew - Переупаковка


Область применения


Используется в составе AC CWMS-3000(complex warehouse management system) для автоматизации процесса переупаковки товара из одних артикулов в другие.

Описание операций


Описание функций, задач, процедур

Поиск и навигация в РМ.

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

Панель навигации позволяет

Для создания новой процедуры переупаковки нажмите . После этого откроются окна с выбором контрагента, выбора типа акта и даты резерва переупаковываемой номенклатуры.

Есть 3 основных типа переупаковки:

Для добавления номенклатур в процедуру переупаковки выберите нужную вкладку (из чего переупаковываем или новая номенклатура) и нажмите на кнопку или . При добавлении исходной номенклатуры Вам откроется окно стока, аналогичное тому, что используется в модуле «Заказы». Во вкладке новая номенклатура открывается окно, аналогичное добавлению номенклатур в приход. После того, как все номенклатуры добавлены, можно приступать к переупаковке. Процедура переупаковки описывается во вкладке «Процедура переупаковки»

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


Запуск модуля Заказы


При запуске модуля Заказы в первый раз он запускается из меню верхней панели: Рабочие места -> Накладные -> Заказы

После первого запуска он появится в списке основного окна и его можно запускать от туда

После запуска открывается окно модуля Заказы


Интерфейс модуля Заказы


В верхней части окна модуля заказов, аналогично модулю приходов, находится меню управления сортировки и отбора приходов по (номеру, дате, номенклатуре номеру паллеты (PID) и т.д.), а так же кнопки создания заказов или загрузки вручную, кнопка доп. модулей, кнопка вызова модуля печати и т.д.

В средней части располагается список со всеми параметрами заказа (номер, дата, и т.д) в виде таблицы. Там же находится управление статусами заказа, а так же данные о процентах выполнения заданий, кнопка создания перемещений в случае Б/А резерва, кнопка создания прихода на основании заказа с автоматическим заполнением по номенклатуре и кол-ву и т.д.

Далее все поля несут информацию о реквизитах и датах документов заказов, а также кнопки удаления документов заказов. В нижней части как и в приходном модуле, есть несколько закладок, в которых находится несколько видов информативных таблиц. Закладка «Состав»: в ней содержится информация о составе документа, который был загружен либо заполнен вручную при создании заказа

Закладка «Задание»: здесь показаны все созданные задания на подбор товара, созданные программой согласно схеме резерва.

Закладка «Подборка заказа»: в этой закладке отображаются выполненные задания, по мере их выполнения


Интерфейс редактирование документа заказа


Для входа в редактирование документа заказа нужно нажать кнопку редактирования

Откроется окно с содержимым по данному документу

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

В табличной части есть две основные закладки – «Состав накладной» и «Адреса подбора» В закладке «Состав накладной» содержится информация о товаре и его количестве в заказе (изначальное по документу, зарезервированное по факту наличия) а так же находятся кнопки управления резервом, редактирования и вывода дополнительной информации.

Затем окно стока, с возможностью выбора и резервирования данного товара с определенного адреса или адресов.

Кнопка вызова окна редактирования количества товара (например для выравнивания количества в документе с количеством зарезервированного)

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

В закладке «Адреса подбора» содержится информация о товаре, адресах его подбора, адресах консолидации собранного, количестве, а так же кнопка удаления подбираемого (иначе кнопка отмены резерва, с возможностью частичной отмены и перемещения на адрес потерянного товара)

  1. Поле показывает зарезервированное количество
  2. Поле для ввода количества, которое нужно убрать из резерва
  3. Кнопка для выбора ячейки, куда поместить количество товара, которое было убрано из резерва (напр. если товар уже подобран и числится на ячейке консолидации но по факту нужного количества там не хватает)
  4. Кнопка для перемещения введенного в поле (b) количества в ячейку потерянного товара (Ячейка потерянного товара должна быть предварительно создана)
  5. Кнопка отмены операции изменения резерва
  6. Кнопка сохранения изменений в резерве

Редактирование сотрудников.


Для идентификации каждого человека на складе, одному физическому лицу должен соответствовать сотрудник, заведенный в системе.
Создание сотрудников осуществляется в модуле Рабочие места->Сотрудники->Менеджер сотрудников.
Первым делом необходимо создать дерево должностей, соответствующее организационной структуре предприятия.
Зайдите во вкладку Дерево должностей(1) и дважды кликните по пустому месту (если уже задано некоторое дерево, кликните ниже уже существующих ветвей).
Вы создали новую должность(2). Один клик по созданной должности откроет окно редактирования ее названия(3).
Для создания неравномерной структуры, возможен перенос должностей, т.е. создание дочерних и родительских.
Для этого нужно навести курсор на нужную должность, зажать левую кнопку мыши и переместить объект в нужное место.
Перенос родительских должностей в дочерние запрещен! При переносе должности, содержащей в себе наследников, будет перенесена вся ветвь.
В нижней части таблицы можно увидеть список всех дочерних должностей с указанным номером должности(4) и номером прямого родителя(5).

Создание и редактирование сотрудников осуществляется во вкладке Регистрация(1) этого же модуля.
Чтобы завести в систему нового сотрудника, нажмите Новый сотрудник(2). Далее выберите должность, на которую заступает сотрудник, и заполните значения ФИО.
Поля ограничения нужны при работе с магнитными картами на предприятии.
Просмотр данных о сотруднике возможен выбором должности в дереве(3) и выбором нужного сотрудника из списка принадлежащих выбранной или подчиненной выбранной должности(4).
После этого в основном окне отобразятся данные о сотруднике. Для корректировки данных нажмите Редактировать(5).


WEB-сервис для интеграции с ERP системой клиента

Инструкция по поднятию WEB-сервиса для приема документов от внешней системы

Первым делом необходимо скопировать приложение на сервер, создав под него отдельную папку. Например в /opt/http-dpc-loadxml
Логин под рутом

cd opt
mkdir http-dpc-loadxml

Скопировать туда всё содержимое архива
Узнать версию линукса:

cat /etc/issue

Узнать версию Java:

java -version

При необходимости обновиться до java 1.8 на oracle linux

yum install update
yum remove java-1.6.0-openjdk
yum remove java-1.7.0-openjdk
sudo yum install java-1.8.0-openjdk

Перейти в папку:

cd /opt/http-dpc-loadxml
java -jar http-dpc-service-0.0.1-SNAPSHOT.jar --spring.datasource.url=jdbc:oracle:thin:@192.168.50.21:1521:upl --spring.datasource.username=upl --spring.datasource.password=upl --server.servlet.contextPath=/cwms &

(указать в параметрах подключения актуальные данные для соединения с БД клиента, в примере запуск для UPL)
Важно символ & в конце не забыть! иначе приложение закроется при закрытии сессии терминала

Проверка подключения по GET запросу: http://localhost:7000/cwms/test с сервера должна вернуться строка с текущим временем сервера БД.

DB TIME:2019-06-27 08:00:34.0

Закрыть приложение можно через Kill, указав PID процесса.

Узнать PID можно из логов приложения:

2019-06-27 08:53:52.234  INFO 11032 --- [           main] ru.is.cwms.HttpDpcApplication            : Starting HttpDpcApplication on HOME-PC with PID 11032 (started by HOME in D:\work Дима\java_projects\CwmsHttp)
2019-06-27 08:53:52.238  INFO 11032 --- [           main] ru.is.cwms.HttpDpcApplication            : No active profile set, falling back to default profiles: default
2019-06-27 08:53:53.909  INFO 11032 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$ba3de3fa] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2019-06-27 08:53:54.455  INFO 11032 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 7000 (http)
2019-06-27 08:53:54.486  INFO 11032 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]

В данном случае PID - 11032. Так же PID можно узнать же в папке с программой, посмотрев содержимое файла application.pid

cat application.pid

Выведет на экран 11032.
Для проверки установить, например, для Google Chrome расширение Advanced REST client.
Во вкладке HTTP request методом POST отправить запрос, указав соответствующий URL:

В конкретном случае URL имеет следующий вид: http://192.168.50.21:7000/cwms/ws/UPL.NOM
Где UPL.NOM - значение поля ALIAS DPC-задачи по загрузке номенклатур.


WEB-сервис для интеграции с ERP системой клиента

Инструкция по поднятию WEB-сервиса для приема документов от внешней системы

Первым делом необходимо скопировать приложение на сервер, создав под него отдельную папку. Например в /opt/http-dpc-loadxml
Логин под рутом

cd opt
mkdir http-dpc-loadxml

Скопировать туда всё содержимое архива
Узнать версию линукса:

cat /etc/issue

Узнать версию Java:

java -version

При необходимости обновиться до java 1.8 на oracle linux

yum install update
yum remove java-1.6.0-openjdk
yum remove java-1.7.0-openjdk
sudo yum install java-1.8.0-openjdk

Перейти в папку:

cd /opt/http-dpc-loadxml
java -jar http-dpc-service-0.0.1-SNAPSHOT.jar --spring.datasource.url=jdbc:oracle:thin:@192.168.50.21:1521:upl --spring.datasource.username=upl --spring.datasource.password=upl --server.servlet.contextPath=/cwms &

(указать в параметрах подключения актуальные данные для соединения с БД клиента, в примере запуск для UPL)
Важно символ & в конце не забыть! иначе приложение закроется при закрытии сессии терминала

Проверка подключения по GET запросу: http://localhost:7000/cwms/test с сервера должна вернуться строка с текущим временем сервера БД.

DB TIME:2019-06-27 08:00:34.0

Закрыть приложение можно через Kill, указав PID процесса.

Узнать PID можно из логов приложения:

2019-06-27 08:53:52.234  INFO 11032 --- [           main] ru.is.cwms.HttpDpcApplication            : Starting HttpDpcApplication on HOME-PC with PID 11032 (started by HOME in D:\work Дима\java_projects\CwmsHttp)
2019-06-27 08:53:52.238  INFO 11032 --- [           main] ru.is.cwms.HttpDpcApplication            : No active profile set, falling back to default profiles: default
2019-06-27 08:53:53.909  INFO 11032 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$ba3de3fa] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2019-06-27 08:53:54.455  INFO 11032 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 7000 (http)
2019-06-27 08:53:54.486  INFO 11032 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]

В данном случае PID - 11032. Так же PID можно узнать же в папке с программой, посмотрев содержимое файла application.pid

cat application.pid

Выведет на экран 11032.
Для проверки установить, например, для Google Chrome расширение Advanced REST client.
Во вкладке HTTP request методом POST отправить запрос, указав соответствующий URL:

В конкретном случае URL имеет следующий вид: http://192.168.50.21:7000/cwms/ws/UPL.NOM
Где UPL.NOM - значение поля ALIAS DPC-задачи по загрузке номенклатур.


Wiki

- RedMine

---
h2. Маркировка sGtin

- Честный знак
---

Складские процессы

- Приемка

- Отгрузка

- Инвентаризация

- Переупаковка

- Перемещение

- Ответственное хранение


Инструкции CWMS-3000

- Рабочие места

- Доступы

- Сервисы

- Константы

- Шрифты

- Маски штрихкодов

- Настройка ТСД

- Интеграции

- WEB-сервис для интеграции с ERP системой клиента

- Настройка Сервера БД и Сервера Приложений


Инструкции Oracle для CWMS-3000

- Настройка CWMS на ПК

- База для нового клиента

- Экспорт БД

- Инструкция по разворачиванию StanBy сервера

- Настройка оповещения работоспособности StandBy на email.

- Очистка архивных логов RMAN.

- Проверка архивных логов через MobaXterm.

- Удаление архивных логов через Планировщик заданий.

- Настройка Сервера БД и Сервера Приложений

- Политика Резервного Копирования

- Отчет DGMGRL для контроля синхронизации StandBy


Если в разделе Wiki не можете найти необходимую документацию - напишите на наш eMail.


Windows ТСД

Для определения двухмерных штрихкодов, необходимо использовать сборку для терминала Windows использующую DataWedge или использовать терминал на Android.

* Настройка CWMS на терминале Windows с DataWedge

* Настройка CWMS на терминале Windows без DataWedge


WinSW

Windows Service Wrapper (WinSW) - это модуль, который оборачивает любое приложение и управляет им как службой Windows.

1) Необходимо скачать WinSW:

2) Создать папку на локальном диске с названием (Например myapp)

3) Перенести ранее скаченный файл WinSW в созданную нами папку.

4) Переименовать файл WinSW в название сервиса, который вы будете оборачивать, как службу. (Например myapp)

5) Создать одноименный файл XML, в данном случае myapp.xml

6) Открыть файл на редактирование с помощью текстового редактора, в данном случае используем notepad++

7) Копируем пример конфигурации ниже

<service>
<id>myapp</id>
<name>myapp(powered by WinSW)</name>
<description>run myapp service</description>
<executable>java</executable>
<arguments>-jar mcis-mobile-service_0.0.6-WOL.jar 
  --spring.datasource.url=jdbc:oracle:thin:@192.168.1.89:1521:tst 
  --spring.datasource.username=tst 
  --spring.datasource.password=st 
  --server.port=10081 
  --app.session.timeout=900000
</arguments>
<logpath>%BASE%\logs</logpath>
<log mode="roll-by-size">
<sizeThreshold>10240</sizeThreshold>
<keepFiles>8</keepFiles>
</log>
<delayedAutoStart>true</delayedAutoStart>
<onfailure action="restart" delay="20 sec"/>
<workingdirectory>C:\myapp</workingdirectory>
<priority>normal</priority>
</service>

8) Вставляем конфигурацию в файл открытый на редактировании.

9) Запустить myapp.exe install [options], чтобы установить службу.

10) Запустить, чтобы использовать. myapp.exe start [путь до myapp.xml] --no-elevate

11) Запустить, чтобы увидеть, запущен ли ваш сервис. myapp.exe status [путь до myapp.xml]


База для нового клиента


1.Патч для инстанса BOX
Выгрузить патчсет с базы разработки и применить патч сет на инстанс №5 BOX

2.Создание нового инстанса базы клиента
Скрипты по созданию инстанса клиента в базе разработки (если клиент не заведен ранее):

INSERT INTO tst.cis_copy
  (N,FD,TD,NAME,DSC,WRAP,
  LICENSE_CNT,MOBILE_LICENSE_CNT,DPC_MAIL,
  EXPIRE,DSC_BACKUP,NEXT_PATCH_DATE)
VALUES
 (<номер нового инстанса>,kk_common.GetFD,kk_common.GetTD,'<ПОЛЬЗ_БД>-<ИНСТАНС_БД>','Реквизиты подключения к клиенту',1,
  <Кол-во Стац Лицензий>,<Кол-во Моб Лицензий>,<Адрес клиента для рассылки эл писем>,
  <Срок лицензии до>,'<Реквизиты сервера БД>',<дата след патча>)
/

Скрипт создание записи о проведенном патче:

INSERT INTO cis_ddl_changes_applyed
(CIS_DDL_CHANGES_N,CIS_COPY_N,USER_N_APPLYED,FD,TD,N,PATCHSET_N)
select max(CIS_DDL_CHANGES_N) 
, <порядковый номер инстанса> , <0 или свой номер из списка сотрудников>, sysdate , kk_common.GetTD , 0 , -9
 from tst.cis_ddl_changes_applyed where CIS_COPY_N = 5
/

3.Экспорт базы пользователя BOX
Создать экспорт пользователя BOX Экспорт БД
Заархивировать экспорт ZIP, RAR
Передать файл клиенту
Настройка Сервера БД


Без клиента Oracle


Решение
1) Зайти в программу cwms3000

2) Далее появляется окно с подключением к базе.

3) Вводим данные:
• Имя пользователя БД
• Пароль БД
• Строка соединения (ip БД:1521:sid)
• Подгружать модули TRUE
• Ставим галочку NET
• Жмём ок
4) Далее попросит выгрузить модули, выгружаем, после чего программа запуститься.

Выберите файл ниже и нажмите "Скачать"
Или просто нажмите на эту картинку -


Выгрузка

- Выгрузка информации о прохождении статусов приходов по количеству и качеству

- Выгрузка информации о прохождении статусов заказов по количеству и качеству

- Выгрузка информации о перемещении товара по складу по количеству и качеству

- Выгрузка информации о проведённой переупаковке

- Выгрузка результатов инвентаризации

- Выгрузка претензии


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

Описание

Тег Название поля Обяз-ный Тип данных Тип данных
<DOC>
<DOC_MOVE>
<NUMBER>
</NUMBER>
Номер прихода Да string
<STATUS>
</STATUS>
Статус Да integer 3-отгружен; 2- резерв; 8-собран; 4-недостаток на складе
<DATE>
</DATE>
Дата и время перемещения Да string
<TYPE>
</TYPE>
Тип поставки Нет string
<CONTENT> Нет
<CODE CODE_ID=’’> Код товара Нет
<CNT>
</CNT>
Количество зарезервированного на складе товара Да integer
<UNIT_TYP>
</UNIT_TYP>
Ед. измерения Да string
<ST_PART>
</ST_PART>
Идентификатор (номер) партии Да string
<NOM_TYP>
</NOM_TYP>
Состояние единицы учета -словарь №422 Да string Доступные значения:
1-кондиция; 3-брак; Если предварительный приход то «1»
<EXPIRE_DATE>
</EXPIRE_DATE>
Срок годности Да string
<ADDRESS_FROM>
</ADDRESS_FROM>
Откуда перемещаем –
адрес ячейки
Да string
<ADDRESS_TO>
</ADDRESS_TO>
Куда перемещаем – адрес ячейки Да string
<STORE_AREA_FROM>
</STORE_AREA_FROM>
Да string
<STORE_AREA_TO>
</STORE_AREA_TO>
Да string
</CODE>
</CONTENT>
</DOC_IN>
</DOC>

Пример XML

<?xml version="1.0" encoding="Windows-1251" standalone="yes"?>
<!-- Created with Liquid XML Studio Developer Edition 8.1.7.2743 (http://www.liquid-technologies.com) -->
<DOC>
    <DOC_MOVE>        <!-- заказ-->
        <NUMBER>00110</NUMBER>        <!-- номер прихода-->
        <DATE>01.05.2005-15.30.00</DATE>        <!-- дата и время -->
        <STATUS>2</STATUS>        <!-- статус заказа 3-отгружен; 2- резерв; 8-собран; 4-недостаток на складе-->
        <TYPE> </TYPE>     <!-- тип поставки-->
        <CONTENT>            <!-- состав прихода-->
            <CODE CODE="12RSS">                <!-- код товара-->
                <CNT>10</CNT>                  <!-- количество зарезервированного на складе-->
                <UNIT_TYP>шт.</UNIT_TYP>                <!--ед измер-->
                <ST_PART>F12345</ST_PART>                <!-- идентификатор (номер) партии-->
                <NOM_TYP>1</NOM_TYP>                <!-- состояние единицы учета словарь №422 (кондиция - 1 /брак - 3)-->
                <EXPIRE_DATE>01.05.2010</EXPIRE_DATE>          <!-- срок годности -->
                <ADDRESS_FROM>28-01-05-01</ADDRESS_FROM>
                <ADDRESS_TO>28-01-01-01</ADDRESS_TO>
                <STORE_AREA_FROM>ХРАНЕНИЕ</STORE_AREA_FROM>
                <STORE_AREA_TO>ПОДБОРКА</STORE_AREA_TO>
            </CODE>            <!-- код товара-->
        </CONTENT>         <!-- состав прихода-->
    </DOC_MOVE>    <!-- заказ -->
</DOC>

Параметры DPC

Параметр Сокр
параметр
Описание Обязательный Значение по умолчанию
file Маска файла для загрузки Да
PDocN Номер акта перемещения Да
PStatusList Список статусов акта перемещения для которых генерируется flashback Нет 0

Выгрузка информации о проведённой переупаковке

Описание

Тег Название поля Обяз-ный Тип данных Тип данных
<DOC_COPACK>
<NUMBER>
</NUMBER>
Номер документа Да string Номер документа, логический
<id_doc>
</id_doc>
Уникальный идентификатор другой системы Да string Системный для синхронизации с системой управления (СУ)
<DATE>
</DATE>
дата и время в формате 'dd.mm.yyyy hh24:mi:ss' Да string Дата документа
<CONTENTS> Список Да
<CONTENT> Элемент списка Хоть один Контейнер для двух списков, второй список может отсутствовать
<CODE_FROM CODE_ID=""> Элемент списка 1 Хоть один элемент string Код номенклатуры, из которого переупаковываем
<CNT>
</CNT>
Количество Да integer Кол-во
<UNIT_NAME>
</UNIT_NAME>
Сокращение ед. учета Да string В каких ед. измер., термин словаря №354, R_N ссылается на код из словаря №362
<ST_PART>
</ST_PART>
Номер партии Нет string Партия
<EXPIRE_DATE>
</EXPIRE_DATE>
Срок годности, до Нет string Формат dd.mm.yyyy
<NOM_TYP>
</NOM_TYP>
Состояние единицы учета Да integer Словарь №422 (1-кондиция, 3-брак)
</CODE_FROM>
<CODE_TO CODE_ID=""> Элемент списка 2 Нет string Код номенклатуры, в который переупаковываем
<CNT>
</CNT>
Количество Да integer Кол-во
<UNIT_NAME>
</UNIT_NAME>
Сокращение ед. учета Да string В каких ед. измер., см.выше
<ST_PART>
</ST_PART>
Номер партии Нет string Партия
<EXPIRE_DATE>
</EXPIRE_DATE>
Срок годности, до Нет string Формат dd.mm.yyyy
<NOM_TYP>
</NOM_TYP>
Состояние единицы учета Да integer Словарь №422 (1-кондиция, 3-брак)
</CODE_TO>
</CONTENT>
</CONTENTS>
</DOC_COPACK>

Пример XML

<?xml version="1.0" encoding="Windows-1251" standalone="yes"?>
<DOC_COPACK>
    <!-- документ переупаковки -->
    <NUMBER>111111</NUMBER>
    <!-- номер документа -->
    <id_doc>b542c497-2310-11dd-8e3b-000423dc1d39</id_doc>
    <DATE>01.05.2005-15.30.00</DATE>
    <!--дата и время-->
    <CONTENTS>
        <!-- состав документа переупаковки -->
        <CONTENT>
            <!-- состав переупаковки-->
            <CODE_FROM CODE_ID="ДВЕРЬ">
                <!-- код товара используемый как материал-->
                <CNT>10</CNT>
                <!-- количество-->
                <UNIT_NAME>шт</UNIT_NAME>
                <!--сокращение ед учета (термин словаря №354, R_N ссылается на код из словаря №362)-->
                <ST_PART_N>F12345</ST_PART_N>
                <!-- партия-->
                <EXPIRE_DATE>01.05.2010</EXPIRE_DATE>
                <!-- срок годности-->
                <NOM_TYP>1</NOM_TYP>
                <!-- состояние единицы учета словарь №422 (кондиция - 1 /брак - 3)-->
            </CODE_FROM>
            <!-- код товара-->
            <CODE_FROM CODE_ID="Ручка">
                <!-- код товара используемый как материал-->
                <CNT>10</CNT>
                <!-- количество-->
                <UNIT_NAME>шт</UNIT_NAME>
                <!--сокращение ед учета (термин словаря №354, R_N ссылается на код из словаря №362)-->
                <ST_PART_N>F12345</ST_PART_N>
                <!-- номер партии-->
                <EXPIRE_DATE>01.05.2010</EXPIRE_DATE>
                <!-- срок годности-->
                <NOM_TYP>1</NOM_TYP>
                <!-- состояние единицы учета словарь №422 (кондиция - 1 /брак - 3)-->
            </CODE_FROM>
            <!-- код товара-->
            <CODE_TO CODE_TO_ID="Дверь с Ручкой">
                <!-- код товара получаемы после формирования комплекта или разсформирования-->
                <CNT>10</CNT>
                <!-- количество-->
                <UNIT_NAME>шт</UNIT_NAME>
                <!--сокращение ед учета (термин словаря №354, R_N ссылается на код из словаря №362)-->
                <ST_PART_N>F12345</ST_PART_N>
                <!-- номер партии-->
                <EXPIRE_DATE>01.05.2010</EXPIRE_DATE>
                <!-- срок годности-->
                <NOM_TYP>1</NOM_TYP>
                <!-- состояние единицы учета словарь №422 (кондиция - 1 /брак - 3)-->
            </CODE_TO>
            <!-- код товара -->
        </CONTENT>
        <!-- состав переупаковки-->
        <CONTENT>
            <!-- состав переупаковки-->
            <CODE_FROM CODE_ID="Дверь с Ручкой">
                <!-- код товара получаемы после формирования комплекта или разсформирования-->
                <CNT>10</CNT>
                <!-- количество-->
                <UNIT_NAME>шт</UNIT_NAME>
                <!--сокращение ед учета (термин словаря №354, R_N ссылается на код из словаря №362)-->
                <ST_PART_N>F12345</ST_PART_N>
                <!-- номер партии-->
                <EXPIRE_DATE>01.05.2010</EXPIRE_DATE>
                <!-- срок годности-->
                <NOM_TYP>1</NOM_TYP>
                <!-- состояние единицы учета словарь №422 (кондиция - 1 /брак - 3)-->
            </CODE_FROM>
            <!-- код товара -->
            <CODE_TO CODE_ID="ДВЕРЬ">
                <!-- код товара используемый как материал -->
                <CNT>10</CNT>
                <!-- количество -->
                <UNIT_NAME>шт</UNIT_NAME>
                <!--сокращение ед учета (термин словаря №354, R_N ссылается на код из словаря №362) -->
                <ST_PART_N>F12345</ST_PART_N>
                <!-- номер партии -->
                <EXPIRE_DATE>01.05.2010</EXPIRE_DATE>
                <!-- срок годности -->
                <NOM_TYP>1</NOM_TYP>
                <!-- состояние единицы учета словарь №422 (кондиция - 1 /брак - 3)-->
            </CODE_TO>
            <!-- код товара -->
            <CODE_TO CODE_ID="Ручка">
                <!-- код товара используемый как материал -->
                <CNT>10</CNT>
                <!-- количество -->
                <UNIT_NAME>шт</UNIT_NAME>
                <!-- сокращение ед учета (термин словаря №354, R_N ссылается на код из словаря №362) -->
                <ST_PART_N>F12345</ST_PART_N>
                <!-- номер партии -->
                <EXPIRE_DATE>01.05.2010</EXPIRE_DATE>
                <!-- срок годности -->
                <NOM_TYP>1</NOM_TYP>
                <!-- состояние единицы учета словарь №422 (кондиция - 1 /брак - 3) -->
            </CODE_TO>
            <!-- код товара -->
        </CONTENT>
        <!-- состав переупаковки -->
    </CONTENTS>
    <!-- состав документа  переупаковки -->
</DOC_COPACK>

Параметры DPC

Параметр Сокр
параметр
Описание Обязательный Значение по умолчанию
contragent_n p1 Номер контрагента Да
store_n p2 Номер склада Да
file p3 Маска файла для загрузки Да
PStatusList p5 Тип документа переупаковки Да
PStatusList p15 Строка якорей - в стандартном модуле не используется. Нет

Выгрузка информации о прохождении статусов заказов по количеству и качеству

Описание

Тег Название поля Тип данных Тип данных
<DOC>
<DOC_OUT>
<NUMBER>
</NUMBER>
Номер заказа String
<id_doc>
</id_doc>
Идентификатор документа во внешней системе String
<STATUS>
</STATUS>
Системный номер текущего статуса integer 3-отгружен; 2- резерв; 8-собран; 4-недостаток на складе
<STATUS_DSC>
</STATUS_DSC>
Описание статуса, словарь 414 String
<OLD_STATUS>
</OLD_STATUS>
Системный номер предыдущего статуса integer
<OLD_STATUS_DSC>
</OLD_STATUS_DSC>
Описание статуса, словарь 414 String
<TYPE>
</TYPE>
Тип документа String
<CONTENT>
<CODE CODE=""> Код товара String
<CNT>
</CNT>
Количество товара Integer
<ACTUAL_CNT>
</ACTUAL_CNT>
Изначально требуемое количество Integer
<UNIT_TYPE>
</UNIT_TYPE>
Сокращение ед. измерения (шт кор и тд) String
<ST_PART>
</ST_PART>
Номер партии String
<EXPIRE_DATE>
</EXPIRE_DATE>
Срок годности DATE
<NOM_TYPE>
</NOM_TYPE>
Состояние единицы учета String словарь №422 (кондиция - 1 /брак - 3)
<SUB_NOM_TYPE>
</SUB_NOM_TYPE>
Сокращение ед. измерения градации Integer
</CODE>
<PALL_CONTAINERS> Узел содержащий все КГУ паллеты
<PALL_CONTAINER PALL_KGU=""> КГУ паллеты String
<CONTAINERS> Узел содержащий все КГУ коробов
<CONTAINER BOX_KGU=""> КГУ короба String
<STAMP>
</STAMP>
Марка String
</CONTAINER>
</CONTAINERS>
</PALL_CONTAINER>
</PALL_CONTAINERS>
</CONTENT>
</DOC_OUT>
</DOC>

Пример XML

<?xml version="1.0" encoding="Windows-1251" standalone="yes"?>
<DOC>
     <DOC_OUT> <!--  заказ -->
          <NUMBER>020295002</NUMBER> <!--  номер заказа --> <!--  Тип данных string  -->
          <ID_DOC/> <!--  идентификатор документа во внешней системе --> <!--  Тип данных string  -->
          <STATUS>8</STATUS> <!--  Системный номер текущего статуса  --> <!--  Тип данных integer  -->
          <STATUS_DSC>Заказ собран</STATUS_DSC> <!--  Описание статуса, словарь №414  --> <!--  Тип данных string  -->
          <OLD_STATUS>3</OLD_STATUS> <!--  Системный номер предыдущего статуса  --> <!--  Тип данных integer  -->
          <OLD_STATUS_DSC>Отгружен</OLD_STATUS_DSC> <!--  Описание статуса, словарь №414  --> <!--  Тип данных string  -->
          <TYPE>заказ клиента_ира</TYPE> <!--  Тип документа  --> <!--  Тип данных string  -->
          <CONTENT> <!--  Узел состава заказа  -->
               <CODE CODE="5858756875785"> <!--  код товара --> <!--  Тип данных string  -->
                    <CNT>5</CNT> <!--  количество зарезервированного на складе --> <!--  Тип данных integer  -->
                    <ACTUAL_CNT>5</ACTUAL_CNT> <!--  изначально требуемое количество --> <!--  Тип данных integer  -->
                    <UNIT_TYPE>шт</UNIT_TYPE> <!-- Учётная единица --> <!--  Тип данных string  -->
                    <ST_PART/> <!--  номер партии --> <!--  Тип данных string  -->
                    <EXPIRE_DATE/> <!--  срок годности  --> <!--  Тип данных DATE  -->
                    <NOM_TYPE>Кондиция</NOM_TYPE> <!--  состояние единицы учета словарь №422 (кондиция - 1 /брак - 3) --> <!--  Тип данных string  -->
                    <SUB_NOM_TYPE>0</SUB_NOM_TYPE> <!--  состояние градации единицы учета словарь №496  --> <!--  Тип данных integer  -->
                </CODE>
                <PALL_CONTAINERS> <!--  Узел содержащий все КГУ паллеты  -->
                    <PALL_CONTAINER PALL_KGU="00146071238200003900"> <!--  КГУ Паллеты  --> <!--  Тип данных string  -->
                         <CONTAINERS> <!--  Узел содержащий все КГУ Коробов  -->
                           <CONTAINER BOX_KGU="456789456789456789"> <!--  КГУ Короба  --> <!--  Тип данных string  -->
                              <STAMP>01030410947874432155Qbag!94Zjqw</STAMP> <!--  Марка  --> <!--  Тип данных string  -->
                              <STAMP>01030410947874432155Qbag!95Zjqw</STAMP> <!--  Марка  --> <!--  Тип данных string  -->
                              <STAMP>01030410947874432155Qbag!93Zjqw</STAMP> <!--  Марка  --> <!--  Тип данных string  -->
                              <STAMP>01030410947874432155Qbag!92Zjqw</STAMP> <!--  Марка  --> <!--  Тип данных string  -->
                              <STAMP>01030410947874432155Qbag!91Zjqw</STAMP> <!--  Марка  --> <!--  Тип данных string  -->
                           </CONTAINER>
                         </CONTAINERS>
                    </PALL_CONTAINER>
               </PALL_CONTAINERS>
         </CONTENT>
     </DOC_OUT>
</DOC>

Параметры DPC

Параметр Сокр
параметр
Описание Обязательный Значение по умолчанию
file Маска файла для загрузки Да
PDocN Номер заказа Да
PStatusList Список статусов заказа для которых генерируется flashback Нет 0

Выгрузка информации о прохождении статусов приходов по количеству и качеству

Описание

Тег Название поля Тип данных Тип данных
<DOC>
<DOC_IN>
<NUMBER>
</NUMBER>
Номер прихода string Логический номер поставки. Внутренний номер системы CWMS3000
<WMS_ID>
</WMS_ID>
Системный номер документа в ВМС integer
<INVOICE>
</INVOICE>
Инвойс integer
<ID_DOC>
</ID_DOC>
Уникальный идентификатор в системе клиента string Системный номер из УС клиента
<DOC_OUT_ID>
</DOC_OUT_ID>
Связанный заказ integer
<DATE>
</DATE>
Дата и время прихода Date Дата инвойса в формате 'dd.mm.yyyy hh24:mi:ss'
<TYPE>
</TYPE>
Тип поставки 1-приход; 2-возврат; 3-неофактур. приход string Для ЖЗМа =1
<STATUS>
</STATUS>
Системный номер текущего статуса integer 1-Черновик
2-Принят
3-Подтвержден
4-Приходован на склад
5-Принят по факту
6-Размещение по адресам
<STATUS_DSC>
</STATUS_DSC>
Описание статуса, словарь 366 string
<PUT_ON_STORE_FD>
Дата размещения на сток Date Дата размещения в сток
<ID_SUPPLIER>
</ID_SUPPLIER>
клиентский номер поставщика string
<INSPECTOR>
</INSPECTOR>
Системный номер сотрудника контроллера integer
<CONTENT>
<CODE CODE="" TYPE=""> код товара string; integer Тип записи 0 - по документу, 1 - по факту
<CNT>
</CNT>
Количество товара integer
<CNT_COND>
</CNT_COND>
Количество товара (конд.) integer
<CNT_BRAK>
</CNT_BRAK>
Количество товара (брак) integer
<UNIT_TYPE>
</UNIT_TYPE>
Учетные единицы string Сокр. ед. измерения
<ST_PART>
</ST_PART>
Номер партии в приходе string Партия
<PART_NUM>
</PART_NUM>
Номер партии string
<EXPIRE_DATE>
</EXPIRE_DATE>
срок годности, до Date
<NOM_TYPE>
</NOM_TYPE>
Состояние единицы учета словарь №422 Integer Кондиция - 1; брак - 3
<SUB_NOM_TYPE>
</SUB_NOM_TYPE>
состояние градации единицы учета словарь 496 integer
<WEIGHT/> Вес string
</CODE>
<PALL_CONTAINERS> Узел содержащий все КГУ паллеты
<PALL_CONTAINER PALL_KGU=""> КГУ паллеты string
<CONTAINERS> Узел содержащий все КГУ коробов string
<CONTAINER BOX_KGU=""> КГУ короба string
<STAMP>
</STAMP>
Марка string
</CONTAINER>
</CONTAINERS>
</PALL_CONTAINER>
</PALL_CONTAINERS>
</CONTENT>
</DOC_IN>
</DOC>

Пример XML

<?xml version="1.0" encoding="Windows-1251" standalone="yes"?>
<DOC>
    <DOC_IN>  <!-- приходный документ -->
          <NUMBER>193</NUMBER> <!-- номер прихода --> <!-- Тип данных string -->
          <WMS_ID>8911903</WMS_ID> <!-- Системный номер документа в ВМС --> <!-- Тип данных integer -->
          <INVOICE>1234567892</INVOICE> <!-- Инвойс --> <!-- Тип данных integer -->
          <ID_DOC>testing</ID_DOC> <!-- уникальный идентификатор в системе клиента --> <!-- Тип данных string -->
          <DOC_OUT_ID>OUT_DOC</DOC_OUT_ID> <!-- Связаный заказ --> <!-- Тип данных integer -->
          <DATE>2024-02-01T00:00:00</DATE> <!-- дата и время прихода --> <!-- Тип данных Date -->
          <TYPE>поставка_ира</TYPE> <!-- тип поставки --> <!-- Тип данных string -->
          <STATUS>6</STATUS> <!-- Системный номер текущего статуса --> <!-- Тип данных integer -->
          <STATUS_DSC>Размещен</STATUS_DSC> <!-- Описание статуса, словарь №366 --> <!-- Тип данных string -->
          <PUT_ON_STORE_FD/><!-- дата размещения на сток --> <!-- Тип данных Date -->
          <ID_SUPPLIER>34234234234</ID_SUPPLIER> <!-- Клиентский номер поставщика --> <!-- Тип данных string -->
          <INSPECTOR>4755</INSPECTOR> <!-- Системный номер сотрудника контролера --> <!-- Тип данных integer -->
          <CONTENT> <!-- состав прихода -->
               <CODE CODE="5858756875785" TYPE="1"> <!-- код товара --> <!-- Тип данных string --> <!-- Тип записи 0-по документу 1 -по факту --> <!-- Тип данных integer -->
                    <CNT>5</CNT> <!-- количество --> <!-- Тип данных integer -->
                    <CNT_COND>5</CNT_COND> <!-- количество кондиции --> <!-- Тип данных integer -->
                    <CNT_BRAK>0</CNT_BRAK> <!-- количество брака --> <!-- Тип данных integer -->
                    <UNIT_TYPE>1</UNIT_TYPE><!-- Учётная единица --> <!-- Тип данных string -->
                    <ST_PART>23233</ST_PART> <!-- номер партии в приходе --> <!-- Тип данных string -->
                    <PART_NUM>29032018 23122020</PART_NUM> <!-- номер партии --> <!-- Тип данных string -->
                    <EXPIRE_DATE>2020-12-23T00:00:00</EXPIRE_DATE> <!-- срок годности --><!-- Тип данных Date -->
                    <NOM_TYPE>1</NOM_TYPE> <!-- состояние единицы учета словарь №422 (кондиция - 1 /брак - 3) --> <!-- Тип данных integer -->
                    <SUB_NOM_TYPE>0</SUB_NOM_TYPE> <!-- состояние градации единицы учета словарь №496 --> <!-- Тип данных integer -->
                    <WEIGHT/> <!-- вес --> <!-- Тип данных integer -->
                </CODE>
                <CODE CODE="5858756875785" TYPE="0"> <!-- код товара --> <!-- Тип данных string --><!-- Тип записи 0-по документу 1 -по факту --> <!-- Тип данных integer -->
                    <CNT/><!-- количество --><!-- Тип данных integer -->
                    <CNT_COND>10</CNT_COND><!-- количество кондиции --><!-- Тип данных integer -->
                    <CNT_BRAK/><!-- количество брака --><!-- Тип данных integer -->
                    <UNIT_TYPE>1</UNIT_TYPE><!-- Учётная единица --><!-- Тип данных string -->
                    <ST_PART>23219</ST_PART><!-- номер партии в приходе --><!-- Тип данных string -->
                    <PART_NUM>F12345</PART_NUM><!-- номер партии --><!-- Тип данных string -->
                    <EXPIRE_DATE>2020-12-23T00:00:00</EXPIRE_DATE><!-- срок годности --><!-- Тип данных Date -->
                    <NOM_TYPE>1</NOM_TYPE><!-- состояние единицы учета словарь №422 (кондиция - 1 /брак - 3) --><!-- Тип данных integer -->
                    <SUB_NOM_TYPE>0</SUB_NOM_TYPE><!-- состояние градации единицы учета словарь №496 --><!-- Тип данных integer -->
                    <WEIGHT/><!-- вес --><!-- Тип данных integer -->
                </CODE>
                <PALL_CONTAINERS><!-- Узел содержащий все КГУ паллеты -->
                  <PALL_CONTAINER PALL_KGU="123023090000448890"><!-- КГУ Паллеты --><!-- Тип данных string -->
                    <CONTAINERS><!-- Узел содержащий все КГУ Коробов -->
                         <CONTAINER BOX_KGU="456789355890456889"><!-- КГУ Короба --><!-- Тип данных string -->
                              <STAMP>01030410946374432156Mbag!91Zjqw</STAMP><!-- Марка --><!-- Тип данных string -->
                              <STAMP>01030475947874432156Xbag!94Zjqw</STAMP><!-- Марка --><!-- Тип данных string -->
                              <STAMP>01030448947874432156Bbag!92Zjqw</STAMP><!-- Марка --><!-- Тип данных string -->
                              <STAMP>01030410947874442156Nbog!93Zjqw</STAMP><!-- Марка --><!-- Тип данных string -->
                              <STAMP>01030410947871132156Ibag!95Zjqw</STAMP><!-- Марка --><!-- Тип данных string -->
                          </CONTAINER>
                    </CONTAINERS>
                   </PALL_CONTAINER>
                 </PALL_CONTAINERS>
          </CONTENT>
     </DOC_IN>
</DOC>

Параметры DPC

Параметр Сокр
параметр
Описание Обязательный Значение по умолчанию
file Маска файла для загрузки Да
PDocN Номер приходной накладной Да
PStatusList Список статусов приходной накладной для которых генерируется flashback Нет 0

Выгрузка претензии

Описание

Тег Название поля Обяз-ный Тип данных Тип данных
< DOC_CLAIM>
<NUMBER>
</NUMBER>
Номер акта претензии Да string
<ID_DOC>
</ID_DOC>
Уникальный идентификатор другой системы Да string
<DATE>
</DATE>
Дата и время получения претензии Нет string в формате 'dd.mm.yyyy hh24:mi:ss'
<TYPE>
</TYPE>
Тип претензии Нет int 1-приход; 2-возврат; 3-неофактур. приход
<AMOUNT>
</AMOUNT>
Размер претенции выраженный в деньгах Нет double
<STATUS>
</STATUS>
Статус претензии Нет int
<DSC>
</DSC>
Описание/примечание Нет string
<CONTENTS>
<CONTENT>
<ACCEPT>
</ACCEPT>
Данные о принятии претензии Да int 0 – не принят, 1 - принят
<CODE>
</CODE>
Код номенклатуры Да string
<CNT_DOC>
</CNT_DOC>
Количество, указанное в документе Да double
<NOM_TYP_DOC>
</NOM_TYP_DOC>
Единица измерения, указанная в документе Да int термин словаря №363, R_N ссылается на код из словаря №362
<CNT_CLIENT>
</CNT_CLIENT>
Количество, полученное клиентом Да double
<NOM_TYP_CLIENT>
</NOM_TYP_CLIENT>
Единица измерения, полученная клиентом Нет int термин словаря №363, R_N ссылается на код из словаря №362
<EMPLOYEE_ERR>
</EMPLOYEE_ERR>
Сотрудник Нет string Только во флешбеках.
<NOM_UNIT>
</NOM_UNIT>
Единица учета Нет integer Термин из словаря №362
<DSC>
</DSC>
Описание/примечание Нет string
</CONTENT>
</CONTENTS>
<LINKED_DOCS> Связные документы
<DOC>
<NUMBER>
</NUMBER>
Порядковый номер документа в претензии Да string
<ID_DOC>
</ID_DOC>
Номер связного документа Да string
<DOC_TYP>
</DOC_TYP>
Тип связного документа Да int Код и словаря №416
</DOC>
</LINKED_DOCS>
</DOC_CLAIM>

Пример XML

<?xml version="1.0" encoding="Windows-1251"?>
<DOC_CLAIM>
    <NUMBER>Внутренний_номер</NUMBER>
    <ID_DOC>внешний_номер</ID_DOC>
    <DATE>01.01.1990</DATE>
    <TYPE>5</TYPE>    <!--тип претензии -->
    <AMOUNT>1</AMOUNT>
    <STATUS>1</STATUS>
    <DSC>Описание_претензии</DSC>
    <CONTENTS>
        <CONTENT>
            <ACCEPT>1</ACCEPT>
            <CODE>Номенклатура_01</CODE>
            <CNT_DOC>1</CNT_DOC>
            <NOM_TYP_DOC>1</NOM_TYP_DOC>
            <CNT_CLIENT>1</CNT_CLIENT>
            <NOM_TYP_CLIENT>1</NOM_TYP_CLIENT>
            <EMPLOYEE_ERR>Текст_ошибки</EMPLOYEE_ERR>
            <DSC>Описание</DSC>
            <NOM_UNIT>1</NOM_UNIT>
        </CONTENT>
    </CONTENTS>
    <LINKED_DOCS>
        <DOC>
            <NUMBER>Связанный_документ</NUMBER>
            <ID_DOC>Связанный_документ_внешнее_имя</ID_DOC>
            <DOC_TYPE>1</DOC_TYPE>
            <!--тип документа -->
        </DOC>
    </LINKED_DOCS>
</DOC_CLAIM>

Параметры DPC

Параметр Сокр
параметр
Описание Обязательный Значение по умолчанию
contragent_n p1 Номер контрагента Да
file p3 Маска для файла, напр, =D:\PI\DICT\IN\*.xml Да
UTF p4 Если не пустой- файл в кодировке UTF-8. Да
DOC_TYP_1
DOC_TYP_2
...
p5_1
p5_2
...
DOC_TYP_xxx=YYY - документ во внешней системе имеет тип xxx, такой тип указан в файле, в CWMS имеет тип YYY. Список типов- словарь 316 Да
DefaultDocStatus p8 Статус претензии по умолчанию, используется, если не указан в файле Нет 0
DefaultDocType p9 Документ получает такой тип, если тип не указан или не может быть определен Нет 0
debug p14 Статус претензии по умолчанию, используется, если не указан в файле Нет 0
debugEx p14ex Расширенный режим отладки Нет 0
IgnoreNom p18 Игнорировать неизвестную ном. Иначе- ошибка Нет 0

Выгрузка результатов инвентаризации

Описание

Тег Название поля Обяз-ный Тип данных Тип данных
<DOC_INV_NOTIFY> Открывающийся тэг
<DOC_NUMBER>
</DOC_NUMBER>
Номер задания на инвентаризацию Да string
<INV_DATE>
</INV_DATE>
Дата отчета Да string В формате дд.мм.гггг чч:мм:сс
<DSC>
</DSC>
Комментарий к заданию Да string
<STATUS>
</STATUS>
Статус задания Да Integer Словарь 333
<REC_COUNT>
</REC_COUNT>
Количество номенклатур Нет Integer
<SUM_STOCK>
</SUM_STOCK>
Сумма всех учетных единиц по всем номенклатурам на стоке Нет Integer
<SUM_INV>
</SUM_INV>
Сумма по инвентаризации Нет integer
<CONTENT> Да открывающийся тег – список
<REC> Нет
<CODE>
</CODE>
Код номенклатуры Да string
<CNT_STOCK>
</CNT_STOCK>
Количество на стоке Да integer
<CNT_INV>
</CNT_INV>
Количество по инвентаризации Да integer
<REC>
</CONTENT>
</DOC_INV_NOTIFY>

Пример XML

<?xml version="1.0" encoding="Windows-1251" standalone="yes"?>
<DOC_INV_NOTIFY>
    <DOC_NUMBER>Номер задания на инвентаризацию</DOC_NUMBER><!-- номер документа-->
    <INV_DATE>01.01.2011 24:00:22</INV_DATE><!-- дата среза стока ->
    <DSC>Комментарий с заданию</DSC><!-- примечание-->
    <STATUS>1</STATUS><!-- статус инвентаризации-->
    <REC_COUNT>0</REC_COUNT><!-- Всего записей в составе -->
    <SUM_STOCK>0</SUM_STOCK><!-- Всего кол-во по стоку -->
    <SUM_INV>0</SUM_INV><!-- Всего кол-во по инвентаризации -->
    <CONTENT>
        <REC>
            <CODE>Кодтовара</CODE>
            <NOM_TYP>1</NOM_TYP>
            <SUB_NOM_TYP>0</SUB_NOM_TYP>
            <CNT_STOCK>0</CNT_STOCK>
            <CNT_INV>0</CNT_INV>
        </REC>
        <REC>
            <CODE>Кодтовара</CODE>
            <NOM_TYP>1</NOM_TYP>
            <SUB_NOM_TYP>0</SUB_NOM_TYP> 
            <CNT_STOCK>0</CNT_STOCK>
            <CNT_INV>0</CNT_INV>
        </REC>
    </CONTENT>
</DOC_INV_NOTIFY>


Добавление доступов


Решение
1) Необходимо найти нужный доступ (например StBarCodeManualInputInDocNum)

2) Найти себя в сотрудниках.

3) Смотрим справа этот доступ, если он есть в списке тогда добавляем:

Если доступа нет в списке, значит он есть у данного сотрудника.
4) Ищем доступ внизу в поиске

5) Если есть редактируем его как вам нужно

6) Меняем значение в поле доступ.

3 – Разрешить
0 – Запретить

После чего сохраняем.


- Скрыть переход в ТСД через доступ


Доступы

- Создание доступов

Выберите файл ниже и нажмите "Скачать"
Или просто нажмите на эту картинку -


- Добавление доступов

Выберите файл ниже и нажмите "Скачать"
Или просто нажмите на эту картинку -


- Скрыть переход в ТСД через доступ

Выберите файл ниже и нажмите "Скачать"
Или просто нажмите на эту картинку -


Загрузка

- Загрузка справочников поставщиков, импортеров

- Загрузка файла предварительного прихода на склад

- Загрузка файла заказа

- Загрузка файла планируемых приходов и отгрузок

- Загрузка файла претензии

- Загрузка файла на переупаковку

- Загрузка файла маршрута TMS

- Загрузка файла задание на инвентаризацию


Загрузка справочников поставщиков импортеров

Описание

Выгружать не более 100 объектов в один файл!!!

Тег Название поля Обяз-ный Тип данных Тип данных
<REFERENCES_LIST> Справочник поставщиков контрагентов
<CLIENT_LIST> Да
<ORGANIZATION> Да
<ORG_ID>
</ORG_ID>
Уникальный идентификатор Да string
<SHORT_ORG_NAME>
</SHORT_ORG_NAME>
Короткое название клиента Да string
<ORG_NAME>
</ORG_NAME>
Название клиента Да string
<ADR_JUR>
</ADR_YUR>
Юридический адрес Да string
<ADDR_FACT>
</ADDR_FACT>
Фактический адрес Да string
<ORG_ACCOUNT>
</ORG_ACCOUNT>
Номер счета Нет string
<BANK_ACCOUNT>
</BANK_ACCOUNT>
Нет string
<INN>
</INN>
Нет string
<KPP>
</KPP>
Нет string
<BANK_NAME>
</BANK_NAME>
Нет string
<BIK>
</BIK>
Нет string
<OKPO>
</OKPO>
Нет string
<OKONH>
</OKONH>
Нет string
<OKVED></OKVED> Нет string
<ORG_GROUP></ORG_GROUP> Нет string
<DSC>
</DSC>
Примечание Нет string
<RESIDENT>
</RESIDENT>
Резидент Нет string (0/1) Дополнительный тег для клиента и производителя.
</ORGANIZATION>
</CLIENT_LIST>
</REFERENCES_LIST>

Примечание
Одинаково грузим поставщиков (supplier), покупателей (client), производителей (producer) – соответственно задаем правильно маску типа </br>
TYP =
Поставщик +2^1
Покупатель +2^2
Производитель +2^3
Не используется +2^4
Импортер +2^5

Пример XML

<?xml version="1.0" encoding="Windows-1251" standalone="yes"?>
<!--Справочники-->
<REFERENCES_LIST>
    <!--Справочник поставщиков контрагентов-->
      <CLIENT_LIST>
         <ORGANIZATION>
            <ORG_ID>1</ORG_ID>
            <SHORT_ORG_NAME>ООО Элитторг</SHORT_ORG_NAME>
            <ORG_NAME>"ООО Элитторг Солнечногорский р-н,34км Ленинградского ш.,полигон МАДИ,Здание №5,стр.А2"</ORG_NAME>
            <ADDR_JUR>Солнечногорский р-н,34км Ленинградского ш.,полигон МАДИ,Здание №5,стр.А2 </ADDR_JUR><!-- юр адрес-->
            <ADDR_FACT> </ADDR_FACT>  <!--факт адрес-->
            <ORG_ACCOUNT></ORG_ACCOUNT>
            <BANK_ACCOUNT></BANK_ACCOUNT>
            <INN></INN>
            <KPP></KPP>
            <BANK_NAME></BANK_NAME>
            <BIK></BIK>
            <OKPO></OKPO>
            <OKONH></OKONH>
            <ORG_GROUP></ORG_GROUP>
            <DSC></DSC>
            <RESIDENT></RESIDENT>
          </ORGANIZATION>
      </CLIENT_LIST>
</REFERENCES_LIST>

Параметры DPC

Параметр Сокр
параметр
Описание Обязательный Значение по умолчанию
contragent_n Номер контрагента Да
file Маска файла для загрузки Да
utf Строка, по ум. пустая. Если не пустая, считается, что кодировка файла UTF8 Нет 0
anchors Строка якорей - в стандартном модуле не используется Нет
ADDR_FACTMustExists (0/1) Параметр определяет обязательность указания тега ADR_FACT - Фактический адрес Нет 0
ADDR_YURMustExists (0/1) Параметр определяет обязательность указания тега ADR_YR - Юридический адрес Нет 0
DESCMustExists (0/1) Параметр определяет обязательность указания соответствующего тега Нет 0
IDMustExists (0/1) Параметр определяет обязательность указания соответствующего тега. Идентификатор Нет 0

Загрузка файла задание на инвентаризацию

Описание

Тег Название поля Обяз-ный Тип данных Тип данных
<DOC_INV> открывающийся тег
<DOC_NUMBER>
</DOC_NUMBER>
Номер задания на инвентаризацию Да string
<INV_DATE>
</INV_DATE>
Дата задания Да string В формате дд.мм.гггг чч:мм:сс
<DSC>
</DSC>
Комментарий к заданию Да string
<INV_TYPE>
</INV_TYPE>
Тип задания Да int Словарь 334
<CONTENT> открывающийся тег– список
<CODE>
</CODE>
Код номенклатуры Нет int
</CONTENT>
</DOC_INV>

Пример XML

<?xml version="1.0" encoding="windows-1251"?>
<DOC_INV>
    <DOC_NUMBER>Номер задания на инвентаризацию</DOC_NUMBER>
    <INV_DATE>01.01.2011 23:00:22</INV_DATE>
    <DSC>Комментарий к заданию</DSC>
    <INV_TYPE>1</INV_TYPE>
    <CONTENT>
      <REC>
        <CODE>30176D</CODE>
        <NOM_TYP>1</NOM_TYP>
        <SUB_NOM_TYP>0</SUB_NOM_TYP>
      </REC>
      <REC>
        <CODE>30176D</CODE>
        <NOM_TYP>1</NOM_TYP>
        <SUB_NOM_TYP>0</SUB_NOM_TYP>
      </REC>
    </CONTENT>
</DOC_INV>


Загрузка файла заказа

Описание

Порядок строк должен обязательно совпадать
Невозможно в XML заводить несколько строчек у 1 позиции

Тег Название поля Обяз-ный Тип данных Тип данных
<DOC>
<DOC_OUT>
<NUMBER>
</NUMBER>
Номер заказа (В моем случае будет номер отгрузки) Да String
<ID_DOC>
</ID_DOC>
Уникальный идентификатор другой (внешней) системы Да String
<PRIORITY>
</PRIORITY>
Приоритет заданий на подбор (чем больше число, тем выше приоритет) Нет integer
<DELIVERY_DATE>
</DELIVERY_DATE
Планируемая дата и время доставки Да String в формате 'dd.mm.yyyy hh24:mi:ss'
<SHIPMENT_DATE>
</SHIPMENT_DATE>
Планируемая дата и время отгрузки Да String в формате 'dd.mm.yyyy hh24:mi:ss'
<DESTINATION>
</DESTINATION>
Адрес доставки Да String
<RESPONS_PERS>
</RESPONS_PERS>
Ответственное лицо Нет String
<CAR_NUMBER>
</CAR_NUMBER>
Номер машины Нет String
<CUSTOMER_ID>
</CUSTOMER_ID>
Код контрагента Да integer
<CUSTOMER>
</CUSTOMER>
Получатель (наименование) Нет String
<CUST_ADDRESS>
</CUST_ADDRESS>
Адрес получателя Нет String
<TYPE>
</TYPE>
Тип документа Нет String 1-заказ; 3-неофактуренное списание
<DSC>
</DSC>
Примечание к заказу Нет String
<CONTENT>
<CODE CODE_ID=""> Код товара Да String
<I_NOM_ID>
</I_NOM_ID>
Уникальный идентификатор номенклатуры Нет String Можно использовать вместо CODE_ID
<CNT>
</CNT>
Количество Да String
<UNIT_TYP>
</UNIT_TYP>
Сокращение ед. измерения (шт., кор) Да String
<ST_PART>
</ST_PART>
номер партии Да String
<EXPIRE_DATE>
</EXPIRE_DATE>
Срок годности Нет String
<NOM_TYP>
</NOM_TYP>
Состояние единицы учета Да String словарь №422 (кондиция - 1 /брак - 3)
<PRICE>
</PRICE>
Цена продажи Да String
<RESERVE_SCHEME>
</RESERVE_SCHEME>
Схема резерва Нет Integer
<SUB_NOM_TYP>
</SUB_NOM_TYP>
Градация кондиции и брака Нет integer словарь №496
<EXT_PARAMS> Набор доп. параметров. Нет Открывающий тег
<PARAM_NAME>
</PARAM_NAME>
Наименование дополнительного параметра Нет string
<PARAM_VALUE>
</PARAM_VALUE>
Значение дополнительного параметра Нет string
<PARAM_CAPTION>
</PARAM_CAPTION>
Описание / примечание Нет string
</EXT_PARAMS> Закрывающий тег
<NOM_CHANGE_NOM> Открывающий тег Нет Идентичные номенклатуры
<NOM> Открывающий тег Нет Одна из идентичных номенклатур
<CODE>
</CODE>
Код номенклатуры Да string
<ORD>
</ORD>
Порядок резерва Нет integer По умолчанию 1
<COEFF>
</COEFF>
Коэффициент конвертации кол-ва Да number По умолчанию 1
</NOM> Закрывающий тег
</NOM_CHANGE_NOM > Закрывающий тег
</CODE>
</CONTENT>
<EXT_PARAMS> Набор доп. параметров. Нет Открывающий тег
<PARAM_NAME>
</PARAM_NAME>
Наименование дополнительного параметра Нет string
<PARAM_VALUE>
</PARAM_VALUE>
Значение дополнительного параметра Нет string
<PARAM_CAPTION>
</PARAM_CAPTION>
Описание / примечание Нет string
</EXT_PARAMS> Закрывающий тег
</DOC_OUT>
</DOC>

Пример XML

<?xml version="1.0" encoding="Windows-1251" standalone="yes"?>
<DOC>
    <DOC_OUT>
        <!-- ТЕГ заказа-->
        <NUMBER>10101</NUMBER>
        <!-- номер заказа-->
        <ID_DOC>b542c497-2310-11dd-8e3b-000423dc1d39</ID_DOC>
        <!--уникальный идентификатор другой системы -->
        <PRIORITY>100</PRIORITY>
        <!--уникальный идентификатор другой системы -->
        <DELIVERY_DATE>2019-11-22T19:00:00</DELIVERY_DATE>
        <!-- планируемая дата и время доставки в формате 'dd.mm.yyyy hh24:mi:ss'-->
        <SHIPMENT_DATE>2019-11-22T15:00:00</SHIPMENT_DATE>
        <!-- планируемая дата и время отгрузки в формате 'dd.mm.yyyy hh24:mi:ss'-->
        <DESTINATION>Адрес доставки</DESTINATION>
        <RESPONS_PERS>Иванов В.В.</RESPONS_PERS>
        <!-- ответственное лицо-->
        <CAR_NUMBER>о256вв90</CAR_NUMBER>
        <!-- номер машины-->
        <CUSTOMER_ID>134</CUSTOMER_ID>
        <!-- код контрагента-->
        <CUSTOMER>ООО "Магазин №12"</CUSTOMER>
        <!-- получаетель-->
        <CUST_ADDRESS>г.Покров, ул.Ленина 12</CUST_ADDRESS>
        <!-- адрес получателя-->
        <TYPE>1</TYPE>
        <!-- тип документа 1-заказ; 3-неофактуренное списание-->
        <DSC>Очень нужный товар </DSC>
        <!--- примечание к заказу-->
        <CONTENT>
            <!-- состав заказа-->
            <CODE CODE_ID="12RSS">
                <!-- код товара-->
                <CNT>10</CNT>
                <!-- количество-->
                <UNIT_TYP>шт</UNIT_TYP>
                <!--сокращение ед. измерения (шт кор и тд)-->
                <ST_PART>F12345</ST_PART>
                <!-- номер партии-->
                <EXPIRE_DATE>2020-05-01</EXPIRE_DATE>
                <!-- срок годности-->
                <NOM_TYP>1</NOM_TYP>
                <!-- состояние единицы учета словарь №422 (кондиция - 1 /брак - 3)-->
                <PRICE>
                </PRICE>
                <!-- цена продажи-->
                <RESERVE_SCHEME>11</RESERVE_SCHEME>
                <!-- схема резерва-->
                <SUB_NOM_TYP>10</SUB_NOM_TYP>
                <!-- Градация кондиции/брака-->
            </CODE>
            <!-- код товара-->
        </CONTENT>
        <!-- состав заказа-->
        <EXT_PARAMS>
            <PARAM_NAME>NAME</PARAM_NAME>
            <PARAM_VALUE>VALUE</PARAM_VALUE>
            <PARAM_CAPTION>CAPTION</PARAM_CAPTION>
        </EXT_PARAMS>
        <!-- дополнительные параметры, определяемые заказчиком-->
    </DOC_OUT>
</DOC>

Параметры DPC

Параметр Сокр
параметр
Описание Обязательный Значение по умолчанию
contragent_n p1 Номер контрагента Да
store_n p2 Номер склада, должен быть согласован с типом док-та Да
file p3 Маска для файла, напр, =D:\PI\DICT\IN\*.xml Да
UTF p4 Если не пустой- файл в кодировке UTF-8. Да
DOC_TYP_1
DOC_TYP_2
...
p5_1
p5_2
...
DOC_TYP_xxx=YYY - документ во внешней системе имеет тип xxx, такой тип указан в файле, в CWMS имеет тип YYY. Список типов- словарь 316 Да
UpdateCustomer p6 (0/1) Можно ли обновлять имя заказчика и его адрес, если заказчик есть в базе, но имеет другое имя или адрес Нет 0
DefaultDocStatus p8 Какой статус имеет загруженный документ (0- создан) Да
DefaultDocType p9 Если не удается определить тип документа- каким типом его считать (внутренний для CWMS тип заказа) Да
UpdatableStatuses p10 В каких статусах можно обновлять (перезагружать) документ(,1, по ум.) Да
debug p14 Статус претензии по умолчанию, используется, если не указан в файле Нет 0
debugEx p14ex Расширенный режим отладки Нет 0
anchors p15 Якоря (строка) Нет 0
CustomerMustExists p16 (0/1) Поставщик указан в файле, не пустой, существующий. Если пустой или несуществующий- ошибка Нет 0
RespPersonMustExists p17 (0/1, по ум. 0) обязательность тега <RESP_PERSON> Нет 0
IgnoreNom p18 Игнорировать неизвестную ном. Иначе- ошибка Нет 0
UpdateMode p19 Режим обновления: 1- дописывать, 0- перезаписывать (0 по ум.) Нет 0
CheckContent p20 Число (0/1),по ум. 0. Проверка состава, если 1- нельзя загружать накладные с пустым составом Нет 0

Загрузка файла маршрута TMS

Описание

Тег Название поля Обяз-ный Тип данных Тип данных
<ROUTES>
<ROUTE>
<NUM>
</NUM>
Номер маршрута в CWMS3000 Да String
<ID_DOC>
</ID_DOC>
Номер маршрута из учётной системы клиента Да String
<PRIORITY>
</PRIORITY>
Приоритет маршрута Да Integer
<GATE>
</GATE>
Ворота загрузки маршрута (имена ячеек ворот описанных в CWMS) Да String
<DEPARTURE_FD>
</DEPARTURE_FD>
Дата и время доставки Да String в формате 'dd.mm.yyyy hh24:mi:ss'
<CAR_NUM>
</CAR_NUM>
Номер автомобиля Нет String
<DRIVER_NAME>
</DRIVER_NAME>
Водитель Нет String
<EXPEDITOR_NAME>
</EXPEDITOR_NAME>
Экспедитор Нет String
<DSC>
</DSC>
Примечание к маршруту Нет String
<ORDERS>
<ORDER>
<NUM>
</NUM>
Номер транспортного заказа в CWMS3000 Да String совпадает с номером складского заказа
<ID_DOC>
</ID_DOC>
Номер заказа из учетной системы клиента Да String
<PRIORITY>
</PRIORITY>
Приоритет заказа Да Integer
<LOAD_ORDER>
</LOAD_ORDER>
Порядок загрузки в машину Нет String
<WEIGHT>
</WEIGHT>
Вес Да float
<VOLUME>
</VOLUME>
Объём Нет float
<DSC>
</DSC>
Примечание к заказу Нет String
</ORDER>
</ORDERS>
</ROUTE>
</ROUTES>

Пример XML

<?xml version="1.0" encoding="Windows-1251"?>
<ROUTES>
<ROUTE>
<NUM>23457 Маршрут</NUM>
<ID_DOC>{434557-ddfssddf-344534sd-sdfsdf}</ID_DOC>
<PRIORITY>1</PRIORITY>
<GATE>ДОК №5</GATE>
<DEPARTURE_FD>2019-11-24T20:20:09</DEPARTURE_FD>
<CAR_NUM>EBS2543198</CAR_NUM>
<DRIVER_NAME>Васильев</DRIVER_NAME>
<EXPEDITOR_NAME>Васильев</EXPEDITOR_NAME>
<DSC>Быстро</DSC>
<ORDERS>
<ORDER>
 <NUM>test15042012</NUM>
 <ID_DOC>{43427-ddfas-344534sd-sdfsdf}</ID_DOC>
 <PRIORITY>1</PRIORITY>
 <LOAD_ORDER>1</LOAD_ORDER>
 <WEIGHT>820</WEIGHT>
 <VOLUME>5,3</VOLUME>
 <DSC>заказ1</DSC>
 </ORDER>
<ORDER>
 <NUM>test12</NUM>
 <ID_DOC>{356433-ddfas-344534sd-sasdvvgf}</ID_DOC>
 <PRIORITY>1</PRIORITY>
 <LOAD_ORDER>2</LOAD_ORDER>
 <WEIGHT>850</WEIGHT>
 <VOLUME>9,1</VOLUME>
 <DSC>заказ2</DSC>
 </ORDER>
</ORDERS>
</ROUTE>
</ROUTES>

Параметры DPC

Параметр Сокр
параметр
Описание Обязательный Значение по умолчанию
contragent_n p1 Номер контрагента Да
file p3 Маска для файла, напр, =D:\PI\DICT\IN\*.xml Да
UTF p4 Если не пустой- файл в кодировке UTF-8. Нет 0
wms_out_miss p5 Загружать ли файл при наличии в маршруте заказов,не связанных со складскими: 1 - Да, 0 - Нет Нет 0
UpdatableStatuses p10 В каких статусах можно обновлять (перезагружать) документ Нет ,1,
UpdateMode p19 Режим обновления состава маршрута: 1- дописывать, 0- перезаписывать Нет 0
debug p14 Режим отладки - не рекомендуется использовать Нет 0

Загрузка файла на переупаковку

Описание

Тег Название поля Обяз-ный Тип данных Тип данных
<DOC_COPACK>
<NUMBER>
</NUMBER>
Номер документа Да string Номер документа, логический
<id_doc>
</id_doc>
Уникальный идентификатор другой системы Да string Системный для синхронизации с системой управления (СУ)
<DATE>
</DATE>
дата и время в формате 'dd.mm.yyyy hh24:mi:ss' Да string Дата документа
<CONTENTS> Список Да
<CONTENT> Элемент списка Хоть один Контейнер для двух списков, второй список может отсутствовать
<CODE_FROM CODE_ID=""> Элемент списка 1 Хоть один элемент string Код номенклатуры, из которого переупаковываем
<CNT>
</CNT>
Количество Да integer Кол-во
<UNIT_NAME>
</UNIT_NAME>
Сокращение ед. учета Да string В каких ед. измер., термин словаря №354, R_N ссылается на код из словаря №362
<ST_PART>
</ST_PART>
Номер партии Нет string Партия
<EXPIRE_DATE>
</EXPIRE_DATE>
Срок годности, до Нет string Формат dd.mm.yyyy
<NOM_TYP>
</NOM_TYP>
Состояние единицы учета Да integer Словарь №422 (1-кондиция, 3-брак)
</CODE_FROM>
<CODE_TO CODE_ID=""> Элемент списка 2 Нет string Код номенклатуры, в который переупаковываем
<CNT>
</CNT>
Количество Да integer Кол-во
<UNIT_NAME>
</UNIT_NAME>
Сокращение ед. учета Да string В каких ед. измер., см.выше
<ST_PART>
</ST_PART>
Номер партии Нет string Партия
<EXPIRE_DATE>
</EXPIRE_DATE>
Срок годности, до Нет string Формат dd.mm.yyyy
<NOM_TYP>
</NOM_TYP>
Состояние единицы учета Да integer Словарь №422 (1-кондиция, 3-брак)
</CODE_TO>
</CONTENT>
</CONTENTS>
</DOC_COPACK>

Пример XML

<?xml version="1.0" encoding="Windows-1251" standalone="yes"?>
<DOC_COPACK>
    <!-- документ переупаковки -->
    <NUMBER>111111</NUMBER>
    <!-- номер документа -->
    <id_doc>b542c497-2310-11dd-8e3b-000423dc1d39</id_doc>
    <DATE>01.05.2005-15.30.00</DATE>
    <!--дата и время-->
    <CONTENTS>
        <!-- состав документа переупаковки -->
        <CONTENT>
            <!-- состав переупаковки-->
            <CODE_FROM CODE_ID="ДВЕРЬ">
                <!-- код товара используемый как материал-->
                <CNT>10</CNT>
                <!-- количество-->
                <UNIT_NAME>шт</UNIT_NAME>
                <!--сокращение ед учета (термин словаря №354, R_N ссылается на код из словаря №362)-->
                <ST_PART_N>F12345</ST_PART_N>
                <!-- партия-->
                <EXPIRE_DATE>01.05.2010</EXPIRE_DATE>
                <!-- срок годности-->
                <NOM_TYP>1</NOM_TYP>
                <!-- состояние единицы учета словарь №422 (кондиция - 1 /брак - 3)-->
            </CODE_FROM>
            <!-- код товара-->
            <CODE_FROM CODE_ID="Ручка">
                <!-- код товара используемый как материал-->
                <CNT>10</CNT>
                <!-- количество-->
                <UNIT_NAME>шт</UNIT_NAME>
                <!--сокращение ед учета (термин словаря №354, R_N ссылается на код из словаря №362)-->
                <ST_PART_N>F12345</ST_PART_N>
                <!-- номер партии-->
                <EXPIRE_DATE>01.05.2010</EXPIRE_DATE>
                <!-- срок годности-->
                <NOM_TYP>1</NOM_TYP>
                <!-- состояние единицы учета словарь №422 (кондиция - 1 /брак - 3)-->
            </CODE_FROM>
            <!-- код товара-->
            <CODE_TO CODE_TO_ID="Дверь с Ручкой">
                <!-- код товара получаемы после формирования комплекта или разсформирования-->
                <CNT>10</CNT>
                <!-- количество-->
                <UNIT_NAME>шт</UNIT_NAME>
                <!--сокращение ед учета (термин словаря №354, R_N ссылается на код из словаря №362)-->
                <ST_PART_N>F12345</ST_PART_N>
                <!-- номер партии-->
                <EXPIRE_DATE>01.05.2010</EXPIRE_DATE>
                <!-- срок годности-->
                <NOM_TYP>1</NOM_TYP>
                <!-- состояние единицы учета словарь №422 (кондиция - 1 /брак - 3)-->
            </CODE_TO>
            <!-- код товара -->
        </CONTENT>
        <!-- состав переупаковки-->
        <CONTENT>
            <!-- состав переупаковки-->
            <CODE_FROM CODE_ID="Дверь с Ручкой">
                <!-- код товара получаемы после формирования комплекта или разсформирования-->
                <CNT>10</CNT>
                <!-- количество-->
                <UNIT_NAME>шт</UNIT_NAME>
                <!--сокращение ед учета (термин словаря №354, R_N ссылается на код из словаря №362)-->
                <ST_PART_N>F12345</ST_PART_N>
                <!-- номер партии-->
                <EXPIRE_DATE>01.05.2010</EXPIRE_DATE>
                <!-- срок годности-->
                <NOM_TYP>1</NOM_TYP>
                <!-- состояние единицы учета словарь №422 (кондиция - 1 /брак - 3)-->
            </CODE_FROM>
            <!-- код товара -->
            <CODE_TO CODE_ID="ДВЕРЬ">
                <!-- код товара используемый как материал -->
                <CNT>10</CNT>
                <!-- количество -->
                <UNIT_NAME>шт</UNIT_NAME>
                <!--сокращение ед учета (термин словаря №354, R_N ссылается на код из словаря №362) -->
                <ST_PART_N>F12345</ST_PART_N>
                <!-- номер партии -->
                <EXPIRE_DATE>01.05.2010</EXPIRE_DATE>
                <!-- срок годности -->
                <NOM_TYP>1</NOM_TYP>
                <!-- состояние единицы учета словарь №422 (кондиция - 1 /брак - 3)-->
            </CODE_TO>
            <!-- код товара -->
            <CODE_TO CODE_ID="Ручка">
                <!-- код товара используемый как материал -->
                <CNT>10</CNT>
                <!-- количество -->
                <UNIT_NAME>шт</UNIT_NAME>
                <!-- сокращение ед учета (термин словаря №354, R_N ссылается на код из словаря №362) -->
                <ST_PART_N>F12345</ST_PART_N>
                <!-- номер партии -->
                <EXPIRE_DATE>01.05.2010</EXPIRE_DATE>
                <!-- срок годности -->
                <NOM_TYP>1</NOM_TYP>
                <!-- состояние единицы учета словарь №422 (кондиция - 1 /брак - 3) -->
            </CODE_TO>
            <!-- код товара -->
        </CONTENT>
        <!-- состав переупаковки -->
    </CONTENTS>
    <!-- состав документа  переупаковки -->
</DOC_COPACK>

Параметры DPC

Параметр Сокр
параметр
Описание Обязательный Значение по умолчанию
contragent_n p1 Номер контрагента Да
store_n p2 Номер склада Да
file p3 Маска файла для загрузки Да
PDocTyp p5 Тип документа переупаковки Да
anchors p15 Строка якорей - в стандартном модуле не используется Нет

Загрузка файла планируемых приходов и отгрузок

Описание

Тег Название поля Обяз-ный Тип данных Тип данных
<PLAN>
<NUMBER> Номер планируемой поставки/отгрузки Да int
<DATE>
</DATE>
Дата заявки Да string в формате 'dd.mm.yyyy hh24:mi:ss'
<DOC_TYPE>
</DOC_TYPE>
Тип документа Нет int Код из словаря №416
<IN_DATE>
</IN_DATE>
Планируемая дата и время прибытия Нет string в формате 'dd.mm.yyyy hh24:mi:ss'
<OUT_DATE>
</OUT_DATE>
Планируемая дата и время отбытия Нет string в формате 'dd.mm.yyyy hh24:mi:ss'
<RESPONS_PERS>
</RESPONS_PERS>
Экспедитор Нет string
<CAR_NUMBER>
</CAR_NUMBER>
Номер автомобиля Нет string
<CUSTOMER>
</CUSTOMER>
Клиент Нет string
</NUMBER>
</PLAN>

Пример XML

<?xml version="1.0" standalone="yes"?>
<PLAN>  -- ТЕГ планируемого документа
  <NUMBER="00110"> -- номер документа
    <DATE>01.05.2008</DATE> -- дата заказа
    <DOC_TYPE></DOC_TYPE> -- тип документа
    <IN_DATE>10.05.2008-19.00.00</IN_DATE> -- планируемая дата и время прибытия
    <OUT_DATE>10.05.2008-15.00.00</OUT_DATE> -- планируемая дата и время отбытия
    <RESPONS_PERS>Иванов В.В.</RESPONS_PERS> -- ответственное лицо (водитель)
    <CAR_NUMBER>о256вв90</CAR_NUMBER> -- номер машины
    <CUSTOMER>ООО "Магазин №12"</CUSTOMER> -- грузополучаетель
  </NUMBER> -- номер заказа
  <NUMBER="00111"> 
    <DATE>01.05.2008</DATE> 
    <DOC_TYPE></DOC_TYPE> 
    <IN_DATE>10.05.2008-19.00.00</IN_DATE>
    <OUT_DATE>10.05.2008-15.00.00</OUT_DATE>
    <RESPONS_PERS>Иванов В.В.</RESPONS_PERS>
    <CAR_NUMBER>о255вв90</CAR_NUMBER> 
    <CUSTOMER>ООО "Коломна"</CUSTOMER>
  </NUMBER>
</PLAN>  -- ТЕГ планируемого документа


Загрузка файла предварительного прихода на склад

Описание

Тег Название поля Обяз-ный Тип данных Тип данных
<DOC>
<DOC_IN>
<NUMBER>
</NUMBER>
Номер приходного акта Да string
<ID_DOC>
</ID_DOC>
Уникальный идентификатор другой системы Да string
<INVOICE>
</INVOICE>
Инвойс Нет string
<DOC_OUT_ID>
</DOC_OUT_ID>
ID документа заказа Нет string Исп. для возвратов, пишется в NUM_ACT прих. док-та
<DATE>
</DATE>
Дата и время приходного акта Нет string в формате 'yyyy-mm-ddThh24:mi:ss'
<IN_DATE>
</IN_DATE>
Планируемая дата и время приходного акта Нет string Если не задана - используем <INV_DATE>
<INV_DATE>
</INV_DATE>
Дата инвойса Да string В формате 'yyyy-mm-dd'
<RESPONS_PERS>
</RESPONS_PERS>
Ответственное лицо Нет string Доп. параметр заказа "Ответственное лицо".
<CAR_NUMBER>
</CAR_NUMBER>
Номер машины Нет string
<PALL>
</PALL>
Признаки груза Нет string (1 - на палетах, 0 - нет)
<EXTERNAL_FILE>
</EXTERNAL_FILE>
Ссылка на внешний файл Нет string
<TYPE>
</TYPE>
Тип поставки Да string 1-приходная накладная; 2-возврат; 3-неофактур. приход
<DSC>
</DSC>
Примечание к приходному акту Нет string
<CUSTOMER_ID>
</CUSTOMER_ID>
Идентификатор поставщика Нет string
<CUSTOMER>
</CUSTOMER>
Поставщик Нет string
<CUST_ADDRESS>
</CUST_ADDRESS>
Адрес поставщика Нет string
<URGENT>
</URGENT>
Срочность Нет integer
<CONTENT>
<CODE CODE_ID=""> Номенклатура Да string
<I_NOM_ID>
</I_NOM_ID>
Уникальный идентификатор товара Нет string Надо указать либо I_NOM_ID либо CODE
<UNIT_NAME>
</UNIT_NAME>
сокращение единицы учёта Нет string
<CNT>
</CNT>
Количество Нет float Общее количество, если есть теги <CONDITION_CNT>
<NOM_TYP>
</NOM_TYP>
Cостояние единицы учёта Нет integer словарь №422 (кондиция - 1 / брак 3)
<ST_PART> Открывающий тег
<PART_NUM>
</PART_NUM>
Номер партии Нет string
</ST_PART> Закрывающий тег
<DSC></DSC> Описание / примечание Нет string
<NOM_SUB_TYP>
</NOM_SUB_TYP>
Градация кондиции и брака Нет integer словарь №496
<EXPIRE_DATE>
</EXPIRE_DATE>
Срок годности, до Нет string
<PROD_DATE>
</PROD_DATE>
Дата производства Нет string
<PRICE>
</PRICE>
Закупочная стоимость товара во внутренней валюте Нет float
</CODE>
</CONTENT>
<EXT_PARAMS > Набор доп. параметров. Нет Открывающий тег
<PARAM_NAME>
</PARAM_NAME>
Наименование дополнительного параметра Нет string
<PARAM_VALUE>
</PARAM_VALUE>
Значение дополнительного параметра Нет string
<PARAM_CAPTION>
</PARAM_CAPTION>
Описание/примечание Нет string
</EXT_PARAMS> Закрывающий тег
</DOC_IN>
</DOC>

Пример XML

<?xml version="1.0" encoding="Windows-1251" standalone="yes"?>
<DOC>
<DOC_IN>  <!-- ТЕГ прихода-->
    <NUMBER>11111111</NUMBER> <!-- номер прихода -->
    <ID_DOC>b542c497-2310-11dd-8e3b-000423dc1d39</ID_DOC>   <!--уникальный идентификатор другой системы -->
    <INVOICE>1234567890</INVOICE> <!-- инвойс-->
    <DOC_OUT_ID>OUT_DOC</DOC_OUT_ID> <!-- заказ-->
    <DATE>2019-05-01T15:30:00</DATE> <!-- дата и время прихода в формате 'yyyy-mm-ddThh24:mi:ss'-->
    <IN_DATE>2019-05-01T15:00:00</IN_DATE> <!-- планируемая дата и время прихода в формате 'yyyy-mm-ddThh24:mi:ss' -->
    <INV_DATE>2005-05-01</INV_DATE> <!-- дата инвойс в формате 'yyyy-mm-dd'-->
    <RESPONS_PERS>Иванов В.В.</RESPONS_PERS> <!-- ответственное лицо-->
    <CAR_NUMBER>о111вв77</CAR_NUMBER> <!-- номер машины-->
    <PALL>1</PALL> <!-- признаки груза (1 - на паллетах, 0 - нет)-->
    <EXTERNAL_FILE>..\..\FILES\FOTO.JPG</EXTERNAL_FILE> <!-- ссылка на внешний файл-->
    <TYPE>1</TYPE> <!-- тип поставки 1-приход; 2-возврат; 3-неофактуренный приход-->
    <DSC>Очень нужный товар </DSC> <!--- примечание к приходу-->
    <CUSTOMER_ID>34234234234</CUSTOMER_ID> <!-- идентификатор поставщика-->
    <CUSTOMER>ООО "Магазин №12"</CUSTOMER> <!-- поставщик-->
    <CUST_ADDRESS>г.Покров, ул.Ленина 12</CUST_ADDRESS> <!-- адрес поставщика-->
    <URGENT>1</URGENT>  <!-- срочность -->
     <CONTENT> <!-- состав прихода-->
      <CODE CODE_ID="5858756875785">  <!-- код товара-->
        <I_NOM_ID>18374ddd-3328278-442dfd2d-22edd2v</I_NOM_ID> <!--идентификатор товара-->
        <UNIT_NAME>шт</UNIT_NAME> <!--сокращение ед учета (термин словаря №354, R_N ссылается на код из словаря №362)-->
        <CNT>10</CNT>  <!-- количество-->
        <ST_PART> <!-- партия-->
          <PART_NUM>F12345</PART_NUM> <!-- номер партии-->
        </ST_PART> <!-- партия-->
        <DSC>Description: Швабра обычная 700мм</DSC> 
        <NOM_SUB_TYP>0</NOM_SUB_TYP> <!-- градация кондиции и брака- словарь №496 -->
        <EXPIRE_DATE>2020-12-23</EXPIRE_DATE>  <!-- срок годности  до-->
        <PROD_DATE>2018-01-21</PROD_DATE>  <!-- дата производства-->
        <NOM_TYP>1</NOM_TYP> <!-- состояние единицы учета словарь №422 (кондиция - 1 /брак - 3)-->
        <PRICE>200</PRICE> <!-- закупочная стоимость товара во внетренней валюте-->
      </CODE>        <!-- код товара-->
      <CODE CODE_ID="5858756875785">
        <I_NOM_ID>48374d2d-5628278-46d5fd2d-25edd2v</I_NOM_ID> <!--идентификатор товара-->
        <UNIT_NAME>шт</UNIT_NAME> <!--сокращение ед учета (термин словаря №354, R_N ссылается на код из словаря №362)-->
        <CNT>102</CNT>
        <ST_PART> <!-- партия-->
          <PART_NUM>F12345</PART_NUM> <!-- номер партии-->
        </ST_PART> <!-- партия-->
        <DSC>Description: Швабра обычная 800мм</DSC>
        <NOM_SUB_TYP>0</NOM_SUB_TYP> <!-- градация кондиции и брака- словарь №496 -->
        <EXPIRE_DATE>2022-03-22</EXPIRE_DATE>  <!-- срок годности до-->
        <PROD_DATE>2019-06-08</PROD_DATE>  <!-- дата производства-->
        <NOM_TYP>1</NOM_TYP> <!-- состояние единицы учета словарь №422 (кондиция - 1 /брак - 3)-->
        <PRICE>200</PRICE> <!-- закупочная стоимость товара во внутренней валюте-->
      </CODE>
     </CONTENT> <!-- состав прихода-->
    <EXT_PARAMS>
      <PARAM>
        <PARAM_NAME> </PARAM_NAME> - Наименование доп. параметра
        <PARAM_VALUE> </PARAM_VALUE> - Значение доп. параметра
        <PARAM_CAPTION> </PARAM_CAPTION>
      </PARAM>
</DOC_IN>
</DOC>

Параметры DPC

Параметр Сокр
параметр
Описание Обязательный Значение по умолчанию
contragent_n p1 Номер контрагента Да
status или
DefaultDocStatus
p2 Статус загружаемого документа (1- черновик) Да
store_n p3 Номер склада, должен быть согласован с типом док-та. Да
file p4 Маска для файла, напр, =D:\PI\DICT\IN\*.xml. Да
DOC_TYP_1
DOC_TYP_2
...
p5_1
p5_2
...
DOC_TYP_xxx=YYY - документ во внешней системе имеет тип xxx, такой тип указан в файле, в CWMS имеет тип YYY Да
UTF p7 (строка) если непустой параметр- осуществляется перекодировка из UTF-8(' ') Да
debug p14 режим отладки Нет 0
LoadedNotSeparate p15 Разделять ли по папкам(0 - не разделять) Нет 0
anchors p16 Якоря. Не исп Нет 0
UpdatableStatuses p17 В каких статусах можно перезаливать приход (в статусе 1- всегда можно, 0- все статусы). Попытка перезалить документ в статусе не из списка и не 1- ошибка Нет 0
CheckContent p19 Число (0/1),по ум. 0. Проверка состава, если 1- нельзя загружать накладные с пустым составом Нет 0

Загрузка файла претензии

Описание

Тег Название поля Обяз-ный Тип данных Тип данных
< DOC_CLAIM>
<NUMBER>
</NUMBER>
Номер акта претензии Да string
<ID_DOC>
</ID_DOC>
Уникальный идентификатор другой системы Да string
<DATE>
</DATE>
Дата и время получения претензии Нет string в формате 'dd.mm.yyyy hh24:mi:ss'
<TYPE>
</TYPE>
Тип претензии Нет int 1-приход; 2-возврат; 3-неофактур. приход
<AMOUNT>
</AMOUNT>
Размер претенции выраженный в деньгах Нет double
<STATUS>
</STATUS>
Статус претензии Нет int
<DSC>
</DSC>
Описание / примечание Нет string
<CONTENTS>
<CONTENT>
<ACCEPT>
</ACCEPT>
Данные о принятии претензии Да int 0 – не принят, 1 - принят
<CODE>
</CODE>
Код номенклатуры Да string
<CNT_DOC></CNT_DOC> Количество, указанное в документе Да double
<NOM_TYP_DOC>
</NOM_TYP_DOC>
Единица измерения, указанная в документе Да int термин словаря №363, R_N ссылается на код из словаря №362
<CNT_CLIENT>
</CNT_CLIENT>
Количество, полученное клиентом Да double
<NOM_TYP_CLIENT>
</NOM_TYP_CLIENT>
Единица измерения, полученная клиентом Нет int термин словаря №363, R_N ссылается на код из словаря №362
<EMPLOYEE_ERR>
</EMPLOYEE_ERR>
Сотрудник Нет string Только во флешбеках.
<NOM_UNIT>
</NOM_UNIT>
Единица учета Нет integer Термин из словаря №362
<DSC>
</DSC>
Описание / примечание Нет string
</CONTENT>
</CONTENTS>
<LINKED_DOCS> Связные документы
<DOC>
<NUMBER>
</NUMBER>
Порядковый номер документа в претензии Да string
<ID_DOC>
</ID_DOC>
Номер связного документа Да string
<DOC_TYP>
</DOC_TYP>
Тип связного документа Да int Код и словаря №416
</DOC>
</LINKED_DOCS>
</DOC_CLAIM>

Пример XML

<?xml version="1.0" encoding="Windows-1251"?>
<DOC_CLAIM>
    <NUMBER>Внутренний_номер</NUMBER>
    <ID_DOC>внешний_номер</ID_DOC>
    <DATE>01.01.1990</DATE>
    <TYPE>5</TYPE>    <!--тип претензии -->
    <AMOUNT>1</AMOUNT>
    <STATUS>1</STATUS>
    <DSC>Описание_претензии</DSC>
    <CONTENTS>
        <CONTENT>
            <ACCEPT>1</ACCEPT>
            <CODE>Номенклатура_01</CODE>
            <CNT_DOC>1</CNT_DOC>
            <NOM_TYP_DOC>1</NOM_TYP_DOC>
            <CNT_CLIENT>1</CNT_CLIENT>
            <NOM_TYP_CLIENT>1</NOM_TYP_CLIENT>
            <EMPLOYEE_ERR>Текст_ошибки</EMPLOYEE_ERR>
            <DSC>Описание</DSC>
            <NOM_UNIT>1</NOM_UNIT>
        </CONTENT>
    </CONTENTS>
    <LINKED_DOCS>
        <DOC>
            <NUMBER>Связанный_документ</NUMBER>
            <ID_DOC>Связанный_документ_внешнее_имя</ID_DOC>
            <DOC_TYPE>1</DOC_TYPE>
            <!--тип документа -->
        </DOC>
    </LINKED_DOCS>
</DOC_CLAIM>

Параметры DPC

Параметр Сокр
параметр
Описание Обязательный Значение по умолчанию
contragent_n p1 Номер контрагента Да
file p3 Маска для файла, напр, =D:\PI\DICT\IN\*.xml Да
UTF p4 Если не пустой- файл в кодировке UTF-8. Да
DOC_TYP_1
DOC_TYP_2
...
p5_1
p5_2
...
DOC_TYP_xxx=YYY - документ во внешней системе имеет тип xxx, такой тип указан в файле, в CWMS имеет тип YYY. Список типов- словарь 316 Да
DefaultDocStatus p8 Статус претензии по умолчанию, используется, если не указан в файле Нет 0
DefaultDocType p9 Документ получает такой тип, если тип не указан или не может быть определен Нет 0
debug p14 Статус претензии по умолчанию, используется, если не указан в файле Нет 0
debugEx p14ex Расширенный режим отладки Нет 0
IgnoreNom p18 Игнорировать неизвестную ном. Иначе- ошибка Нет 0

Инструкции

ТЕРМИНАЛЫ СБОРА ДАННЫХ - специализированные портативные устройства (КПК), представляющие собой компьютер со встроенным сканером штрих-кода, предназначенные для быстрого сбора информации о товарах и передачи их в информационную систему БД, через выделенный канал радио-связи.

* Windows ТСД

* Android ТСД

* Инструкция по заливке ТСД Symbol

* Инструкция по первоначальному вводу в эксплуатацию ТСД Symbol CE5

* Инструкция по первоначальному вводу в эксплуатацию ТСД Symbol CE6

* Инструкция по работе ТСД

* Рекомендации по эксплуатации ТСД


Инструкция по заливке ТСД Symbol


Инструкция по заливке терминала сбора данных Symbol

Для заливки образов на терминалы сбора данных на компьютере пользователя должны быть установлены следующее программное обеспечение: - Microsoft Visual SourceSafe (далее по тексту - VSS) - Microsoft ActiveSinc

Должен быть подключен кредл для терминалов сбора данных компании Symbol

По указанному в окне на рис.1 пути выгрузится файл образ для данного терминала


Начало файла ------
st --имя пользователя
st --пароль
store --имя базы данных oracle
192.168.9.1 --ip-адрес сервера базы данных
1521 --порт сервера базы данных
5 --размер шрифта (необязательный параметр)
color --признак необходимости регулировки цвета (необязательный параметр)
--при наличии параметра color (предыдущая строка) цвет фона (необязательный параметр)
--при наличии параметра color цвет текста (необязательный параметр)


Конец файла ------
Примечание! Если параметр color присутствует в файле, но при этом отсутствуют параметры цвета и фона - цвет изменится на контрастный чёрно-белый (для чёрно-белых ТСД)


- Инструкция по первоначальному вводу в эксплуатацию ТСД Symbol CE5


Инструкция по запуску сервиса Android

Для работы обязательно требуется установленный NET Framework версии 4.0 и выше.

Скачивание сервиса

1) Запросить архив AndroidServ в отделе Технической поддержки.

2) После чего разархивировать.

Запуск в режиме приложения
Для работы сервиса Android необходимо установить Java 8 update 241.
Скачать можно по данной ссылке https://java.com/ru/download/
1) После установки Java, открываем на редактирование файл DB. properties

2) Меняем параметры конфига.

• db_user = * (За место , указываем логин от БД)
• db_pwd =
(За место , указываем пароль от БД)
• db_server_url = jdbc:oracle:thin:@//000.000.000.000:1521/
**
 000.000.000.000 – изменяем на IP адрес БД
 *** - меняем на название инстанса БД 
3) Открываем на редактирование файл run.cmd

4) Редактируем

C:\Users\Admin\Desktop\mcis – меняем путь до файла MCISServer.jar
5) Запускаем run.cmd от имени администратора

Сервис запущен.
Available connections – показывает сколько подключено терминалов.

Создание службы Windows
1) Открываем на редактирование файл WinSW.NET4.xml

2) Изменяем конфиг

• <id>CWMS3000AndroidServ</id> - уникальный id службы
• <name>CWMS3000AndroidServ (powered by WinSW)</name> - отображаемое имя в службах
• <description>run android service for TSD</description> - описание службы
• <executable>java</executable> - чем запускать, всегда Java
• <arguments>-jar MCISServer.jar DB.properties</arguments> - скрипт запуска 
3) Выполняем в cmd скрипт для создания службы
Sc create CWMS3000AndroidServ binPath= C:\MyService\MyService.exe DisplayName= ″CWMS3000AndroidServ″ type= own start= auto
После create идёт:
• CWMS3000AndroidServ – ID из конфига
• binPath – путь до файла WinSW.NET4.exe
• DisplayName – имя из конфига
4) Служба успешно созданна

5) Открываем службы

6) Ищем нами созданную службу

7) Открываем её свойства и переходим во вкладку «Вход в систему»

8) Авторизовываемся под учётной записью с правами администратора, поставив галочку и задав верные данные от неё

9) После чего запуска службу.


Инструкция по запуску сервиса Android на LINUX с использованием SUPERVISOR

Настройки JAVA

Первое, что необходимо проверитm, путь до java

 which java 

Создаем и устанавливаем новую в папку ( версия jdk-11.0.14)

 mkdir /usr/lib/jvm/jdk-11.0.14 

Разархивируем java в папку где:

/home/oracle/Downloads/jdk-11.0.14_linux-x64_bin.tar.gz - путь до архива(любой ваш)
/usr/lib/jvm/ - путь куда разархивируем

 tar -xf /home/oracle/Downloads/jdk-11.0.14_linux-x64_bin.tar.gz -C /usr/lib/jvm 

Проверяем что там она есть

 ls -la /usr/lib/jvm/jdk-11.0.14 

Устанавливаем алтернативную версию JAVA, выполняя скрипты по очереди

sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jdk-11.0.14/bin/java" 0 

sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/jdk-11.0.14/bin/javac" 0 

sudo update-alternatives --set java /usr/lib/jvm/jdk-11.0.14/bin/java 

sudo update-alternatives --set javac /usr/lib/jvm/jdk-11.0.14/bin/javac 

Прописываем пути в environment соблюдаем правильность путей до версии java (jdk-11.0.14)

Открываем его

nano /etc/environment 

Прописываем туда

:/usr/lib/jvm/jdk-11.0.14/bin:/usr/lib/jvm/jdk-11.0.14/db/bin:/usr/lib/jvm/jdk-11.0.14/jre/bin
J2SDKDIR="/usr/lib/jvm/jdk-11.0.14" 
J2REDIR="/usr/lib/jvm/jdk-11.0.14/jre" 
JAVA_HOME="/usr/lib/jvm/jdk-11.0.14" 
DERBY_HOME="/usr/lib/jvm/jdk-11.0.14/db"

После необходимо сделать перезапуск окружения

exec $SHELL

Проверяем какая верся java теперь является по умолчанию

java -version

В нашем случае будет следующий ответ

java version "11.0.14" 2022-01-18 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.14+8-LTS-263)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.14+8-LTS-263, mixed mode)

h3. Подготовка сервера-андройд

Создаем папку под файлы сервиса

mkdir -p /opt/mcis/data

В папку /opt/mcis положить mcis-mobile-service_0.0.10-WOL.jar (джарник сервера-андройд)
В папку /opt/mcis/data полоджить client_keystore.p12 (лицензии)

Переходим в папку с JAR'ником

cd /opt/mcis

И проверяем на запуск наш сервис
(Заполнив параметры без "")

java \
        -jar mcis-mobile-service_0.0.10-WOL.jar \
        --spring.datasource.url=jdbc:oracle:thin:@"IPбазы данных":"порт базы данных":"имя инстанса" \
        --spring.datasource.username="название схемы" \
        --spring.datasource.password="пароль схемы" \
        --server.port="порт на котором будет работать андройд-сервер" \
        --app.session.timeout=900000 \
        --app.session.max-sessions="Кол-во мобильных лицензий клиента" \
        --app.session.exit=3000000

Должно ответить что запустилось на порту указанном в конфиге

o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): Указанный порт андройд-сервера       

h4. SUPERVISORD

Создаем папку конфигов

mkdir -p /etc/supervisor/conf.d

Редактируем файл конфига

nano /etc/supervisord.conf

В самом конце раздел с ссылкой на файлы конфига

[include]
files = /etc/supervisor/conf.d/*.conf

Создаем свой конфиг

nano /etc/supervisor/conf.d/wms.conf

Туда пишем следующее

[program:android]
# Рабочая папка
directory=/opt/mcis

#Пути до java если их несколько, и java не ниже 11

environment=PATH="/opt/mcis/:/usr/lib/jvm/jdk-11.0.14/bin/",JAVA_HOME="/usr/lib/jvm/jdk-11.0.14" 

#Команда запуска 
#Если многострочная, то вторая и далее строка начинается с TAB
#Заполнить параметры без "" 
command=java
        -jar mcis-mobile-service_0.0.10-WOL.jar
        --spring.datasource.url=jdbc:oracle:thin:@"IPбазы данных":"порт базы данных":"имя инстанса" 
        --spring.datasource.username="название схемы" 
        --spring.datasource.password="пароль схемы" 
        --server.port="порт на котором будет работать андройд-сервер" 
        --app.session.timeout=900000
        --app.session.max-sessions=5
        --app.session.exit=3000000
#Файлы логов        
stdout_logfile=/opt/mcis/andr.out.log
stderr_logfile=/opt/mcis/andr.err.log
stdout_logfile_maxbytes=5MB
autostart=true
autorestart=true
stopsignal=KILL

Перечитать конфигурацию для применения изменений

supervisorctl reread

Перезапустить конфигурацию

supervisorctl update

Проверить статус

supervisorctl status

Проверить что в логе нет ошибок

tail -f -n 190 /opt/mcis/andr.out.log

[Ссылка на файлы](https://rm.cwms3000.ru/projects/cwms3000/wiki/Oracle)


Инструкция по первоначальному вводу в эксплуатацию ТСД Symbol CE5


Инструкция по первоначальному вводу в эксплуатацию терминала сбора данных Symbol
Для ввода в эксплуатацию терминала сбора данных на компьютере пользователя должны быть установлены следующее программное обеспечение: - Microsoft Visual SourceSafe (далее по тексту - VSS) - Microsoft NETCompactFrameWork v. 1

Должен быть подключен кредл для терминалов сбора данных компании Symbol

1. Вставляем терминал в кредл. И ждем когда Windows обнаружит его при помощи программы Microsoft ActiveSync и выдаст окно

Выбираем Guest partnership и нажимаем далее >

2. Устанавливаем NETCF, кликнем на установщике в среде Windows. Следуем, указаниям установщика везде жмем ок и next
3. Переводим взгляд на терминала сбора данных там видим приглашение на установку там аналогично следуем, указаниям установщика везде жмем ок и next.
4. Перегружаем терминал сбора данных.
5. Устанавливаем коннект с терминалом сбора данных (см. шаг 1)
6. Копируем из папки FS все файлы на терминал по пути \Windows\Programs\
7. Далее, на терминале сбора данных запускаем утилиту \Windows\regmerge на сообщение системы (на терминале сбора данных) говорим Да. Перегружаем терминал.
8. Устанавливаем коннект с терминалом сбора данных (см. шаг 1)
9. Берем утилиту AppCenter.exe копируем на терминал сбора данных в директорию \Windows\StartUP
10. Находим файл на терминале сбора данных \Windows\Programs\PlatMC3000.reg кликаем на нем дава раза отвечаем да на вопрос системы тоже самое проделываем с \Windows\Programs\AppCenter.reg
11. Присваиваем терминалу сбора данных уникальный идентификатор
12. На терминале сбора данных в сетевых настройках добавляем SID 101, необязательно что бы Сид был виден и присваиваем WI-FI интерфейсу IP
10.10.10.(идентификатор присвоенный терминалу) IP адрес
255.255.255.0 маска
10.10.10.254 шлюз
13. Перегружаем терминал
14. Делаем образ резервной копии с терминала(на терминале выключаем оболочку и все программы) посредством утилиты ActiveSync называем образ в формате MCISMC3000_(номер терминала).STG, заливаем образ в SourceSafe в ветку Symbol.


- EAN UCC Code128


Инструкция по первоначальному вводу в эксплуатацию ТСД Symbol CE6


Инструкция по первоначальному вводу в эксплуатацию терминала сбора данных Symbol
Для ввода в эксплуатацию терминала сбора данных на компьютере пользователя должны быть установлены следующее программное обеспечение: - Microsoft Visual SourceSafe (далее по тексту - VSS) - Microsoft NETCompactFrameWork v. 1

Должен быть подключен кредл для терминалов сбора данных компании Symbol

1. Вставляем терминал в кредл. И ждем когда Windows обнаружит его при помощи программы Microsoft ActiveSync и выдаст окно

Выбираем Guest partnership и нажимаем далее >

2. Устанавливаем NETCF, кликнем на установщике в среде Windows. Следуем, указаниям установщика везде жмем ок и next
3. Переводим взгляд на терминала сбора данных там видим приглашение на установку там аналогично следуем, указаниям установщика везде жмем ок и next.
4. Перегружаем терминал сбора данных.
5. Устанавливаем коннект с терминалом сбора данных (см. шаг 1)
6. Копируем из папки FS все файлы на терминал по пути \Windows\Programs\
7. Далее, на терминале сбора данных запускаем утилиту \Windows\regmerge на сообщение системы (на терминале сбора данных) говорим Да. Перегружаем терминал.
8. Устанавливаем коннект с терминалом сбора данных (см. шаг 1)
9. Берем утилиту AppCenter.exe копируем на терминал сбора данных в директорию \Windows\StartUP
10. Находим файл на терминале сбора данных \Windows\Programs\PlatMC3000.reg кликаем на нем дава раза отвечаем да на вопрос системы тоже самое проделываем с \Windows\Programs\AppCenter.reg
11. Присваиваем терминалу сбора данных уникальный идентификатор
12. На терминале сбора данных в сетевых настройках добавляем SID 101, необязательно что бы Сид был виден и присваиваем WI-FI интерфейсу IP
10.10.10.(идентификатор присвоенный терминалу) IP адрес
255.255.255.0 маска
10.10.10.254 шлюз
13. Перегружаем терминал
14. Делаем образ резервной копии с терминала(на терминале выключаем оболочку и все программы) посредством утилиты ActiveSync называем образ в формате MCISMC3000_(номер терминала).STG, заливаем образ в SourceSafe в ветку Symbol.


Инструкция по полному приходованию


ТСД:Полное приходование
Приход. 1. В основном меню выбрать пункт 1

2. Отсканировать «Акт приходный документ» или ввести номер вручную

3. Добавить в документ паллету (пункт 1)

4. Отсканировать PID

5. Отсканировать номенклатуру или ввести 0 для последующей приемки по EAN UCC
6. Ввести количество

7. Выбрать известную дату 1-Срок годности, 9-Дата производства, 0-Без ограничения срока

8. Ввести дату в формате ДДММГГ

9. Выбрать состояние, 1- Кондиция, 3-Брак

10. Подтвердить введенный паллет или добавить на паллет еще и повторить пункты 4-10


- Инструкция по поштучной приемке


Инструкция по поштучной приемке


Поштучная приемка
1. Для поштучной приемки выберите пункт «1»

2. Сканируйте штрихкод из шапки «Акт приходный документ» или выберите с помощью 0 приходный документ с наибольшим приоритетом

3. Для поштучной приемки выберите пункт «3»

4. Сканируйте PID, в который осуществляется прием товара

5. Выберите состояние товара: 1-кондиция, 3- брак

6. Введите количество данной номенклатуры и сканируйте штрихкорд, если не введено количество по умолчанию будет посчитана 1 единица товара

7. Система отображает последнюю введенную номенклатуру и процент заполняемости короба, согласно паллетизации. Повторите пункт 6. Для смены короба нажмите «027» или просканируйте новый PID


- Инструкция по работе ТСД


Инструкция по работе ТСД


Способ зарядки аккумулятора в коммуникационной подставке. Убедитесь в том, что перезаряжаемый аккумулятор OPTICON (Ni-Mn) находиться в терминале. Если аккумулятор правильно вставлен в терминал, то при установке его на подставку загорится зеленый светодиод. Время зарядки аккумулятора – 8 часов. Если в терминале находятся пальчиковые батарейки или другие пальчиковые аккумуляторы, то зарядка через подставку производиться не будет, а так же не будет индикации на подставке.

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

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

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

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

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


- Рекомендации по эксплуатации ТСД


Инструкция по разворачиванию StanBy сервера


Разворачивание StandBy сервера oracle штатными средствами data guard broker.

Необходимые условия для разворачивания

Подготовка резервного сервера
hint: Для удобства навигации между RDP-подключениями основного и резервного серверов, рекомендуется установить в качестве "обоев" рабочего стола резервного сервера ярко-красный фон.

Установка СУБД oracle и создание резервной БД.
Запускаем инсталлятор, выбираем метод установки - advanced, нажимаем "next"

тип установки - Enterprise, нажимаем "next"

В следующем окне - Name оставляем по умолчанию, Path должен быть идентичен пути установки БД на основном сервере

В пунктах, имеющих статус "error", проставляем галочки.

Статус должен поменять на " user verified", нажимаем "next"

В следующем окне выбираем "Create a Database", нажимаем "next".

В следующем окне выбираем Advanced, жмем "next".

В следующем окне оставляем значения по умолчанию, жмем "next".

В следующем окне проверяем правильность введённых параметров и нажимаем "Install"

После окончания установки автоматически откроется Database Configuration Assistant. В первом окне выбираем General Purpose, нажимаем "next".

В следующем окне вводим Global Database и SID. Они должны быть ИДЕНТИЧНЫ основной базе.

В следующем окне оставляем всё без изменения.

В следующем окне вводим пароль для системных учётных записей oracle. Он должен быть ИДЕНТИЧЕН паролю на основной базе. Нажимаем "next".

В следующем окне оставляем все данные без изменения, нажимаем "next".

В следующем окне снимаем галочку "Specify Flash Recovery Area", ставим галочку "Enable Archiving, нажимаем кнопку Edit Archive Mode Parameters
Standby15.JPG

В открывшемся окне указываем ПОЛНЫЙ путь к папке с архивными логами. Путь должен быть идентичен пути к папке на основном сервере. Если папки для архивных логов на резервном сервере не существует - её необходимо создать. Имя папки и её местонахождение на локальном диске должны быть полностью идентичными имени и местонахождению на основном сервере. Нажимаем "ok" и "next".

В следующем окне снимаем галочку "Sample Schemas", нажимаем "next"

В следующем окне ставим флаги Custom и Manual.
Единицы измерения ВЕЗДЕ проставляем M Bytes. Рекомендуемые значения:
Shared Pool: 128 M Bytes
Buffer Cache: Указываем размер, исходя из оставшейся свободной оперативной памяти, за вычетом памяти, необходимой для корректной работы операционной системы. Для резервного сервера, имеющего 4 Гб оперативной памяти (как на скриншоте), оптимальным размером Buffer Cache будет 2 Гб, для сервера, имеющего, например, 32 Гб оперативной памяти, оптимальным будет 25 Гб.
Java Pool: 128 M Bytes
Large Pool: 512 M Bytes
PGA Size: 256 M Bytes

Далее на вкладке Character Sets устанавливаем флаг "Choose from the list of character sets", Утанавливаем параметры, согласно скриншоту. Нажимаем кнопку "next".

В следующем окне оставляем все значения по умолчанию и нажимаем next.

В следующем окне оставляем все значения по умолчанию и нажимаем Готово.

В процессе создания БД и применения настроек, может появиться ошибка старта БД. Не пугаемся, нажимаем ОК.

По завершению установки, нажимаем next, в следующем окне - exit.

Далее заходим в диспетчер служб, проверяем, чтобы службы oracle были созданы, и их состояние было как на скриншоте.

Запускаем командную строку, вводим команду sqlplus. Логин sys as sysdba, пароль - указанный при установке. Если все вышеописанные действия были проведены верно - мы увидим информацию о версии СУБД и строку ввода команд SQL.

Прописываем уникальное имя базы, по которому data guard broker будет её идентифицировать, для резервного сервера это bwms. Для этого вводим команду:
alter system set db_unique_name='bwms' scope=spfile;
Включаем data guard broker. Для этого вводим команду:
alter system st dg_broker_start=true scope=both;

Останавливаем БД. Для этого вводим команду
shutdown immediate

Удаляем все файлы из каталога БД

Останавливаем службу OracleOraDb10g_home1TNSListener
Редактируем файл E:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\tnsnames.ora согласно тексту ниже, указываем реальные ip-адреса

WMS =
 (DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = ip-адрес основного сервера)(PORT = 1521))
   )
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = WMS)
   )
 )
BWMS =
 (DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = ip-адрес резервного сервера)(PORT = 1521))
   )
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = bwms)
   )
 )
wms_XPT = 
(DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = ip-адрес основного сервера)(PORT = 1521))
   )
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = wms)
   )
  )
wms_DGB = 
(DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = ip-адрес основного сервера)(PORT = 1521))
   )
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = wms)
   )
 )
wms_DGMGRL = 
(DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = ip-адрес основного сервера)(PORT = 1521))
   )
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = wms)
   )
 )
)

Редактируем файл E:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\listener.ora
Значения, которые необходимо изменить выделены красным

Стартуем службу OracleOraDb10g_home1TNSListener

Подготовка основного сервера

На основном сервере запускаем sqlplus, логин sys as sysdba
Вводим команду
ALTER DATABASE FORCE LOGGING;

Создаём REDO логи, которые в последствии будет использовать резервный сервер. Для этого вводим команду, где указываем путь к папке с ораклом:
ALTER DATABASE ADD STANDBY LOGFILE GROUP 10 ('P:\oracle\product\10.2.0\oradata\VPI\log1c.rdo','P:\oracle\product\10.2.0\oradata\VPI\log2c.rdo','P:\oracle\product\10.2.0\oradata\VPI\log3c.rdo') SIZE 50M;
Прописываем уникальное имя базы, по которому data guard broker будет её идентифицировать, для основного сервера это wms. Для этого вводим команду:
alter system set db_unique_name='wms' scope=spfile;
Включаем data guard broker. Для этого вводим команду:
alter system st dg_broker_start=true scope=both;

Останавливаем службу OracleOraDb10g_home1TNSListener
Редактируем файл E:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\tnsnames.ora согласно тексту ниже, указываем реальные ip-адреса

WMS =
 (DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = ip-адрес основного сервера)(PORT = 1521))
   )
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = wms)
   )

 )
bwms = 
(DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = ip-адрес резервного сервера)(PORT = 1521))
   )
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = bwms)
   )
 )
bwms_XPT = 
(DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = ip-адрес резервного сервера)(PORT = 1521))
   )
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = bwms)
   )
 )
bwms_DGB = 
(DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = ip-адрес резервного сервера)(PORT = 1521))
   )
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = bwms)
   )
 )
bwms_DGMGRL = 
(DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = ip-адрес резервного сервера)(PORT = 1521))
   )
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = bwms)
   )
 )

)

Редактируем файл E:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\listener.ora
Значения, которые необходимо изменить выделены красным

Стартуем службу OracleOraDb10g_home1TNSListener
Принудительно создаём логи, чтобы в них записались последние транзакции. Для этого вводим команду:
alter system switch logfile; Для надежности - три раза, и СРАЗУ ЖЕ останавливаем базу командой:
shutdown immediate

Стартуем базу в режиме mount. Для этого вводим команду:
startup mount
Создаём контрол-файл для резервного сервера. Для этого вводим команду:
ALTER DATABASE CREATE STANDBY CONTROLFILE AS 'C:\boston.ctl'

Дважды клонируем полученный файл и переименовываем его.
В результате из файла boston.ctl' должно получиться 3 идентичных файла: CONTROL01.CTL, CONTROL02.CTL, CONTROL01.CTL.
Они нам пригодятся чуть позже.
Останавливаем БД. Для этого вводим команду:
shutdown immediate
Останавливаем службу OracleService
Копируем всё содержимое папки E:\oracle\product\10.2.0\oradata\Имя_Инстанса КРОМЕ ФАЙЛОВ С РАСШИРЕНИЕМ .CTL в аналогичную папку резервного сервера.

Далее в ту же папку РЕЗЕРВНОГО сервера копируем контрол-файлы, полученные в результате создания и клонирования файла boston.ctl (см. выше)
Запускаем службу OracleService
Подготовка основной БД закончена, можно продолжать работу в ней в штатном режиме.

Создание и настройка конфигурации data guard broker

Запускаем БД на РЕЗЕРВНОМ сервере. Для этого вводим команду:
startup
По результатам выполнения :
создана резервная база
создан слепок основной базы и перенесен на резервный сервер
резервная база запущена и имеет точную копию основной
Далее нам необходимо проверить связь между серверами в рамках алиасов. Для этого на ОСНОВНОМ СЕРВЕРЕ открываем командную строку и вводим команду:
tnsping bwms
результатом команды должен быть отчет об успешном прохождении пинга.

точно таким же образом пингуем остальные алиасы из tnsnames.ora:

Создаём конфигурацию, добавляем в конфигурацию наши базы, устанавливаем свойства, благодаря которым при добавлении файлов в основную базу, они автоматически будут создаваться на резервной.
Для этого выполняем скрипт:
CREATE CONFIGURATION 'SID БД_BACKUP' AS
PRIMARY DATABASE IS 'wms'
CONNECT IDENTIFIER IS wms;
ADD DATABASE 'bwms' AS
CONNECT IDENTIFIER IS bwms
MAINTAINED AS PHYSICAL;
EDIT DATABASE 'bwms' SET PROPERTY 'StandbyFileManagement'='AUTO';
EDIT DATABASE 'wms' SET PROPERTY 'StandbyFileManagement'='AUTO';
Для того, чтобы убедиться в том, что конфигурация успешно создалась, вводим команду:
show configuration

Далее включаем конфигурацию, вводим команду:
enable configuration
После этого начнется процесс копирования логов с основного сервера на резервный и их применение. Процесс может занимать различное время, в зависимости от того, насколько основная база "убежала вперед" от резервной, после её включения (окончание П.2).
Проверяем валидность конфигурации командой:
show configuration
При успешной синхронизации серверов команда должна возвратить "SUCCESS"

Далее смотрим очередь на применение логов к резервной базе(она должна быть пустая), для этого вводим команду:
SHOW DATABASE 'bwms' 'RecvQEntries';
И очередь на передачу логов с основного сервера(должно быть одно значение):
SHOW DATABASE 'wms' 'SendQEntries'


Константы


Настройка CWMS на терминале Windows без DataWedge


Запросить архив с файлами в отделе Технической поддержки

Запрос

Настройка CWMS на терминале Windows
1) Загрузка компонента на терминал
Перекидываем компонент на терминал и проверяем подключение к сети на терминале.

2) Изменение config.txt
Редактируем config.txt. Все данные, которые на скриншоте нужно поменять на свои

tst – логин БД
st – пароль БД
tst – строка соединения БД
192.168.1.254 – ip адрес БД
1521 – порт по умолчанию
12 – размер шрифта, по умолчанию 15
3) Запускаем на терминале mCIS.exe и авторизовываемся.

Настройка автоматического запуска.

Для настройки автоматического запуска нам понадобится программа AppCenter. (можете скачать ее из интернета, или перенести с других терминалов, где она есть)
Помещаем файл AppCenter.exe в папку Windows/StartUp. Так же в эту папку скопируйте файл mCIS.exe из корневой папки. Лишнее из папки можете удалить.

Затем запускаем AppCenter. Логинимся: Tools -Login, в появившимся окне вводим "Symbol".
Добавляем новое приложение, в представленном списке выбираем mCIS.exe.
Откроется диалоговое окно:

проверьте путь к приложению, он должен совпадать с путем расположения mCIS.exe на терминале.
ставим галочку AutoStart, задержку можете выставить на свое усмотрение.


Настройка CWMS на терминале Windows с DataWedge

---
1) Запросить архив с файлами в отделе Технической поддержки

Запрос

2) Необходимо установить компонент NETCFv35.Messages.EN

3) Так же необходимо установить компонент DataWedge

4) После установки необходимо зайти:
• Program Files

• DataWedge

• Запускаем DataWedge

5) После запуска, необходимо зайти в настройки DataWedge

6) Заходим в Basic configuration

7) Выбираем Basic format

8) Необходимо:
• Enabled - галочка
• Prefix to data – выставить !
• Suffix to data – выставить ?
• Send data – галочка
• Send ENTER key – галочка
!10.jpg!
После чего необходимо нажать Back для сохранения.
9) После настройки необходимо зайти
• Application

• mCIS_DW_17 new

10) Изменяем config на свои параметры

11) После запускаем программу mCis_DW_17

12) Вводим пароль сотрудника после чего сканируем баркод.

Настройка автоматического запуска.

Для настройки автоматического запуска нам понадобится программа AppCenter. (можете скачать ее из интернета, или перенести с других терминалов, где она есть)
Помещаем файл AppCenter.exe в папку Windows/StartUp. Так же в эту папку скопируйте файлы mCIS.exe и DataWedge.exe из их корневых папок. Лишнее из папки можете удалить.

Затем запускаем AppCenter. Логинимся: Tools -Login, в появившимся окне вводим "Symbol".
Добавляем новое приложение, в представленном списке выбираем mCIS.exe.
Откроется диалоговое окно:

проверьте путь к приложению, он должен совпадать с путем расположения mCIS.exe на терминале.
ставим галочку AutoStart, задержку можете выставить на свое усмотрение.
По такому же принципу добавляем DataWedge.


Настройка оповещения работоспособности StandBy на email


Для настройки ежедневного оповещение на почту о работоспособности сервера стендбай, необходимо настроить файл SendDGMGRL.vbs

1. В операционной системе настроить "планировщик заданий", создать задачу на ежедневное исполнение файла SendDGMGRL.vbs

2. Открыть на редактирование SendDGMGRL.vbs любым текстовым редактором, в шапке настроить параметры оповещения:
const Cons_Path = "C:\temp\usr" ' Путь к папке
const SMTP_Host = "smtp.nc.ru" 'Адрес SMTP-сервера
const DB_Connection = "sys/*****@DBNAME" 'Параметры подкл. к БД
const SMTP_Subj = "Отчет dgmgrl" ' Тема сообщения
const SMTP_Port = 25 ' Порт SMTP
const SMTP_Name = "cwms3000" ' Логин для отправки
const SMTP_Password = "*****" ' Пароль для отправки
const SMTP_From = "userfrom@post.ru" ' Адрес отправителя
const SMTP_To = notify@cwms3000.ru" ' Адрес получателя

3. Указанным получателем на почту ежедневно высылается отчет в виде:
Subject: Отчет dgmgrl от 26.05.2014 9:30:02
DGMGRL for 32-bit Windows: Version 10.2.0.1.0 - Production
Copyright (c) 2000, 2005, Oracle. All rights reserved.
Добро пожаловать DGMGRL, для получения информации наберите "help".
DGMGRL> Соединение установлено.
DGMGRL> PRIMARY_SEND_QUEUE

 STANDBY_NAME       STATUS     RESETLOGS_ID           THREAD

LOG_SEQ TIME_GENERATED TIME_COMPLETED FIRST_CHANGE# NEXT_CHANGE# SIZE (KBs)

      CURRENT        601448867    

46273 05/26/2014 09:32:13 956587057 13274 DGMGRL> STANDBY_RECEIVE_QUEUE

STATUS     RESETLOGS_ID           THREAD              LOG_SEQ

TIME_GENERATED TIME_COMPLETED FIRST_CHANGE# NEXT_CHANGE# SIZE (KBs) DGMGRL> Configuration

Name:                DKN_BACKUP
 Enabled:             YES
 Protection Mode:     MaxPerformance
 Fast-Start Failover: DISABLED
 Databases:
   wms  - Primary database
   bwms - Physical standby database

Текущее состояние для "DKN_BACKUP": SUCCESS

При получении уведомления на почту, необходимо обратить внимание на очередь заданий, выделено красным, при наличие 5 и более невыполненных заданий, обратиться в ОТП. Также необходимо обратить внимание на последние строки, описывающие состояние конфигурации(Текущее состояние для "DKN_BACKUP": SUCCESS). Если не success, значит есть проблемы в самой конфигурции.

Первая очередь (PRIMARY_SEND_QUEUE) - не отправленные архивные логи с основного сервера на резервный. Вторая (STANDBY_RECEIVE_QUEUE) - отправленные, но не применённые логи на резервном сервере. Т.е. если первая очередь большая, значит проблемы в транспорте. Если большая вторая очередь - проблема с резервным сервером. В нашем примере мы видим, что в очереди на отправку один архивный лог, в очереди на применение логов нет.


Ответственное хранение


Отчет DGMGRL для контроля синхронизации StandBy


Создать файл SendDGMGRL.vbs следующего содержания

'----- Константы: которые нужно задать ----------

const SMTP_Host = "mail.server.ru"                      ' Адрес SMTP-сервера
const DB_Connection = "sys/pasword@instance"            'Строка соединения с БД
const SMTP_Subj = "Отчет dgmgrl"                        ' Тема сообщения
const SMTP_Port = 25                                    ' Порт SMTP
const SMTP_Name = "smtp_user"                           ' Логин для отправки
const SMTP_Password = "pswd"                            ' Пароль для отправки
const SMTP_From = "user@server.ru"                      ' Адрес отправителя
const SMTP_To   = "notify@cwms3000.ru"  ' Адрес получателя
const WaitCyclesCnt = 300                                   ' Задержка в секундах на ожидание вывода
'------------------------------------------------

const cdoSendUsingPort = 2
Const cdoBasic = 1

dim fso, fn, f, ff(), cnt
dim WshShell, oExec, input

set fso=createobject("Scripting.FileSystemObject")
Set WshShell = WScript.CreateObject("WScript.Shell")

Set oExec = WshShell.Exec("dgmgrl")
oExec.StdIn.Write "connect " & DB_Connection
oExec.StdIn.Write VbCrLf
oExec.StdIn.Write "show configuration;" 
oExec.StdIn.Write VbCrLf
oExec.StdIn.Write "show database wms sendqentries;" 
oExec.StdIn.Write VbCrLf
oExec.StdIn.Write "show database bwms recvqentries;" 
oExec.StdIn.Write VbCrLf
oExec.StdIn.Write "exit;" 
oExec.StdIn.Write VbCrLf

input = "" 

Do While oExec.Status = 0
     WScript.Sleep 100
Loop

Do While Not oExec.StdOut.AtEndOfStream
    input = input & oExec.StdOut.Read(1)        
Loop

'Set f = fso.GetFolder(fso.buildpath(Cons_Path, "attachment")).Files

' Создание списка файлов
'for each fn in f
' if lcase(fso.getextensionname(fn))="txt" then
'  AddToArray fn, ff, cnt
' end if
'next

' Отправка письма
SendMessage SMTP_To, SMTP_Subj & " от " & Now, input, ff

' Удаление файлов
'for each fn in ff
' fso.deletefile fn
'next

'----------------
' Отправка электронного письма 
sub SendMessage(Recipient, Subj , Text, Attachments)
 dim msg,fn
 set msg = WScript.CreateObject("CDO.Message")
 with msg
  .BodyPart.charset = "KOI8-R" 
  .From = SMTP_From
  .To = Recipient
  .Subject = Subj
  .TextBody = text
  .Configuration.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver") = SMTP_Host
  .Configuration.Fields("http://schemas.microsoft.com/cdo/configuration/sendusing") = cdoSendUsingPort
  .Configuration.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = SMTP_Port
  .Configuration.Fields("http://schemas.microsoft.com/cdo/configuration/sendusername") = SMTP_Name
  .Configuration.Fields("http://schemas.microsoft.com/cdo/configuration/sendpassword") = SMTP_Password
  .Configuration.Fields("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = cdoBasic
  .Configuration.Fields.Update
  .MimeFormatted = true
  for each fn in attachments
   .addattachment fn
  next
  .Send
 end with
end sub

'----------------
' Добавление элемента в массив
sub AddToArray(Itm, Arr, Count)
 Count = Count + 1
 ReDim Preserve Arr(Count-1)
 Arr(Count-1) = Itm
end sub

Добавить вызов этого файла в планировщик Windows, настроить интервалы и время запуска


Очистка архивных логов RMAN


Удаление архивных логов через RMAN

Заходим в командную строку

Пишем rman

connect target sys/password@TST , где TST - имя базы

elete archivelog all;
______________________

y - подтверждение операции.


Перемещение


StDocMove


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

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

После этого появляется форма, в которой по необходимости заполните поля.

Если Вы не задаете вручную номер акта, он выставляется системой автоматически.
После этого Вы можете производить перемещения. Для этого нажимаете кнопку Добавить. Перед Вами появится окно:

Выбираем тот товар, который нужно переместить, для этого щелкаем на кнопку … рядом с номенклатурой, перед Вами открывается

где Вы можете осуществить поиск либо номеру товара, либо по его коду, либо по наименованию. Конечно, лучше это делать по коду товара.
Вводите первые 6 цифр в поисковик и нажимаете кнопку искать Поисковик предлагает Вам перечень товаров, которые удовлетворяют Вашему запросу:

Нажимаете кнопочку Выбрать напротив нужного Вам наименования товара.

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

В столбик Количество Вы заносите количество товара, которое Вы перемещаете. После этого Вы нажимаете Сохранить.
После сохранения Вы возвращаетесь к форме на рис 1, в нижней части формы появится запись о выбранном Вами товаре.
Для того чтобы разместить этот товар на новое место вы нажимаете новый адрес, вводите в соответственные окна адрес новой ячейки, нажимаете Искать, после того как система найдет эту ячейку и вы убедитесь, что она свободна, нажимаете Выбрать.
Если в данном акте Вы хотите провести еще несколько перемещений, повторите все действия по новой, если нет, то нажмите Сохранить.
А затем переведите статус акта в Подтвержденный. Помните, что пока Ваш акт находится в статусе черновика, то ячейки являются свободными в системе и могут быть заняты другими пользователями.


StDocNew


Область применения


Используется в составе AC CWMS-3000(complex warehouse management system) для автоматизации процесса переупаковки товара из одних артикулов в другие.

Описание операций


Описание функций, задач, процедур

Поиск и навигация в РМ.

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

Панель навигации позволяет

Для создания новой процедуры переупаковки нажмите . После этого откроются окна с выбором контрагента, выбора типа акта и даты резерва переупаковываемой номенклатуры.

Есть 3 основных типа переупаковки:

Для добавления номенклатур в процедуру переупаковки выберите нужную вкладку (из чего переупаковываем или новая номенклатура) и нажмите на кнопку или . При добавлении исходной номенклатуры Вам откроется окно стока, аналогичное тому, что используется в модуле «Заказы». Во вкладке новая номенклатура открывается окно, аналогичное добавлению номенклатур в приход. После того, как все номенклатуры добавлены, можно приступать к переупаковке. Процедура переупаковки описывается во вкладке «Процедура переупаковки»

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


Политика Резервного Копирования


Руководство Администратора Резервное копирование CWMS3000

Организация политики резервного копирования в рамках БД Oracle 10G 10.2.0.4

На сервере предоставленной компанией развернута операционная система
- Microsoft Windows 2008 Server 64
- Oracle 10 G 64
Настроена система резервного копирования СУБД Oracle 10G по технологии DataGuard.

*Проведенные меры гарантируют надежность базы и невозможность потери данных в рамках 5 минут. Скорость восстановления в случаи возможного сбоя составит менее 2 часов. Рекомендации: после внедрения системы CWMS3000 реализовать холодное резервное копирование базы данных и архивных логов на независимый, не хранящийся в помещении серверной источник (пример: кассета, стример и т.д.), в этом случаи исключается абсолютная возможность потери данных. *

1. Процедура резервного копирования.

- резервное копирование выполняется непрерывно в режиме онлайн

Рис1. задание BACKUP выполняется НЕПРЕРЫВНО . Основной сервер база данных Oralce 10G 10.2.0.4 orawms-01 в режиме реального времени (не позже чем раз в 5 минут) передает ARCHIVELOG на резервный сервер Oralce 10G 10.2.0.4 orawms-02 , который в свою очередь производит все транзакции произошедшие на основном сервере. Процессом управляет встроенные в Oralce 10G 10.2.0.4 механизмы DATAGUARD . Сервера автоматически находят друг друга (выключение сервера, перезагрузка сервера, выключение и простой до 24 часов) при условии нахождения в рамках одной ЛВС (Локально Вычислительной Сети) и неизменности сетевых реквизитов указанных выше, и синхронизируются .

2. Процедура проверки валидности схемы резервного копирования.
Рекомендация выполнять процедуру 2 - Ежедневно .
Шаг 1.
Пуск -> Выполнить
(Действие возможно выполнять как на любом из указанных выше серверах, так и на любом ПК находящимся в рамках одной ЛВС с серверами с установленным OracleClient версии 10G)

dgmgrl

Шаг 2(dgmgrl).

connect sys/Пароль

show configuration

Должно быть слово SUCCES если не SUCCES сервера находятся не в синхронизированном состоянии. Необходимо оставить заявку в техническую поддержку ООО “ИнтелСервис”:
Тел. +7495 7757631
notify@cwms3000.ru

Шаг 3(dgmgrl).
SHOW DATABASE 'bwms' 'RecvQEntries';

(команда возвращает таблицу лог-файлов, полученных из основной базы, но не примененных к резервной. При синхронной работе таблица должна быть пустой)

Шаг 4(dgmgrl).
EDIT DATABASE 'bwms' SET STATE='READ-ONLY';

(перевод резервной базы в режим «только чтение»)

Шаг 5(sqlplus) Выполняется на резервном сервере.
Пуск -> Выполнить

Sqlplus

Login: *
Password: *

(запуск командной оболочки для sqlplus)

Шаг 6(sqlplus) Выполняется на резервном сервере.

Select max(n) from st_stock;
Select max(n) from st_doc_in;
Select max(n) from st_doc_out;

(запросы возвращают номера последних строк из таблиц: сток, документы прихода, документы расхода. Их необходимо зафиксировать, для дальнейшего сравнения с номерами строк в основной базе)

Шаг 7(sqlplus) Выполняется на основном сервере.

Выполнить Шаги 5 и 6 на основном сервере. Сравнить полученные номера на основном и резервном серверах.

При сильном расхождении номеров – на сотни, тысячи и т.п., необходимо оставить заявку в техническую поддержку ООО “ИнтелСервис”.

Шаг 8(dgmgrl).

EDIT DATABASE 'bwms' SET STATE='ONLINE';

(возврат резервной базы в состояние «подключена»)

3. Процедура перехода на использование резервного сервера.

В случаи если основная база вышла из строя и не подлежит востанавлению штатными методами (отказ wms) выполняется следующая процедура:

Шаг 1.
Пуск -> Выполнить (Действие выполняется на резервном сервере)

dgmgrl
Шаг 2.

connect sys/Пароль

Шаг 3.

failover to bwms (резервный сервер берет на себя функции основного).

КОМАНДА выполняется при одобрении инженера технической поддержки.
Тел. +7495 7757631
notify@cwms3000.ru
После команды меняем IP адреса на сервере DNS вручную
Перед запуском в Listner поменять IP - адрес!!!!!!


Проведение инвентаризации по бумажной технологии


1) В модуле Рабочие места->Накладные->Инвентаризация создать инвентаризацию нажатием кнопки "Новый".

В При создании вводятся:

2) Во вкладке "Бланк инвентаризации" настраивается фильтр по ячейкам, которые будут участвовать в инвентаризации.
После задания фильтра по кнопке Сформировать формируется xls-файл, по которому будет производиться инвентаризация (инвентаризационная ведомость).

При выбранном параметре «+ Сток» в файл будет экспортироваться товарный запас по отбираемым ячейкам.

3) Накладную инвентаризации следует перевести в один из следующих статусов: со списанием или без списания стока.

4) После проведения инвентаризации следует загрузить экспортированный xls-файл с заполненными актуальными значениями строками. Делается это аналогично выгрузке во вкладке "Бланк инвентаризации" нажатием кнопки "Загрузить", выбрав заполненный файл.

5) После того, как файл с составом инвентаризации загружен, следует перевести инвентаризацию в статус "Завершен". Фактический товар попадет на сток, как только инвентаризация будет переведена в финальный статус.


- Проведение инвентаризации с помощью ТСД


Проведение инвентаризации с помощью ТСД


Инвентаризация.

1. Авторизоваться. Отсканировать личный штрих-код и ввести пароль
2. Выбрать в главном меню пункт 3 «Инвентаризация»

3. Ввести номер инвентаризации (номер сообщает оператор)

4. Выбрать тип инвентаризации

5. Сканировать ячейку
6. Сканировать номенклатуру
7. Введите количество
8. Выбрать кондиция или брак

9. Сканируйте PID.
10. Выбрать пункт ввода срок годности 3
11. Выбрать 1- Если известен срок годности, 2-Дата производства
12. Ввести дату в форме ДДММГГ, т.е. 1 января 2005 года -> 010105
13. Ввести 0 для подтверждения проинвентаризированной паллеты
14. Повторить пункты 5-13


Рабочие места


Рассылка

Инструкция по настройке рассылки


Решение

1) Для настройки рассылки необходимо внести в реестр \HKEY_CURRENT_USER\Software\CWMS3000\ следующие данные

• MailFrom – указывать почту отправителя
• MailSMTPHost – указываем SMPT сервер
• MailSMTPPort – указываем порт SMTP сервера
• MailUser – Логин
• MailUserPwd – Пароль
2) После чего проверяем рассылку тестовым сообщением, нажав кнопку «Test Mail»

3) Проверяем входящие.


Рекомендации по эксплуатации ТСД


ПРИ РАБОТЕ С ТЕРМИНАЛАМИ СБОРА ДАННЫХ ЗАПРЕЩАЕТСЯ:

ЗА НАРУШЕНИЕ ДАННЫХ УСЛОВИЙ ПРИ РАБОТЕ С ТЕРМИНАЛАМИ СБОРА ДАННЫХ И ДРУГИМИ ТМЦ, ЗАДЕЙСТВОВАННЫМИ В ПРОЦЕССЕ РАБОТЫ, ВИНОВНЫЕ ЛИЦА БУДУТ ПОДВЕРГНУТЫ ДИСЦИПЛИНАРНО-АДМИНИСТРАТИВНОМУ НАКАЗАНИЮ, НАЧИНАЯ ОТ ШТРАФА (В РАЗМЕРЕ РАСЧИТАННОГО УЩЕРБА НАНЕСЁННОГО ОРГАНИЗАЦИИ), И ВПЛОТЬ ДО УВОЛЬНЕНИЯ.

ПРИ РАБОТЕ С ТЕРМИНАЛАМИ СБОРА ДАННЫХ РЕКОМЕНДУЕТСЯ:

Среднее время зарядки аккумулятора – 6/8 часов.

КАЖДЫЙ ТЕРМИНАЛ, ЗАДЕЙСТВОВАННЫЙ В РАБОТЕ, ДОЛЖЕН ОДИН РАЗ В МЕСЯЦ ЗАРЯЖАТЬСЯ В ТЕЧЕНИИ 8 ЧАСОВ ЧЕРЕЗ КРЕДЛ, ДЛЯ ПОДДЕРЖАНИЯ ЗАРЯДА ВНУТРЕННЕЙ БАТАРЕИ, ЗАДЕЙСТВОВАННОЙ ПРИ ЗАМЕНЕ ОСНОВНОГО АККУМУЛЯТОРА ТСД!
CRADLE - ОДНОПОЗИЦИОННОЕ НАСТОЛЬНОЕ УСТРОЙСТВО-ПОДСТАВКА ПОД ТЕРМИНАЛ СБОРА ДАННЫХ, ДЛЯ ЗАРЯДКИ И ПРОГРАММИРОВАНИЯ.

КОНТРОЛЬ ИСПОЛНЕНИЯ ПОЛОЖЕНИЯ ЗА МАТЕРИАЛЬНО-ОТВЕТСТВЕННЫМ ЛИЦОМ


- Инструкция по заливке ТСД Symbol


Синхронизация

- Синхронизация справочников номенклатур

- Синхронизация стоков


Синхронизация справочников номенклатур

Описание

Выгружать не более 100 объектов в один файл

Тег Название поля Обяз-ный Тип данных Тип данных
<NOMENKLATURA> Список номенклатуры
<NOM> Номенклатура
<CODE>
</CODE>
Код номенклатуры Да string
<CODE2>
</CODE2>
Код номенклатуры Да string Альтернативный код номенклатуры, используется в некоторых печатных формах
<NAME>
</NAME>
Наименование номенклатуры Да string
<NAME_DOC>
</NAME_DOC>
Наименование для документов Нет string Дополнительный параметр номенклатуры
<GROUP_NAME>
</GROUP_NAME>
Наименование группы товара Да string
<UNIT_NAME>
</UNIT_NAME>
Сокращение единицы учёта Да string
<UNIT_OP_NAME>
</UNIT_OP_NAME>
Сокращение операционной единицы учёта Да string
<UNIT_CL_NAME>
</UNIT_CL_NAME>
Сокращение единицы учёта клиента Да string
<EXPIRE>
</EXPIRE>
Срок годности товара в днях Нет integer По умолчанию 0
<SALE_DAYS>
</SALE_DAYS>
Срок реализации в днях Нет integer По умолчанию 0
<STORAGE_TEMP>
</STORAGE_TEMP>
Условия на температуру хранения в градусах Нет string Текст ячейки
<DSC>
</DSC>
Примечание Нет string
<ABC_GROUP>
</ABC_GROUP>
Нет integer По умолчанию 0
<GOST>
</GOST>
Информация о ГОСТ Нет string
<BREND>
</BREND>
Производитель товара/бренд Нет string
<STATUS>
</STATUS>
Статус номенклатуры Нет integer
<id_importer>
</id_importer>
Импортер (идентификатор) Нет string
<id_producer>
</id_producer>
Производитель (идентификатор) Да string
<id_supplier>
</id_supplier>
Поставщик (идентификатор) Да string
<label_desc>
</label_desc>
Текст наклейки Нет string
<STAMPED>
</STAMPED>
Помарочный Нет integer
<STORE_AREAS> Области склада
<STORE_AREA>
</STORE_AREA>
Область склада Нет string
</STORE_AREAS> Области склада. Закрывающий тег
<PALLS_INFO> ТЕГ информации о палетизации Нет Открывающий тег
<PALL> Нет Открывающий тег
<TYPE>
</TYPE>
Тип палеты - код или термин из словаря 359 Нет string По умолчанию 1, зависит от параметра '''DPC''' '''PallTypeAsString''' (см.настройки).
<BLCK>
</BLCK>
Палетизация уч.единиц на палете Нет integer По умолчанию -1
<LENGTH>
</LENGTH>
Длина, см. Нет float По умолчанию 0
<WIDTH>
</WIDTH>
Ширина, см. Нет float По умолчанию 0
<HEIGHT>
</HEIGHT>
Высота, см. Нет float По умолчанию 0
<WEIGHT_NETTO>
</WEIGHT_NETTO>
Вес нетто, кг. Нет float По умолчанию 0
<WEIGHT_BRUTTO>
</WEIGHT_BRUTTO>
Вес брутто, кг. Нет float По умолчанию 0
<LAYER_CNT>
</LAYER_CNT>
Количество уч.единиц в слое на палете Нет integer По умолчанию 0
</PALL> Нет
</PALLS_INFO>
<UNITS_INFO> Информация о единицах конвертации Да
<UNIT> Хотя бы один
<TYPE>
</TYPE>
Тип конвертационной единицы Да string Термин из словаря единиц учёта №363
<CNT>
</CNT>
Количество в уч. единицах Да integer
<BARCODE>
</BARCODE>
Штрих-код Нет string
<BARCODETYPE>
</BARCODETYPE>
Тип штрих-кода Нет string
<REPLACE_BARCODE>
</REPLACE_BARCODE>
0/1 – заменять ли штрихкод для единицы учета (иначе– добавление) Нет Integer По умолчанию 0.
<WEIGHT_NETTO>
</WEIGHT_NETTO>
Вес нетто кг. Нет float По умолчанию 0
<WEIGHT_BRUTTO>
</WEIGHT_BRUTTO>
Вес брутто кг. Нет float По умолчанию 0
<PRICE>
</PRICE>
Цена Нет float По умолчанию 0
<LENGTH>
</LENGTH>
Длина, см. Нет float По умолчанию 0
<WIDTH>
</WIDTH>
Ширина, см. Нет float По умолчанию 0
<HEIGHT>
</HEIGHT>
Высота, см. Нет float По умолчанию 0
<NDS>
</NDS>
НДС Нет float По умолчанию 0
<VOLUME>
</VOLUME>
Объём, cм3 (куб. см.) Нет float По умолчанию 0
<EXPONENT>
</EXPONENT>
Используется для отображения вложенности единиц конвертации, значения {1;-1}; Нет integer По умолчанию 1.
1 - прямая вложенность(уч.единица ШТ cnt=1- в коробе 30 шт)
-1 - обратная вложенность (уч.единица короб cnt=1 - в коробе 30 шт)
</UNIT>
</UNITS_INFO>
<OTHER_CODES> Дополнительные коды Нет Открывающий тег.
<CODE> Нет
<ARTK_CLIENT>
</ARTK_CLIENT>
Дополнительный номенклатурный код Да string
<NAME_ITEM_CLIENT>
</NAME_ITEM_CLIENT>
Наименование дополнительного кода Да string
<ARTK_DATE>
</ARTK_DATE>
Дата регистрации доп кода в системе Нет string
<BARCODE>
</BARCODE>
Штриx-код Да string
<BARCODETYPE>
</BARCODETYPE>
Тип штрих-кода Нет string
<DSC>
</DSC>
Описание Нет string
<UNIT_TYP>
</UNIT_TYP>
Тип единицы кор. шт. Нет string
<ID_CLIENT>
</ID_CLIENT>
Код клиента Уникальный идентификатор Да string
</CODE>
</OTHER_CODES>
<EXT_PARAMS> Набор доп. параметров. Нет Открывающий тег
<PARAM> Открывающий тег Нет Один из доп параметров
<PARAM_NAME>
</PARAM_NAME>
ALIAS параметра Да string
<PARAM_VALUE>
</PARAM_VALUE>
Значение доп параметра Да string
</PARAM> Закрывающий тег
</EXT_PARAMS> Закрывающий тег
<NOM_CHANGE_NOM> Открывающий тег. Нет Идентичные номенклатуры
<NOM> Открывающий тег. Нет Одна из идентичных номенклатур
<CODE>
</CODE>
Код номенклатуры Да string
<ORD>
</ORD>
Порядок резерва Нет integer По умолчанию 1
<COEFF>
</COEFF>
Коэффициент конвертации кол-ва Да number По умолчанию 1
</NOM> Закрывающий тег
</NOM_CHANGE_NOM > Закрывающий тег
<NOM_CONTENT> Открывающий тег. Нет Состав номенклатуры
<NOM> Открывающий тег. Нет Номенклатура входящая в состав
<CODE>
</CODE>
Код номенклатуры Да string
<CNT>
</CNT>
Количество Да number
<NOMUNIT>
</NOMUNIT>
Конвертационная единица Да integer Словарь 362
</NOM> Закрывающий тег
</NOM_CONTENT > Закрывающий тег
<BARCODES> Открывающий тег. Нет Список штрихкодов
<BARCODE> Открывающий тег. Нет Штрихкод- описание
<BAR_CODE>
</BAR_CODE>
Штрихкод Да string
<UNIT_TYP>
</UNIT_TYP>
Единицы измерения Да string
<TYP>
</TYP>
Тип УЕ Да string Термин из словаря единиц учета №363
<REPLACE_BARCODE>
</REPLACE_BARCODE>
0/1 – заменять ли штрих-код для единицы учёта (иначе– добавление) Нет Integer По умолчанию 0.
</BARCODE> Закрывающий тег
</BARCODES> Закрывающий тег
</NOM>
</NOMENKLATURA>

Пример XML

<?xml version="1.0" encoding="Windows-1251" standalone="yes"?>
<NOMENKLATURA>
    <NOM>
        <CODE>9928</CODE>
        <CODE2>UUU78</CODE2>
        <NAME_DOC>name_doc</NAME_DOC>
        <NAME>ннн 1:6990</NAME>
        <GROUP_NAME>group1</GROUP_NAME>
        <UNIT_NAME>шт</UNIT_NAME>
        <UNIT_OP_NAME>кор</UNIT_OP_NAME>
        <UNIT_CL_NAME>кор</UNIT_CL_NAME>
        <EXPIRE>0</EXPIRE>
        <SALE_DAYS>0</SALE_DAYS>
        <STORAGE_TEMP/>
        <DSC />
        <ABC_GROUP>0</ABC_GROUP>
        <BREND>ТМ AUTOTIME</BREND>
        <STATUS>3</STATUS>
        <id_importer />
        <id_producer>vend_414</id_producer>
        <id_supplier>vend_414</id_supplier>
        <label_desc />
        <STAMPED>1</STAMPED>
        <STORE_AREAS>
            <STORE_AREA>5</STORE_AREA>
        </STORE_AREAS>
        <PALLS_INFO>
            <PALL>
                <TYPE>1</TYPE>
                <BLCK>1</BLCK>
                <LENGTH>0</LENGTH>
                <WIDTH>0</WIDTH>
                <HEIGHT>0</HEIGHT>
                <WEIGHT_NETTO>0</WEIGHT_NETTO>
                <WEIGHT_BRUTTO>0</WEIGHT_BRUTTO>
                <LAYER_CNT>0</LAYER_CNT>
            </PALL>
        </PALLS_INFO>
        <UNITS_INFO>
            <UNIT>
                <TYPE>шт</TYPE>
                <CNT>1</CNT>
                <BARCODE></BARCODE>
                <BARCODETYPE></BARCODETYPE>
                <WEIGHT_NETTO>0</WEIGHT_NETTO>
                <WEIGHT_BRUTTO>0</WEIGHT_BRUTTO>
                <PRICE>0</PRICE>
                <LENGTH>0</LENGTH>
                <WIDTH>0</WIDTH>
                <HEIGHT>0</HEIGHT>
                <NDS>0</NDS>
                <VOLUME>0</VOLUME>
                <EXPONENT>1</EXPONENT>
            </UNIT>
            <UNIT>
                <TYPE>кор</TYPE>
                <CNT>5</CNT>
                <BARCODE></BARCODE>
                <BARCODETYPE></BARCODETYPE>
                <WEIGHT_NETTO>0</WEIGHT_NETTO>
                <WEIGHT_BRUTTO>0</WEIGHT_BRUTTO>
                <PRICE>0</PRICE>
                <LENGTH>0</LENGTH>
                <WIDTH>0</WIDTH>
                <HEIGHT>0</HEIGHT>
                <NDS>0</NDS>
                <VOLUME>0</VOLUME>
                <EXPONENT>1</EXPONENT>
            </UNIT>
        </UNITS_INFO>
        <OTHER_CODES>
            <CODE>
                <ARTK_CLIENT>add_code</ARTK_CLIENT>
                <NAME_ITEM_CLIENT>name_add_code</NAME_ITEM_CLIENT>
                <BARCODE>EAN13</BARCODE>
                <BARCODETYPE>0000073601210</BARCODETYPE>
                <DSC></DSC>
                <UNIT_TYP></UNIT_TYP>
                <ID_CLIENT>Client1</ID_CLIENT>

            </CODE>
        </OTHER_CODES>
        <EXT_PARAMS>
            <PARAM>
                <PARAM_NAME>ext_param1</PARAM_NAME>
                <PARAM_VALUE>val1</PARAM_VALUE>
            </PARAM>
        </EXT_PARAMS>
        <NOM_CHANGE_NOM>
            <NOM>
                <CODE>1276654</CODE>
                <ORD>1</ORD>
                <COEFF>1.1</COEFF>
            </NOM>
            <NOM>
                <CODE>46344</CODE>
                <ORD>2</ORD>
                <COEFF>1.1</COEFF>
            </NOM>
        </NOM_CHANGE_NOM>
        <NOM_CONTENT>
            <NOM>
                <CODE>content_code1</CODE>
                <CNT>2</CNT>
                <NOMUNIT>1</NOMUNIT>
            </NOM>
        </NOM_CONTENT>
        <BARCODES>
            <BARCODE>
                <BAR_CODE>237847656437463</BAR_CODE>
                <UNIT_TYP>шт</UNIT_TYP>
                <TYP>EAN13</TYP>
            </BARCODE>
            <BARCODE>
                <BAR_CODE>258476359667757</BAR_CODE>
                <UNIT_TYP>шт2</UNIT_TYP>
                <TYP>EAN13</TYP>
            </BARCODE>
            <BARCODE>
                <BAR_CODE>4875643746245</BAR_CODE>
                <UNIT_TYP>кор</UNIT_TYP>
                <TYP>EAN13</TYP>
            </BARCODE>
        </BARCODES>
    </NOM>
</NOMENKLATURA>

Параметры DPC

Параметр Сокр
параметр
Описание Обязательный Значение по умолчанию
contragent_n p1 Номер контрагента Да
file p2 Маска файла для загрузки Да
store_n p3 Номер склада Да
nom_unit_update p4 Обновлять данные об УЕ номенклатуры (0/1) Нет 0
nu_update_price p4p При обновлении данныx об УЕ номенклатуры обновлять только цену (0/1) (Требует nom_unit_update = 1) Нет 0
pall_update p5 Обновлять данные о паллетизации(0/1) Нет 0
change_nom p6 Возможность перезагрузить (обновить) номенклатуру. В противном случае ошибки не будет все равно Нет 0
utf p7 Строка, по ум. пустая. Если не пустая, считается, что кодировка файла UTF8 Нет 0
PallTypeAsString p8 Цифра(0/1), 0- паллетизация указывается кодом из словаря. 1- паллетизация указывается кодом, если указано не число, то- термин из словаря 359 Нет 0
SupplierMustExists
ProducerMustExists
ImporterMustExists
p9
p10
p11
(0/1) три независимых параметра, если 1- соответствующий тег обязательный Нет 0
debug p14 Режим отладки - не рекомендуется использовать. Нет 0
anchors p15 Список статусов заказа для которых генерируется flashback Нет 0
<REPLACE_BARCODE> Тег, значение(0/1), позволяет добавлять или заменять соответствующий ШК, заданный тегом <BARCODE> того же уровня. Нет 0

Синхронизация стоков

Описание

Тег Название поля Обяз-ный Тип данных Тип данных
<STOCK> Список Да Открывающийся тег.
<REC> Элемент списка Нет Открывающийся тег.
<CODE>
</CODE>
Нет integer Код номенклатуры
<EXPIRE_DATE>
</EXPIRE_DATE>
Срок годности Нет String Срок годности dd.mm.yyyy
<CNT>
</CNT>
Количество товара Нет Unsigned Integer Количество уе
<FD></FD> Дата и время среза стока Нет String Дата стока
<NOM_TYP>
</NOM_TYP>
Состояние единицы учета Нет Unsigned Byte словарь №422 (кондиция - 1 /брак - 3)
<SUB_NOM_TYP>
</SUB_NOM_TYP>
классификация кондиции\брака Нет string Подгруппа кондиции брака
<PALL_TYPE>
</PALL_TYPE>
Тип паллеты Нет Unsigned Byte ссылка на словарь 359: 1-евро 2-амер и др
<ST_PART_N>
</ST_PART_N>
Идентификатор партии Нет String Партия, пример SDTD12234
<STATUS>
</STATUS>
Статус в стоке Нет Unsigned Byte 1-Приходован на склад
3-Перемещение
5-Переупакован
6-Зарезервирован
8-Зарезервировано на переупаковку
9-Безадресная резервация под заказ
10-Неофактуренный приход
12-Забраковано
<DSC>
</DSC>
Примечание к заказу Нет String Примечание
</REC>
</STOCK>

Пример XML

<?xml version="1.0" encoding="Windows-1251" standalone="yes"?>
<STOCK>
    <!--  ТЕГ стока -->
    <REC>
        <!--  ТЕГ записи остатка -->
        <CODE>F1234</CODE>
        <!--  код номенклатуры -->
        <EXPIRE_DATE>01.05.2010</EXPIRE_DATE>
        <!--  срок годности -->
        <CNT>100</CNT>
        <!--  количество товара -->
        <FD>01.05.2008 13:03:35</FD>
        <!--  дата и время среза стока -->
        <NOM_TYP>1</NOM_TYP>
        <!--  состояние единицы учета словарь №422 (кондиция - 1 /брак - 3) -->
        <SUB_NOM_TYP>SSG 12</SUB_NOM_TYP>
        <!--  классификация кондиции \ брака  -->
        <PALL_TYPE>1</PALL_TYPE>
        <!--  тип паллеты ссылка на словарь 359 -->
        <ST_PART_N>F12345</ST_PART_N>
        <!--  идентификатор  партии -->
        <STATUS>1</STATUS>
        <!--  статус стока  -->
        <!--  ~8                                     Списано под переупаковку -->
        <!--  1                                      Приходован на склад -->
        <!--  3                                      Перемещение -->
        <!--  5                                      Переупакован   -->
        <!--  6                                      Зарезервирован    -->
        <!--  7                                      Отгружено            -->
        <!--  8                                      Зарезервировано на переупаковку-->
        <!--  9                                      Безадресная резервация под заказ  -->
        <!--  10                                      Неофактуренный приход-->
        <!--  12                                     Забраковано           -->
        <!--  13                                     Перемещение по инициативе склада-->
        <!--  14                                     Инвентаризация-->
        <!--  17                                     Неофактуренный расход-->
        <DSC>примечание</DSC>
    </REC>

</STOCK>
<!--  ТЕГ стока -->

Параметры DPC

Параметр Сокр
параметр
Описание Обязательный Значение по умолчанию
contragent_n p1 Номер контрагента Да
store_n p2 Номер склада Да
file p3 Маска файла для загрузки Да
utf p4 Строка, по ум. пустая. Если не пустая, считается, что кодировка файла UTF8 Нет 0
dpc_task_n p5 Номер задачи DPC, которая осуществляет выгрузку данных о состоянии стока (например, генерирует отчет r_StockEqual) Да
anchors p15 Строка якорей - в стандартном модуле не используется Нет

Скрыть переход в ТСД через доступ


Решение

1) Открываем терминальный клиент.

2) Нажимаем двойным щелчком на пусто место, которое показано на скриншоте.

3) Открывается режим отладки

4) Ищем номер, который необходимо скрыть

5) Смотрим какой у него номер BNODE

6) После чего идём в Рабочие места -> Штрих кодирование - > Графы переходов ТК

7) Ищем в списке номер 935 и нажимаем редактировать (карандашик)

8) Открывается редактирование перехода

9) Если доступ уже имеется, то необходимо назначить данный доступ сотруднику (На примере покажу как скрыть данный переход у сотрудника Герасимов С. Э.) с доступом 0.

10) Заходим в Утилиты -> Доступы

Ищем в левом поле сотрудника, а в правом доступ.
(Если доступ отсутствует, создаём пункт 15)
11) Ставим галочку, после чего жмём 2 раза на зеленую галочку.

12) Видим, что доступ переместился в нижнее поле.

13) Нажимаем редактирование и выставляем доступ 0, сохраняем.

Метрику указывать в том случае, если у роли сотрудника есть доступ с метрикой например 1000, то при добавлении доступа сотруднику необходимо указать метрику больше 1000
14) После чего, дынный переход в терминальном клиенте у данного сотрудника исчезнет.

15) Если доступ в пункте 9 отсутствует

16) То заходим в Утилиты -> Доступы. И создаём доступ
1. Наименование «Пропуска - Терминал»
2. Системное имя «StDocCar_Term»
3. Тип доступа «Доступ», 3
4. Ссылка на системный номер родителя (Нажимаем на 3 точки и ищем по номеру 1633)
5. Сохраняем

17) После чего, проделываем пункты с 10 по 14.


Скрыть переход через доступ

Решение
1) Открываем терминальный клиент.

2) Нажимаем двойным щелчком на пусто место, которое показано на скриншоте.

3) Открывается режим отладки

4) Ищем номер, который необходимо скрыть

5) Смотрим какой у него номер BNODE

6) После чего идём в Рабочие места -> Штрих кодирование - > Графы переходов ТК

7) Ищем в списке номер 935 и нажимаем редактировать (карандашик)

8) Открывается редактирование перехода

9) Если доступ уже имеется, то необходимо назначить данный доступ сотруднику
(На примере покажу как скрыть данный переход у сотрудника Герасимов С. Э.) с доступом 0.

10) Заходим в Утилиты -> Доступы

Ищем в левом поле сотрудника, а в правом доступ.
(Если доступ отсутствует, создаём пункт 15)
11) Ставим галочку, после чего жмём 2 раза на зеленую галочку.

12) Видим, что доступ переместился в нижнее поле.

13) Нажимаем редактирование и выставляем доступ 0, сохраняем.

Метрику указывать в том случае, если у роли сотрудника есть доступ с метрикой например 1000, то при добавлении доступа сотруднику необходимо указать метрику больше 1000
14) После чего, дынный переход в терминальном клиенте у данного сотрудника исчезнет.

15) Если доступ в пункте 9 отсутствует

16) То заходим в Утилиты -> Доступы. И создаём доступ
1. Наименование «Пропуска - Терминал»
2. Системное имя «StDocCar_Term»
3. Тип доступа «Доступ», 3
4. Ссылка на системный номер родителя (Нажимаем на 3 точки и ищем по номеру 1633)
5. Сохраняем

17) После чего, проделываем пункты с 10 по 14.

Выберите файл ниже и нажмите "Скачать"
Или просто нажмите на эту картинку -


Служба Windows для java-приложений

Инструкция по установке службы Windows для java-приложений

Для работы обязательно требуется установленный NET Framework версии 4.0 и выше.

Для запуска Андройд сервера и REST в режиме служб понадобится следующее:

  1. Скачать архив
  2. Создать отдельную папку для каждого сервера
  3. Поместить туда все настроенные файлы сервера, который настраиваем
  4. Изменить файл WinSW.NET4.xml - аналогично изображению. ID и NAME - одинаковые, в тег arguments прописываются скрипты запуска из файла *.bat запуска.
  5. Выполнить из под админа следующий скрипт для создания службы Windows:
Sc create CWMS3000AndroidServ(CWMS3000RESTServ) binPath= C:\MyService\MyService.exe DisplayName= CWMS3000AndroidServ(CWMS3000RESTServ) type= own start= auto

После create ID сервиса из .xml
binPath – путь до файла WinSW.NET4.exe
DisplayName – имя из .xml

Запускаем службу и проверяем работоспособность.


Создание доступов


Решение

1) Заходим в Утилиты -> Доступы.

2) И создаём доступ

1. Наименование
2. Системное имя
3. Тип доступа «Доступ», указываем 3 или 0 (3 – Разрешить, 0 - Запретить)
4. Ссылка на системный номер родителя (Нажимаем на 3 точки и выбираем, тот номер в котором должен будет работать доступ, на примере указан «Терминальный клиент»)
5. Сохраняем


- Добавление доступов


Настройка ТСД

- Инструкции

- Системные файлы

- Скрыть переход через доступ


Шаблон постановки задач

1) Остановка работы склада


2) Ошибка модуля


3) Ошибка в приходе, заказе, упаковке и перемещении


4) Ошибка с работой ТСД


5) Ошибка работы отчета (шаблона или модуля)


6) Зависания в модуле

  1. Для ТСД -> http://portal.cwms3000.ru/content.php?idB=502
  2. Для ПК -> http://portal.cwms3000.ru/content.php?idB=503
  1. Для поиска -> http://portal.cwms3000.ru/content.php?idB=504
  2. Для расшифровки -> http://portal.cwms3000.ru/content.php?idB=505

Шрифты

Установка шрифтов

Решение
1) Шрифты, используемые для ШК, можно получить в Утилитах -> Библиотеках.

2) Фильтруем записи с расширением .ttf

3) Выгружаем нажатием на «…» , далее «Выгрузить из БД»

4) Далее открываем локальную папку, из которой производится запуск ВМС,
по умолчанию в папке xlt\ будет выгружен шрифт.
Например: C:\CWMS3000\xlt\

5) Открываем нужный шрифт и устанавливаем


Экспорт БД


Настраивается под конкретный сервер CWMS3000. Пример сценария:

del /Q "D:\backup\dump\*" 
set _my_datetime=%date%_%time%
set _my_datetime=%_my_datetime: =_%
set _my_datetime=%_my_datetime::=%
set _my_datetime=%_my_datetime:/=_%
set _my_datetime=%_my_datetime:.=_%
set _my_datetime=%_my_datetime:,=% 
set NLS_LANG=.CL8MSWIN1251
exp.EXE USERID=system/<пароль>@<строка соединен> LOG=D:\backup\dump\%_my_datetime%_mi.log FILE=D:\backup\dump\%_my_datetime%_mi.dmp owner=<login> consistent=y
copy "D:\backup\rar\*" "\\192.168.60.13\backup\Oracle_ed" 

и второй пример:

@echo off
for /f "Tokens=1-4 Delims=/ " %%i in ('date /t') do set dt=%%i%%j%%k%%l
for /f "Tokens=1" %%i in ('time /t') do set tm=%%i 
set tm=%tm% 
set dtt=%dt%%tm-st.dmp%
set tape_label="%computername%-%dtt%" 
set set_label="%computername% export %dtt%" 
set NLS_LANG=.CL8MSWIN1251
exp.EXE USERID=system/<пароль>@<строка соединения> LOG=f:\IDE_BACKUP\BOX\%dtt%.log FILE=f:\IDE_BACKUP\BOX\%dtt%.dmp owner=<строка соединения> consistent=y

Необходимо задать строку соединения, нужные директории.


Внимание
При импорте БД необходимо настроить системные задачи БД. Это выполняется нашими специалистами.

Новые рекомендации к "Экспорт", "Импорт"
Cоздать объект-директорию, с которым нам предстоит работать:

CREATE OR REPLACE DIRECTORY <объект>AS '/u01/app/oracle/oradata/';
GRANT READ, WRITE ON DIRECTORY <объект> TO <логин>;

Дополнительная информация
В отличии от утилит exp и imp, все файлы Data Pump: и ".dmp", и ".log", - создаются на Oracle-сервере, а не на клиентском компьютере.

Все действия Data Pump выполняются множественными задачами (jobs) (server processes not DBMS_JOB jobs). Эти задачи управляются главным управляюшим процессом, который использует расширенную очередь (Advanced Queuing). Во время выполнения, создаётся и используется главным управляющим процессом таблица очереди, которая называется по имени задания. Таблица удаляется после успешного выполнения задания Data Pump. Задание и очередь могут быть названы на Ваше усмотрение с использованием параметра "JOB_NAME". Остановка клиентского процесса не останавливает связанное с ним Data Pump задание. Передача клиенту комбинации клавиш "Ctrl+C" во время выполнения задания остановит вывод на стандартное устройство вывода и переведёт в командную строку. Ввод "status" в этой командной строке позволить проследить за состоянием текущего задания:

Export> status
Worker 1 Status:
 State: EXECUTING
 Object Schema: SYSMAN
 Object Name: MGMT_CONTAINER_CRED_ARRAY
 Object Type: DATABASE_EXPORT/SCHEMA/TYPE/TYPE_SPEC
 Completed Objects: 261
 Total Objects: 261
Job: SYS_EXPORT_FULL_01
 Operation: EXPORT
 Mode: FULL
 State: EXECUTING
 Bytes Processed: 0
 Current Parallelism: 1
 Job Error Count: 0
 Dump File: D:TEMPDB10G.DMP
   bytes written: 4,096
Worker 1 Status:
 State: EXECUTING
 Object Schema: SYSMAN
 Object Name: MGMT_CONTAINER_CRED_ARRAY
 Object Type: DATABASE_EXPORT/SCHEMA/TYPE/TYPE_SPEC
 Completed Objects: 261
 Total Objects: 261

Производительность Data Pump может быть улучшена использованием параметра "PARALLEL". Этот параметр следует использовать совместно с шаблоном "%U" в параметре "DUMPFILE" для разрешения создания или чтения множественных dump-файлов:

expdp <user>/<пароль>@<схема> schemas=<имя схемы> directory=<имя директории> parallel=4 dumpfile=<имя дампа>.dmp logfile=<имя лога>.log

Вьюшка (view) "DBA_DATAPUMP_JOBS" может быть использована для контроля состояния задания:

<user>@<схема>> select * from dba_datapump_jobs;
OWNER_NAME                     JOB_NAME                       OPERATION
------------------------------ ------------------------------ ------------------------------
JOB_MODE                       STATE                              DEGREE ATTACHED_SESSIONS
------------------------------ ------------------------------ ---------- -----------------
<user>                         SYS_EXPORT_FULL_01             EXPORT
FULL                           EXECUTING                               1                 1

Параметры "INCLUDE" и "EXCLUDE" могут быть использованы для ограничения импорта/экспорта указанных объектов. Когда используется параметр "INCLUDE", в экспорт будут включены только указанные объекты:

expdp <user>/<пароль>@<схема> schemas=<имя схемы> include=TABLE:"IN ('EMP', 'DEPT')" directory=<имя директории> dumpfile=<имя дампа>.dmp logfile=<имя лога>.log

При использовании параметра "EXCLUDE", все объекты, кроме указанных в параметре, будут включены в экспорт:

expdp <user>/<пароль>@<схема> schemas=<имя схемы> exclude=TABLE:"= 'BONUS'" directory=<имя директории> dumpfile=<имя дампа>.dmp logfile=<имя лога>.log

Кроме всего прочего, нужно учитывать особенности реализации среды. Например, в bash строка может выглядеть так:

expdp <user>/<пароль>@<схема> schemas=<имя схемы> exclude=TABLE:\"like \'USER%\'\" directory=<имя директории> dumpfile=<имя дампа>.dmp logfile=<имя лога>.log

Data Pump API
Вместе с утилитами Data Pump, Oracle предоставляет PL/SQL API. Следующий пример показывает, как API может быть использован для выполнения экспорта:

SET SERVEROUTPUT ON SIZE 1000000
 DECLARE
   l_dp_handle       NUMBER;
   l_last_job_state  VARCHAR2(30) := 'UNDEFINED';
   l_job_state       VARCHAR2(30) := 'UNDEFINED';
   l_sts             KU$_STATUS;
 BEGIN
   l_dp_handle := DBMS_DATAPUMP.open(
     operation   => 'EXPORT',
     job_mode    => 'SCHEMA',
     remote_link => NULL,
     job_name    => 'EMP_EXPORT',
     version     => 'LATEST');
DBMS_DATAPUMP.add_file(
   handle    => l_dp_handle,
   filename  => 'SCOTT.dmp',
   directory => 'TEST_DIR');
DBMS_DATAPUMP.add_file(
   handle    => l_dp_handle,
   filename  => 'SCOTT.log',
   directory => 'TEST_DIR',
   filetype  => DBMS_DATAPUMP.KU$_FILE_TYPE_LOG_FILE);
DBMS_DATAPUMP.metadata_filter(
   handle => l_dp_handle,
   name   => 'SCHEMA_EXPR',
   value  => '= SCOTT');
DBMS_DATAPUMP.start_job(l_dp_handle);
DBMS_DATAPUMP.detach(l_dp_handle);
END;
/

Как только задание запущено, его статус можно проверить используя следующий запрос:

system@db10g> select * from dba_datapump_jobs;

Внешние таблицы
У Oracle появилась поддержка технологий Data Pump, с помощью которых можно преносить данные во внешние таблицы. Драйвер доступа ORACLE_DATAPUMP может быть использован для выгрузки данных в экспорт-файл и последующей перезагрузке их. Выгрузка данных происходит, когда внешняя таблица создана с использованием кляузы "AS":

CREATE TABLE emp_xt
 ORGANIZATION EXTERNAL
  (
    TYPE ORACLE_DATAPUMP
    DEFAULT DIRECTORY test_dir
    LOCATION ('emp_xt.dmp')
  )
  AS SELECT * FROM emp;

Затем данные могут быть запрошены так:

SELECT * FROM emp_xt;

Синтаксис создания указателя на внешнюю таблицу в существующем файле аналогичен, но без кляузы "AS":

DROP TABLE emp_xt;
CREATE TABLE emp_xt (
 EMPNO     NUMBER(4),
 ENAME     VARCHAR2(10),
 JOB       VARCHAR2(9),
 MGR       NUMBER(4),
 HIREDATE  DATE,
 SAL       NUMBER(7,2),
 COMM      NUMBER(7,2),
 DEPTNO    NUMBER(2))
 ORGANIZATION EXTERNAL (
    TYPE ORACLE_DATAPUMP
    DEFAULT DIRECTORY test_dir
    LOCATION ('emp_xt.dmp')
 );
SELECT * FROM emp_xt;

HELP
Опция "HELP=Y" заставит отобразить описание всех доступных параметров:

expdp help=y
Export: Release 10.2.0.3.0 - 64bit Production on Среда, 20 Февраль, 2008 13:57:18                                                  
 Copyright (c) 2003, 2005, Oracle.  All rights reserved.
 Утилита экспорта насоса данных предоставляет механизм для передачи объектов данных
 между базами данных Oracle. Эта утилита вызывается следующей командой:
    Пример: expdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp
 Управление выполнением экспорта может осуществляться вводом команды 'expdp' с заданием после нее
 различных параметров. Для задания параметров служат ключевые слова:
    Формат:  expdp КЛЮЧЕВОЕ СЛОВО=значение или КЛЮЧЕВОЕ СЛОВО=(значение1,значение2,...,значениеN)
    Пример: expdp scott/tiger DUMPFILE=scott.dmp DIRECTORY=dmpdir SCHEMAS=scott
                или TABLES=(T1:P1,T1:P2), если T1 является секционированной таблицей
 USERID должно быть первым параметром в командной строке.
 Ключевое слово        Описание (Знач. по умолчанию)
 ------------------------------------------------------------------------------
 ATTACH                Служит для присоединения к существующему заданию, например, ATTACH [=имя задания].
 COMPRESSION           Уменьшение размера содержимого файла дампа, если допустимо
                       значения ключевого слова: (METADATA_ONLY) и NONE.
 CONTENT               Служит для задания данных для выгрузки. Разрешаются ключевые слова:
                       (ALL), DATA_ONLY и METADATA_ONLY.
 DIRECTORY             Объект 'каталог' для файлов дампов и файлов журналов.
 DUMPFILE              Список результирующих файлов дампов (expdat.dmp),
                       например, DUMPFILE=scott1.dmp, scott2.dmp, dmpdir:scott3.dmp.
 ENCRYPTION_PASSWORD   Ключ пароля для создания столбца зашифрованных данных.
 ESTIMATE              Служит для вычисления оценочных данных заданий. Допускаются следующие ключевые слова:
                       (BLOCKS) и STATISTICS.
 ESTIMATE_ONLY         Служит для вычисления оценочных данных заданий без выполнения экспорта.
 EXCLUDE               Служит для исключения определенных типов объектов, например, EXCLUDE=TABLE:EMP.
 FILESIZE              Служит для задания размера каждого файла дампа в байтах.
 FLASHBACK_SCN        SCN, используемый для установки мгновенного снимка сеанса назад.
 FLASHBACK_TIME        Время, используемое на получение SCN, ближайшее к заданному времени.
 FULL                  Служит для экспорта всей базы данных (N).
 HELP                  Служит для отображения сообщений Справки (N).
 INCLUDE               Служит для включения определенных типов объектов, например, INCLUDE=TABLE_DATA.
 JOB_NAME              Имя создаваемого задания экспорта.
 LOGFILE               Имя файла журнала (export.log).
 NETWORK_LINK          Имя канала связи удаленной базы данных с исходной системой.
 NOLOGFILE             Не записывать файл журнала (N).
 PARALLEL              Служит для изменения числа активных рабочих процессов для текущего задания.
 PARFILE               Служит для задания файла параметров.
 QUERY                 Фраза предиката, используемая для экспорта подмножества таблицы.
 SAMPLE                Процент данных для экспорта;
 SCHEMAS               Служит для перечисления схем экспорта (схема при регистрации).
 STATUS                Частота (сек) с которой должно отслеживаться состояние задания, где
                       значение по умолчанию (0) соответствует отображению нового состояния, когда оно будет доступно.
 TABLES                Служит для указания списка таблиц для экспорта - только для одной схемы.
 TABLESPACES           Служит для указания списка табличных пространств для экспорта.
 TRANSPORT_FULL_CHECK  Служит для проверки сегментов хранения для всех таблиц (N).
 TRANSPORT_TABLESPACES Список табличных пространств, из которых будут выгружены метаданные.
 VERSION               Версия объектов для экспорта. Могут использоваться следующие ключевые слова:
                       (COMPATIBLE), LATEST или любой действительный номер версии базы данных.
 Следующие команды могут использоваться в интерактивном режиме.
 Примечание. Допускается использование сокращений
 Команда               Описание
 ------------------------------------------------------------------------------
 ADD_FILE              Служит для добавления файла дампа в набор файлов дампов.
 CONTINUE_CLIENT       Служит для возврата в режим протоколирования. В случае простоя задание будет запущено заново.
 EXIT_CLIENT           Служит для выхода из сеанса клиента без прекращения выполнения задания.
 FILESIZE              Размер файла по умолчанию (байт) для последующих команд ADD_FILE.
 HELP                  Отображает сводку по интерактивным командам.
 KILL_JOB              Служит для отсоединения и удаления задания.
 PARALLEL              Служит для изменения числа активных рабочих процессов для текущего задания.
                       PARALLEL=<число рабочих процессов>.
 START_JOB             Служит для запуска/возобновления текущего задания.
 STATUS                Частота (сек) с которой должно отслеживаться состояние задания, где
                       значение по умолчанию (0) соответствует отображению нового состояния, когда оно будет доступно.
                       STATUS[=interval]
 STOP_JOB              Служит для нормального завершения выполнения задания и выхода из клиента.
                       STOP_JOB=IMMEDIATE выполняет немедленное завершение
                       задания насоса данных.
impdp help=y
Import: Release 10.2.0.3.0 - 64bit Production on Среда, 20 Февраль, 2008 13:57:18
 Copyright (c) 2003, 2005, Oracle.  All rights reserved.
 Утилита импорта насоса данных предоставляет механизм для передачи объектов данных
 между базами данных Oracle. Эта утилита вызывается следующей командой:
      Пример: impdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp
 Управление выполнением импорта может осуществляться вводом команды 'impdp' с заданием после нее
 различных параметров. Для задания параметров служат ключевые слова:
      Формат:  impdp КЛЮЧЕВОЕ СЛОВО=значение или КЛЮЧЕВОЕ СЛОВО=(значение1,значение2,...,значениеN)
      Пример: impdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp
 USERID должно быть первым параметром в командной строке.
 Ключевое слово        Описание (Знач. по умолчанию)
 ------------------------------------------------------------------------------
 ATTACH                Служит для присоединения к существующему заданию, например, ATTACH [=имя задания].
 CONTENT               Служит для задания данных для загрузки. Разрешаются ключевые слова:
                       (ALL), DATA_ONLY и METADATA_ONLY.
 DIRECTORY             Объект 'каталог', который должен использоваться для файлов дампов, журналов и sql.
 DUMPFILE              Список файлов дампов для выполнения импорта из них (expdat.dmp),
                       например, DUMPFILE=scott1.dmp, scott2.dmp, dmpdir:scott3.dmp.
 ENCRYPTION_PASSWORD   Ключ пароля для доступа к столбцу зашифрованных данных.
                       Этот параметр недействителен для заданий импорта по сети.
 ESTIMATE              Служит для вычисления оценочных данных заданий. Допускаются следующие ключевые слова:
                       (BLOCKS) и STATISTICS.
 EXCLUDE               Служит для исключения определенных типов объектов, например, EXCLUDE=TABLE:EMP.
 FLASHBACK_SCN        SCN, используемый для установки мгновенного снимка сеанса назад.
 FLASHBACK_TIME        Время, используемое на получение SCN, ближайшее к заданному времени.
 FULL                  Служит для выполнения импорта всех данных из источника (Y).
 HELP                  Служит для отображения сообщения Справки (N).
 INCLUDE               Служит для включения определенных типов объектов, например, INCLUDE=TABLE_DATA.
 JOB_NAME              Имя создаваемого задания импорта.
 LOGFILE               Имя файла журнала (import.log).
 NETWORK_LINK          Имя канала связи удаленной базы данных с исходной системой.
 NOLOGFILE             Не записывать файл журнала.
 PARALLEL              Служит для изменения числа активных рабочих процессов для текущего задания.
 PARFILE               Служит для задания файла параметров.
 QUERY                 фраза предиката, используемая для импорта подмножества таблицы.
 REMAP_DATAFILE        Служит для переопределения ссылок на файлы данных во всех операторах DDL.
 REMAP_SCHEMA          Объекты из одной схемы загружаются в другую схему.
 REMAP_TABLESPACE      Объект табличного пространства повторно отображается в другое табличное пространство.
 REUSE_DATAFILES       Табличное пространство будет инициализировано, если оно уже существует (N).
 SCHEMAS               Список схем для импорта.
 SKIP_UNUSABLE_INDEXES Служит для пропуска индексов, для которых было установлено состояние 'Индекс не применим'.
 SQLFILE               Служит для записи всех DDL SQL в указанный файл.
 STATUS                Частота (сек) с которой должно отслеживаться состояние задания, где
                       значение по умолчанию (0) соответствует отображению нового состояния, когда оно будет доступно.
 STREAMS_CONFIGURATION включает загрузку метаданных потоков
 TABLE_EXISTS_ACTION   Действие, которое выполняется, если импортируемый объект уже существует.
                       Допустимые ключевые слова: (SKIP), APPEND, REPLACE и TRUNCATE.
 TABLES                Служит для задания списка таблиц для импорта.
 TABLESPACES           Служит для задания списка табличных пространств для импорта.
 TRANSFORM             Преобразование метаданных, которое должно применяться к соответствующим объектам.
                       Допустимые ключевые слова для преобразований: SEGMENT_ATTRIBUTES, STORAGE
                       OID и PCTSPACE.
 TRANSPORT_DATAFILES   Список файлов данных для импорта в режиме, допускающем транспортировку.
 TRANSPORT_FULL_CHECK  Служит для проверки сегментов хранения для всех таблиц (N).
 TRANSPORT_TABLESPACES Список табличных пространств, из которых будут загружаться метаданные.
                       Действительно только для операций в режиме импорта NETWORK_LINK.
 VERSION               Версия объектов для экспорта. Могут использоваться следующие ключевые слова:
                       (COMPATIBLE), LATEST или любой действительный номер версии базы данных.
                       Действительно только для NETWORK_LINK и SQLFILE.
 Следующие команды могут использоваться в интерактивном режиме.
 Примечание. Допускается использование сокращений
 Команда               Описание (Значение по умолчанию)
 ------------------------------------------------------------------------------
 CONTINUE_CLIENT       Служит для возврата в режим протоколирования. В случае простоя задание будет запущено заново.
 EXIT_CLIENT           Служит для выхода из сеанса клиента без прекращения выполнения задания.
 HELP                  Отображает сводку по интерактивным командам.
 KILL_JOB              Служит для отсоединения и удаления задания.
 PARALLEL              Служит для изменения числа активных рабочих процессов для текущего задания.
                       PARALLEL=<число рабочих процессов>.
 START_JOB             Служит для запуска/возобновления текущего задания.
                       START_JOB=SKIP_CURRENT служит для запуска задания после пропуска
                       всех действий, которые выполнялись, когда задание было остановлено.
 STATUS                Частота (сек) с которой должно отслеживаться состояние задания, где
                       значение по умолчанию (0) соответствует отображению нового состояния, когда оно будет доступно.
                       STATUS[=interval]
 STOP_JOB              Служит для нормального завершения выполнения задания и выхода из клиента.
                       STOP_JOB=IMMEDIATE выполняет немедленное завершение
                       задания насоса данных.