Последние патчи для 44 ядра

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

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

Zver
Местный житель
Сообщения: 204
Зарегистрирован: 13 ноя 2012, 12:47
Откуда: СПб
Контактная информация:

Последние патчи для 44 ядра

Сообщение Zver »

Уважаемые коллеги.

После установки последних патчей не получается пересобрать один ресурс.
Ругается на несовпадение контрольной суммы интерфейса objAktOfp.

При компиляции ресурса ругается на вызов функции piAktOfp.aktOfp_SetSummaFop(AktOFP.Nrec, Clearing.Nrec, false); - недопустимый тип параметра.
В имеющемся объектном интерфейсе описание функции совпадает.

Может, что - то забыли добавить в обновление?
Программист-самоучка
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: Последние патчи для 44 ядра

Сообщение Den »

по поводу несовпадения контрольной суммы....

"
Для обеспечения совместимости интерфейсов и исключения ситуаций, в которых использующий и используемый интерфейсы откомпилированы с различными описаниями объектных интерфейсов, для каждого объектного интерфейса вычисляется 32-разрядная контрольная сумма, учитывающая прототипы и имена всех методов, свойств и индексов данного интерфейса.

Во время компиляции используемого интерфейса в ресурсе сохраняется его описание, содержащее контрольные суммы объектных интерфейсов.

При компиляции вызовов public-функций, приведений типов, обращений к свойствам запоминаются контрольные суммы ожидаемых obj-интерфейсов. Во время выполнения контрольные суммы сравниваются и при их несовпадении возбуждается исключение ExIfcBadCheckSum.
" (с)

Когда бы ни случилась у вас исключительная ситуация с несовпадением контрольной суммы, знайте - описание объектного интерфейса, которое использовали вы, и описание, с которым собирались галактические сырцы, различаются. Пусть хотя бы на одну букву, но различаются. И единственный выход - получить актуальное описание (.vih или .obj-файл)
Все же наверняка у Вас не актульный/подправленный vih....
Zver
Местный житель
Сообщения: 204
Зарегистрирован: 13 ноя 2012, 12:47
Откуда: СПб
Контактная информация:

Re: Последние патчи для 44 ядра

Сообщение Zver »

Итак, теперь могу сформулировать вопрос более подробно.

Сама ошибка:
При компиляции ресурса появляется сообщение об ошибке: AktOfp_CreateByBase.

Подробные симптомы:
Ошибка пропадает, если в списке подключенных ресурсов использовать ресурс F_OFP.res с 41 ядра, то компиляция проходит без ошибок.
Сами ресурсные файлы отличаются по размеру (версия для 41 ядра и версия для 44 ядра)

Есть 2 заголовочных файла в которых встречается описание функции с таким названием:
- aOfpOutAktOfp.vih
- aAktOfp.vih

Предварительный диагноз:
Есть подозрение, что у меня неправильные заголовочные файлы.
Программист-самоучка
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Последние патчи для 44 ядра

Сообщение edward_K »

В каталоге галки, куда ставили патчи в frm ищите F_OFP.rar - в нем нет более свежих?
Zver
Местный житель
Сообщения: 204
Зарегистрирован: 13 ноя 2012, 12:47
Откуда: СПб
Контактная информация:

Re: Последние патчи для 44 ядра

Сообщение Zver »

Хотелось бы убедиться, что я правильно понимаю то, что делаю.

У нас есть ресурсные файлы в которых содержится реализация интрефейсов. Я их беру из папки ..//GalSrv/exe. Все эти файлы с расширением *.res копирую себе на свой компьютер.
Затем в настройках проекта, в списке подключаемых файлов выбираю все эти файлы.

Теперь нужно получить все объектные интрефейсы. Для этого создаю копию уже имеющихся заголовочных файлов для 41 ядра.
Сейчас в нём 6 папок:
ActiveX
Components
CompSrc
Inc
Pascal
SRC
XlsReports

Затем из папки FRM, взятой с новой базы, копирую себе все архивы и распаковываю их.
и вижу 3 папки:
CompSrc
Inc
src

Кроме того, в папке src вижу те же 6 папок, что и в папке для 41 ядра.

Что-то здесь явно не так, где я сделал ошибку?
Программист-самоучка
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Re: Последние патчи для 44 ядра

Сообщение Алексей »

копировать ресурсы и подключать не нужно, достаточно в настройках указать путь на ЕХЕ каталог и систему galnet, випер автоматом подцепит ресурсы указанные для этой системы в репозитарии.
вам нужны описания файлов *.vih положите их в папку VIH и укажите в настройках проекта каталог для поиска инклюдов.
ну и в проектах инклюдить вихи.
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Последние патчи для 44 ядра

Сообщение edward_K »

Лично мне удобней надергивать нужные мне vih по мере потребности.
Папка src быть не должно - все, что там, переместите в вышестоящие аналогичные папки с опцией - "заменять более старые. что не переместилось - удалите
Дубликаты папок и файлов лучше убрать.
Вы задавали вопрос о конкретных файлах - так есть более свежие?
Архивы лучше распаковывать так: winrar.exe" x -y -u *.rar
можно наоборот все перекинуть в src и удалить galfrm.rar
Zver
Местный житель
Сообщения: 204
Зарегистрирован: 13 ноя 2012, 12:47
Откуда: СПб
Контактная информация:

Re: Последние патчи для 44 ядра

Сообщение Zver »

Посмотрел - были не самые последние архивов. Поправил.
Программист-самоучка
Zver
Местный житель
Сообщения: 204
Зарегистрирован: 13 ноя 2012, 12:47
Откуда: СПб
Контактная информация:

Re: Последние патчи для 44 ядра

Сообщение Zver »

edward_K писал(а):Лично мне удобней надергивать нужные мне vih по мере потребности.
Папка src быть не должно - все, что там, переместите в вышестоящие аналогичные папки с опцией - "заменять более старые. что не переместилось - удалите
Дубликаты папок и файлов лучше убрать.
Вы задавали вопрос о конкретных файлах - так есть более свежие?
Архивы лучше распаковывать так: winrar.exe" x -y -u *.rar
можно наоборот все перекинуть в src и удалить galfrm.rar
Итак, необходимая функция встречается в двух заголовочных файлах:
- aAktOfp.vih, дата последнего изменения 13.09.2012, 15:54. Размер - 24 475 байт
- aOfpOutAktOfp.vih, дата последнего изменения 16.09.2011, 8:51. Размер - 17 609 байт.

Можно ли убедиться, что у меня последние версии этих файлов?
Программист-самоучка
Zver
Местный житель
Сообщения: 204
Зарегистрирован: 13 ноя 2012, 12:47
Откуда: СПб
Контактная информация:

Re: Последние патчи для 44 ядра

Сообщение Zver »

Алексей писал(а):копировать ресурсы и подключать не нужно, достаточно в настройках указать путь на ЕХЕ каталог и систему galnet, випер автоматом подцепит ресурсы указанные для этой системы в репозитарии.
вам нужны описания файлов *.vih положите их в папку VIH и укажите в настройках проекта каталог для поиска инклюдов.
ну и в проектах инклюдить вихи.
Попробовал. Так намного удобнее, спасибо.
Программист-самоучка
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Последние патчи для 44 ядра

Сообщение edward_K »

Староваты.
У меня вроде как от 43 - но мож потянут.
aAktOfp.vih от 18.09.2013

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

//------------------------------------------------------------------------------
//                                                      (c) корпорация Галактика
// Галактика 5.80 - модуль "Платежный календарь"
// Объект для работы с Финобязательствами
//------------------------------------------------------------------------------


#ifndef __AAKTOFP_VIH__
#define __AAKTOFP_VIH__
// *****************************************************************************
#ifdef ComponentVersion
#component "F_OFP"
#end
// *****************************************************************************
#include ofptypes.vpp // TAktOfp

#include aErrorMng.obj // менеджер работы с ошибками
#include aBudByDoc.vih // TDocForBudget

