Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
12 Дек 2017, 19:08
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Загрузка DBF  (Прочитано 2726 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Greiv

  • *
  • Сообщений: 37
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-07-09
  • Сайт: 
  • Профессия: Ученик 1С
Приветствую. Есть файл dbf написал обработку для загрузки его в справочник всё нормально, но есть одна проблема, дело в том что в dbf есть ограничение по длине поля в 254 символа ну по крайней мере его нам так выгружают, и там есть строки которые не помещаются в 254 символа и соответственно он переносится на следующую строкуа мне нужно чтобы данная строка писалась в созданный элемент просто продолжением, а не новым элементом. В таблице есть 2 параметра 3 и 0 так вот если 3 то это новый элемент, а если 0 то это продолжение предидущего, вот только как это всё реализовать в цикле? Надеюсь понятно написал.


Оффлайн дфтын

  • Могу решить ЛЮБУЮ задачу в 1С и не только.. С вопросами в личку:)
  • *****
  • Сообщений: 2720
  • РЕПУТАЦИЯ: 325
  • КПД: 12%
  • 1С наше все
  • Регистрация: 2014-04-29
    • Skype: Soprov1C
  • Компания: Корпорация зонтиков
  • Профессия: Разработчик 1С
Re: Загрузка DBF
« Ответ #1: 17 Фев 2015, 16:54 »
Если параметр = 0 Тогда
Спр.реквизит = Спр.ревзизит + Дбф.поле;
иначе
Спр.Новый();
КонецЕслИ;
Помог? Нажми - Спасибо :)
skype: Soprov1C

Оффлайн Greiv

  • *
  • Сообщений: 37
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-07-09
  • Сайт: 
  • Профессия: Ученик 1С
Re: Загрузка DBF
« Ответ #2: 17 Фев 2015, 17:11 »
Если параметр = 0 Тогда
Спр.реквизит = Спр.ревзизит + Дбф.поле;
иначе
Спр.Новый();
КонецЕслИ;
Вот код не очень понимаю как правильно в него воткнуть это:
&НаСервере
Процедура ЗагрузитьДанныеНаСервере(СтруктураПараметров)

ФайлИмя = ПолучитьИмяВременногоФайла("dbf");
ДанныеХранилища = ПолучитьИзВременногоХранилища(СтруктураПараметров.АдресХранилища);
ДанныеХранилища.Записать(ФайлИмя);
Сообщить(ФайлИмя);
ПереименованыйДБ = "E:\Tmp\db.dbf";
    КопироватьФайл(ФайлИмя, ПереименованыйДБ);
    БазаДанных = Новый XBase;

БазаДанных.ОткрытьФайл(ПереименованыйДБ);

Если БазаДанных.Открыта()=Ложь Тогда
Сообщить("Не удалось открыть файл");
Возврат
КонецЕсли;
//БазаДанных.Первая();
ПовторяющеесяЧисло = БазаДанных.NUMBER;
Счетчик = 0;
Пока БазаДанных.Следующая() Цикл

Счетчик = Счетчик + 1;

СправочникиСоздатьЭл = Справочники.СписокТеррористов.СоздатьЭлемент();
СправочникиСоздатьЭл.Наименование = Счетчик;
СправочникиСоздатьЭл.ФИО = БазаДанных.NAMEU;
СправочникиСоздатьЭл.Описание= БазаДанных.DESCRIPT;
СправочникиСоздатьЭл.КодЦР= БазаДанных.KODCR;
СправочникиСоздатьЭл.КодЦН= БазаДанных.KODCN;
СправочникиСоздатьЭл.АдресМестаРегистрации= БазаДанных.AMR;
СправочникиСоздатьЭл.ФактическийАдрес= БазаДанных.ADRESS;
СправочникиСоздатьЭл.КодДокумента= БазаДанных.KD;
СправочникиСоздатьЭл.СерияДокумента= БазаДанных.SD;
СправочникиСоздатьЭл.НомерДокументаПаспорта= БазаДанных.RG;
СправочникиСоздатьЭл.НомерДокумента= БазаДанных.ND;
СправочникиСоздатьЭл.ВидДокумента= БазаДанных.VD;
СправочникиСоздатьЭл.ДатаРождения= БазаДанных.GR;
СправочникиСоздатьЭл.ГодРождения= БазаДанных.YR;
СправочникиСоздатьЭл.ДатаВнесения= БазаДанных.MR;
СправочникиСоздатьЭл.Директор= БазаДанных.DIRECTOR;
СправочникиСоздатьЭл.Учредитель= БазаДанных.FOUNDER;
//СправочникиСоздатьЭл.ИД= БазаДанных.ROW_ID;
СправочникиСоздатьЭл.ТипУгрозы= БазаДанных.TERRTYPE;
СправочникиСоздатьЭл.ДатаВнесения= БазаДанных.CB_DATE;
СправочникиСоздатьЭл.ДатаЦЕ= БазаДанных.CE_DATE;
Если БазаДанных.TU = 0 Тогда
СправочникиСоздатьЭл.ФИО = СправочникиСоздатьЭл.ФИО+БазаДанных.NAMEU;
СправочникиСоздатьЭл.Описание = СправочникиСоздатьЭл.Описание+БазаДанных.DESCRIPT;
СправочникиСоздатьЭл.Записать();
иначе
СправочникиСоздатьЭл.Записать(); 
КонецЕсли;


Сообщить("Обработано записей "+ Счетчик);

КонецЦикла;
БазаДанных.ЗакрытьФайл();


Сообщить("Загрузка завершена.");
КонецПроцедуры
Там получается что при 3 нужно создать новый элмент, а пока идут нули в таблице нужно писать в строки открытого нового элемента и лишь потом его записывать.

Оффлайн дфтын

  • Могу решить ЛЮБУЮ задачу в 1С и не только.. С вопросами в личку:)
  • *****
  • Сообщений: 2720
  • РЕПУТАЦИЯ: 325
  • КПД: 12%
  • 1С наше все
  • Регистрация: 2014-04-29
    • Skype: Soprov1C
  • Компания: Корпорация зонтиков
  • Профессия: Разработчик 1С
Re: Загрузка DBF
« Ответ #3: 17 Фев 2015, 17:31 »
 Если БазаДанных.TU = 0 Тогда
    СправочникиСоздатьЭл.ФИО         =    СправочникиСоздатьЭл.ФИО+БазаДанных.NAMEU;
    СправочникиСоздатьЭл.Описание     =     СправочникиСоздатьЭл.Описание+БазаДанных.DESCRIPT;
    СправочникиСоздатьЭл.Записать();
   ПРодолжить;
    КонецЕсли;

перед
 СправочникиСоздатьЭл = Справочники.СписокТеррористов.СоздатьЭлемент();
   

Вместо:
  Если БазаДанных.TU = 0 Тогда
    СправочникиСоздатьЭл.ФИО         =    СправочникиСоздатьЭл.ФИО+БазаДанных.NAMEU;
    СправочникиСоздатьЭл.Описание     =     СправочникиСоздатьЭл.Описание+БазаДанных.DESCRIPT;
    СправочникиСоздатьЭл.Записать();
    иначе
    СправочникиСоздатьЭл.Записать(); 
    КонецЕсли;
просто:
СправочникиСоздатьЭл.Записать(); 
Помог? Нажми - Спасибо :)
skype: Soprov1C

Оффлайн Greiv

  • *
  • Сообщений: 37
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-07-09
  • Сайт: 
  • Профессия: Ученик 1С
Re: Загрузка DBF
« Ответ #4: 17 Фев 2015, 21:28 »
 Если БазаДанных.TU = 0 Тогда
    СправочникиСоздатьЭл.ФИО         =    СправочникиСоздатьЭл.ФИО+БазаДанных.NAMEU;
    СправочникиСоздатьЭл.Описание     =     СправочникиСоздатьЭл.Описание+БазаДанных.DESCRIPT;
    СправочникиСоздатьЭл.Записать();
   ПРодолжить;
    КонецЕсли;


перед
 СправочникиСоздатьЭл = Справочники.СписокТеррористов.СоздатьЭлемент();
   

Вместо:
  Если БазаДанных.TU = 0 Тогда
    СправочникиСоздатьЭл.ФИО         =    СправочникиСоздатьЭл.ФИО+БазаДанных.NAMEU;
    СправочникиСоздатьЭл.Описание     =     СправочникиСоздатьЭл.Описание+БазаДанных.DESCRIPT;
    СправочникиСоздатьЭл.Записать();
    иначе
    СправочникиСоздатьЭл.Записать(); 
    КонецЕсли;
просто:
СправочникиСоздатьЭл.Записать(); 

Я не могу поставить условие до того как переменная СправочникиСоздатьЭл будет объявлена, даже если я ещё создаю в начале процедуры в виде Перем СправочникиСоздатьЭл; всё ровно у меня вываливается ошибка "Значение не является значением объектного типа (ФИО)", причем как ведёт себя переменная при объявлении её в таком виде тоже для меня пока загадка, так как в конце у меня всё ровно выполняется процедура Записать, то когда цикл перезапускается то элемент закрыт для записи я так понимаю.  Но всё ровно спасибо за помошь может просто я чего не понял.

