|
Загрузка из DBF в документ ПоступлениеТоваровУслуг | ☑ | ||
---|---|---|---|---|
0
azeml
15.12.13
✎
15:27
|
Здравствуйте ........! Вот такая проблема!
Выгружают ДБФ из реализации все оки, а загрузить НЕ Выходит конкретнее, загрузка получается только в каждый документ оно лепит только 1-на позицию, а если в документе есть 2-е и более позиций не получается как закачать все позиции? БД = Новый XBase; БД.ОткрытьФайл("C:\Tovaru.dbf"); Орг = Справочники.Организации.НайтиПоКоду("000000001"); КонтАг = Контр123; ДогКонт = ДогКонт123; сч = 0; НомерДок = БД.DATA; Пока БД.Следующая() Цикл док=Документы.ПоступлениеТоваровУслуг.СоздатьДокумент(); док.Контрагент = КонтАг; док.Организация = Орг; док.ДоговорКонтрагента = ДогКонт123; док.Дата = БД.DATA; сч = сч +1; ТабЧасТов = док.Товары.Добавить(); ТабЧасТов.Номенклатура = БД.Nom; ТабЧасТов.Количество = БД.Kol; ТабЧасТов.Цена = БД.Price; док.Комментарий =БД.Koment; док.Записать(); Сообщить(сч); КонецЦикла; БД.ЗакрытьФайл(); |
|||
1
vicof
15.12.13
✎
15:44
|
вынести создание документа за цикл
|
|||
2
azeml
15.12.13
✎
15:55
|
(1) а что это даст?
|
|||
3
Oleg_ka
15.12.13
✎
16:00
|
Лучше 40 раз по разу, чем ни разу 40 раз?
Это даст создание документа только один раз... Ну и Записать и Коммент под цикл вынести. |
|||
4
MKZM
15.12.13
✎
16:02
|
док.Записать(); тоже
|
|||
5
azeml
15.12.13
✎
16:02
|
(3) так у меня ведь не 1 документ!
|
|||
6
George Wheels
15.12.13
✎
16:08
|
(5) Ну так отсортируй по БД.Nom и отслеживай его изменение.
|
|||
7
Oleg_ka
15.12.13
✎
16:09
|
Тогда при выгрузке добавь еще одно поле - номер документа (реализации).
При загрузке будешь смотреть: если в полученной строке номер НЕ такой как в предыдущей - делаем новый документ, иначе добавляем в старый... Код писать НЕ буду так как он очень легкий... как-то так... |
|||
8
George Wheels
15.12.13
✎
16:09
|
(6) Нет. Поторопился. Думал БД.Nom это номер документа.
|
|||
9
azeml
15.12.13
✎
16:25
|
(7) Загружаю я в 2 базы одна шапка друга товари.И пробовали пусти проверку но не получилось.
БДШ = Новый XBase; БДШ.ОткрытьФайл("C:\shapka.dbf"); БД = Новый XBase; БД.ОткрытьФайл("C:\Tovaru.dbf"); Орг = Справочники.Организации.НайтиПоКоду("000000001"); КонтАг = Контр123; ДогКонт = ДогКонт123 ; сч = 0; НомерДок = БД.KOD; НомерДок1 = БДШ.KOD; Пока БД.Следующая() Цикл док=Документы.ПоступлениеТоваровУслуг.СоздатьДокумент(); НомерДок = БД.KOD; НомерДок1 = БДШ.KOD; док.Контрагент = КонтАг; док.Организация = Орг; док.ДоговорКонтрагента = ДогКонт123; док.Дата = БД.DATA ; сч = сч +1 ; Сообщить(сч); Пока Истина Цикл Если НомерДок = НомерДок1 Тогда ТабЧасТов = док.Товары.Добавить(); ТабЧасТов.Номенклатура = БД.Nom; ТабЧасТов.Количество = БД.Kol; ТабЧасТов.Цена = БД.Price; Иначе ТабЧасТов = док.Товары.Добавить(); ТабЧасТов.Номенклатура = БД.Nom; ТабЧасТов.Количество = БД.Kol; ТабЧасТов.Цена = БД.Price; док.Комментарий =БД.Koment; док.Записать(); КонецЕсли; КонецЦикла; сч = сч + 1; Сообщить(сч); КонецЦикла; БД.ЗакрытьФайл(); В чем ошибка? |
|||
10
azeml
15.12.13
✎
17:25
|
Процедура КнопкаВыполнитьНажатие(Кнопка)
БДШ = Новый XBase; БДШ.ОткрытьФайл("C:\shapka.dbf"); БД = Новый XBase; БД.ОткрытьФайл("C:\Tovaru.dbf"); Орг = Справочники.Организации.НайтиПоКоду("000000001"); КонтАг = Контр123; ДогКонт = ДогКонт123 ; сч = 0; НомерДок = БД.KOD; НомерДок1 = БДШ.KOD; Сообщить(НомерДок); Сообщить(НомерДок1); Пока БД.Следующая() Цикл Пока БДШ.Следующая() Цикл НомерДок2 = БД.KOD; НомерДок3 = БДШ.KOD; Сообщить(НомерДок2); Сообщить(НомерДок3); док=Документы.ПоступлениеТоваровУслуг.СоздатьДокумент(); док.Контрагент = КонтАг; док.Организация = Орг; док.ДоговорКонтрагента = ДогКонт123; док.Дата = ТекущаяДата() ; док.ОтражатьВБухгалтерскомУчете = Истина; док.ОтражатьВУправленческомУчете = Истина; док.ВалютаДокумента = Справочники.Валюты.НайтиПоНаименованию("грн"); сч = сч +1 ; номен = БД.Nom; Номенклат = Справочники.Номенклатура.НайтиПоНаименованию(номен); Един = БД.ED; Единиц = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию(Един); Если НомерДок = НомерДок1 Тогда ТабЧасТов = док.Товары.Добавить(); ТабЧасТов.Номенклатура = Номенклат; ТабЧасТов.Количество = БД.Kol; ТабЧасТов.Цена = БД.Price; ТабЧасТов.ЕдиницаИзмерения = Единиц; ТабЧасТов.Коэффициент = "1"; Иначе ТабЧасТов = док.Товары.Добавить(); ТабЧасТов.Номенклатура = Номенклат; ТабЧасТов.Количество = БД.Kol; ТабЧасТов.Цена = БД.Price; ТабЧасТов.ЕдиницаИзмерения = Единиц; ТабЧасТов.Коэффициент = "1"; КонецЕсли; док.Комментарий =БДШ.Koment; док.Записать(); Сообщить(сч); КонецЦикла; КонецЦикла; БД.ЗакрытьФайл(); КонецПроцедуры |
|||
11
azeml
15.12.13
✎
17:25
|
В чем ошибка?
|
|||
12
Wobland
15.12.13
✎
17:50
|
а зачем такие разные ветки в Если НомерДок = НомерДок1 Тогда
|
|||
13
azeml
15.12.13
✎
23:47
|
(12) два DBF
Сравнение.Это есть уникальный ключ. номер документа |
|||
14
hhhh
16.12.13
✎
02:14
|
(13) ну та же самая ошибка, вы же ничего не поменяли.
док=Документы.ПоступлениеТоваровУслуг.СоздатьДокумент(); у вас происходит в каждой строчке dbf. Поэтому в каждом документе ровно одна строка. Почему вы ожидаете, что в документе будет 2 строки? |
|||
15
azeml
16.12.13
✎
02:47
|
Пока БД.Следующая() Цикл
НомерДок2 = БД.KOD; НомерДок3 = БДШ.KOD; Сообщить(НомерДок2); Сообщить(НомерДок3); док=Документы.ПоступлениеТоваровУслуг.СоздатьДокумент(); док.Контрагент = КонтАг; док.Организация = Орг; док.ДоговорКонтрагента = ДогКонт123; док.Дата = ТекущаяДата() ; док.ОтражатьВБухгалтерскомУчете = Истина; док.ОтражатьВУправленческомУчете = Истина; док.ВалютаДокумента = Справочники.Валюты.НайтиПоНаименованию("грн"); сч = сч +1 ; номен = БД.Nom; Номенклат = Справочники.Номенклатура.НайтиПоНаименованию(номен); Един = БД.ED; Единиц = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию(Един); Пока БДШ.Следующая() Цикл Если НомерДок = НомерДок1 Тогда ТабЧасТов = док.Товары.Добавить(); ТабЧасТов.Номенклатура = Номенклат; ТабЧасТов.Количество = БД.Kol; ТабЧасТов.Цена = БД.Price; ТабЧасТов.ЕдиницаИзмерения = Единиц; ТабЧасТов.Коэффициент = "1"; Иначе ТабЧасТов = док.Товары.Добавить(); ТабЧасТов.Номенклатура = Номенклат; ТабЧасТов.Количество = БД.Kol; ТабЧасТов.Цена = БД.Price; ТабЧасТов.ЕдиницаИзмерения = Единиц; ТабЧасТов.Коэффициент = "1"; КонецЕсли; док.Комментарий =БДШ.Koment; док.Записать(); Сообщить(сч); КонецЦикла; КонецЦикла; |
|||
16
Oleg_ka
16.12.13
✎
06:25
|
Из какой конфигурации в какую пытаемся делать перенос данных?
|
|||
17
azeml
16.12.13
✎
21:10
|
УПП в УПП
|
|||
18
zladenuw
16.12.13
✎
22:21
|
(17) чего не использовать универсальную обработку выгрузки и загрузки хмл. вернее выгрузка и загрузка в идентичную конфигурацию.
|
|||
19
Grobik
16.12.13
✎
22:32
|
(18) +100
Если не устраивает http://programmist1s.ru/perenos-dannyih-1s/ Есть 100500 однокнопочных вариантов на инфостарте типа http://infostart.ru/public/195701/ Зачем мучить свой мозг DBF, да еще при малой его массе? |
|||
20
Grobik
16.12.13
✎
22:33
|
ВыгрузкаЗагрузкаДанныхXML82
|
|||
21
zladenuw
16.12.13
✎
22:36
|
(19) я так в рабочию догружал данные. когда люди на копии работали. все нормально и без гемора. заняло 5 минут :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |