Страница 1 из 1
Установка настроек для импорта
Добавлено: 04 июл 2007, 16:19
edd
В общем проблема импорта из клиент-банка в галку не раз поднималась на форумах. Но решения я так и не нашел.
Нужно в галку сделать импорт комиссий как платежных поручений через банковские выписки. Но это не важно. Формат файла csv, имеет вид
MOVEMENT;"674139RUR401102016";"11.05.2007";"185";"RO0705115563";"11.05.2007";"11.05.2007";"6.000000";"0.000000";"Charges RO0705115563"
Лезу в обмен бизнес-документами, настройка для импорта. В полях заголовка ставлю пустое поле, пустое поле, Дата выписки, Пустое поле, Номер, Дата обработки, Пустое поле, Сумма платежа в НДЕ, Пустое поле, Пустое поле
Меня интересует то, что написано пятым, а именно номер (RO0705115563). Когда фины заносят эти данные ручками, они за номер считают последние 6 цифр, т.е. 115563. Вопрос, почему галактика не понимает, что я имею ввиду, когда в поле Формула напротив "Номер" пишу "Substr(Номер, 7,6)"? Если я пишу не то ( а в справке написано, что туда "Допустим ввод численных значений, арифметических действий и функций, переменных языка VIP"), то что надо писать, какие формулы, функции??? И что такое "Пустое поле", это то, что я понимаю? Что надо эту запись в csv пропустить или что? .
И почему он не заносит даты, хотя формат я установил DD.MM.YYYY ?
Заранее спасибо
Добавлено: 05 июл 2007, 12:07
Seybukan
Даты не идут думаю потому что все в кавычках.
Функции в тупую можно использовать при экспорте. При импорте так не прокатит. Вроде как есть возможность использовать хитрую функцию, но я ее не помню. Вот Эдвард точно помнит.
Добавлено: 05 июл 2007, 12:13
Seybukan
во вроде так нада
Substr(simportField, 7,6)
Добавлено: 05 июл 2007, 14:33
edd
Эдвард пока игнорирует
Получилось кстати с этой функцией, а больше функций для импорта не помните? Хоть где эти функции брать, я бы сам на них с удовольствием посмотрел...
Добавлено: 05 июл 2007, 14:55
Ged
Код: Выделить всё
// ObjExpImpScript - вызвается интерфейсами до/после экспорта/импорта документов.
// При экспорте он вызывает после выгрузки данных, при импорте - до загрузки.
// Сторонние разработчики могут написать свои реализации этого объектного интерфейса,
// чтобы привести данные в файле к нужному формату до импорта или после экспорта.
// Все реализации должны начинатся с префикса "ExpImpScript_"
#ifndef __ObjExpImpScript__
#define __ObjExpImpScript__
#ifdef GAL8_0
#component "C_EXPIMP"
#endif
ObjInterface ObjExpImpScript;
// эта процедура вызвается до того, как файл для экспорта будет открыт
// sFileName - полный путь к файлу
// cIEHead - ссылка на настройку экспорта
procedure BeforeExport(cIEHead : comp; sFileName : string);
// эта процедура вызвается после того, как файл с результатами экспорта закрыт
// sFileName - полный путь к файлу
// cIEHead - ссылка на настройку экспорта
procedure AfterExport(cIEHead : comp; sFileName : string);
// эта процедура вызвается до того, как файл с данными для импорта будет открыт
// sFileName - полный путь к файлу
// cIEHead - ссылка на настройку импорта
procedure BeforeImport(cIEHead : comp; sFileName : string);
// эта процедура вызвается после того, как файл с данными для импорта будет закрыт
// sFileName - полный путь к файлу
// cIEHead - ссылка на настройку импорта
procedure AfterImport(cIEHead : comp; sFileName : string);
end;
#end
Добавлено: 05 июл 2007, 15:00
edd
2Ged
Это то я знаю, но хотел использовать "встроенный" галактический инструмент, а не писать свой интерфейс обработки файла для импорта.
Добавлено: 05 июл 2007, 15:13
Ged
А другого пути нет.
Нельзя написать какой то универсальный функционал для ВСЕХ.
Все равно гдето будет кривить.
А дату не понимает скорей всего из-за символов обрамления ""
.
Добавлено: 09 июл 2007, 12:53
edd
Я не знаю как обращаться к полям файла через vip. Поэтому мне гораздо проще было бы добавить в галактическом интерфейсе нужные функции обработки полей.
А про дату вы были правы. В общем я встал, ни своего интерфейса написать, ни функций для импорта вставить в галактическом...
Добавлено: 09 июл 2007, 18:08
Seybukan
А какие функции нужны-то?
Добавлено: 09 июл 2007, 18:49
edward_K
угу а чего нужно то?
и что за текстовый файл? реестр?
если не реестр и сложная шапка то без предобработки его не обойтись. Из dbf в принципе проще подтягивать на порядок.
simportField - вернет значение текущего по порядку импортируемого поля. Все атлантические функции с ним прекрасно работают.
Как вариант можно написать экспорт, а потом его настройку грузануть в импорт - иногда прокатывает.
Добавлено: 10 июл 2007, 10:30
edd
Мне нужны функции для обработки csv-файла с разделителями. Функции, которые пишутся в настройке импорта, во вкладке "Поля заголовка", столбец "формула".
Шапки как таковой нет, её можно не выводить в файл при экспорте из клиент-банка.
Из dbf уже настроил, но как всегда финансистами понадобилось совсем другое, поэтому счас и работаю с файлом *.csv.
К примеру, в этом файле нет назначения платежа (не выводится), но этот файл всегда содержит в себе только комиссии. Поэтому напрашивается вопрос, а как и какую функцию забить, чтобы она всегда бы вставляла для назначений платежа "комиссия"? Что-то типа simportField='комиссия'.
Какую функцию выбрать, чтобы узнать длину данных в поле? length(simportField) не катит.
Напомню, я говорю об импорте.
Добавлено: 10 июл 2007, 11:43
edward_K
1.Нужно точно считать поля, если одно и тоже импортируемое поле поле нужно вставить в несколько мест, то предобработка рулит.
2.Выберите в нужном месте поле "Назначение платежа 1" а в формулу подставте что нужно и все.
3.попробуйте выбирать ""Назначение платежа 2" и в формуле прописать 'DDDD '+string(length(simportfield).
Добавлено: 10 июл 2007, 12:13
edd
edward_K писал(а):...
2.Выберите в нужном месте поле "Назначение платежа 1" а в формулу подставте что нужно и все.
действительно, оказалось достаточно просто прописать 'комиссия'.
И ещё, а почему не тянет сумму платежа? Может опять формат не тот? 6.0000 для галактики не подходит, надо 6,000?
Добавлено: 10 июл 2007, 12:27
edward_K
опять же возможно ошиблись в номере поля.
попробуйте вывести сие в "назначение платежа 2"
6.000 родной формат, а вот запятую придется преобразовывать через replace.
может надо написать trim(simportfield)
Добавлено: 10 июл 2007, 13:38
edd
ОК. Спасибо большое