Страница 1 из 1

Вызов интерфейса выбора Аналитики

Добавлено: 05 июн 2013, 15:03
niteo
Добрый день, хочу вызвать интерфейс выбора аналитики.
Пытаюсь использовать F_GETAN::THREEPICKKAU в "Документации на программный интерфейс" написано следующее:
Параметры

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

wIntMode : Word 
wPickNum : Word 
cPlansSch : Comp 
sGetSch : String [21] 
sGetSub : String [21] 
wGetKau : tTabKau 
cGetKau : tGetKau 
Не пойму назначения первых 3-х полей, откуда брать данные для них?
Пытался вызвать этот интерфейс через Сервис->Утилиты->Запуск внешнего интерфейса, но ничего не получилось.
Посмотрел файл xgetkau.vih там описан ряд интерфейсов, но мне не до конца понятно их назначение, хотя параметры они получают похожие. Вот пример:

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

wIntMode : word; // режим выбора          (см.GloConst.inc)
PickNum   : word;     // номер элемента для выбора
cPlansSch : comp;     // план счетов
с остальными кажется ясно, но вопрос остался, что означают первые 3 поля и что туда подставлять?

Re: Вызов интерфейса выбора Аналитики

Добавлено: 05 июн 2013, 15:30
edward_K
используйте объект GetKau
Плюсы - доступ к любой аналитике, а не только к пользовательской, автоматическая работа с пометкой (все выборы сохраняются в маркер) , не нужно заботиться о конкретный фейсах и так далее. Примеры поищите на форуме.

Re: Вызов интерфейса выбора Аналитики

Добавлено: 07 июн 2013, 13:42
niteo
edward_K писал(а):используйте объект GetKau
Плюсы - доступ к любой аналитике, а не только к пользовательской, автоматическая работа с пометкой (все выборы сохраняются в маркер) , не нужно заботиться о конкретный фейсах и так далее. Примеры поищите на форуме.
Мне необходимо выбрать 6 параметров аналитики для лицевого счета, в зависимости от критериев счет/субсчет.

Re: Вызов интерфейса выбора Аналитики

Добавлено: 07 июн 2013, 14:00
edward_K
ну вот вам пример из зарплаты

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

 #declare Pick_Deb (TableName, SchetField, SubschField, KAUField)
  begin
      if (CurField = #SchetField) or (CurField = #SubschField)
      {
        if (CurCommand = cmOpenSearch)
          QuickChoiceName := if (CurField = #SchetField, 'qcBuh_SchetAndSub', 'qcBuh_SubSchet');
        else
          QuickChoiceName := '';
        shpzar := PLANSSCH.KOD + #TableName.CSCHETD;
        if (RunInterface('GetBuhSchet', word(cgiPick), MyPlansNo, shpzar, #TableName.CSUBSCHD) <> cmCancel)
        {
          #TableName.cSchetD  := SubStr(shpzar, 2, cgSchetLength-1);
          var SA: StickyAnalytics;
          SA.Stick(shpzar, #TableName.CSUBSCHD, #TableName.TBLD, #TableName.CKAUD);
          set #TableName.cSchetD := #TableName.CSCHETD;
        }
      }
      if (CurField = #KAUField)
      {
        shpzar := PlansSch.Kod + #TableName.cSchetD;
        if (iXGetKau.PickKauBuh(
          cgiPick, word(0),
          shpzar, #TableName.cSubSchD,#TableName.TBLD,#TableName.CKAUD))
          set #TableName.CKAUD[1] := #TableName.CKAUD[1];
      }
  end;
  #end //Pick_Deb
Использование
#Pick_Deb(LSchet, #SchetDeb, #SubSchDeb, #NamKaud);
где NamKaud - текстовое значение поля аналитики.

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

RTrim(if (GetAnyKau(cgAkSimple, OtpDop.TBLD[1], OtpDop.CKAUD[1]), GivenAnName(cgAnName), '') + '\' +
          if (GetAnyKau(cgAkSimple, OtpDop.TBLD[2], OtpDop.CKAUD[2]), GivenAnName(cgAnName), '') + '\' +
          if (GetAnyKau(cgAkSimple, OtpDop.TBLD[3], OtpDop.CKAUD[3]), GivenAnName(cgAnName), '') + '\' +
          if (GetAnyKau(cgAkSimple, OtpDop.TBLD[4], OtpDop.CKAUD[4]), GivenAnName(cgAnName), '') + '\' +
          if (GetAnyKau(cgAkSimple, OtpDop.TBLD[5], OtpDop.CKAUD[5]), GivenAnName(cgAnName), '') + '\' +
          if (GetAnyKau(cgAkSimple, OtpDop.TBLD[6], OtpDop.CKAUD[6]), GivenAnName(cgAnName), '') , '\'),

Re: Вызов интерфейса выбора Аналитики

Добавлено: 10 июн 2013, 21:15
niteo
edward_K писал(а):ну вот вам пример из зарплаты

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

 
        shpzar := PlansSch.Kod + #TableName.cSchetD;
        if (iXGetKau.PickKauBuh(
          cgiPick, word(0),
          shpzar, #TableName.cSubSchD,#TableName.TBLD,#TableName.CKAUD))
          set #TableName.CKAUD[1] := #TableName.CKAUD[1];
Как я понял, мне необходима только

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

iXGetKau.PickKauBuh
Возникло несколько вопросов, как выйти на табличку PlansSch (пока заменил на 'Т'), TableName это lschet
Еще проблема, при добавлении в проект строчки:
#include xGetKau.vih
компилятор начинает ругаться вот так:
Ошибка: ожидалось : ";" (стр.12, поз.1. в C:\...\INC\XGETKAU.vih)
#Component "F_GetAn"
^ [ Enter-продолжить ] : ok.

Re: Вызов интерфейса выбора Аналитики

Добавлено: 11 июн 2013, 11:01
edward_K
1. PlansSch.Nrec ищется из настройки текущего плана счетов либо из настройки консолидации
"Настройки Галактики \ Бухгалтерский контур \ Текущий план счетов" ( код FIN.USER.CPLANSSCH)
"Настройки Галактики \ Бухгалтерский контур \ Консолидация \ Текущий план счетов" (KONSOLID.CPLANSSCH)
функцией coGetTune(код_настройки), либо по вкусу.Ну а дальше ищите нужную запись и берете из нее код.
Пример приведен для зарплаты - там нет кода плана счетов в таблицах, в бухконтуре есть.
2. У вас ошибка где то выше, а не в vih - ругается на первый символ кода. Ну или версия у вас ниже 810.

Re: Вызов интерфейса выбора Аналитики

Добавлено: 18 июн 2013, 15:55
niteo
Спасибо за Ваши ответы. Еще вот такой момент:
edward_K писал(а):2. У вас ошибка где то выше, а не в vih - ругается на первый символ кода. Ну или версия у вас ниже 810.
Далаю вот так:

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

interface iGet6KAU 'Получить КАУ';
//#include GetKau.vih  
#include xGetKau.vih  
end.
Говорит тоже самое, ругается на содержимое xGetKau.vih (его я беру из папки FRM).
Если, я пытаюсь воспользоваться функцией xGetKau.PickKauBuh без подключения xGetKau.vih,

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

interface iGet6KAU 'Получить КАУ';
//#include GetKau.vih  
//#include xGetKau.vih  
var iXGetKau: XGetKau;
handleevent
cmInit:{
  iXGetKau.PickKauBuh();
}
end
end.
то компилятор ругается так:
Изображение
Что это означает - непонятно. С Интерфейсами мало работал. Подскажите, из-за чего возникает данная ошибка?

Re: Вызов интерфейса выбора Аналитики

Добавлено: 18 июн 2013, 16:13
edward_K
xGetKau это не стандартный тип, который где то нужно описать - объекты описываются в vih(принято так - расширение вообще не важно).
а версия то галки какая? Define все нужные определены? Я обычно включаю galnet.inc в проект - он включает все необходимые определения.
#statusline "statgal"
#include galnet.inc end;
#include glovars.inc
- это у меня во всех проектах
Inc также есть в каталоге frm (его надо собирать из всех файлов патчей), чего не хватит замените пустышками.