Контроль суммы отгрузки

ПНР и сопровождение

Модераторы: m0p3e, edward_K, Модераторы

hope
Местный житель
Сообщения: 1353
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Re: Контроль суммы отгрузки

Сообщение hope »

Поддерживаю sim: такой функционал нужен, это прописано в законе, а не отсебятина.

Seybukan: Вариант с ТХО не очень подойдет, т.к. документы на отгрузку оформляют операторы, они не привязывают ТХО. Если заставить, то могут забыть... Нужно такой вариант, чтобы сама программа при стандартных действиях опреторов сообщила, а еще лучше запретила формировать накладные/или не давала списывать.
Вариант с JS лучше подойдет. Но я ни разу не делала этого - и не знаю с какого бока подойти. Может есть описание какое-нибудь, еще лучше пример?
Seybukan
Местный житель
Сообщения: 1357
Зарегистрирован: 29 мар 2005, 17:49
Откуда: СПб, ЭП-Аудит
Контактная информация:

Re: Контроль суммы отгрузки

Сообщение Seybukan »

Есть конечно же.
1. exe\ManufExt\SAMPLES\JSCRIPT\
2. Есть примеры подключенные в галку.
Планирование производства \ Операции \ Хранилище примеров JS
вот:
"Функция предназначена для автоматизированного выполнения импорта XML-файлов, содержащих типовые примеры использования в системе "ГАЛАКТИКА ERP" возможностей языка JavaScript."
Seybukan
Местный житель
Сообщения: 1357
Зарегистрирован: 29 мар 2005, 17:49
Откуда: СПб, ЭП-Аудит
Контактная информация:

Re: Контроль суммы отгрузки

Сообщение Seybukan »

Вот алгоритм с "похожей" задачей.
Только он работает, на сколько я понял, по балансу взаиморасчетов и из планового документа.
exe\ManufExt\SAMPLES\JSCRIPT\OrgBalance\PlanOrgBalance.xml

Загрузите пример через импорт XML - в редмихе там все написано.
Посмотрите - там все очпросто.
hope
Местный житель
Сообщения: 1353
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Re: Контроль суммы отгрузки

Сообщение hope »

В ридми написано:
"Импортируйте данный xml-файл в Галактику. Любой модуль планирования
(Планирование Пр-ва, Управление заказами, МТО)
меню Операции\Импорт данный из XML-файла."
А если этих модулей нет? Но есть модуль Обмен бизнес документами. Попробовала там загрузить, но там нужно настраивать настройки импорта, тип данных, параметры. Или их не обязательно настраивать?
Также пытаюсь разобраться как написать свой алгоритм на VIP.
hope
Местный житель
Сообщения: 1353
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Re: Контроль суммы отгрузки

Сообщение hope »

И еще вопрос: достаточно VIP-а для создания своего алгоритма, или обязательно нужен Atlantis?
Seybukan
Местный житель
Сообщения: 1357
Зарегистрирован: 29 мар 2005, 17:49
Откуда: СПб, ЭП-Аудит
Контактная информация:

Re: Контроль суммы отгрузки

Сообщение Seybukan »

Для написания алгоритма достаточно иметь VIP.

При загрузке скрипта надо конечно настроить:
1. Создать Типы данных: Алгоритм JavaScript, Алгоритм расчета (сист.№ = 52)
2. Параметры импорта обоих: Создавать новые объекты
3. Элементы обоих: Все
4. Параметры ТД обоих пометить все.
Сохраним.
Выбрать файл для загрузки и загрузить.
Результаты загрузятся в алгоритмы расчета производственных модулей.
Логистика есть наверное производственная? Там через алгоритм можно перейти и в алгоритм скрипта.
Seybukan
Местный житель
Сообщения: 1357
Зарегистрирован: 29 мар 2005, 17:49
Откуда: СПб, ЭП-Аудит
Контактная информация:

Re: Контроль суммы отгрузки

Сообщение Seybukan »

Вот XML 52 Алгоритма и Алгоритма скрипта.
Загружать как описал ранее.

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

<?xml version="1.0" encoding="windows-1251" ?> 
- <!-- Copyright ЗАО "Корпорация Галактика"
  --> 
- <Data_Root>
- <Descript ExpSet_Code="006" ExpSet_Name="Норе">
- <![CDATA[ 
  ]]> 
  </Descript>
- <Data>
- <Collection caption="Алгоритмы расчета (сист.№ = 52)" name="Data.AlgCalc_52" child_tags="Object">
- <Object name="Проверка суммы накладных по договору (95)" class_id="AlgCalc_52" id="27866022694355087">
- <Collection caption="Свойства" name="Prop_Values" child_tags="prop_value">
  <prop_value prop_name="LastDateTime" value="12/08/2010 13:25:27" /> 
  <prop_value prop_name="Code" value="95" /> 
  <prop_value prop_name="Name" value="Проверка суммы накладных по договору" /> 
  <prop_value prop_name="wSysNum" value="52" /> 
  <prop_value prop_name="cGroup" rlt_class="MnfGroup" value="0" /> 
  <prop_value prop_name="FlagRun" value="1" /> 
  <prop_value prop_name="Comment" value="(MEMO)" /> 
  <prop_value prop_name="TypeSrc" value="3" /> 
  <prop_value prop_name="cDoc" rlt_class="" value="0" /> 
  <prop_value prop_name="DocFuncName" value="curSopr" /> 
  <prop_value prop_name="DocSpFuncName" value="" /> 
  <prop_value prop_name="cAlgJS" rlt_class="AlgJS" value="27866022694355088" /> 
  <prop_value prop_name="FlDebug" value="0" /> 
  <prop_value prop_name="VarTunes" value="0" /> 
  <prop_value prop_name="VarPosdelName" value="" /> 
  <prop_value prop_name="VarPositionName" value="" /> 
  <prop_value prop_name="VarSetValueName" value="" /> 
  <prop_value prop_name="VarBindingName" value="" /> 
  <prop_value prop_name="VarVisuaName" value="" /> 
  <prop_value prop_name="VarMessEndName" value="" /> 
  <prop_value prop_name="VarWhatVidName" value="" /> 
  <prop_value prop_name="VarnumVidName" value="" /> 
  <prop_value prop_name="VarRunIntName" value="" /> 
  <prop_value prop_name="VarErrorName" value="" /> 
  <prop_value prop_name="VarFlagRunName" value="" /> 
  <prop_value prop_name="VarTypeCpNrecName" value="" /> 
  <prop_value prop_name="VarSpMnPlNrecName" value="" /> 
  <prop_value prop_name="VarcpNrecName" value="" /> 
  <prop_value prop_name="VarcFormPlName" value="" /> 
  </Collection>
  </Object>
  </Collection>
- <Collection caption="Алгоритмы JavaScript" name="Data.AlgJS" child_tags="Object">
- <Object name="Проверка суммы накладных по договору (555)" class_id="AlgJS" id="27866022694355088">
- <Collection caption="Свойства" name="Prop_Values" child_tags="prop_value">
  <prop_value prop_name="LastDateTime" value="12/08/2010 13:16:24" /> 
  <prop_value prop_name="Code" value="555" /> 
  <prop_value prop_name="Name" value="Проверка суммы накладных по договору" /> 
  <prop_value prop_name="wSysNum" value="65535" /> 
  <prop_value prop_name="cGroup" rlt_class="MnfGroup" value="0" /> 
  <prop_value prop_name="Comment" value="(MEMO)" /> 
- <prop_value prop_name="JS" value="(MEMO)">
- <![CDATA[ 
Sopr.setPosition(curSopr())
Summa = 0
if (Sopr.cDog > 0)
{
   DogSopr.TieToSopr(Sopr.cDog,Sopr.Type);
   for(DogSopr.getFirst(); ResultOfNavigation; DogSopr.getNext())
   {
      Debug.Print('Нашли документ на сумму: ' + DogSopr.Sum);
      Summa = Summa + DogSopr.Sum
   }
}
if (Summa > 100000)
{
   Message("По договору текущей накладной сумма больше 100 тыщ.рублей!!!");
}

  ]]> 
  </prop_value>
  </Collection>
- <Collection caption="Используемые библиотеки функций" name="Data.AlgJS_Func" child_tags="Object">
- <Object name="M_Scripts::MessageAndVisual" class_id="AlgJS_Func" id="27866022694363341">
- <Collection caption="Свойства" name="Prop_Values" child_tags="prop_value">
  <prop_value prop_name="NameLib" value="M_Scripts::MessageAndVisual" /> 
  </Collection>
  </Object>
  </Collection>
- <Collection caption="Объекты JS" name="Data.AlgJS_Obj" child_tags="Object">
- <Object name="Объект № 2:TSopr" class_id="AlgJS_Obj" id="27866022694363330">
- <Collection caption="Свойства" name="Prop_Values" child_tags="prop_value">
  <prop_value prop_name="Name" value="TSopr" /> 
  <prop_value prop_name="Npp" value="2" /> 
  <prop_value prop_name="TypeObj" value="16" /> 
  </Collection>
- <Collection caption="Свойства объекта JS" name="Data.AlgJS_ObjP" child_tags="Object">
- <Object name="cDog" class_id="AlgJS_ObjP" id="27866022694363335">
- <Collection caption="Свойства" name="Prop_Values" child_tags="prop_value">
  <prop_value prop_name="Name" value="cDog" /> 
  <prop_value prop_name="FldNmb" value="3006" /> 
  <prop_value prop_name="FlDirect" value="3" /> 
  <prop_value prop_name="TypeVal" value="3" /> 
  </Collection>
  </Object>
- <Object name="Type" class_id="AlgJS_ObjP" id="27866022694363336">
- <Collection caption="Свойства" name="Prop_Values" child_tags="prop_value">
  <prop_value prop_name="Name" value="Type" /> 
  <prop_value prop_name="FldNmb" value="3021" /> 
  <prop_value prop_name="FlDirect" value="3" /> 
  <prop_value prop_name="TypeVal" value="3" /> 
  </Collection>
  </Object>
- <Object name="Sum" class_id="AlgJS_ObjP" id="27866022694363340">
- <Collection caption="Свойства" name="Prop_Values" child_tags="prop_value">
  <prop_value prop_name="Name" value="Sum" /> 
  <prop_value prop_name="FldNmb" value="3" /> 
  <prop_value prop_name="FlDirect" value="3" /> 
  <prop_value prop_name="TypeVal" value="0" /> 
  </Collection>
  </Object>
  </Collection>
- <Collection caption="Методы объекта JS" name="Data.AlgJS_ObjB" child_tags="Object">
- <Object name="TieToSopr" class_id="AlgJS_ObjB" id="27866022694363339">
- <Collection caption="Свойства" name="Prop_Values" child_tags="prop_value">
  <prop_value prop_name="Name" value="TieToSopr" /> 
  <prop_value prop_name="CodeBnd" value="4012" /> 
  <prop_value prop_name="Prizn" value="2" /> 
  <prop_value prop_name="PrmCount" value="2" /> 
  <prop_value prop_name="Prm_w4" value="65535" /> 
  <prop_value prop_name="Prm_w5" value="768" /> 
  <prop_value prop_name="Prm_w6" value="3" /> 
  <prop_value prop_name="Prm_w7" value="0" /> 
  <prop_value prop_name="Prm_w8" value="0" /> 
  <prop_value prop_name="Prm_w9" value="0" /> 
  <prop_value prop_name="Prm_w10" value="0" /> 
  <prop_value prop_name="Prm_w11" value="5010" /> 
  <prop_value prop_name="Prm_w12" value="5004" /> 
  <prop_value prop_name="Prm_w13" value="0" /> 
  <prop_value prop_name="Prm_w14" value="0" /> 
  <prop_value prop_name="Prm_w15" value="0" /> 
  <prop_value prop_name="Prm_w16" value="0" /> 
  <prop_value prop_name="Prm_w17" value="0" /> 
  <prop_value prop_name="Prm_w18" value="0" /> 
  <prop_value prop_name="Prm_w19" value="0" /> 
  <prop_value prop_name="Prm_w20" value="0" /> 
  </Collection>
  </Object>
  </Collection>
- <Collection caption="Экземпляры объекта JS" name="Data.AlgJS_ObjE" child_tags="Object">
- <Object name="Sopr" class_id="AlgJS_ObjE" id="27866022694363337">
- <Collection caption="Свойства" name="Prop_Values" child_tags="prop_value">
  <prop_value prop_name="Name" value="Sopr" /> 
  <prop_value prop_name="Npp" value="1" /> 
  </Collection>
  </Object>
- <Object name="DogSopr" class_id="AlgJS_ObjE" id="27866022694363338">
- <Collection caption="Свойства" name="Prop_Values" child_tags="prop_value">
  <prop_value prop_name="Name" value="DogSopr" /> 
  <prop_value prop_name="Npp" value="2" /> 
  </Collection>
  </Object>
  </Collection>
  </Object>
  </Collection>
  <Collection caption="Локальные константы JS" name="Data.AlgJS_CnstL" child_tags="Object" /> 
  <Collection caption="Глобальные константы JS" name="Data.AlgJS_CnstG" child_tags="Object" /> 
  <Collection caption="Аналитики JS" name="Data.AlgJS_An" child_tags="Object" /> 
  </Object>
  </Collection>
  </Data>
  </Data_Root>
hope
Местный житель
Сообщения: 1353
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Re: Контроль суммы отгрузки

Сообщение hope »

Ооооооо! Спасибо, Seybukan!
Буду разбираться.
Вопрос такой: Мы имеем тип данных "Алгоритмы расчета (сист.№ = 52)". Который состит из одного элемента "Свойства", который состоит из 29 элементов:
Дата/время последней модификации
Документ-источник
Код
Комментарий
Наименование
и т.д.
Когда это все описывается в XML, там используются имена на английском языке. Их где-то можно посмотреть?
Аналогично для типа данных "Алгоритмы JavaScript".
hope
Местный житель
Сообщения: 1353
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Re: Контроль суммы отгрузки

Сообщение hope »

И еще вопросы:
Как можно узнать наименование функции получения ссылки на текущий документ?
Откуда брать ID (типа 27866022694363336 - смотри в тексте xml)?
Что такое DogSopr.TieToSor()? Это объект определнного класса со своим набором свойств. Где можно узнать про этиобъекты?

Спасибо!
Seybukan
Местный житель
Сообщения: 1357
Зарегистрирован: 29 мар 2005, 17:49
Откуда: СПб, ЭП-Аудит
Контактная информация:

Re: Контроль суммы отгрузки

Сообщение Seybukan »

Даже врать не буду.
Ни когда не задумывался что это такое :)
Я просто беру настраиваю импорт и импортирую.
Всегда импортируется и всегда работает.

Этот алгоритм я настроил у себя, протестировал и выгрузил.
Попробовал загрузить в другую БД - загрузка прошла корректно.
Просто загрузи алгоритм открой на редактирование пощелкай по вкладкам настроек и все увидишь.
Например TieToSopr - это метод "Установка ограничений / По договору и виду накладной" к документу "Заголовок накладной". (Хотя я реально класс от метода или свойства отличаю с трудом, я все же экономист а не программист)
Что касается ID - полагаю что после загрузки в БД они будут новые.
По крайней мере когда загружаю один и тот же алгоритм мне система просто создает новые.
Seybukan
Местный житель
Сообщения: 1357
Зарегистрирован: 29 мар 2005, 17:49
Откуда: СПб, ЭП-Аудит
Контактная информация:

Re: Контроль суммы отгрузки

Сообщение Seybukan »

Получается что-то вроде того:
1. На вкладке библиотека привязал библиотеку "Сообщения и визуализация". Нужна для сообщения.
2. На вкладке объекты создал класс "TSopr" с типом Оперативные документы / Накладная / Заголовок накладной.
- Сделал два экземпляра: "Sopr", "DogSopr".
- Сделал метод "TieToSopr" с типом Установка ограничений / По договору и виду накладной
- Сделал свойство "cDog" с типом Ссылка на договор
- Сделал свойство "Type" с типом Вид накладной
- Сделал свойство "Sum" с типом Сумма по накладной
3. Константы не делал.
4. Далее небольшой кусочек кода.

Методы там есть не только на ограничения, но и на создание и удаление записей - правда я их не когда не использовал.
В библиотеках есть куча других функций и методов.
Можно написать и собственную функцию и подключить ее к библиотеке. Edward_K знает как это делается - он как-то мне подключал давно давно.
hope
Местный житель
Сообщения: 1353
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Re: Контроль суммы отгрузки

Сообщение hope »

Вообще в Галактике можно настроить алгоритм без импорта из XML? Или надо обязательно сначала в XML наваять, а потом загрузить - только так можно добавить свой алгоритм?

Судя по фразе "Этот алгоритм я настроил у себя, протестировал и выгрузил" - можно все-таки в Галактике настраивать алгоритмы? Как дойти до этого интерфейса?
hope
Местный житель
Сообщения: 1353
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Re: Контроль суммы отгрузки

Сообщение hope »

Кажется нашла то, что мне должно помочь: есть документация "Применение JavaScript в контуре "Планирования и управления производством"".
Seybukan
Местный житель
Сообщения: 1357
Зарегистрирован: 29 мар 2005, 17:49
Откуда: СПб, ЭП-Аудит
Контактная информация:

Re: Контроль суммы отгрузки

Сообщение Seybukan »

Конечно же можно настраивать JS самостоятельно без всяких загрузок.
Если нет прямого доступа через модуля планирования, то можно зайти с любого места где есть выбор производственных алгоритмов рассчета (например настройка "Настройки Галактики \ Логистика \ Документы \ Управление сбытом \ Накладная на отпуск \ Запуск алгоритмов \ После списания выполнить алгоритм") создать алгоритм по системному № 52 "Алгоритм исполнения JavaScript" и там уже создать алгоритм JS.

Я же создал алгоритм сам. Взял выгрузил его чтобы вы смогли его загрузить и посмотреть. Он полностью рабочий и проверяет сумму всех накладных привязанных к договору по текущей накладной.
Правда алгоритм не проверяет отгружены эти накладные или нет.
Ну и собственно ни чего не делает кроме как выдает сообщение.
На самом деле дальше можно что-то сделать с документом, например если сумма больше то можно удалить ордера по текущей накладной.
Например есть функция в библиотеке Логистика \ Функции для формирования ордеров:
Функция удаления ордера
Возвращает true - успешное выполнение.
function DeleteOrder(cOrder)
cOrder : comp - ссылка на удаляемый ордер

А экспорт импорт алгоритмов просто удобен.
Я веду несколько прототипов систем планирования, собственно зачем мне делать алгоритм каждый раз заново. Я беру похожий алгоритм выгружаю, загружая в другой прототип и его уже корректирую.
hope
Местный житель
Сообщения: 1353
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Re: Контроль суммы отгрузки

Сообщение hope »

Все понятно теперь! :) А то я сидела разбиралась в этом XML - чтобы родить что-то свое.
Взяла ваш текст, вставляю в Блокноте в файл, сохраняю с расширением XML, загружаю - выдает ошибку в первой строке.
Ответить