Имя: Пароль:
1C
 
Загрузка с 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 Цикл  
           Если ДБФ.НомерДок <> НомерДокТекущий Тогда
               Док.Новый();
               Док.НомерДок = ДБФ.НомерДок;
               Док.ДатаДок = ДБФ.ДатаДок;    
               
               НомерДокТекущий = ДБФ.НомерДок;
           КонецЕсли;
           Док.Товар    = ДБФ.Товар;
           Док.Цена    = ДБФ.Цена;
           Док.Кол        = ДБФ.Кол;
           Док.Сумма    = ДБФ.Сумма;
       КонецЦикла;
   КонецЕсли;
КонецПроцедуры

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