Пример заполнения декларативной и реальной табличных частей документа

Последние изменение: 22.05.2017

Рассмотрим пример документа приемки, основанном на некоторой заявке на поставку из учетной системы. Вот как бы он выглядел до начала какой-либо работы на терминале:

Шапка

Тип документа: «Приемка», ID: «PO1203122-08» Имя: «ПП №ЗПН1203122/08», Штрихкод: «120312208», Назначено: «Кладовщики»,  Поставщик: «ООО Мойдодыр», Распространять по штрихкоду: «Да», Признаки: {«Вводить партию»}.

Декларировано ( свойство DeclaredItems , тип - коллекция объектов типа DocumentItem , т.е. строк документа):

Товар

Упаковка

Кол-во план

Кол-во факт

Партия

Срок годности

Паллета ( SSCC )

<…и т.д.>

0001; Умывальник

061; шт.

4

0

-

-

-

4101; Мыло душистое

060; короб

17

0

-

-

-

0010; Зубной порошок

070; кг

20

0

-

-

-

7564; Густой гребешок

061; шт.

300

0

-

-

-

7564; Густой гребешок

061; шт.

100

0

-

-

-

Реально ( свойство CurrentItems , тип - коллекция объектов типа DocumentItem , т.е. строк документа):

Товар

Упаковка

Кол-во план

Кол-во факт

Партия

Срок годности

Паллета ( SSCC )

<…и т.д.>

пусто

Привязанные ошибки (свойство Errors, тип – коллекция объектов типа Error, т.е. описаний ошибок)

Имя

ID

Комментарий

Штрихкод

Фатальная

Поля

пусто

Привязки признаков (свойство ClassificatorUsings , тип – коллекция объектов типа ClassificatorUsing , т.е. применений признака к объекту с указанным кодом)

Код признака

Код объекта

пусто

конец

А вот как бы он выглядел после окончания приемки на терминале:

Шапка

Тип документа: «Приемка», ID: «PO1203122-08» Имя: «ПП №ЗПН1203122/08», Штрихкод: «120312208», Назначено: «Кладовщики»,  Поставщик: «ООО Мойдодыр», Распространять по штрихкоду: «Да», Признаки: {«Вводить партию», «Код состояния транспортного средства: ok»}, Номер ворот: «5».

Декларировано ( свойство DeclaredItems , тип - коллекция объектов типа DocumentItem , т.е. строк документа):

Товар

Упаковка

Кол-во план

Кол-во факт

Партия

Срок годности

Паллета ( SSCC )

<…и т.д.>

0001; Умывальник

061; шт.

4

0

-

-

-

4101; Мыло душистое

060; короб

17

0

-

-

-

0010; Зубной порошок

070; кг

20

0

-

-

-

7564; Густой гребешок

061; шт.

300

0

-

-

-

7564; Густой гребешок

061; шт.

100

0

-

-

-

3370; Полотенце пушистое

061; шт.

0

50

-

-

-

Реально ( свойство CurrentItems , тип - коллекция объектов типа DocumentItem , т.е. строк документа):

Товар

Упаковка

Кол-во план

Кол-во факт

Партия

Срок годности

Паллета ( SSCC )

<…и т.д.>

0001; Умывальник

061; шт.

3

3

-

-

2000010


4101; Мыло душистое

060; короб

9

9

СМ121007

12.04.08

2000011


4101; Мыло душистое

060; короб

8

9

СМ121007

12.04.08

2000012


4101; Мыло душистое

060; короб

0

4

СМ121007

12.04.08

2000013


3370; Полотенце пушистое

061; шт.

0

25

У1415224

-

2000014


3370; Полотенце пушистое

061; шт.

0

25

Е1363462

-

2000017


0010; Зубной порошок

060; короб

5

6

131108РР

13.11.12

2000019


7564; Густой гребешок

061; шт.

300

300

-

-

2000020


7564; Густой гребешок

061; шт.

100

20

-

-

2000020


Привязанные ошибки (свойство Errors, тип – коллекция объектов типа Error, т.е. описаний ошибок)

Имя

ID

Комментарий

Штрихкод

Фатальная

Поля

«Поддон битый»

101

-

101

нет

Кол-во: 3

Тип: «Евро»

Привязки признаков (свойство ClassificatorUsings , тип – коллекция объектов типа ClassificatorUsing , т.е. применений признака к объекту с указанным кодом)

Код признака

Код объекта

772; «Брак»

2000013 (Паллета)

конец

Чтобы получить из первого документа второй, кладовщик сделал следующие вещи:

  • Ввел номер ворот приемки (в шапку);
  • Осмотрел внутренность транспортного средства и выбрал код состояния «ok» (в признаки документа);
  • Принял 3 умывальника в паллету 2000010;
  • Принял по очереди 3 паллеты мыла душистого все одной партии и срока годности. Две паллеты по 9 коробок принял хорошего, а брак сложил в последнюю паллету 2000013 и отметил на терминале, что это брак. Внес на терминале данные о той неприятности, что мыло от поставщика пришло на 3х битых евро-поддонах;
  • Принял две паллеты по 25 штук пушистых полотенец, которые не значились в накладной (пересорт), разных партий. В процессе испортил этикетки паллет 2000015 и 2000016; 
  • Принял паллету зубного порошка в 6 коробов по 4 килограмма в каждом (а по накладной было 20 кг, т.е. 5 коробов); 
  • Принял паллету густых гребешков 320 штук. 

На примере видно, как Mobile SMARTS работает с количествами и единицами измерения план/факт в строках документа. Для декларированных строк в колонке «план» отображается плановое количество, полученное из учетной системы. А в колонке «факт» после исполнения операции видно сколько в итоге было принято в плановых единицах измерения. Например, для пушистых полотенец, которые первоначально отсутствовали в плане, Mobile SMARTS была заведена новая строка декларированной части с плановым количеством «0». Для строк реальной части в колонке «план» отображается то количество из плана, которое приходится на данную конкретную реально принятую строку, т.е. сколько из плана она выполнила уже в реально принимаемых единицах измерения. Например, для зубного порошка там стоит 5 коробов (по 4 кг) – ведь по плану всего надо было принять 20 кг. А в колонке «факт» отображается тот факт, который был введен кладовщиком, сканирован с этикетки поставщика, либо был накоплен в результате нескольких вводов/сканирований (реальные строки документа могут объединяться, если они отличаются только количеством – это определяется настройкой конфигурации).

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

Еще одно важное замечание: декларативная часть документа может содержать как много строк с одной и той же номенклатурой, так и много строк с одной и той же упаковкой и всем прочим. Каждая строка реальной части содержит ссылку на строку плана, которой она соответствует. Именно потому для тех реальных строк, для которых в плане ничего не предусмотрено, создаются новые плановые строки с плановым количеством «0». А те реальные строки, которые разносятся по нескольким строкам плана, разбиваются на несколько реальных строк так, чтобы каждой новой реальной строке соответствовала только одна строка плана. В целом алгоритм разноски сводится к следующему:

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