Остатки МЦ

Приемы и подходы, обмен опытом

Модераторы: Screw, larin

SergZol
заказчик
Сообщения: 83
Зарегистрирован: Пн, 10/12/2007 13:24
Имя Фамилия: Сергей Золотухин
Откуда: Северо-Западные Магистральные Нефтепроводы
Контактная информация:

Остатки МЦ

Сообщение SergZol »

Интересует функция расчета сальдовых остатков МЦ на заданную дату, и желательно в разрезе групп МЦ.
Если таковая имеется, подскажите где посмотреть описание и как пользововаться.
е очень нужна функция расчета текущих(или на дату) остатков МЦ в разрезе целевого учета.
lserg
топ-софт
Сообщения: 15
Зарегистрирован: Ср, 19/09/2007 10:07
Имя Фамилия: Сергей Лебедев
Откуда: ТопСофт
Контактная информация:

Сообщение lserg »

Такая функция конечно есть. Это стандартный интерфейс: Складской учет - Операции - Сальдовые остатки - Расчет сальдовых остатков.
В разрезе целевого учета тоже пересчитывает.
Описание есть в хелпе для данного интерфейса и в документации по контуру Логистики.


P.S. По подобным вопросам нужно обращаться в свой ОТП. Данный форум предназначен для консультаций по вопросам на которые ОТП ответить не может.
lserg
топ-софт
Сообщения: 15
Зарегистрирован: Ср, 19/09/2007 10:07
Имя Фамилия: Сергей Лебедев
Откуда: ТопСофт
Контактная информация:

Сообщение lserg »

Извините, наверное я сразу неправильно понял вопрос.
Если интересует получение данных о сальдовых остатках МЦ при программировании на VIP, то лучше всего использовать следущий функционал:

Получение наличия и цен МЦ в разрезах хранения Оперконтура (выгрузка результатов в таблицу TmpSaldo1).

1. Делаем инициализацию:

Код: Выделить всё

  if (not Store_Init)
    { Message('Не проинициализировался объект расчета сальдо...',cmCancel);
      EXIT ;
    }
2. Для расчета можно предварительно выбрать нужные МЦ, склады, МОЛ и партии в таблицу Pick (с помощью интерфейсов выбора), для проверки наличия выбора определяем соответствующие переменные:

Код: Выделить всё

  var wasPickedMC, wasPickedPodr, wasPickedMOL, wasPickedParty: boolean;

  wasPickedMC   := ( GetFirst Pick where ((7  == Pick.wList)) = tsOk );
  wasPickedPodr := ( GetFirst Pick where ((11 == Pick.wlist)) = tsOk );
  wasPickedMOL  := ( GetFirst Pick where ((8  == Pick.wList)) = tsOk );
  wasPickedParty:= ( GetFirst Pick where ((10 == Pick.wlist)) = tsOk );

  //Важно: не забывать чистить Pick перед использованием данного объекта, чтобы в параметры расчета не попадали старые данные
3. Очищаем таблицу TmpSaldo1 от старых значений:

Код: Выделить всё

   Store_ReInit;
4. Определяем модуль из которого будем брать остатки:

Код: Выделить всё

   Store_SkladProizv(0); //(0- склад, 1 - производство, 2 - ремонты, 3 - УКС)
5. Запускаем выполнение расчета остатков:

Код: Выделить всё

   Store_Run ( Date1, //дата расчета остатков.
              if(wasPickedMC,    comp(-2), comp( 0)), //можно подставить конктретный nRec МЦ
              if(wasPickedPodr,  comp(-2), comp( 0)), //можно подставить конктретный nRec склада, но если этот конкретный nRec=0, то нужно передать comp(-1), иначе будет получение остатков по всем складам (при данном параметре = 0)
              if(wasPickedMOL,   comp(-2), comp( 0)), //можно подставить конктретный nRec МОЛ, но если этот конкретный nRec=0, то нужно передать comp(-1), иначе будет получение остатков по всем МОЛ (при данном параметре = 0)
              if(wasPickedParty, comp(-2), comp( 0)), //можно подставить конктретный nRec партии, но если этот конкретный nRec=0, то передать comp(-1), иначе будет получение остатков по всем партиям (при данном параметре = 0)
              TRUE, TRUE, TRUE );
Последние 3 параметра определяет детализацию данных по соответствующим разрезам. Первый - по складам, второй - по МОЛ, третий - по партиям. Например, если передать в последнем параметре FALSE, то не будет детализации по партиям т.е. Вместо нескольких записей (конечно если в остатках есть несколько партий) в TmpSaldo1 будет одна запись у которой TmpSaldo.cParty = 0 и данные по партиям будут объеденены. Аналогично и для складов и МОЛ. Если передать FALSE, FALSE, FALSE, то получим одну запись с остатком для каждой МЦ (это будем общее наличие по выбранным складам, МОЛ, партиям).

6. Освобождаем память (данные остаются в таблице TmpSaldo1):

Код: Выделить всё

   Store_Done;
-------------------------------------------------------------
Структура таблицы TmpSaldo1 ("+" помечены заполняемые поля):

Код: Выделить всё

(
+   NRec      : tNRec      "Номер записи"
    prih      : boolean    "признак прихода"
+   cPodr     : tNRec      "склад"
+   cMC       : tNRec      "МЦ"
+   cMOL      : tNRec      "МОЛ"
+   cParty    : tNRec      "партия"
    cGroupMC  : tNRec      "группа МЦ"
    kGroupMC  : s20        "код группы МЦ"
    DateParty : Date       "дата годности партии"
+   KOL       : tSumma     "кол."
+   Price     : tSumma     "цена"
+   cVal      : tNRec      "валюта цены в валюте"
+   VPrice    : tSumma     "цена в валюте"

    VBase     : tSumma     "цена в базовой вал."
+   kolP      : tSumma     "количество прихода"
+   kolR      : tSumma     "количество расхода"
+   SumP      : tSumma     "сумма прихода"
+   SumPV     : tSumma     "сумма прихода в валюте"
+   SumR      : tSumma     "сумма расхода"
+   SumRV     : tSumma     "сумма расхода в валюте"
    kolDop    : tSumma     "кол-во в доп.ед.изм."
    cObj      : tNRec      "Ссылка на объект строительства"
    priceN    : tSumma     "цена для нал.уч."
    vPriceN   : tSumma     "цена для нал.уч. в вал"

    cSaldTune : tNRec      "Ссылка на настройку объектов учёта"
    cKau      : tNrec_x09  "Значения аналитик"
    cKitKau   : tNrec      "Ссылка на набор КАУ"
)
With Index
(
  TmpSaldo100  =  NRec(Unique, Surrogate)
, TmpSaldo101  =  cMC + cPodr + cMOL + cParty + cObj
, TmpSaldo102  =  cMC + cMOL + cParty
, TmpSaldo103  =  cMC + cParty
, TmpSaldo104  =  cMC + DateParty
, TmpSaldo105  =  cPodr + cMOL + KOL(Desc)
, TmpSaldo106  =  DateParty
, TmpSaldo107  =  cMC + cPodr + cParty
, TmpSaldo108  =  cParty
, TmpSaldo109  =  cPodr + cParty
, TmpSaldo110  =  cMOL + cParty
, TmpSaldo111  =  cSaldTune + cObj + cKau[1] + cKau[2] + cKau[3] + cMC + cPodr + cMOL + cParty
, TmpSaldo112  =  cSaldTune + cObj + cKitKau + cMC + cPodr + cMOL + cParty
, TmpSaldo113  =  cObj + cKau[1] + cKau[2] + cKau[3] + cKau[4] + cKau[5] + cKau[6] + cKau[7] + cKau[8] +
                  cKau[9] + cMC + cPodr + cMOL + cParty
);

Аналогично и для Целевого Учета (выгрузка сальдовых остатков по объектам целевого назначения в TmpSaldo1).

Код: Выделить всё

                 !!! Для использования требуется знание VIP - использование объектных функций VIP !!! :

Function UksStore_Run(abVisual : boolean; adDate : date; acVal : comp;  awSaldTune : word;
                      acObj, acKau1, acKau2, acKau3, acKau4, acKau5, acKau6, acKau7, acKau8, acKau9, 
                      acMC, acPod, acMol, acPar : comp;  
                      abObj, abKau1, abKau2, abKau3, abKau4, abKau5, abKau6, abKau7, abKau8, abKau9, 
                      abMC, abPod, abMol, abPar : boolean) : boolean;
Параметры определяются как и в предыдущей функции. Инициализацию делать не надо. Нужно подключить UksStore.vih и объявить переменную, например:

Код: Выделить всё

Var
  oSaldo : IUksStore;   // Выгрузка сальдовых остатков по объектам целевого назначения
SergZol
заказчик
Сообщения: 83
Зарегистрирован: Пн, 10/12/2007 13:24
Имя Фамилия: Сергей Золотухин
Откуда: Северо-Западные Магистральные Нефтепроводы
Контактная информация:

Сообщение SergZol »

Спасиб
SergZol
заказчик
Сообщения: 83
Зарегистрирован: Пн, 10/12/2007 13:24
Имя Фамилия: Сергей Золотухин
Откуда: Северо-Западные Магистральные Нефтепроводы
Контактная информация:

Сообщение SergZol »

а можно UksStore.vih выслать на мыло?
vadim
топ-софт
Сообщения: 197
Зарегистрирован: Чт, 06/09/2007 17:38
Имя Фамилия: Вадим Володько
Откуда: ТопСофт
Контактная информация:

Сообщение vadim »

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

Поэтому на сём откланиваемся ;)
Gandrew
партнер
Сообщения: 23
Зарегистрирован: Пн, 03/12/2007 12:27
Имя Фамилия: Андрей Гулевич
Откуда: СТОИК

Сообщение Gandrew »

Как-то поросил московское ТП выслать vih они сразу ответили - исходников не имеем вопрос передан разработчикам.
kill
партнер
Сообщения: 1
Зарегистрирован: Пт, 05/10/2007 10:38
Имя Фамилия: Кирилл Кольцов
Откуда: ИТЕС
Контактная информация:

Сообщение kill »

Пока дождешься этих вихов…

Виз сам сделай… описание объекта есть в exe\galdoc\l_saldomtr.chm

Берем оттуда описание методов
И клепаем вих…

Код: Выделить всё

#define ComponentVersion
#ifdef ComponentVersion
#component "L_SaldoMtr"
#end


ObjInterface oUksStore;
  Function UksStore_Run(abVisual : boolean; adDate : date; acVal : comp;  awSaldTune : word; 
                      acObj, acKau1, acKau2, acKau3, acKau4, acKau5, acKau6, acKau7, acKau8, acKau9, 
                      acMC, acPod, acMol, acPar : comp;  
                      abObj, abKau1, abKau2, abKau3, abKau4, abKau5, abKau6, abKau7, abKau8, abKau9, 
                      abMC, abPod, abMol, abPar : boolean) : boolean;
  Function UksMove_Run (abVisual : Boolean; adStart : Date; adStop : Date; acVal : Comp; awSaldTune : Word; acObj : Comp; acKau1 : Comp; acKau2 : Comp; acKau3 : Comp; acKau4 : Comp; acKau5 : Comp; acKau6 : Comp; acKau7 : Comp; acKau8 : Comp; acKau9 : Comp; acMC : Comp; acPod : Comp; acMol : Comp; acPar : Comp; abObj : Boolean; abKau1 : Boolean; abKau2 : Boolean; abKau3 : Boolean; abKau4 : Boolean; abKau5 : Boolean; abKau6 : Boolean; abKau7 : Boolean; abKau8 : Boolean; abKau9 : Boolean; abMC : Boolean; abPod : Boolean; abMol : Boolean; abPar : Boolean) : Boolean; 

end;

потом работаем таким образом к примеру….

Код: Выделить всё

cmInit:
{
 var iU:oUksStore;
  LoadVipRef(iU,'iuksstore');
  iU.UksStore_Run(true,Date(26,02,2008),0,0 ,0,0,0,0,0,0,0,0,0,0,
                              0,0001000000001923h,0,0,
                              true,true,true,true,true,true,true,true,true,true,
                              true,true,true,true);
}
Аватара пользователя
stamp
топ-софт
Сообщения: 6
Зарегистрирован: Чт, 13/09/2007 16:44
Имя Фамилия: Игорь Прокофьев
Откуда: ТопСофт
Контактная информация:

