20.12.2011 08:48
Приветствую, не подскажет ли кто можно ли статусы документов СМ менять при помощи скрипта?
Нашел вот такой функционал
Цитата:
supermag.documents.changedocstate('IW', vDocID, 1, 2);
но создается такое впечатление что он только тупо меняет поле docstate и никак не влияет на движения документов (т.е. если при поднятии статуса из морды супермага проихдоит движение, например, в таблице остатков. а при вызове этой функции нет).
Собсвенно нужно это для написания внешней системы управления документами.
20.12.2011 10:49
Не правильно писать внешнюю программу управления документами. Вам никто не расскажет полностью как этот документооборот на уровне базы работает. И у вас соответственно никогда не будет гарантий что работает однозначно надёжно, требовать с с+ уже ничего не сможете, обновление версии будет совсем нереализуемой задачей.
20.12.2011 11:05
Не думаю что это скажется на обновлении, я ведь не собираюсь менять струуктура таблиц.
Насчет того что С+ вряд ли откроет секрет я тож знаю, но вдруг кто - нибудь из участником докопался и это не шибко секретно.
Пока рассматриваем вариант с выплевыванием документа в XML, смены статуса там и запихиванием обратно.
20.12.2011 12:22
Про обновление сказал потому что даже если раскопать логику, после обновления она может поменяться, структура может измениться и всё это отлавливать накладно будет. Ну да дело мастера...
Первый мой пост был на тему, почему скорее всего тебе тут никто не поможет.
Расскажи хотя бы, для чего надо самостоятельно менять статусы, идея в чём, что реализовать хочешь, чего нет в самом супермаге, тогда интересно станет ?
20.12.2011 12:34
Да, собсвенно, на первом этапе хочу облегчить жизнь человеку отвечающего за блокировку невыполненных заказов поставщика. Дело в том что у нас в организации это осуществляется по заявке с магазна (сам магазин прав на блокировку не имеет). Соответсвенно каждое утро человек лопатит эти заявки и копипастит необходимы для блокировки номера в фильтр супермага.
А так как заявки подаются в электронном виде то хотел реализовать следующее
1. Читаем заявки с БД системы учета заявок;
2. Регулярными выражениями вычленяем номера документов на блокировку;
3. Скармливаем эти номера модулю блокировки.
Ну а дальше есть идея распространить это на синхронизацию документов с 1с, т.е. к примеру, сняли проведение в 1с - документ ушел в черновик.
20.12.2011 12:40
Дак заказы на остатки не влияют. Заблокировать и поставить в очередь...
20.12.2011 12:54
Зато влияют на ожидаемое количество.
20.12.2011 13:06
Цитата:
Mtirt Зато влияют на ожидаемое количество.
Точно так
20.12.2011 15:52
С оговорками про "не нужно так делать" и без гарантий корректности и работоспособности на вашей версии.

Код:
declare
  res number;
  DOCTYPE supermag.smdocuments.doctype%TYPE := 'OR'; 
  DOCID   supermag.smdocuments.id%TYPE      := 'ЗП012345'; 
begin
  if supermag.core.getproc is null then
     res := supermag.Core.StartSMApp();
  end if;
  supermag.SMDOCLOCK(DOCTYPE, DOCID);
  begin
    supermag.SMENABLEACTUALIZEGOODS;
    -- блокировка
    supermag.documents.changedocstate(DOCTYPE, DOCID, 1, 0);
    supermag.SMACTUALIZEGOODS;
    supermag.SMDOCUNLOCK(DOCTYPE, DOCID);
  exception when others then
    supermag.SMDOCUNLOCK(DOCTYPE, DOCID);
    raise;
  end;
end;
21.12.2011 09:38
Огромное спасибо!
Часовой пояс GMT +3, время: 22:04.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.