0
Отвечен

Выполнение стандартных вещей в скриптах

Роман Шивалов 5 лет назад в Прочее обновлен mid2018 5 лет назад 14

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

Бухгалтеры сильно просят, чтобы табель (формируется через Отчеты -> Справки по ЛС) выгружался одновременно с определённой таблицей разноски.
Можно ли вообще подобное реализовать?

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

Реализовать все в одной таблице затруднительно, возможно не более, чем сделать вышеизложенные вариант, но тоже идея...

Как вы считаете?


ХОРОШО, МНЕ ПОНРАВИЛОСЬ
Оценка удовлетворенности от Роман Шивалов 5 лет назад
На рассмотрении

Добрый день

Обычно табель (Отчеты -> Справки по ЛС) формируют и печатают.

 выгружался одновременно с определённой таблицей разноски.

О каких выгрузках и разносках идет речь?

Прошу прощения. Конечно же это не стандартный табель, который печатают. Это наша таблица, которая в формируется в Отчеты -> Справки по ЛС, потому мы ее выгружаем в файл и из этого файла загружаем в другую систему.

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

В принципе, неважно какие там данные

Требуется эти два действия превратить в одно... По какому пути лучше пойти?

По какому пути лучше пойти?

Принять данные в одну таблицу. При выгрузке сформировать 2 файла.

А возможно что это будут два различных файла по составу?

Если да, то как это сделать?

Конечно можно.

Можно сформировать файлы вообще без формирования таблиц...

А как вы сейчас формируете файлы? Выгружаете в стандартном формате? ( dbf?)

Можно прописать скриптовую функцию, формирующую файл. 

А уж какой это файл будет и их количество - ограничиваются только вашей фантазией.

В качестве примера можно посмотреть реализацию функции , формирующей файл для банка. Например, ToSB_SumXML()  в sbr_xml.S

Да, выгружаем в dbf

Спасибо, реализацию посмотрим.

А как инициировать (настроить) такую выгрузку?

У таблицы в поле "Функция для передачи в файл" прописываете функцию, которая отвечает за формирование файла.

При выгрузке таблицы по Alt+F9 отработает эта функция и сформирует нужный файл.

А где можно посмотреть программное формирование dbf-файлов?

добавление столбцов

oDBF = CreateObject("CurPrnTbl");
oDBF.InitialEmptyTable();
int Fld=0;
oDBF.Add_Fld_0(Fld++,'C',DlFld,0,DlFld," ","Столбец1","A");
oDBF.Add_Fld_0(Fld++,'C',DlFld,0,DlFld," ","Столбец2","B");

добавление строк

oDBF.Add_Rcr(row,1);
row++;

заполнение таблицы

oDBF.SText(start_col, row,static_cast_to_string(Arg2));
oDBF.SText(start_col+1,row,Tabl.Text(fld[idxBankCard],zap));


см. пример в SCRIPT\BANK\sbr_dbf.S

Добрый день!

Зачем вам знать программное формирование dbf-файла? Достаточно знать на основании чего формируются поля dbf-файла. А формируются они следующим образом. Зайдите в любую таблицу, нажмите F9 и вы увидите 3 столбца, отвечающие за формирование dbf-файла:

Если вам надо поменять имя поля, пожалуйста - поставьте то, которое вас устроит. При передачи в dbf-файл у вас будет уже ваше имя соответствующего поля. Размер и точность меняется по клавише Alt+F6(изменить столбец) на соответствующем столбце вашей таблицы.

этот вариант не подходит

мне нужны два файла различной структуры

Есть, как минимум, два варианта решения этой задачи.

1.  Если за основу взять рекомендованный файл (sbr_dbf),  то, в вашем случае,  надо использовать не одну ф-цию выгрузки (TransSBdbf_ved) а две,  что-нибудь типа:  Trans_dbf1 и Trans_dbf2,  которые, в свою очередь, должны вызываться глобальной ф-цией  типа  Trans_dbf_main.   

      2.  Если же писать две ф-ции тяжело,  можно задачу упростить;  в файле использовать  одну ф-цию, для вывода какого-то особенного формата dbf-файла,  а второй выводить точно также как выводите сейчас.

      Только Alt_F9  придётся нажимать два раза:

         - первый раз согласиться с форматом "формат пользователя"  - появится тот файл, который вы прописали в своей ф-ции на основе TransSBdbf_ved;

         - второй раз выбрать формат "dbf-формат" и в верхней строке ввести путь и имя dbf-файла - появится точно такой же файл, который вы и сейчас выводите по Alt_F9. 

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