Имя: Пароль:
1C
1С v8
v8: Загрузка из DBF: проблемы
0 pkt88
 
02.09.11
10:35
Процедура КнопкаВыполнитьНажатие(Кнопка)
   // Вставить содержимое обработчика.
    Для Каждого Стр из ФизическиеЛица цикл
       Спр = ФизическиеЛица.Получить(ФизическиеЛица.Индекс(Стр));
       Сообщить(Спр.Наименование);
       Сообщить(Спр.ИНН);
       ТСпр = Справочники.ФизическиеЛица;
       ТекЭлем = ТСпр.СоздатьЭлемент();
       ТекЭлем.Наименование  = Спр.Наименование;
       ТекЭлем.ИНН = Спр.ИНН;
       ТекЭлем.Записать();
       Сообщить("Элемент записан");
    КонецЦикла;                        
КонецПроцедуры

Процедура ИмяФайлаНачалоВыбора(Элемент, СтандартнаяОбработка)
   // Вставить содержимое обработчика.
   Режим = РежимДиалогаВыбораФайла.Открытие;
   ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
   ДиалогОткрытияФайла.ПолноеИмяФайла = "";
   Фильтр = "Таблицы баз данных *.dbf (*.dbf)|*.dbf";
   ДиалогОткрытияФайла.Фильтр = Фильтр;
   ДиалогОткрытияФайла.МножественныйВыбор = Ложь;
   ДиалогОткрытияФайла.Заголовок = "Выберите таблицу базы данных *.dbf";
   Если ДиалогОткрытияФайла.Выбрать() Тогда
       ИмяФайла = ДиалогОткрытияФайла.ПолноеИмяФайла;
   КонецЕсли;
КонецПроцедуры

Процедура ОсновныеДействияФормыЗаполнить(Кнопка)
  Если ПустаяСтрока(ИмяФайла) = Ложь тогда
       Путь =  ИмяФайла;
       База= Новый XBase;
       База.Кодировка = КодировкаXBase.ANSI;      //Открываем файл для чтения
       База.ОткрытьФайл(ИмяФайла,,Истина);
       Если База.Открыта() = Истина тогда        // проверяем открыта ли база
           Сообщить("База отрыта!");              // выводим сообщение в слечае если база открыта
       КонецЕсли;
       База.Первая();                            // позиционируем на первой записи открытой базы
       //Цикл по записям DBF файла
       Пока НЕ База.ВКонце() Цикл  
           Стр = ФизическиеЛица.Добавить();
           Стр.Группа = Ложь;
           Стр.Код = База.tabn;        
           Стр.Наименование = СокрЛП(База.fio);
           Стр.ДатаРождения = База.datrojden ;
           Стр.ИНН = СокрЛП(База.inn);
           Стр.СтраховойНомерПФР = СокрЛП(База.pens_strah);
            Если СокрЛП(База.Pol)="Мужской" Тогда  Стр.Пол = Перечисления.ПолФизическихЛиц.Мужской ;
            ИначеЕсли СокрЛП(База.Pol)="Женский" Тогда Стр.Пол = Перечисления.ПолФизическихЛиц.Женский ;
          //  Иначе
            КонецЕсли ;
           Стр.МестоРождения = СокрЛП(База.me_rozd);
           База.Следующая();                    // переходим к следуей записи
       КонецЦикла;
       База.ЗакрытьФайл();                          // закрываем файл базы данных
       Сообщить("База закрыта!");
   иначе
       ОчиститьСообщения();
       Сообщить("Не выбран файл источник");
       Возврат;
   КонецЕсли;
КонецПроцедуры


Это перенос с DBF в 1с баз Физических лиц. Все должно работать но пол,дата рождения и пенсномер не идут в 1с почему то и ошибок нет вроде!!!
1 Grusswelle
 
02.09.11
10:36
Нет ошибок в синтаксических - ищи логическую.
2 Дикообразко
 
02.09.11
10:37
а Стр.Записать()

где?
3 GenV
 
02.09.11
10:37
(0) Ну ты же в базу их не записываешь )
4 GenV
 
02.09.11
10:38
3+ в КнопкаВыполнитьНажатие
5 forforumandspam
 
02.09.11
10:41
Что это? О_о
ФизическиеЛица.Получить(ФизическиеЛица.Индекс(Стр));
6 forforumandspam
 
02.09.11
10:42
В данном коде у тебя нет Пола, ДатыРождения и пенсномер:

       ТекЭлем = ТСпр.СоздатьЭлемент();
       ТекЭлем.Наименование  = Спр.Наименование;
       ТекЭлем.ИНН = Спр.ИНН;
       ТекЭлем.Записать();
7 pkt88
 
02.09.11
10:43
а как должно то быть,это в форме же
8 forforumandspam
 
02.09.11
10:44
(7)
    Для Каждого Стр из ФизическиеЛица цикл
       Спр = ФизическиеЛица.Получить(ФизическиеЛица.Индекс(Стр));

Чем будет отличаться "Стр" от "Спр" в данной строчке?
9 pkt88
 
02.09.11
10:57
не знаю если честно
10 forforumandspam
 
02.09.11
10:58
(9) Ничем.

    Для Каждого Стр из ФизическиеЛица цикл
       Спр = ФизическиеЛица.Получить(ФизическиеЛица.Индекс(Стр));
       Сообщить(Спр.Наименование);

И

    Для Каждого Стр из ФизическиеЛица цикл
       Сообщить(Стр.Наименование);

Одинаково
11 forforumandspam
 
02.09.11
10:59
И где ответ на (6) ?
12 pkt88
 
02.09.11
11:01
спасибо тупил я
13 pkt88
 
02.09.11
11:03
Осталось одна проблема ФИО не раскидывается по строкам!
А все отично!!!А вопрос можно еще???
Я переношу сотрудников с dbf в базу с
мне сказали проще делать через Физ лиц это,но это как то гиморойно а можно сделать сразу в 1с сотрудники???
14 Дикообразко
 
02.09.11
11:06
(13)
1. см РС ФизФизЛиц
2. не потянешь сотрудники... тогда тебе нужно изучить БП ПриемНаРаботуСотрудника
15 pkt88
 
02.09.11
11:08
а ФИО почему кидает но по полям отдельно не кидает тока после того как поставлю продел в поле тока тогда кидает
16 СаПеР
 
02.09.11
11:20
потому что регистр сведений надо заполнять
17 СаПеР
 
02.09.11
11:21
ФИОФизЛиц называется
18 pkt88
 
02.09.11
11:30
Этого нет в справочнике
19 pkt88
 
02.09.11
11:31
понял прости
20 pkt88
 
02.09.11
11:40
это же не таблица а ресурс какойто а можно его в код мой добавить?
21 forforumandspam
 
02.09.11
11:44
(20) Всё можно, но перед этим лучше книжку почитай.
22 pkt88
 
02.09.11
11:49
а есть разница,если я забью тудой все возможные имена и фамилии или тока мои  должны быть?
23 GenV
 
02.09.11
11:59
(22) Есть. Да.
24 pkt88
 
02.09.11
13:21
к в мой код это можно встроить? или отдельно писать надо
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс