Выгрузка в DBF

1. r.sergey 05.12.12 11:08 Сейчас в теме
Добрый день. Пытаюсь выгрузить и ЗиК в DBF реестры по зарплате в Сбербанк. Наш сбер требует чтобы в поле SUMMA цифры были прижаты вправо (по умолчанию все прижато влево). Подскажите где это можно указать при выгрузке.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. AlexO 136 05.12.12 11:59 Сейчас в теме
(1) r.sergey,
а что, формат БД позволяет делать ФОРМАТИРОВАНИЕ содержащихся в нем данных?
Объясните им на пальцах, что форматированием (прижатием-ужатием, курсивом-подчеркиванием) занимается элемент вывода данных, а не БД (файл данных).
Пусть у себя в программе просмотра включат выравнивание вправо.
5. dusha0020 1120 05.12.12 12:06 Сейчас в теме
(1) r.sergey, Требование банка кроме как идиотским не назовешь, так как отображение при просмотре ДБФ зависит от того на чем смотреть. Однако, у меня сильное подозрение, что поле SUMMA у Вас не числового (Numeric в терминах ДБФ) типа. Тогда идиотской придется назвать Вашу выгрузку...
Прилепите ка образец файла выгрузки, чтобы можно сравнить с какого края у кого будт стоять цифры в поле SUMMA.
6. AlexO 136 05.12.12 12:12 Сейчас в теме
(5) dusha0020,
идиотской придется назвать Вашу выгрузку

а уже боюсь критиковать студентов - или нахамят в ответ, или нажалуются, или разбегутся :)
25. NCMax 19.12.12 11:10 Сейчас в теме
ВыходнойТекст.SUMMA = Число(СокрЛП(Сумма));

а теперь, разбор полётов... ))
во-первых: Сумма у тебя ДОЛЖНА быть ЧИСЛОМ уже прописана! Посмотри в конфигураторе -> реквизиты шапки, по умолчанию во всех конфигурациях (не переделаных) она есть ЧИСЛОМ!
во-вторых: в файле *.DBF поле ДОЛЖНО быть "Numeric", а у Вас (1) r.sergey, оно СТРОКОВОЕ!

после переделки формула должна быть:

ВыходнойТекст.SUMMA = Сумма;
2. ivsher 05.12.12 11:40 Сейчас в теме
Никогда не думал что в дбф принципиально выравнивание при отоброжении файла. Интересно вообще для чего им это надо. Формат дбф это ведь не для отображения информации а для хранения и передачи. А как эту информацию отображать дело десятое. Ну а если по существу, то я в редакторах дбф файлов заметил такую закономерность, все поля типа "строка" выравниваются по левому краю, а типа "число" по правому. Возможно у вас поле "SUMMA" как раз и есть строка. Тогда поменяйте ему тип на "число".
4. AlexO 136 05.12.12 12:00 Сейчас в теме
(2) ivsher,
то я в редакторах дбф файлов заметил такую закономерность

это просто сделано разработчиками вьюверов, чтобы вам было проще ориентироваться в таблице.
К тому же, наверняка эти настройки можно поменять.
7. AlexShap 2 05.12.12 12:13 Сейчас в теме
Это сто процентов строковое значение формируете. Переведите в числовое значение. Функция ЧИСЛО()
8. r.sergey 05.12.12 14:16 Сейчас в теме
Не спорю, в Сбере придурки, но сказали, что по левому выравниванию не пойдет только по правому.
Спасибо за советы. Ставил поле в числовое значение, не помогает. Вот код:
ВыходнойТекст.ДобавитьПоле("SUMMA","N",10,0);

ВыходнойТекст.SUMMA = СокрЛП(Формат(Сумма, "Ч15.2,"));
23. falcon 12.12.12 21:03 Сейчас в теме
(8) r.sergey
ВыходнойТекст.SUMMA = СокрЛП(Формат(Сумма, "Ч15.2,"));

н-да...
в ДБФ нет выравнивания.. во вьюверах по обыкновению.... по левому краю - строки
по правому - числа...
неудивительно что они на тебе ругаются... ты им вместо числа строку суешь....
9. r.sergey 05.12.12 14:22 Сейчас в теме
Ссори, поспешил. В таком виде прижимается вправо, но пропадают копейки.
11. zachs 5 05.12.12 14:34 Сейчас в теме
(9) r.sergey,

Конечно пропадают, ведь в коде
ВыходнойТекст.ДобавитьПоле("SUMMA","N",10,0);
количество знаков после запятой 0 стоит.
10. ADirks 187 05.12.12 14:31 Сейчас в теме
Так-то числовые поля в DBF хранятся в виде текста, и там вполне себе возможно выравнивание по правому краю. И соответственно их вьюер может показывать поля as is. Вот только для этого придётся не 1с-кой их создавать. В общем, попал ТС.
Уж не знаю, насколько это критично для сберовского софта, но там же тётечки сидят, а им надо чтобы всё было так, и точка.
12. r.sergey 05.12.12 14:35 Сейчас в теме
Еще раз ссори, все получилось. Поставил "SUMMA","N",10,2 и ВыходнойТекст.SUMMA = Сумма; Вышло то что надо)))
13. r.sergey 05.12.12 14:36 Сейчас в теме
Интересно, а если они завтра запросят по ЦЕНТРУ выравнять?
14. AlexO 136 05.12.12 17:03 Сейчас в теме
(13) r.sergey,
не попросят, потому что они так же, как и вы - открывают и видят: вправо ушло - значит, число; влево - строка.
15. kiser 05.12.12 17:35 Сейчас в теме
СокрЛП() преобразует в строку, поэтому у вас и выгружалось как строка, отсюда и выравнивание влево
16. dusha0020 1120 05.12.12 17:54 Сейчас в теме
(15) kiser,А это
.ДобавитьПоле("SUMMA","N",10,0);
когда объект XBase создается для красоты пишут????
17. kiser 05.12.12 17:58 Сейчас в теме
(16) dusha0020, вот и я не совсем понял как у вас вообще строка в числовое поле записалась
18. dusha0020 1120 05.12.12 18:06 Сейчас в теме
(17) kiser, Это не у нас:
Ставил поле в числовое значение, не помогает. Вот код: 
ВыходнойТекст.ДобавитьПоле("SUMMA","N",10,0); 

,
В таком виде прижимается вправо, но пропадают копейки.
Очевидно в момент создания поста вместо "N" стояло "S", ну а потом даже почему копейки пропадают разобрались:)
26. NCMax 19.12.12 11:18 Сейчас в теме
(18) dusha0020,
копейки пропадают, потому что "точность" стоит нулём! А нужно "2".

ВыходнойТекст.ДобавитьПоле("SUMMA","N",10,2);
28. dusha0020 1120 19.12.12 11:40 Сейчас в теме
(26) NCMax, Вы флудите или просто (11) не читали?
30. NCMax 19.12.12 11:44 Сейчас в теме
(28) dusha0020,
извиняюсь проскочил при прочитке )
19. dusha0020 1120 05.12.12 18:08 Сейчас в теме
(17) kiser, Это я к тому, что СокрЛП() для присваиваемого значения если поле нумерик в дбф задано его тип не изменит.
20. Кошки рулят 05.12.12 19:14 Сейчас в теме
21. brunet 40 05.12.12 19:16 Сейчас в теме
В самом DBF ФАЙЛЕ нет выравнивания. Там све строки выравниваются по левому краю.
22. AlexShap 2 06.12.12 16:59 Сейчас в теме
Так у вас в таком виде заработало?

ВыходнойТекст.SUMMA = Число(Сумма); 
27. r.sergey 19.12.12 11:36 Сейчас в теме
(22) AlexShap, Нет , я поставил:
ВыходнойТекст.SUMMA = Сумма; 

уже поле прописанно как число.
Не знаю чем они проверяют выравнивание, но открывают и смотрят файл в Exel, и если там не выровнянно по правому краю, бракуют)))
29. NCMax 19.12.12 11:43 Сейчас в теме
(27) r.sergey,
...Сумма у тебя ДОЛЖНА быть ЧИСЛОМ...


смотрел в кофигураторе?
31. falcon 19.12.12 15:01 Сейчас в теме
(27) r.sergey,
и правильно делают... числа в экселе, по умолчанию, выравниваются по правому краю...
24. EdwardXot 13.12.12 00:54 Сейчас в теме
Даааа, это называется "Нашла коса на камень". Одни не понимают и не могут объяснить, что хотят, а другие не понимают, что делают (в смысле кодируют, программированием это не назовешь).

P.S. Одно имя переменной чего стоит: "ВыходнойТекст" для объекта типа XBASE...
Оставьте свое сообщение

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