Функция определения средней цены МЦ по разрезу

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

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

Ответить
АлександерK
заказчик
Сообщения: 89
Зарегистрирован: Ср, 19/09/2007 08:48
Имя Фамилия: Александр Киселев
Откуда: Красный Октябрь ОАО ДОК
Контактная информация:

Функция определения средней цены МЦ по разрезу

Сообщение АлександерK »

Понадобилось программно "доставать" среднюю цену по разрезу Склад-МОЛ.

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

Сообщение SergZol »

Насколько я понимаю средняя цена расчитывается автоматом согласно методу списания.

Что конкретно надо?

Если сравнить цену по разрезу Склад-Мол-Партия с разрезом Склад-Мол, то вряд ли.

Если нужно получить остаток(текущий или на дату) в разрезе Склад-Мол, то есть 2 функции:

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

1.Store_Run(DateBeg // на дату
                     , comp( 0)
                     , comp( 0)
                     , comp( 0)
                     , comp( 0)
                     , if( (typdetal and 1)=1,true,false) //разрез по складам 
                     , if( (typdetal and 2)=2,true,false) //по мол
                     , if( (typdetal and 4)=4,true,false) //по партиям
                   );

2.UksStore_Run(...) // тут тоже самое, только + в разрезе ЦУ
АлександерK
заказчик
Сообщения: 89
Зарегистрирован: Ср, 19/09/2007 08:48
Имя Фамилия: Александр Киселев
Откуда: Красный Октябрь ОАО ДОК
Контактная информация:

Сообщение АлександерK »

Сергей Золотухин писал(а):Что конкретно надо?
Надо буквально следующее: :-)
Есть определенная задача: создание Акта на разукомплектовку на основании Накладной на внутреннее перемещение.
Так вот если вручную создавать Акт, то цены проставляются в спецификации Акта автоматически, а мне нужно будет программно поля с ценой заполнять.

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

Сообщение SergZol »

SALDOMC поле SRPRICE-средняя цена, наверно отсюда надо брать.

Вышеуказанными функциями можно получить остаток МЦ на любую дату с указанием ср.цены.

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

Сообщение lserg »

Добрый день.
Используйте функцию StepMCinfo

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

StepMCinfo (cMC:comp, cVal:comp, cPodr:comp, cMol:comp, cParty:comp): comp;
, где
   cMC    - ссылка на МЦ
   cVal   - ссылка на валюту, в которой должна рассчитаться средняя цена в валюте
   cPodr  - ссылка на подразделение/склад 
   cMOL   - ссылка на МОЛ. Чтобы рассчитать по всем МОЛ, надо передать 0. 
            Чтобы рассчитать только по позициям с неуказанным МОЛ, надо передать "-1"
   cParty - ссылка на партию. Чтобы рассчитать по всем партиям, надо передать 0. 
            Чтобы рассчитать только по позициям с неуказанной партией, надо передать "-1"

Примечания:
* Сама функция StepMCinfo возвращает код валюты, в которой произведен расчет валютной средней цены (значение которой можно получить при помощи AverageVPrice). Если cVal передан отличным от 0, то он и возвращается, если же в качестве cVal передан 0, функция вернет базовую валюту.
* Если методика списания "по предприятию в целом", параметры cPodr, cMOL, cParty будут функцией проигнорированы
* Если методика списания "по подразделению", параметры cMOL, cParty будут проигнорированы
Ниже приведена последовательность, в которой необходимо осуществлять вызовы:

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

// РАСЧЕТ ЦЕНЫ СПИСАНИЯ
//
// инициализация объекта расчета цены списания
InitMCInfo(dForm: date); // дата расчета цены списания

// установка расчета для логистики или для производства
SkladProizv(SkPr: word); //  0 - расчет в логистике, 1 - в производстве

// расчет цены списания, возвращает NRec валюты цены списания в валюте
cVal_ := StepMCInfo( cMC_                                // NRec МЦ
                   , 0                                   // NRec валюты, если 0, то в базовой
                   , cPodr_                              // NRec подразделения
                   , if(cMol_ = 0, comp(-1), cMol_)      // NRec МОЛ, если нужно явно только по неуказанному, то передаем -1
                   , if(cParty_ = 0, comp(-1), cParty_)  // NRec партии, если нужно явно только по неуказанной, то передаем -1
                   ); 

// после отработки StepMCinfo можно получить цену списания (для учетной единицы измерения):
cenaSpis   := AveragePrice;  // цена списания в НДЕ
cenaSpisV  := AverageVPrice; // цена списания в валюте cVal_

// вызов деструктора
DoneMCInfo;
Если предполагается осуществлять расчет по нескольким МЦ (например, в цикле), InitMCinfo и DoneMCinfo необходимо делать один раз (перед и после цикла соответственно).
АлександерK
заказчик
Сообщения: 89
Зарегистрирован: Ср, 19/09/2007 08:48
Имя Фамилия: Александр Киселев
Откуда: Красный Октябрь ОАО ДОК
Контактная информация:

Сообщение АлександерK »

Сергей Лебедев
спасибо большое, буду пробовать
АлександерK
заказчик
Сообщения: 89
Зарегистрирован: Ср, 19/09/2007 08:48
Имя Фамилия: Александр Киселев
Откуда: Красный Октябрь ОАО ДОК
Контактная информация:

Сообщение АлександерK »

Работу функций попробовал - все получилось. УРА Разработчикам :-)
Ответить