Оффлайн дфтын

  • Могу решить ЛЮБУЮ задачу в 1С и не только.. С вопросами в личку:)
  • *****
  • Сообщений: 2720
  • РЕПУТАЦИЯ: 325
  • КПД: 12%
  • 1С наше все
  • Регистрация: 2014-04-29
    • Skype: Soprov1C
  • Компания: Корпорация зонтиков
  • Профессия: Разработчик 1С
Re: Загрузка DBF
« Ответ #5: 17 Фев 2015, 21:39 »
изучайте чему равно  БазаДанных.TU  и когда присваивается.
тут уже чистое программирование.
Помог? Нажми - Спасибо :)
skype: Soprov1C

Оффлайн Greiv

  • *
  • Сообщений: 37
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-07-09
  • Сайт: 
  • Профессия: Ученик 1С
Re: Загрузка DBF
« Ответ #6: 18 Фев 2015, 09:09 »
Вот так решил задачу, может кому пригодится.
&НаСервере
Процедура ЗагрузитьДанныеНаСервере(СтруктураПараметров)


ФайлИмя = ПолучитьИмяВременногоФайла("dbf");
ДанныеХранилища = ПолучитьИзВременногоХранилища(СтруктураПараметров.АдресХранилища);
ДанныеХранилища.Записать(ФайлИмя);
Сообщить(ФайлИмя);
ПереименованыйДБ = "E:\Tmp\db.dbf";
    КопироватьФайл(ФайлИмя, ПереименованыйДБ);
    БазаДанных = Новый XBase;

БазаДанных.ОткрытьФайл(ПереименованыйДБ);
БазаДанных.Кодировка = КодировкаXBase.OEM;
Если БазаДанных.Открыта()=Ложь Тогда
Сообщить("Не удалось открыть файл");
Возврат
КонецЕсли;

Счетчик = 0;
СправочникиСоздатьЭл = Справочники.СписокТеррористов.СоздатьЭлемент();
СправочникиСоздатьЭл.Наименование = Счетчик;
СправочникиСоздатьЭл.ФИО = БазаДанных.NAMEU;
СправочникиСоздатьЭл.Описание= БазаДанных.DESCRIPT;
СправочникиСоздатьЭл.КодЦР= БазаДанных.KODCR;
СправочникиСоздатьЭл.КодЦН= БазаДанных.KODCN;
СправочникиСоздатьЭл.АдресМестаРегистрации= БазаДанных.AMR;
СправочникиСоздатьЭл.ФактическийАдрес= БазаДанных.ADRESS;
СправочникиСоздатьЭл.КодДокумента= БазаДанных.KD;
СправочникиСоздатьЭл.СерияДокумента= БазаДанных.SD;
СправочникиСоздатьЭл.НомерДокументаПаспорта= БазаДанных.RG;
СправочникиСоздатьЭл.НомерДокумента= БазаДанных.ND;
СправочникиСоздатьЭл.ВидДокумента= БазаДанных.VD;
СправочникиСоздатьЭл.ДатаРождения= БазаДанных.GR;
СправочникиСоздатьЭл.ГодРождения= БазаДанных.YR;
СправочникиСоздатьЭл.ДатаВнесения= БазаДанных.MR;
СправочникиСоздатьЭл.Директор= БазаДанных.DIRECTOR;
СправочникиСоздатьЭл.Учредитель= БазаДанных.FOUNDER;
//СправочникиСоздатьЭл.ИД= БазаДанных.ROW_ID;
СправочникиСоздатьЭл.ТипУгрозы= БазаДанных.TERRTYPE;
СправочникиСоздатьЭл.ДатаВнесения= БазаДанных.CB_DATE;
СправочникиСоздатьЭл.ДатаЦЕ= БазаДанных.CE_DATE;
СправочникиСоздатьЭл.Записать();
Пока БазаДанных.Следующая() Цикл

Счетчик = Счетчик + 1;

Если БазаДанных.TU = 3 Тогда
СправочникиСоздатьЭл = Справочники.СписокТеррористов.СоздатьЭлемент();
ИначеЕсли БазаДанных.TU =0 тогда
    СправочникиСоздатьЭл.ФИО        = СправочникиСоздатьЭл.ФИО+" "+БазаДанных.NAMEU;
    СправочникиСоздатьЭл.Описание    = СправочникиСоздатьЭл.Описание+" "+БазаДанных.DESCRIPT;
    СправочникиСоздатьЭл.Записать();
    Продолжить;
иначе
Сообщить("БазаДанных.TU не равна не 0, не 3");
    КонецЕсли;

   

СправочникиСоздатьЭл.Наименование = Счетчик;
СправочникиСоздатьЭл.ФИО = БазаДанных.NAMEU;
СправочникиСоздатьЭл.Описание= БазаДанных.DESCRIPT;
СправочникиСоздатьЭл.КодЦР= БазаДанных.KODCR;
СправочникиСоздатьЭл.КодЦН= БазаДанных.KODCN;
СправочникиСоздатьЭл.АдресМестаРегистрации= БазаДанных.AMR;
СправочникиСоздатьЭл.ФактическийАдрес= БазаДанных.ADRESS;
СправочникиСоздатьЭл.КодДокумента= БазаДанных.KD;
СправочникиСоздатьЭл.СерияДокумента= БазаДанных.SD;
СправочникиСоздатьЭл.НомерДокументаПаспорта= БазаДанных.RG;
СправочникиСоздатьЭл.НомерДокумента= БазаДанных.ND;
СправочникиСоздатьЭл.ВидДокумента= БазаДанных.VD;
СправочникиСоздатьЭл.ДатаРождения= БазаДанных.GR;
СправочникиСоздатьЭл.ГодРождения= БазаДанных.YR;
СправочникиСоздатьЭл.ДатаВнесения= БазаДанных.MR;
СправочникиСоздатьЭл.Директор= БазаДанных.DIRECTOR;
СправочникиСоздатьЭл.Учредитель= БазаДанных.FOUNDER;
//СправочникиСоздатьЭл.ИД= БазаДанных.ROW_ID;
СправочникиСоздатьЭл.ТипУгрозы= БазаДанных.TERRTYPE;
СправочникиСоздатьЭл.ДатаВнесения= БазаДанных.CB_DATE;
СправочникиСоздатьЭл.ДатаЦЕ= БазаДанных.CE_DATE;
СправочникиСоздатьЭл.Записать();

Если Счетчик = 1000 Тогда
Сообщить("Обработано записей "+ Счетчик);
ИначеЕсли Счетчик = 2000 Тогда
Сообщить("Обработано записей "+ Счетчик);
ИначеЕсли Счетчик = 3000 Тогда
Сообщить("Обработано записей "+ Счетчик);
ИначеЕсли Счетчик = 4000 Тогда
Сообщить("Обработано записей "+ Счетчик);
ИначеЕсли Счетчик = 5000 Тогда
Сообщить("Обработано записей "+ Счетчик);
КонецЕсли;

КонецЦикла;
БазаДанных.ЗакрытьФайл();
Сообщить("Загрузка завершена.");
УдалитьИзВременногоХранилища(СтруктураПараметров.АдресХранилища);
УдалитьФайлы(ФайлИмя);
УдалитьФайлы("E:\Tmp\db.dbf");
КонецПроцедуры


Теги:
 

Ошибка при загрузке данных через (Обработка "Выгрузка и загрузка данных XML")

Автор Сергей_87Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 8555
Последний ответ 26 Апр 2012, 23:08
от Dethmontt
загрузка из "клиента банка"

Автор miximlРаздел Пользователям "1С - Предприятие 8"

Ответов: 1
Просмотров: 2682
Последний ответ 19 Июн 2012, 09:49
от miximl
Загрузка в 1С Управление Торговлей 11.1.5.16 электронных выписок из клиент банка "Альфа-Банк"

Автор regnusРаздел Пользователям "1С - Предприятие 8"

Ответов: 0
Просмотров: 11966
Последний ответ 11 Июл 2014, 17:22
от regnus
Проблема с внешней обработкой "Загрузка банк-клиент.erp"

Автор razielРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 6
Просмотров: 2148
Последний ответ 24 Сен 2015, 20:13
от Kironten
Загрузка из "нестандартного" табличного документа (exel) в справочник

Автор uchenichokРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 990
Последний ответ 03 Июн 2016, 07:15
от cska-fanat-kz

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
168 Сообщений
ilyay ilyay
75 Сообщений
oleg-x
55 Сообщений
alex0402
48 Сообщений
andron81_81
42 Сообщений
AIFrame
37 Сообщений
MuI_I_Ika MuI_I_Ika
33 Сообщений
BuhRust
30 Сообщений
Golickoff Golickoff
28 Сообщений
Dima Dddd Dima Dddd
26 Сообщений

* Кто онлайн

  • Точка Гостей: 367
  • Точка Скрытых: 0
  • Точка Пользователей: 7
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal