|
Загрузка в табличную часть документа данных из DBF-файла | ☑ | ||
---|---|---|---|---|
0
Mitka90
07.12.17
✎
08:58
|
Здравствуйте!
Нужно вывести данные в табличную часть документа "ДоговорНаПоставкуГаза" из DBF-файла. Имеются реквизиты в табличной части "Реестр": ЛицевойСчет, ФИО, ПочтовыйИндекс, УчастокОбслуживания, НаселенныйПункт, Улица, НомерДома, НомерКвартиры, НомерКомнаты, ДатаЗаключенияДоговораНаПоставкуГаза, НомерДоговораНаПоставкуГаза, ДатаВыдачиДоговораНаРуки, НомерМобильногоТелефона, НомерДомашнегоТелефона, КодАдресаПоФИАС. Сама база данных просчитывается с помощью подобного кода по нажатию кнопки "Загрузить": Процедура ДействияФормыВыгрузить(Кнопка) Таблица = Новый XBase; Таблица.ОткрытьФайл( "D:\dogovor\выгрузка\281117.dbf", // путь к базе , // путь к индексу Истина // только чтение ); Сообщить("В таблице " + Таблица.КоличествоЗаписей() + " записей."); Сообщить("Таблица имеет кодировку: " + Таблица.Кодировка); Таблица.Первая(); // перешли к первой записи Пока Не Таблица.ВКонце() Цикл Если Не Таблица.ЗаписьУдалена() Тогда Сообщить( Строка(Таблица.LS) + " " + Таблица.FIO + " " + Таблица.INDEX + " " + Таблица.RAION + " " + Таблица.NASPUNKT + " " + Таблица.UL + " " + Таблица.DOM + " " + Таблица.KV + " " + Таблица.KOMNATA + " " + Таблица.DDOG + " " + Таблица.NDOG + " " + Таблица.DVID + " " + Таблица.T_SOT + " " + Таблица.T_DOM + " " + Таблица.KOD ); КонецЕсли; Таблица.Следующая(); // переходим к следующей записи КонецЦикла; Таблица.ЗакрытьФайл(); КонецПроцедуры |
|||
1
Рэйв
07.12.17
✎
09:00
|
Продолжайте наблюдение
|
|||
2
igorPetrov
07.12.17
✎
09:02
|
(0) Здравствуйте!
Если нужно, выводите. |
|||
3
shadow_sw
07.12.17
✎
09:13
|
франчайзи набрали опять студентов? куча тем с глупыми вопросами
(0) пользуемся поиском, все разжевано сто раз |
|||
4
Mitka90
07.12.17
✎
09:14
|
Я вообще-то по существу спрашиваю: как можно осуществить вывод данных в табличную часть документа из DBF-файла?
Для кого-то глупые вопросы, а для кого-то - нет. Не стоить равнять всех под одну гребёнку. |
|||
5
Рэйв
07.12.17
✎
09:16
|
(4)>>как можно осуществить вывод данных в табличную часть документа из DBF-файла
1.прочитать дбф файл 2.найти все соответсвующие ссылки в базе по данным файла 3.заполнить табличную часть |
|||
6
igorPetrov
07.12.17
✎
09:17
|
(4) Так же, как вывод в табличную часть откуда угодно.
В (3) написано правильно, пользуйтесь поиском, не ленитесь. |
|||
7
igorPetrov
07.12.17
✎
09:17
|
(5) +100
|
|||
8
shadow_sw
07.12.17
✎
09:20
|
(4) по существу отвечают же - можно
следующий |
|||
9
shadow_sw
07.12.17
✎
09:21
|
это оказывается вторая часть Вывод в табличную часть данных
|
|||
10
igorPetrov
07.12.17
✎
09:22
|
(9) Ух, ты какой плодовитый!
|
|||
11
hhhh
07.12.17
✎
09:34
|
(4) вы неправы: это называется не вывод, а загрузка.
|
|||
13
shadow_sw
07.12.17
✎
09:42
|
(12) а какой должен быть толк? готовый код на тарелочке?
|
|||
14
Масянька
07.12.17
✎
09:45
|
(0) Если ты программист: на инфостарте есть множество разнообразных загрузок в ТЧ док-та из excel-файла - качай, смотри, разбирайся.
Если ты не программист:на инфостарте есть множество разнообразных загрузок в ТЧ док-та из excel-файла - качай, смотри, разбирайся. Ну, и готовый тебе никто просто не даст (время халявы кончилось). Теперь все стоит денег. |
|||
15
SSSSS_AAAAA
07.12.17
✎
09:50
|
(12)Какой толк ожидается от простого сообщения о наличии чего-то там у тебя? Даже вопроса нет, даже бестолкового.
|
|||
16
Mitka90
08.12.17
✎
09:52
|
Получилось что-то типа такого.
Возник вопрос: как можно в данном случае вывести данные из DBF-файла в одну табличную часть одного документа? Получается так, что данные выводятся не в один документ, а в разный документ по одной строке (если в БД 5 строк, то выводится 5 документов и т.д.). И те поля, у которых значение "Дата", не выводятся никак. Процедура ДействияФормыЗагрузить(Кнопка) //Определим путь файла загрузки Режим = РежимДиалогаВыбораФайла.ВыборКаталога; ДиалогОткрытия = Новый ДиалогВыбораФайла(Режим); ДиалогОткрытия.Каталог = ""; ДиалогОткрытия.МножественныйВыбор = Ложь; ДиалогОткрытия.Заголовок = "Выберите каталог"; Если ДиалогОткрытия.Выбрать() Тогда Путь = ДиалогОткрытия.Каталог; КонецЕсли; //Создаем переменную XBase ДБФ = Новый XBase; //Открываем файл ДБФ.ОткрытьФайл("D:\281117.DBF"); //Проверка на наличие записей Если ДБФ.КоличествоЗаписей() = 0 Тогда Сообщить("Файл данных пуст"); ДБФ.ЗакрытьФайл(); Возврат КонецЕсли; //Переходим на первую строку файла ДБФ.Первая(); Документ = Неопределено; Док = Неопределено; Пока Истина Цикл ЛицевойСчет = ДБФ.LS; ФИО = ДБФ.FIO; ПочтовыйИндекс = ДБФ.INDEX; УчастокОбслуживания = ДБФ.RAION; НаселенныйПункт = ДБФ.NASPUNKT; Улица = ДБФ.UL; НомерДома = ДБФ.DOM; НомерКвартиры = ДБФ.KV; НомерКомнаты = ДБФ.KOMNATA; ДатаЗаключенияДоговораНаПоставкуГаза = ДБФ.DDOG; НомерДоговораНаПоставкуГаза = ДБФ.NDOG; ДатаВыдачиДоговораНаРуки = ДБФ.DVID; НомерМобильногоТелефона = ДБФ.T_SOT; НомерДомашнегоТелефона = ДБФ.T_DOM; КодАдресаПоФИАС = ДБФ.KOD; Если НЕ ДБФ.NDOG = Документ Тогда //Записываем предыдущий документ Если НЕ (Док = Неопределено) Тогда Док.Записать(); КонецЕсли; //Создаем новый документ Док = Документы.ДоговорНаПоставкуГаза.СоздатьДокумент(); //Заполняем реквизиты шапки Док.Дата = ТекущаяДата(); КонецЕсли; // устанавливаете значения реквизитов ТЧ НоваяСтрока = Док.Реестр.Добавить(); НоваяСтрока.ЛицевойСчет = ЛицевойСчет; НоваяСтрока.ФИО = ФИО; НоваяСтрока.ПочтовыйИндекс = ПочтовыйИндекс; НоваяСтрока.УчастокОбслуживания = УчастокОбслуживания; НоваяСтрока.НаселенныйПункт = НаселенныйПункт; НоваяСтрока.Улица = Улица; НоваяСтрока.НомерДома = НомерДома; НоваяСтрока.НомерКвартиры = НомерКвартиры; НоваяСтрока.НомерКомнаты = НомерКомнаты; НоваяСтрока.ДатаЗаключенияДоговораНаПоставкуГаза = ДатаЗаключенияДоговораНаПоставкуГаза; НоваяСтрока.НомерДоговораНаПоставкуГаза = НомерДоговораНаПоставкуГаза; НоваяСтрока.ДатаВыдачиДоговораНаРуки = ДатаВыдачиДоговораНаРуки; НоваяСтрока.НомерМобильногоТелефона = НомерМобильногоТелефона; НоваяСтрока.НомерДомашнегоТелефона = НомерДомашнегоТелефона; НоваяСтрока.КодАдресаПоФИАС = КодАдресаПоФИАС; // Переходим на следующую запись Если не ДБФ.Следующая() Тогда //Если записей больше нет выходим из цикла Прервать; КонецЕсли; КонецЦикла; // записываем последний добавленный Если НЕ (Док = Неопределено) Тогда Док.Записать(); КонецЕсли; КонецПроцедуры |
|||
17
Рэйв
08.12.17
✎
09:53
|
(16)Убери создание документа за цикл и будет тебе счастье
|
|||
18
Масянька
08.12.17
✎
09:54
|
(16) Ты про циклы слышал?
|
|||
19
George Wheels
08.12.17
✎
09:59
|
(16) ДБФ.NDOG всегда <> Документ
|
|||
20
hhhh
08.12.17
✎
10:01
|
(16) да, у тебя всегда
Документ = Неопределено; |
|||
21
Табуретко
08.12.17
✎
10:15
|
(0) позовите специалиста...
|
|||
22
LuciferArh
08.12.17
✎
10:20
|
(21) Специалист денег попросит.
|
|||
23
Mitka90
08.12.17
✎
13:43
|
Получилось вот так. Но ещё не выводятся в табличные части дата заключения договора и дата выдачи договора.
В чём может быть проблема? Процедура ДействияФормыЗагрузить(Кнопка) //Определим путь файла загрузки Режим = РежимДиалогаВыбораФайла.ВыборКаталога; ДиалогОткрытия = Новый ДиалогВыбораФайла(Режим); ДиалогОткрытия.Каталог = ""; ДиалогОткрытия.МножественныйВыбор = Ложь; ДиалогОткрытия.Заголовок = "Выберите каталог"; Если ДиалогОткрытия.Выбрать() Тогда Путь = ДиалогОткрытия.Каталог; КонецЕсли; //Создаем переменную XBase ДБФ = Новый XBase; //Открываем файл ДБФ.ОткрытьФайл("D:\281117.DBF"); //Проверка на наличие записей Если ДБФ.КоличествоЗаписей() = 0 Тогда Сообщить("Файл данных пуст"); ДБФ.ЗакрытьФайл(); Возврат КонецЕсли; //Переходим на первую строку файла ДБФ.Первая(); Документ = Неопределено; Док = Документы.ДоговорНаПоставкуГаза.СоздатьДокумент(); Док.Дата = ТекущаяДата(); Пока Истина Цикл ЛицевойСчет = ДБФ.LS; ФИО = ДБФ.FIO; ПочтовыйИндекс = ДБФ.INDEX; УчастокОбслуживания = ДБФ.RAION; НаселенныйПункт = ДБФ.NASPUNKT; Улица = ДБФ.UL; НомерДома = ДБФ.DOM; НомерКвартиры = ДБФ.KV; НомерКомнаты = ДБФ.KOMNATA; ДатаЗаключенияДоговораНаПоставкуГаза = ДБФ.DDOG; НомерДоговораНаПоставкуГаза = ДБФ.NDOG; ДатаВыдачиДоговораНаРуки = ДБФ.DVID; НомерМобильногоТелефона = ДБФ.T_SOT; НомерДомашнегоТелефона = ДБФ.T_DOM; КодАдресаПоФИАС = ДБФ.KOD; Если НЕ ДБФ.NDOG = Документ Тогда //Записываем предыдущий документ Если НЕ (Док = Неопределено) Тогда Док.Записать(); КонецЕсли; КонецЕсли; // устанавливаете значения реквизитов ТЧ НоваяСтрока = Док.Реестр.Добавить(); НоваяСтрока.ЛицевойСчет = ЛицевойСчет; НоваяСтрока.ФИО = ФИО; НоваяСтрока.ПочтовыйИндекс = ПочтовыйИндекс; НоваяСтрока.УчастокОбслуживания = УчастокОбслуживания; НоваяСтрока.НаселенныйПункт = НаселенныйПункт; НоваяСтрока.Улица = Улица; НоваяСтрока.НомерДома = НомерДома; НоваяСтрока.НомерКвартиры = НомерКвартиры; НоваяСтрока.НомерКомнаты = НомерКомнаты; НоваяСтрока.ДатаЗаключенияДоговораНаПоставкуГаза = ДатаЗаключенияДоговораНаПоставкуГаза; НоваяСтрока.НомерДоговораНаПоставкуГаза = НомерДоговораНаПоставкуГаза; НоваяСтрока.ДатаВыдачиДоговораНаРуки = ДатаВыдачиДоговораНаРуки; НоваяСтрока.НомерМобильногоТелефона = НомерМобильногоТелефона; НоваяСтрока.НомерДомашнегоТелефона = НомерДомашнегоТелефона; НоваяСтрока.КодАдресаПоФИАС = КодАдресаПоФИАС; // Переходим на следующую запись Если не ДБФ.Следующая() Тогда //Если записей больше нет выходим из цикла Прервать; КонецЕсли; КонецЦикла; // записываем последний добавленный Если НЕ (Док = Неопределено) Тогда Док.Записать(); КонецЕсли; КонецПроцедуры |
|||
24
Табуретко
08.12.17
✎
13:55
|
а значение полей с датами в дбф как выглядит?
|
|||
25
3achem
08.12.17
✎
14:10
|
Да это жостко
|
|||
26
LuciferArh
08.12.17
✎
14:11
|
Какая прэлэсть... Не код, а сказка... Две трети выкинуть можно смело.
|
|||
27
Mitka90
08.12.17
✎
17:06
|
Всё, получилось! Я решил проблему путём удаления старой формы документа и создания новой.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |