8.х ОБМЕН Загрузка списка из dbf

Тема в разделе "Обмен данными в "1С:Предприятие 8"", создана пользователем mokswolf, 14 окт 2010.

  1. TopicStarter Overlay
    mokswolf
    Offline

    mokswolf

    Регистрация:
    14 окт 2010
    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    1
    Извиняюсь за такой вопрос, но возникла проблема.
    При повторной загрузке данных из dbf происходит дублирование, что не допустимо.
    Как сделать провеку по всем ФИО+ДР?
  2. PavelBaryshev
    Offline

    PavelBaryshev Опытный в 1С

    Регистрация:
    9 сен 2008
    Сообщения:
    316
    Симпатии:
    0
    Баллы:
    26
    Код пакажи?

    Для каждого ТекСтрока Из ДБ Цикл
    Если Не ДБ.ФИО = Справочник.ФизическиеЛица.Наименование Тогда

    КонецЕсли;
    КонецЦикла

    примерно так!
  3. TopicStarter Overlay
    mokswolf
    Offline

    mokswolf

    Регистрация:
    14 окт 2010
    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    1
    ФайлПациенты = Новый XBase;
    ФайлПациенты.Кодировка = КодировкаXBase.OEM;
    ФайлПациенты.ОткрытьФайл("D:\1C\1Cv8\Амбулатория\CSM.DBF");

    Если ФайлПациенты.Открыта() тогда
    Предупреждение("База Открыта",2);

    РезультатПоиска = Справочники.Пациенты.НайтиПоРеквизиту("Фамилия","Шумилина");

    ФайлПациенты.Первая();
    Пока Не ФайлПациенты.ВКонце() Цикл

    Если РезультатПоиска = Справочники.Пациенты.ПустаяСсылка() Тогда

    Пациент = Справочники.Пациенты.СоздатьЭлемент();
    Пациент.Фамилия = СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("FIRSTNAME"));
    Пациент.Имя = СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("NAME"));
    Пациент.Отчество = СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("SECNAME"));
    Пациент.ДатаРождения = СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("DATEBDAY"));
    Пациент.КодСНИЛС = СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("SNILS"));
    Пациент.СтатусПрикрепления = Справочники.СтатусПрикрепления.ПрикрепленныеПациенты;
    Пациент.НомерСтраховогоПолиса = СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("NPOLICY"));
    Пациент.СерияСтраховогоПолиса = СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("SPOLICY"));
    Пациент.ДатаНачалаПолиса = СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("DPOLICY"));
    Пациент.СрокДействияПолиса = СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("ENDPOLICY"));
    Пациент.Город = СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("NPREF"));
    Пациент.Улица = СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("STRETREF"));
    Пациент.Дом = СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("HOUSE"));
    Пациент.Квартира = СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("FLAT"));
    Пациент.КраткоеПредставление = СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("NPNAME"));
    Пациент.КатегорияСтатуса = СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("STATUS"));
    Пациент.КодСтраховойКомпании = СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("CMOCOD"));
    Пациент.Записать();

    Иначе

    Объект = РезультатПоиска.ПолучитьОбъект();
    Объект.ДатаРождения=СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("DATEBDAY"));
    Объект.КодСНИЛС = СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("SNILS"));
    Объект.СтатусПрикрепления = Справочники.СтатусПрикрепления.ПрикрепленныеПациенты;
    Объект.НомерСтраховогоПолиса = СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("NPOLICY"));
    Объект.СерияСтраховогоПолиса = СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("SPOLICY"));
    Объект.ДатаНачалаПолиса = СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("DPOLICY"));
    Объект.СрокДействияПолиса = СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("ENDPOLICY"));
    Объект.Город = СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("NPREF"));
    Объект.Улица = СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("STRETREF"));
    Объект.Дом = СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("HOUSE"));
    Объект.Квартира = СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("FLAT"));
    Объект.КраткоеПредставление = СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("NPNAME"));
    Объект.КатегорияСтатуса = СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("STATUS"));
    Объект.КодСтраховойКомпании = СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("CMOCOD"));
    Объект.Записать();

    КонецЕсли;
    ФайлПациенты.Следующая();

    КонецЕсли;

    Для н=1 По ФайлПациенты.КоличествоЗаписей() Цикл
    ФайлПациенты.Перейти(н);
    КонецЦикла;

    ФайлПациенты.ЗакрытьФайл();
    Сообщить(РезультатПоиска.Фамилия);
    Сообщить("Импортировано строк:"+н);
  4. PavelBaryshev
    Offline

    PavelBaryshev Опытный в 1С

    Регистрация:
    9 сен 2008
    Сообщения:
    316
    Симпатии:
    0
    Баллы:
    26
    ФайлПациенты = Новый XBase;
    ФайлПациенты.Кодировка = КодировкаXBase.OEM;
    ФайлПациенты.ОткрытьФайл("D:\1C\1Cv8\Амбулатория\CSM.DBF");

    Если ФайлПациенты.Открыта() тогда
    Предупреждение("База Открыта",2);

    ФайлПациенты.Первая();
    Пока Не ФайлПациенты.ВКонце() Цикл

    РезультатПоиска = Справочники.Пациенты.НайтиПоРеквизиту("Фамилия",СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("FIRSTNAME")));
    //Если РезультатПоиска = Справочники.Пациенты.ПустаяСсылка() Тогда
    Если РезультатПоиска.Пустая() Тогда // Вот тут исправь на это

    Пациент = Справочники.Пациенты.СоздатьЭлемент();
    Пациент.Фамилия = СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("FIRSTNAME"));
    Пациент.Имя = СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("NAME"));
    Пациент.Отчество = СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("SECNAME"));
    Пациент.ДатаРождения = СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("DATEBDAY"));
    Пациент.КодСНИЛС = СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("SNILS"));
    Пациент.СтатусПрикрепления = Справочники.СтатусПрикрепления.ПрикрепленныеПациенты;
    Пациент.НомерСтраховогоПолиса = СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("NPOLICY"));
    Пациент.СерияСтраховогоПолиса = СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("SPOLICY"));
    Пациент.ДатаНачалаПолиса = СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("DPOLICY"));
    Пациент.СрокДействияПолиса = СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("ENDPOLICY"));
    Пациент.Город = СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("NPREF"));
    Пациент.Улица = СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("STRETREF"));
    Пациент.Дом = СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("HOUSE"));
    Пациент.Квартира = СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("FLAT"));
    Пациент.КраткоеПредставление = СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("NPNAME"));
    Пациент.КатегорияСтатуса = СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("STATUS"));
    Пациент.КодСтраховойКомпании = СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("CMOCOD"));
    Пациент.Записать();

    Иначе

    Объект = РезультатПоиска.ПолучитьОбъект();
    Объект.ДатаРождения=СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("DATEBDAY"));
    Объект.КодСНИЛС = СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("SNILS"));
    Объект.СтатусПрикрепления = Справочники.СтатусПрикрепления.ПрикрепленныеПациенты;
    Объект.НомерСтраховогоПолиса = СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("NPOLICY"));
    Объект.СерияСтраховогоПолиса = СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("SPOLICY"));
    Объект.ДатаНачалаПолиса = СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("DPOLICY"));
    Объект.СрокДействияПолиса = СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("ENDPOLICY"));
    Объект.Город = СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("NPREF"));
    Объект.Улица = СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("STRETREF"));
    Объект.Дом = СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("HOUSE"));
    Объект.Квартира = СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("FLAT"));
    Объект.КраткоеПредставление = СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("NPNAME"));
    Объект.КатегорияСтатуса = СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("STATUS"));
    Объект.КодСтраховойКомпании = СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("CMOCOD"));
    Объект.Записать();

    КонецЕсли;
    ФайлПациенты.Следующая();

    КонецЕсли;

    Для н=1 По ФайлПациенты.КоличествоЗаписей() Цикл
    ФайлПациенты.Перейти(н);
    КонецЦикла;

    ФайлПациенты.ЗакрытьФайл();
    Сообщить(РезультатПоиска.Фамилия);
    Сообщить("Импортировано строк:"+н);
    [/quote]
  5. poiuy
    Offline

    poiuy Опытный в 1С

    Регистрация:
    12 окт 2010
    Сообщения:
    170
    Симпатии:
    0
    Баллы:
    26
    Код:
    Если ФайлПациенты.Открыта() тогда
    Предупреждение("База Открыта",2);
    
    // А че мы тут ищем?
    //РезультатПоиска = Справочники.Пациенты.НайтиПоРеквизиту("Фамилия","Шумилина");
    
    ФайлПациенты.Первая();
    Пока Не ФайлПациенты.ВКонце() Цикл
    
    РезультатПоиска = Справочники.Пациенты.НайтиПоРеквизиту("Фамилия", СокрЛП(ФайлПациенты.ПолучитьЗначениеПоля("FIRSTNAME")));
    
    Если РезультатПоиска = Справочники.Пациенты.ПустаяСсылка() Тогда
    
    Пациент = Справочники.Пациенты.СоздатьЭлемент();
    ...
    Пациент.Записать();
    
    Иначе 
    
    Объект = РезультатПоиска.ПолучитьОбъект();
    ..........
    Объект.Записать();
    
    КонецЕсли;
    
    ФайлПациенты.Следующая();
    
    КонецЦикла;
    
    КонецЕсли;
    
    
  6. TopicStarter Overlay
    mokswolf
    Offline

    mokswolf

    Регистрация:
    14 окт 2010
    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    1
    Спасибо! Очень выручили!)
  7. poiuy
    Offline

    poiuy Опытный в 1С

    Регистрация:
    12 окт 2010
    Сообщения:
    170
    Симпатии:
    0
    Баллы:
    26
    кнопка есть спасиба :angry:
  8. ДавидBek
    Offline

    ДавидBek

    Регистрация:
    19 май 2011
    Сообщения:
    2
    Симпатии:
    0
    Баллы:
    1
    Здравствуйте!
    У меня такая же проблема как у пользователя Mokswolf (дублирование данных при повторной загрузке данных из dbf).

    Подскажите, пожалуйста, как сделать проверку по ИНН?


    Процедура КнопкаСформироватьНажатие(Кнопка)
    ДБФ = Новый XBase;
    ДБФ.Кодировка = КодировкаXBase.OEM;
    Путь = "C:\Documents and Settings\Давид\Рабочий стол\export3.dbf";
    ДБФ.ОткрытьФайл(Путь,,Истина);
    Если ДБФ.КоличествоЗаписей()=0 Тогда
    Сообщить("Файл данных пуст");
    ДБФ.ЗакрытьФайл();
    Возврат
    КонецЕсли;

    Пока Не ДБФ.ВКонце() Цикл
    Ном=Справочники.Номенклатура.СоздатьЭлемент();
    Ном.Дата=ДБФ.DATE;
    Ном.Наименование=ДБФ.NAIM;
    Ном.ИНН=ДБФ.INN;
    Ном.НазвОрг=ДБФ.NAMEORG;
    Ном.Ставка=ДБФ.STAVKA;
    Ном.Количество=ДБФ.KOLVO;
    Ном.Себест=ДБФ.SEBEST;
    Ном.ПродЦена=ДБФ.PRODC;

    Ном.Записать();
    ДБФ.Следующая();

    КонецЦикла;
    ДБФ.ЗакрытьФайл();
    Сообщить("Закрытие export3.dbf,данные загружены");

    КонецПроцедуры
  9. ДавидBek
    Offline

    ДавидBek

    Регистрация:
    19 май 2011
    Сообщения:
    2
    Симпатии:
    0
    Баллы:
    1
    ЗапросINN = Новый Запрос;
    ЗапросINN.Текст =
    "ВЫБРАТЬ
    | Организации.INN
    |ИЗ
    | Справочник.Организации КАК Организации
    |ГДЕ
    | Организации.INN = &INN";

    ЗапросINN.УстановитьПараметр("INN", ДБФ.INN);


    Если НЕ ЗапросINN.Выполнить().Пустой() Тогда
    Предупреждение("ТакойINN существует в базе");
    Иначе

Поделиться этой страницей