![]() |
![]() |
![]() |
|
Загрузка с dbf файла табличную часть документа | ☑ | ||
---|---|---|---|---|
0
чувак
19.10.04
✎
12:14
|
Как загрузить с dbf файла табличную часть документа ?
|
|||
1
kuzmich
19.10.04
✎
12:16
|
(0) очень просто...:)))
|
|||
2
Мулька
19.10.04
✎
12:17
|
Так то получше, однако.
1 - руками 2 - программно |
|||
3
чувак
19.10.04
✎
12:21
|
нужно программно
|
|||
4
Мулька
19.10.04
✎
12:22
|
(3) 500 000 центов (Бекас)
|
|||
5
bob89
19.10.04
✎
12:22
|
Таб = СоздатьОбъект("XBase");
Таб.ОткрытьФайл(<Файл>); Таб.Первая(); Пока Таб.ВКонце() = 0 цикл Док.НоваяСТрока() ... и т.д. КонецЦикла; Таб.Закрыть(); Примерно так будет программно. |
|||
6
чувак
19.10.04
✎
12:27
|
вы не поняли! излагаю.
1. Сначало надо создать новый документ. 2. Загружать Шапку 3. Загружать табличную часть. 4. СОхранить и провести документ. и все дела. |
|||
7
roman
naïve
19.10.04
✎
12:29
|
(6) ну тогда 10$
|
|||
8
France
19.10.04
✎
12:29
|
(6) действительно "и все дела"... ну так, кто ж мешает..
|
|||
9
ОFF
19.10.04
✎
12:29
|
Я что то пропустил?
|
|||
10
Мишка на сеРвере
19.10.04
✎
12:31
|
Почитай ЖКК, или нажми Ctrl-F1, там все описано.
|
|||
11
чувак
19.10.04
✎
12:31
|
Ну у меня не получается.
|
|||
12
bob89
19.10.04
✎
12:33
|
(11) а как ты делаешь?
|
|||
13
roman
naïve
19.10.04
✎
12:33
|
а че именно не получается?
|
|||
14
чувак
19.10.04
✎
12:34
|
SOS!
Кто нибудь можеть мне дать алгоритм! Вопрос жизни и смерти. |
|||
15
Den
19.10.04
✎
12:34
|
Ты ж его сам себе дал в (6)
|
|||
16
roman
naïve
19.10.04
✎
12:35
|
есть, но из екселя?
|
|||
17
чувак
19.10.04
✎
12:35
|
не помогает!
|
|||
18
Den
19.10.04
✎
12:37
|
Слушай, чувак, ты сам спросил, сам ответил, чего еще тебе надо??? Попробуй объяснить толком, глядишь и сам все поймешь :)
|
|||
19
Diter
19.10.04
✎
12:38
|
(17) Давай по порядку. Чего ты делаешь и чего не получается
|
|||
20
Den
19.10.04
✎
12:40
|
А вообще в (5) описан пункт 3 из (6). Тебе остается дописать пункт 1, пункт 2 и пункт 4. Два из трех пишутся в одну строчку, а вот второй пункт можно растянуть на много, смотря какая шапка
|
|||
21
чувак
19.10.04
✎
12:54
|
Так вот!
Есть кустарная программа на FOX PRO эпохы DOSа. Там есть DBF файл. Там ШАПКА И ТАБ. ЧАСТЬ находятся в одной строке. Например: Номердок | Датадок | Товар | Цена |Кол | Сумма 111 01.01.04 Чупа чупс 100-00 10 1000-00 111 01.01.04 Тик так 200-00 10 3000-00 111 01.01.04 Бим бом 300-00 10 3000-00 222 01.01.04 Галоши 111-00 10 1100-00 222 01.01.04 Сапоги 222-00 10 2200-00 222 01.01.04 Валенки 333-00 10 3300-00 А теперь внимание! Что надо! 1. СОздать новый документ. 2. Загружать шапку. 3. Загружать ТАБ. ЧАСТЬ // Здесь и начинаются проблемы, у меня для каждой строки создаеться новый документ. |
|||
22
SiMazx
19.10.04
✎
12:56
|
У тебя же есть колонка "номердок"... Религия не позволяет отследить смену номера?
|
|||
23
bob89
19.10.04
✎
12:56
|
Ты, наверное его создаешь в цикле! Вынеси создание документа перед циклом (5).
|
|||
24
SiMazx
19.10.04
✎
12:57
|
(22)+ смотри в ЖКК метод НоваяСтрока для Документа...
|
|||
25
чувак
19.10.04
✎
13:04
|
Таб = СоздатьОбъект("XBase");
Таб.ОткрытьФайл(<Файл>); Таб.Первая(); Пока Таб.ВКонце() = 0 цикл НомерДок=Таб.НомерДок. ДатаДок=Таб.ДатаДок. Пока ? цикл Док.НоваяСТрока() КонецЦикла; КонецЦикла; Как быть с вторым циклем? |
|||
26
чувак
19.10.04
✎
13:08
|
алло.
|
|||
27
bob89
19.10.04
✎
13:11
|
Я бы сделал так: в foxpro сделал простенький sql-запрос, в результате которого получил бы другую таблицу, содержащую тоько шапки документов.
В командном окне foxpro: select distinct <номердок>,<датадок>,<реквизшапки1>,<реквизитшапки2> from <таблица2> into <таблица1> Затем нужно открыть в 1с 2 таблицы. Шапки доков грузить из 1-ой, а строки из второй. В результате в 1с создается не один док., а столько, сколько выгрузится в шапки.dbf -> судя по тому, что описано в (21) это правильно. |
|||
28
France
19.10.04
✎
13:13
|
(27) ему и так плохо, а ты его добиваеш..
реально сделать как в (22)... |
|||
29
чувак
19.10.04
✎
13:14
|
Я в FOX PRO ничего не смыслю
|
|||
30
чувак
19.10.04
✎
13:19
|
Я у Вас еще новенький
ЖКК это Синтаксис помощник? |
|||
31
неМногоЗнайка
19.10.04
✎
13:19
|
до входа во второй цикл сохрани номер документа
гоняй цикл пока номер документа не изменен внутри этого цикла новую строку добавляй как НоваяСтрока() если у тебя могут быть доки с одинаковыми номерами в разные дни, то придется еще хранить и дату, и соответственно проверять и дату тоже... успехов |
|||
32
чувак
19.10.04
✎
13:22
|
Алгортима сможешь дать?
|
|||
33
Оборотень
19.10.04
✎
13:23
|
к (25) вроде бы примерно так нужно
Таб = СоздатьОбъект("XBase"); Таб.ОткрытьФайл(<Файл>); Таб.Первая(); Пока Таб.ВКонце() = 0 цикл НомерДок=Таб.НомерДок; ДатаДок=Таб.ДатаДок; СтарыйНомерДок=НомерДок; Пока СтарыйНомерДок=НомерДок цикл Док.НоваяСТрока() Таб.Следующая(); НомерДок=Таб.НомерДок; КонецЦикла; КонецЦикла; |
|||
34
roman
naïve
19.10.04
✎
13:26
|
ТЗШ=СоздатьОбъект("ТаблицаЗначений");
ТЗТ=СоздатьОбъект("ТаблицаЗначений"); ТЗШ.НоваяКолонка("Номер"); ТЗТ.НоваяКолонка("Дата"); Таб = СоздатьОбъект("XBase"); Таб.ОткрытьФайл(<Файл>); Таб.Первая(); Пока Таб.ВКонце() = 0 цикл ТЗШ.НоваяСтрока(); ТЗТ.НоваяСтрока(); ТЗШ=Таб.НомерДок; ТЗТ.Номер=Таб.НомерДок; ТЗТ.Дата=Таб.ДатаДок; КонецЦикла; ТЗШ.Свернуть("Номер"); Для Ш=1 по ТЗШ.КоличествоСтрок() Цикл //Добавляем документ Для Щ=1 по ТЗТ.КоличествоСтрок() Цикл //.....Добавляем Новую строку КонецЦикла; //Записываем и проводим документ КонецЦикла; |
|||
35
чувак
19.10.04
✎
13:31
|
Народ, спасибо!
|
|||
36
romix
19.10.04
✎
13:34
|
||||
37
France
19.10.04
✎
13:41
|
//*******************************************
Процедура Сформировать() ДБФ = СоздатьОбъект("XBase"); Док = СоздатьОбъект("МойДокумент"); ДБФ.ОткрытьФайл("ПутьКВашейБазе"); НомерДокТекущий = ""; Если ДБФ.Открыта()= 1 Цикл ДБФ.Первая(); Док.Новый(); Док.НомерДок = ДБФ.НомерДок; Док.ДатаДок = ДБФ.ДатаДок; Пока ДБФ.Следующая() = 1 Цикл Если ДБФ.НомерДок <> НомерДокТекущий Тогда Док.Новый(); Док.НомерДок = ДБФ.НомерДок; Док.ДатаДок = ДБФ.ДатаДок; НомерДокТекущий = ДБФ.НомерДок; КонецЕсли; Док.Товар = ДБФ.Товар; Док.Цена = ДБФ.Цена; Док.Кол = ДБФ.Кол; Док.Сумма = ДБФ.Сумма; КонецЦикла; КонецЕсли; КонецПроцедуры Не проверял.. но должон работать |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |