Содержание

SHPSH/2012-05-31: Интеграция с 1с - добавление новой таблицы для партий

предлагаю сделать так (Денис Лобанов):

1. Изменяем текущую таблицу

CREATE TABLE BATCHES (
    IDBATCH      INTEGER NOT NULL,
    IDBATCHOPER  INTEGER NOT NULL,
    IDPROD       INTEGER NOT NULL,
    DT           TIMESTAMP,
    DESCR        VARCHAR(128),
    IDPLACESRC   INTEGER NOT NULL,
    IDPLACEDST   INTEGER DEFAULT 0 NOT NULL,
    IDBATCHEXT   INTEGER
);

2. Добавляем новую таблицу - BATCHEXT

primary key - IDBATCHEXT, остальные поля на ваше усмотрение

Описание дополнительных полей таблицы BATCHEXT (Евгений Каюшев)

  1. IDPROD INTEGER NOT NULL - идентификатор культуры
  2. NBREXT INTEGER NOT NULL - внешний номер партии (фактически - номер документа 1С)
  3. DTBEXT TIMESTAMP - Дата (создания документа партии в 1С)
  4. STATUS INTEGER DEFAULT 0 - индекс значения перечисления «умкпСтатусыПроизводственнойПартии» из 1С. Справочно:
    • 0 - Открыта
    • 1 - ВПодработке
    • 2 - ВПроизводстве
    • 3 - Закрыта
  5. IDPRADD VARCHAR(128) - дополнительные идентификаторы культур - список идентификаторов IDPROD через разделитель (запятая), например: 1,5,6

Требования к доступности внешних партий для выбора оператором АСУТП управления весами:

  1. Записи с STATUS = 3 не должны быть видимы оператору и должны быть недоступны для выбора
  2. Для операции размещения (Значение поля IDBATCHOPER=1 в таблице BATCHOPER) допустимо значение IDBATCHEXT=NULL в таблице BATCHES. Смысл в том, что производственная партия появляется тогда, когда начальник производства её открывает в 1С и когда начинается движение сырья, связанное с очередным производственным циклом подработок и производства продукции. Иначе говоря, для операции «Размещение» допускается не указывать партию
  3. Для операции перемещение (Значение поля IDBATCHOPER=2 в таблице BATCHOPER) допустимо значение IDBATCHEXT=NULL в таблице BATCHES. Смысл в том, что производственная партия появляется тогда, когда начальник производства её открывает в 1С и когда начинается движение сырья, связанное с очередным производственным циклом подработок и производства продукции. Перемещение, в общем случае, может не относиться к конкретному производственному циклу. Иначе говоря, для операции «Перемещение» допускается не указывать партию
  4. Для операции Подработка (Значение поля IDBATCHOPER=3 в таблице BATCHOPER) для выбора должны быть доступны записи с STATUS=0, STATUS=1 и STATUS=2
  5. Для операции Формирование Помольной Партии (Значение поля IDBATCHOPER=4 в таблице BATCHOPER) для выбора должны быть доступны записи с STATUS=1 и STATUS=2
  6. Для операции Снятие с учета (Значение поля IDBATCHOPER=5 в таблице BATCHOPER) для выбора должны быть доступны записи с STATUS=1 и STATUS=2, STATUS=3 (посл. - вывоз отходов, например)

Дополнительное ОБЯЗАТЕЛЬНОЕ УСЛОВИЕ ОТБОРА: - Должна быть блокирована возможность выбора внешних партий без указания культуры - ОБЯЗАТЕЛЕН ОТБОР по IDPROD плюс отбор по списку IDPRADD (оператор должен вмдеть только те записи, где IDPROD совпадают или идентификатороы которых перечислены в IDPRADD)

IDBATCHOPER IDBATCHEXT BATCHEXT.STATUS
1null/not null0,1,2
2null/not null0,1,2
3not null0,1,2
4not null1,2
5not null1,2,3


ДОПОЛНЕНИЕ ОТ 30.05.12
Если культура не выбрана (IDPROD = NULL), то ни одной записи, доступной для выбора, быть не должно.

ВАЖНО: Операторам будет передоваться документ (в печатном виде), где, в частности, будут указаны, например:

НОМЕР ПАРТИИ    2                       - соотв. полю NBREXT (мой комментарий)
ДАТА            04.04.2012 08:12:45     - соотв. полю DTBEXT
КУЛЬТУРА        ГОРОХ                   - соотв. полю NAME таблицы PRODUCT 
                                          (поиск - связь по полю IDPROD)
др. поля, несущественные для данной задачи            

ПОЛЬЗОВАТЕЛЮ в списке выбора в АСУТП необходимо «показывать» указанные поля.

Дополнительно (Евгений Каюшев)

Формат файла обмена:

Строка 1: <NBREXT>,<DTBEXT>,<IDPROD>,<STATUS> 
,,,,,,
Строка n: <NBREXT>,<DTBEXT>,<IDPROD>,<STATUS> 

Предполагается выгрузка в файл с именем «Exchange.csv»

  1. Файл всегда обновляется со стороны 1с - в произвольное время (по мере возникновения новых партий, либо изменения статуса существующих автоматически) и «складывается по заданному пути» на некий файловый ресурс
  2. АСУТП сканирует, например с периодичностью 30 мин., факт появления файла, обрабатывает его (добавляет, либо модифицирует записи) и удаляет файл

Интерфейс выбора партии 1С

Скрипт обновления базы данных

SHPSHWES_upd.sql