0
Отвечен

Запрос перед формированием таблицы

Игорь Шалдин 3 года назад в Прочее обновлен Гашков Николай (Эксперт) 3 года назад 7

Здравствуйте.

Перед тем как принять в таблицу информацию из ЛС, необходимо организовать запрос данных для формирования таблицы.

Сделал так:

1. В загружаемый модуль добавил:

int fnd = 0;
AskMeAboutFond()
{

if (Panel_Zapros(AnsiToOem("Введите код фонда "),AnsiToOem("241-ПФР,239-ФОМС,238-ФСС,254-НСиПЗ"),
AnsiToOem(" Код фонда"),fnd,3

)==ESC)
return ESC;

2.  

Image 5938

3. 

Image 5941

Всё работает, но вводить код фонда вручную как-то "некрасиво"...

Попытался сделать через MAP. Указанный в п.1 код заменил на:

AskMeAboutFond()
{
var Map = CreateObject("MapString");
Map.Clear();
Map.Add("1",AnsiToOem("239 - ФФОМС"));
Map.Add("2",AnsiToOem("241 - ПФР"));
Map.Add("3",AnsiToOem("238 - ФСС"));
Map.Add("4",AnsiToOem("254 - ФСС от НС и ПЗ)"));

string Title = AnsiToOem("Выберите фонд для сравнения");
var MapRez = CreateObject("MapString");
if ( PanelValueFromMap(Map,MapRez,1,Title) == ESC )
return ESC;
if ( !MapRez.InitIterator() )
return 0;
char str[100], fnd[100];
str = Map.GetValue(MapRez.GetCurKey());
sprintf(fnd,"%.3s",str);
return ESC;

}

Перед формированием таблицы появляется панель выбора фонда, но на этом всё заканчивается. В то смысле, что таблица просто не формируется. Ни каких сообщений об ошибках при этом нет.

Что сделал не так?

На рассмотрении

Добрый день.

Попробуйте строки 

char str[100], fnd[100];
str = Map.GetValue(MapRez.GetCurKey());
sprintf(fnd,"%.3s",str);

заменить на

fnd=atoi(MapRez.GetCurKey());

Перед AskMeAboutFond() оставьте строку

int fnd = 0;

Строка 

int fnd = 0;

есть. просто в копипаст не попала.

Получилось так:

int fnd = 0;
AskMeAboutFond()
{
var Map = CreateObject("MapString");
Map.Clear();
Map.Add("239",AnsiToOem("ФФОМС"));
Map.Add("241",AnsiToOem("ПФР"));
Map.Add("238",AnsiToOem("ФСС"));
Map.Add("254",AnsiToOem("ФСС от НС и ПЗ)"));

string Title = AnsiToOem("Выберите фонд для сравнения");
var MapRez = CreateObject("MapString");
if ( PanelValueFromMap(Map,MapRez,1,Title) == ESC )
return ESC;
if ( !MapRez.InitIterator() )
return 0;

fnd=atoi(MapRez.GetCurKey());

AmbaMessageBox(fnd,"",1,0);

return ESC;

}

Для проверки вставил вывод сообщения. Значение ключа возвращается корректно. Но таблица по-прежнему не формируется.

Наверное в таблице есть какие то фильтры?

Пустые таблицы по умолчанию не формируются.. ( если не поставить 1 в Настройка -> 5. Настройки таблиц и форм печати -> 1. Общие настройки таблиц и параметров печати -> Создание пустых таблиц для справок)

Саму таблицу можно взглянуть?

Пустые таблицы по умолчанию не формируются

Но ведь по первому варианту (с запросом) всё формируется корректно...

 
Саму таблицу можно взглянуть?

В архиве таблица и скрипт: ZPL.7Z

Сервис поддержки клиентов работает на платформе UserEcho