#doc
Объект для работы с Финобязательствами.<br>
#end
Private ObjInterface objAktOfp;

  #doc
  Освобождение ссылок на объекты, провоцирующие циклические зависимости объектов.<br>
  #end
  Function FreeCrossVipRef : boolean;

  /////////////////////// РАЗЛИЧНЫЕ НАЗВАНИЯ ///////////////////////////////////
  Function AktOfp_GetSortName(bufAktOfp: TAktOfp): string;
  #doc
  Наименование ФО.<br>
  #end
  Function AktOfp_GetName(_NoDoc: string; _dDoc: date): string;
  Function AktOfp_GetNameByBuf(bufAktOfp: TAktOfp): string;
  Function AktOfp_GetNameRec(_cAktOFP: comp): string; // см.FO_GetFullName
  Function AktOfp_GetNameInDativeRec(_cAktOFP: comp): string;
  #doc
  Название ФО взаимозачета.<br>
  #end
  Function AktOfp_GetVzaimName(_cAktOFP: comp): string;
  #doc
  Название типа основания ФО (для вывода в Browser).<br>
  #end
  Function AktOfp_GetReasonTypeName(_Type: word): string;
  #doc
  Название основания.<br>
  #end
  Function AktOfp_GetReasonName(_Type: word; _NRec: comp): string;
  #doc
  Организация по умолчанию.<br>
  #end
  Function AktOfp_GetZeroOrgName: string;
  #doc
  Название периода погашения Фоп.<br>
  #end
  Function AktOfp_GetPeriodFopName(bufAktOfp: TAktOfp): string;
  #doc
  Вид платежа по ФО.<br>
  #end
  Function AktOfp_GetTypePlatName(_TypePlat: word): string;
  #doc
  Тип ФО по валюте.<br>
  #end
  Function AktOfp_GetTipMoneyName(_TipMoney: word): string;
  #doc
  Название статуса.<br>
  #end
  Function AktOfp_GetStatusName(_Status: word): string;

  /////////////////////// РАЗЛИЧНЫЕ ПРОВЕРКИ ///////////////////////////////////
  #doc
  Соответствие валюты Фоп типу по валюте ФО.<br>
  #end
  Function AktOfp_ValAccording(_TipMoney: word; _cValAkt, _cValDoc: comp): boolean;

  #doc
  проверяет участвует ли ФОБ в зачете авансов.<br>
  #end
  Function AktOfp_CheckAvans(_cAktOfp: comp; _wTypePlat: word): boolean;

  #doc
  Проверяет соответствие валюты SoprHoz полю TipMoney ФО и контрагентов.<br>
  #end
  Function AktOfp_CheckSoprHoz(_cAktOFP: comp; _cSoprHoz: comp): boolean;

  #doc
  Проверяет валюту документа на соответствие его типу по валюте - общая функция.<br>
  #end
  Function AktOfp_CheckValByTipMoney(_cVal: comp; _tipMoney: word): boolean;

  #doc
  При выборе валюты.<br>
  #end
  Function AktOfp_CheckValForTipMoney(_tipMoney: word; _direct: word): boolean;

  #doc
  Исполнено ли ФО.<br>
  #end
  Function AktOfp_IsRealized(bufAktOfp: TAktOfp): boolean;

  #doc
  Исполнено ли ФО и все его Фоп - то же, но по SumFact.<br>
  #end

  Function AktOfp_RealizedFoAndFop(_cAktOFP: comp): boolean;

  #doc
  ФО и все его Фоп на закрытые дни.<br>
  #end
  Function AktOfp_IsInCldPeriod(_cAktOFP: comp): boolean;

  #doc
  Есть ли у ФОБ ФОП с заданным типом ПС.<br>
  #end
  Function AktOfp_CheckClearingMeanType(_cAktOfp: comp; _MeanType: word): boolean;

  #doc
  Есть ли у ФОБ ФОП с заданной валютой.<br>
  #end
  Function AktOfp_CheckClearingVal(_cAktOfp: comp; _cVal: comp): boolean;

  #doc
  При рассогласовании сумм ФОБ и связанных ФОП.<br>
  #end
  Function AktOfp_OnDisBalansFob(_BufAktOfp: TAktOfp; _SumMode: word): boolean;

  #doc
  При рассогласовании сумм ФОБ и связанных ФОП (по ссылке).<br>
  #end
  Function AktOfp_OnDisBalansFobRec(_cAktOfp: comp; _SumMode: word): boolean;

  /////////////////////// РАЗЛИЧНЫЕ АТРИБУТЫ ///////////////////////////////////
  #doc
  Определяет включена ли настройка для типа документа, Descr.<br>
  #end
  Function User_Nastr(_OfpDocType: word; _Descr: tDescr): boolean;

  #doc
  Доступ к документу в статусе для Descr.<br>
  #end
  Function User_D(_OfpDocType: word; _Descr: tDescr; _cNote: comp): boolean;

  #doc
  Возвращает ФО по основанию (ДО, заявке).<br>
  #end
  Function AktOfp_FindByReason(_vidDO: word; _cDO: comp): comp;

  #doc
  Тип основания: ДО, заявки или ГВПК.<br>
  #end
  Function AktOfp_GetTypeOfReason(_ReasonType: word): word;

  #doc
  Его название.<br>
  #end
  Function AktOfp_GetTypeOfReasonName(_ReasonType: word): string;

  #doc
  Направление по типу ДО.<br>
  #end
  Function AktOfp_GetDirectByReasonType(_ReasonType: word): word;

  #doc
  Маска, куда статус ФО не может быть переведен.<br>
  #end
  Function AktOfp_StatusMaska(bufAktOfp: TAktOfp): word;

  #doc
  Направление - по направлению основания.<br>
  #end
  Function AktOfp_DocType(_direct: word): word;

  #doc
  Ссылка на BaseDoc.<br>
  #end
  Function AktOfp_GetBaseDocRec(bufAktOfp: TAktOfp): comp;

  #doc
  Ссылка на Доп.соглашение, если нет - на договор.<br>
  #end
  Function AktOfp_GetDogovorOrAppRec(bufAktOfp: TAktOfp): comp;

  #doc
  Есть ли у ФО Фоп.<br>
  #end
  Function AktOfp_HasClearing(_cAktOFP: comp): boolean;

  ///////////////////// СВЯЗЬ С ФИНПЛАНИРОВАНИЕМ ///////////////////////////////
  #doc
  Заполнить разноску по статьям из ФинПроводок.<br>
  #end
  Function AggrFpOb(_cSoprHoz: comp; var _pAktOfp: #TAktOfpX): boolean;

  #doc
  Заполнить разноску по статьям ФинПроводок из ХозОперации.<br>
  #end
  Function AggrFpOb_Eval_01(_cSoprHoz: comp; var _pAktOfp: #TAktOfpX; _wMode: word; _isMessage: word): boolean;

  #doc
  Заполнить разноску по статьям ФинПроводок из ХозОперации договора.<br>
  #end
  Function AggrFpObByDocSource(_cDocSource: comp; var _pAktOfp: #TAktOfpX): boolean;

  #doc
  Привязка статьи к ФО на все 100 процентов, появились документы несущие ContAn.<br>
  #end
  Function AktOfp_StBudAttach_Eval_01(bufAktOfp: TAktOfp; _cStBud: comp; _ContAn: LongInt ): boolean;

  #doc
  Привязка статьи к ФО на все 100 процентов.<br>
  #end
  Function AktOfp_StBudAttach(bufAktOfp: TAktOfp; _cStBud: comp): boolean;

  #doc
  Просмотр бюджета по ФО.<br>
  #end
  Function AktOfp_SeeBudget(bufAktOfp: TAktOfp): boolean;

  #doc
  Просмотр/редактирование (_regim) привязки к статьям.<br>
  #end
  Procedure AktOfp_EditStBud(_regim: word; bufAktOfp: TAktOfp);

  #doc
  Заполнение по аналитике соответствующего поля в буфере ФОб с IsNeedUpDate & IsNeedPosit.<br>
  #end
  Function AktOfp_SetAnalitikToBuf(var _bufAktOfp: TAktOfp; _wKau: word; _cKau: comp; _wMode: word = cgBitNo): boolean;

  #doc
  Установить значение поля.<br>
  #end
  Function AktOfp_SetDefValueToBuf(var bufAktOfp: TAktOfp; _wFld: word; _wFldValue: word; _dFldValue: date): boolean;

  #doc
  Аналитика только данного документа из буфера ФОб.<br>
  #end
  Function AktOFP_ExtractKAU(bufAktOfp: TAktOfp; _wKau: word): TnRec;

  #doc
  Аналитика только данного документа.<br>
  #end
  Function AktOfp_GetDocAnaliticByBuf(bufAktOfp: TAktOfp; var _contId: longint): boolean;

  #doc
  Заполнение контейнера аналитик по буферу ФО (связана с предыдущей).<br>
  #end
  Function AktOfp_GetAnaliticByBuf(bufAktOfp: TAktOfp; var _contId: longint): boolean;

  //////////////////// ПРОВЕРКА ДОСТУПНОСТИ ФО /////////////////////////////////
  #doc
  Макс дата, не доступная для редактирования.<br>
  #end
  Function AktOfp_GetMaxNotADate: date;

  #doc
  Поиск среди запрещенных к редактированию доков ПК у тек.группы на ук.дату.<br>
  #end
  Function AktOfp_CheckADate(_dDoc: date; _isMessage: word): boolean;

  #doc
  Если дата запрещена для ред. - вернет первую не запрещенную.<br>
  #end
  Function AktOfp_GetFirstADate(_dDoc: date): date;

  #doc
  Первая дата ФО, на кот.его можно редактировать.<br>
  #end
  Function AktOfp_GetFirstADateForEdit: date;

  #doc
  Первая дата ФО, доступная для редактирования, не меньше _dDoc.<br>
  #end
  Function AktOfp_GetFirstOpenADateNotLess(_dDoc: date): date;

  #doc
  То же с сообщением.<br>
  #end
  Function AktOfp_CheckFirstADateForEdit(_date: date; _DateName: string): boolean;

  #doc
  Проверяет дату на доступность и открытость.<br>
  #end
  Function AktOfp_CanEditOnDate(_date: date; _NeedMessage: boolean): boolean;

  #doc
  Можно ли редактировать документ.<br>
  #end
  Function AktOfp_AvailableForUser(bufAktOfp: TAktOfp): boolean;

  #doc
  То же - по заранее вычисленной максимально доступной дате.<br>
  #end
  Function AktOfp_AvailableForUserWithMaxDate(_bufAktOfp: TAktOfp; _maxDate: date): boolean;

  #doc
  Можно ли создавать ФО на дату заявки (без сообщения).<br>
  #end
  Function AktOfp_CanForReqDate(_retDate: date; _NeedMessage: boolean): boolean;

  #doc
  Можно ли создавать ФО на дату ДО (без сообщения).<br>
  #end
  Function AktOfp_CanForDODate(_cDO: comp; _UchNaSrok: boolean; var _retDate: date; _NeedMessage: boolean): boolean;

  #doc
  То же для поля "Оплатить до".<br>
  #end
  Function AktOfp_CanForDOPayTill(_cDO: comp; var _retDate: date; _NeedMessage: boolean): boolean;

  #doc
  Можно ли обновлять поля ФО.<br>
  #end
  Function AktOfp_CanUpdate(bufAktOfp: TAktOfp): boolean;

  #doc
  Можно ли создавать платежные документы.<br>
  #end
  Function AktOfp_CanMakePlatDoc(_Status: word): boolean;

  #doc
  Можно ли переносить ФО на ук.дату.<br>
  #end
  Function AktOfp_CanMoveToDay(_cAktOfp: comp; _date: date; _isMessage: word): boolean;

  #doc
  Можно только изменять дату документа.<br>
  #end
  Function AktOfp_CanBeReason(_ReasonType: word): boolean;

  #doc
  Всегда можно в архив с этим статусом.<br>
  #end
  Function AktOfp_CanToArchiveAlways(bufAktOfp: TAktOfp): boolean;

  #doc
  можно ли создавать ФОБ (с сообщением или без).<br>
  #end
  Function AktOfp_CanSetDefault(_OfpDocType: word; _NeedMessage: boolean): boolean;

  #doc
  можно ли редактировать ФОБ (с сообщением или без).<br>
  #end
  Function AktOfp_CanEdit(bufAktOfp: TAktOfp; _CheckStatus, _NeedMessage: boolean): boolean;

  #doc
  можно ли удалять ФОБ (с сообщением или без).<br>
  #end
  Function AktOfp_CanDelete(bufAktOfp: TAktOfp; _NeedMessage: boolean): boolean;

  #doc
  Проверка на возможность удаления перед формированием.<br>
  #end
  Function AktOfp_CheckDeleteBeforeCreate(bufAktOfp: TAktOfp): boolean;

  #doc
  Можно ли удалить все (для tDOLG_BYE2) ФО по указанному ДО.<br>
  #end
  Function AktOfp_CanDeleteAllByDo(_cOfpModel: comp; _DocReasonType: word; _cDocReason: comp): boolean;

  ///////////////////////// У Д А Л Е Н И Е ////////////////////////////////////

  #doc
  Удаляет все Фоп у ФО (с проверкой удалять ли исполняемые ФОП).<br>
  #end
  Function AktOfp_DeleteClearingsWithAktPerfCheck( _cAktOFP               : comp;
                                                   _needUpdateAkt         : boolean;
                                                   _needDeleteWithAktPerf : boolean;
                                                   _isMessage             : word
                                                                         ): boolean;

  #doc
  Удаляет все Фоп у ФО.<br>
  #end
  Function AktOfp_DeleteClearings(_cAktOFP: comp; _NeedUpdateAkt: boolean): boolean;
  #doc
  Удаляет ФОБ и все его ФОП.<br>
  #end
  Function AktOfp_DeleteP(_cAktOfp: comp; _pAktOfp: #TAktOFPX): boolean;

  #doc
  Удаляет ФОБ и все соответствующие ему ФОБ в моделях.<br>
  #end
  Function AktOfp_Delete(_cAktOFP: comp): boolean;

  #doc
  Удаление всех ФО у ДО.<br>
  #end
  Function AktOfp_DeleteInModelByDO( _cOfpModel     : comp;
                                     _DocReasonType : word;
                                     _cDocReason    : comp;
                                     _byReason      : boolean
                                                   ): boolean;

  ///////////////////// ДОБАВЛЕНИЕ/ОБНОВЛЕНИЕ //////////////////////////////////
  #doc
  Обновление SoprHoz по ФО (для ТФО - разноски по статьям бюджета).<br>
  #end
  Function AktOfp_MakeSoprHoz(bufAktOFP: TAktOFP): boolean;

  #doc
  Сразу после добавления любой записи.<br>
  #end
  Function AktOfp_AfterInsert(bufAktOfp: TAktOfp): boolean;
  #doc
  Вставить
  #end
  Function AktOfp_Insert(var _pAktOFP: #TAktOFPX): comp;
  #doc
  Вставить AktOfp по буферу
  #end
  Function AktOfp_InsertBuff(_BuffAktOFP: TAktOFP): comp;
  #doc
  Модифицировать буфер в позиции в таблице
  #end
  Function AktOfp_Update(var _pAktOFP: #TAktOFPX): comp;
  ////////////////////// ЗАПОЛНЕНИЕ БУФЕРА ФО //////////////////////////////////
  #doc
  По основанию заполняет буфер ФО.<br>
  #end
  Function AktOfp_Fill(  var bufAktOFP : TAktOFP;
                        _DocReasonType : word;
                        _cDocReason    : comp;
                        _cSoprHoz      : comp;
                        _datePeriod    : date;
                        _direct        : word;  // для rsFIN_OBLIGATION
                        _HandMade      : boolean
                                      ): boolean;
  #doc
  Заполнение буфера ФО по ХО и ФОп.<br>
  #end
  Function FillFOBySH(_cSoprHoz: comp; _wOnlyBySH: word; var _pAktOfp: #TAktOfpX): boolean;

  #doc
  По основанию создает AktOFP (автоматически) _datePeriod - для период-ких.<br>
  #end
  Function AktOfp_CreateByBase( _DocReasonType : word;
                                _cDocReason    : comp;
                                _cSoprHoz      : comp;
                                _datePeriod    : date;
                                _FOCourse      : word; // для вал-руб ФО
                                _NeedClearing  : boolean;
                                _HandMade      : boolean
                                               ): comp;

  #doc
  По основанию создает AktOFP (вручную) _datePeriod - для период-ких
  #end
  Function AktOfp_CreateByBase_AltF( _DocReasonType : word;
                                     _cDocReason    : comp;
                                     _datePeriod    : date;
                                     _rMaket        : TMaketAktOfp
                                                   ): comp;

  #doc
  По основанию обновляет AktOFP (вручную или автоматически).<br>
  #end
  Function AktOfp_UpdateByBase(_pAktOfp: #TAktOFPX; _datePeriod: date): comp;

  //////////////////////// РАЗЛИЧНЫЕ РАСЧЕТЫ ///////////////////////////////////
  #doc
  Сумма Фоп по вал-руб ФО (с запросом или без).<br>
  #end
  Function AktOfp_GetSummaForFop(bufAktOFP: TAktOFP; bufClearing: TClearing; _Ask: boolean; var _Summa: double): boolean;

  #doc
  Нужно ли пересчитывать сумму Фоп.<br>
  #end
  Function AktOfp_SetSummaFopNeed(_TipMoney: word): boolean;

  #doc
  То же, но по ссылке и без запроса курса (дольше).<br>
  #end
  Function AktOfp_SetSummaFop(_cAktOfp: comp; _cClearing: comp; _Ask: boolean): boolean;

  #doc
  Возвращает сумму ФО и валюту в соответствии с TipMoney (для Фоп).<br>
  #end
  Function AktOfp_GetSummaForFopByCourse( _cAktOFP    : comp;
                                          _FOCourse   : word;
                                          var _cVal   : comp;
                                          var _Summa  : double;
                                          var _SumVal : double
                                                     ): boolean;

  #doc
  Пересчитывает указанную в НДЕ сумму в валюту ФО.<br>
  #end
  Function AktOfp_SummaToFromValFO( bufAktOfp     : TAktOfp;
                                    _cVal         : comp;
                                    _Summa        : double;
                                    _isToValFO    : boolean;
                                    var _wasError : boolean
                                                 ): double;

  #doc
  Пересчет сумм Фоп ук-го ФО по курсу (последнему известному).<br>
  #end
  Function AktOfp_RecountFopByCourse(_cAktOFP: comp): boolean;

  #doc
  Сумма Фоп по ФО в валюте ФО (валюта - на дату ФО), сумма Фоп конвертации уч-тся только для ФО конвертации.<br>
  #end
  Function AktOfp_GetSummaFopOther(bufAktOFP: TAktOfp; _cClearing: comp): double;

  #doc
  Сумма Фоп по ФО в валюте ФО (валюта - на дату ФО), с КАУ ( сумма Фоп конвертации уч-тся только для ФО конвертации).<br>
  #end
  Function AktOfp_GetSummaFop_by_Kau(bufAktOFP: TAktOfp; _wKau: word): double;

  #doc
  Суммы ФОБ по заявке (все либо по основанию) в указанной валюте.<br>
  #end
  Function AktOfp_GetSumByReq(_cDocReq: comp; _ByReason: boolean; _cVal: comp; var _Summa, _HozSumma, _SumFact: double): boolean;

  #doc
  Сумма ФО, которую можно включить во взаимозачет.<br>
  #end
  Function AktOfp_RestSummaToVzaim(bufAktOfp: TAktOfp): double;

  #doc
  Сумма аванса.<br>
  #end
  Function AktOfp_GetAvans(_bufAktOFP: TAktOfp): double;

  #doc
  Факт по ФО - оплаченные хоз.документы (долго - переделать потом).<br>
  #end
  Function AktOfp_GetFact(_bufAktOFP: TAktOfp; _Period: word; var _sumFact: double; var _hozSumma: double): boolean;

  #doc
  Часть факта ФО, которая оплачена в закрытом периоде (в регистре "факт").<br>
  #end
  Function AktOfp_GetClosedFact(_bufAktOFP: TAktOfp): double;

  #doc
  Контроль сумм.<br>
  #end
  Function AktOfp_SummControl(_bufAktOFP: TAktOfp; _cClearing: comp; _isValSumm: boolean; var _Summa: double): boolean;

  ///////////////////// ИЗМЕНЕНИЕ АТРИБУТОВ ////////////////////////////////////
  #doc
  Спрашивает новую дату.<br>
  #end
  Function AktOfp_DateGet(_cAktOFP: comp; var NewDate: date): boolean;

  #doc
  Изменим если надо дату Фоп у ФО.<br>
  #end
  Procedure AktOfp_DateSetAfter(_cAktOFP: comp; _OldDate: date; _NewDate: date; _CheckFop: boolean);

  #doc
  Изменение даты финобязательства с проверкой бюджетов.<br>
  #end
  Function AktOfp_SetDateWithBudgetCheck(_cAktOFP: comp): boolean;

  #doc
  изменение даты финобязательства.<br>
  #end
  Function AktOfp_DateSet_Eval_02(var _pAktOFP: #TAktOfpX; _NewDate: date; _wMode: word): boolean;

  #doc
  Изменение даты финобязательства.<br>
  #end
  Function AktOfp_DateSet(_cAktOFP: comp; _NewDate: date; _CheckFop: boolean): boolean;

  #doc
  Автокореектировка даты финобязательства.<br>
  #end
  Function AktOfp_DateReSet(_cAktOFP: comp): boolean;

  #doc
  Обновление суммы, пересчет исполнения, факта.<br>
  #end
  Function AktOfp_SummReSet(_cAktOFP: comp; _AddSumm: double): boolean;

  #doc
  Изменение статуса привязанных ФОП.<br>
  #end
  Function AktOfp_SetStatusAfter(bufAktOfp: TAktOfp; _OldStatus: word): boolean;

  #doc
  Пересчет первоначальной даты обязательства.<br>
  #end
  Function AktOfp_DFirstRecount(_cAktOfp: comp; _NewDate: date; _isDate: boolean): boolean;

  #doc
  изменение статуса у ФО (без подтверждения).<br>
  #end
  Function AktOfp_SetStatusP(var _pAktOFP: #TAktOFPX; _NewStatus: word; _NewcNote: comp; _comment: string[80] = ''): boolean;

  #doc
  То же, но по ссылке.<br>
  #end
  Function AktOfp_SetStatus(_cAktOFP: comp; _NewStatus: word; _NewcNote: comp; _comment: string[80] = ''): boolean;

  #doc
  Изменение приоритета ФО.<br>
  #end
  Function AktOfp_SetPrior(var _bufAktOFP: TAktOfp; _prior: word; _wMode: word): word;

  #doc
  Изменение (увеличение или уменьшение) исполнения и факта ФО ( выз. только из Clearing_ChangeFact).<br>
  #end
  Function AktOfp_ChangeFact(bufClearing: TClearing; _SumPerf: double; _dSoprHoz : date; _direct: word): boolean;

  #doc
  Увеличение или изменение фактической суммы (при изм.даты ХозОп), (то же, но только факт) выз.только из Clearing_HozToFact.<br>
  #end
  Function AktOfp_HozToFact(bufClearing: TClearing; _summa: double; _direct: word): boolean;

  #doc
  Изменение периодического прихода.<br>
  #end
  Function ChangeStatSumma(_pSoprHoz: TPSoprHoz): boolean;

  #doc
  Обновляет распределение по ДО, ПКП, Договорам на основании авансового и фактического обязательства
  #end
  Function AktOfp_UpdateBaseFinByAvans(_cBaseFin, _cAktOfpAvans, _cAktOfpFact: comp; _UpdPlPor: boolean = true): boolean;

  #doc
  Перенос ФО и его Фоп в архив.<br>
  #end
  Function AktOfp_ToArchive(_cAktOFP: comp): boolean;

  #doc
  Перенос ФО и его Фоп из архива на указанную дату.<br>
  #end
  Function AktOfp_FromArchive(_cAktOFP: comp; _NewDate: date): boolean;

End;

VipInterface iAktOfp implements objAktOfp, objErrorMng
#Licensed_PK // На случай если будем возвращаться к прежней концепции лицензирования
;
//******************************************************************************
#end //__AAKTOFP_VIH__
aOfpOutAktOfp.vih совпадает
Zver
Местный житель
Сообщения: 204
Зарегистрирован: 13 ноя 2012, 12:47
Откуда: СПб
Контактная информация:

Re: Последние патчи для 44 ядра

Сообщение Zver »

edward_K писал(а):Староваты.
У меня вроде как от 43 - но мож потянут.
aAktOfp.vih от 18.09.2013
Спасибо за ответ, но, к сожалению, не подошел.
Если в списке подключаемых ресурсов подключить F_OFP.res с 41 версии ядра, то компиляция проходит без ошибок.
Видимо, надо искать ещё более новые версии этих файлов.
Программист-самоучка
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Последние патчи для 44 ядра

Сообщение edward_K »

дык а какая ошибка компиляции? Там же еще описания типов юзается.
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: Последние патчи для 44 ядра

Сообщение Den »

ради интереса качнул F_OFP_RES_810870.acd , распаковал. там лежит aAktOfp.vih от 13/12/2013 18588
Zver
Местный житель
Сообщения: 204
Зарегистрирован: 13 ноя 2012, 12:47
Откуда: СПб
Контактная информация:

Re: Последние патчи для 44 ядра

Сообщение Zver »

После долгого перерыва опять пробуем перейти на 44 ядро.

Теперь есть более новый заголовочный файл aAktOfp.vih и ресурсный файл F_OFP.res от 07.02.2014.

В компилируемом интрефейсе происходит докомпиляция ряда функций.

Во время компиляции появляется ошибка:
"Ошибка: Описание метода AktOfp_CreateByBase не совпадает с существующим"

Ругается таким образом на описание функций в секции OverLoad.

Что компилятор имеет в виду под описанием метода?

На всякий случай выкладывают исходный текст компилируемого файла:

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


!#component "F_OFP"
!#define __SumBalansFob__
!#include aAktOfp.vih
!#include aAktOfp.vip
#include ValFunc.vih
alter interface iAktOfp
  ('')
;

overload
  // по основанию создает AktOFP (вручную или автоматически) _datePeriod - для период-ких
  Function ObjAktOfp.AktOfp_CreateByBase(
      _DocReasonType: word;
      _cDocReason: comp;
      _cSoprHoz: comp;
      _datePeriod: date;
      _FOCourse: word; // для вал-руб ФО
      _NeedClearing: boolean;
      _HandMade: boolean
    ): comp;

  // то же, но по ссылке и без запроса курса (дольше)
  //!!D переименовать - добавить "ValRub"
  Function ObjAktOfp.AktOfp_SetSummaFop(
      _cAktOfp: comp;
      _cClearing: comp;
      _Ask: boolean
    ): boolean;

  // пересчет сумм Фоп ук-го ФО по курсу (последнему известному)
  Function ObjAktOfp.AktOfp_RecountFopByCourse(
      _cAktOFP: comp
    ): boolean;

  Procedure AktOfp_FillByDocReq(bufDocReq: TDocReq;
                          var bufAktOFP: TAktOFP; _HandMade: boolean; _datePeriod: date);


//------------------------------------------------------------------------------
//!!!!!!!!!!!!!!!!!D сумма в бюджете - надо между регистрами перекинуть
// piBudByOfp.Budget_DocLimitOnPaid
// в конце выполнения каждой следующей функции
// Пока это происходит только на закрытие дня/откат - может так и правильно
// изменение (увеличение или уменьшение) исполнения и факта ФО
// выз. только из Clearing_ChangeFact
 Function ObjAktOfp.AktOfp_ChangeFact(
      bufClearing: TClearing;
      _SumPerf: double;
      _dSoprHoz : date;
      _direct: word
    ): boolean;
end;


#include ValFunc.var

#include ofpvalfunc.vpp // movalfunc - функции для работы с валютой

create view
var
 vw_cDocReq_2 : comp;
from
 DocReq   EPA_DocReq
,Clearing EPA_Clearing
where
((
       vw_cDocReq_2  == EPA_DocReq.Nrec
   and AktOFP.nRec == EPA_Clearing.cAktOFP
));

Procedure AktOfp_FillByDocReq(bufDocReq: TDocReq;
                          var bufAktOFP: TAktOFP; _HandMade: boolean; _datePeriod: date);
{
  inherited::AktOfp_FillByDocReq(bufDocReq, bufAktOFP, _HandMade, _datePeriod);
  if ( bufDocReq.cPodr != 0h )
    bufAktOFP.cPodr := bufDocReq.cPodr;
}


// Создание заявок на расходование средств
Function ObjAktOfp.AktOfp_CreateByBase(
    _DocReasonType: word;
    _cDocReason: comp;
    _cSoprHoz: comp;
    _datePeriod: date;
    _FOCourse: word; // для вал-руб ФО
    _NeedClearing: boolean;
    _HandMade: boolean
  ): comp;
{
   result := Inherited::AktOfp_CreateByBase( _DocReasonType
                                            ,_cDocReason
                                            ,_cSoprHoz
                                            ,_datePeriod
                                            ,_FOCourse
                                            ,_NeedClearing
                                            ,_HandMade);

  // для заявок на расходование средств нужно проставить дату курса, если она есть в заявке
  if (result != 0 and _DocReasonType = tREQ_RASHOD)
   {
      vw_cDocReq_2 := _cDocReason;

      if (getFirst FastFirstRow EPA_DocReq = tsOk)
       {
          if (EPA_DocReq.dValCurse != 0)
            {
               update AktOfp
               where
                ((
                    result == AktOfp.Nrec
                ))
               set AktOfp.dValCurse = EPA_DocReq.dValCurse;
            }
       }
   }
}
 // Перенос даты погашения
Function ObjAktOfp.AktOfp_SetSummaFop(
    _cAktOfp: comp;
    _cClearing: comp;
    _Ask: boolean
  ): boolean;
{
  AktOfp_SetSummaFop := False; // не обновили пока

  if getfirst AktOFP where ((_cAktOFP == AktOFP.nRec)) = tsOk
    // вал-руб - пересчитаем по курсу
    if AktOfp_SetSummaFopNeed(AktOFP.TipMoney)
    {
      if getfirst Clearing where ((_cClearing == Clearing.nRec)) = tsOk
      {
        // буфер до изменений
        var bufFopOld: TClearing;
        bufFopOld := TClearing(Clearing.buffer);

        // если установлена фиксированная дата курса, пересчитывать надо по ней
        var bufClearing  : TClearing;
        bufClearing      := TClearing(Clearing.buffer);
        bufClearing.dDoc := if (AktOFP.dValCurse != 0, AktOFP.dValCurse, bufClearing.dDoc);

        // сумма Фоп по вал-руб ФО (с запросом или без)
        if AktOfp_GetSummaForFop( TAktOFP(AktOFP.buffer)
                                , bufClearing
                                , _Ask
                                , Clearing.Summa)
          AktOfp_SetSummaFop :=
             piClearing.Clearing_UpdateR(#TClearingX(Clearing.bufferP), bufFopOld) <> 0;
      }
   }
}

//------------------------------------------------------------------------------
// пересчет сумм Фоп ук-го ФО по курсу (последнему известному)
Function ObjAktOfp.AktOfp_RecountFopByCourse(_cAktOFP: comp): boolean;
{
  AktOfp_RecountFopByCourse := True; // без ошибки
  // не вал-руб - не надо
  If getfirst AktOFP where ((_cAktOFP == AktOFP.nRec)) <> tsOk
    exit;

  If (AktOFP.TipMoney <> tipVALRUB)
    exit;

  // !!!если в ДО зафиксирован курс - не пересчитывать
  // !!!операции конвертации пересчитывать? а взаимозачета?
  _loop Clearing where ((_cAktOFP == Clearing.cAktOFP))
  {
    if (Clearing.cVal = 0)
    {
      var bufOld: TClearing;
      bufOld    := TClearing(Clearing.buffer);

      Clearing.Summa := #(movalfunc)CalcRubValMoney( True, AktOFP.cVal, if (AktOFP.dValCurse != 0, AktOFP.dValCurse, Clearing.dDoc), Clearing.cVal, AktOFP.DopProc, Clearing.SumVal);

      AktOfp_RecountFopByCourse :=
        piClearing.Clearing_UpdateR(#TClearingX(Clearing.bufferP), bufOld) <> 0;
    }
  }
}

// Обнуление отрицательных "хвостов" после удаления распределения
Function ObjAktOfp.AktOfp_ChangeFact(
     bufClearing: TClearing;
     _SumPerf: double;
     _dSoprHoz : date;
     _direct: word
   ): boolean;
{
   result := Inherited::AktOfp_ChangeFact(bufClearing,_SumPerf,_dSoprHoz,_direct) ;

   if (GetFirst AktOFP where ((bufClearing.cAktOFP == AktOFP.nRec)) = tsOk)
    {
      var tmpSum : double;
      tmpSum := 0;
      _Loop EPA_Clearing
      {
        if (EPA_Clearing.HozSumma > 0)
          tmpSum += EPA_Clearing.SumVal;
      }
      if (tmpSum < 0)
        set AktOFP.HozSumma := 0;
      else
        set AktOFP.HozSumma := tmpSum;
      update current AktOFP;
    }
}

End.
Программист-самоучка
Ответить