Сообщение stamp »

на мой взгляд "делать" вихи самим есть неправильно
а вообще файлы *.vih "появляются" в каталоге ..gal810\FRM\ после установки обновлений
смотрите в архивах, если нужного там нет, то нужно обратиться в техподдержку
SergZol
заказчик
Сообщения: 83
Зарегистрирован: Пн, 10/12/2007 13:24
Имя Фамилия: Сергей Золотухин
Откуда: Северо-Западные Магистральные Нефтепроводы
Контактная информация:

Сообщение SergZol »

stamp писал(а):на мой взгляд "делать" вихи самим есть неправильно
а вообще файлы *.vih "появляются" в каталоге ..gal810\FRM\ после установки обновлений
смотрите в архивах, если нужного там нет, то нужно обратиться в техподдержку
Есть и другой вариант!! Очень Простой и Ненадо напрягать ТП и рагзаботчиков!!! Вариант: ВЫЛОЖИТЬ НА СЕРВЕР ОБНОВЛЕНИЙ. И всем хорошо!!!
cruger
топ-софт
Сообщения: 566
Зарегистрирован: Пт, 21/09/2007 15:19
Имя Фамилия: Фёдор Терсин
Откуда: Галактика Софт
Контактная информация:

Сообщение cruger »

vih-файлы уже выложены на сервер обновлений. В составе собственно самих обновлений. Очевидно, что инклюдники, описывающие интерфейсную часть компонента, должны идти вместе с самим обновлением, иначе будет неразбериха.
Аватара пользователя
mike
топ-софт
Сообщения: 38
Зарегистрирован: Пт, 07/09/2007 11:52
Имя Фамилия: Михаил Пстыга
Откуда: ТопСофт
Контактная информация:

Сообщение mike »

В дистрибутиве последнего релиза 8.1 "РЕЛИЗ : 03/12/2007 : Галактика 8.1 с обновлениями : Атлантис 5.3.14" в архиве galFrm.rar содержатся все vih-файлы Галактики.
Так же они поставляются вместе с обновлениями.
Соответственно, разархивировав galFrm.rar и накатив вихи из обновлений, можно получить актуальные версии вихов.
PViP
партнер
Сообщения: 71
Зарегистрирован: Пт, 19/10/2007 11:38
Имя Фамилия: Павел Полухин
Откуда: Галактика-Красноярск
Контактная информация:

Сообщение PViP »

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

Выложить последние версии файлов - самое оптимальное решение! Например, на этом форуме...
vadim
топ-софт
Сообщения: 197
Зарегистрирован: Чт, 06/09/2007 17:38
Имя Фамилия: Вадим Володько
Откуда: ТопСофт
Контактная информация:

Сообщение vadim »

Уважаемый Павел!

Как указал Михаил Пстыга, в дистрибутиве последнего релиза в архиве galfrm.rar содержатся все vih-файлы. Вместе с обновлениями они также поставляются (измененные).

Соответственно, выкладывать их здесь никто не будет: бессмысленно (надо все корректно делать в одном месте - дистрибутиве и обновлениях).

Есть ли у Вас дистрибутив последнего релиза?
Нашли ли в нём указанный файл galfrm.rar?
Если есть вопрос по конкретному vih-файлу (его нет в дистрибутиве или с обновлениями), сообщайте, будем искать!
Если Вы не согласны с конкретными ответами конкретного сотрудника ТП, Вы можете обратиться к его руководителю для получения исчерпывающих комментариев.
SergZol
заказчик
Сообщения: 83
Зарегистрирован: Пн, 10/12/2007 13:24
Имя Фамилия: Сергей Золотухин
Откуда: Северо-Западные Магистральные Нефтепроводы
Контактная информация:

Сообщение SergZol »

В дистрибутиве последнего релиза 8.1 "РЕЛИЗ : 03/12/2007 : Галактика 8.1 с обновлениями : Атлантис 5.3.14" в архиве galFrm.rar содержатся все vih-файлы Галактики.

Действительно такой файл у меня обнаружился, но я там только INC-ки нашел и FRM, а вот именно VIH очень интересует.
Ответить